diff options
Diffstat (limited to 'Master')
705 files changed, 27315 insertions, 12310 deletions
diff --git a/Master/doc.html b/Master/doc.html index c247b55c695..b45290a16ef 100644 --- a/Master/doc.html +++ b/Master/doc.html @@ -207,6 +207,7 @@ Class for typesetting publications of ACM. <a href="texmf-dist/doc/latex/acmart/samples/sample-acmsmall-biblatex.pdf">sample-acmsmall-biblatex.pdf</a> <a href="texmf-dist/doc/latex/acmart/samples/sample-acmsmall-conf.pdf">sample-acmsmall-conf.pdf</a> <a href="texmf-dist/doc/latex/acmart/samples/sample-acmsmall-submission.pdf">sample-acmsmall-submission.pdf</a> +<a href="texmf-dist/doc/latex/acmart/samples/sample-acmsmall-tagged-luamml-mathml.html">sample-acmsmall-tagged-luamml-mathml.html</a> <a href="texmf-dist/doc/latex/acmart/samples/sample-acmsmall-tagged.pdf">sample-acmsmall-tagged.pdf</a> <a href="texmf-dist/doc/latex/acmart/samples/sample-acmsmall.pdf">sample-acmsmall.pdf</a> <a href="texmf-dist/doc/latex/acmart/samples/sample-acmtog-conf.pdf">sample-acmtog-conf.pdf</a> @@ -826,7 +827,6 @@ TikZ styles for creating overlaid pictures in beamer. <li id="aomart"><b><a href="texmf-dist/doc/latex/aomart/">aomart</a></b><small> (<a href="https://ctan.org/pkg/aomart">CTAN</a>): Typeset articles for the Annals of Mathematics. -<a href="texmf-dist/doc/latex/aomart/aom_orcid_logo.pdf">aom_orcid_logo.pdf</a> <a href="texmf-dist/doc/latex/aomart/aomart.pdf">aomart.pdf</a> <a href="texmf-dist/doc/latex/aomart/aomfrench.pdf">aomfrench.pdf</a> <a href="texmf-dist/doc/latex/aomart/aomsample.pdf">aomsample.pdf</a> @@ -2874,6 +2874,12 @@ A tool to manage claves of old litterature with BibLaTeX. <a href="texmf-dist/doc/latex/biblatex-claves/documentation/biblatex-claves.pdf">biblatex-claves.pdf</a> </small></li> +<li id="biblatex-cse"><b><a href="texmf-dist/doc/latex/biblatex-cse/">biblatex-cse</a></b><small> +(<a href="https://ctan.org/pkg/biblatex-cse">CTAN</a>): +Council of Science Editors (CSE) style file for BibLaTeX. +<a href="texmf-dist/doc/latex/biblatex-cse/biblatex-cse-doc.pdf">biblatex-cse-doc.pdf</a> +</small></li> + <li id="biblatex-cv"><b><a href="texmf-dist/doc/latex/biblatex-cv/">biblatex-cv</a></b><small> (<a href="https://ctan.org/pkg/biblatex-cv">CTAN</a>): Create a CV from BibTeX files. @@ -4060,7 +4066,7 @@ Create illustrations for network protocol specifications. <h2 id="letter-C">C</h2> -<ol start="522"> +<ol start="523"> <li id="c90"><b><a href="texmf-dist/doc/fonts/enc/c90/">c90</a></b><small> c90 font encoding for Thai. @@ -4161,9 +4167,9 @@ Multipage tables with wide range of features. <li id="calxxxx-yyyy"><b><a href="texmf-dist/doc/latex/calxxxx-yyyy/">calxxxx-yyyy</a></b><small> (<a href="https://ctan.org/pkg/calxxxx-yyyy">CTAN</a>): Print a calendar for a group of years. -<a href="texmf-dist/doc/latex/calxxxx-yyyy/cal2024-2041_DE.pdf">cal2024-2041_DE.pdf</a> -<a href="texmf-dist/doc/latex/calxxxx-yyyy/cal2024-2041_DK.pdf">cal2024-2041_DK.pdf</a> -<a href="texmf-dist/doc/latex/calxxxx-yyyy/cal2024-2041_EN.pdf">cal2024-2041_EN.pdf</a> +<a href="texmf-dist/doc/latex/calxxxx-yyyy/cal2025-2042_DE.pdf">cal2025-2042_DE.pdf</a> +<a href="texmf-dist/doc/latex/calxxxx-yyyy/cal2025-2042_DK.pdf">cal2025-2042_DK.pdf</a> +<a href="texmf-dist/doc/latex/calxxxx-yyyy/cal2025-2042_EN.pdf">cal2025-2042_EN.pdf</a> <a href="texmf-dist/doc/latex/calxxxx-yyyy/calxxxx-yyyy-doc.pdf">calxxxx-yyyy-doc.pdf</a> </small></li> @@ -4878,6 +4884,13 @@ Typeset documents in Church Slavonic language using Unicode. <a href="texmf-dist/doc/latex/churchslavonic/churchslavonic-ru.pdf">churchslavonic-ru.pdf</a> (ru) </small></li> +<li id="chuushaku"><b><a href="texmf-dist/doc/latex/chuushaku/">chuushaku</a></b><small> +(<a href="https://ctan.org/pkg/chuushaku">CTAN</a>): +Flexible book notes in Japanese. +<a href="texmf-dist/doc/latex/chuushaku/chuushaku-sample.pdf">chuushaku-sample.pdf</a> (ja) +<a href="texmf-dist/doc/latex/chuushaku/chuushaku.pdf">chuushaku.pdf</a> (ja) +</small></li> + <li id="cidarticle"><b><a href="texmf-dist/doc/latex/cidarticle/">cidarticle</a></b><small> (<a href="https://ctan.org/pkg/cidarticle">CTAN</a>): A class for submissions to the "Commentarii informaticae didacticae" (CID). @@ -6791,7 +6804,7 @@ Slightly modified computer modern fonts with Cyrillics. <h2 id="letter-D">D</h2> -<ol start="851"> +<ol start="853"> <li id="dad"><b><a href="texmf-dist/doc/fonts/dad/">dad</a></b><small> (<a href="https://ctan.org/pkg/dad">CTAN</a>): @@ -8211,7 +8224,7 @@ Construct Dynkin tree diagrams. <h2 id="letter-E">E</h2> -<ol start="1026"> +<ol start="1028"> <li id="e-french"><b><a href="texmf-dist/doc/generic/e-french/">e-french</a></b><small> (<a href="https://ctan.org/pkg/e-french">CTAN</a>): @@ -9644,7 +9657,7 @@ Commands for tracking document changes and notes. <h2 id="letter-F">F</h2> -<ol start="1229"> +<ol start="1231"> <li id="facsimile"><b><a href="texmf-dist/doc/latex/facsimile/">facsimile</a></b><small> (<a href="https://ctan.org/pkg/facsimile">CTAN</a>): @@ -10937,7 +10950,7 @@ Get first and last words of a page. <h2 id="letter-G">G</h2> -<ol start="1413"> +<ol start="1415"> <li id="g-brief"><b><a href="texmf-dist/doc/latex/g-brief/">g-brief</a></b><small> (<a href="https://ctan.org/pkg/g-brief">CTAN</a>): @@ -12211,7 +12224,7 @@ Bundle of classes for "La Gazette des Mathematiciens". <h2 id="letter-H">H</h2> -<ol start="1556"> +<ol start="1558"> <li id="h2020proposal"><b><a href="texmf-dist/doc/latex/h2020proposal/">h2020proposal</a></b><small> (<a href="https://ctan.org/pkg/h2020proposal">CTAN</a>): @@ -12372,6 +12385,7 @@ Diagrams of board positions in the games of Havannah and Hex. (<a href="https://ctan.org/pkg/hduthesis">CTAN</a>): LaTeX class for bachelor and MPhil theses in Hangzhou Dianzi University. <a href="texmf-dist/doc/xelatex/hduthesis/example/hduthesis-bc.pdf">hduthesis-bc.pdf</a> (zh) +<a href="texmf-dist/doc/xelatex/hduthesis/example/hduthesis-beamer.pdf">hduthesis-beamer.pdf</a> <a href="texmf-dist/doc/xelatex/hduthesis/example/hduthesis-pg.pdf">hduthesis-pg.pdf</a> (zh) <a href="texmf-dist/doc/xelatex/hduthesis/example/hduthesis-stationery.pdf">hduthesis-stationery.pdf</a> <a href="texmf-dist/doc/xelatex/hduthesis/hduthesis.pdf">hduthesis.pdf</a> (zh) @@ -13060,7 +13074,7 @@ Basic support for multiple languages in Plain TeX. <h2 id="letter-I">I</h2> -<ol start="1668"> +<ol start="1670"> <li id="iaria"><b><a href="texmf-dist/doc/latex/iaria/">iaria</a></b><small> (<a href="https://ctan.org/pkg/iaria">CTAN</a>): @@ -13705,7 +13719,7 @@ LaTeX support for scaled Iwona math fonts. <h2 id="letter-J">J</h2> -<ol start="1763"> +<ol start="1765"> <li id="jablantile"><b><a href="texmf-dist/doc/fonts/jablantile/">jablantile</a></b><small> (<a href="https://ctan.org/pkg/jablantile">CTAN</a>): @@ -13991,7 +14005,7 @@ A personal class for writing journals. <h2 id="letter-K">K</h2> -<ol start="1800"> +<ol start="1802"> <li id="kalendarium"><b><a href="texmf-dist/doc/latex/kalendarium/">kalendarium</a></b><small> (<a href="https://ctan.org/pkg/kalendarium">CTAN</a>): @@ -14617,7 +14631,7 @@ Key value parser with default handler support. <h2 id="letter-L">L</h2> -<ol start="1853"> +<ol start="1855"> <li id="l2picfaq"><b><a href="texmf-dist/doc/latex/l2picfaq/">l2picfaq</a></b><small> (<a href="https://ctan.org/pkg/l2picfaq">CTAN</a>): @@ -15894,6 +15908,16 @@ Draw Hasse diagrams. <a href="texmf-dist/doc/latex/lie-hasse/lie-hasse.pdf">lie-hasse.pdf</a> </small></li> +<li id="liederbuch"><b><a href="texmf-dist/doc/latex/liederbuch/">liederbuch</a></b><small> +(<a href="https://ctan.org/pkg/liederbuch">CTAN</a>): +A LaTeX package for storing songs or other content, and repeated reuse in documents. +<a href="texmf-dist/doc/latex/liederbuch/DemoProjekt/DemoProjekt.pdf">DemoProjekt.pdf</a> +<a href="texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuchSnippets/CVLB80-OhAlteBurschenherrlichkeit.pdf">CVLB80-OhAlteBurschenherrlichkeit.pdf</a> +<a href="texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuchSnippets/haenschenKlein.pdf">haenschenKlein.pdf</a> +<a href="texmf-dist/doc/latex/liederbuch/DemoProjekt/printTestLiederbuch.pdf">printTestLiederbuch.pdf</a> +<a href="texmf-dist/doc/latex/liederbuch/liederbuch-documentation.pdf">liederbuch-documentation.pdf</a> +</small></li> + <li id="liftarm"><b><a href="texmf-dist/doc/latex/liftarm/">liftarm</a></b><small> (<a href="https://ctan.org/pkg/liftarm">CTAN</a>): Geometric constructions with liftarms using TikZ and LaTeX3. @@ -16862,6 +16886,12 @@ Drawing spectral sequences in LuaLaTeX. <a href="texmf-dist/doc/lualatex/luasseq/luasseq.pdf">luasseq.pdf</a> </small></li> +<li id="luatbls"><b><a href="texmf-dist/doc/lualatex/luatbls/">luatbls</a></b><small> +(<a href="https://ctan.org/pkg/luatbls">CTAN</a>): +Lua tables made accessible in LaTeX. +<a href="texmf-dist/doc/lualatex/luatbls/luatbls.pdf">luatbls.pdf</a> +</small></li> + <li id="luatex"><b><a href="texmf-dist/doc/luatex/base/">luatex</a></b><small> (<a href="https://ctan.org/pkg/luatex">CTAN</a>): The LuaTeX engine. @@ -16975,7 +17005,7 @@ Commands to include lilypond scores within a (Lua)LaTeX document. <h2 id="letter-M">M</h2> -<ol start="2139"> +<ol start="2143"> <li id="m-tx"><b><a href="texmf-dist/doc/generic/m-tx/">m-tx</a></b><small> (<a href="https://ctan.org/pkg/m-tx">CTAN</a>): @@ -18818,7 +18848,7 @@ XeLaTeX template for writing the main body of NSFC proposals. <h2 id="letter-N">N</h2> -<ol start="2391"> +<ol start="2395"> <li id="na-box"><b><a href="texmf-dist/doc/xelatex/na-box/">na-box</a></b><small> (<a href="https://ctan.org/pkg/na-box">CTAN</a>): @@ -19589,7 +19619,7 @@ Thesis template for Ningxia University. <h2 id="letter-O">O</h2> -<ol start="2496"> +<ol start="2500"> <li id="oberdiek"><b><a href="texmf-dist/doc/latex/oberdiek/">oberdiek</a></b><small> (<a href="https://ctan.org/pkg/oberdiek">CTAN</a>): @@ -19975,7 +20005,7 @@ Combine LaTeX commands over included graphics. <h2 id="letter-P">P</h2> -<ol start="2546"> +<ol start="2550"> <li id="padcount"><b><a href="texmf-dist/doc/latex/padcount/">padcount</a></b><small> (<a href="https://ctan.org/pkg/padcount">CTAN</a>): @@ -22661,7 +22691,7 @@ Run Python from within a document, typesetting the results. <h2 id="letter-Q">Q</h2> -<ol start="2920"> +<ol start="2924"> <li id="q-and-a"><b><a href="texmf-dist/doc/latex/q-and-a/">q-and-a</a></b><small> (<a href="https://ctan.org/pkg/q-and-a">CTAN</a>): @@ -22870,7 +22900,7 @@ Book Template for Qian Yuan Xue Fu. <h2 id="letter-R">R</h2> -<ol start="2948"> +<ol start="2952"> <li id="ragged2e"><b><a href="texmf-dist/doc/latex/ragged2e/">ragged2e</a></b><small> (<a href="https://ctan.org/pkg/ragged2e">CTAN</a>): @@ -23648,7 +23678,7 @@ Class for Ryerson Unversity Graduate School requirements. <h2 id="letter-S">S</h2> -<ol start="3050"> +<ol start="3054"> <li id="sa-tikz"><b><a href="texmf-dist/doc/latex/sa-tikz/">sa-tikz</a></b><small> (<a href="https://ctan.org/pkg/sa-tikz">CTAN</a>): @@ -25688,7 +25718,7 @@ Format systems of equations. <h2 id="letter-T">T</h2> -<ol start="3341"> +<ol start="3345"> <li id="t-angles"><b><a href="texmf-dist/doc/latex/t-angles/">t-angles</a></b><small> (<a href="https://ctan.org/pkg/t-angles">CTAN</a>): @@ -25816,6 +25846,12 @@ Typeset tabulars and arrays with LaTeX3. <a href="texmf-dist/doc/latex/tabularray/tabularray.pdf">tabularray.pdf</a> </small></li> +<li id="tabularray-abnt"><b><a href="texmf-dist/doc/latex/tabularray-abnt/">tabularray-abnt</a></b><small> +(<a href="https://ctan.org/pkg/tabularray-abnt">CTAN</a>): +An ABNT (Brazilian standard) theme for tabularray. +<a href="texmf-dist/doc/latex/tabularray-abnt/tabularray-abnt-pt-br.pdf">tabularray-abnt-pt-br.pdf</a> (pt-br) +</small></li> + <li id="tabulary"><b><a href="texmf-dist/doc/latex/tabulary/">tabulary</a></b><small> (<a href="https://ctan.org/pkg/tabulary">CTAN</a>): Tabular with variable width columns balanced. @@ -27161,7 +27197,7 @@ Create commutative diagrams with TikZ. <li id="tikz-decofonts"><b><a href="texmf-dist/doc/latex/tikz-decofonts/">tikz-decofonts</a></b><small> (<a href="https://ctan.org/pkg/tikz-decofonts">CTAN</a>): -Simple decoration fontes, made with TikZ, for short texts. +Simple decoration fonts, made with TikZ, for short texts. <a href="texmf-dist/doc/latex/tikz-decofonts/tikz-decofonts-doc.pdf">tikz-decofonts-doc.pdf</a> <a href="texmf-dist/doc/latex/tikz-decofonts/tkzbrushA.pdf">tkzbrushA.pdf</a> </small></li> @@ -28384,7 +28420,7 @@ Plot graphs with TikZ abbreviations. <h2 id="letter-U">U</h2> -<ol start="3679"> +<ol start="3684"> <li id="uaclasses"><b><a href="texmf-dist/doc/latex/uaclasses/">uaclasses</a></b><small> (<a href="https://ctan.org/pkg/uaclasses">CTAN</a>): @@ -29074,7 +29110,7 @@ University of Washington thesis class. <h2 id="letter-V">V</h2> -<ol start="3775"> +<ol start="3780"> <li id="vancouver"><b><a href="texmf-dist/doc/bibtex/vancouver/">vancouver</a></b><small> (<a href="https://ctan.org/pkg/vancouver">CTAN</a>): @@ -29366,7 +29402,7 @@ Variable-width multiple text columns. <h2 id="letter-W">W</h2> -<ol start="3816"> +<ol start="3821"> <li id="wadalab"><b><a href="texmf-dist/doc/fonts/wadalab/">wadalab</a></b><small> (<a href="https://ctan.org/pkg/wadalab">CTAN</a>): @@ -29652,7 +29688,7 @@ Extend LaTeX's cross-reference system. <h2 id="letter-X">X</h2> -<ol start="3851"> +<ol start="3856"> <li id="xargs"><b><a href="texmf-dist/doc/latex/xargs/">xargs</a></b><small> (<a href="https://ctan.org/pkg/xargs">CTAN</a>): @@ -30315,7 +30351,7 @@ Tree macros using XY-Pic. <h2 id="letter-Y">Y</h2> -<ol start="3930"> +<ol start="3935"> <li id="yafoot"><b><a href="texmf-dist/doc/latex/yafoot/">yafoot</a></b><small> (<a href="https://ctan.org/pkg/yafoot">CTAN</a>): @@ -30451,7 +30487,7 @@ Many-featured Young tableaux and Young diagrams. <h2 id="letter-Z">Z</h2> -<ol start="3949"> +<ol start="3954"> <li id="zbmath-review-template"><b><a href="texmf-dist/doc/xelatex/zbmath-review-template/">zbmath-review-template</a></b><small> (<a href="https://ctan.org/pkg/zbmath-review-template">CTAN</a>): @@ -30603,5 +30639,5 @@ Standard conforming typesetting of Japanese, for XeLaTeX. <p><a href="#letter-1">1</a> - <a href="#letter-2">2</a> - <a href="#letter-A">A</a> - <a href="#letter-B">B</a> - <a href="#letter-C">C</a> - <a href="#letter-D">D</a> - <a href="#letter-E">E</a> - <a href="#letter-F">F</a> - <a href="#letter-G">G</a> - <a href="#letter-H">H</a> - <a href="#letter-I">I</a> - <a href="#letter-J">J</a> - <a href="#letter-K">K</a> - <a href="#letter-L">L</a> - <a href="#letter-M">M</a> - <a href="#letter-N">N</a> - <a href="#letter-O">O</a> - <a href="#letter-P">P</a> - <a href="#letter-Q">Q</a> - <a href="#letter-R">R</a> - <a href="#letter-S">S</a> - <a href="#letter-T">T</a> - <a href="#letter-U">U</a> - <a href="#letter-V">V</a> - <a href="#letter-W">W</a> - <a href="#letter-X">X</a> - <a href="#letter-Y">Y</a> - <a href="#letter-Z">Z</a></p> <hr> -<small>Generated Tue Dec 31 01:40:10 CET 2024 by tl-update-docindex.</small> +<small>Generated Mon Jan 6 01:40:11 CET 2025 by tl-update-docindex.</small> </body></html> diff --git a/Master/texmf-dist/bibtex/bib/dtk-bibliography/dtk-bibliography.bib b/Master/texmf-dist/bibtex/bib/dtk-bibliography/dtk-bibliography.bib index 950746cc6e7..523028ed86a 100644 --- a/Master/texmf-dist/bibtex/bib/dtk-bibliography/dtk-bibliography.bib +++ b/Master/texmf-dist/bibtex/bib/dtk-bibliography/dtk-bibliography.bib @@ -19865,7 +19865,7 @@ to \LaTeX{} quickly and convincingly}, @article {dtk24.2:wehr:schulphysik, author = {Wehr, Keno}, - title = {\LaTeX und Schulphysik 6: Feldlinienbilder}, + title = {\LaTeX\ und Schulphysik 6: Feldlinienbilder}, journal = dtk, volume = {36}, number = {2}, @@ -19965,7 +19965,7 @@ to \LaTeX{} quickly and convincingly}, @article {dtk24.3:wehr:schulphysik, author = {Wehr, Keno}, - title = {\LaTeX und Schulphysik 7: Optik}, + title = {\LaTeX\ und Schulphysik 7: Optik}, journal = dtk, volume = {36}, number = {3}, @@ -20036,4 +20036,139 @@ to \LaTeX{} quickly and convincingly}, keywords = {fremdebuehne} } + +@article {dtk24.4:sievers:grusswort, + author = {Sievers, Martin}, + title = {Grußwort}, + journal = dtk, + volume = {36}, + number = {4}, + date = {2024}, + month = {11}, + pages = {4--5}, + keywords = {grusswort} +} + +@article {dtk24.4:sievers:strempel:einladung, + author = {Sievers, Martin and Strempel, Thorsten-Karl}, + title = {Einladung zur Frühjahrstagung und 67. Mitgliederversammlung von DANTE e.V. an der Hochschule Darmstadt}, + journal = dtk, + volume = {36}, + number = {4}, + date = {2024}, + month = {11}, + pages = {6--7}, + keywords = {hinterbuehne} +} + +@article {dtk24.4:sievers:strempel:call, + author = {Sievers, Martin and Strempel, Thorsten-Karl}, + title = {Beiträge gesucht (Call for Papers)}, + journal = dtk, + volume = {36}, + number = {4}, + date = {2024}, + month = {11}, + pages = {8}, + keywords = {hinterbuehne} +} + +@article {dtk24.4:schaa:prag, + author = {Schaa, Volker RW}, + title = {Bericht von der TUG 2024 in Prag -- Teil 1}, + journal = dtk, + volume = {36}, + number = {4}, + date = {2024}, + month = {11}, + pages = {9--18}, + keywords = {hinterbuehne} +} + +@article {dtk24.4:wehr:schulphysik, + author = {Wehr, Keno}, + title = {\LaTeX\ und Schulphysik 8: Atom- und Kernphysik}, + journal = dtk, + volume = {36}, + number = {3}, + date = {2024}, + month = {11}, + pages = {18--34}, + keywords = {bretter} +} + +@article {dtk24.4:willard:fonts, + author = {Willard, Alexander}, + title = {Variable Fonts}, + journal = dtk, + volume = {36}, + number = {3}, + date = {2024}, + month = {11}, + pages = {34--41}, + keywords = {bretter} +} + +@article {dtk24.4:dietsche:aufgeschnappt, + author = {Dietsche, Luzia}, + title = {Aufgeschnappt}, + journal = dtk, + volume = {36}, + number = {3}, + date = {2024}, + month = {11}, + pages = {41--42}, + keywords = {bretter} +} + +@article {dtk24.4:ramm:context, + author = {Ramm, Henning Hraban}, + title = {ConTeXt kurz notiert}, + journal = dtk, + volume = {36}, + number = {4}, + date = {2024}, + month = {11}, + pages = {42--48}, + keywords = {fremdebuehne} +} + +@article {dtk24.4:ziegenhagen:asn, + author = {Ziegenhagen, Uwe}, + title = {ASN-Labels mit \LaTeX}, + journal = dtk, + volume = {36}, + number = {4}, + date = {2024}, + month = {11}, + pages = {48--41}, + keywords = {bretter} +} + +@article {dtk24.4:mittelbach:news, + author = {Mittelbach, Frank}, + title = {\LaTeX-News -- Issue 39, June 2024}, + journal = dtk, + volume = {36}, + number = {4}, + date = {2024}, + month = {11}, + pages = {52--66}, + keywords = {fremdebuehne} +} + + +@article {dtk24.4:fenn:ctan, + author = {Fenn, Jürgen}, + title = {Neue Pakete auf CTAN}, + journal = dtk, + date = {2024}, + volume = {36}, + number = {4}, + month = {11}, + pages = {66--70}, + keywords = {fremdebuehne} +} + + @Comment{jabref-meta: databaseType:biblatex;} diff --git a/Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format.bst b/Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format.bst index 9c5498a082b..12242ac461a 100644 --- a/Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format.bst +++ b/Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format.bst @@ -501,10 +501,15 @@ FUNCTION { format.articleno } FUNCTION { format.year } { % push year string or "[n.\,d.]" onto output stack %% Because year is a mandatory field, we always force SOMETHING - %% to be output + %% to be output. If we do not know year but know date, we push date + %% as the last resort "\bibinfo{year}{" year empty.or.unknown - { "[n.\,d.]" } + { date empty.or.unknown + { "[n.\,d.]" } + { date #1 #4 substring$ } + if$ + } { year } if$ * "}" * @@ -782,10 +787,22 @@ FUNCTION { output.year.check } { % warn if year empty, output top string and leave " YEAR<label>" on stack in mid-sentence year empty.or.unknown { "empty year in " cite$ * warning$ - write$ - " \bibinfo{year}{[n.\,d.]}" - "\natexlab{" extra.label * "}" * * - mid.sentence 'output.state := + date empty.or.unknown + { + "using n.d. in " cite$ * warning$ + write$ + " \bibinfo{year}{[n.\,d.]}" + "\natexlab{" extra.label * "}" * * + mid.sentence 'output.state := + } + { + "using date in " cite$ * warning$ + write$ + " \bibinfo{year}{" date #1 #4 substring$ * "}" * + "\natexlab{" extra.label * "}" * * + mid.sentence 'output.state := + } + if$ } { write$ " \bibinfo{year}{" year * "}" * @@ -2002,7 +2019,11 @@ FUNCTION { calc.basic.label } if$ duplicate$ year empty.or.unknown - { "{[n.\,d.]}" } + { date empty.or.unknown + { "{[n.\,d.]}" } + { date field.or.null purify$ #1 #4 substring$} + if$ + } { year field.or.null purify$ #-1 #4 substring$} if$ * @@ -2050,7 +2071,11 @@ FUNCTION { calc.label } % save the year for sort processing afterwards (adding a, b, c, etc.) % year empty.or.unknown - { "{[n.\,d.]}" } + { date empty.or.unknown + { "{[n.\,d.]}" } + { date field.or.null purify$ #1 #4 substring$} + if$ + } { year field.or.null purify$ #-1 #4 substring$} if$ 'label.year := diff --git a/Master/texmf-dist/doc/bibtex/dtk-bibliography/README.md b/Master/texmf-dist/doc/bibtex/dtk-bibliography/README.md index e1439d61659..6f1cac908b9 100644 --- a/Master/texmf-dist/doc/bibtex/dtk-bibliography/README.md +++ b/Master/texmf-dist/doc/bibtex/dtk-bibliography/README.md @@ -3,7 +3,7 @@ This package contains the bibliography for "Die TeXnische Komödie", the journal of the German-speaking user group. -It is updated on a quarterly basis, last update 2024-09-14: updated for issue 2024-03 +It is updated on a quarterly basis, last update 2025-01-03: updated for issue 2024-04 # How to produce dtk-bibliography.pdf @@ -19,4 +19,4 @@ respectively the (local) texmf tree. # License -This material is subject to the LaTeX Project Public License 1.3c. +This material is subject to the LaTeX Project Public License 1.3c.
\ No newline at end of file diff --git a/Master/texmf-dist/doc/bibtex/dtk-bibliography/dtk-bibliography.pdf b/Master/texmf-dist/doc/bibtex/dtk-bibliography/dtk-bibliography.pdf Binary files differindex f77ccc648f5..ed3a17d042f 100644 --- a/Master/texmf-dist/doc/bibtex/dtk-bibliography/dtk-bibliography.pdf +++ b/Master/texmf-dist/doc/bibtex/dtk-bibliography/dtk-bibliography.pdf diff --git a/Master/texmf-dist/doc/bibtex/dtk-bibliography/dtk-bibliography.tex b/Master/texmf-dist/doc/bibtex/dtk-bibliography/dtk-bibliography.tex index 9eb85838e02..24d2357d980 100644 --- a/Master/texmf-dist/doc/bibtex/dtk-bibliography/dtk-bibliography.tex +++ b/Master/texmf-dist/doc/bibtex/dtk-bibliography/dtk-bibliography.tex @@ -22,7 +22,7 @@ \begin{document} -\noindent Compiled on \today~ for DTK 2024-03 +\noindent Compiled on \today~ for DTK 2024-04 \nocite{*} diff --git a/Master/texmf-dist/doc/fonts/plex-otf/Changes b/Master/texmf-dist/doc/fonts/plex-otf/Changes index f7a975b04e6..0cd79c60d33 100644 --- a/Master/texmf-dist/doc/fonts/plex-otf/Changes +++ b/Master/texmf-dist/doc/fonts/plex-otf/Changes @@ -1,3 +1,4 @@ +0.10 2025-01-03 - fix for typo ina fontname 0.09 2024-12-06 - added support for the new math font 0.08a 2023-09-10 - fix for the quotes in the documentation 0.08 2023-09-09 - updated package for the current font files diff --git a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-1.tex b/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-1.tex deleted file mode 100644 index 5ab7cd071df..00000000000 --- a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-1.tex +++ /dev/null @@ -1,15 +0,0 @@ -\documentclass{article} -\pagestyle{empty} -%StartVisiblePreamble -\usepackage[DefaultFeatures={Scale=0.94}]{plex-otf} -%StopVisiblePreamble -\begin{document} -{\addfontfeature{VerticalPosition=Superior} -Superior: 1234567890\par} -{\addfontfeatures{VerticalPosition=Numerator} -Numerator: 1234567890\par} -{\addfontfeatures{VerticalPosition=Denominator} -Denominator: 1234567890\par} -\addfontfeatures{VerticalPosition=ScientificInferior} -Scientific Inferior: 1234567890 -\end{document} diff --git a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-10.tex b/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-10.tex deleted file mode 100644 index 094e512687d..00000000000 --- a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-10.tex +++ /dev/null @@ -1,16 +0,0 @@ -\documentclass{article} -\usepackage[a4paper]{geometry} -\usepackage[ngerman]{babel} -\usepackage[autostyle]{csquotes} -\pagestyle{empty} -\usepackage{demotext0} -%StartVisiblePreamble -\usepackage[DefaultFeatures={Scale=0.94}, - RMstyle={Text,Semibold}, - SSstyle={Text,Semibold}, - SSconstyle={Text,Semibold}, - TTstyle={Text,Semibold}]{plex-otf} -%StopVisiblePreamble -\begin{document} -\blindtext -\end{document} diff --git a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-11.tex b/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-11.tex deleted file mode 100644 index 6fd4212b4e9..00000000000 --- a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-11.tex +++ /dev/null @@ -1,13 +0,0 @@ -\documentclass{article} -\usepackage[a4paper]{geometry} -\usepackage[ngerman]{babel} -\usepackage[autostyle]{csquotes} -\usepackage{demotext2} -\pagestyle{empty} -%StartVisiblePreamble -\usepackage[DefaultFeatures={Scale=0.94}, - RMSCfont=texgyretermes, SSSCfont=texgyreheros]{plex-otf} -%StopVisiblePreamble -\begin{document} -\blindtext -\end{document} diff --git a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-2.tex b/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-2.tex deleted file mode 100644 index 72333992c94..00000000000 --- a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-2.tex +++ /dev/null @@ -1,12 +0,0 @@ -\documentclass{article} -\usepackage[a4paper]{geometry} -\pagestyle{empty} -%StartVisiblePreamble -\usepackage[DefaultFeatures={Scale=0.94}]{plex-otf} -%StopVisiblePreamble -\begin{document} -1/3 2/3 1/5 2/5 \ldots \par -\addfontfeatures{Fractions=On} -1/3 2/3 1/5 2/5 3/5 4/5 1/6 5/6 1/7 1/9 1/8 3/8 5/8 7/8\par -123456/3215731 -\end{document} diff --git a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-3.tex b/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-3.tex deleted file mode 100644 index ccbbaaac7b9..00000000000 --- a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-3.tex +++ /dev/null @@ -1,13 +0,0 @@ -\documentclass{article} -\usepackage[a4paper]{geometry} -\usepackage[ngerman]{babel} -\usepackage[autostyle]{csquotes} -\newcommand\demo{Some text in the default font style IBM Plex Serif } -\pagestyle{empty} -%StartVisiblePreamble -\usepackage[DefaultFeatures={Scale=0.94}]{plex-otf} -%StopVisiblePreamble -\begin{document} -\demo\ Regular\par {\PlexTextRM\demo\ Text\par} {\PlexLightRM\demo\ Light\par} -{\PlexExtraLightRM\demo\ ExtraLight\par} {\PlexThinRM\demo\ Thin} -\end{document} diff --git a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-4.tex b/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-4.tex deleted file mode 100644 index 4c4b9b5905c..00000000000 --- a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-4.tex +++ /dev/null @@ -1,12 +0,0 @@ -\documentclass{article} -\usepackage[a4paper]{geometry} -\usepackage[ngerman]{babel} -\usepackage[autostyle]{csquotes} -\usepackage{demotext0} -\pagestyle{empty} -%StartVisiblePreamble -\usepackage[DefaultFeatures={Scale=0.94}]{plex-otf} -%StopVisiblePreamble -\begin{document} -\blindtext -\end{document} diff --git a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-5.tex b/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-5.tex deleted file mode 100644 index 1d243813df8..00000000000 --- a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-5.tex +++ /dev/null @@ -1,16 +0,0 @@ -\documentclass{article} -\usepackage[a4paper]{geometry} -\usepackage[ngerman]{babel} -\usepackage[autostyle]{csquotes} -\pagestyle{empty} -\usepackage{demotext0} -%StartVisiblePreamble -\usepackage[DefaultFeatures={Scale=0.94}, - RMstyle=Semibold, - SSstyle=Semibold, - SSconstyle=Semibold, - TTstyle=Semibold]{plex-otf} -%StopVisiblePreamble -\begin{document} -\blindtext -\end{document} diff --git a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-6.tex b/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-6.tex deleted file mode 100644 index e20fecd2c11..00000000000 --- a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-6.tex +++ /dev/null @@ -1,16 +0,0 @@ -\documentclass{article} -\usepackage[a4paper]{geometry} -\usepackage[ngerman]{babel} -\usepackage[autostyle]{csquotes} -\pagestyle{empty} -\usepackage{demotext1} -%StartVisiblePreamble -\usepackage[DefaultFeatures={Scale=0.94}, - RMstyle=Thin, - SSstyle=Thin, - SSconstyle=Thin, - TTstyle=Thin]{plex-otf} -%StopVisiblePreamble -\begin{document} -\blindtext -\end{document} diff --git a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-7.tex b/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-7.tex deleted file mode 100644 index 515a8ac10da..00000000000 --- a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-7.tex +++ /dev/null @@ -1,16 +0,0 @@ -\documentclass{article} -\usepackage[a4paper]{geometry} -\usepackage[ngerman]{babel} -\usepackage[autostyle]{csquotes} -\pagestyle{empty} -\usepackage{demotext1} -%StartVisiblePreamble -\usepackage[DefaultFeatures={Scale=0.94}, - RMstyle=ExtraLight, - SSstyle=ExtraLight, - SSconstyle=ExtraLight, - TTstyle=ExtraLight]{plex-otf} -%StopVisiblePreamble -\begin{document} -\blindtext -\end{document} diff --git a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-8.tex b/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-8.tex deleted file mode 100644 index 6b067564eec..00000000000 --- a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-8.tex +++ /dev/null @@ -1,16 +0,0 @@ -\documentclass{article} -\usepackage[a4paper]{geometry} -\usepackage[ngerman]{babel} -\usepackage[autostyle]{csquotes} -\pagestyle{empty} -\usepackage{demotext1} -%StartVisiblePreamble -\usepackage[DefaultFeatures={Scale=0.94}, - RMstyle=Light, - SSstyle=Light, - SSconstyle=Light, - TTstyle=Light]{plex-otf} -%StopVisiblePreamble -\begin{document} -\blindtext -\end{document} diff --git a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-9.tex b/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-9.tex deleted file mode 100644 index d82c4285130..00000000000 --- a/Master/texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-9.tex +++ /dev/null @@ -1,16 +0,0 @@ -\documentclass{article} -\usepackage[a4paper]{geometry} -\usepackage[ngerman]{babel} -\usepackage[autostyle]{csquotes} -\pagestyle{empty} -\usepackage{demotext0} -%StartVisiblePreamble -\usepackage[DefaultFeatures={Scale=0.94}, - RMstyle={Medium,Semibold}, - SSstyle={Medium,Semibold}, - SSconstyle={Medium,Semibold}, - TTstyle={Medium,Semibold}]{plex-otf} -%StopVisiblePreamble -\begin{document} -\blindtext -\end{document} diff --git a/Master/texmf-dist/doc/fonts/plex-otf/plex-otf-doc.fonts b/Master/texmf-dist/doc/fonts/plex-otf/plex-otf-doc.fonts new file mode 100644 index 00000000000..09bab09b56b --- /dev/null +++ b/Master/texmf-dist/doc/fonts/plex-otf/plex-otf-doc.fonts @@ -0,0 +1,74 @@ +IBMPlexMath-Regular CID Type 0C +IBMPlexMono CID Type 0C +IBMPlexMono-Bold CID Type 0C +IBMPlexMono-BoldItalic CID Type 0C +IBMPlexMono-ExtLt CID Type 0C +IBMPlexMono-ExtLtItalic CID Type 0C +IBMPlexMono-Italic CID Type 0C +IBMPlexMono-Light CID Type 0C +IBMPlexMono-LightItalic CID Type 0C +IBMPlexMono-Medm CID Type 0C +IBMPlexMono-MedmItalic CID Type 0C +IBMPlexMono-SmBld CID Type 0C +IBMPlexMono-SmBldItalic CID Type 0C +IBMPlexMono-Text CID Type 0C +IBMPlexMono-TextItalic CID Type 0C +IBMPlexMono-Thin CID Type 0C +IBMPlexMono-ThinItalic CID Type 0C +IBMPlexSans CID Type 0C +IBMPlexSans-Bold CID Type 0C +IBMPlexSans-BoldItalic CID Type 0C +IBMPlexSans-ExtLt CID Type 0C +IBMPlexSans-ExtLtItalic CID Type 0C +IBMPlexSans-Italic CID Type 0C +IBMPlexSans-Light CID Type 0C +IBMPlexSans-LightItalic CID Type 0C +IBMPlexSans-Medm CID Type 0C +IBMPlexSans-MedmItalic CID Type 0C +IBMPlexSans-SmBld CID Type 0C +IBMPlexSans-SmBldItalic CID Type 0C +IBMPlexSans-Text CID Type 0C +IBMPlexSans-TextItalic CID Type 0C +IBMPlexSans-Thin CID Type 0C +IBMPlexSans-ThinItalic CID Type 0C +IBMPlexSansCond CID Type 0C +IBMPlexSansCond-Bold CID Type 0C +IBMPlexSansCond-BoldItalic CID Type 0C +IBMPlexSansCond-ExtLt CID Type 0C +IBMPlexSansCond-ExtLtItalic CID Type 0C +IBMPlexSansCond-Italic CID Type 0C +IBMPlexSansCond-Light CID Type 0C +IBMPlexSansCond-LightItalic CID Type 0C +IBMPlexSansCond-Medm CID Type 0C +IBMPlexSansCond-MedmItalic CID Type 0C +IBMPlexSansCond-SmBld CID Type 0C +IBMPlexSansCond-SmBldItalic CID Type 0C +IBMPlexSansCond-Text CID Type 0C +IBMPlexSansCond-TextItalic CID Type 0C +IBMPlexSansCond-Thin CID Type 0C +IBMPlexSansCond-ThinItalic CID Type 0C +IBMPlexSerif-Bold CID Type 0C +IBMPlexSerif-BoldItalic CID Type 0C +IBMPlexSerif-ExtraLight CID Type 0C +IBMPlexSerif-ExtraLightItalic CID Type 0C +IBMPlexSerif-Italic CID Type 0C +IBMPlexSerif-Light CID Type 0C +IBMPlexSerif-LightItalic CID Type 0C +IBMPlexSerif-Medium CID Type 0C +IBMPlexSerif-MediumItalic CID Type 0C +IBMPlexSerif-Regular CID Type 0C +IBMPlexSerif-SemiBold CID Type 0C +IBMPlexSerif-SemiBoldItalic CID Type 0C +IBMPlexSerif-Text CID Type 0C +IBMPlexSerif-TextItalic CID Type 0C +IBMPlexSerif-Thin CID Type 0C +IBMPlexSerif-ThinItalic CID Type 0C +LinLibertineO CID Type 0C +TeXGyreHeros-Bold CID Type 0C +TeXGyreHeros-BoldItalic CID Type 0C +TeXGyreHeros-Italic CID Type 0C +TeXGyreHeros-Regular CID Type 0C +TeXGyreTermes-Bold CID Type 0C +TeXGyreTermes-BoldItalic CID Type 0C +TeXGyreTermes-Italic CID Type 0C +TeXGyreTermes-Regular CID Type 0C diff --git a/Master/texmf-dist/doc/fonts/plex-otf/plex-otf-doc.pdf b/Master/texmf-dist/doc/fonts/plex-otf/plex-otf-doc.pdf Binary files differindex 7ecba692ce0..f19e302258c 100644 --- a/Master/texmf-dist/doc/fonts/plex-otf/plex-otf-doc.pdf +++ b/Master/texmf-dist/doc/fonts/plex-otf/plex-otf-doc.pdf diff --git a/Master/texmf-dist/doc/fonts/plex-otf/plex-otf-doc.tex b/Master/texmf-dist/doc/fonts/plex-otf/plex-otf-doc.tex index 81acf68133f..1449ac826b3 100644 --- a/Master/texmf-dist/doc/fonts/plex-otf/plex-otf-doc.tex +++ b/Master/texmf-dist/doc/fonts/plex-otf/plex-otf-doc.tex @@ -1,4 +1,4 @@ -%% $Id: plex-otf-doc.tex 1041 2024-12-05 18:54:53Z herbert $ +%% $Id: plex-otf-doc.tex 1052 2025-01-02 12:10:37Z herbert $ % % Copying and distribution of this file, with or without modification, % are permitted in any medium, without royalty. @@ -127,6 +127,10 @@ Sphinx of black quartz judge my vow. IBM typography is international and modern to reflect our brand and our design principles.«~\cite{git} \end{abstract} +\vfill +Thanks to: Alexander Gast: + +\newpage \section{Introduction} @@ -668,10 +672,6 @@ This makes sense with the the \verb|Semibold| feature. \end{document} \end{externalDocument} - - -\clearpage - \section{Examples with using Small Caps fonts} As already mentioned, the Plex font family has no small caps. If you need one then you can define another font for the small caps. If the font has to structure like the \TeX\ Gyre fonts: @@ -771,6 +771,12 @@ $f(x)=13\int$ \boldmath$f(x)=13 \int$\unboldmath Euro and copyright symbols are available: \texteuro\ \textcopyright. + + +%\clearpage +%\newgeometry{%margin=1cm,bmargin=2cm, +% lmargin=1cm,rmargin=1cm,includeheadfoot} + \section{Closing} The font list of this documentation is: @@ -783,11 +789,9 @@ The font list of this documentation is: \clearpage - +\restoregeometry \section{The font files} - - The fonts are saved in the systems font directory or in the TDS (\TeX\ Directory Structure): % list of this documentation is: %\rightmargin=-1cm diff --git a/Master/texmf-dist/doc/fonts/simpleicons/simpleicons.pdf b/Master/texmf-dist/doc/fonts/simpleicons/simpleicons.pdf Binary files differindex aba01823efd..da48c9e89a0 100644 --- a/Master/texmf-dist/doc/fonts/simpleicons/simpleicons.pdf +++ b/Master/texmf-dist/doc/fonts/simpleicons/simpleicons.pdf diff --git a/Master/texmf-dist/doc/fonts/simpleicons/simpleicons.tex b/Master/texmf-dist/doc/fonts/simpleicons/simpleicons.tex index fe6ed771e36..ad773dbb0ae 100644 --- a/Master/texmf-dist/doc/fonts/simpleicons/simpleicons.tex +++ b/Master/texmf-dist/doc/fonts/simpleicons/simpleicons.tex @@ -14,7 +14,7 @@ Simple Icons (Font)\\% Inesh Bose (\LaTeX{} package)% } -\date{14.0.0 -- \today}\maketitle +\date{14.0.1 -- \today}\maketitle This package provides \LaTeX{} support for the Simple Icons logos. To use Simple Icons in your document, include the package with |\usepackage{simpleicons}|. diff --git a/Master/texmf-dist/doc/generic/tikzducks/tikzducks-doc.pdf b/Master/texmf-dist/doc/generic/tikzducks/tikzducks-doc.pdf Binary files differindex a3e390ebb3e..9f9696a912b 100644 --- a/Master/texmf-dist/doc/generic/tikzducks/tikzducks-doc.pdf +++ b/Master/texmf-dist/doc/generic/tikzducks/tikzducks-doc.pdf diff --git a/Master/texmf-dist/doc/generic/tikzducks/tikzducks-doc.tex b/Master/texmf-dist/doc/generic/tikzducks/tikzducks-doc.tex index c63bad01773..56ff5e3dd41 100644 --- a/Master/texmf-dist/doc/generic/tikzducks/tikzducks-doc.tex +++ b/Master/texmf-dist/doc/generic/tikzducks/tikzducks-doc.tex @@ -11,6 +11,7 @@ % See https://www.latex-project.org/lppl.txt % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% arara: latexmk \documentclass{scrartcl} % meta %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -25,7 +26,7 @@ \url{https://github.com/samcarter/tikzducks}\\ \url{https://www.ctan.org/pkg/tikzducks} }{samcarter}} -\date{Version v1.9 \textendash{} 2024/12/10} +\date{Version v1.10 \textendash{} 2025/01/05} \usepackage[ themecolor=samlblue @@ -42,7 +43,7 @@ % customisation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pgfmathsetseed{2} -\setlength{\footheight}{41pt} +\setlength{\footheight}{45pt} \newlength{\duckoffset} \cfoot{% diff --git a/Master/texmf-dist/doc/latex/acmart/README b/Master/texmf-dist/doc/latex/acmart/README index ceaf5b9f7d7..a9c7f70130c 100644 --- a/Master/texmf-dist/doc/latex/acmart/README +++ b/Master/texmf-dist/doc/latex/acmart/README @@ -12,6 +12,9 @@ The production version is the one on CTAN and ACM sites. Changes +Version 2.12 Bug fixes + Switched to unicode-math and libertinus for Unicode engines + Version 2.11 Conference date is no longer printed in bibstrip. ISBN now uses 4-digit year DOI in bibliography is now output as doi:XX.XXXX/XXXXX.XXXX diff --git a/Master/texmf-dist/doc/latex/acmart/acmart.pdf b/Master/texmf-dist/doc/latex/acmart/acmart.pdf Binary files differindex a9b9425af19..529fd3d8071 100644 --- a/Master/texmf-dist/doc/latex/acmart/acmart.pdf +++ b/Master/texmf-dist/doc/latex/acmart/acmart.pdf diff --git a/Master/texmf-dist/doc/latex/acmart/acmguide.pdf b/Master/texmf-dist/doc/latex/acmart/acmguide.pdf Binary files differindex e2f4d07816b..877049e9b88 100644 --- a/Master/texmf-dist/doc/latex/acmart/acmguide.pdf +++ b/Master/texmf-dist/doc/latex/acmart/acmguide.pdf diff --git a/Master/texmf-dist/doc/latex/acmart/samples/sample-acmcp.pdf b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmcp.pdf Binary files differindex df09178b23c..23389b12249 100644 --- a/Master/texmf-dist/doc/latex/acmart/samples/sample-acmcp.pdf +++ b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmcp.pdf diff --git a/Master/texmf-dist/doc/latex/acmart/samples/sample-acmengage.pdf b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmengage.pdf Binary files differindex f1cfe0669b2..739860a058c 100644 --- a/Master/texmf-dist/doc/latex/acmart/samples/sample-acmengage.pdf +++ b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmengage.pdf diff --git a/Master/texmf-dist/doc/latex/acmart/samples/sample-acmlarge.pdf b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmlarge.pdf Binary files differindex 5d0512d6c6f..d0d58d0ce3d 100644 --- a/Master/texmf-dist/doc/latex/acmart/samples/sample-acmlarge.pdf +++ b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmlarge.pdf diff --git a/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall-biblatex.pdf b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall-biblatex.pdf Binary files differindex 426b1fa017b..6d0b2a3dac2 100644 --- a/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall-biblatex.pdf +++ b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall-biblatex.pdf diff --git a/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall-conf.pdf b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall-conf.pdf Binary files differindex 6ccf1723c21..a78e21be58e 100644 --- a/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall-conf.pdf +++ b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall-conf.pdf diff --git a/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall-submission.pdf b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall-submission.pdf Binary files differindex 10c4335179b..7dce7ee8d03 100644 --- a/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall-submission.pdf +++ b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall-submission.pdf diff --git a/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall-tagged-luamml-mathml.html b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall-tagged-luamml-mathml.html new file mode 100644 index 00000000000..3d1e07ebf63 --- /dev/null +++ b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall-tagged-luamml-mathml.html @@ -0,0 +1,236 @@ +<!DOCTYPE html> +<html> + +<div> +<h2>\mml 1</h2> +<p>$\pi $</p> +<p>72E07F313C973C8CB2030C22C1CF81F4</p> + +<math xmlns="http://www.w3.org/1998/Math/MathML"> + <mi> + 𝜋 + </mi> +</math> +</div> + +<div> +<h2>\mml 2</h2> +<p>$\Psi ^2_1$</p> +<p>9339FEF72A9AF81E22B3496564B5208D</p> + +<math xmlns="http://www.w3.org/1998/Math/MathML"> + <msubsup> + <mi mathvariant="normal"> + Ψ + </mi> + <mn> + 1 + </mn> + <mn> + 2 + </mn> + </msubsup> +</math> +</div> + +<div> +<h2>\mml 3</h2> +<p>$\alpha $</p> +<p>B7932A8B63ED6AE7CA61921EC2B87D40</p> + +<math xmlns="http://www.w3.org/1998/Math/MathML"> + <mi> + 𝛼 + </mi> +</math> +</div> + +<div> +<h2>\mml 4</h2> +<p>$\omega $</p> +<p>32902E719B16DEC67B28C9943762CD89</p> + +<math xmlns="http://www.w3.org/1998/Math/MathML"> + <mi> + 𝜔 + </mi> +</math> +</div> + +<div> +<h2>\mml 5</h2> +<p>$\lim _{n\rightarrow \infty }x=0$</p> +<p>99599FCED516EC76AA3BC3E64F36D51D</p> + +<math xmlns="http://www.w3.org/1998/Math/MathML"> + <munder> + <mi mathvariant="normal"> + lim + </mi> + <mrow> + <mi> + 𝑛 + </mi> + <mo lspace="0" rspace="0" stretchy="false"> + → + </mo> + <mi mathvariant="normal"> + ∞ + </mi> + </mrow> + </munder> + <mspace width="0.167em"/> + <mi> + 𝑥 + </mi> + <mo lspace="0.278em" rspace="0.278em"> + = + </mo> + <mn> + 0 + </mn> +</math> +</div> + +<div> +<h2>\mml 6</h2> +<p>\begin {equation}\lim _{n\rightarrow \infty }x=0\end {equation}</p> +<p>58DB33CC6008044EBFBAF14DD0E01211</p> + +<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"> + <mpadded depth="0" height="0"> + <mtext/> + </mpadded> + <mo lspace="0" rspace="0"/> + <munder> + <mi mathvariant="normal"> + lim + </mi> + <mrow> + <mi> + 𝑛 + </mi> + <mo lspace="0" rspace="0" stretchy="false"> + → + </mo> + <mi mathvariant="normal"> + ∞ + </mi> + </mrow> + </munder> + <mspace width="0.167em"/> + <mi> + 𝑥 + </mi> + <mo lspace="0.278em" rspace="0.278em"> + = + </mo> + <mn> + 0 + </mn> +</math> +</div> + +<div> +<h2>\mml 7</h2> +<p>\begin {equation*}\sum _{i=0}^{\infty } x + 1\end {equation*}</p> +<p>0FA9E148128F6070D18DB3FC24D54CF1</p> + +<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"> + <munderover> + <mo lspace="0" movablelimits="true" rspace="0.167em"> + ∑ + </mo> + <mrow> + <mi> + 𝑖 + </mi> + <mo lspace="0" rspace="0"> + = + </mo> + <mn> + 0 + </mn> + </mrow> + <mi mathvariant="normal"> + ∞ + </mi> + </munderover> + <mi> + 𝑥 + </mi> + <mo lspace="0.222em" rspace="0.222em"> + + + </mo> + <mn> + 1 + </mn> +</math> +</div> + +<div> +<h2>\mml 8</h2> +<p>\begin {equation}\sum _{i=0}^{\infty }x_i=\int _{0}^{\pi +2} f\end {equation}</p> +<p>997D925C998243FE3FF8CAB4A2F0E638</p> + +<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"> + <mpadded depth="0" height="0"> + <mtext/> + </mpadded> + <mo lspace="0" rspace="0"/> + <munderover> + <mo lspace="0" movablelimits="true" rspace="0.167em"> + ∑ + </mo> + <mrow> + <mi> + 𝑖 + </mi> + <mo lspace="0" rspace="0"> + = + </mo> + <mn> + 0 + </mn> + </mrow> + <mi mathvariant="normal"> + ∞ + </mi> + </munderover> + <msub> + <mi> + 𝑥 + </mi> + <mi> + 𝑖 + </mi> + </msub> + <mo lspace="0.278em" rspace="0"> + = + </mo> + <msubsup> + <mo lspace="0.278em" rspace="0.167em"> + ∫ + </mo> + <mn> + 0 + </mn> + <mrow> + <mi> + 𝜋 + </mi> + <mo lspace="0" rspace="0"> + + + </mo> + <mn> + 2 + </mn> + </mrow> + </msubsup> + <mi> + 𝑓 + </mi> +</math> +</div> + +</html> diff --git a/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall-tagged.pdf b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall-tagged.pdf Binary files differindex 948f3cd1136..65f4ca56046 100644 --- a/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall-tagged.pdf +++ b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall-tagged.pdf diff --git a/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall.pdf b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall.pdf Binary files differindex 9f952c79195..c94c1cb5bfd 100644 --- a/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall.pdf +++ b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmsmall.pdf diff --git a/Master/texmf-dist/doc/latex/acmart/samples/sample-acmtog-conf.pdf b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmtog-conf.pdf Binary files differindex 298fa63e055..92c2b0ed1f9 100644 --- a/Master/texmf-dist/doc/latex/acmart/samples/sample-acmtog-conf.pdf +++ b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmtog-conf.pdf diff --git a/Master/texmf-dist/doc/latex/acmart/samples/sample-acmtog.pdf b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmtog.pdf Binary files differindex 203294e6ae9..337842c9b41 100644 --- a/Master/texmf-dist/doc/latex/acmart/samples/sample-acmtog.pdf +++ b/Master/texmf-dist/doc/latex/acmart/samples/sample-acmtog.pdf diff --git a/Master/texmf-dist/doc/latex/acmart/samples/sample-manuscript.pdf b/Master/texmf-dist/doc/latex/acmart/samples/sample-manuscript.pdf Binary files differindex 37f110af377..b18e95a342f 100644 --- a/Master/texmf-dist/doc/latex/acmart/samples/sample-manuscript.pdf +++ b/Master/texmf-dist/doc/latex/acmart/samples/sample-manuscript.pdf diff --git a/Master/texmf-dist/doc/latex/acmart/samples/sample-sigconf-authordraft.pdf b/Master/texmf-dist/doc/latex/acmart/samples/sample-sigconf-authordraft.pdf Binary files differindex adcbd6e036c..0c1ec741bc2 100644 --- a/Master/texmf-dist/doc/latex/acmart/samples/sample-sigconf-authordraft.pdf +++ b/Master/texmf-dist/doc/latex/acmart/samples/sample-sigconf-authordraft.pdf diff --git a/Master/texmf-dist/doc/latex/acmart/samples/sample-sigconf-biblatex.pdf b/Master/texmf-dist/doc/latex/acmart/samples/sample-sigconf-biblatex.pdf Binary files differindex 92379f363dd..10d5370d809 100644 --- a/Master/texmf-dist/doc/latex/acmart/samples/sample-sigconf-biblatex.pdf +++ b/Master/texmf-dist/doc/latex/acmart/samples/sample-sigconf-biblatex.pdf diff --git a/Master/texmf-dist/doc/latex/acmart/samples/sample-sigconf-i13n.pdf b/Master/texmf-dist/doc/latex/acmart/samples/sample-sigconf-i13n.pdf Binary files differindex 9769dd3d5bf..23d94e3510d 100644 --- a/Master/texmf-dist/doc/latex/acmart/samples/sample-sigconf-i13n.pdf +++ b/Master/texmf-dist/doc/latex/acmart/samples/sample-sigconf-i13n.pdf diff --git a/Master/texmf-dist/doc/latex/acmart/samples/sample-sigconf.pdf b/Master/texmf-dist/doc/latex/acmart/samples/sample-sigconf.pdf Binary files differindex 35ade965829..98a34a8a28b 100644 --- a/Master/texmf-dist/doc/latex/acmart/samples/sample-sigconf.pdf +++ b/Master/texmf-dist/doc/latex/acmart/samples/sample-sigconf.pdf diff --git a/Master/texmf-dist/doc/latex/acmart/samples/sample-sigplan.pdf b/Master/texmf-dist/doc/latex/acmart/samples/sample-sigplan.pdf Binary files differindex 8dcab36660c..4137573e60a 100644 --- a/Master/texmf-dist/doc/latex/acmart/samples/sample-sigplan.pdf +++ b/Master/texmf-dist/doc/latex/acmart/samples/sample-sigplan.pdf diff --git a/Master/texmf-dist/doc/latex/babel/README.md b/Master/texmf-dist/doc/latex/babel/README.md index d72f0b442b2..58a0fe2f967 100644 --- a/Master/texmf-dist/doc/latex/babel/README.md +++ b/Master/texmf-dist/doc/latex/babel/README.md @@ -1,6 +1,6 @@ -## Babel 24.15 +## Babel 25.1 -2024-12-21 +2025-01-01 `Babel` is the multilingual framework to localize documents. It fully supports pdfLaTeX and the Unicode engines LuaLaTeX and XeLaTeX. A few @@ -21,9 +21,9 @@ features. The latest stable version is available on <https://ctan.org/pkg/babel>. -Changes in version 24.15 are described in: +Changes in version 25.1 are described in: -https://latex3.github.io/babel/news/whats-new-in-babel-24.14.html +https://latex3.github.io/babel/news/whats-new-in-babel-25.1.html Apart from the manual, you can find information and examples in: @@ -59,12 +59,9 @@ respective authors. ### Summary of latest changes ``` -25.15 2024-12-21 - * New: Locale for Interslavic, thanks to Adiee5. - * Fix: Import was not honored with lazy loading in some cases. - * Fix: Transforms where applied twice with unboxing, which could - even raise a cryptic lua error. - * Improvements in the manual thanks to Barbara Beeton. +25.1 2025-01-01 + * Fix: Wrong \localeid with lazy loading in some cases. + * Fix: Direction nodes misplaced (between a penalty and a glue). ``` ### Previous changes diff --git a/Master/texmf-dist/doc/latex/babel/babel-code.pdf b/Master/texmf-dist/doc/latex/babel/babel-code.pdf Binary files differindex cf6ea04744e..6d53d296e79 100644 --- a/Master/texmf-dist/doc/latex/babel/babel-code.pdf +++ b/Master/texmf-dist/doc/latex/babel/babel-code.pdf diff --git a/Master/texmf-dist/doc/latex/babel/babel.pdf b/Master/texmf-dist/doc/latex/babel/babel.pdf Binary files differindex c6b9883859b..6871e3f1c4d 100644 --- a/Master/texmf-dist/doc/latex/babel/babel.pdf +++ b/Master/texmf-dist/doc/latex/babel/babel.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-cse/README.md b/Master/texmf-dist/doc/latex/biblatex-cse/README.md new file mode 100644 index 00000000000..aaa87a64341 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-cse/README.md @@ -0,0 +1,43 @@ +# BibLaTeX: Council of Science Editors style + +Support for **Council of Science Editors** style in BibLaTeX. + + +## How to use the biblatex-cse style + +1. Download the `biblatex-cse.bbx` and `biblatex-cse.cbx` files and put them in your document's main diretory/folder. +1. Load `biblatex` with the option `style=biblatex-cse`, i.e., +```latex +\usepackage[style=biblatex-cse]{biblatex} +``` + +## How to contribute + +I did this style file by request of a user of my [https://github.com/joaomlourenco/novathesis](LaTeX template `novathesis`). He was quite thorough, double and triple checking that the output was conforming to the requirements of his University (Faculty of Veterinary from the University of Lisbon). Although this biblatex-cse style served the requirements from his University, there may still be some unconformities to the CSE style. If you find any, please open an issue in the [https://github.com/joaomlourenco/biblatex-cse](in the project's page on GitHub) or, even better, **submit a pull request**. + + +-------- + +<picture> + <source + media="(prefers-color-scheme: dark)" + srcset=" + https://api.star-history.com/svg?repos=joaomlourenco/biblatex-cse&type=Date&theme=dark + " + /> + <source + media="(prefers-color-scheme: light)" + srcset=" + https://api.star-history.com/svg?repos=joaomlourenco/biblatex-cse&type=Date + " + /> + <img + width="500" + alt="Star History Chart" + src="https://api.star-history.com/svg?repos=joaomlourenco/biblatex-cse&type=Date" + /> +</picture> + +**If you opt for using this project, please give it a star by clicking the (⭐️) at the top right of the [project's page](https://github.com/joaomlourenco/biblatex-cse).** + +--------
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex-cse/biblatex-cse-doc.pdf b/Master/texmf-dist/doc/latex/biblatex-cse/biblatex-cse-doc.pdf Binary files differnew file mode 100644 index 00000000000..5406da370d5 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-cse/biblatex-cse-doc.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-cse/biblatex-cse-doc.tex b/Master/texmf-dist/doc/latex/biblatex-cse/biblatex-cse-doc.tex new file mode 100644 index 00000000000..9e270d1090c --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-cse/biblatex-cse-doc.tex @@ -0,0 +1,126 @@ +%% This is file `biblatex-cse-doc.tex', +%% +%% Copyright (C) 2024 by João Lourenço <joao.lourenco@fct.unl.pt> +%% +%% This file may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License, either version 1.3c of this license +%% or (at your option) any later version. The latest version of this +%% license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2006/05/20 or later. +%% +\documentclass[ + a4paper, % paper size. + 11pt, % type size. +]{article} + +% Enable hyperlinking/hypertext and PDF metadata +\usepackage[style=biblatex-cse]{biblatex} +\addbibresource{bibliography.bib} + + +\usepackage[colorlinks=true,allcolors=blue]{hyperref} + + +\newcommand{\novathesis}{\texttt{novathesis}} +\newcommand{\nauthors}[1]{#1 authors: } + +\title{The Council of Science Editors (\textsf{\filename}) Bib\LaTeX\ style} +\author{João M. Lourenço $<$\texttt{joao.lourenco@fct.unl.pt}$>$} +\date{\filedate\ (v\fileversion)} + +\begin{document} + + \maketitle + +\begin{abstract} +This is a BibLaTeX style that implements the bibliography style of the Council of Science Editors (CSE) for BibLaTeX. +\end{abstract} + + +\section{How to use the biblatex-cse style} + +\begin{enumerate} + \item Download the \texttt{biblatex-cse.bbx} and \texttt{biblatex-cse.cbx} files and put them in your document's main diretory/folder. + \item Load \texttt{biblatex} with the option \texttt{style=biblatex-cse}, i.e., +\begin{verbatim} +\usepackage[style=biblatex-cse]{biblatex} +\end{verbatim} +\end{enumerate} + + +\section{How to contribute} + +I did this style file by request of a user of my \href{https://github.com/joaomlourenco/novathesis}{LaTeX template \novathesis}. He was quite thorough, double and triple checking that the output was conforming to the requirements of his University (Faculty of Veterinary from the University of Lisbon). Although this \texttt{\filename} style served the requirements from his University, there may still be some unconformities to the CSE style. If you find any, please open an issue in the \href{https://github.com/joaomlourenco/biblatex-cse}{project's page on GitHub} or, even better, \textbf{submit a pull request}. + + +\section{Examples of citations abd bibliography} + +\subsection{Article Citations} +\indent +\par\nauthors{1}\cite{Duddington1955} +\par\nauthors{2}\cite{Asa2011} +\par\nauthors{3}\cite{Migaki1982} +\par\nauthors{4}\cite{Lysek1982} +\par\nauthors{5}\cite{Carvalho2007} +\par\nauthors{8}\cite{Riadigos2014} + +\printbibliography[type=article, title=Article References] + +\subsection{Book Citations} +\indent +\par\nauthors{1}\cite{AnkelSimons2007} +\par\nauthors{2}\cite{Bogitsh2013} +\par\nauthors{3}\cite{Taylor2016} +\par\nauthors{4}\cite{Modry2015} +\par\nauthors{5}\cite{Modry2017} + +\printbibliography[type=book, title=Book References] + + +\subsection{Manual Citations} +\indent +\par\nauthors{1}\cite{Zoos2022} + +\printbibliography[type=manual, title=Manual References] + + +\subsection{Master Thesis Citations} +\indent +\par\nauthors{1}\cite{Carvalho2002} + +\printbibliography[type=masterthesis, title=Masterthesis References] + + +\subsection{Online Citations} +\indent +\par\nauthors{1}\cite{ZooBarcelona:Timeline} + +\printbibliography[type=manual, title=Online References] + + +\subsection{PhD Thesis Citations} +\indent +\par\nauthors{1}\cite{Balan2017} + +\printbibliography[type=phdthesis, title=Phdthesis References] + + +\subsection{Technical Report Citations} +\indent +\par\nauthors{1}\cite{Fiby2020} +\par\nauthors{2}\cite{Miller2011} +\par\nauthors{5}\cite{Abello2017} +\par\nauthors{5}\cite{Duque2018} + +\printbibliography[type=techreport, title=Techreport References] + + + +% Bibliography goes here +% ---------------------- + +\end{document} diff --git a/Master/texmf-dist/doc/latex/biblatex-cse/bibliography.bib b/Master/texmf-dist/doc/latex/biblatex-cse/bibliography.bib new file mode 100644 index 00000000000..41dc7056bb6 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex-cse/bibliography.bib @@ -0,0 +1,164 @@ +@Article{Duddington1955, + author = {C. L. Duddington}, + title = {Fungi that Attack Microscopic Animals}, + doi = {10.1007/bf02872434}, + issue = {7}, + pages = {377--439}, + volume = {21}, + journal = {The Botanical Review}, + year = {1955}, +} + +@Article{Asa2011, + author = {Cheryl Asa and Sally Boutelle}, + title = {Contraception}, + doi = {10.1016/B978-1-4377-1986-4.00002-0}, + editor = {R. EricFowler, Murray E. Miller}, + pages = {8--14}, + volume = {7}, + edition = {1}, + journal = {Fowler's Zoo and Wild Animal Medicine Current Therapy}, + publisher = {Elsevier Saunders}, + year = {2011}, +} + +@Article{Migaki1982, + author = {Migaki, G. and Schmidt, R. E. and Toft, J. D. and Kaufmann, A. F.}, + title = {Mycotic Infections of the Alimentary Tract of Nonhuman Primates: A Review}, + doi = {10.1177/030098588201907s07}, + pages = {93--103}, + volume = {19}, + journal = {Vet. Pathol}, + year = {1982}, +} + +@Article{Lysek1982, + author = {Hynek Lýsek and O. Fassatiová and N. Cuervo Pineda and N. Lorenzo and José Ángel {Hernández Malagón}}, + title = {Ovicidal fungi in soils of Cuba.}, + issn = {0015--5683}, + issue = {3}, + pages = {265--270}, + url = {https://europepmc.org/article/med/6890012}, + volume = {29}, + journal = {Folia Parasitologica}, + month = {1}, + pmid = {6890012}, + year = {1982}, +} + +@Article{Carvalho2007, + author = {Madeira de Carvalho, Luís Manuel and Gillespie, A. T. and Serra, P. M. and Bernardo, F. A. and Farrim, A. P. and Fazendeiro, I. M.}, + title = {Eficácia do fungo nematófago \textit{Duddingtonia flagrans} no controlo biológico da estrongilidose equina no Ribatejo Efficacy of the nematofagous fungi \textit{Duddingtonia flagrans} in the biological control of horse strongylosis in the Ribatejo}, + pages = {233--247}, + volume = {102}, + journal = {REVISTA PORTUGUESA DE CIÊNCIAS VETERINÁRIAS}, + keywords = {()}, + year = {2007}, +} + +@Article{Riadigos2014, + author = {Silvia Miguélez Riádigos and María Sol {Arias Vázquez} and Esther Valderrábano Cano and Pablo Piñeiro Fraga and Diego Gómez Uzal and María Fernández Marcos and Rodrigo {Bonilla Quintero} and Rita Sánchez-Andrade Fernández and Luis Manuel {Madeira de Carvalho}}, + title = {Control Biológico de Nematodos Parásitos en Antílopes (\textit{Cervicapra cervicapra}) en Cautividad}, + issn = {2182--8865}, + pages = {47--56}, + volume = {34}, + journal = {Pastagens e Forragens}, + year = {2014}, +} + +@Book{AnkelSimons2007, + author = {Friderun Ankel-Simons}, + title = {Primate Anatomy An Introduction}, + edition = {3}, + isbn = {1865843830}, + publisher = {Elsevier Academic Press}, + url = {http://www.bookaid.org}, + year = {2007}, +} + +@book{Bogitsh2013, + author = {Burton Jerome Bogitsh and Clint Earl Carter}, + edition = {4}, + isbn = {9780124159150}, + publisher = {Academic Press}, + title = {Human parasitology}, + year = {2013}, +} + +@Book{Taylor2016, + author = {Taylor, M. A. and Coop, R. L. and Wall, R. L.}, + title = {Veterinary Parasitology}, + edition = {4}, + publisher = {Wiley Blackwell}, + year = {2016}, +} + +@Book{Modry2015, + author = {David Modrý and Klára J. Petrzelková and Barbora Kalousová and Hideo Hasegawa}, + title = {Parasites of Apes: An Atlas of Coproscopic Diagnostics}, + year = {2015}, +} + +@Book{Modry2017, + author = {David Modrý and Lada Hofmannová and Andrei D. Mihalca and Jana Juránková and Helena Neumayerová and Gianluca D’Amico}, + title = {Field and laboratory diagnostics of parasitic diseases of domestic animals: from sampling to diagnosis}, + year = {2017}, +} + +@Manual{Zoos2022, + author = {Zoos and Aquaria, European Association of}, + title = {EAZA Membership and Accreditation Manual}, + city = {Amsterdam}, + year = {2022}, +} + +@MastersThesis{Carvalho2002, + author = {Madeira de Carvalho, Luís Manuel}, + institution = {Faculdade de Medicina Veterinária}, + title = {Epidemiologia e controlo da estrongilidose em diferentes sistemas de produção equina em Portugal}, + city = {Lisbon}, + year = {2002}, +} + +@online{ZooBarcelona:Timeline, + author = {Zoo Barcelona}, + title = {Timeline – Walk through the past, present and future of a conservation institution for biodiversity}, + url = {https://historia.zoobarcelona.cat/en/}, +} + +@PhdThesis{Balan2017, + author = {Fabián Leonardo {Arroyo Balán}}, + institution = {Facultade de Veterinaria Universidade de Santiago de Compostela}, + title = {Formulación de Esporas de Hongos Parasiticidas en Pellets Nutricionales}, + url = {http://hdl.handle.net/10347/15820}, + year = {2017}, +} + +@techreport{Fiby2020, + author = {Monika Fiby}, + title = {Bio-floors in Animal Enclosures}, + year = {2020}, +} + +@techreport{Miller2011, + author = {R. Eric Miller and Murray Fowler}, + title = {Zoo and Wild Animal Medicine CURRENT THERAPY}, + year = {2011}, +} + +@TechReport{Abello2017, + author = {Ma Teresa Abelló and Frank Rietkerk and Neil Bemment}, + title = {EAZA Best Practice Guidelines for Gorillas EAZA BEST PRACTICE GUIDELINES Great Ape Taxon Advisory Group GORILLA (Gorilla gorilla gorilla) (2nd Edition)}, + year = {2017}, +} + +@techreport{Duque2018, + author = {Daniela Duque and Ricardo Lopes and Filipe Sampaio and Augusto Silva and Paula Brilhante Simões}, + institution = {Laboratório Veterinário INNO}, + month = {4}, + title = {Prevalência parasitária gastrointestinal em 1419 casos (2015-2017), comparando a análise coprológica de 1 versus 3 amostras}, + year = {2018}, +} + + + diff --git a/Master/texmf-dist/doc/latex/biblatex-software/LICENSE b/Master/texmf-dist/doc/latex/biblatex-software/LICENSE index 387307b03e9..7a6454a6f0e 100644 --- a/Master/texmf-dist/doc/latex/biblatex-software/LICENSE +++ b/Master/texmf-dist/doc/latex/biblatex-software/LICENSE @@ -1,5 +1,5 @@ %% software extension for biblatex styles -%% Copyright 2020 Roberto Di Cosmo <roberto@dicosmo.org> +%% Copyright 2020-2024 Roberto Di Cosmo <roberto@dicosmo.org> % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 diff --git a/Master/texmf-dist/doc/latex/biblatex-software/Changes b/Master/texmf-dist/doc/latex/biblatex-software/history.tex index ab3b8a524d9..9de97b222ba 100644 --- a/Master/texmf-dist/doc/latex/biblatex-software/Changes +++ b/Master/texmf-dist/doc/latex/biblatex-software/history.tex @@ -1,4 +1,5 @@ -\begin{release}{bltx-v1.2-5}{2022-08-02} \item Fix mishandling of SWHID short toggle when hyperref is not loaded. \end{release} +\begin{release}{bltx-v1.2-6}{2024-12-30} \item Updated URL for swMath links, and minor fixes. \end{release} +\begin{release}{bltx-v1.2-5}{2022-08-02} \item Fix mishandling of SWHID short toggle when hyperref is not loaded \end{release} \begin{release}{bltx-v1.2-4}{2022-03-03} \item Add support for displaying short SWHID \end{release} \begin{release}{bltx-v1.2-3}{2021-08-20} \item Support backrefs. \end{release} \begin{release}{bltx-v1.2-2}{2020-06-27} \item Fix handling of related field; use date instead of year/month in examples; add swMATH definition \end{release} diff --git a/Master/texmf-dist/doc/latex/biblatex-software/sample-use-sty.pdf b/Master/texmf-dist/doc/latex/biblatex-software/sample-use-sty.pdf Binary files differindex 7f46d76a9c1..9ab2b72330f 100644 --- a/Master/texmf-dist/doc/latex/biblatex-software/sample-use-sty.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-software/sample-use-sty.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-software/software-biblatex.pdf b/Master/texmf-dist/doc/latex/biblatex-software/software-biblatex.pdf Binary files differindex 1cb63e32167..7caeca2ae91 100644 --- a/Master/texmf-dist/doc/latex/biblatex-software/software-biblatex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-software/software-biblatex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-software/software-biblatex.tex b/Master/texmf-dist/doc/latex/biblatex-software/software-biblatex.tex index 5b76ac11edd..10695ec2702 100644 --- a/Master/texmf-dist/doc/latex/biblatex-software/software-biblatex.tex +++ b/Master/texmf-dist/doc/latex/biblatex-software/software-biblatex.tex @@ -14,7 +14,7 @@ url={https://www.ctan.org/tex-archive/macros/latex/contrib/biblatex-contrib/biblatex-software}, author={Roberto Di Cosmo}, email={roberto@dicosmo.org}, - revision={1.2-5}, + revision={1.2-6}, date={\today}} \hypersetup{% @@ -57,7 +57,7 @@ more advanced use. Permission is granted to copy, distribute and/or modify this software under the terms of the \latex Project Public License, version 1.3c\footnote{\url{http://www.latex-project.org/lppl.txt}}. The current -maintainer is Roberto Di Cosmo (\textcopyright\ 2020). +maintainer is Roberto Di Cosmo (\textcopyright\ 2020-2024). \subsection{History} diff --git a/Master/texmf-dist/doc/latex/bithesis/bithesis.pdf b/Master/texmf-dist/doc/latex/bithesis/bithesis.pdf Binary files differindex cf28b5d09ac..95a3b6d6bda 100644 --- a/Master/texmf-dist/doc/latex/bithesis/bithesis.pdf +++ b/Master/texmf-dist/doc/latex/bithesis/bithesis.pdf diff --git a/Master/texmf-dist/doc/latex/chuushaku/README.txt b/Master/texmf-dist/doc/latex/chuushaku/README.txt new file mode 100644 index 00000000000..b806f9ebceb --- /dev/null +++ b/Master/texmf-dist/doc/latex/chuushaku/README.txt @@ -0,0 +1,31 @@ +Chuushaku - Highly flexible notes==================================================================== +version 1.0.1 + +Licence---------------------------------------------------------------------------------------------- +lppl1.3c +Copyright (c) 2025- Hugh +This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 of this license or (at your option) any later version. +The latest version of this license is in + +http://www.latex-project.org/lppl.txt + +and version 1.3 or later is part of all distributions of LaTeX version 2005/12/01 or later. + +Description------------------------------------------------------------------------------------------ +This style file is designed for compiling book notes as part of the body text. +The "remember picture" feature automatically calculates coordinates, eliminating the need for manual adjustment of note positions. +The main packages used in chuushaku.sty are TikZ, amsmath, framed, and calc. + +Contents--------------------------------------------------------------------------------------------- +chuushaku.sty the main file +chuushaku.pdf a user guide attempt +chuushaku.tex tex file of chuushaku.pdf +chuushaku-sample.pdf an example of use in conjunction with jsarticle +chuushaku-sample.tex tex file of chuushaku-sample.pdf +README.txt this file + +Feedback--------------------------------------------------------------------------------------------- +ishiguro0426@gmail.com +(Mail here, please.) + + Thank you for reading!
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/chuushaku/chuushaku-sample.pdf b/Master/texmf-dist/doc/latex/chuushaku/chuushaku-sample.pdf Binary files differnew file mode 100644 index 00000000000..2029a82b586 --- /dev/null +++ b/Master/texmf-dist/doc/latex/chuushaku/chuushaku-sample.pdf diff --git a/Master/texmf-dist/doc/latex/chuushaku/chuushaku-sample.tex b/Master/texmf-dist/doc/latex/chuushaku/chuushaku-sample.tex new file mode 100644 index 00000000000..eda083271f2 --- /dev/null +++ b/Master/texmf-dist/doc/latex/chuushaku/chuushaku-sample.tex @@ -0,0 +1,24 @@ +\documentclass[dvipdfmx,b5j,10pt]{jsarticle}% + +\usepackage{mypackage,chuushaku}% + +\begin{document}% + +\chuukigou{}{\rotatebox[origin=c]{180}{\textcolor{gray}{\▲}}} +\begin{ascolorbox4}{問題}\parindent=2zw +I have a good memory, except for names and faces, and I do not forget what I have read. The disadvantage of this is that having read all the great novels of the world two or three times I can no longer read them with relish. There are few modern novels that excite my interest, and I do not know what I should do for relaxation were it not for the innumerable detective stories that so engagingly pass the time and once read pass straight out of one's mind.\source{Somerset Maugham, \it{A Writer's Notebook}} +\end{ascolorbox4}\br{-.5}% +\begin{chuushaku}[.7]<.5> +\begin{鉄壁カラーボックス}{\!\!表現型\!\!}\noindent\mc{随筆文逸話文体}\end{鉄壁カラーボックス}% +\br0~\chuu{私は記憶力が良い}\br{-1}\sankakuline*{I have a good memory}% +SVOを直訳してもよいが,\point{名詞構文の訳し方}\noindent に従って,I memorize (things) well「物を上手に記憶する;記憶力がよい」と言い換えてもよい。% +\br0~\chuu{人の名前や顔は別として}\br{-1}\sankakuline*{except for names and faces}% +「名前と顔以外は」でよいが,作者の意図としては「人の名前と顔を覚えるのは\kenten{苦手}だ」という含蓄がある。% +\br0~\chuu{一度読んだ本は忘れることがありません}\br{-1}\sankakuline*{I do not forget what I have read.}% +\point{wh-節内の現在完了の訳し方}\point{関係詞の訳し方}\noindent を踏まえ,「\kenten{一度}読み終えた\kenten{本}」とすると自然。% +\br0~\chuu{そのため不都合なことに/\\そのため不便な点は}\br{-1}\sankakuline*{The disadvantage of this is that}% +\point{同格名詞節の訳し方}% +\noindent に則ると,「不都合なことに」と訳せる。もちろん「不便な点は」でも問題ない。% +\end{chuushaku} + +\end{document}%
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/chuushaku/chuushaku.pdf b/Master/texmf-dist/doc/latex/chuushaku/chuushaku.pdf Binary files differnew file mode 100644 index 00000000000..0d269ab8f10 --- /dev/null +++ b/Master/texmf-dist/doc/latex/chuushaku/chuushaku.pdf diff --git a/Master/texmf-dist/doc/latex/chuushaku/chuushaku.tex b/Master/texmf-dist/doc/latex/chuushaku/chuushaku.tex new file mode 100644 index 00000000000..1764421a69f --- /dev/null +++ b/Master/texmf-dist/doc/latex/chuushaku/chuushaku.tex @@ -0,0 +1,132 @@ +\documentclass[dvipdfmx,b5j,10pt]{jsarticle}% + +\usepackage{mypackage,chuushaku}% + +\title{\pl{chuushaku.sty}}% +\author{\pl{Hugh}}% + +\begin{document}% + +\maketitle% + +\section{概要} + +このパッケージは,基本的な\TeX / \LaTeX の機能のみを頼って,傍注領域ではなく本文領域に自由度の高い注釈環境を実現するための成果物です。 + +プリアンブルで以下のように宣言することで,すべての機能が使用できます。 + +\br{.5}\begin{itembox}[c]{\texttt{chuushaku.sty}} +\begin{verbatim} +\usepackage{chuushaku} +\end{verbatim} +\end{itembox} + +\section{基本的な使い方} + +注釈環境の基本的な使い方は,以下の通りです。 + +\begin{itembox}[c]{\texttt{chuushaku環境}} +\begin{verbatim} +\begin{chuushaku} + $\sqrt{2}$が無理数であることを背理法\chuu{\br{-.8}\begin{枠囲み}{鉄則}否定的命題$\Rightarrow$背理法\end{枠囲み}}で証明する。\par + $\sqrt{2}$が有理数であると仮定すると,$\sqrt{2}=\bun{a}{b}$となる整数$a,\,b$ ($b\neq0$)が存在する。ただし,$a,\,b$は互いに素\chuu{$\bun{a}{b}$が既約分数ということ}であるとする。 +\end{chuushaku} +\end{verbatim} +\end{itembox} +\begin{結果} +\begin{chuushaku} + $\sqrt{2}$が無理数であることを背理法\chuu{\br{-.8}\begin{枠囲み}{鉄則}否定的命題$\Rightarrow$背理法\end{枠囲み}}で証明する。\par + $\sqrt{2}$が有理数であると仮定すると,$\sqrt{2}=\bun{a}{b}$となる整数$a,\,b$ ($b\neq0$)が存在する。ただし,$a,\,b$は互いに素\chuu{$\bun{a}{b}$が既約分数ということ}であるとする。 +\end{chuushaku} +\end{結果} + +上では枠囲みを用いていますが,他にも\texttt{enumerate環境}など,様々なコマンドと併用して使用可能です。 + +\section{カスタマイズ} +\subsection{注釈記号} + +本文中の注釈記号と傍注領域の注釈記号は,以下のように自由にカスタマイズ可能です。 +\br{.5}\begin{itembox}[c]{\texttt{注釈記号の変更\maru1}} +\begin{verbatim} +\chuukigou{$*$}{←} +\end{verbatim} +\end{itembox} +\begin{結果}\chuukigou{$*$}{←} +\begin{chuushaku} + $\sqrt{2}$が無理数であることを背理法\chuu{\br{-.8}\begin{枠囲み}{鉄則}否定的命題$\Rightarrow$背理法\end{枠囲み}}で証明する。\par + $\sqrt{2}$が有理数であると仮定すると,$\sqrt{2}=\bun{a}{b}$となる整数$a,\,b$ ($b\neq0$)が存在する。ただし,$a,\,b$は互いに素\chuu{$\bun{a}{b}$が既約分数ということ}であるとする。 +\end{chuushaku} +\end{結果} + +また,各注釈環境ごとにカウンタ(\texttt{chuubangou}に保存)を用いることもできます。ただしこの場合,環境を中断するごとに値は1にリセットされます。 + +\br{.5}\begin{itembox}[c]{\texttt{注釈記号の変更\maru2}} +\begin{verbatim} +\chuukigou{\thechuubangou)\ispace}{\,\n)\ispace} +\end{verbatim} +\end{itembox} +\begin{結果}\chuukigou{\thechuubangou)\ispace}{\,\n)\ispace} +\begin{chuushaku} + $\sqrt{2}$が無理数であることを背理法\chuu{\br{-.8}\begin{枠囲み}{鉄則}否定的命題$\Rightarrow$背理法\end{枠囲み}}で証明する。\par + $\sqrt{2}$が有理数であると仮定すると,$\sqrt{2}=\bun{a}{b}$となる整数$a,\,b$ ($b\neq0$)が存在する。ただし,$a,\,b$は互いに素\chuu{$\bun{a}{b}$が既約分数ということ}であるとする。 +\end{chuushaku} +\end{結果} + +\subsection{スペース}% + +\begin{itembox}[c]{\texttt{スペースの一時的変更}} +\begin{verbatim} +\begin{chuushaku}[.5] + [...] +\end{verbatim} +\end{itembox} +\begin{結果} +\begin{chuushaku}[.5]<1> + $\sqrt{2}$が無理数であることを背理法\chuu{\br{-.8}\begin{枠囲み}{鉄則}否定的命題$\Rightarrow$背理法\end{枠囲み}}で証明する。\par + $\sqrt{2}$が有理数であると仮定すると,$\sqrt{2}=\bun{a}{b}$となる整数$a,\,b$ ($b\neq0$)が存在する。ただし,$a,\,b$は互いに素\chuu{$\bun{a}{b}$が既約分数ということ}であるとする。 +\end{chuushaku} +\end{結果} + +上例において,最初の\texttt{[.5]}は,ページ横幅に対する本文の長さの比率を表します。もう一方の\texttt{<1>}は,本文と傍注領域のスペースの全角幅を表します。いずれもデフォルトの状態は,\br{.5} + +\qqquad\verb|\begin{chuushaku}[.68]<.7>|\br{.5} + +\noindent です。しかしいちいち手動で設定するのは,いささか面倒です。そこで,プリアンブルにて一括変更する手段を設けました。 + +\br{.5}\begin{itembox}[c]{\texttt{スペースの一括変更}} +\begin{verbatim} +\chuuhaba{.68} +\chuuaki{.7} +\end{verbatim} +\end{itembox} + +\section{注意点} + +このパッケージを用いて作成した文書は,最後に必ず2回続けてコンパイルし直してください。 + +また,傍注領域では必ず1つ以上の\verb|\chuu|を用いてください。 + +本環境は,ページまたぎ非対応です。 + +\newpage + +\section{使用例}\plfamily + +\chuukigou{}{\rotatebox[origin=c]{180}{\textcolor{gray}{\▲}}} +\begin{ascolorbox4}{問題}\parindent=2zw +I have a good memory, except for names and faces, and I do not forget what I have read. The disadvantage of this is that having read all the great novels of the world two or three times I can no longer read them with relish. There are few modern novels that excite my interest, and I do not know what I should do for relaxation were it not for the innumerable detective stories that so engagingly pass the time and once read pass straight out of one's mind.\source{Somerset Maugham, \it{A Writer's Notebook}} +\end{ascolorbox4}\br{-.5}% +\begin{chuushaku}[.7]<.5> +\begin{鉄壁カラーボックス}{\!\!表現型\!\!}\noindent\mc{随筆文逸話文体}\end{鉄壁カラーボックス}% +\br0~\chuu{私は記憶力が良い}\br{-1}\sankakuline*{I have a good memory}% +SVOを直訳してもよいが,\point{名詞構文の訳し方}\noindent に従って,I memorize (things) well「物を上手に記憶する;記憶力がよい」と言い換えてもよい。% +\br0~\chuu{人の名前や顔は別として}\br{-1}\sankakuline*{except for names and faces}% +「名前と顔以外は」でよいが,作者の意図としては「人の名前と顔を覚えるのは\kenten{苦手}だ」という含蓄がある。% +\br0~\chuu{一度読んだ本は忘れることがありません}\br{-1}\sankakuline*{I do not forget what I have read.}% +\point{wh-節内の現在完了の訳し方}\point{関係詞の訳し方}\noindent を踏まえ,「\kenten{一度}読み終えた\kenten{本}」とすると自然。% +\br0~\chuu{そのため不都合なことに/\\そのため不便な点は}\br{-1}\sankakuline*{The disadvantage of this is that}% +\point{同格名詞節の訳し方}% +\noindent に則ると,「不都合なことに」と訳せる。もちろん「不便な点は」でも問題ない。% +\end{chuushaku} + +\end{document}%
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/codehigh/codehigh.pdf b/Master/texmf-dist/doc/latex/codehigh/codehigh.pdf Binary files differindex a30aa41ac3a..3a8306706c4 100644 --- a/Master/texmf-dist/doc/latex/codehigh/codehigh.pdf +++ b/Master/texmf-dist/doc/latex/codehigh/codehigh.pdf diff --git a/Master/texmf-dist/doc/latex/codehigh/codehigh.tex b/Master/texmf-dist/doc/latex/codehigh/codehigh.tex index 95896f01af6..057848150a9 100644 --- a/Master/texmf-dist/doc/latex/codehigh/codehigh.tex +++ b/Master/texmf-dist/doc/latex/codehigh/codehigh.tex @@ -2,7 +2,7 @@ \documentclass[oneside]{book} \usepackage[a4paper,margin=2cm]{geometry} -\newcommand*{\myversion}{2024A} +\newcommand*{\myversion}{2025A} \newcommand*{\mydate}{Version \myversion\ (\the\year-\mylpad\month-\mylpad\day)} \newcommand*{\mylpad}[1]{\ifnum#1<10 0\the#1\else\the#1\fi} diff --git a/Master/texmf-dist/doc/latex/coloredtheorem/README.md b/Master/texmf-dist/doc/latex/coloredtheorem/README.md index 77ec725fd11..ab399843836 100644 --- a/Master/texmf-dist/doc/latex/coloredtheorem/README.md +++ b/Master/texmf-dist/doc/latex/coloredtheorem/README.md @@ -77,8 +77,17 @@ Let’s start by creating two new environments, one for _algorithms_ and another colframe=black!15] \cthnewtheorem{example}{Example}[coltitle=black, colback=black!5, colframe=black!30] +\cthnewtheorem{thought}{Though}[enhanced, coltitle=green!60!black, + colbacktitle=green!10, colback=green!10, + frame hidden, boxrule=0pt, + attach title to upper={\\[0.5ex]}, + borderline west={1mm}{-2mm}{green!60!black}] ``` +And this is a shiny thought! + +<img width="650" alt="image of a thought" src="https://github.com/user-attachments/assets/d55c5281-b95a-4dc1-bf33-7b0ffc0c4b3e" /> + The box with Algorithm 1, which uses the default visual that was given when creating the environment with `\cthnewtheorem` and gracefully overflows onto the next page, was created with: ```latex @@ -89,11 +98,11 @@ The box with Algorithm 1, which uses the default visual that was given when crea \end{cthalgorithm} ``` -<img width="650" alt="image" src="https://github.com/joaomlourenco/coloredtheorem/assets/2064643/fa9cacce-89cc-4973-ac16-41a6e21dfded"> +<img width="650" alt="image of an algorithm - pt1" src="https://github.com/joaomlourenco/coloredtheorem/assets/2064643/fa9cacce-89cc-4973-ac16-41a6e21dfded"> _(page break here)_ -<img width="650" alt="image" src="https://github.com/joaomlourenco/coloredtheorem/assets/2064643/bc976d1a-2d7d-4f62-b651-4b23124d8d76"> +<img width="650" alt="image of an algorithm - pt2" src="https://github.com/joaomlourenco/coloredtheorem/assets/2064643/bc976d1a-2d7d-4f62-b651-4b23124d8d76"> The box Example 1, which uses the default visual for the environment (as given to `\cthnewtheorem...`), was created with: @@ -104,7 +113,7 @@ The box Example 1, which uses the default visual for the environment (as given t \end{cthexample} ``` -<img width="650" alt="image" src="https://github.com/joaomlourenco/coloredtheorem/assets/2064643/69bd5bbd-8da8-418f-805d-0837c62cfb2c"> +<img width="650" alt="image of an example" src="https://github.com/joaomlourenco/coloredtheorem/assets/2064643/69bd5bbd-8da8-418f-805d-0837c62cfb2c"> Now, let’s create a new box for Algorithm 1, but with a different customized visual, which will affect only this entry! Notice that the customization argument is passed straight to the `tcolorbox` environment, so anything valid for `tcolorbox` is also valid here. Algorithm 2 was created with the following code: @@ -119,15 +128,31 @@ Now, let’s create a new box for Algorithm 1, but with a different customized v \end{cthalgorithm} ``` -<img width="650" alt="image" src="https://github.com/joaomlourenco/coloredtheorem/assets/2064643/977c371c-1ecb-43ca-9351-c4befc23f7e9"> +<img width="650" alt="image of another algorithm - pt1" src="https://github.com/joaomlourenco/coloredtheorem/assets/2064643/977c371c-1ecb-43ca-9351-c4befc23f7e9"> _(page break here)_ -<img width="650" alt="image" src="https://github.com/joaomlourenco/coloredtheorem/assets/2064643/c51ac463-c335-4132-9445-cb726ee616a1"> +<img width="650" alt="image of another algorithm - pt2" src="https://github.com/joaomlourenco/coloredtheorem/assets/2064643/c51ac463-c335-4132-9445-cb726ee616a1"> And now and example with no caption and a different visual... this example will not go into the` \listofexamples` below! -<img width="766" alt="image" src="https://github.com/joaomlourenco/coloredtheorem/assets/2064643/ab888abf-56ba-459d-aa94-2db9816d0a09"> +```latex +\begin{cthexample}{}[coltitle=black, colback=magenta!10, colframe=magenta!20] + Example body here! +\end{cthexample} +``` + +<img width="650" alt="image on an algorithm with no caption" src="https://github.com/user-attachments/assets/1e798c4f-e029-4901-9d63-9ca8839e2208" /> + +And yet another unnumbered example, this one using the alternative (`star`) syntax. This example will not go into the `\listofexamples` below as well! + +```latex +\begin{cthexample*}{This is an unnumbered example with a title}[coltitle=black, colback=yellow!10, colframe=yellow!20] + Example body here! +\end{cthexample*} +``` + +<img width="650" alt="image on an algorithm with no caption using the star syntax" src="https://github.com/user-attachments/assets/155e8081-a960-4dce-84a5-1341abd2708c" /> Now let’s print the lists of algorithms and examples. Remember to add the prefix `cthth` to the `listof`, i.e., `\cthlistofalgorithms` and `\cthlistofexamples`! diff --git a/Master/texmf-dist/doc/latex/coloredtheorem/coloredtheorem-doc.pdf b/Master/texmf-dist/doc/latex/coloredtheorem/coloredtheorem-doc.pdf Binary files differindex 9cf5839b1e3..2b57e45cc16 100644 --- a/Master/texmf-dist/doc/latex/coloredtheorem/coloredtheorem-doc.pdf +++ b/Master/texmf-dist/doc/latex/coloredtheorem/coloredtheorem-doc.pdf diff --git a/Master/texmf-dist/doc/latex/coloredtheorem/coloredtheorem-doc.tex b/Master/texmf-dist/doc/latex/coloredtheorem/coloredtheorem-doc.tex index cd5b6691d28..b684b88569d 100644 --- a/Master/texmf-dist/doc/latex/coloredtheorem/coloredtheorem-doc.tex +++ b/Master/texmf-dist/doc/latex/coloredtheorem/coloredtheorem-doc.tex @@ -13,7 +13,7 @@ \usepackage{kantlipsum} \usepackage{tabularx} \usepackage{xspace} -\newcommand\tcthrm{\texttt{coloredtheorem}\xspace} +\newcommand\tcthrm{\textsf{\cthfilename}\xspace} %% ALGPSEUDOCODEX stuff \usepackage{algorithm} @@ -40,10 +40,10 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% MAIN DOCUMENT \begin{document} - \title{The \tcthrm package {\footnotesize(v1.0.4)}} - \author{João M. Lourenço\\\texttt{\small joao.lourenco@fct.unl.pt}} - \date{September 15, 2024} - + \title{The \tcthrm package} + \author{João M. Lourenço\\\url{https://github.com/joaomlourenco/coloredtheorem}} + \date{\cthfiledate\ (v\cthfileversion)} + \maketitle @@ -110,6 +110,27 @@ Akin to \mintinline{TeX}+\newtheorem+ from the \texttt{amsmath} package, the use \end{itemize} \end{itemize} + \item \begin{minted}[escapeinside=||]{TeX} +\begin{|\ca{ctb<envname>*}|}{|\ca{<Caption>}|}[|\co{<tcolorbox options>}|] + |\cc{<Contents>}| +\end{|\ca{ctb<envname>*}|} +\end{minted} + \begin{itemize} + \item Create a new \emph{algorithm-like} box with the given contents. + \begin{itemize} + \item \mintinline[escapeinside=||]{TeX}+|\ca{<envname>}|+ is the suffix for environment name, + e.g., \verb+algorithm+. + \item \mintinline[escapeinside=||]{TeX}+|\ca{<Caption>}|+ is the caption/title of + the box. This box will be unnumbered and will not be listed with the + \mintinline[escapeinside=||]{TeX}+\cthlistof|\ck{<envname>s}|+ + (see below). + \item \mintinline[escapeinside=||]{TeX}+|\co{<tcolorbox options>}|+ options to be + passed to the \verb+tcolorbox+ environment, which will override the defaults + given in \mintinline{TeX}+\cthnewalgorithm+ (this argument is optional). + \item \mintinline[escapeinside=||]{TeX}+|\cc{<Contents>}|+ the contents to by typeset inside the colored environment. + \end{itemize} + \end{itemize} + \item \mintinline[escapeinside=||]{TeX}+\cthlistof|\ck{<envname>s}|+ \begin{itemize} \item \mintinline[escapeinside=||]{TeX}+|\ca{<envname>}|+ is the environment name @@ -133,7 +154,15 @@ Let's start by creating two new environments, one for \emph{algorithms} and anot \cthnewtheorem{algorithm}{Algorithm}[coltitle=black, colback=yellow!10, colframe=black!15] \cthnewtheorem{example}{Example}[coltitle=black, colback=black!5, colframe=black!30] +\cthnewtheorem{thought}{Though}[enhanced, coltitle=green!60!black, colbacktitle=green!10, + colback=green!10, frame hidden, boxrule=0pt, + attach title to upper={\\[0.5ex]}, + borderline west={1mm}{-2mm}{green!60!black}] +And this is a shiny thought! +\begin{cththought}{This is a tought} +\kant[2] +\end{cththought} The box with \autoref{alg:advance1}, which uses the default visual that was given when creating the environment with \mintinline{TeX}+\cthnewtheorem+ and gracefully overflows onto the next page, was created with: \begin{minted}[bgcolor=red!5,fontsize=\small,escapeinside=||]{TeX} @@ -232,10 +261,31 @@ Now, let's create a new box for \autoref{alg:advance1}, but with a different cus And now an example with no caption and a different visual… this example will not go into the \mintinline{TeX}+\listofexamples+ below! -\begin{cthexample}{}[coltitle=yellow, colback=blue!30, colframe=blue!70] +\begin{minted}[bgcolor=red!5,fontsize=\small,escapeinside=||]{TeX} +\begin{|\ca{cthexample}|}{} + [|\co{coltitle}=|black, |\co{colback}=|magenta!10, |\co{colframe}=|magenta!20] + |\cc{Example body here!}| +\end{|\ca{cthexample}|} +\end{minted} + +\begin{cthexample}{}[coltitle=black, colback=magenta!10, colframe=magenta!20] \emph{\kant[4]} \end{cthexample} +And yet another unnumbered example, this one using the alternative (star) syntax. This example will not go into the \mintinline{TeX}+\listofexamples+ below as well! + +\begin{minted}[bgcolor=red!5,fontsize=\small,escapeinside=||]{TeX} +\begin{|\ca{cthexample*}|} + {|\ca{This is an unnumbered example with a title}|} + [|\co{coltitle}=|black, |\co{colback}=|yellow!10, |\co{colframe}=|yellow!20] + |\cc{Example body here!}| +\end{|\ca{cthexample*}|} +\end{minted} + +\begin{cthexample*}{This is an unnumbered example with a title}[coltitle=black, colback=yellow!10, colframe=yellow!20] + \emph{\kant[4]} +\end{cthexample*} + Now let's print the lists of algorithms and examples. Remember to add the prefix \ck{\texttt{cth}} to the \ck{\texttt{listof}}, i.e., \mintinline{TeX}+\cthlistofalgorithms+ and \mintinline{TeX}+\cthlistofexamples+! \cthlistofalgorithms diff --git a/Master/texmf-dist/doc/latex/delimset/README.txt b/Master/texmf-dist/doc/latex/delimset/README.txt index 9094d596248..5baa3677c64 100644 --- a/Master/texmf-dist/doc/latex/delimset/README.txt +++ b/Master/texmf-dist/doc/latex/delimset/README.txt @@ -1,5 +1,5 @@ -delimset v2.0 -Copyright 2016-2024 Niklas Beisert +delimset v2.1 +Copyright 2016-2025 Niklas Beisert delimset is a LaTeX2e package to typeset and declare sets of delimiters in math mode whose size can be adjusted conveniently. @@ -26,6 +26,6 @@ This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 of this license or (at your option) any later version. The latest version of this license is in - http://www.latex-project.org/lppl.txt + https://www.latex-project.org/lppl.txt and version 1.3 or later is part of all distributions of LaTeX version 2005/12/01 or later. diff --git a/Master/texmf-dist/doc/latex/delimset/delimset.pdf b/Master/texmf-dist/doc/latex/delimset/delimset.pdf Binary files differindex 734ebf01db2..f7914687a7f 100644 --- a/Master/texmf-dist/doc/latex/delimset/delimset.pdf +++ b/Master/texmf-dist/doc/latex/delimset/delimset.pdf diff --git a/Master/texmf-dist/doc/latex/delimset/dlmssamp.tex b/Master/texmf-dist/doc/latex/delimset/dlmssamp.tex index c27a338c5f6..c9c869f8f37 100644 --- a/Master/texmf-dist/doc/latex/delimset/dlmssamp.tex +++ b/Master/texmf-dist/doc/latex/delimset/dlmssamp.tex @@ -6,18 +6,18 @@ %% %% delimset.dtx (with options: `sample') %% -%% Copyright (C) 2016-2024 Niklas Beisert +%% Copyright (C) 2016-2025 Niklas Beisert %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 %% of this license or (at your option) any later version. %% The latest version of this license is in -%% http://www.latex-project.org/lppl.txt +%% https://www.latex-project.org/lppl.txt %% and version 1.3 or later is part of all distributions of LaTeX %% version 2005/12/01 or later. %% \NeedsTeXFormat{LaTeX2e}[1996/12/01] -\ProvidesFile{dlmssamp.tex}[2024/07/17 v2.0 sample for delimset] +\ProvidesFile{dlmssamp.tex}[2025/01/05 v2.1 sample for delimset] \documentclass[12pt]{article} \usepackage[margin=2cm]{geometry} @@ -130,7 +130,7 @@ alternative representation: =0 \] -display individual delimiters of a set: +display individual delimiters of a set with nesting: \renewcommand{\braket}{\delimpair<|>} \[ \braket{A}{B} @@ -138,7 +138,9 @@ display individual delimiters of a set: \quad \braket*( A\big. \braket*| B_{} \braket*), \quad -\braket^1( A \braket^3| B \braket^2) +\braket^1( A \braket^3| B \braket^2), +\quad +\braket^2[ \brk[s]^1[ A \brk] \usedelim| B \usedelim] \] placing indices before a bracket diff --git a/Master/texmf-dist/doc/latex/easybook/README.md b/Master/texmf-dist/doc/latex/easybook/README.md index 99d5ce00275..b94c24c83ec 100644 --- a/Master/texmf-dist/doc/latex/easybook/README.md +++ b/Master/texmf-dist/doc/latex/easybook/README.md @@ -1,5 +1,5 @@ # The `easybook` document class -Easily typesetting Chinese theses or books (v2024last) +Easily typesetting Chinese theses or books (v2025b) ## Abstract `easybook` is a pure academic template created based on the `ctexbook` book document class. It also has the functions of `book` and `article` document class. Combined with the general framework design of the theses of many universities in China, providing multiple commands and interfaces allows users to easily customize the theses templates. Its basic macro package `easybase` can also be used with `ctex` and standard document classes. diff --git a/Master/texmf-dist/doc/latex/easybook/easybook.pdf b/Master/texmf-dist/doc/latex/easybook/easybook.pdf Binary files differindex d01c29326bf..632c07920ec 100644 --- a/Master/texmf-dist/doc/latex/easybook/easybook.pdf +++ b/Master/texmf-dist/doc/latex/easybook/easybook.pdf diff --git a/Master/texmf-dist/doc/latex/easybook/easybook.tex b/Master/texmf-dist/doc/latex/easybook/easybook.tex index 9f24c346a91..bb0bbc3242c 100644 --- a/Master/texmf-dist/doc/latex/easybook/easybook.tex +++ b/Master/texmf-dist/doc/latex/easybook/easybook.tex @@ -23,8 +23,8 @@ name = easybook, color-scheme = blue, title = EASYBOOK使用手册, - version = v2024last, - date = 2024/12/26, + version = v2025b, + date = 2025/01/03, authors = 瞿毅, info = 简便地排版中文学位论文或书籍, email = toquyi@163.com, @@ -1096,7 +1096,7 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she 如果需要局部而不是全文范围的目录或其它类型的目录,可以查看\ref{subsec:contents} 和 \pkg*{titletoc} 宏包的相关示例。如果需要双语图表目录,可以查看 \pkg*{bicaption} 宏包的相关示例。上面目录命令的可选参数改进了原本单一的功能,也提供了配置命令 \cs{SetTocOuter} 在目录命令外设置选项默认值。 \command{SetTocOuter}[\oarg{扩展名}\marg{键值列表}]\newtagv[Changed]{2024es}% - 设置上述不同类型目录可选参数的默认值。若不指定目录文件的 \meta{扩展名},则除了 \option{title} 和章节标题目录的 \option{level} 选项外对所有目录生效。其中 \meta{键值列表} 的选项如下: + 设置上述不同类型目录可选参数的默认值。若不指定目录文件的 \meta{扩展名},则除了 \option{title} 和章节标题目录的 \option{level} 选项外对所有目录生效。对于索引和参考文献列表 \meta{扩展名} 分别为 \code{idx} 和 \code{bbl}。必选参数中的 \meta{键值列表} 选项如下: \keyval{level}{标题命令} 设定输出目录标题的命令。如果使用 \option{title} 选项设置了双语标题则需要配合双语标题命令。 \begin{ctexexam} diff --git a/Master/texmf-dist/doc/latex/fancyhdr/README b/Master/texmf-dist/doc/latex/fancyhdr/README index 82b3290a09a..c3fc96a80e7 100644 --- a/Master/texmf-dist/doc/latex/fancyhdr/README +++ b/Master/texmf-dist/doc/latex/fancyhdr/README @@ -5,8 +5,7 @@ The package provides extensive facilities, both for constructing headers and footers, and for controlling their use (for example, at times when LaTeX would automatically change the heading style in use). -This is version 4.5 of fancyhdr.sty and extramarks.sty. They are -described in the third edition of The LaTeX Companion. +This is version 5.0 of fancyhdr.sty and extramarks.sty. The distribution package from CTAN (e.g. fancyhdr.zip) consists of the following files: @@ -18,14 +17,15 @@ fancyhdr.pdf PDF of the documentation After processing (by tex) of fancyhdr.ins, the following package files will be generated: -fancyhdr.sty v4.5 2024/12/09 the LaTeX package -extramarks.sty v4.5 2024/12/09 a package for additional marks +fancyhdr.sty v5.0 2025/01/01 the LaTeX package +extramarks.sty v5.0 2025/01/01 a package for additional marks +extramarks-v4.sty v4.5 2024/11/30 a legacy version of extramarks.sty fancyheadings.sty v4.1 2022/11/09 this loads fancyhdr with a warning message -If you have a user distribution package from github (fancyhdr-dist-4.5.zip), +If you have a user distribution package from github (fancyhdr-dist-5.0.zip), then you don't have to do this processing. -If you have a source distribution from github (fancyhdr-4.5.zip), +If you have a source distribution from github (fancyhdr-5.0.zip), it will also contain the .sty files, but not the .pdf file. To create fancyhdr.pdf, either just run the 'make' command, or: latexmk fancyhdr.dtx diff --git a/Master/texmf-dist/doc/latex/fancyhdr/fancyhdr.pdf b/Master/texmf-dist/doc/latex/fancyhdr/fancyhdr.pdf Binary files differindex 2fce5d43348..363840559be 100644 --- a/Master/texmf-dist/doc/latex/fancyhdr/fancyhdr.pdf +++ b/Master/texmf-dist/doc/latex/fancyhdr/fancyhdr.pdf diff --git a/Master/texmf-dist/doc/latex/ffcode/DEPENDS.txt b/Master/texmf-dist/doc/latex/ffcode/DEPENDS.txt index 036451c7b6f..6684dbd5abe 100644 --- a/Master/texmf-dist/doc/latex/ffcode/DEPENDS.txt +++ b/Master/texmf-dist/doc/latex/ffcode/DEPENDS.txt @@ -1,9 +1,10 @@ hard listings hard pgfopts hard tcolorbox -soft etoolbox soft docshots soft environ +soft etoolbox +soft fvextra soft href-ul soft hypdoc soft iexec @@ -15,7 +16,7 @@ soft pdfcrop soft pgf soft pgfopts soft scheme-basic +soft silence soft tools -soft xetex -soft fvextra -soft upquote
\ No newline at end of file +soft upquote +soft xetex
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/ffcode/LICENSE.txt b/Master/texmf-dist/doc/latex/ffcode/LICENSE.txt index 1f211e02878..a2ebd120aff 100644 --- a/Master/texmf-dist/doc/latex/ffcode/LICENSE.txt +++ b/Master/texmf-dist/doc/latex/ffcode/LICENSE.txt @@ -1,6 +1,6 @@ (The MIT License) -Copyright (c) 2021-2024 Yegor Bugayenko +Copyright (c) 2021-2025 Yegor Bugayenko Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal diff --git a/Master/texmf-dist/doc/latex/ffcode/ffcode.pdf b/Master/texmf-dist/doc/latex/ffcode/ffcode.pdf Binary files differindex 5a7007dad02..cf4ac1d7888 100644 --- a/Master/texmf-dist/doc/latex/ffcode/ffcode.pdf +++ b/Master/texmf-dist/doc/latex/ffcode/ffcode.pdf diff --git a/Master/texmf-dist/doc/latex/fontscale/CHANGELOG.md b/Master/texmf-dist/doc/latex/fontscale/CHANGELOG.md index 7ee3fe03623..3b649abc454 100644 --- a/Master/texmf-dist/doc/latex/fontscale/CHANGELOG.md +++ b/Master/texmf-dist/doc/latex/fontscale/CHANGELOG.md @@ -7,6 +7,23 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to ## [Unreleased] +## [v3.0.5] - 2025-01-03 + +### Changed +- Clarified some package functionalities in the documentation: + - The new font baselineskip set by `\ScaleFont` has no stretch and shrink + components. + - `\ScaleFont` is intended as a more robust alternative to `\scalefont` from + the `scalefnt` package. + - `\SetFontSizeBaselineskip` is intended as a more robust alternative to + `\fontsize` + `\selectfont`. + - `\PrintAllFontSizeParameters`, `\PrintSampleText`, and + `\PrintFontSizeCommand` cannot be used in math mode. +- Code improvements: + - The package messages are now defined first. + - The package now regularly uses `\dim_to_fp:n` when handling dimensions + within floating point expressions. + ## [v3.0.4] - 2024-12-22 ### Changed diff --git a/Master/texmf-dist/doc/latex/fontscale/README.txt b/Master/texmf-dist/doc/latex/fontscale/README.txt index d6c9224ee0d..a60ce252473 100644 --- a/Master/texmf-dist/doc/latex/fontscale/README.txt +++ b/Master/texmf-dist/doc/latex/fontscale/README.txt @@ -1,5 +1,5 @@ Package: fontscale -- A flexible interface for setting font sizes -Copyright: 2024 (c) Oliver Beery <beeryoliver@gmail.com> +Copyright: 2024-2025 (c) Oliver Beery <beeryoliver@gmail.com> CTAN: https://ctan.org/pkg/fontscale Repository: https://github.com/beeryoliver/fontscale License: The LaTeX Project Public License 1.3c diff --git a/Master/texmf-dist/doc/latex/fontscale/beery.cls b/Master/texmf-dist/doc/latex/fontscale/beery.cls index ba449ee0393..572eec4accd 100644 --- a/Master/texmf-dist/doc/latex/fontscale/beery.cls +++ b/Master/texmf-dist/doc/latex/fontscale/beery.cls @@ -4,7 +4,7 @@ \NeedsTeXFormat{LaTeX2e}[2023-11-01] \ProvidesExplClass {beery} - {2024-12-22} + {2025-01-03} {} {} @@ -21,6 +21,8 @@ \RequirePackage { csquotes } \RequirePackage { lmodern } +\RequirePackage { scaletextbullet } + \RequirePackage { tcolorbox } \tcbuselibrary { breakable } \NewTColorBox { mydisplaycode } { } @@ -37,7 +39,8 @@ \tl_const:Nn \c_beery_alphabet_tl { abcdefghijklmnopqrstuvwxyz } \NewExpandableDocumentCommand \alphabet { } { \c_beery_alphabet_tl } -\NewDocumentCommand \Key { m o o } +\NewDocumentCommand \Key + { >{ \TrimSpaces } m >{ \TrimSpaces } o >{ \TrimSpaces } o } { \mode_leave_vertical: \group_begin: @@ -51,10 +54,12 @@ { #1 $\,=\,$ #2 \hspace* { \fill } \hbox:n { initial $\,=\,$ #3 } } \group_end: } -\NewDocumentCommand \Value { m } { \texttt {#1} } -\NewDocumentCommand \cmd { m } { \texttt { \token_to_str:N #1 } \@ } -\NewDocumentCommand \cs { m } { \texttt { \token_to_str:c {#1} } \@ } -\NewDocumentCommand \marg { m } +\NewDocumentCommand \Value { >{ \TrimSpaces } m } { \texttt {#1} } +\NewDocumentCommand \cmd { >{ \TrimSpaces } m } + { \texttt { \token_to_str:N #1 } \@ } +\NewDocumentCommand \cs { >{ \TrimSpaces } m } + { \texttt { \token_to_str:c {#1} } \@ } +\NewDocumentCommand \marg { >{ \TrimSpaces } m } { \allowbreak \texttt { \c_left_brace_str } @@ -63,7 +68,7 @@ $\rangle$ \texttt { \c_right_brace_str } } -\NewDocumentCommand \oarg { m } +\NewDocumentCommand \oarg { >{ \TrimSpaces } m } { \allowbreak \texttt { [ } @@ -73,16 +78,16 @@ \texttt { ] } } \NewDocumentCommand \sarg { } { $\langle$ \texttt {*} $\rangle$ } -\NewDocumentCommand \meta { m } +\NewDocumentCommand \meta { >{ \TrimSpaces } m } { $\langle$ { \normalfont \itshape #1 } $\rangle$ } -\NewDocumentCommand \cls { m } { \textsf {#1} } -\NewDocumentCommand \env { m } { \texttt {#1} } -\NewDocumentCommand \pkg { m } { \textsf {#1} } -\NewDocumentCommand \latin { m } { \textit {#1} } +\NewDocumentCommand \cls { >{ \TrimSpaces } m } { \textsf {#1} } +\NewDocumentCommand \env { >{ \TrimSpaces } m } { \texttt {#1} } +\NewDocumentCommand \pkg { >{ \TrimSpaces } m } { \textsf {#1} } +\NewDocumentCommand \latin { >{ \TrimSpaces } m } { \textit {#1} } % PAGE STYLE @@ -91,19 +96,28 @@ \dim_log:N \c_beery_alphabet_dim \dim_const:Nn \c_beery_big_dim { \l_fontscale_normalsize_baselineskip_skip } -\dim_const:Nn \c_beery_medium_dim { \c_beery_big_dim / 2 } -\dim_const:Nn \c_beery_small_dim { \c_beery_big_dim / 4 } +\dim_const:Nn \c_beery_medium_dim + { \fp_to_dim:n { \dim_to_fp:n { \c_beery_big_dim / 2 } } } +\dim_const:Nn \c_beery_small_dim + { \fp_to_dim:n { \dim_to_fp:n { \c_beery_big_dim / 4 } } } +\dim_log:N \c_beery_big_dim +\dim_log:N \c_beery_medium_dim +\dim_log:N \c_beery_small_dim + \skip_const:Nn \c_beery_big_skip { \c_beery_big_dim - plus \dim_eval:n { \c_beery_big_dim / 2 } - minus \dim_eval:n { \c_beery_big_dim / 3 } + plus \fp_to_dim:n { \dim_to_fp:n { \c_beery_big_dim } / 2 } + minus \fp_to_dim:n { \dim_to_fp:n { \c_beery_big_dim } / 3 } } \skip_const:Nn \c_beery_medium_skip { \c_beery_big_skip / 2 } \skip_const:Nn \c_beery_small_skip { \c_beery_big_skip / 4 } \skip_set_eq:NN \bigskipamount \c_beery_big_skip \skip_set_eq:NN \medskipamount \c_beery_medium_skip \skip_set_eq:NN \smallskipamount \c_beery_small_skip +\skip_log:N \c_beery_big_skip +\skip_log:N \c_beery_medium_skip +\skip_log:N \c_beery_small_skip \raggedbottom \int_set:Nn \vbadness { 100 } @@ -115,10 +129,10 @@ { a4paper , textwidth = - \dim_eval:n { \fp_to_dim:n { \c_e_fp * \c_beery_alphabet_dim } } + \fp_to_dim:n { \c_e_fp * \dim_to_fp:n { \c_beery_alphabet_dim } } , textheight = - \dim_eval:n - { \fp_to_dim:n { 1.6180 * \c_e_fp * \c_beery_alphabet_dim } } + \fp_to_dim:n + { 1.6180 * \c_e_fp * \dim_to_fp:n { \c_beery_alphabet_dim } } , heightrounded , centering , headheight = \l_fontscale_footnotesize_baselineskip_skip @@ -131,7 +145,7 @@ \RequirePackage { fancyhdr } \pagestyle { fancy } \fancyhf { } -\cs_set:Npn \headrulewidth { 0pt } +\renewcommand \headrulewidth { 0pt } \fancyfoot [ C ] { \footnotesize \thepage \c_space_tl of~ \pageref { LastPage } } @@ -139,8 +153,7 @@ \nonfrenchspacing \linespread { 1 } -\skip_set_eq:NN \parskip \c_beery_medium_skip -\dim_zero:N \parindent +\RequirePackage [ skip = \c_beery_medium_skip ] { parskip } \RequirePackage [ raggedrightboxes ] { ragged2e } \skip_set:Nn \RaggedRightRightskip { 0pt plus 0.5 \linewidth } \dim_zero:N \RaggedRightParindent @@ -164,21 +177,19 @@ \titlespacing* \section % section { 0pt } % indent { - - \parskip - + \c_beery_big_dim - plus \fp_eval:n { 1 / 2 * 4 } \c_beery_big_dim - minus \fp_eval:n { 1 / 3 / 4 } \c_beery_big_dim + \c_beery_big_dim + plus \fp_to_dim:n { 1 / 2 * 4 * \dim_to_fp:n { \c_beery_big_dim } } + minus \fp_to_dim:n { 1 / 3 / 4 * \dim_to_fp:n { \c_beery_big_dim } } } % before - { - \parskip + \c_beery_medium_skip } % after + { \c_beery_medium_skip } % after \titlespacing* \subsection { 0pt } { - - \parskip - + \fp_eval:n { 4 / 3 } \c_beery_medium_dim - plus \fp_eval:n { 1 / 2 * 4 } \c_beery_medium_dim - minus \fp_eval:n { 1 / 3 / 4 } \c_beery_medium_dim + \fp_to_dim:n { 4 / 3 * \dim_to_fp:n { \c_beery_medium_dim } } + plus \fp_to_dim:n { 1 / 2 * 4 * \dim_to_fp:n { \c_beery_medium_dim } } + minus \fp_to_dim:n { 1 / 3 / 4 * \dim_to_fp:n { \c_beery_medium_dim } } } - { - \parskip + \c_beery_medium_skip } + { \c_beery_medium_skip } \titleformat \section % section [ block ] % shape @@ -210,7 +221,11 @@ , itemsep = 0pt } \setlist [ itemize , 1 ] { label = \textbullet } +\setlist [ itemize , 2 ] { label = \ScaleTextBullets { 2 } } +\setlist [ itemize , 3 ] { label = \ScaleTextBullets { 3 } } \setlist [ enumerate , 1 ] { label = \arabic* . } +\setlist [ enumerate , 2 ] { label = \theenumi \arabic* . } +\setlist [ enumerate , 3 ] { label = \theenumii \arabic* . } % list headings % https://tex.stackexchange.com/questions/2644/how-to-prevent-a-page-break-before-an-itemize-list @@ -240,8 +255,9 @@ \renewcommand \topfraction { 1 } \skip_set:Nn \textfloatsep { - \c_beery_big_dim plus \c_beery_big_dim minus - \dim_eval:n { \c_beery_big_dim / 3 } + \c_beery_big_dim + plus \c_beery_big_dim + minus \fp_to_dim:n { \dim_to_fp:n { \c_beery_big_dim } / 3 } } \RequirePackage { tabularray } @@ -255,10 +271,14 @@ \dim_set:Nn \footnotesep { \f@linespread \footnotesep } \coffin_new:N \l__beery_footnote_coffin % 1.2 = baselineskip-size-ratio +% \f@linespread must not be empty here \dim_const:Nn \c_beery_footnote_baselineheight_dim { \fp_to_dim:n - { ( 1.2 * \f@linespread - 1 ) * \l_fontscale_footnotesize_size_dim } + { + ( 1.2 * \f@linespread - 1 ) + * \dim_to_fp:n { \l_fontscale_footnotesize_size_dim } + } } \RenewDocumentCommand \@makefntext { +m } { @@ -270,7 +290,8 @@ { \fp_to_dim:n { - ( 1 - \l_fontscale_footnotesize_scale_fp ) / 2 * \textwidth + ( 1 - \l_fontscale_footnotesize_scale_fp ) / 2 + * \dim_to_fp:n { \textwidth } } } \dim_set_eq:NN \rightmargin \leftmargin diff --git a/Master/texmf-dist/doc/latex/fontscale/fontscale-table-classic.tex b/Master/texmf-dist/doc/latex/fontscale/fontscale-table-classic.tex index 37e31d07844..f2146b1bf3c 100644 --- a/Master/texmf-dist/doc/latex/fontscale/fontscale-table-classic.tex +++ b/Master/texmf-dist/doc/latex/fontscale/fontscale-table-classic.tex @@ -1,4 +1,4 @@ -\ProvidesFile{fontscale-table-classic.tex}[2024-12-22] +\ProvidesFile{fontscale-table-classic.tex}[2025-01-03] \begin{table} \centering diff --git a/Master/texmf-dist/doc/latex/fontscale/fontscale-table-font-steps.tex b/Master/texmf-dist/doc/latex/fontscale/fontscale-table-font-steps.tex index ecf029b48f1..4874cf00bec 100644 --- a/Master/texmf-dist/doc/latex/fontscale/fontscale-table-font-steps.tex +++ b/Master/texmf-dist/doc/latex/fontscale/fontscale-table-font-steps.tex @@ -1,4 +1,4 @@ -\ProvidesFile{fontscale-table-font-steps.tex}[2024-12-22] +\ProvidesFile{fontscale-table-font-steps.tex}[2025-01-03] \begin{table} \centering diff --git a/Master/texmf-dist/doc/latex/fontscale/fontscale-table-musical.tex b/Master/texmf-dist/doc/latex/fontscale/fontscale-table-musical.tex index a97a66e5966..cc8a2eb6aa6 100644 --- a/Master/texmf-dist/doc/latex/fontscale/fontscale-table-musical.tex +++ b/Master/texmf-dist/doc/latex/fontscale/fontscale-table-musical.tex @@ -1,4 +1,4 @@ -\ProvidesFile{fontscale-table-musical.tex}[2024-12-22] +\ProvidesFile{fontscale-table-musical.tex}[2025-01-03] \begin{table} \centering diff --git a/Master/texmf-dist/doc/latex/fontscale/fontscale.pdf b/Master/texmf-dist/doc/latex/fontscale/fontscale.pdf Binary files differindex 6274624043d..0b8dfcfc013 100644 --- a/Master/texmf-dist/doc/latex/fontscale/fontscale.pdf +++ b/Master/texmf-dist/doc/latex/fontscale/fontscale.pdf diff --git a/Master/texmf-dist/doc/latex/fontscale/fontscale.tex b/Master/texmf-dist/doc/latex/fontscale/fontscale.tex index 3d3500fec02..918cc148aef 100644 --- a/Master/texmf-dist/doc/latex/fontscale/fontscale.tex +++ b/Master/texmf-dist/doc/latex/fontscale/fontscale.tex @@ -14,7 +14,7 @@ A flexible interface for setting font sizes Oliver Beery -Version 3.0.4\quad{}22 December 2024 +Version 3.0.5\quad{}3 January 2025 \section{Introduction} @@ -34,7 +34,7 @@ Version 3.0.4\quad{}22 December 2024 \item Provides expandable commands that expand to the current font step, font scale, font size, or font baselineskip (\S\ref{subsec:expandable}). \item - Provides additional font size commands, including setting the font size by setting the font step or font scale and setting the font size relative to the current font size using more powerful tools than the \pkg{scalefnt} and \pkg{relsize} packages (\S\ref{subsec:fontsize}). + Provides additional font size commands, including setting the font size by setting the font step or font scale and setting the font size relative to the current font size using more robust tools than the \pkg{scalefnt} and \pkg{relsize} packages (\S\ref{subsec:fontsize}). \item For \LaTeX3 programmers, this package defines public \pkg{expl3} variables that store the font step, font scale, font size, and font baselineskip of each font size command from \cs{tiny} to \cs{Huge} and the current font step, font scale, font size, and font baselineskip (\S\ref{subsec:publicexpl3}). \end{itemize} @@ -63,7 +63,11 @@ When loaded, this package uses \cs{normalsize} after defining and initializing t Many \LaTeX{} document classes have a font size option (e.g.\ \Key{10pt}, \Key{11pt}, \Key{12pt}) which not only changes the set of document font sizes, but also modifies additional settings such as the page layout and vertical spacing which were specifically designed to work with those font sizes. For this reason, you may want to set the document class font size option close to the font size of \cs{normalsize} set by this package. -\listheading{This package defines each font size command from \cs{tiny} to \cs{Huge} using the low\-/level font commands \cs{fontsize} and \cs{selectfont}\---they have no additional functionality beyond that of \cs{fontsize} and \cs{selectfont}, except that they:} +\listheading + { + This package defines each font size command from \cs{tiny} to \cs{Huge} using \cs{fontsize} and \cs{selectfont}. + They have no additional functionality beyond that of \cs{fontsize} and \cs{selectfont}, except that they: + } \begin{itemize} \item Set the kernel command \cs{@currsize} equal to the font size command. @@ -79,7 +83,7 @@ If the user would like to add this functionality or perhaps other features to th \label{subsec:fontsizeparameters} When using the \pkg{fontscale} package, each font size, including the standard \LaTeX{} font size commands from \cs{tiny} to \cs{Huge}, has a font step, font scale, font size, and font baselineskip. -The latter two parameters are the familiar first and second arguments to the low\-/level font command \cs{fontsize}\marg{dimen}\marg{skip}. +The latter two parameters are the familiar first and second arguments to \cs{fontsize}\marg{dimen}\marg{skip}. (The font baselineskip, stored in the kernel command \cs{f@baselineskip}, should not be confused with the paragraph baselineskip \cs{baselineskip}.) The font scale and font step are different ways of describing the font size. The font scale is the relative font size; the ratio of the font size to \cs{normalsize}, which has a font scale of \num{1}. @@ -116,11 +120,11 @@ The font sizes of the font size commands from \cs{tiny} to \cs{Huge} are initial \begin{mydisplaycode} \Key{typographic-scale} - [% + [ classic-10pt$\,\vert\,$\allowbreak classic-11pt$\,\vert\,$\allowbreak classic-12pt$\,\vert\,$\allowbreak\hspace*{1.5em}% - musical% + musical ] [classic-10pt] \newline @@ -210,7 +214,6 @@ The font sizes can also be set by setting the font scale. The user should take care to ensure that the lengths of the font sizes remain correctly ordered from \cs{tiny} to \cs{Huge}. This is important for typographic and syntactic consistency. If the font sizes are in the wrong order, \cs{fontscalesetup} will issue a warning and some package features may not work correctly. -\pagebreak%manual \begin{mydisplaycode} \Key{\meta{font size command}/scale}[\meta{floating point expression}][\meta{not set}] @@ -219,6 +222,7 @@ If the font sizes are in the wrong order, \cs{fontscalesetup} will issue a warni Sets the font size of \meta{font size command} by setting its font scale to the result of computing the \meta{floating point expression}. Overwrites the font size set by the key \Key{typographic-scale}. The key \Key{normalsize\slash{}scale} is not defined. +\pagebreak%manual \begin{mydisplaycode} \Key{\meta{font size command}/size}[\meta{dimen expression}][\meta{not set}] @@ -284,7 +288,6 @@ Does nothing, except issue a warning, if used in math mode. This package provides expandable commands that expand to the current font step, font scale, font size, or font baselineskip. They can be used for printing or within calculations. -These commands do not rely on the current definition of the kernel commands \cs{f@size} and \cs{f@baselineskip}; instead, they rely on public \pkg{expl3} variables that are set in the \texttt{selectfont} hook (\S\ref{subsec:publicexpl3}). For clarity, \cs{CurrentFontStep} will be explained in detail. If the current font size equals the font size of any font size command from \cs{tiny} to \cs{Huge}, then \cs{CurrentFontStep} expands to the font step of that font size command (Table~\ref{table:fontsteps}). @@ -335,6 +338,7 @@ Sets the font size to the value of \meta{dimen expression}, appending a default Adding the optional star instead sets the font size equal to the current font size + the result of \meta{dimen expression}, appending a default unit of \unit{pt}. Sets the font baselineskip equal to the new font size \texttimes{} the value of the key \Key{baselineskip-size-ratio}. Does nothing, except issue a warning, if used in math mode. +\pagebreak%manual \begin{mydisplaycode} \cs{ScaleFont} \marg{floating point expression} @@ -342,7 +346,9 @@ Does nothing, except issue a warning, if used in math mode. Sets the font size equal to the current font size \texttimes{} the result of computing the \meta{floating point expression}. Sets the font baselineskip equal to the current font baselineskip \texttimes{} the result of computing the \meta{floating point expression}. +The new font baselineskip has no stretch and shrink components. Does nothing, except issue a warning, if used in math mode. +This command is intended as a more robust alternative to \cs{scalefont} from the \pkg{scalefnt} package. \begin{mydisplaycode} \cs{SetFontSizeBaselineskip} \marg{dimen expression} \marg{skip expression} @@ -351,6 +357,7 @@ Does nothing, except issue a warning, if used in math mode. Sets the font size to the value of \meta{dimen expression}, appending a default unit of \unit{pt}. Sets the font baselineskip to the value of \meta{skip expression}, appending a default unit of \unit{pt}. Does nothing, except issue a warning, if used in math mode. +This command is intended as a more robust alternative to \cs{fontsize} + \cs{selectfont}. \subsection{Setting only the font baselineskip} \label{subsec:setfontbaselineskip} @@ -386,6 +393,7 @@ The printed font step will be left blank if it is undefined (as explained for \c Prints the font step, font scale, font size, and font baselineskip of each font size command from \cs{tiny} to \cs{Huge}. The printed font scale is rounded to \num{5} decimal places. To print with more decimal places, use \cs{CurrentFontScale} (\S\ref{subsec:expandable}). +Cannot be used in math mode. \begin{mydisplaycode} \cs{PrintSampleText} \sarg{} \marg{text} @@ -394,6 +402,7 @@ To print with more decimal places, use \cs{CurrentFontScale} (\S\ref{subsec:expa Prints \meta{text} in each font size ordered from \cs{tiny} to \cs{Huge} each followed by a paragraph break. \meta{text} can contain \cs{par} tokens. Adding the optional star reverses the order of the font sizes. +Cannot be used in math mode. One useful way of printing sample text is \cs{PrintSampleText}\allowbreak\texttt{\{\cs{PrintFontSizeCommand}:\allowbreak\textvisiblespace\allowbreak\cs{PrintFontSizeParameters}\}}. \begin{mydisplaycode} @@ -403,6 +412,7 @@ One useful way of printing sample text is \cs{PrintSampleText}\allowbreak\texttt Tests if the current font size equals the font size of any font size command from \cs{tiny} to \cs{Huge}. If so, prints the name of that font size command, including the backslash character. If not, prints \enquote{\string\undefined}. +Cannot be used in math mode. \section{Programming} @@ -419,7 +429,8 @@ This section documents the \pkg{expl3} programming support provided by the \pkg{ } \label{subsec:textpurify} -\cs{text_purify:n} will correctly remove the formatting commands defined by this package, including the commands documented in \S\ref{subsec:fontscalesetup}, \S\ref{subsec:fontsize}, and \S\ref{subsec:setfontbaselineskip}. +\cs{text_purify:n} will correctly remove the formatting commands defined by this package. +This includes the commands documented in \S\ref{subsec:fontscalesetup}, \S\ref{subsec:fontsize}, and \S\ref{subsec:setfontbaselineskip}. \subsection{Public functions and variables} \label{subsec:publicexpl3} @@ -445,7 +456,7 @@ Stores the font step, font scale, font size, and font baselineskip of each font Exception: \cs{l_fontscale_normalsize_scale_fp} is not defined. The font scale of \cs{normalsize} is stored in \cs{c_fontscale_normalsize_scale_fp}. -These variables, excluding the constants, are set by \cs{fontscalesetup}. +The local variables are set by \cs{fontscalesetup}. \begin{mydisplaycode} \cs{l_fontscale_step_fp} diff --git a/Master/texmf-dist/doc/latex/kaytannollista-latexia/kaytannollista-latexia.pdf b/Master/texmf-dist/doc/latex/kaytannollista-latexia/kaytannollista-latexia.pdf Binary files differindex 92e9769f85b..a1671381778 100644 --- a/Master/texmf-dist/doc/latex/kaytannollista-latexia/kaytannollista-latexia.pdf +++ b/Master/texmf-dist/doc/latex/kaytannollista-latexia/kaytannollista-latexia.pdf diff --git a/Master/texmf-dist/doc/latex/kaytannollista-latexia/luku-asetukset.tex b/Master/texmf-dist/doc/latex/kaytannollista-latexia/luku-asetukset.tex index b9bfa55d7d3..d0ae30ef6bd 100644 --- a/Master/texmf-dist/doc/latex/kaytannollista-latexia/luku-asetukset.tex +++ b/Master/texmf-dist/doc/latex/kaytannollista-latexia/luku-asetukset.tex @@ -1904,7 +1904,7 @@ kirjainperheeltä pois, kun antaa arvoksi \koodi{None}. Tavutusta käsitellään perusteellisemmin luvussa \ref{luku/tavutus}. Tasalevyinen kirjainperhe (\komento{setmonofont}) toimii oletuksena -hieman eri tavalla. Niissä muun muassa ei ole lainausmerkkien ja +hieman eri tavalla. Niissä muun muassa eivät ole lainausmerkkien ja ajatusviivojen kirjoittamiseen tarkoitetut Tex\-/ligatuurit päällä. Oletusasetuksia ovat muun muassa seuraavat: @@ -2636,7 +2636,7 @@ Komennon argumentiksi eli aaltosulkeiden sisään kirjoitetaan sanoja, jotka erotetaan toisistaan sanaväleillä. Sanoihin kirjoitetaan yhdysmerkki niihin kohtiin, joista sanan katkaiseminen on sallittua. Jos yhdysmerkkiä ei ole, sanaa ei tavuteta mistään kohdasta. Jos taas sana -on yhdyssana ja sen osien väliin kuuluu on yhdysmerkki, ei sen tavutusta +on yhdyssana ja sen osien väliin kuuluu yhdysmerkki, ei sen tavutusta voi käsitellä tällä komennolla. Luvussa \ref{luku/tavutuksen-merkit} kerrotaan muita tapoja. @@ -2757,7 +2757,8 @@ on esimerkkejä tavutusvihjeiden, yhdysmerkin ja ajatusviivan sekä \shorthandsyhdysmerkki % Polyglossian tulevassa versiossa (jälkeen 30.12.2023). -% \item [\textquotedbl=] Sama kuin edellinen (\koodi{\textquotedbl-}). +% \item [\textquotedbl=] Sama kuin edellinen (\koodi{\textquotedbl-}), +% mutta ilmeisesti estää tavutuksen kaikkialta. \shorthandspystyviiva @@ -2812,6 +2813,11 @@ on esimerkkejä tavutusvihjeiden, yhdysmerkin ja ajatusviivan sekä & -ai\tavukohta ka & ei sitovan yhdysmerkin jälkeen \\ + % Ilmeisesti Polyglossian versioissa 30.12.2024 jälkeen. + % \koodi{\textquotedbl=aika} + % & -aika + % & ei tavutuskohtia \\ + \bottomrule \end{tabular} }{ @@ -2851,13 +2857,16 @@ asetetaan sanan vasemman ja oikean reunan tavuttamaton merkkimäärä. \noindent Suomen kielellä vaihtoehtoisen tavutussäännöstön voi kytkeä päälle käyttämällä kielen asettamisen yhteydessä valitsinta -\koodi{schoolhyphens}. Tämä sallii tavutuksen kaikista mahdollisista +\koodi{hyphens=\katk school}.\footnote{Vanhemmissa + \paketti{polyglossia}\-/ paketin versioissa valitsimen + \koodi{hyphens=school} sijasta käytettiin valitsinta + \koodi{schoolhyphens}.} Tämä sallii tavutuksen kaikista mahdollisista kohdista. Lisätietoa suomen tavutuksen erityispiirteistä on luvussa \ref{luku/suomi-tavutus}. \komentoi{setdefaultlanguage} \begin{koodilohkosis} -\setdefaultlanguage[schoolhyphens]{finnish} +\setdefaultlanguage[hyphens=school]{finnish} \end{koodilohkosis} \subsection{Babel ja tavutus} diff --git a/Master/texmf-dist/doc/latex/kaytannollista-latexia/luku-merkintakieli.tex b/Master/texmf-dist/doc/latex/kaytannollista-latexia/luku-merkintakieli.tex index 7f1e589ae2b..2a7baf1a8c9 100644 --- a/Master/texmf-dist/doc/latex/kaytannollista-latexia/luku-merkintakieli.tex +++ b/Master/texmf-dist/doc/latex/kaytannollista-latexia/luku-merkintakieli.tex @@ -2405,7 +2405,7 @@ mahdollista käyttää värejä ilman etukäteismäärittelyäkin. } Omat värit määritellään komennolla \komento{definecolor}. Se tarvitsee -kolme argumenttia: värin nimen, värimallin ja värikoodin. Komennon +kolme argumenttia: värin nimen, värimallin ja värin parametrit. Komennon argumenttien rakenne on seuraavanlainen: \komentoi{definecolor} diff --git a/Master/texmf-dist/doc/latex/kaytannollista-latexia/luku-valmistautuminen.tex b/Master/texmf-dist/doc/latex/kaytannollista-latexia/luku-valmistautuminen.tex index eda9ffd6b4e..80e52eac18d 100644 --- a/Master/texmf-dist/doc/latex/kaytannollista-latexia/luku-valmistautuminen.tex +++ b/Master/texmf-dist/doc/latex/kaytannollista-latexia/luku-valmistautuminen.tex @@ -106,7 +106,7 @@ kääntäjällä: toiset Lualatexilla, toiset Xelatexilla. Jotta kaikki olisi mahdollisimman sekavaa, \emph{Latex} toimii myös yleisnimityksenä tälle kaikelle. Se esiintyy ilmauksissa kuten -''Toteutin dokumentin Latexilla'' tai ''Tämä artikkeli on tehty +''toteutin dokumentin Latexilla'' tai ''tämä artikkeli on tehty Latexilla''. Ilmaukset sitten tarkoittavat suunnilleen seuraavanlaista: Henkilöllä on asennettuna tietokoneelle jokin Latex\-/ jakelukokonaisuus (kuten Tex Live). Hän on kirjoittanut tekstieditorilla (kuten diff --git a/Master/texmf-dist/doc/latex/kaytannollista-latexia/tavutusvihjeet.tex b/Master/texmf-dist/doc/latex/kaytannollista-latexia/tavutusvihjeet.tex index 68c0120943c..b587cad4602 100644 --- a/Master/texmf-dist/doc/latex/kaytannollista-latexia/tavutusvihjeet.tex +++ b/Master/texmf-dist/doc/latex/kaytannollista-latexia/tavutusvihjeet.tex @@ -1,841 +1,844 @@ \hyphenation{ -ab-so-lute -ab-stract -abst-ra-hoin-ti -abst-rak-te-ja -abst-rak-tio-ta-soil-la -abst-rak-tio-ta-sol-la -abst-rak-tio-ta-sol-taan -abst-rak-tio-ta-son -add-bib-re-source -add-con-tents-line -add-font-fea-tures -ad-dress -add-to -add-to-con-tents -add-to-counter -add-to-length -add-vspace -ajan-ilmauk-set -ajan-ilmauk-sia -ajan-ilmaus-ten -ajan-ilmaus-tyy-lit -akuut-ti-ak-sen-tin -ala-in-dek-seil-le -ala-in-dek-se-jä -ala-in-dek-sien -ala-in-dek-si-ko-men-not -ala-in-dek-sik-si -ala-in-dek-sin -ala-in-dek-sit -ala-in-dek-si-toi-min-to -ala-in-dek-siä -ala-osaan -ala-ot-sik-ko -ala-otsi-kon -alku-osaa -angle -an-tiik-va -an-tiik-vaa -an-tiik-vaan -an-tiik-van -an-tiik-va-per-heen -an-tiik-vas-sa -an-tiik-vat -an-tiik-vo-jen -ap-pendix -apu-ohjel-ma -array-back-slash -array-rule-width -array-stretch -ar-ti-cle -as-pect-ra-tio -author -babel -babel-font -babel-hy-phen-ation -babel-pro-vide -babel-short-hands -babel-tags -back-ground -back-mat-ter -base-line-skip -beamer -bf-se-ries -biber -bib-font -bib-hang -bib-init-sep -bib-item -bib-item-sep -bib-latex -bib-name -bib-name-sep -bib-section -bib-sep -big-break -big-skip -big-skip-amount -bi-nää-ri-ope-raat-to-rit -book-marks-num-ber-ed -book-marks-open -book-tabs -bottom-frac-tion -bottom-number -bottom-rule -break -brit-ti-eng-lan-nin -cap-tion -cap-tion-setup -cap-tions-finnish -cen-ter -chapter-lists-gaps -chapter-mark -chapter-name -chng-cntr -cite -clear-double-page -clear-page -cline -clos-ing -cmid-rule -color-box -column-break -column-sep -column-sep-rule -column-width -con-tents-label -con-tents-name -con-tents-page -Con-tin-ued-Float -con-trols -counter-with-in -counter-with-out -cs-quotes -cycle -date-time2 -dbl-float-page-frac-tion -dbl-float-sep -dbl-text-float-sep -dbl-top-frac-tion -dbl-top-number -De-clare-Bib-li-og-ra-phy-Driv-er -De-clare-Float-Font -De-clare-New-Float-Type -De-clare-Sort-ing-Tem-plate -de-fault -default-font-fea-tures -de-fine-col-or -de-scrip-tion -de-si-maa-li-erot-ti-mek-si -de-si-maa-li-erot-ti-me-na -de-si-maa-li-osa -dia-esi-tyk-siä -dia-esi-tys-ten -dis-able-hy-phen-ation -dis-cre-tionary -dis-play-math -doc-u-ment -doc-u-ment-class -dot-fill -double-rule-sep -DTM-cur-rent-time -DTM-dis-play-date -DTM-dis-play-time -DTM-set-style -DTM-today -ed-i-tor -emer-gen-cy-stretch -empty -en-able-hy-phen-ation -Endash -end-tab-u-larx -en-glish-font -en-glish-font-sf -en-glish-font-tt -en-large-this-page -en-space -enu-mer-ate -enumi -enumii -enumiii -enumiv -equa-tion -erin-omai-sen -ero-tin-merkki-ase-tuk-sen -esit-te-ly-osaan -esit-te-ly-osak-si -esit-te-ly-osas-sa -esi-tys-gra-fii-kan -esi-tys-gra-fiik-kaan -esi-tys-gra-fiik-ka-ohjel-mil-la -ext-dash -false -fancy-hdr -fancyhf -fancy-page-style -fancy-vrb -fbox-rule -fbox-sep -FB-width -fcolor-box -fig-ure -fig-ure-name -fig-ures -first-page-style -float -Float-Bar-rier -float-box -float-page-frac-tion -float-row -float-sep -float-setup -flush-bottom -flush-columns -font-size -font-spec -font-ti-ase-tuk-set -font-ti-ase-tuk-sia -font-ti-ase-tuk-siin -font-ti-ase-tuk-sil-la -font-ti-ase-tuk-sil-le -font-ti-ase-tus -font-ti-ase-tus-ta -font-ti-ase-tus-ten -font-ti-asiat -font-ti-koko-ase-tus-ten -font-ti-koko-komen-to-jen -font-ti-komen-to-ja -foot-misc -foot-note -foot-note-lay-out -foot-note-mark -foot-note-sep -foot-note-text -foot-rule-width -foot-skip -fore-ground -for-eign-lan-guage -frame-box -front-mat-ter -geom-e-try -graph-icx -gra-vis-ak-sen-til-la -gra-vis-ak-sen-tin -gra-vis-ak-sent-ti -greek-font -gro-tes-ki -gro-tes-kia -gro-tes-kiin -gro-tes-kin -hai-tal-li-suus-arvo -hai-tal-li-suus-arvoa -hai-tal-li-suus-ar-voik-si -ha-luaa -hang-ing -hang-para -hang-paras -head-ings -head-rule-width -head-sep -hide-links -hline -hrule-fill -hspace -hyper-ref -hyper-setup -Hyph-dash -hy-phen-ation -if-then-else -ig-nore-spaces -ig-nore-spaces-af-ter-end -imake-idx -in-clude -in-clude-graph-ics -in-col-lec-tion -in-dex -index-name -index-pro-logue -index-setup -index-tools -in-put -in-sti-tute -in-text-sep -in-toc -item-indent -item-ize -item-sep -it-seis-arvo -it-seis-ar-voa -it-shape -jul-kai-su-ajan-koh-taa -jul-kai-su-oh-jel-miin -jul-kai-su-oh-jel-mis-sa -jus-ti-fi-ca-tion -kak-si-osai-nen -kak-sois-alle-vii-vauk-sen -kap-pa-le-ot-sik-ko -kap-pa-le-ot-si-koi-ta -kat-se-lu-oh-jel-mal-la -kel-lon-aika -kel-lon-ajan -kel-lon-ajois-sa -ker-roin-ase-tus-ta -keski-osa -kie-li-ai-nek-seen -kie-li-ase-tuk-set -kie-li-ase-tuk-set-kin -kie-li-ase-tuk-sia -kie-li-ase-tuk-siin -kie-li-ase-tuk-sil-la -kie-li-ase-tuk-sis-ta -kie-li-ase-tus-ten -kie-li-opil-li-sis-ta -kie-li-op-pin-sa -kir-jain-yh-dis-tel-mät -kir-ja-typo-gra-fian -kir-ja-typo-gra-fias-sa -kir-joi-tus-asu -kir-joi-tus-asu-ja -kir-joi-tus-asu-jen -kir-joi-tus-asus-sa -kir-joi-tus-asut -koko-ase-tus -koko-ase-tus-ten -koko-ero -koko-nais-luku-osa -ko-men-to-vaih-to-eh-to -konk-reet-ti-ses-ti -konk-reet-ti-sia -koodi-esi-mer-keis-sä -koodi-esi-merk-kien -kuva-esi-mer-keis-tä -käsi-ala-kir-joi-tus-ta -käsi-ohjel-mien -käyt-töön-oton -käyt-töön-otos-sa -käyt-töön-otto -käyt-töön-ottoa -käyt-töön-ot-toon -kään-täjä-ohjel-mat -kään-täjä-ohjel-milla -label -label-font -label-format -label-sep -label-width -la-don-ta-oh-jei-ta -la-don-ta-oh-jel-man -land-scape -large -La-tex-mk -La-tex-mk-rc -left-hy-phen-min -left-margin -left-mark -let-ter -lett-rine -level -line -line-spread -line-width -list -list-fig-ure-name -list-of -list-of-fig-ures -list-of-tables -list-par-indent -list-table-name -lisä-omi-nai-suu-den -lisä-vaih-to-eh-toa -lohko-lai-naus-ympä-ris-töt -long-table -Lua-latex -lue-tel-ma-ympy-rä -lue-tel-ma-ympy-räl-lä -luku-alueel-la -luku-aluei-ta -luku-arvot -main-mat-ter -make-box -make-index -make-label -make-labels -make-title -margin-note -margin-par -margin-par-push -margin-par-sep -margin-par-width -mark-both -mark-right -Match-Low-er-case -ma-te-ma-tiik-ka-ym-pä-ris-tö-jä -md-se-ries -med-break -med-skip -med-skip-amount -mem-oir -mid-rule -mini-page -mit-ta-yk-sik-kö -mit-ta-yk-si-köi-den -mit-ta-yk-si-köi-tä -mit-ta-yk-si-köl-le -mit-ta-yk-si-kön -mit-ta-yk-si-köt -mk-bib-name-fam-i-ly -mk-bib-name-giv-en -mk-bib-name-pre-fix -mk-bib-name-suf-fix -mk-bib-parens -mk-bib-quote -mp-foot-note -multi-col -multi-cols -multi-col-sep -mul-ti-ple -multi-row -muo-toi-lu-ase-tuk-set -my-head-ings -mää-rit-te-ly-omi-nai-suut-ta -name -name-ref -new-column-type -new-com-mand -new-counter -new-en-vi-ron-ment -new-float -new-font-face -new-font-fam-i-ly -new-ge-om-e-try -new-length -new-line -new-page -ni-men-omaan -no-cite -no-clear-page -no-club -node -no-in-dent -no-indent-after -no-link-url -no-new-page -no-page-break -no-page-color -nor-mal -normal-font -normal-margin-par -normal-size -no-rule -note -no-widow -nuo-li-ak-sen-tit -nyky-aikai-nen -nyky-aikai-set -nyky-aikai-sia -nyky-aika-na -nyky-ajal-le-kin -nyky-ajan -näp-päin-aset-te-lus-sa -obey-cr -oikein-kir-joi-tus-oppaas-sa -ole-tus-ar-vo -ole-tus-ar-voa -ole-tus-ar-voi-hin -ole-tus-ar-vot -ole-tus-ase-tuk-set -ole-tus-ase-tuk-sia -ole-tus-ase-tuk-siin -ole-tus-ase-tuk-sil-la -ole-tus-ase-tus -ole-tus-mitta-yk-sik-kö-nä -ole-tus-yk-sik-kö -ole-tus-yk-sik-köä -one-column -one-side -on-line -open-ing -op-tions -origin -otf-info -other-lan-guage -over-lay -over-left-ar-row -over-right-ar-row -page -page-break -page-color -page-number-ing -page-ref -pages -page-style -paper-height -pa-pe-ri-ar-keis-sa -pa-pe-ri-ark-kei-hin -pa-pe-ri-ark-kia -pa-pe-ri-ark-kien -paper-width -para-graph -par-box -paren-cite -par-ent -par-in-dent -par-sep -par-skip -part-name -par-top-sep -pause -pdf-book-mark -pdf-info -pdf-latex -pdf-lscape -per-page -pe-rus-aja-tus -pe-rus-ase-tuk-set -pe-rus-ase-tuk-sia -pe-rus-asiat -pe-rus-asioi-hin -pe-rus-asioi-ta -pe-rus-osas-ta -pe-rus-osat -pe-rus-osien -pe-rus-osiin -pe-rus-vaih-to-eh-dot -pe-rus-ympä-ris-tö -pg-hy-phen-ation -phan-tom-sec-tion -pien-aak-ko-set -pien-aak-kos-ten -pii-rus-tus-alus-tan -pik-seli-gra-fiik-kaa -place-ins -poly-glos-sia -por-trait -print-bib-li-og-ra-phy -print-index -pro-gram -pro-tect -pro-vide-com-mand -pub-lish-er -pys-ty-asen-nos-sa -pys-ty-asen-toi-sel-la -pys-ty-asen-toi-sen -pää-asial-li-nen -pää-asial-li-sek-si -pää-asial-li-sen -pää-asias-sa -pää-ot-sik-ko -pääte-oh-jel-mien -quo-ta-tion -quote -ragged-bottom -ragged-columns -ragged-left -ragged-right -raise-box -real-scripts -ref-name -ref-step-counter -reg-tot-counter -Ren-der-er -re-new-com-mand -re-new-en-vi-ron-ment -re-size-box -re-store-cr -re-store-ge-om-e-try -reverse-margin-par -right-hy-phen-min -right-margin -right-mark -rivin-osan -rm-fam-i-ly -ro-tate-box -rule -sak-ko-ar-voa -sa-man-aikai-ses-ti -sar-kain-ase-tuk-sia -Scale -scale-box -school-hy-phens -sc-shape -sec-num-depth -sec-tion -sec-tion-break -sec-tion-mark -see-also -select-font -select-lan-guage -set-beamer-color -set-beamer-font -set-beamer-tem-plate -set-cite-style -set-counter -set-default-lan-guage -set-lang-hyphen-mins -set-length -set-main-font -set-math-font -set-mono-font -set-no-club -set-no-widow -set-sans-font -set-to-depth -set-to-height -set-to-width -sf-fam-i-ly -short-en -show-hy-phen-ation -show-seconds -sig-na-ture -si-joit-te-lu-ase-tuk-set -si-joit-te-lu-ase-tuk-sia -single-line-check -sir-kum-flek-si -sir-kum-flek-sia -sir-kum-flek-sin -si-sen-nys-ase-tuk-set -si-sen-nys-asiat -si-säl-tö-ele-ment-tien -sivu-alue -si-vu-alueel-le -si-vu-alueen -si-vu-aluei-den -sivu-koko-ase-tuk-sia -skaa-laus-ar-gu-ment-ti -skaa-laus-ase-tus -slides -slope -sl-shape -small -small-break -small-skip -small-skip-amount -space-skip -split-index -stable -step-counter -still-sans-serif-large -still-sans-serif-math -still-sans-serif-small -still-sans-serif-text -style -sub-para-graph -sub-sec-tion -sub-section-mark -sub-sub-sec-tion -suo-jaus-omi-nai-suus -suur-aak-kos-ten -sw-shape -sym-bo-li-esi-tys -säh-kö-pos-ti-osoi-te -säh-kö-pos-ti-osoit-tei-den -säh-kö-pos-ti-osoit-tei-ta -tab-bing -tab-bing-sep -tab-col-sep -table -table-name -table-of-con-tents -tables -tabu-lar -tabu-larx -tabu-lary -tau-luk-ko-ympä-ris-tö -tau-luk-ko-ympä-ris-tön -tau-luk-ko-ympä-ris-töt -tau-luk-ko-ympä-ris-töä -ta-van-omais-ten -tavu-tus-algo-rit-mia -tavu-tus-vaih-to-eh-to -teks-ti-alue -teks-ti-alueen -teks-ti-aluees-ta -teks-ti-edi-to-ria -teks-ti-edi-to-rien -teks-ti-edi-to-ril-la -teks-ti-edi-to-rin -teks-ti-edi-to-ris-sa -teks-ti-edi-to-ris-sa-kin -teks-ti-edi-to-ris-ta -teks-ti-ele-men-til-tä -teks-ti-ele-men-tin -teks-ti-ele-ment-te-jä -teks-ti-ele-ment-ti -teks-ti-ele-ment-tien -teks-ti-ele-ment-tiin -teks-tin-kä-sit-tely-ohjel-mat -teks-tin-kä-sit-tely-ohjel-mis-sa -teks-tin-osan -teks-ti-osa -teks-ti-osaan -teks-ti-osan -teks-ti-osas-sa -text-back-slash -text-block -text-block-ori-gin -text-bullet -text-cite -text-color -text-comp-word-mark -text-el-lip-sis -text-en-glish -text-float-sep -text-font -text-frac-tion -text-greek -text-height -text-pos -text-quote-dbl -text-quote-single -text-sub-script -text-super-script -text-width -the-author -the-bib-li-og-ra-phy -the-chapter -the-date -the-equa-tion -the-foot-note -the-mp-foot-note -the-page -the-section -the-sub-section -the-table -the-title -this-page-style -tie-teen-aloil-la -tie-to-kone-avus-teis-ta -tie-to-kone-oh-jel-ma -tie-to-kone-oh-jel-mal-le -tie-to-kone-oh-jel-mas-ta -tie-to-kone-oh-jel-mat -tie-to-kone-oh-jel-mia -tii-vis-tel-mä-osan -tikz-pic-ture -title -title-con-tents -title-for-mat -title-label -title-rule -title-sec -title-spacing -title-toc -toc-depth -toc-level -top-frac-tion -top-number -top-rule -top-sep -total -total-height -total-number -tot-count -tot-pages -tot-value -tt-fam-i-ly -two-column -two-side -ty-po-gra-fia -ty-po-gra-fiaa -ty-po-gra-fiaan -ty-po-gra-fian -ty-po-gra-fias-sa -ty-po-gra-fias-ta -ty-po-gra-fi-seen -ty-po-gra-fi-sen -ty-po-gra-fi-se-na -ty-po-gra-fi-ses-ta -ty-po-gra-fi-ses-ti -ty-po-gra-fi-set -ty-po-gra-fi-sia -ty-po-gra-fi-sin -ty-po-gra-fi-sis-ta -ty-po-gra-fis-ten -tyy-li-ase-tuk-set -tyy-li-ase-tus -tyy-li-ase-tus-ten -tär-keys-as-teil-le -tär-keys-as-tei-sia -täys-ym-py-rän -UL-depth -ulko-asu -ulko-asua -ulko-asun -ulko-asus-ta -ulko-asus-taan -ulko-asu-tee-mo-ja -ulko-asuun -UL-thick-ness -under-line -Uni-code -Uni-coden -url-style -use-color-theme -use-counter -use-font-theme -use-inner-theme -use-outer-theme -use-pack-age -use-theme -vaih-to-eh-don -vaih-to-eh-dot -vaih-to-eh-to -vaih-to-eh-toi-ses-ti -vaih-to-eh-to-ja -vaih-to-eh-to-jen -vaih-to-eh-to-na -vai-ku-tus-alue -vai-ku-tus-alueena -vai-ku-tus-aluet-ta -value -va-paa-eh-toi-sia -va-paa-eh-tois-ta -vas-taan-otta-jal-le -vas-taan-otta-jil-le -vek-tori-gra-fiik-kaa -vek-tori-gra-fiik-ka-font-te-ja -vek-tori-gra-fiik-ka-ku-viot -ver-ba-tim -verse -vir-he-il-moi-tuk-seen -vir-he-il-moi-tuk-sen -vir-he-il-moi-tus -vir-he-il-moi-tus-ta -vline -vol-ume -vspace -vä-him-mäis-etäi-syys -väli-ai-kai-ses-ti -väli-ai-kais-tie-dos-toa -väli-ai-kais-tie-dos-to-jen -väli-ai-kais-tie-dos-ton -väli-ai-kais-tie-dos-toon -väli-ai-kais-tie-dos-tot -väli-ot-si-kois-sa -väli-ot-si-kois-ta -väli-ot-si-kon -väli-ot-si-kot -vä-ri-asioi-ta -wall-cal-en-dar -with-in -wrap-fig -wrap-fig-ure -wrap-table -Xe-latex -yh-dys-osas-ta -yh-dys-osien -yh-tä-lö-esi-mer-kin -yleis-esi-merk-ki -yleis-ohje -yleis-yhdys-merk-ki -ylä-in-dek-si -ylä-in-dek-si-nume-roi-den -ylä-in-dek-si-nume-rois-ta -ylä-in-dek-si-nume-rol-la -ylä-in-dek-si-nume-ron -ylä-in-dek-sit -ylä-osaan -ylä-osas-sa -ään-tö-asu + ab-so-lute + ab-stract + abst-ra-hoin-ti + abst-rak-te-ja + abst-rak-tio-ta-soil-la + abst-rak-tio-ta-sol-la + abst-rak-tio-ta-sol-taan + abst-rak-tio-ta-son + add-bib-re-source + add-con-tents-line + add-font-fea-tures + ad-dress + add-to + add-to-con-tents + add-to-counter + add-to-length + add-vspace + ajan-ilmauk-set + ajan-ilmauk-sia + ajan-ilmaus-ten + ajan-ilmaus-tyy-lit + akuut-ti-ak-sen-tin + ala-in-dek-seil-le + ala-in-dek-se-jä + ala-in-dek-sien + ala-in-dek-si-ko-men-not + ala-in-dek-sik-si + ala-in-dek-sin + ala-in-dek-sit + ala-in-dek-si-toi-min-to + ala-in-dek-siä + ala-osaan + ala-ot-sik-ko + ala-otsi-kon + alku-osaa + angle + an-tiik-va + an-tiik-vaa + an-tiik-vaan + an-tiik-van + an-tiik-va-per-heen + an-tiik-vas-sa + an-tiik-vat + an-tiik-vo-jen + ap-pendix + apu-ohjel-ma + array-back-slash + array-rule-width + array-stretch + ar-ti-cle + as-pect-ra-tio + author + babel + babel-font + babel-hy-phen-ation + babel-pro-vide + babel-short-hands + babel-tags + back-ground + back-mat-ter + base-line-skip + beamer + bf-se-ries + biber + bib-font + bib-hang + bib-init-sep + bib-item + bib-item-sep + bib-latex + bib-name + bib-name-sep + bib-section + bib-sep + big-break + big-skip + big-skip-amount + bi-nää-ri-ope-raat-to-rit + book-marks-num-ber-ed + book-marks-open + book-tabs + bottom-frac-tion + bottom-number + bottom-rule + break + brit-ti-eng-lan-nin + cap-tion + cap-tion-setup + cap-tions-finnish + cen-ter + chapter-lists-gaps + chapter-mark + chapter-name + chng-cntr + cite + clear-double-page + clear-page + cline + clos-ing + cmid-rule + color-box + column-break + column-sep + column-sep-rule + column-width + con-tents-label + con-tents-name + con-tents-page + Con-tin-ued-Float + con-trols + counter-with-in + counter-with-out + cs-quotes + cycle + date-time2 + dbl-float-page-frac-tion + dbl-float-sep + dbl-text-float-sep + dbl-top-frac-tion + dbl-top-number + De-clare-Bib-li-og-ra-phy-Driv-er + De-clare-Float-Font + De-clare-New-Float-Type + De-clare-Sort-ing-Tem-plate + de-fault + default-font-fea-tures + de-fine-col-or + de-scrip-tion + de-si-maa-li-erot-ti-mek-si + de-si-maa-li-erot-ti-me-na + de-si-maa-li-osa + dia-esi-tyk-siä + dia-esi-tys-ten + dis-able-hy-phen-ation + dis-cre-tionary + dis-play-math + doc-u-ment + doc-u-ment-class + dot-fill + double-rule-sep + DTM-cur-rent-time + DTM-dis-play-date + DTM-dis-play-time + DTM-set-style + DTM-today + ed-i-tor + emer-gen-cy-stretch + empty + en-able-hy-phen-ation + Endash + end-tab-u-larx + en-glish-font + en-glish-font-sf + en-glish-font-tt + en-large-this-page + en-space + enu-mer-ate + enumi + enumii + enumiii + enumiv + equa-tion + erin-omai-sen + ero-tin-merkki-ase-tuk-sen + esit-te-ly-osaan + esit-te-ly-osak-si + esit-te-ly-osas-sa + esi-tys-gra-fii-kan + esi-tys-gra-fiik-kaan + esi-tys-gra-fiik-ka-ohjel-mil-la + ext-dash + false + fancy-hdr + fancyhf + fancy-page-style + fancy-vrb + fbox-rule + fbox-sep + FB-width + fcolor-box + fig-ure + fig-ure-name + fig-ures + first-page-style + float + Float-Bar-rier + float-box + float-page-frac-tion + float-row + float-sep + float-setup + flush-bottom + flush-columns + font-size + font-spec + font-ti-ase-tuk-set + font-ti-ase-tuk-sia + font-ti-ase-tuk-siin + font-ti-ase-tuk-sil-la + font-ti-ase-tuk-sil-le + font-ti-ase-tus + font-ti-ase-tus-ta + font-ti-ase-tus-ten + font-ti-asiat + font-ti-koko-ase-tus-ten + font-ti-koko-komen-to-jen + font-ti-komen-to-ja + foot-misc + foot-note + foot-note-lay-out + foot-note-mark + foot-note-sep + foot-note-text + foot-rule-width + foot-skip + fore-ground + for-eign-lan-guage + frame-box + front-mat-ter + geom-e-try + graph-icx + gra-vis-ak-sen-til-la + gra-vis-ak-sen-tin + gra-vis-ak-sent-ti + greek-font + gro-tes-ki + gro-tes-kia + gro-tes-kiin + gro-tes-kin + hai-tal-li-suus-arvo + hai-tal-li-suus-arvoa + hai-tal-li-suus-ar-voik-si + ha-luaa + hang-ing + hang-para + hang-paras + head-ings + head-rule-width + head-sep + hide-links + hline + hrule-fill + hspace + hyper-ref + hyper-setup + Hyph-dash + hy-phen-ation + hyphens + if-then-else + ig-nore-spaces + ig-nore-spaces-af-ter-end + imake-idx + in-clude + in-clude-graph-ics + in-col-lec-tion + in-dex + index-name + index-pro-logue + index-setup + index-tools + in-put + in-sti-tute + in-text-sep + in-toc + item-indent + item-ize + item-sep + it-seis-arvo + it-seis-ar-voa + it-shape + jul-kai-su-ajan-koh-taa + jul-kai-su-oh-jel-miin + jul-kai-su-oh-jel-mis-sa + jus-ti-fi-ca-tion + kak-si-osai-nen + kak-sois-alle-vii-vauk-sen + kap-pa-le-ot-sik-ko + kap-pa-le-ot-si-koi-ta + kat-se-lu-oh-jel-mal-la + kel-lon-aika + kel-lon-ajan + kel-lon-ajois-sa + ker-roin-ase-tus-ta + keski-osa + kie-li-ai-nek-seen + kie-li-ase-tuk-set + kie-li-ase-tuk-set-kin + kie-li-ase-tuk-sia + kie-li-ase-tuk-siin + kie-li-ase-tuk-sil-la + kie-li-ase-tuk-sis-ta + kie-li-ase-tus-ten + kie-li-opil-li-sis-ta + kie-li-op-pin-sa + kir-jain-yh-dis-tel-mät + kir-ja-typo-gra-fian + kir-ja-typo-gra-fias-sa + kir-joi-tus-asu + kir-joi-tus-asu-ja + kir-joi-tus-asu-jen + kir-joi-tus-asus-sa + kir-joi-tus-asut + koko-ase-tus + koko-ase-tus-ten + koko-ero + koko-nais-luku-osa + ko-men-to-vaih-to-eh-to + konk-reet-ti-ses-ti + konk-reet-ti-sia + koodi-esi-mer-keis-sä + koodi-esi-merk-kien + kuva-esi-mer-keis-tä + käsi-ala-kir-joi-tus-ta + käsi-ohjel-mien + käyt-töön-oton + käyt-töön-otos-sa + käyt-töön-otto + käyt-töön-ottoa + käyt-töön-ot-toon + kään-täjä-ohjel-mat + kään-täjä-ohjel-milla + label + label-font + label-format + label-sep + label-width + la-don-ta-oh-jei-ta + la-don-ta-oh-jel-man + land-scape + large + La-tex-mk + La-tex-mk-rc + left-hy-phen-min + left-margin + left-mark + let-ter + lett-rine + level + line + line-spread + line-width + list + list-fig-ure-name + list-of + list-of-fig-ures + list-of-tables + list-par-indent + list-table-name + lisä-omi-nai-suu-den + lisä-vaih-to-eh-toa + lohko-lai-naus-ympä-ris-töt + long-table + Lua-latex + lue-tel-ma-ympy-rä + lue-tel-ma-ympy-räl-lä + luku-alueel-la + luku-aluei-ta + luku-arvot + main-mat-ter + make-box + make-index + make-label + make-labels + make-title + margin-note + margin-par + margin-par-push + margin-par-sep + margin-par-width + mark-both + mark-right + Match-Low-er-case + ma-te-ma-tiik-ka-ym-pä-ris-tö-jä + md-se-ries + med-break + med-skip + med-skip-amount + mem-oir + mid-rule + mini-page + mit-ta-yk-sik-kö + mit-ta-yk-si-köi-den + mit-ta-yk-si-köi-tä + mit-ta-yk-si-köl-le + mit-ta-yk-si-kön + mit-ta-yk-si-köt + mk-bib-name-fam-i-ly + mk-bib-name-giv-en + mk-bib-name-pre-fix + mk-bib-name-suf-fix + mk-bib-parens + mk-bib-quote + mp-foot-note + multi-col + multi-cols + multi-col-sep + mul-ti-ple + multi-row + muo-toi-lu-ase-tuk-set + my-head-ings + mää-rit-te-ly-omi-nai-suut-ta + name + name-ref + new-column-type + new-com-mand + new-counter + new-en-vi-ron-ment + new-float + new-font-face + new-font-fam-i-ly + new-ge-om-e-try + new-length + new-line + new-page + ni-men-omaan + no-cite + no-clear-page + no-club + node + no-in-dent + no-indent-after + no-link-url + no-new-page + no-page-break + no-page-color + nor-mal + normal-font + normal-margin-par + normal-size + no-rule + note + no-widow + nuo-li-ak-sen-tit + nyky-aikai-nen + nyky-aikai-set + nyky-aikai-sia + nyky-aika-na + nyky-ajal-le-kin + nyky-ajan + näp-päin-aset-te-lus-sa + obey-cr + oikein-kir-joi-tus-oppaas-sa + ole-tus-ar-vo + ole-tus-ar-voa + ole-tus-ar-voi-hin + ole-tus-ar-vot + ole-tus-ase-tuk-set + ole-tus-ase-tuk-sia + ole-tus-ase-tuk-siin + ole-tus-ase-tuk-sil-la + ole-tus-ase-tus + ole-tus-mitta-yk-sik-kö-nä + ole-tus-yk-sik-kö + ole-tus-yk-sik-köä + one-column + one-side + on-line + open-ing + op-tions + origin + otf-info + other-lan-guage + over-lay + over-left-ar-row + over-right-ar-row + page + page-break + page-color + page-number-ing + page-ref + pages + page-style + paper-height + pa-pe-ri-ar-keis-sa + pa-pe-ri-ark-kei-hin + pa-pe-ri-ark-kia + pa-pe-ri-ark-kien + paper-width + para-graph + par-box + paren-cite + par-ent + par-in-dent + par-sep + par-skip + part-name + par-top-sep + pause + pdf-book-mark + pdf-info + pdf-latex + pdf-lscape + per-page + pe-rus-aja-tus + pe-rus-ase-tuk-set + pe-rus-ase-tuk-sia + pe-rus-asiat + pe-rus-asioi-hin + pe-rus-asioi-ta + pe-rus-osas-ta + pe-rus-osat + pe-rus-osien + pe-rus-osiin + pe-rus-vaih-to-eh-dot + pe-rus-ympä-ris-tö + pg-hy-phen-ation + phan-tom-sec-tion + pien-aak-ko-set + pien-aak-kos-ten + pii-rus-tus-alus-tan + pik-seli-gra-fiik-kaa + place-ins + poly-glos-sia + por-trait + print-bib-li-og-ra-phy + print-index + pro-gram + pro-tect + pro-vide-com-mand + pub-lish-er + pys-ty-asen-nos-sa + pys-ty-asen-toi-sel-la + pys-ty-asen-toi-sen + pää-asial-li-nen + pää-asial-li-sek-si + pää-asial-li-sen + pää-asias-sa + pää-ot-sik-ko + pääte-oh-jel-mien + quo-ta-tion + quote + ragged-bottom + ragged-columns + ragged-left + ragged-right + raise-box + real-scripts + ref-name + ref-step-counter + reg-tot-counter + Ren-der-er + re-new-com-mand + re-new-en-vi-ron-ment + re-size-box + re-store-cr + re-store-ge-om-e-try + reverse-margin-par + right-hy-phen-min + right-margin + right-mark + rivin-osan + rm-fam-i-ly + ro-tate-box + rule + sak-ko-ar-voa + sa-man-aikai-ses-ti + sar-kain-ase-tuk-sia + Scale + scale-box + school + school-hy-phens + sc-shape + sec-num-depth + sec-tion + sec-tion-break + sec-tion-mark + see-also + select-font + select-lan-guage + set-beamer-color + set-beamer-font + set-beamer-tem-plate + set-cite-style + set-counter + set-default-lan-guage + set-lang-hyphen-mins + set-length + set-main-font + set-math-font + set-mono-font + set-no-club + set-no-widow + set-sans-font + set-to-depth + set-to-height + set-to-width + sf-fam-i-ly + short-en + show-hy-phen-ation + show-seconds + sig-na-ture + si-joit-te-lu-ase-tuk-set + si-joit-te-lu-ase-tuk-sia + single-line-check + sir-kum-flek-si + sir-kum-flek-sia + sir-kum-flek-sin + si-sen-nys-ase-tuk-set + si-sen-nys-asiat + si-säl-tö-ele-ment-tien + sivu-alue + si-vu-alueel-le + si-vu-alueen + si-vu-aluei-den + sivu-koko-ase-tuk-sia + skaa-laus-ar-gu-ment-ti + skaa-laus-ase-tus + slides + slope + sl-shape + small + small-break + small-skip + small-skip-amount + space-skip + split-index + stable + step-counter + still-sans-serif-large + still-sans-serif-math + still-sans-serif-small + still-sans-serif-text + style + sub-para-graph + sub-sec-tion + sub-section-mark + sub-sub-sec-tion + suo-jaus-omi-nai-suus + suur-aak-kos-ten + sw-shape + sym-bo-li-esi-tys + säh-kö-pos-ti-osoi-te + säh-kö-pos-ti-osoit-tei-den + säh-kö-pos-ti-osoit-tei-ta + tab-bing + tab-bing-sep + tab-col-sep + table + table-name + table-of-con-tents + tables + tabu-lar + tabu-larx + tabu-lary + tau-luk-ko-ympä-ris-tö + tau-luk-ko-ympä-ris-tön + tau-luk-ko-ympä-ris-töt + tau-luk-ko-ympä-ris-töä + ta-van-omais-ten + tavu-tus-algo-rit-mia + tavu-tus-ase-tuk-sia + tavu-tus-vaih-to-eh-to + teks-ti-alue + teks-ti-alueen + teks-ti-aluees-ta + teks-ti-edi-to-ria + teks-ti-edi-to-rien + teks-ti-edi-to-ril-la + teks-ti-edi-to-rin + teks-ti-edi-to-ris-sa + teks-ti-edi-to-ris-sa-kin + teks-ti-edi-to-ris-ta + teks-ti-ele-men-til-tä + teks-ti-ele-men-tin + teks-ti-ele-ment-te-jä + teks-ti-ele-ment-ti + teks-ti-ele-ment-tien + teks-ti-ele-ment-tiin + teks-tin-kä-sit-tely-ohjel-mat + teks-tin-kä-sit-tely-ohjel-mis-sa + teks-tin-osan + teks-ti-osa + teks-ti-osaan + teks-ti-osan + teks-ti-osas-sa + text-back-slash + text-block + text-block-ori-gin + text-bullet + text-cite + text-color + text-comp-word-mark + text-el-lip-sis + text-en-glish + text-float-sep + text-font + text-frac-tion + text-greek + text-height + text-pos + text-quote-dbl + text-quote-single + text-sub-script + text-super-script + text-width + the-author + the-bib-li-og-ra-phy + the-chapter + the-date + the-equa-tion + the-foot-note + the-mp-foot-note + the-page + the-section + the-sub-section + the-table + the-title + this-page-style + tie-teen-aloil-la + tie-to-kone-avus-teis-ta + tie-to-kone-oh-jel-ma + tie-to-kone-oh-jel-mal-le + tie-to-kone-oh-jel-mas-ta + tie-to-kone-oh-jel-mat + tie-to-kone-oh-jel-mia + tii-vis-tel-mä-osan + tikz-pic-ture + title + title-con-tents + title-for-mat + title-label + title-rule + title-sec + title-spacing + title-toc + toc-depth + toc-level + top-frac-tion + top-number + top-rule + top-sep + total + total-height + total-number + tot-count + tot-pages + tot-value + tt-fam-i-ly + two-column + two-side + ty-po-gra-fia + ty-po-gra-fiaa + ty-po-gra-fiaan + ty-po-gra-fian + ty-po-gra-fias-sa + ty-po-gra-fias-ta + ty-po-gra-fi-seen + ty-po-gra-fi-sen + ty-po-gra-fi-se-na + ty-po-gra-fi-ses-ta + ty-po-gra-fi-ses-ti + ty-po-gra-fi-set + ty-po-gra-fi-sia + ty-po-gra-fi-sin + ty-po-gra-fi-sis-ta + ty-po-gra-fis-ten + tyy-li-ase-tuk-set + tyy-li-ase-tus + tyy-li-ase-tus-ten + tär-keys-as-teil-le + tär-keys-as-tei-sia + täys-ym-py-rän + UL-depth + ulko-asu + ulko-asua + ulko-asun + ulko-asus-ta + ulko-asus-taan + ulko-asu-tee-mo-ja + ulko-asuun + UL-thick-ness + under-line + Uni-code + Uni-coden + url-style + use-color-theme + use-counter + use-font-theme + use-inner-theme + use-outer-theme + use-pack-age + use-theme + vaih-to-eh-don + vaih-to-eh-dot + vaih-to-eh-to + vaih-to-eh-toi-ses-ti + vaih-to-eh-to-ja + vaih-to-eh-to-jen + vaih-to-eh-to-na + vai-ku-tus-alue + vai-ku-tus-alueena + vai-ku-tus-aluet-ta + value + va-paa-eh-toi-sia + va-paa-eh-tois-ta + vas-taan-otta-jal-le + vas-taan-otta-jil-le + vek-tori-gra-fiik-kaa + vek-tori-gra-fiik-ka-font-te-ja + vek-tori-gra-fiik-ka-ku-viot + ver-ba-tim + verse + vir-he-il-moi-tuk-seen + vir-he-il-moi-tuk-sen + vir-he-il-moi-tus + vir-he-il-moi-tus-ta + vline + vol-ume + vspace + vä-him-mäis-etäi-syys + väli-ai-kai-ses-ti + väli-ai-kais-tie-dos-toa + väli-ai-kais-tie-dos-to-jen + väli-ai-kais-tie-dos-ton + väli-ai-kais-tie-dos-toon + väli-ai-kais-tie-dos-tot + väli-ot-si-kois-sa + väli-ot-si-kois-ta + väli-ot-si-kon + väli-ot-si-kot + vä-ri-asioi-ta + wall-cal-en-dar + with-in + wrap-fig + wrap-fig-ure + wrap-table + Xe-latex + yh-dys-osas-ta + yh-dys-osien + yh-tä-lö-esi-mer-kin + yleis-esi-merk-ki + yleis-ohje + yleis-yhdys-merk-ki + ylä-in-dek-si + ylä-in-dek-si-nume-roi-den + ylä-in-dek-si-nume-rois-ta + ylä-in-dek-si-nume-rol-la + ylä-in-dek-si-nume-ron + ylä-in-dek-sit + ylä-osaan + ylä-osas-sa + ään-tö-asu } diff --git a/Master/texmf-dist/doc/latex/kaytannollista-latexia/versio.tex b/Master/texmf-dist/doc/latex/kaytannollista-latexia/versio.tex index 60bbc868ef4..df9f134a715 100644 --- a/Master/texmf-dist/doc/latex/kaytannollista-latexia/versio.tex +++ b/Master/texmf-dist/doc/latex/kaytannollista-latexia/versio.tex @@ -1 +1 @@ -\newcommand{\versio}{2024.7} +\newcommand{\versio}{2025} diff --git a/Master/texmf-dist/doc/latex/kdpcover/DEPENDS.txt b/Master/texmf-dist/doc/latex/kdpcover/DEPENDS.txt index e07680365e0..9ec3ba03e56 100644 --- a/Master/texmf-dist/doc/latex/kdpcover/DEPENDS.txt +++ b/Master/texmf-dist/doc/latex/kdpcover/DEPENDS.txt @@ -1,10 +1,18 @@ -hard iexec -hard xkeyval hard anyfontsize -hard pgf +hard etoolbox +hard geometry +hard iexec hard microtype -hard xcolor +hard pgf +hard pgfopts hard setspace -hard geometry hard textpos -hard etoolbox
\ No newline at end of file +hard xcolor +soft docshots +soft href-ul +soft hypdoc +soft l3build +soft libertine +soft scheme-basic +soft tools +soft xetex diff --git a/Master/texmf-dist/doc/latex/kdpcover/LICENSE.txt b/Master/texmf-dist/doc/latex/kdpcover/LICENSE.txt index bd949ffdabc..1f211e02878 100644 --- a/Master/texmf-dist/doc/latex/kdpcover/LICENSE.txt +++ b/Master/texmf-dist/doc/latex/kdpcover/LICENSE.txt @@ -1,6 +1,6 @@ (The MIT License) -Copyright (c) 2021-2022 Yegor Bugayenko +Copyright (c) 2021-2024 Yegor Bugayenko Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal diff --git a/Master/texmf-dist/doc/latex/kdpcover/README.md b/Master/texmf-dist/doc/latex/kdpcover/README.md index 6563185c6e9..2dd649e4f8d 100644 --- a/Master/texmf-dist/doc/latex/kdpcover/README.md +++ b/Master/texmf-dist/doc/latex/kdpcover/README.md @@ -1,19 +1,26 @@ +# LaTeX Class for KDP Book Covers + [![make](https://github.com/yegor256/kdpcover/actions/workflows/l3build.yml/badge.svg)](https://github.com/yegor256/kdpcover/actions/workflows/l3build.yml) [![CTAN](https://img.shields.io/ctan/v/kdpcover)](https://ctan.org/pkg/kdpcover) [![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/kdpcover/blob/master/LICENSE.txt) -This LaTeX class I use to format covers for [my books](https://www.yegor256.com/books.html), +This LaTeX class I use to format covers for +[my books](https://www.yegor256.com/books.html), which I sell [on Amazon](https://www.amazon.com/Yegor-Bugayenko/e/B01AM1QMDK). -The problem this class solves is [the necessity](https://kdp.amazon.com/en_US/help/topic/G201953020) -to change the size of the cover PDF respectfully +The problem this class solves is +[the necessity](https://kdp.amazon.com/en_US/help/topic/G201953020) +to change the size of the cover PDF respectfully to the number of pages in the book — the bigger the book, the larger must be the cover. The provided class makes necessary -calculations on-fly, using the [`qpdf`](http://qpdf.sourceforge.net/) tool. Obviously, +calculations on-fly, using the [`qpdf`](http://qpdf.sourceforge.net/) tool. +Obviously, you need to have it installed. Also, you must -run `pdflatex` with the `--shell-escape` option, in order to allow LaTeX to run `qpdf`. +run `pdflatex` with the `--shell-escape` option, +in order to allow LaTeX to run `qpdf`. -First, [install it](https://en.wikibooks.org/wiki/LaTeX/Installing_Extra_Packages) -from [CTAN](https://ctan.org/pkg/kdpcover) +First, +[install it](https://en.wikibooks.org/wiki/LaTeX/Installing_Extra_Packages) +from [CTAN](https://ctan.org/pkg/kdpcover) and then use in the preamble: ```tex @@ -26,7 +33,11 @@ and then use in the preamble: \end{document} ``` -If you want to contribute yourself, make a fork, then create a branch, +Otherwise, you can download +[`kdpcover.sty`](https://yegor256.github.io/kdpcover/kdpcover.sty) and +add to your project. + +If you want to contribute yourself, make a fork, then create a branch, then run `make` in the root directory. It should compile everything without errors. If not, submit an issue and wait. Otherwise, make your changes and then run `make` again. If the build is diff --git a/Master/texmf-dist/doc/latex/kdpcover/kdpcover.pdf b/Master/texmf-dist/doc/latex/kdpcover/kdpcover.pdf Binary files differindex 6280c2cb4ea..893605f2cc8 100644 --- a/Master/texmf-dist/doc/latex/kdpcover/kdpcover.pdf +++ b/Master/texmf-dist/doc/latex/kdpcover/kdpcover.pdf diff --git a/Master/texmf-dist/doc/latex/latex-via-exemplos/changelog.txt b/Master/texmf-dist/doc/latex/latex-via-exemplos/changelog.txt index 4af474467ad..8e337a0b6fa 100644 --- a/Master/texmf-dist/doc/latex/latex-via-exemplos/changelog.txt +++ b/Master/texmf-dist/doc/latex/latex-via-exemplos/changelog.txt @@ -1,3 +1,5 @@ +Version 2024-12-31 + - Added example of "quadro" (table with text content) of ABNT style Version 2024-12-29 - example of table in ABNT style was corrected (now, using tabularray instead of xtab). - example of xtabular used in ABNT removed because it does not fit ABNT style diff --git a/Master/texmf-dist/doc/latex/latex-via-exemplos/latex-via-exemplos.pdf b/Master/texmf-dist/doc/latex/latex-via-exemplos/latex-via-exemplos.pdf Binary files differindex 6475e5ab830..78f2bb026c5 100644 --- a/Master/texmf-dist/doc/latex/latex-via-exemplos/latex-via-exemplos.pdf +++ b/Master/texmf-dist/doc/latex/latex-via-exemplos/latex-via-exemplos.pdf diff --git a/Master/texmf-dist/doc/latex/latex-via-exemplos/latex-via-exemplos.tex b/Master/texmf-dist/doc/latex/latex-via-exemplos/latex-via-exemplos.tex index d8b3e2e4c4c..dc709d2c6ad 100644 --- a/Master/texmf-dist/doc/latex/latex-via-exemplos/latex-via-exemplos.tex +++ b/Master/texmf-dist/doc/latex/latex-via-exemplos/latex-via-exemplos.tex @@ -1048,9 +1048,9 @@ % Decima atualização (0.5.10): 08 de dezembro de 2024 % Decima primeira atualização (0.5.11): 08 de dezembro de 2024 % Decima segunda atualização: 19 de dezembro de 2024 -% Decima terceira atualização -\date{29 de dezembro de 2024} - +% Decima terceira atualização: 29 de dezembro de 2024 +% Decima quarta atualização +\date{31 de dezembro de 2024} %%%%%%%%%%%%%%%%%%%%%%% % Documet start here @@ -5602,7 +5602,7 @@ Para o caso de alterar o ambiente, especifica \verb+\env+ em vez de \verb+cmd+ e Caso o primeiro campo for omitido, será assumido como \verb+cmd+. -Note que, o comando de inicialização e finalização do ambiente \verb+myenv+ são \verb+beginmyenv+ e \verb+endmyenv+ respectivamente. Assim, podemos adicionar códigos diretamente nestes comandos em vez do ambiente. Desta forma, para inserir comando no começo do documento\index{AddToHookbegindocument@\verb+AddToHook{begindocument}+} pode ser como no exemplo +Note que, o comando de inicialização e finalização do ambiente \verb+myenv+ são \verb+beginmyenv+ e \verb+endmyenv+ respectivamente. Assim, podemos adicionar códigos diretamente nestes comandos em vez do ambiente. Desta forma, para inserir comando no começo do documento\index{AddToHookbegindocument@\verb+AddToHook{begindocument}+} (que tem o atalho \verb+\AtBeginDocument+\index{AtBeginDocument@\verb+\AtBeginDocument+}) pode ser como no exemplo \begin{singlespacing} \begin{lstlisting} \makeatletter @@ -10205,24 +10205,22 @@ As tabelas no \texttt{ABNT} devem obedecer as normas do Instituto Brasileiro de \end{singlespacing} O código ficou um pouco longo, mas isto configura tanto o \texttt{talltblr} como o \texttt{longtblr} (e \texttt{tblr} com opção \texttt{long} ou \texttt{tall}) e funciona tanto na tabela de uma página como no caso de ocupar mais de uma página. + Para usar no \texttt{abntexto}, ainda precisa acrescentar o código. \begin{singlespacing} \begin{lstlisting} \ExplSyntaxOn - \DefTblrTemplate { caption-lot } { default } + \DefTblrTemplate{caption-lot}{default} { - %\addtocounter{table}{-1} - %\stepcounter{quadro} - %\global\advance\counttable by 1 \tl_if_empty:NTF \lTblrEntryTl { \tl_set_eq:NN \l__tblr_caption_short_tl \lTblrCaptionTl } { \tl_set_eq:NN \l__tblr_caption_short_tl \lTblrEntryTl } %\addcontentsline { lot } { table } % { \protect\numberline { \thetable } { \l__tblr_caption_short_tl } } %adicionando na lista pelo comando de abntexto - \addtoext{lot}{lofi}{\protect\lotlabelbox{\the\counttable} {\l__tblr_caption_short_tl}}% - } + \addtoext{lot}{lofi}{\protect\lotlabelbox{\thetable} {\l__tblr_caption_short_tl}}% + } \ExplSyntaxOff \end{lstlisting} \end{singlespacing} @@ -10303,135 +10301,320 @@ Se preferir, poderá criar um ambiente para que isto seja feito automaticamente. O ambiente \texttt{xtabular} do pacote \texttt{xtab} apresenta o comando para saber se tabela cabe ou não em uma única página (por exemplo, poderá testar se ocupa mais de uma página por \verb+\ifnum\PWSTlastpage > 1+), mas não há configuração padrão para repetir o nome da tabela na página seguinte (o que é feito na tabelas de IBGE). \end{remark} -% Implementação do quadro (tabela textual) -% O problema é -% \SetTblrTemplate{ caption-lot } { quadro } -% fora do preamble, mesmo indireta (como dentro do tema) ou ambiente providenciado causa erros: -% Use of \??? doesn't match its definition. -% <argument> \??? -%! LaTeX Error: Erroneous variable \l__tblr_template_caption-lot_default_t -% Outros \SetTblrTemplate funcionam. -% -% O comando foi criado para colocar quadro na lista de quadros, mas se chamar no preamble, tabelas vai ficar na lista de quadros também. -% Se não chamar, quadros ficará na lista de tabelas. -% -% Precisará ver, como implementar o quadro longo corretamente, pois o codigo a seguir, está dando erro devido ao problema ciatada anteriormente. +No \texttt{ABNT}, tabelas com descrições qualitativas (textos em vez de números) é denominado de ``quadros''\index{quadro}. A classe \texttt{ABNTeX2} não implementa o ``quadro''. Se pretende usar, precisará providenciar o ambiente de quadros, lista de quadros, etc. +Para ambiente flutuante, poderá efetuar com o pacote \texttt{float}\index{float}. Para o caso de quadro longa, poderá implementar sobre a tabela longa, mas no caso de usar o \texttt{tabularray}, poderá implementar como tema em vez do ambiente, acrescentando um pouco mais de códigos no \texttt{preamble} anterior. + +O código a seguir, assume que está usando a classe \texttt{abntex2} que é baseado \texttt{memoir}, usando o seu recurso em vez do pacote \texttt{float}. O código deve ser acrescentado no código do \texttt{preamble} para tabelas apresentada anteriormente. + +\begin{singlespacing} +\begin{lstlisting} +% quadros (requer classe derivado de memoir como o abntex2) +%---------------------------------------------------------- +% Nomes +\newcommand{\quadroname}{Quadro} +\newcommand{\listquadroname}{Lista de quadros} +\addto\captionsbrazil{% portugues-brasil + \renewcommand{\quadroname}{Quadro} + \renewcommand{\listquadroname}{Lista de quadros} +} +\addto\captionsenglish{% ingles + \renewcommand{\quadroname}{Text table} + \renewcommand{\listquadroname}{List of text table} +} + +% usando comandos do memoir +%\newfloat[chapter]{quadro}{loq}{\quadroname} +%\counterwithout{quadro}{chapter} +\newfloat{quadro}{loq}{\quadroname} +\newlistof{listadequadros}{loq}{\listquadroname} +%\newlistentry[chapter]{quadro}{loq}{0} +\newlistentry{quadro}{loq}{0} + +\cftsetindents{quadro}{0em}{2.3em} +\renewcommand{\cftquadroname}{\quadroname\space} +\renewcommand*{\cftquadroaftersnum}{\hfill\textendash\hfill} + +% gravando na lista separada de tabelas +\ExplSyntaxOn +\DefTblrTemplate{caption-lot}{quadro}% +{% + \addtocounter{table}{-1}% não contar como tabela + \stepcounter{quadro}% contar como quadro + \tl_if_empty:NTF \lTblrEntryTl + {\tl_set_eq:NN \l__tblr_caption_short_tl \lTblrCaptionTl} + {\tl_set_eq:NN \l__tblr_caption_short_tl \lTblrEntryTl} + %\addcontentsline{lot}{table}% + % {\protect\numberline{\thetable}{\l__tblr_caption_short_tl}} + \addcontentsline{loq}{quadro}% + {\protect\numberline{\thequadro}{\l__tblr_caption_short_tl}} +} +\ExplSyntaxOff + +% Atenção! Não deve haver espaço extra entre chaves e nomes! +\DefTblrTemplate{caption-tag}{quadro}{\quadroname\hspace{0.25em}\thequadro} + +% Definindo o tema +% Atenção! Não deve haver espaço extra entre chaves e nomes no \SetTblrTemplate +\NewTblrTheme{quadro}{% + \SetTblrTemplate{caption-tag}{quadro}% + \SetTblrTemplate{caption-lot}{quadro}% +} +\end{lstlisting} +\end{singlespacing} + +Com isso, poderá usar a tabela e quadros, como no Exemplo~\ref{ex19:abnt-quadro}. A distinção entre tabela e quadro será feito pelo \verb+theme=quadro,+ na primeira opção do parâmetro opcional de \texttt{longtblr} ou \texttt{talltblr}. + +\begin{singlespacing} +\begin{lstlisting}[caption={ex19-abnt-quadro.tex},label={ex19:abnt-quadro}] +Sem a opção do tema, será produzido a tabela. Note que na tabela não pode fechar os laterais (Exemplo~\ref{tab:talltblr:simples}). + +\SetTblrSource{Elaboração do autor} +\begin{table}[hbp!] +\begin{talltblr} +[ + caption={Tabela curta simples}, + label={tab:talltblr:simples}, +] +{ + colspec = {XX}, +} +\toprule +nome & valor \\ +a & 1 \\ \midrule +c & 2 \\ \bottomrule +\end{talltblr} +\end{table} + +O quadro é produzido pelo tema \texttt{quadro} como no Exemplo~\ref{quadro:longo}. Note que, quadro deve fechar todos os lados e fazer divisório. + +\SetTblrSource{Elaboração do autor} +\SetTblrNote{Usando o tema quadro para produzir quadro} +\begin{longtblr} +[ + theme=quadro, + caption={Um quadro longo simples}, + label={quadro:longo}, +] +{ + colspec = {XX}, + vlines,hlines, % fazer grade +} +linha 1 & texto 1 \\ +linha 2 & texto 2 \\ +linha 3 & texto 3 \\ +linha 4 & texto 4 \\ +linha 5 & texto 5 \\ +\pagebreak % quebrando página para teste +linha 6 & texto 6 \\ +linha 7 & texto 7 \\ +linha 8 & texto 8 \\ +linha 9 & texto 9 \\ +linha 10 & texto 10 \\ +\end{longtblr} + +Quadro flutuante será produzido pelo ambiente \texttt{quadro}, como no Quadro~\ref{quadro:flutuante}. + +\begin{quadro}[hbp!] +\SetTblrSource{Elaboração do autor} +\begin{talltblr} +[ + caption={Quadro flutuante simples}, + label={quadro:flutuante}, +] +{ + colspec = {XX}, + vlines,hlines, % grades +} +Nome 1 & Sobrenome 1 \\ +Nome 2 & Sobrenome 2 \\ +\end{talltblr} +\end{quadro} +\end{lstlisting} +\end{singlespacing} + +A lista de quadros para configuração anterior, será produzida com o comando \verb+\listadequadros+. Para não constar no sumário, use a versão ``*''. + +Para a classe \texttt{abntexto}, a definição de novo ambiente estilo tabelas é feito pelo \verb+\definelegendplace+. Para este caso, também não vamos usar o pacote \texttt{float} para compatibilizar com ambientes já existentes. Acrescente o código seguinte no \texttt{preamble} já com configuração de tabelas anteriores, observando que o tema criado é \texttt{texttab} em vez de \texttt{quadro} para uniformidade do idioma. + +\begin{singlespacing} +\begin{lstlisting} +% quadro (texttab -- text table) +\newcommand{\texttabname}{Quadro} +\newcommand{\listtexttabname}{Lista de quadros} +\addto\captionsbrazil{% portugues-brasil + \renewcommand{\texttabname}{Quadro} + \renewcommand{\listtexttabname}{Lista de quadros} +} +\addto\captionsenglish{% ingles + \renewcommand{\texttabname}{Text table} + \renewcommand{\listtexttabname}{List of text table} +} + +% ABNTexto +\ExplSyntaxOn + \definelegendplace{texttab}{Quadro}{quad.\,}{lott} % nova entrada de legenda + + \DefTblrTemplate {caption-lot}{texttab} + { + \addtocounter{table}{-1}% não contar como table + % contador criado pelo \definelegendplace{texttab} não é \c@textab, mas counttexttab que requer incrementar pelo comando de TeX. + \global\advance\counttexttab by 1% contar como texttab + \tl_if_empty:NTF \lTblrEntryTl + {\tl_set_eq:NN \l__tblr_caption_short_tl \lTblrCaptionTl} + {\tl_set_eq:NN \l__tblr_caption_short_tl \lTblrEntryTl} + %adicionando no sumário pelo comando de abntexto + \addtoext{lott}{lotti}{\protect\lottlabelbox{\the\counttexttab} {\l__tblr_caption_short_tl}}% + } +\ExplSyntaxOff + +% Atenção! Não deve haver espaço entre chaves e parametros +\DefTblrTemplate{caption-tag}{texttab}{\texttabname\hspace{0.25em}\the\counttexttab} + +% Atenção! Não deve haver espaço entre chaves e parametros, no \SetTblrTemplate +\NewTblrTheme{texttab}{ + \SetTblrTemplate{caption-lot}{texttab} + \SetTblrTemplate{caption-tag}{texttab} +} +\end{lstlisting} +\end{singlespacing} + +Para produzir quadros, basta usar o tema \texttt{texttab} que foi criada, como no Exemplo~\ref{ex19:abnt-quadro-abntexto}. + +\begin{singlespacing} +\begin{lstlisting}[caption={ex19-abnt-quadro-abntexto.tex},label={ex19:abnt-quadro-abntexto}] +Sem a opção do tema, será produzido a tabela. Note que na tabela não pode fechar os laterais (Exemplo~\ref{tab:talltblr:simples}). + +\SetTblrSource{Elaboração do autor} +\begin{table}[hbp!] +\begin{talltblr} +[ + caption={Tabela curta simples}, + label={tab:talltblr:simples}, +] +{ + colspec = {XX}, +} +\toprule +nome & valor \\ +a & 1 \\ \midrule +c & 2 \\ \bottomrule +\end{talltblr} +\end{table} + +O quadro é produzido pelo tema \texttt{texttab} como no Exemplo~\ref{quadro:longo}. Note que, quadro deve fechar todos os lados e fazer divisório. + +\SetTblrSource{Elaboração do autor} +\SetTblrNote{Usando o tema quadro para produzir quadro} +\begin{longtblr} +[ + theme=texttab, + caption={Um quadro longo simples}, + label={quadro:longo}, +] +{ + colspec = {XX}, + vlines,hlines, % fazer grade +} +linha 1 & texto 1 \\ +linha 2 & texto 2 \\ +linha 3 & texto 3 \\ +linha 4 & texto 4 \\ +linha 5 & texto 5 \\ +\pagebreak % quebrando página para teste +linha 6 & texto 6 \\ +linha 7 & texto 7 \\ +linha 8 & texto 8 \\ +linha 9 & texto 9 \\ +linha 10 & texto 10 \\ +\end{longtblr} + +Quadro flutuante poderá ser produzido pelo ambiente \texttt{table} com \texttt{talltblr} dentro, como no Quadro~\ref{quadro:flutuante}. + +\begin{table}[hbp!] +\SetTblrSource{Elaboração do autor} +\begin{talltblr} +[ + theme=texttab, + caption={Quadro flutuante simples}, + label={quadro:flutuante}, +] +{ + colspec = {XX}, + vlines,hlines, % grades +} +Nome 1 & Sobrenome 1 \\ +Nome 2 & Sobrenome 2 \\ +\end{talltblr} +\end{table} + +Contagem está sincronizado com o \verb+\legend+ como no Quadro~\ref{quadro:curto}. + +\legend{texttab}{Teste do quadro curto não flutuante} +\src{Elaboração do autor} +\label{quadro:curto} +\place{Quadro curto não flutuante aqui.} + +\end{lstlisting} +\end{singlespacing} + +Para criar lista de quadros, use o comando +\begin{singlespacing} +\begin{lstlisting} +\notoc\nonum\chapter{Lista de quadros} +\makelott+ +\end{lstlisting} +\end{singlespacing} + +Se tiver pouco espaço entre figuras ?? com o nome das figuras na lista de figuras, ou similares, poderá aumentar com o comando + +\begin{singlespacing} +\begin{lstlisting} +\renewcommand{\loflabelwidth}{7.5em} % da lista de figuras +\renewcommand{\lotlabelwidth}{7.5em} % da lista de tabelas +\renewcommand{\lottlabelwidth}{8em} % da lista de quadros +\end{lstlisting} +\end{singlespacing} + +Para criar o quadro no documento genérico, use o pacote \texttt{float} como segue, o que deve ser colocado junto com definição de tabelas \texttt{ABNT}. + +\begin{singlespacing} +\begin{lstlisting} +% quadros +\newcommand{\quadroname}{Quadro} +\newcommand{\listofquadrosname}{Lista de quadros} + +\newcommand{\listadeqadros}{\listof{quadro}{\listofquadrosname}} + +\newfloat{quadro}{tbp}{loq}%[chapter] +%\counterwithout{quadro}{chapter} desvincular no capítulo + +%% We need to use \hspace and \enskip, but not ~ or \space, +%% since we want a correct hangindent caption paragraph. + +%Atenção! Não pode haver espaço entre chaves e parametros +\DefTblrTemplate {caption-tag} {quadro} {\quadroname\hspace{0.25em}\thequadro} + +%Atenção! Não pode haver espaço entre chaves e parametros +\NewTblrTheme{quadro}{ + \SetTblrTemplate{caption-tag}{quadro} + \SetTblrTemplate{caption-lot}{quadro} +} + +\ExplSyntaxOn +\DefTblrTemplate { caption-lot } { quadro } +{ + \addtocounter{table}{-1} + \stepcounter{quadro} + \tl_if_empty:NTF \lTblrEntryTl + { \tl_set_eq:NN \l__tblr_caption_short_tl \lTblrCaptionTl } + { \tl_set_eq:NN \l__tblr_caption_short_tl \lTblrEntryTl } + \addcontentsline { loq } { table } + { \protect\numberline { \thequadro } { \l__tblr_caption_short_tl } } +} +\ExplSyntaxOff +\end{lstlisting} +\end{singlespacing} -%No \texttt{ABNT}, tabelas com descrições qualitativas (textos em vez de números) é denominado de ``quadros''\index{quadro}. A classe \texttt{ABNTeX2} não implementa o ``quadro''. Se pretende usar, precisará providenciar o ambiente de quadros, lista de quadros, etc. -%Para ambiente flutuante, poderá efetuar com o pacote \texttt{float}\index{float}. Para o caso de quadro longa, poderá implementar sobre a tabela longa, mas no caso de usar o \texttt{tabularray}, poderá implementar como tema em vez do ambiente, acrescentando um pouco mais de códigos no \texttt{preamble} anterior. O código a seguir, assume que está usando a classe \texttt{abntex2} que é baseado memoir. -%%, supondo carregado os pacotes \texttt{float} e \texttt{tabularray}. -% -%\begin{singlespacing} -%\begin{lstlisting} -% -%% quadros -%\newcommand{\quadroname}{Quadro} -%\newcommand{\listofquadrosname}{Lista de \quadroname s} -% -%\newcommand{\listadeqadros}{\listof{quadro}{Lista de \listofquadrosname}} -% -%\newfloat{quadro}{tbp}{loq}[chapter] -%%\counterwithout{quadro}{chapter} desvincular no capítulo -% -%\ExplSyntaxOn -% -%\NewTblrTheme{quadro}{ -% \SetTblrTemplate{ caption-lot }{ quadro } -% \SetTblrTemplate{ caption-tag } { quadro } -%} -% -%\DefTblrTemplate { caption-lot } { quadro } -%{ -% \addtocounter{table}{-1} -% \stepcounter{quadro} -% \tl_if_empty:NTF \lTblrEntryTl -% { \tl_set_eq:NN \l__tblr_caption_short_tl \lTblrCaptionTl } -% { \tl_set_eq:NN \l__tblr_caption_short_tl \lTblrEntryTl } -% \addcontentsline { loq } { table } -% { \protect\numberline { \thequadro } { \l__tblr_caption_short_tl } } -%} -% -%%% We need to use \hspace and \enskip, but not ~ or \space, -%%% since we want a correct hangindent caption paragraph. -% -%\DefTblrTemplate { caption-tag } { quadro } { \quadroname\hspace{0.25em}\thequadro } -% -%\ExplSyntaxOff -%\end{lstlisting} -%\end{singlespacing} -% -%Com isso, poderá usar a tabela e quadros, como no Exemplo~\ref{ex19:abnt-quadro}. A distinção entre tabela e quadro será feito pelo \verb+theme=quadro,+ na primeira opção do parâmetro opcional de \texttt{longtblr} ou \texttt{talltblr}. -% -%\begin{singlespacing} -%\begin{lstlisting}[caption={ex19-abnt-table.tex},label={ex19:abnt-table}] -%Sem a opção do tema, será produzido a tabela. Note que na tabela não pode fechar os laterais (Exemplo~\ref{tab:talltblr:simples}). -% -%\SetTblrSource{Elaboração do autor} -%\begin{table}[hbp!] -%\begin{talltblr} -%[ -% caption={Tabela simples}, -% label={tab:talltblr:simples}, -%] -%{ -% colspec = {XX}, -%} -%\toprule -%nome & valor \\ -%a & 1 \\ \midrule -%c & 2 \\ \bottomrule -%\end{tallblr} -%\end{table} -% -%O quadro é produzido pelo tema \texttt{quadro} como no Exemplo~\ref{quadro:longo}. Note que, quadro deve fechar todos os lados e fazer divisório. -% -%\SetTblrSource{Elaboração do autor} -%\SetTblrNote{Usando o tema quadro para produzir quadro} -%\begin{longtblr} -%[ -% theme=quadro, -% caption={Um quadro longo simples}, -% label={quadro:longo}, -%] -%{ -% colspec = {XX}, -% vlines,hlines, % fazer grade -%} -%linha 1 & 1 \\ -%linha 2 & b \\ -%linha 3 & c \\ -%linha 4 & d \\ -%linha 5 & e \\ -%\pagebreak % quebrando página para teste -%linha 6 & f \\ -%linha 7 & g \\ -%linha 8 & h \\ -%linha 9 & i \\ -%linha 10 & j \\ -%\end{longtblr} -% -%Quadro flutuante será produzido também pelo ambiente \texttt{quadro}, como no Quadro~\ref{quadro:flutuante}. -% -%\begin{quadro}[hbp!] -%\SetTblrSource{Elaboração do autor} -%\begin{talltblr} -%[ -% caption={Quadro flutuante simples}, -% label={quadro:flutuante}, -%] -%{ -% colspec = {XX}, -% vlines,hlines, % grades -%} -%Nome 1 & Sobrenome 1 \\ -%Nome 2 & Sobrenome 2 \\ -%\end{tallblr} -%\end{quadro} -% -%\end{lstlisting} -%\end{singlespacing} -% -%A lista de quadros para configuração anterior, será produzida com o comando \verb+\listadequadros+. %%%%%%%%%%%%%% APÊNDICE %%%%%%%%%% diff --git a/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/DemoProjekt.pdf b/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/DemoProjekt.pdf Binary files differnew file mode 100644 index 00000000000..02b06f1bfab --- /dev/null +++ b/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/DemoProjekt.pdf diff --git a/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/DemoProjekt.tex b/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/DemoProjekt.tex new file mode 100644 index 00000000000..0041a26d476 --- /dev/null +++ b/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/DemoProjekt.tex @@ -0,0 +1,54 @@ +\documentclass[a5paper, 11pt]{scrartcl} +\usepackage[ngerman]{babel} +\usepackage[utf8]{inputenc} +\usepackage{graphicx} +\usepackage{lipsum} +\usepackage{scrlayer-scrpage} +\usepackage{../liederbuch} + +\usepackage{TestLiederbuch} + +%%% This is default %%% +%\pageBreakAllowedtrue +%%% but you can use also this %%% +%\pageBreakAllowedtrue +%%% try uncommenting the second one and see, what happens in the strophes %%% + +%%% This is a nice head %%% +\LBHead{% +{\Large \textbf{\print{title}}}\hfill\mbox{}\vspace*{5pt}\\ +\makebox[32pt]{Musik:\hfill} \print{composer} \\\makebox[32pt]{Text:\hfill} \print{lyricist}\vspace*{3pt} + +} + +%%% This is an okay foot. The text will be always on the left due to the hfill. %%% +\LBFoot{Herausgabedatum: \print{date}\hfill\mbox{}} + +%%% You can change these throughout the document however you like %%% +\setSpaceBeforeStropheValue{15pt plus 5pt} +\setSpaceAfterStropheValue{0pt plus 5pt} +\setSpaceBeforeHeadValue{15pt plus 10pt minus 5pt} +\setSpaceBeforeFootValue{15pt plus 10pt minus 5pt} + +\begin{document} + +\LBsong{TestLiederbuch}{1}{nt} + +\LBsong{TestLiederbuch}{1}{t} + + +\section{new section} +\lipsum[1] +\begin{center} +\LBsong{TestLiederbuch}{2}{nt} +\end{center} +\lipsum[1] + +%%% If you delete the '%' at the beginnng of the next line, you can fix the meta data: %%% +%\tweakMetadata{t}{TestLiederbuch}{3}{source = Aschenbecher & title = Oh alte Wurstverkäuferherrlichkeit & composer = This doesn't make sense & unusedTag = we don't need that & writer = Now all tags are filled} + +\LBsong{TestLiederbuch}{3}{t} + +Text zum Testen \LBsong{TestLiederbuch}{80}{nt} + +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/Readme_Demoprojekt.txt b/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/Readme_Demoprojekt.txt new file mode 100644 index 00000000000..4dd2c03d52a --- /dev/null +++ b/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/Readme_Demoprojekt.txt @@ -0,0 +1,14 @@ +1. Put the whole Demoprojekt-folder somewhere. +2. Copy + - GFM-FillPages.sty + - GFM-RealPage.sty + - GFM-Liederbuch.sty + to the Demoprojekt-folder. The current versions can be found in the main directory + (skip this step, if you got this via TeX-Live) +3. Open Demoprojekt.tex +4. Compile the document + +In case of problems: + +xparse not found => add \usepackage{xparse} in second line in Demoprojekt +still doesn't work => replace \usepackage{xparse} by \usepackage{l3packages} diff --git a/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuch.sty b/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuch.sty new file mode 100644 index 00000000000..f9b2c5f7504 --- /dev/null +++ b/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuch.sty @@ -0,0 +1,125 @@ +\ProvidesPackage{TestLiederbuch} +\RequirePackage{liederbuch} +\RequirePackage{graphicx} + +\begin{liederbuch}[ +titleOfLargerWork = Test-Liederbuch & +date = 2017 & +seriesTitle = Demoprojekt +]{TestLiederbuch} + +\begin{lied}[title=Hänschen klein & lyricist=Volkslied \& überliefert & composer = Volkslied]{t}{1} +\begin{strophe}[1] +Hänschen klein,\\ +ging allein\\ +in die weite Welt hinein.\\ +Stock und Hut,\\ +steht im gut.\\ +Ist gar wohlgemut.\\ +Aber Mutter weinet sehr,\\ +hat ja nun kein Hänschen mehr.\\ +Da besinnt sich das Kind,\\ +kehret heim geschwind. +\end{strophe} +\begin{strophe} +Hänschen klein,\\ +ging allein\\ +in’n Berliner Turnverein.\\ +Turnt am Reck,\\ +fällt in’n Dreck,\\ +ist die Nase weg.\\ +ommt der Doktor Hampelmann,\\ +klebt die Nas’ mit Spucke an.\\ +Hänschen klein\\ +freut sich sehr,\\ +hat nun eine Nase mehr.\\ +\end{strophe} +\end{lied} + +\begin{lied}[title=Hänschen klein & lyricist=Volkslied \& überliefert & composer = Volkslied]{nt}{1} +{% +\notenzeile{\includegraphics[width=\linewidth,page=1]{./TestLiederbuchSnippets/haenschenKlein.pdf}}% +{\nspace{7} Häns \ns* chen\ns klein \ns ging \ns all \ns* ein \ns \nspace{4} in \ns \ns die \ns \ns wei \ns* te \nspace{4}} +\notenzeile{\includegraphics[width=\linewidth,page=2]{./TestLiederbuchSnippets/haenschenKlein.pdf}}% +{\nspace{12pt} Welt \ns hin \ns* ein. \ns \ns Stock \ns und \ns Hut \ns \ns steht\ns ihm \ns gut, \nspace{5}} +\notenzeile{\includegraphics[width=\linewidth,page=3]{./TestLiederbuchSnippets/haenschenKlein.pdf}}% +{\nspace{6} ist \ns gar \ns wohl \ns* ge\ns -\ns mut. \nspace{6} Ab \ns* er~ \ns Mut \ns* ter \nspace{3.5}} +\notenzeile{\includegraphics[width=\linewidth,page=4]{./TestLiederbuchSnippets/haenschenKlein.pdf}}% +{\nspace{4} wein \ns* et \ns sehr, \ns \ns hat \ns ja \ns wohl \ns kein \ns Häns \ns* chen\ns mehr.\nspace{2}} +\notenzeile{\includegraphics[width=\linewidth,page=5]{./TestLiederbuchSnippets/haenschenKlein.pdf}}% +{\nspace{5} Da \ns be \ns* sinnt \ns \ns sich \ns das \ns Kind, \ns \ns kehr \ns* et \ns heim \ns ge \ns - \ns schwind\nspace{1}} +} +\end{lied} + +\begin{lied}[title=Alle Vöglein sind schon da & composer =Kinderlied & originalSource= Liederbuch & date = 1835 & lyricist = Kinderlied]{nt}{2} +\begin{strophe}[1] +Alle Vöglein sind schon da,\\ +alle Vöglein alle.\\ +Amsel, Drossel, Fink und Star,\\ +und die ganze Vogelschar.\\ +Alle Vöglein sind schon da,\\ +alle Vöglein alle.\\ +\end{strophe} +\end{lied} + +\begin{lied}{n}{336} +song number 336, format n +\end{lied} + +\begin{lied}[% +title = Same but different &% +lyricist = some tags are missing and therefore empty &% +]{t}{3} +Once again Song Number 1t as 3t via reference\vspace*{10pt} + +\csuse{liedBody;TestLiederbuch;t;1} +\end{lied} + +\begin{lied}[% +title = O alte Burschenherrlichkeit &% +lyricist = Eugen Höfling (1808-1880) zugeschrieben &% +composer = Studentenweise vor 1843 &% +date = 18 Jhd.% +]{nt}{80} +\notenzeile{\includegraphics[width=\linewidth,page=1]{./TestLiederbuchSnippets/CVLB80-OhAlteBurschenherrlichkeit.pdf}} +{\nspace{9} O \ns \ns \nspace{4pt} al \ns*[3pt] te \ns Bur \ns* schen \ns*[2] herr \ns* lich \ns*[-2] keit \ns wo-\nspace{3}} +\notenzeile{\includegraphics[width=\linewidth,page=2]{./TestLiederbuchSnippets/CVLB80-OhAlteBurschenherrlichkeit.pdf}} +{\nspace{5} hin \ns bist \ns du \ns verschwunden \ns \nspace{3} \ns nie \ns kehrst \ns du \ns wie \ns* der \nspace{2}} +\notenzeile{\includegraphics[width=\linewidth,page=3]{./TestLiederbuchSnippets/CVLB80-OhAlteBurschenherrlichkeit.pdf}} +{\nspace{4} gold' \ns* ne \ns Zeit \ns so \ns froh \ns und \ns un \ns* \ns ge \ns* \ns bun \ns* den \nspace{10}} +\notenzeile{\includegraphics[width=\linewidth,page=4]{./TestLiederbuchSnippets/CVLB80-OhAlteBurschenherrlichkeit.pdf}} +{\nspace{6}ver \ns* geb \ns* ens \ns spä \ns* he \ns \nspace{1} \ns ich \ns \nspace{1} \ns umher \ns ich \ns fin \ns* de \nspace{2}} +\notenzeile{\includegraphics[width=\linewidth,page=5]{./TestLiederbuchSnippets/CVLB80-OhAlteBurschenherrlichkeit.pdf}} +{\nspace{5} dei \ns* ne \ns \nspace{2} \ns Spur \ns \nspace{2} \ns nicht \ns \nspace{2} \ns mehr \ns \nspace{2} \ns O \ns je \ns* rum, \ns je \ns* rum, \nspace{1}} +\notenzeile{\includegraphics[width=\linewidth,page=6]{./TestLiederbuchSnippets/CVLB80-OhAlteBurschenherrlichkeit.pdf}} +{\nspace{6} je \ns* rum \ns \nspace{2} \ns O \ns quae \ns mu \ns* ta \ns* tio \ns re \ns* rum \nspace{7}} + +\begin{strophe}[2] +Den Burschenhut bedeckt der Staub, es sank der Flaus in +Trümmer, der Schläger ward des Rostes Raub, erblichen ist sein +Schimmer, verklungen der Kommersgesang, verhallt Rapier- und +Sporenklang. \repeatleft~O~jerum, jerum, jerum, o quae mutatio rerum!~\repeatright +\end{strophe} +\begin{strophe} +Wo sind sie, die vom breiten Stein nicht wankten und nicht +wichen, die ohne Moos bei Scherz und Wein den Herrn der Erde +glichen? Sie zogen mit gesenktem Blick in das Philisterland +zurück. \repeatleft~O~jerum, jerum, jerum, o quae mutatio rerum!~\repeatright +\end{strophe} +\begin{strophe} +Da schreibt mit finsterm Amtsgesicht der eine Relationen, der andre seufzt beim Unterricht, und der macht Recensionen, der schilt die sündge Seele aus und der flickt ihr verfallnes Haus. \repeatleft~O~jerum, jerum, jerum, o quae mutatio rerum!~\repeatright +\end{strophe} +\begin{strophe} +Auf öder schraubt uns spannt das Fadenkreuz der ein, der andere seufzt beim Steinverband und der legt Pflastersteine; der kocht aus Rüben Zuckersaft und der aus Wasser Pferdekraft. \repeatleft~O~jerum, jerum, jerum, o quae mutatio rerum~\repeatright\end{strophe} +\begin{strophe} +Allein das rechte Burschenherz kann nimmermehr erkalten; im Ernste wird, wie hier im Scherz, der rechte Sinn stets walten; die alte Schale nur ist fern, geblieben ist uns doch der Kern, \repeatleft~und den laßt +fest uns halten!~\repeatleft +\end{strophe} +\begin{strophe} +Drum, Freunde! reichet euch die Hand, damit es sich erneue, +der alten Freundschaft heilges Band, das alte Band der Treue. Klingt an und hebt die Gläser hoch, die alten Burschen leben noch, \repeatleft~noch lebt die alte Treue.~\repeatright +\end{strophe} + +\end{lied} + +\end{liederbuch} diff --git a/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuchSnippets/CVLB80-OhAlteBurschenherrlichkeit.ly b/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuchSnippets/CVLB80-OhAlteBurschenherrlichkeit.ly new file mode 100644 index 00000000000..4fb32ce8cf1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuchSnippets/CVLB80-OhAlteBurschenherrlichkeit.ly @@ -0,0 +1,65 @@ +\version "2.18.2" + +systemhoehe = 10 +customvar = 40 +customratio = 2 +seitenhoehe = #(* systemhoehe customratio) +\header{ +} + + %#(* systemhoehe 1\pt)) + +\paper{ + annotate-spacing = ##f + indent=0\mm + short-indent = 0\mm + paper-width = 150\mm + %line-width=120\mm + oddFooterMarkup=##f + evenFooterMarkup=##f + oddHeaderMarkup=##f + evenHeaderMarkup = ##f + bookTitleMarkup = ##f + scoreTitleMarkup = ##f + print-page-number = ##f + left-margin = 0 + right-margin = 0 + top-margin = -5\pt + bottom-margin = 0 + paper-height = 50\pt %#(* seitenhoehe 1\pt) + top-system-spacing.basic-distance = 15\pt + markup-system-spacing.basic-distance = 0\pt + top-markup-spacing.basic-distance = 0\pt + system-system-spacing.basic-distance = 200\pt +} + +\score{ + \layout { + \context { + \Score + \remove "Bar_number_engraver" +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % Here you adjust the distance between the notes, % +% % how many lines you need. If your song syllables % +% % are too dense, you need to increase the distance. % +% % You should increase/decrease it by factor 2. % +% % Currently it is 1/60. Next up is 1/120, next down % +% % 1/30. From there you can do a fine adjustment. % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% + \override SpacingSpanner.base-shortest-duration = #(ly:make-moment 1/60) + } + #(define after-title-space (* 2 cm)) + } +% +%%%%%%%%%%%%%%%%%% +% Music is here: % +%%%%%%%%%%%%%%%%%% +% + \new Staff << + \new Voice{ + \relative c'{ \partial 4 c8 e | g4 g g8[ a] f d c4 e e r8 e d4. e8 f4. g8 f4 e r g g4. e8 c'4. b8 b4 a a a g4. a8 g[ e] f d d4 c r e4 d g g b b8([ a c)] b a4 d, d a' \bar"" \break a c c8([ b d]) c b([ a g)] \override BreathingSign.text = \markup { \musicglyph #"scripts.rvarcomma" } \breathe f8 \repeat volta 2 {g4. e8 c'4. b8 b a a4 r a g4. a8[ g] e f d d4 c r <<{s} \\ { r8 f}>> + } + }>> +} diff --git a/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuchSnippets/CVLB80-OhAlteBurschenherrlichkeit.pdf b/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuchSnippets/CVLB80-OhAlteBurschenherrlichkeit.pdf Binary files differnew file mode 100644 index 00000000000..dddf1bb70f7 --- /dev/null +++ b/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuchSnippets/CVLB80-OhAlteBurschenherrlichkeit.pdf diff --git a/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuchSnippets/haenschenKlein.ly b/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuchSnippets/haenschenKlein.ly new file mode 100644 index 00000000000..fed26e90349 --- /dev/null +++ b/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuchSnippets/haenschenKlein.ly @@ -0,0 +1,66 @@ +\version "2.18.2" + +systemhoehe = 10 +customvar = 40 +customratio = 2 +seitenhoehe = #(* systemhoehe customratio) +\header{ +} + +\paper{ + annotate-spacing = ##f + indent=0\mm + short-indent = 0\mm + paper-width = 150\mm + %line-width=120\mm + oddFooterMarkup=##f + evenFooterMarkup=##f + oddHeaderMarkup=##f + evenHeaderMarkup = ##f + bookTitleMarkup = ##f + scoreTitleMarkup = ##f + print-page-number = ##f + left-margin = 0 + right-margin = 0 + top-margin = -5\pt + bottom-margin = 0 + paper-height = 50\pt %#(* seitenhoehe 1\pt) + top-system-spacing.basic-distance = 15\pt + markup-system-spacing.basic-distance = 0\pt + top-markup-spacing.basic-distance = 0\pt + system-system-spacing.basic-distance = 200\pt +} + +\score{ + \layout { + \context { + \Score + \remove "Bar_number_engraver" +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % Here you adjust the distance between the notes, % +% % how many lines you need. If your song syllables % +% % are too dense, you need to increase the distance. % +% % You should increase/decrease it by factor 2. % +% % Currently it is 1/60. Next up is 1/120, next down % +% % 1/30. From there you can do a fine adjustment. % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% + \override SpacingSpanner.base-shortest-duration = #(ly:make-moment 1/50) + } + #(define after-title-space (* 2 cm)) + } +% +%%%%%%%%%%%%%%%%%% +% Music is here: % +%%%%%%%%%%%%%%%%%% +% + \new Staff << + \new Voice{ + \relative c''{ g4 e4 e2 | f4 d4 d2 | c4 d4 e4 f4 | g4 g4 g2 | + g4 e4 e2 | f4 d4 d2 | c4 e4 g4 g4 | c,1 | + d4 d4 d4 d4 | d4 e4 f2 | e4 e4 e4 e4 | e4 f4 g2 | + g4 e4 e2| f4 d4 d2| c4 e4 g4 g4 | c,1 \bar "|." + } + }>> +} diff --git a/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuchSnippets/haenschenKlein.pdf b/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuchSnippets/haenschenKlein.pdf Binary files differnew file mode 100644 index 00000000000..b7389e279fe --- /dev/null +++ b/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuchSnippets/haenschenKlein.pdf diff --git a/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/printTestLiederbuch.pdf b/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/printTestLiederbuch.pdf Binary files differnew file mode 100644 index 00000000000..3963d06c0c5 --- /dev/null +++ b/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/printTestLiederbuch.pdf diff --git a/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/printTestLiederbuch.tex b/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/printTestLiederbuch.tex new file mode 100644 index 00000000000..88655925daf --- /dev/null +++ b/Master/texmf-dist/doc/latex/liederbuch/DemoProjekt/printTestLiederbuch.tex @@ -0,0 +1,11 @@ +\documentclass[a5paper, 11pt]{scrartcl} +\usepackage[ngerman]{babel} +\usepackage[utf8]{inputenc} +\usepackage{printLiederbuch} +\usepackage{TestLiederbuch} + +\begin{document} + +\printLiederbuch{TestLiederbuch} + +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/liederbuch/README.md b/Master/texmf-dist/doc/latex/liederbuch/README.md new file mode 100644 index 00000000000..66ebc3de718 --- /dev/null +++ b/Master/texmf-dist/doc/latex/liederbuch/README.md @@ -0,0 +1,46 @@ +# Liederbuch-Package +This is a LaTeX package for creating easy-to-use songbooks and including these songs in songbooklets for i.e. weddings. It is intended for songs, but it can include any content you want to reuse once in a while. + +This material is subject to the LaTeX Project Public License 1.3c. You can do whatever you want with it, just don't upload the same under the same name. + +The basic concept is to have one database, the Liederbuch (songbook) and a document fetching the songs from there. + +A songbook looks like that: +________ +\ProvidesPackage{testSongbook} +\RequirePackage{liederbuch} + +\begin{liederbuch}[publisher=me & date = today]{testSongbook-1} + +\begin{lied}[meta data=this is just a test & otherData = it really is a test]{var1}{144000} + No notes and text yet. +\end{lied} + +\begin{lied}{var2}{144000} + Same song, but different variant (var2) +\end{Lied} + +\begin{lied}{versionA}{001} + Another song with song number 001 in versionA. The version parameter exists, that song numbers can be overloaded. +\end{Lied} + +\end{liederbuch} + + +\begin{liederbuch}{testSongbook-2} + +\begin{lied}[meta data= some other values]{aSong}{1} + Another song in another songbook +\end{lied} +\end{liederbuch} +________ + +To call a song, you just write + +\LBsong{testSongbook-1}{144000}{var1} + +and it automatically adds the previous defined song to your document. + + +This is useful, if you reuse text segments, songs or graphics very often (you can store anything within \begin{Lied}...\end{Lied}). + diff --git a/Master/texmf-dist/doc/latex/liederbuch/liederbuch-documentation.pdf b/Master/texmf-dist/doc/latex/liederbuch/liederbuch-documentation.pdf Binary files differnew file mode 100644 index 00000000000..62ec38d9061 --- /dev/null +++ b/Master/texmf-dist/doc/latex/liederbuch/liederbuch-documentation.pdf diff --git a/Master/texmf-dist/doc/latex/liederbuch/liederbuch-documentation.tex b/Master/texmf-dist/doc/latex/liederbuch/liederbuch-documentation.tex new file mode 100644 index 00000000000..852d6d3b432 --- /dev/null +++ b/Master/texmf-dist/doc/latex/liederbuch/liederbuch-documentation.tex @@ -0,0 +1,1439 @@ +\documentclass[12pt,a4paper]{scrreprt} +\usepackage[utf8]{inputenc} +\usepackage[english]{babel} +\usepackage{amsmath} +\usepackage{amsfonts} +\usepackage{amssymb} +\usepackage{graphicx} +\usepackage[dvipsnames]{xcolor} +\usepackage{multicol} +\usepackage{tipa} +\usepackage{tikz} +\usepackage{longtable} +\usepackage[parfill]{parskip} % no indendation, though proper paragraph spacing +\usepackage{varioref} +\usepackage[hidelinks,colorlinks=false,bookmarks=false, + pdftitle={The Liederbuch-Package}, + pdfsubject={LaTeX}, + pdfkeywords={music,score,scores,notation,notes}, + pdfauthor={Gabriel Ruprecht}, + urlcolor=blue, + pdfstartview=Fit + ]{hyperref} +\usepackage{listings} +\lstset +{ %Formatting for code in appendix + language=TeX, + numbers=left, + stepnumber=1, + showstringspaces=false, + tabsize=1, + breaklines=true, + breakatwhitespace=false, + basicstyle=\ttfamily} +%\DeclareUnicodeCharacter{017F}{s} + +\begin{document} +{ +\def\vfill{\vskip 0pt plus 300pt minus 30pt \relax} +\begin{center} +\pagenumbering{gobble} +\mbox{}\vskip 50pt\relax +\textsf{\textbf{\huge The Liederbuch-Package}} +\vskip 12pt \relax +\textipa{\textbf{\large[D@ li:d\textturna bu:x-p\ae kIdZ]}} +\vfill\mbox{} +\vfill\mbox{} +{\Large Gabriel Ruprecht} +\vfill\mbox{} +\normalsize{created with a lot of help from \LaTeX .SX and the German lilypond-forum} +\vfill\mbox{} +\vfill\mbox{} +{\Large \today} +\vfill\mbox{} +\vfill\mbox{} +\vfill\mbox{} +\fbox{\includegraphics[height=0.42\paperheight , page=1]{DemoProjekt/DemoProjekt}} +\vskip 40pt\relax +Version 1.0 +\mbox{}\vskip -80pt\relax +\mbox{} +\end{center} +\newpage +\pagenumbering{arabic} +\setcounter{page}{2} +} + + + +%ſſſ + +\tableofcontents + + +\chapter{Introduction} +\label{Introduction} +The Liederbuch-Package originated in the search for a standardized, simple and fast way, to produce small songbooks for my fraternity\footnote{It is a German fraternity and therefore quite different from american ones.}. The idea was to provide a few commands to make a songbook. It should also include some designs and be easily usable by \mbox{non-\TeX -safe} people. + +It became very clear during the project, that it would be usefull to divide this into several parts: Mainly the Liederbuch-Package, the Liederheft-Package and the Fill-Pages-Package. Later the Real-Page-Package package came in addition. The first one provides commands and designs referring the songs, the second one provides commands and desings referring the songbook. Therefore the Liederbuch-Package can be used as well i.e. in a book about the history of folk songs. The Fill-Pages-Package and the Real-Page-Package become their own entity in CTAN (at least, that's the plan). + +\newpage +The sample on the title page uses just the following commands: +\begin{lstlisting}[breaklines,numbers=left] +\documentclass[a5paper, 11pt]{scrartcl} +\usepackage[ngerman]{babel} +\usepackage[utf8]{inputenc} +\usepackage{graphicx} +\usepackage{scrlayer-scrpage} + +\usepackage{TestLiederbuch} + + +\LBHead{% +{\Large \textbf{\print{title}}}\hfill\mbox{}\vspace*{5pt}\\ +\makebox[32pt]{Musik:\hfill} \print{composer} \\\makebox[32pt]{Text:\hfill} \print{lyricist}\vspace*{3pt} + +} +\LBFoot{Herausgabedatum: \print{date}\hfill\mbox{}} + +\setSpaceBeforeStropheValue{15pt plus 5pt} +\setSpaceAfterStropheValue{0pt plus 5pt} +\setSpaceBeforeHeadValue{15pt plus 10pt minus 5pt} +\setSpaceBeforeFootValue{15pt plus 10pt minus 5pt} + +\begin{document} + +\LBsong{TestLiederbuch}{1}{nt} + +\end{document} +\end{lstlisting} + +As you see, inside begin-end-document, there is only one line, which inserts the whole song of the songbook. The previous statements are just for the appearance of all songs. To access the songbook, here \glqq TestLiederbuch\grqq , you have to include it in the first place, via \verb+\usepackage{ }+ with the songbook name. + +\newlength\tempheight +\tempheight=\textheight +\textheight=1.05\textheight +\newpage +\textheight=\tempheight + +The songbook looks like the following. The \verb+\ns+, stands for new syllable (German: neue Silbe). The star just adds a dash between the syllables: +\begin{lstlisting}[breaklines,numbers=left] +\ProvidesPackage{TestLiederbuch} +\RequirePackage{liederbuch} + +\begin{liederbuch}[ +titleOfLargerWork = Test-Liederbuch & +date = 2017 & +seriesTitle = Demoprojekt +]{TestLiederbuch} + +\begin{lied}[title=Hänschen klein & lyricist=Volkslied \& überliefert & composer = Volkslied]{nt}{1} +{% +\notenzeile{\includegraphics[width=\linewidth,page=1]{./TestLiederbuchSnippets/haenschenKlein.pdf}}% +{\nspace{5pt} Häns \ns* chen \ns klein, \ns \ns ging \ns all \ns* ein \ns \ns in \ns die \ns wei \ns* te \nspace{4}} +\notenzeile{\includegraphics[width=\linewidth,page=2]{./TestLiederbuchSnippets/haenschenKlein.pdf}}% +{\nspace{12pt} Welt \ns hin \ns* ein. \ns \ns Stock \ns und \ns Hut \ns steht \ns ihm \ns gut, \nspace{5}} +\notenzeile{\includegraphics[width=\linewidth,page=3]{./TestLiederbuchSnippets/haenschenKlein.pdf}}% +{\nspace{6} ist \ns gar \ns wohl \ns* ge \ns* mut. \nspace{5} Ab \ns* er \ns Mut \ns* ter \nspace{3} } +\notenzeile{\includegraphics[width=\linewidth,page=4]{./TestLiederbuchSnippets/haenschenKlein.pdf}}% +{\nspace{4} wein \ns* et \ns sehr, \ns hat \ns ja \ns wohl \ns kein \ns Häns \ns* chen \ns mehr. \nspace{2} } +\notenzeile{\includegraphics[width=\linewidth,page=5]{./TestLiederbuchSnippets/haenschenKlein.pdf}}% +{\nspace{5} Da \ns be \ns* sinnt \ns \ns sich \ns das \ns Kind, \ns \ns kehr \ns* et \ns heim \ns ge \ns* schwind \nspace{2} } +} +\end{Lied} + +\end{liederbuch} +\end{lstlisting} + + +As you see, the big frame is the Liederbuch-environment (songbook), inside which several Lieder (songs) can be. Each garnished with some meta data. If you look back to the cover page, you can see, that this meta data can be used in the header and footer of the songs. Each \verb+\notenzeile+ command takes two arguments: The score image and the lyrics. + + +\chapter{General information} +\section{Terminology} +The following list is for understanding the structure of the commands. +\begin{enumerate} +\item \emph{GFM} are the tokens which precede every internal command of the package. They also precede some end-user commands. These are the first letters of all the first names of the original author (Gabriel Franz Maria). If some George Florian Michael in Oklahoma uses the same scheme, I'm really sorry, for the interference and incompability. +\item \emph{Lied/Lieder} is German and translates to song/songs. +\item \emph{Buch} translates to book +\item \emph{Heft} translates to notebook, booklet +\item \emph{Liederheft} translates to songbook. It describes a small songbook you use i.e. for weddings and is made out of a few printed pages, stapled together. +\item \emph{Liederbuch} translates to songbook also. But it describes the songbook, you copied the songs for the i.e. wedding from. +\item \emph{Note(n)} means note(s) as in music. +\item \emph{Zeile} means line as in text line. +\item All the internal Commands follow the same rule of \\\verb+\GFM@CurrentPackageAbbreviation@CommandName+ +\end{enumerate} + + + + +\newpage +\section{The Different Parts of the Liederbuch-Package} +The following subsections are short descriptions of the packages. The full description is provided in each corresponding chapter. +\subsection{Liederbuch} +This (main) package provides commands and environments to create songbooks which can be used elsewhere. The features are: +\begin{itemize} +\item the font of the lyrics appear in the current \LaTeX -font (can be overridden in the songbooks) +\item customizeable spaces to change the appearance of the imported song. i.e. space before song head, space after song head etc. These spaces also allow the use of \verb+plus+ and \verb+minus+, the way they are used in skips. +\item use predefined head and foot styles for the songs or create your own styles. +\item use meta data in the headers and footers. i.e. song title, composer, copyright, etc. +\end{itemize} +This package is not used in the document but in the sty-file, which serves as the songbook. If you have your songbook defined in the preamble, you need to load the package in the document of course. + + +\subsection{Liederheft - unfinished, better do not use yet} +This is a class, which provides commands and environments to easily create small booklets. This includes several predefined designs. This package is not limited to songbooks. It can be used for anything which has the character of a stapled home made booklet for one time use. + + +\subsection{Print Liederbuch} +This allows you to list all content of a songbook (liederbuch), you created. It is much more comfortable than looking at the source code. + + +\chapter{Liederbuch-Package} +This package provides the commands to create the songbooks, aka databases, where you choose the songs from. + + +\section{Basics} +On figure \vref{abb:LiBa1} you see the layout of each song. The head, notes, songtext and foot is grouped in boxes. These boxes are vertically aligned according to the spaces which can include \verb+plus minus+. Example: +\begin{lstlisting}[numbers=none] + \setSpaceBeforeHead{30pt plus 1fil minus 2pt} +\end{lstlisting} +About the songtext and its alignment, we get into detail later. + +\begin{figure} +\hskip 0pt plus 3pt minus 3pt\begin{tikzpicture} +\tikzset{inner sep=0pt, outer sep= 0pt} + +%\node [above] at (0.5\textwidth, 0) {\parbox{\textwidth}{\texttt{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque.}}}; +%Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem.}}; + + +%\draw [dotted,thin] (\textwidth,0) -- (\textwidth,-19); +%\draw [dotted,thin] (0,0) -- (0,-19); + +\draw [dashed,very thick] (0,1.5) -- (\textwidth,1.5); +\draw [very thick] (0,1.5) -- (0,0) -- (\textwidth,0) -- (\textwidth,1.5); +\node at (0.5\textwidth, 0.75){\verb+some running text+}; + + +\tikzset{shift={(0,-1)}} + +\draw [<->, very thick] (0.35\textwidth, 0) -- (0.35\textwidth, 1); +\node [right] at (0.37\textwidth, 0.5){\verb+\spaceBeforeHead+}; + +\tikzset{shift={(0,-0.6)}} + +\draw [very thick] (0,0) rectangle (\textwidth,0.6); +\node at (0.5\textwidth, 0.3){\verb+head+}; + +\tikzset{shift={(0,-1)}} + +\draw [<->, very thick] (0.35\textwidth, 0) -- (0.35\textwidth, 1); +\node [right] at (0.37\textwidth, 0.5){\verb+\spaceAfterHead+}; + +\tikzset{shift={(0,-1)}} + +\draw [<->, very thick] (0.35\textwidth, 0) -- (0.35\textwidth, 1); +\node [right] at (0.37\textwidth, 0.5){\verb+\spaceBeforeNotes+}; + +\tikzset{shift={(0,-0.6)}} + +\draw [very thick] (0,0) rectangle (\textwidth,0.6); +\node at (0.5\textwidth, 0.3){\verb+notes+}; + +\tikzset{shift={(0,-1)}} + +\draw [<->, very thick] (0.35\textwidth, 0) -- (0.35\textwidth, 1); +\node [right] at (0.37\textwidth, 0.5){\verb+\spaceAfterNotes+}; + +\tikzset{shift={(0,-1)}} + +\draw [<->, very thick] (0.35\textwidth, 0) -- (0.35\textwidth, 1); +\node [right] at (0.37\textwidth, 0.5){\verb+\spaceBeforeSongLyrics+}; + +\tikzset{shift={(0,0)}} + +\draw [very thick] (0,0) rectangle (\textwidth,-2.5); +\node at (0.5\textwidth, -0.5){\verb+songtext below notes+}; + +\draw [<->, very thick] (0,-2) -- (2, -2); +\node at (1, -1.5){\verb+\nspace+}; + +\node at (2.5, -2){\verb+word+}; + +\draw [<->, very thick] (3,-2) -- (5, -2); +\node at (4, -1.5){\verb+\ns+}; + +\node at (5.5, -2){\verb+word+}; + +\draw [<->, very thick] (6,-2) -- (8, -2); +\node at (7, -1.5){\verb+\ns+}; + +\node at (9, -2){\verb+syllable+}; + +\draw [<->, very thick] (10,-2) -- (10.8, -2); +\node at (11, -1.2){\verb+\ns*+}; + +\draw [thick](10,-1.85) [out=90, in= -90] to (11,-1.5) [out=-90, in= 90] to (12, -1.85); +\node at (11, -2){\verb+-+}; + +\draw [<->, very thick] (11.2,-2) -- (12, -2); + +\node at (13, -2){\verb+syllable+}; + +\draw [<->, very thick] (14,-2) -- (15.75, -2); +\node at (14.875, -1.5){\verb+\nspace+}; + +\tikzset{shift={(0,-3.5)}} + +\draw [<->, very thick] (0.35\textwidth, 0) -- (0.35\textwidth, 1); +\node [right] at (0.37\textwidth, 0.5){\verb+\spaceAfterSongLyrics+}; + +\tikzset{shift={(0,-1)}} + +\draw [<->, very thick] (0.35\textwidth, 0) -- (0.35\textwidth, 1); +\node [right] at (0.37\textwidth, 0.5){\verb+\spaceBeforeNotes+}; + +\tikzset{shift={(0,-0.6)}} + +\draw [very thick] (0,0) rectangle (\textwidth,0.6); +\node at (0.5\textwidth, 0.3){\verb+notes+}; + +\tikzset{shift={(0,-1)}} + +\draw [<->, very thick] (0.35\textwidth, 0) -- (0.35\textwidth, 1); +\node [right] at (0.37\textwidth, 0.5){\verb+\spaceAfterNotes+}; + +\tikzset{shift={(0,-1)}} + +\draw [<->, very thick] (0.35\textwidth, 0) -- (0.35\textwidth, 1); +\node [right] at (0.37\textwidth, 0.5){\verb+\spaceBeforeSongLyrics+}; + +\tikzset{shift={(0,-1.5)}} + +\draw [very thick] (0,0) rectangle (\textwidth,1.5); +\node at (0.5\textwidth, 1.0){\verb+songtext below notes+}; +\node at (0.5\textwidth, 0.4){\verb+like above+}; + +\tikzset{shift={(0,-1)}} + +\draw [<->, very thick] (0.35\textwidth, 0) -- (0.35\textwidth, 1); +\node [right] at (0.37\textwidth, 0.5){\verb+\spaceAfterSongLyrics+}; + +\tikzset{shift={(0,-1)}} + +\draw [<->, very thick] (0.35\textwidth, 0) -- (0.35\textwidth, 1); +\node [right] at (0.37\textwidth, 0.5){\verb+\spaceBeforeFoot+}; + +\tikzset{shift={(0,-0.6)}} + +\draw [very thick] (0,0) rectangle (\textwidth,0.6); +\node at (0.5\textwidth, 0.3){\verb+foot+}; + +\tikzset{shift={(0,-1)}} + +\draw [<->, very thick] (0.35\textwidth, 0) -- (0.35\textwidth, 1); +\node [right] at (0.37\textwidth, 0.5){\verb+\spaceAfterFoot+}; + +\tikzset{shift={(0,-1.5)}} + +%\node [below] at (0.5\textwidth, 0) {\parbox{\textwidth}{\texttt{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris.}}}; +%Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque.}}; +%Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem.}}; + +\draw [dashed,very thick] (0,0) -- (\textwidth,0); +\draw [very thick] (0,0) -- (0,1.5) -- (\textwidth,1.5) -- (\textwidth,0); +\node at (0.5\textwidth, 0.75){\verb+some running text+}; + +\end{tikzpicture}\hskip 0pt plus 3pt minus 3pt +\vskip 10pt plus 10pt minus 10pt +\caption{layout and spacing of a page with several musical lines\hskip 0pt plus 1filll\mbox{}} +\label{abb:LiBa1} +\vskip -14pt +\end{figure} + +%%In \varioref{} +% +%\begin{figure} +%\begin{tikzpicture} +%\draw [very thick] (0,0) -- (0,1) -- (\textwidth,1) -- (\textwidth,0); +%\node at (0.5\textwidth, 0.5){music staff with notes, loaded from image}; +% +%\tikzset{shift={(0,-1.5)}} +% +%\draw [very thick] (0,0) rectangle (\textwidth,1.5); +% +%\draw [<->, very thick] (0.0\textwidth, 0.5) -- (0.2\textwidth, 0.5); +%\node at (0.1\textwidth, 1){\verb+\nspace{x pt}+}; +% +%\draw [very thick] (0.2\textwidth,0.25) rectangle (0.3\textwidth,0.75); +%\node at (0.25\textwidth, 0.5){Word}; +% +%\draw [<->, very thick] (0.3\textwidth, 0.5) -- (0.4\textwidth, 0.5); +%\node at (0.35\textwidth, 1){\verb+\ns+}; +% +%\draw [very thick] (0.4\textwidth,0.25) rectangle (0.45\textwidth,0.75); +%\node at (0.425\textwidth, 0.5){Syl}; +% +%\draw [<-, very thick] (0.45\textwidth, 0.5) -- (0.49\textwidth, 0.5); +%\node at (0.5\textwidth, 1){\verb+\ns*+}; +%\draw [very thick] (0.49\textwidth, 0.35) rectangle (0.51\textwidth, 0.65); +%\node at (0.5\textwidth, 0.5){-}; +%\draw [->, very thick] (0.51\textwidth, 0.5) -- (0.55\textwidth, 0.5); +% +% +%\draw [very thick] (0.55\textwidth,0.25) rectangle (0.6\textwidth,0.75); +%\node at (0.575\textwidth, 0.5){la}; +% +%\draw [<-, very thick] (0.6\textwidth, 0.5) -- (0.64\textwidth, 0.5); +%\node at (0.65\textwidth, 1){\verb+\ns*+}; +%\draw [very thick] (0.64\textwidth, 0.35) rectangle (0.66\textwidth, 0.65); +%\node at (0.65\textwidth, 0.5){-}; +%\draw [->, very thick] (0.66\textwidth, 0.5) -- (0.7\textwidth, 0.5); +% +% +%\draw [very thick] (0.7\textwidth,0.25) rectangle (0.75\textwidth,0.75); +%\node at (0.725\textwidth, 0.5){bies}; +% +%\draw [<->, very thick] (0.75\textwidth, 0.5) -- (1.0\textwidth, 0.5); +%\node at (0.875\textwidth, 1){\verb+\nspace{y pt}+}; +% +% +%\end{tikzpicture} +%\caption{layout and spacing of one musical line $\backslash$notezeile\{notes\}\{text\}\hskip 0pt plus 1filll\mbox{}} +%\label{abb:LiBa} +%\end{figure} + +%\LBsong{Test}{1}{nt} + +\section{What the packages uses} +The package makes use of the following packages. This is just for your information and has almost no practical use. It is mostly internals: +\begin{itemize} +\item xparse\\ +Used for commands with more than one optional arguments and use of the * for multiple variants for commands. +\item graphicx\\ +Not explicitely necessary, but necessary in most cases. Includes the note-snippets. +\item etoolbox\\ +Used for creating command sequences +\item environ\\ +Used for creating the Environments for the Liederbuch-package +\item pgfmath\\ +Needed for using length in relation to the linewidth. If you do not use any unit for \verb+\nspace{<some value>}+, it is read as percent of linewidth. This is very usefull, as the target linewidth might change a bit, and the alignment of the syllables wouldn't fit to the notes. +\end{itemize} + +\section{User Commands} + +\subsection{Building a Songbook} +Every songbook consists of at least one sty-file. You can also put the songbook into the preamble like in GFM-Setzhilfe\footnote{This file can be downloaded from the git repo of the package: \href{https://bitbucket.org/maestro-glanz/liederbuch-package/src/master/}{bitbucket--liederbuch-package}} (typesetting helper), but the intended use is to have a separate file. This file contains the actual database (and may call other databases/songbooks itself). Furthermore, there may be score snippets for adding notes to the lyrics, pixel graphics from scans and other resources. + +If you create and package a songbook, it should follow certain rules concerning the folder structure: +\begin{lstlisting}[numbers=none] +A new folder for all the content: +./this_is_an_example + +And in this folder the sty-file and pdf-snippets (or png-graphics for example): +./this_is_an_example/this_is_an_example_songbook.sty +./this_is_an_example/01_song_snippet.ly +./this_is_an_example/01_song_snippet.pdf +./this_is_an_example/02_another_song_snippet.ly +./this_is_an_example/02_another_song_snippet.pdf +./this_is_an_example/03_summertime_(gershwin).ly +./this_is_an_example/03_summertime_(gershwin).pdf +./this_is_an_example/04_On_the_Road_Again_Version-A.ly +./this_is_an_example/04_On_the_Road_Again_Version-A.pdf +./this_is_an_example/04_On_the_Road_Again_Version-B.ly +./this_is_an_example/04_On_the_Road_Again_Version-B.pdf +\end{lstlisting} + +If you have a songbook made by someone else, you are fine. If you haven't, you need to build it yourself. The preamble of the sty-file contains the following lines: +\begin{lstlisting} + \ProvidesPackage{name of the songbook} + \RequirePackage{liederbuch} +\end{lstlisting} +You may add some of your own packages you want to use in the songbook. For example if you typeset the scores with musixtex, you can add this package. If you want to use tikz instead, you are free to go. Most likely, you will use the graphicx-package, as using pdf-snippets is the imho best way, to use this package. + +To start a songbook, you must first write these lines: +\begin{lstlisting}[numbers=left,firstnumber=5] + \begin{liederbuch}[<meta data>]{<name of the songbook>} + % the songs (Lieder-environments) go here + [...] + [...] +\end{lstlisting}\vskip -13pt\relax +\begin{lstlisting}[numbers=left,firstnumber=78] + [...] + \end{liederbuch} +\end{lstlisting} +This must contain all songs. This environment is provided by \textit{liederbuch}. What the meta data does, we will come to at a later point. After you created a songbook, you can create songs inside it. Every song number can be included multiple times in different variants. If two songs have the same number and the same variant tag, the later overwrites the first: +\begin{lstlisting}[numbers=left,firstnumber=14] + \begin{lied}[<meta data>]{<variant>}{<song number>} + <the song content> + \end{lied} +\end{lstlisting} +The song number identifies the songs. If you have to different kinds of song number 123 (i.e. piano score and choir score), you can make two different variants. i.e. \verb+ps+ and \verb+cs+. The way, you name the variants, is up to you. At can be anything beside the \verb+\empty+-command-sequence. + +Neither song number, nor variant has to be an actual number. You can write ''One'' instead of ''1''. It will work, but you should be at least consistent over the whole song boook. And writing eight-hundred-sixty-one instead of a numeral is highly depreciated. + + +\noindent\rule{\textwidth}{1pt} + +{\Large \textbf{Example}} + +\noindent Assuming you have the following songbook created: +\begin{lstlisting}[numbers=left,firstnumber=30] + \begin{liederbuch}{testSongbook} + \begin{lied}[% + meta data=this is just a test &% + otherData = it really is]% + {var1}{144000} + No notes and text yet. + \end{lied} + \end{liederbuch} +\end{lstlisting} +If you call the song with +\begin{lstlisting}[numbers=left,firstnumber=72] + \LBsong{testSongbook}{144000}{var1} +\end{lstlisting} +the ouput will be +\begin{lstlisting}[numbers=none] + No notes and text yet. +\end{lstlisting} +The meta data elements are not used yet, but can be used later.\vspace*{-2ex} + +\noindent\rule{\textwidth}{1pt} + +The output should be an actual song of course. To typeset these, there are several commands inside(!) the Lied-environment available.\vspace*{-30pt} + +\newpage +\noindent\rule{\textwidth}{1pt} + +{\Large \textbf{Extended example}} + +You start of course with the Liederbuch environment first: +\begin{lstlisting}[firstnumber=7] + \begin{liederbuch}[% + songbook=Old Irish Folk Songs &% + author = Travis O'Connor] + + \begin{lied}[ + title = What shall we do with a drunken saylor & + composer = Traditional & + lyricist = Probably a drunken saylor] + %The notenzeile command goes here + \end{lied} + + \begin{lied}[ + title = My lad got beaten up in the pub & + composer = Johnny O'Neeye % + lyricist = Jimmy Jailedup + ] + %The notenzeile commands goes here + \end{lied} + + \end{liederbuch} +\end{lstlisting} + +For every combination of notes and text, you use one notenzeile command. If your song score has 5 lines of notes, you need the notenzeile command 5 times, if it is 3 lines, you need it 3 times. The notenzeile command is smart enough to show several strophes of text for one line, if needed: +\begin{lstlisting}[firstnumber=15] + \notenzeile[linewidth of the line | default:\linewidth] + {the part with the notes from the score}% + {the text of strophe 1}% + [the text of strophe 2]% + [the text of strophe 3]% + [the text of strophe 4]% + [the text of strophe 5]% + [the text of strophe 6]% + \notenzeile{\includegraphics[width=\linewidth,page=2]{somePath}}% + {\nspace{5} This \ns is \ns the \ns line \ns two \nspace{3}} + \notenzeile{\includegraphics[width=\linewidth,page=3]{somePath}}% + {\nspace{3em} and \ns three \ns of \ns the \ns do \ns* cu \ns* ment \ns of do cu ments\nspace{7pt}} +\end{lstlisting} + +As you see, the strophe numbers 2 and above are optional arguments. Standard case should be one line of text for one line of notes, but you can add more. If you need more than 6 strophes below one line of notes, you do something, which you shouldn't do. If you want more, you can hack the source code. + +Inside of the notenzeile command, there are several commands available: +\begin{lstlisting}[numbers=none] + \songLyrics{} + % This in an internal command, but you can use it. It creates a makebox, with the \ns, \ns* and \nspace commands available inside. + + \ns[space correction] + % This divides two words. You can optionally add an offset to the command, which shifts the next syllable (positive = right, negative = left). You can use standard length units. If you don't use any unit, percent-linewidth is used. + + \ns*[space correction] + % It is exactly like \ns, but it adds a dash in between. It is meant to divide syllables of one word. + + \nspace{length} + % This does exactly the same as hspace*, but this command also accepts no unit (just a number without an unit), which is interpreted as percent-linewidth. + + \multiline{0.5\linewidth}{text for strophe 1}{text for str 2}[str. 3][4][5][6] + % This is usefull, if your song switches to refrain within one line or only some section of one song line has two text lines. It creates several stacked lines within one line. +\end{lstlisting} + +So far, this creates all the notes and text together. Normally, songs are typeset, that only the first strophe is below the notes, the other strophes are printed as text blocks. + +These text blocks are built by the strophe environment: +\begin{lstlisting}[numbers=none] + \begin{strophe}[strophe number] + Some text in any format. + \end{strophe} +\end{lstlisting} +Normally, the strophe numbers are automatically counted up for every use of the strophe environment. So, the first time, you use this environment in each song, you should override this with the optional parameter strophe number. I.e. if the first usage is number 2, then you write \verb+\begin{strophe}[2]+. The next strophe will then be automatically~3. + +\subsection{Using a Songbook} +\label{LiUsUs} +Using a songbook is pretty easy. You must include the songbooks with +\begin{lstlisting}[numbers=none] + \usepackage{nameOfSongbook} +\end{lstlisting} + +and call the desired song with +\begin{lstlisting}[numbers=none] + \LBsong{songbook}{number}{variant} +\end{lstlisting} +Note: The name of the package you use needn't be the same name of the songbook. You can define the songbook \verb+abc+ inside a sty-file called \verb+alphabet+. But it is highly discouraged. + +There are several versions of each songnumber possible. Due to the variant, you can store the piano version of a song in the same songbook as the choir music version. +If you use \verb+\LBsong{paradiseSongs}{42}{4voice}+ for example, you get the song number 42 out of the paradiseSongs-songbook in the version for four voices (which of course you must have defined beforehand). + +If some meta data is incorrect and you can not or shouldn't change the source songbook, you can edit the meta data with the +\begin{lstlisting}[numbers=none] + \tweakMetaData{songbook}{song number}{song variant}{meta data element} +\end{lstlisting} +command. It just overwrites the meta data element, that was created for that specific song at load time. The principle is the same as in \verb+\GFM@LB@unpackage+. + +\newpage +\subsection{Creating a Theme} + +The appearance of the songs consist mainly of three things: +\begin{itemize} +\item Header +\item Footer +\item Spacing +\end{itemize} +Changing the background of the songs isn't supported yet and might never be. + +The header and footer can be edited via +\begin{lstlisting}[numbers=none] + \LBHead{Definition} +\end{lstlisting} +and +\begin{lstlisting}[numbers=none] + \LBFoot{Definition} +\end{lstlisting} + +Here you can use the meta data-values given in the song. As you might remember, the songs are defined as i.e. + +\begin{lstlisting} + \begin{liederbuch}[ + titleOfLargerWork = Test-Liederbuch & + date = 2017 & + seriesTitle = Demoprojekt + ]{TestLiederbuch} + + \begin{lied}[title=Hänschen klein & lyricist=Volkslied \& Überliefert & composer = Volkslied]{nt}{1} + ... something ... + \end{lied} + \end{liederbuch} +\end{lstlisting} + +An example header and footer would look like this: +\label{LiUsCrEx} +\begin{lstlisting} + \LBHead{\Large\print{title}\\ + \normalsize Taken from \print{titleOfLargerWork}\hspace{30pt}\print{composer}} + + \LBFoot{\print{date}\hfill\print{seriesTitle}} +\end{lstlisting} + +As you see, the print-command prints any meta data, which had been defined before. If it is undefined, the print-command prints nothing. This example is of course not the peak of human art work, but it showcases the concept. It is possible to include almost anything (no limitations known yet). For the naming of the meta data refer to section \ref{LiUsMe} \vnameref{LiUsMe}. + +For adjusting the spaces, you can use the following commands. They work with \verb+\vskips+ and can optionally take \verb+plus+ and \verb+minus+. These are the commands to edit the spaces with some example values: +\begin{lstlisting}[numbers=none] + \setSpaceBeforeHeadValue{3pt plus 0pt minus 1.5pt} + \setSpaceAfterHeadValue{-1pt plus 4pt} + \setSpaceBeforeNotesValue{2pt minus 1pt} + \setSpaceAfterNotesValue{4pt} + \setSpaceBeforeStropheValue{3em plus 1pt minus 0.2in} + \setSpaceAfterStropheValue{0pt} + \setSpaceBeforeSongLyricsValue{0pt} + \setSpaceAfterSongLyricsValue{0pt} + \setSpaceBeforeFootValue{0pt} + \setSpaceAfterFootValue{0pt} +\end{lstlisting} + +\subsection{Using printliederbuch} +If you want to have a catalogue of all your songs in a songbook, you can use \verb+printliederbuch+. You just need a simple document like this: +\begin{lstlisting} + \documentclass[a5paper, 11pt]{scrartcl} + \usepackage[ngerman]{babel} + \usepackage[utf8]{inputenc} + \usepackage{printliederbuch} + \usepackage{TestLiederbuch} + + \begin{document} + + \printLiederbuch{TestLiederbuch} + + \end{document} +\end{lstlisting} +You need a \verb+documentclass+ of your liking, add some packages of your liking and then you need first, the printliederbuch package and second, the songbook, you want to have a catalogue of. The order is important. Your document needs only one command, the \verb+\printLiederbuch+ command. + +\newpage +\subsection{Tips and tricks} +\subsubsection{First the outer spacing, then the syllable spacing} +Start by doing the outer spacing first. If these are your lyrics +\begin{lstlisting}[numbers=none] +{Hänschen klein ging allein in die weite} +\end{lstlisting} +you start by adding the outer space and separating all syllables +\begin{lstlisting}[numbers=none] +{\nspace{7} Häns \ns* chen \ns klein \ns ging \ns all \ns* ein \ns in \ns die \ns wei \ns* te \nspace{4}} +\end{lstlisting} +Once the first and last syllable looks good, you can proceed with the adjustment of the space between the syllable (see next sections). + +\subsubsection{Replacing $\backslash ns*$ with $\backslash ns - \backslash ns$} +If \verb*+ \ns* + separates two long syllables like ''Schne-cken'', \verb*+ \ns* + will to its job. But if the syllables are short like ''O-lé'' or the notes are long, you better replace it with \verb*+ \ns - \ns +. If this is a little bit too long, you can use \verb*+\ns -\ns+ instead. + +\subsubsection{Double $\backslash ns$ and $\backslash nspace\{ x\}$} +Normally in songs, note lengths tend to be only two different lengths per line. i.e. if your shortest length is a quarter note, the second length is a half note. If the shortest is an eighth, the second one is a quarter. It is rather rare, that a third length occurs. Maybe a dotted note. Most notation software makes the space after a longer note a little bit longer. + +Best practice has been to make one \verb+\ns+ after each shortest note duration and two \verb+\ns+ after. For longer notes it is better to use a \verb+\nspace{x}+ inline (with x=3 for example). + +\includegraphics[width=\linewidth,page=1]{DemoProjekt/TestLiederbuchSnippets/haenschenKlein} +gets this song text: +\begin{lstlisting}[numbers=none] +\nspace{7} Häns \ns* chen\ns klein \ns ging \ns all \ns* ein \ns \nspace{4} in \ns \ns die \ns \ns wei \ns* te \nspace{4} +\end{lstlisting} +7\% linewidth space on the left, 4\% on the right. The syllable ''-chen'' is very long. Therefore, a second \verb+\ns+ isn't needed, though the corresponding note is a half note. ''in'' and ''die'' are very short syllables, a second \verb+\ns+ does the trick. After ''\verb+\ns*+ ein'' two \verb+\ns+ isn't enough, therefore a \verb+\nspace{4}+ does the trick. + +\subsubsection{Omitting a space here and there} +You might have noticed in the previous example, that after ''-chen'' there is no space. Normally it is \verb*+ \ns + and normally it should be. But in this case, the syllable is already pretty long and we need to get rid of a bit of space. Therefore, the space before is omitted and it is \verb*+\ns + instead. You can only omit the space before \verb+\ns+ not after. + +\subsubsection{Hard spaces (\char`~ ) for short syllables} +In die following example + +\includegraphics[width=\linewidth,page=3]{DemoProjekt/TestLiederbuchSnippets/haenschenKlein} +the text is like this: +\begin{lstlisting}[numbers=none] +\nspace{6} ist \ns gar \ns wohl \ns* ge\ns -\ns mut. \nspace{6} Ab \ns* er~ \ns Mut \ns* ter \nspace{3.5} +\end{lstlisting} +The syllable ''\verb+\ns*+ er'' is very short. The spacing will work better, if it is a little bit longer, so we add a hard space (\char`~ ) to the syllable to make it longer. + +\newpage +\subsection{Meta Data} +\label{LiUsMe} + +The Sheet Music Consortium has created a list of tags for their sheet music to make it easy to find in the database. This seems to be a sensible scheme and is therefore partially reused for the meta data (see \url{https://digital.library.ucla.edu/sheetmusic/aboutProject.html#NameforSMCmetadata-NameMetadata}). The scheme here is mostly taken from there. Another scheme is \url{https://www.dlib.indiana.edu/smcmigrator/fieldnamehelp.php}. A website which doesn't exist any more. There are also some parts taken from there. All the tags in these schemes had been unified and consolidated in this list here. Therefore it is kind of a third deviating scheme taking from both of them and trying to have as least dicrepancies to them as possible. This scheme here also ommits a few parts, which seemed to duplicate others or seemed totally over the top. This section is already totally over the top and awfully perfectionist. + +\vskip 15pt\relax +%\newpage + +\textbf{Subsections:}\vspace{10pt}\\ +\hspace*{40pt}% +\parbox{0.8\linewidth}{% +\begin{multicols}{2}% +{% +\setcounter{secnumdepth}{3}% +\begin{itemize} +\item[\ref{LiUsMeTi}] \nameref{LiUsMeTi} +\item[\ref{LiUsMeNa}] \nameref{LiUsMeNa} +\item[\ref{LiUsMeSu}] \nameref{LiUsMeSu} +\item[\ref{LiUsMeId}] \nameref{LiUsMeId} +\item[\ref{LiUsMeRe}] \nameref{LiUsMeRe} +\item[\ref{LiUsMeNotedescription}] \nameref{LiUsMeNotedescription} +\item[\ref{LiUsMeDa}] \nameref{LiUsMeDa} +\item[\ref{LiUsMeLa}] \nameref{LiUsMeLa} +\item[\ref{LiUsMeTy}] \nameref{LiUsMeTy} +\item[\ref{LiUsMeOr}] \nameref{LiUsMeOr} +\item[\ref{LiUsMePh}] \nameref{LiUsMePh} +\item[\ref{LiUsMeAb}] \nameref{LiUsMeAb} +\item[\ref{LiUsMeTa}] \nameref{LiUsMeTa} +\item[\ref{LiUsMeIn}] \nameref{LiUsMeIn} +\item[\ref{LiUsMeCa}] \nameref{LiUsMeCa} +\item[\ref{LiUsMeCl}] \nameref{LiUsMeCl} +\item[\ref{LiUsMeLo}] \nameref{LiUsMeLo} +\end{itemize}% +}% +\end{multicols} +}%parbox + +\newpage +\subsubsection{Titles} +\label{LiUsMeTi} +\newcommand*\Tag[3]{{\ttfamily #1} & {\ttfamily =} & {\ttfamily #2} & #3} + +Each resource should have at least one title element associated with it. The following fields can be used to describe titles: + +\renewcommand{\arraystretch}{1.5} + +\begin{tabular}{p{0.22\textwidth} c p{0.28\textwidth} p{0.40\textwidth}} +Tag & & value examples & description\\ +\hline +\Tag{title}{Gaudeamus igitur}{A word or phrase that names the resource being described.}\\ +\Tag{subtitle}{iuvenes dum sumus}{Secondary word or phrase that names the resource being described.}\\ +\Tag{alternativeTitle}{De brevitate vitae}{The "alternative title" data is used for other titles not covered elsewhere in the meta data record.}\\ +\Tag{firstLine}{Gaudeamus igitur, iuvenes dum sumus}{The "First Line" data is a direct transcription of the first line of lyrics appearing in the song.}\\ +\Tag{firstLineofChorus}{no chorus}{The "first line of chorus" data is a direct transcription of the first line of the chorus (refrain) appearing in the song.}\\ +\Tag{titleOfLargerWork}{Allgemeines deutsches Kommersbuch}{The "title of larger work" data is used when the item being cataloged is known to be one part of a larger work with a known title.}\\ +\Tag{seriesTitle}{German student song books}{The "series title" data is used to record a named series to which the item being cataloged belongs.}\\ +\Tag{uniformTitle}{no idea, sorry}{A Uniform Title (also known as a Work Title) is a specific cataloger-created title as prescribed by the rules in AACR2. It is used to indicate clearly the musical work represented in a piece of sheet music.}\\ +\end{tabular} + +\newpage +\subsubsection{Names} +\label{LiUsMeNa} +\begin{longtable}{p{0.22\textwidth} c p{0.28\textwidth} p{0.40\textwidth}} +Tag & & value examples & description\\ +\hline +\Tag{composer}{traditional}{"Composer" meta data is used to record the name of individuals or corporate bodies responsible for creating the musical content of the work being cataloged.}\\ +\Tag{arranger}{I don't know}{"Arranger" meta data is used to record the name of individuals or corporate bodies responsible for the transforming the musical content of the work being cataloged from its original form, genre, instrumentation, etc., to another for publication. In an arrangement the musical substance remains essentially unchanged.}\\ +\Tag{lyricist}{some guy of the 19th century}{"Lyricist" meta data is used to record the name of an individual or corporate body responsible for creating the lyrics or text of the work being cataloged.}\\ +\Tag{performer}{The "hohe Kneipcorona"}{"Performer" meta data is used to record the name of an individual or corporate body indicated on the item being cataloged as a known performer of the work.}\\ +\Tag{dedicatee}{Not for Elise}{"Dedicatee" meta data is used to record the name of an individual or corporate body to whom the work or publication is dedicated. Do not us record information about handwritten dedications printed on an item after publication; use "Note" for this purpose instead.}\\ +\Tag{otherName}{Unter Mitwirkung der Lindenwirtin entstanden}{"Other name" meta data is used to record the name of an individual or corporate body responsible for the creation of the item being cataloged that is deemed important but not appropriate for use in any other "Name" or "Publication" data. Do not record individuals or corporate bodies named in lyrics; use "Name as Subject" for this purpose instead.}\\ +\Tag{engraver}{Gabriel Ruprecht}{The person or organisation, who engraved the sheet music. Commonly with the help of a program like lilypond.}\\ +\Tag{lithographer}{Heidenhain 600}{The person or company producing the printing plates of the sheet music, if deviating from "publisherName".}\\ +\Tag{coverEngraver}{Andy Warhol's wife}{"Engraver" meta data is used to record the name of an individual or corporate body responsible for the cover engraving on the publication being cataloged, if deviating from "engraver"}\\ +\Tag{coverLithographer}{The gremlin in Andy Warhol's basement}{Use "Lithographer" to record the name of an individual or corporate body responsible for the cover lithography on the publication being cataloged, if deviating from "lithographer"}\\ +\Tag{coverArtist}{Andy Warhol himself}{"Artist" meta data is used to record the name of an individual or corporate body responsible for the cover art on the publication being cataloged.}\\ +\end{longtable} + +\newpage +\subsubsection{Subject} +\label{LiUsMeSu} +\begin{longtable}{p{0.22\textwidth} c p{0.28\textwidth} p{0.40\textwidth}} +Tag & & value examples & description\\ +\hline +\Tag{topicalSubject}{Drinking beer}{In a song with lyrics "Topical Subject" is used to record what topics occur in the song's lyrics.}\\ +\Tag{nameAsSubject}{Professor Ubisunt Quiantenos}{"Name as Subject" is used to record a personal or corporate name that is the subject of a song's lyrics.}\\ +\Tag{formGenreStyle}{Student songs}{"Form/Genre/Style" may be used to record the class or category of music, including the musical style(s) of a work. Form is often described as the organizing element in music, or the historically or functionally specific kind of material.}\\ +\Tag{temporalSubject}{Romantic period}{The "Temporal Subject" meta data is used to record a named time period relevant to the item being cataloged.}\\ +\Tag{instrumentation}{Vocal}{A listing of the performing forces called for by a particular piece of sheet music, including both voices and external instruments.}\\ +\Tag{\hspace*{-40pt}\hfill placeNameSubject}{Germany}{"Place Name Subject" is used to record named countries, states, provinces, counties, and cities associated with the music and lyrics of the item being cataloged.}\\ +\Tag{\hspace*{-40pt}\hfill otherGeographicSubject}{D-A-CH-Region}{The optional "Other Geographic Subject" meta data is used to record named geographic places that are not countries, states, provinces, counties, or cities associated with the music and lyrics of the item being cataloged.}\\ +\Tag{localSubject}{University}{"Local Subject" is used to record subject terms meaningful to the holding institution.}\\ +\Tag{coverSubject}{Loreley in a sleeping dress}{"Cover Subject" is used to record the topical content of the image depicted on the cover of the item being cataloged.}\\ +\end{longtable} + + +% +% Subject/Topic +% In a song with lyrics, Subject/Topic is used to record what topics occur in the song's lyrics. +% Temporal Coverage +% The Temporal Coverage meta data is used to record a named time period relevant to the item being cataloged. +% Geographical Coverage +% The Geographical Coverage element is used for general terms that describe geographical coverage. +% Geographic Code +% Geographic Code refers to a geographic area code associated with the resource. The code should represent the same entity as a term described by the Geographic field. +% Referenced Title +% The Referenced Title is the title of another printed material that occurs in the lyrics. +% Subject Genre +% The Subject Genre refers to a genre or form used as part of a subject string when the subject authority distinguishes parts of the subject string (e.g. LCSH). +% Referenced Name +% Referenced Name is used to record a personal or corporate name that is the subject of a song's lyrics. +% Subject Occupation +% Subject Occupation is used to record the occupation of the name referenced in the lyrics. +% Hierarchical Geographic +% The following elements describe geographic information in a hierarchical form: +% +% Continent +% Continent describes the continent on which a named place in the lyrics is located. +% Country +% Country describes the country in which a named place in the lyrics is located. +% Province +% Province describes the province in which a named place in the lyrics is located. +% Region +% Region describes the region in which a named place in the lyrics is located. +% State +% State describes the state in which a named place in the lyrics is located. +% Territory +% Territory describes the territory in which a named place in the lyrics is located. +% County +% County describes the county in which a named place in the lyrics is located. +% City +% City describes the city in which a named place in the lyrics is located. +% Island +% Island describes the island on which a named place in the lyrics is located. +% Area +% Area describes the area in which a named place in the lyrics is located. + + +%\newpage +\subsubsection{Identification Numbers} +\label{LiUsMeId} +\begin{longtable}{p{0.22\textwidth} c p{0.28\textwidth} p{0.40\textwidth}} +Tag & & value examples & description\\ +\hline +\Tag{plateNumber}{I have no clue.}{The Sheet Music Consortium adopts the AACR2 definition of a sheet music plate number, as distinct from the publisher number: "A numbering designation assigned to an item by a music publisher, usually printed at the bottom of each page, and sometimes appearing also on the title page. It may include initials, abbreviations, or words identifying a publisher and is sometimes followed by a number corresponding to the number of pages or plates."}\\ +\Tag{publisherNumber}{Still no clue}{The Sheet Music Consortium adopts the AACR2 definition of a sheet music publisher number, as distinct from the plate number: "A numbering designation assigned to an item by a music publisher, appearing normally only on the title page, the cover, and/or the first page of music. It may include initials, abbreviations, or words identifying the publisher."}\\ +\Tag{catalogNumber}{BWV31029}{An identifying number for a musical composition assigned by the composer, publisher or researcher. Bach-Werksverzeichnis for example.}\\ +\Tag{callNumber}{No clue again}{An institution's local identifier indicating the physical location of the item within the collection.}\\ +\Tag{otherIdentifier}{Dunno, 1234 maybe?}{Any numbering/naming designation used to identify an item within a collection that is distinct from plate number, publisher number, catalog number, or call number.}\\ +\end{longtable} + +%\newpage +\subsubsection{Relational Identifier} +\label{LiUsMeRe} +\begin{longtable}{p{0.22\textwidth} c p{0.28\textwidth} p{0.40\textwidth}} +Tag & & value examples & description\\ +\hline +\Tag{precedingItem}{ADKB-34}{Identifier for a related item that is the immediate predecessor of the resource in a chronological relationship. Normally used for continuing resources such as serial publications.}\\ +\Tag{suceedingItem}{ADKB-36}{Identifier for a related item that is the immediate successor of the resource in a chronological relationship. Normally used for continuing resources such as serial publications.}\\ +\Tag{originalItem}{ADKB-35}{Identifier for the original item from which the resource was derived.}\\ +\Tag{hostItem}{ADKB}{Identifier of the host item for the constituent unit in a vertical relationship. This information allows users to locate the physical piece that contains the component part described in the record.}\\ +\Tag{constitutentItem}{no clue}{Identifier of a constituent part that has been described separately. This information allows users to located a related unit of the resource, particularly when it has been physically separated from the item of which it is considered a part.}\\ +\Tag{\hspace*{-10pt}\hfill otherVersionOfItem}{CVLB-68}{Identifier of a related version of the resource described in the record, such as translation in another language.}\\ +\Tag{\hspace*{-10pt}\hfill otherFormatOfItem}{ADKB-35--4-voices}{Identifier of a different format of the resource described in the record, such as a microform reproduction.}\\ +\end{longtable} + + +\subsubsection{Notes/Description} +\label{LiUsMeNotedescription} +\begin{tabular}{p{0.22\textwidth} c p{0.28\textwidth} p{0.40\textwidth}} +Tag & & value examples & description\\ +\hline +\Tag{notes}{There exist contradicting orders for the strophes 2 and 3. This version sticks to the one published in Riedingers Gesangsbuch; Line three contains a typo, that was in the original.}{Any notes, that don't fit anywhere else. The "Notes" meta data is used to record information that supplements information in the rest of the meta data record.}\\ +\Tag{description}{A song about friendship, beer and wanderlust.}{A general description.}\\ +\end{tabular} + + +\subsubsection{Date Information} +\label{LiUsMeDa} +\begin{tabular}{p{0.22\textwidth} c p{0.28\textwidth} p{0.40\textwidth}} +Tag & & value examples & description\\ +\hline +\Tag{date}{1631}{"Date" meta data holds the date an item was copyrighted or published. }\\ +\Tag{dateOfWork}{1630-12-31}{The "Date of Work" records the date the piece of music was written.}\\ +\end{tabular} + +\subsubsection{Language} +\label{LiUsMeLa} +\begin{tabular}{p{0.22\textwidth} c p{0.28\textwidth} p{0.40\textwidth}} +Tag & & value examples & description\\ +\hline +\Tag{language}{deu}{Use "Language" to record the language of the lyrics of the item being cataloged. Either i.e. German oder the ISO 639-3 code.}\\ +\end{tabular} + + + +\subsubsection{Type of Resource} +\label{LiUsMeTy} +\begin{tabular}{p{0.22\textwidth} c p{0.28\textwidth} p{0.40\textwidth}} +Tag & & value examples & description\\ +\hline +\Tag{typeOfResource}{notated music}{There seems to be a definition in the AACR2. But it is not open. So I can't provide other values here.}\\ +\end{tabular} + + +\subsubsection{Publication Meta Data - Origin Info} +\label{LiUsMeOr} +\begin{longtable}{p{0.22\textwidth} c p{0.28\textwidth} p{0.40\textwidth}} +Tag & & value examples & description\\ +\hline +\Tag{publisherName}{Guthenbergs Kommersbuchdruckerei}{Those responsible for the physical production and dissemination, of the resource.}\\ +\Tag{publisherPlace}{Heidelberg}{The name of the place where a resource has been published.}\\ +\Tag{placePublished}{Leipzig}{Where it had been published. i.e. Leipziger Buchmesse $\rightarrow$ Leipzig}\\ +\Tag{publisher}{Verlag Arnold Schönberg - Weimar}{Name of the publisher.}\\ +\Tag{placePublisher}{Weimar}{Where the publisher is located.}\\ +\Tag{dateIssued}{1841-08-01}{When it had been published.}\\ +\Tag{copyrightDate}{1841}{The year relevant for copyright and its expiration.}\\ +\Tag{dateCreated}{1840-04-03}{When the work had been made. This must be some date prior to publishing.}\\ +\Tag{dateModified}{1842-10-03, 1848-06-02}{If a work underwent some modifications like fixing typos.}\\ +\Tag{dateValid}{1947}{Works with limited validity. i.e. phone books, pharamceutical drug lists. Can be for example also the expiration of the copyright.}\\ +\Tag{otherDate}{1848, 1870-09-02}{Other relevant dates, which may be mentioned in a work or where the work has been used in a notable way}\\ +\Tag{edition}{3}{In cases of reprints, it specifies, which edition this had been taken from.}\\ +\end{longtable} + + + + + + + + + +\subsubsection{Physical Description} +\label{LiUsMePh} +\begin{tabular}{p{0.22\textwidth} c p{0.28\textwidth} p{0.40\textwidth}} +Tag & & value examples & description\\ +\hline +\Tag{formMedium}{book}{In what medium had this been published in. Book, leaflet, brochure, single page;}\\ +%\Tag{extent}{no clue}{Beschreibung}\\ +%\Tag{internetMediaType}{traditional}{Beschreibung}\\ +\Tag{\hspace*{-45pt}\hfill physicalDescriptionNote}{Original lost in fire}{Can be any useful information about the original copy.}\\ +\end{tabular} + + +\subsubsection{Abstract} +\label{LiUsMeAb} +\begin{tabular}{p{0.22\textwidth} c p{0.28\textwidth} p{0.40\textwidth}} +Tag & & value examples & description\\ +\hline +\Tag{abstract}{This is a famous folksong, written down in 1843 by Hans Eicher. It gained popularity during the 1848 revolution and in the 1870/71 war.}{An abstract, if needed or wished.}\\ +\end{tabular} + +\subsubsection{Table of Contents} +\label{LiUsMeTa} +\begin{tabular}{p{0.22\textwidth} c p{0.28\textwidth} p{0.40\textwidth}} +Tag & & value examples & description\\ +\hline +\Tag{tableOfContents}{% +\begin{enumerate} +\item Intro +\item Sailor songs +\item Hiking songs +\item Drinking songs +\item Hooligan songs +\item Wedding songs +\begin{enumerate} +\item If the bride is beautiful +\item If the bridesmaids are beautiful +\end{enumerate} +\item Again drinking songs +\end{enumerate} +}{The table of contents}\\ +\end{tabular} + +\subsubsection{Instrumentation} +\label{LiUsMeIn} +\begin{tabular}{p{0.22\textwidth} c p{0.28\textwidth} p{0.40\textwidth}} +Tag & & value examples & description\\ +\hline +\Tag{instrumentation}{chamber orchestra}{A meaningful and well established value about the instrumentation of the piece.}\\ +\end{tabular} + + +\subsubsection{Cartographics} +\label{LiUsMeCa} +This part is only for completeness. The original ressource, where this is from isn't available any more. Therefor a complete citation is not possible. + +\begin{longtable}{p{0.22\textwidth} c p{0.28\textwidth} p{0.40\textwidth}} +Tag & & value examples & description\\ +\hline +\Tag{scale}{1:200000}{Scale is used to capture the ratio between actual size and a representation of size.}\\ +\Tag{projection}{Merkaartor}{Projection describes the method of representing the surface of a sphere or other shape on a plane.}\\ +\Tag{coordinates}{45.123,-30.543,48.321,-29.345}{The Coordinates element refers to the geographical coordinates of the bounding box covered by the resource.}\\ +\end{longtable} + + +\subsubsection{Classification} +\label{LiUsMeCl} +\begin{tabular}{p{0.22\textwidth} c p{0.28\textwidth} p{0.40\textwidth}} +Tag & & value examples & description\\ +\hline +\Tag{\hspace*{-40pt}\hfill classificationSchema}{\LaTeX -Liederbuch-Schema}{Classification is used to document the class number for the resource, according to a standard scheme like RDA, MARC 21, LCC, LCSH or DDC.}\\ +\end{tabular} + + + + + + +\subsubsection{Location Info} +\label{LiUsMeLo} +\begin{tabular}{p{0.22\textwidth} c p{0.28\textwidth} p{0.40\textwidth}} +Tag & & value examples & description\\ +\hline +\Tag{url}{\url{https://de.wikisource.org/wiki/Allgemeines_Deutsches_Kommersbuch:122}}{The URL field contains a URL that can be used to access the resource.}\\ +\Tag{\hspace*{-40pt}\hfill bibliographicCitation}{Gaudeamus igitur; Allgemeines Deutsches Kommersbuch, Seite 270; Friedrich Silcher, Friedrich Erk; Moritz Schauenburg; 1858; Lahr}{The Bibliographic Citation field contains the bibliographic citation for the resource.}\\ +\Tag{shelfLocation}{3AC/F-K}{Shelf Location is used to record the shelf designation number for the resource.}\\ +\Tag{physicalLocation}{Heimatmuseum, Kudamm~31, Berlin; Building~3/A; 3.~Floor}{Physical Location refers to the institution or repository where the resource is held.}\\ +\end{tabular} + + + + + + + + + + +%\subsubsection{?Access Condition} +%\label{LiUsMeAc} +%Access Condition is used to record information about restrictions on who may use the resource. +% +%Record Info +% +%The following fields can be used to capture information necessary for managing the meta data associated with the resource: +% +% +%Record Content Source +% +%Record Content Source identifies the name of the organization/person who created the resource record. +% +% +%Record Identifier +% +%The Record Identifier is used to record the identification number for the record. +% +% +%Record Description Standard +% +%The Record Description Standard is used to identify the content standard to which the record conforms. + +\newpage +\subsection{How it works} +\begin{itemize} +\item[] \ref{LiHoBu} \nameref{LiHoBu} +\item[] \ref{LiHoUs} \nameref{LiHoUs} +\item[] \ref{LiHoTh} \nameref{LiHoTh} +\end{itemize} + +\subsubsection{Building a Songbook} +\label{LiHoBu} +The first part contains only a some constants. Currently only the \verb+\repeatleft+ and \verb+\repeatright+, which contain the repeat sign meant to be used in strophes: +\begin{lstlisting}[numbers=none] + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%% Special music characters %%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + [...] + + +\end{lstlisting} + +Handling of meta data: +\begin{lstlisting}[numbers=none] + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%% Handling of the meta data %%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \def\GFM@LB@unpackage... +\end{lstlisting} +This command stores the meta data to command sequences. The meta data items can be given as an argument in the Lied environment. \verb+\GFM@LB@unpackage+ loops over the meta data argument of the \verb+Lied+- and \verb+Liederbuch+-environment. For every pair of variable name and value, \verb+\GFM@LB@unpackage+ creates a \LaTeX variable with the value content. Each meta data ist stored to a command sequence in the format: +\begin{lstlisting}[numbers=none] + \GFM@LB@lied@<songbook>@<song variant>@<song number>@<meta data name> +\end{lstlisting} +For the songbook ''Folksongs'', songnumber ''5'', variant ''choral'' and variable name ''composer'', the \LaTeX variable would look like this: +\begin{lstlisting}[numbers=none] + \GFM@LB@lied@Folksongs@choral@5@composer +\end{lstlisting} +It could expand to ''Frederic McCormick'' (assuming this is the composer). This mechanism is only internally relevant. To use this variable fine and easily, there is the \verb+\print{<variable name>}+ command (see farther down). + +Since the equals sign is not available in the meta data, it is made available again with the \verb+\equals+ command, which just expands to an equals sign. + +If a song has wrong meta data, an entry is missing or any other reason, you can edit specific meta data entries. The better option is to edit the song book. But if this may not be possible for whatever reason, you can use this command: +\begin{lstlisting}[numbers=none] + \tweakMetadata{<songbook>}{<song number>}{<variant>}{<meta data} +\end{lstlisting} + +One of the most important core parts of the package is the arrangement of syllables below the notes: +\begin{lstlisting}[numbers=none] + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%% Environment and commands for %%% + %%% notes + lyrics in native LaTeX font %%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + [...Constants...] + + \def\songLyrics[<length> default = \linewdith]{ + [...] + \def\nspace[*]{<some length or number>} + \def\ns[*][<some length or number>] + [...] + }% +\end{lstlisting} +\verb+\songLyrics+ creates a \verb+\makebox[<length>]{notes}+ with two commands inside: \verb+\ns[*]+ and \verb+\nspace[*]+. \verb+\nspace[*]+ behaves exactly the same as \verb+\hspace[*]+ with the option for starred command, but unlike \verb+\hspace+ it also accepts no dimension unit. If no unit is given, it is translated to percent \verb+\linewidth+. \verb+\ns+ behaves like \verb+\hfill+ and is able to shift the next sillable by an optional offset. The star inserts a dash between the sillables. i.e. \verb+\ns*[-3]+ separates two sillables with a dash in between und shifts the second sillable \verb+0.03\linewidth+ to the left: +\begin{lstlisting}[numbers=none] + {See \ns here \ns the \ns be \ns* gin \ns* ning} +\end{lstlisting}\vskip -8pt\relax +\verb+ +\parbox{0.8\linewidth}{% +\vskip -3pt\relax +becomes +\vskip 5pt\relax +\fbox{\makebox[0.4\linewidth]{% +See\hfill ~\hfill here\hfill ~\hfill the\hfill ~\hfill be\hfill -\hfill gin\hfill -\hfill ning% +}%makebox +}%fbox +}%parbox + +\verb+\notenzeile+ is a user command and combines the score image (notation) and the song lyrics. It takes two arguments. One graphic (the notes) and text below the notes. The text below simply calls \verb+\GFM@LB@songLyrics+. As there are songs, that have more than one strophe below the notes, up to 6 are optional. It is 6 times the same. To hold everything together, the whole \verb+\notenzeile+ is inside a minipage: +\begin{lstlisting}[numbers=none] + \notenzeile{O{\linewidth} m m O{\empty} O{\empty} O{\empty} O{\empty} O{\empty}}{% +\end{lstlisting} + +\begin{lstlisting}[numbers=none, breaklines=false] + \multiline}{m m m O{\empty} O{\empty} O{\empty} O{\empty}}{% +\end{lstlisting} +\verb+\multiline+ can fit more than one line into one line. It is used, if only a part of a line has more than one text line. It is basically a few \verb+\makebox+es stacked above each other inside a parbox. + +Force page break is a very usefull function and pretty simple. It defines a list of numbers, if the current stave line / strophe equals one of the numbers a page break is added: +\begin{lstlisting}[numbers=none] + \forcePageBreakAfterStaveLine{<number>}[<n.>][<n.>][<n.>][<n.>][<n.>] +\end{lstlisting} +\begin{lstlisting}[numbers=none] + \forcePageBreakAfterStrophe{<number>}[<n.>][<n.>][<n.>][<n.>][<n.>] +\end{lstlisting} +Up to 6 page breaks within one song are possible. That should be enough as it is highly unlikely, that a song spans over more than 6 pages. If it does, please open an issue and show me. I'm highly interested. + +Strophe is a simple environment that provides a numbering at the beginning based on a \verb+\stepcounter+. It groups mostly the spacing and holds the strophes together: +\begin{lstlisting}[numbers=none] + \begin{strophe}[<set strophe number to x>] + This is the strophe text. + Sing sing sing. + Line breaks disappear. + I want to create an option for that. + \end{strophe} +\end{lstlisting} + +The spacing constists of set-commands, stored values and the use commands (no prefix/suffix): +\begin{lstlisting}[numbers=none] + %%%%%%%%%%%%%%% + %%% Spacing %%% + %%%%%%%%%%%%%%% + + %%% Head + \def\setSpaceBeforeHeadValue#1{\def\spaceBeforeHeadValue{#1}} + \def\setSpaceAfterHeadValue#1{\def\spaceAfterHeadValue{#1}} + + %%% Notes + \def\setSpaceBeforeNotesValue#1{\def\spaceBeforeNotesValue{#1}} + \def\setSpaceAfterNotesValue#1{\def\spaceAfterNotesValue{#1}} + + %%% Strophes + \def\setSpaceBeforeStropheValue#1{\def\spaceBeforeStropheValue{#1}} + \def\setSpaceAfterStropheValue#1{\def\spaceAfterStropheValue{#1}} + + %%% Song lyrics + \def\setSpaceBeforeSongLyricsValue#1{\def\spaceBeforeSongLyricsValue{#1}} + \def\setSpaceBetweenSongLyricsValue#1{\def\spaceBetweenSongLyricsValue{#1}} + \def\setSpaceAfterSongLyricsValue#1{\def\spaceAfterSongLyricsValue{#1}} + + %%% Foot + \def\setSpaceBeforeFootValue#1{\def\spaceBeforeFootValue{#1}} + \def\setSpaceAfterFootValue#1{\def\spaceAfterFootValue{#1}} + + +\end{lstlisting} + +\begin{lstlisting}[numbers=none] + %%% Horizontal spacing + \def\setSpaceStropheIndentValue#1{\def\spaceStropheIndentValue{#1}} + \def\setSpaceHeadIndentValue#1{\def\spaceHeadIndentValue{#1}} + \def\setSpaceFootIndentValue#1{\def\spaceFootIndentValue{#1}} +\end{lstlisting} + +Convert the space values into skips: +\begin{lstlisting}[numbers=none] + %%% Arranging the space values + \def\spaceBeforeHead{\vskip\spaceBeforeHeadValue\relax\noindent\mbox{}\hskip\spaceHeadIndentValue\mbox{}} + + \def\spaceAfterHead{\relax\vskip\spaceAfterHeadValue\relax} + + \def\spaceBeforeNotes{\relax\vskip\spaceBeforeNotesValue\relax} + + [...rest works analogously...] +\end{lstlisting} + +\newpage +These commands save the definition of the header and footer for each song. They also implicitly arrange the spacing in the header and footer: +\begin{lstlisting}[numbers=none] + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%% Styling of header and footer %%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + \newcommand{\LBHead}[1]{% + \long\def\GFM@LB@Head{\spaceBeforeHead #1\relax\spaceAfterHead\mbox{}}% + }% + + \newcommand{\LBFoot}[1]{% + \long\def\GFM@LB@Foot{\spaceBeforeFoot #1\relax\spaceAfterFoot}% + }% +\end{lstlisting} + +\verb+Liederbuch+ and \verb+Lied+ are the environments that create the songbooks and store each song in a command sequence. Every song is stored this way in Latex: +\begin{lstlisting}[numbers=none] + \liedBody;<songbook>;<song variant>;<number> +\end{lstlisting}\vskip -5pt\relax +The \verb+Lied+ environment also stores each meta data value in an command sequence by calling the \verb+\GFM@LB@unpackage+ command: +\begin{lstlisting}[numbers=none] + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%% Environments for creating %%% + %%% the songbooks (liederbuch) %%% + %%% and the songs (lied) %%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + %Liederbuch environment + \NewEnviron{liederbuch}[2][]{% + \def\GFM@LB@LiederbuchNameTmp{#2}% + %%Lied environment %cslet + \NewEnviron{lied}[3][]{% + %##1=meta data ##2=variant ##3=nummer + \def\GFM@LB@LiederbuchVariantTmp{##2}% + \def\GFM@LB@LiederbuchNumberTmp{##3}% + \GFM@LB@unpackage{##1}% + \GFM@LB@unpackage{#1}% + \global\cslet{liedBody;\GFM@LB@LiederbuchNameTmp;##2;##3}\BODY% + }% + \BODY% Without this, the command sequences inside the environment won't be defined. That means, the whole content of the songbook (Liederbuch) is thrown away. + } +\end{lstlisting} + + +\subsubsection{Using a Songbook} +\label{LiHoUs} +With the command +\begin{lstlisting}[numbers=none] + \usepackage{../path/to/songbook.sty} +\end{lstlisting} +you include a songbook. This automatically stores the content of the songs at loading time as described in the previous section. Now every song body is stored in a \LaTeX\ macro. Each meta data element is also stored in a \LaTeX\ macro. We need this later. When you call a song with the command: +\begin{lstlisting}[numbers=none] + \LBsong{<songbook name>}{<song number>}{<variant>} +\end{lstlisting} +i.e. +\begin{lstlisting}[numbers=none] + \LBsong{exampleSongs}{23}{nt} +\end{lstlisting} +It calls itself a series of macros: +\begin{lstlisting}[numbers=none] + %<setting some values> + \NewDocumentCommand{\print}{O{\empty} m}{% + [...] + }% + \GFM@LB@Head% + %<setting some values> + %%%%%%%%%%%%%%%%%%%%%%%%%% + \csuse{liedBody;#2;#1;#3}% + %=\liedBody;<songbook>;<song variant>;<number> + %%%%%%%%%%%%%%%%%%%%%%%%%% + %<setting some values> + \GFM@LB@Foot +\end{lstlisting} +As you see, it basically puts together head, body and foot. \verb+\GFM@LB@Head+ and \verb+\GFM@LB@Foot+ only contain the format of the head and foot. Inside these commands, the parameters songbook, song variant and number are available, therefore the correct meta data, like the correct title, author, etc. is automatically selected, when the \verb+\print+ command is used (see the example on page \pageref{LiUsCrEx} and also \ref{LiHoTh} \nameref{LiHoTh} \vpageref{LiHoTh}) + +\newpage +\subsubsection{Themes} +\label{LiHoTh} +For creating a theme, you can currently only define the style of the head and the foot of a song. + +The principle is very simple. In +\begin{lstlisting}[numbers=none] + \LBHead +\end{lstlisting} +and +\begin{lstlisting}[numbers=none] + \LBFoot +\end{lstlisting} +a format for the head is defined and stored (with some spacing) into +\begin{lstlisting}[numbers=none] + \GFM@LB@Head +\end{lstlisting} +For the foot it is stored into +\begin{lstlisting}[numbers=none] + \GFM@LB@Foot +\end{lstlisting} + +Inside them the \verb+\print{<meta data name>}+ is used. It is not defined there and expanding it would result in an undefined-error. But it is defined inside \verb+\LBsong+, where \verb+\GFM@LB@Head+ and \verb+\GFM@LB@Foot+ are called. There it is expanded. Inside the \verb+\LBsong+ songbook, song variant and song number are available and put together to the command sequence, that expands to the correct meta data value (see section \ref{LiHoUs} \nameref{LiHoUs}). The rest of the head and foot definitions are usual \TeX commands. + +For the future, there shall be a marker, if a song had been broken inside the notes or inside the strophas. Depending on the marker, background images can be selected. But this is only an idea yet. + +\subsubsection{printliederbuch} +The principle of this package is very simple. Before the songbook is loaded, the environments \verb+Liederbuch+ and \verb+Lied+ are redefined. The whole meta data is put into a table, the content of the songbooks is just put into a command sequence, which is called in the document. + + +\chapter{Liederheft-Class} +This is hardly finished yet. It shall be based on the koma-book class, provide a class itself, but I think, this is a bad idea anyway and I will ditch it. The plan exists, let's see, for how long. + +\section{Basics} +No text yet. Just guess it. + +\section{What The Package Uses} +\begin{itemize} +\item scrbook\\ +This is the class, which the Liederheft is based on. +\item[] +\end{itemize} + +\section{User Commands} +Just read the manual. Oh, this is the manual. How unfortunate. + +\section{How it works} +Not at all yet. Maybe it never will. + + + + + + +\chapter{Known bugs and problems} +\section{Undefined control sequence $\backslash OT$} +undefined control sequence \verb+\OT+ maybe caused by ß in meta data. A simple workaround is to use \verb+\def\OT#11{}+ in the preamble. + +\section{Spacing} +If there is used plus and/or minus in spacing, this (might) result in extra space. The origin is unknown yet. + +\chapter{Bug reports} +Nothing to say here. Post an email to \mbox{text\color{white}.\color{black}\hspace*{-7.5pt} inkerer.1904$@$gmail.com}, if you find one. Note:~Copying the mail address will result in a wrong address. This is for spam precautions. You have to type it off your screen. This is a good memory exercise to keep your mind vital a flexible. + + +\section{Revision History} +\noindent +\begin{tabular}{l l} +2017-11-01:& v0.1\\ +2024-12-22:& v1.0 +\end{tabular} + + +\end{document} + +\section{Milestones for Version 1.0} + +Liederbuch auf liederbuch ändern +Lied auf lied ändern + +\section{Milestones for Version 1.1} + +- multilines und mehrfach-Notentext anpassen, dass hier die Abstände zwischen den Strophenzeilen angepasst werden können. + +Backgrounds for songs. 4 divisions (fix, stretch, stretch, fix height). +List may be expanded + + +\section{Before upload} + +Pfade aus packages entfernen + - Demoprojekt + - Test-Liederbuch + + +Revisionsdatum anpassen + + +\section{Milestones for Version 1.2} +Remove any references to fill pages and real page + +\verse command - Option für page break in Strophen + +\subsection{3 Standard designs} +%\useLiederbuchStyle{} + +%\useLiederbuchColor{} +analog to moderncv + + +\chapter*{Todo} + +Fix relative paths. Reference to the containing package. + + +AtBeginDocument isn't executed. This results in the fillPages to not work. + +Create custom list listOfSongs + +Switch the skips, so fills are allowed. -> Test it + +fix bug insertfillpages. There's always at least one page. Why? + +IfBoolean instead of ifx for stared command in DeclareDocumentCommand + +integrate /@car and /@cdr + +/extraSpaceBeforeStrophe{Strophennummer}{pt} + +/forcePagebreakBeforeStrophe{Strophennummer} + +meta data: what breaks in an edef, is only possible with a triple unexpanded. + + +\section{Compability improvement with different fonts and languages} +I have plans here. But nothing too specific yet. + diff --git a/Master/texmf-dist/doc/latex/nlctdoc/README b/Master/texmf-dist/doc/latex/nlctdoc/README index d8c7eb5ef12..26cef792497 100644 --- a/Master/texmf-dist/doc/latex/nlctdoc/README +++ b/Master/texmf-dist/doc/latex/nlctdoc/README @@ -1,4 +1,4 @@ -nlctdoc.cls and nlctuserguide.sty v1.11 (2024-11-09): +nlctdoc.cls and nlctuserguide.sty v1.12 (2025-01-03): This class and package is provided "as is" solely for the benefit of anyone who wants to compile the documentation for diff --git a/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-en.pdf b/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-en.pdf Binary files differindex a4bda8a7422..ecb80966c25 100644 --- a/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-en.pdf +++ b/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-en.pdf diff --git a/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-en.tex b/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-en.tex index 41b1e1a8b05..ca2ce649d4f 100644 --- a/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-en.tex +++ b/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-en.tex @@ -45,8 +45,8 @@ \usepackage[margin=1.5cm]{geometry} \setlength{\parindent}{0pt} -\def\TPversion{0.1.5} -\def\TPdate{31/10/2024} +\def\TPversion{0.1.6} +\def\TPdate{04/01/2025} \usepackage{minted2} \usepackage[most]{tcolorbox} \tcbuselibrary{minted} @@ -904,10 +904,41 @@ In this paragraph, we use the data \texttt{PAsorciere}, which corresponds to the \end{tabular} \end{PresentationCode} +\pagebreak + +\section{With datatool} + +\subsection{Macros} + +\begin{PresentationCode}{listing only} +%reading of csv +\readdtcsv{file.csv}{readname} + +%full pixelart (french keys for the moment...) +\dtpixlarttikz[keys]{readname} + +%cut pixelart (french keys for the moment...) +\dtpixlarttikzblock[clés]{readname}{LxC or L+C}{numblock} +\end{PresentationCode} + +\begin{PresentationCode}{} +%reading of csv (koala) +\readdtcsv{PAkoala.csv}{DTkoala} + +%full pixelart +\dtpixlarttikz[Correction,Unite=0.125,Codes=ABCDEFGHI,Couleurs={\listcoulkoala},Decoupage=8x8]{DTkoala} + +%cut pixelart (french keys for the moment...) +\dtpixlarttikzblock[Unite=0.125,Correction,Codes=ABCDEFGHI,Couleurs={\listcoulkoala}]% + {DTkoala}{8x8}{1/1} +\end{PresentationCode} + \newpage \part{History} +\verb|v0.1.6|~:~~~~Styles for lines + \textsf{datatool} for alternative version + \verb|v0.1.5|~:~~~~Symbols can be given with list(s) + Enhancements of internal code \verb|v0.1.4|~:~~~~Anamorphic cylinder PixelArts diff --git a/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-fr.pdf b/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-fr.pdf Binary files differindex 1aea9249674..29070143dcc 100644 --- a/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-fr.pdf +++ b/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-fr.pdf diff --git a/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-fr.tex b/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-fr.tex index 6e5027a3552..794d20bd36e 100644 --- a/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-fr.tex +++ b/Master/texmf-dist/doc/latex/pixelarttikz/PixelArtTikz-doc-fr.tex @@ -44,8 +44,8 @@ \usepackage[margin=1.5cm]{geometry} \setlength{\parindent}{0pt} -\def\TPversion{0.1.5} -\def\TPdate{31 octobre 2024} +\def\TPversion{0.1.6} +\def\TPdate{4 janvier 2025} \usepackage{minted2} \usepackage[most]{tcolorbox} @@ -207,12 +207,12 @@ Avant toute chose, quelques petites infos sur les données au format \textsf{csv Le fichier \textsf{csv} peut être déclaré directement dans le fichier \textsf{tex}, grâce à l'environnement \textsf{filecontents} (intégré en natif sur les dernières versions de \LaTeX) : \begin{PresentationCode}{listing only} - \begin{filecontents*}{nomfichier.csv} - A,B,C,D - A,B,D,C - B,A,C,D - B,A,D,C - \end{filecontents*} +\begin{filecontents*}{nomfichier.csv} + A,B,C,D + A,B,D,C + B,A,C,D + B,A,D,C +\end{filecontents*} \end{PresentationCode} À la compilation, le fichier \textsf{nomfichier.csv} sera créé automatiquement, et l'option \Cle{[overwrite]} permet (logiquement) de propager les modifications au fichier \textsf{csv}. @@ -238,6 +238,8 @@ L'option \Cle{[csvii]} permet de passer l'appel au package en version \hologo{La %\RequirePackage[legacy]{csvsimple} \end{PresentationCode} +À noter qu'une version alternative \textit{simple}, avec le package \textsf{datatool}, est également disponible. + \subsection{Packages utilisés} Le package est compatible avec les compilations usuelles en \textsf{latex}, \textsf{pdflatex}, \textsf{lualatex} ou \textsf{xelatex}. @@ -1140,8 +1142,47 @@ Il est également possible de créer le tableau \textit{manuellement}, avec une \pagebreak +\section{Avec le package datatool} + +\subsection{Commandes} + +Le package \textsf{datatool}, chargé par \textsf{PixelArtTikz}, permet de représenter un PixelArt (sans environnement). + +Les clés sont les mêmes que pour la version \textsf{csvsimple}, mais il est nécessaire de \textit{traiter} le ficher \textsf{csv} en amont des tracés. + +\begin{PresentationCode}{listing only} +%lecture du fichier csv +\readdtcsv{fichier.csv}{nomlecture} + +%traitement du PixelArt complet +\dtpixlarttikz[clés]{nomlecture} + +%traitement du PixelArt en mode découpage +\dtpixlarttikzblock[clés]{nomlecture}{LxC ou L+C}{numbloc} +\end{PresentationCode} + +À noter que la commande est autonome, ne permet pas d'ajouts éventuels, mais est compatible avec le traitement par découpage (mais sans création automatique des blocs de découpage avec présentation). + +\subsection{Exemple} + +\begin{PresentationCode}{} +%lecture du fichier csv (koala) +\readdtcsv{PAkoala.csv}{DTkoala} + +%traitement du PixelArt complet +\dtpixlarttikz[Correction,Unite=0.125,Codes=ABCDEFGHI,Couleurs={\listcoulkoala},Decoupage=8x8]{DTkoala} + +%traitement du PixelArt en mode découpage +\dtpixlarttikzblock[Unite=0.125,Correction,Codes=ABCDEFGHI,Couleurs={\listcoulkoala}]% + {DTkoala}{8x8}{1/1} +\end{PresentationCode} + +\pagebreak + \part{Historique} +\verb|v0.1.6|~:~~~~Ajout d'un style pour les traits + utilisation de \textsf{datatool} (plus rapide ?) + \verb|v0.1.5|~:~~~~Symboles sous forme de liste(s) (éléments tirés aléatoirement) + Amélioration du traitement \verb|v0.1.4|~:~~~~PixelArts avec anamorphose cylindrique diff --git a/Master/texmf-dist/doc/latex/pixelarttikz/base.csv b/Master/texmf-dist/doc/latex/pixelarttikz/base.csv index 0b9de465757..6f8d88334bf 100644 --- a/Master/texmf-dist/doc/latex/pixelarttikz/base.csv +++ b/Master/texmf-dist/doc/latex/pixelarttikz/base.csv @@ -1,4 +1,4 @@ -A,B,C,D -A,B,D,C -B,A,D,C -C,A,B,D + A,B,C,D + A,B,D,C + B,A,D,C + C,A,B,D diff --git a/Master/texmf-dist/doc/latex/profsio/ProfSio-doc-annexe71.tex b/Master/texmf-dist/doc/latex/profsio/ProfSio-doc-annexe71.tex index f29587bab98..e3073d3bacb 100644 --- a/Master/texmf-dist/doc/latex/profsio/ProfSio-doc-annexe71.tex +++ b/Master/texmf-dist/doc/latex/profsio/ProfSio-doc-annexe71.tex @@ -15,4 +15,4 @@ \GrilleCCFSIO[Session=2025,Type={7-1},PoliceManuscrite={\poltuto}]{LOVELACE Ada}{21 mai 2024}{Quelques propriétés de la suite de Syracuse} -\end{document} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/profsio/ProfSio-doc-annexe72.tex b/Master/texmf-dist/doc/latex/profsio/ProfSio-doc-annexe72.tex index 00af2e5e36e..1c3fb34c966 100644 --- a/Master/texmf-dist/doc/latex/profsio/ProfSio-doc-annexe72.tex +++ b/Master/texmf-dist/doc/latex/profsio/ProfSio-doc-annexe72.tex @@ -16,4 +16,4 @@ \def\grccfcompetsyr{variables et types/listes et tableaux/tests et boucles/fonctions} \GrilleCCFSIO[Session=2025,Type={7-2},PoliceManuscrite={\poltuto}]{LOVELACE Ada}{21 mai 2024}{Quelques propriétés de la suite de Syracuse}<\grccfcompetsyr> -\end{document} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/profsio/ProfSio-doc-annexe73.tex b/Master/texmf-dist/doc/latex/profsio/ProfSio-doc-annexe73.tex index 24747750c83..188aeaad524 100644 --- a/Master/texmf-dist/doc/latex/profsio/ProfSio-doc-annexe73.tex +++ b/Master/texmf-dist/doc/latex/profsio/ProfSio-doc-annexe73.tex @@ -16,4 +16,4 @@ \def\grccfcompetsyr{variables et types/listes et tableaux/tests et boucles/fonctions} \GrilleCCFSIO[Session=2024,Type={7-3},PoliceManuscrite={\poltuto}]{LOVELACE Ada}{14 mai 2024}{Calculs booléens + Graphes + Chiffrements} -\end{document} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/profsio/ProfSio-doc-fr.pdf b/Master/texmf-dist/doc/latex/profsio/ProfSio-doc-fr.pdf Binary files differindex 265dc41596c..b78da76d02f 100644 --- a/Master/texmf-dist/doc/latex/profsio/ProfSio-doc-fr.pdf +++ b/Master/texmf-dist/doc/latex/profsio/ProfSio-doc-fr.pdf diff --git a/Master/texmf-dist/doc/latex/profsio/ProfSio-doc-fr.tex b/Master/texmf-dist/doc/latex/profsio/ProfSio-doc-fr.tex index 59ae3cd1324..2c73ac22768 100644 --- a/Master/texmf-dist/doc/latex/profsio/ProfSio-doc-fr.tex +++ b/Master/texmf-dist/doc/latex/profsio/ProfSio-doc-fr.tex @@ -5,8 +5,8 @@ \documentclass[french,a4paper,11pt]{article} \usepackage[margin=2cm,includefoot]{geometry} -\def\TPversion{0.2.8} -\def\TPdate{18 mai 2024} +\def\TPversion{0.2.9} +\def\TPdate{4 janvier 2025} %\usepackage[utf8]{inputenc} %\usepackage[T1]{fontenc} \usepackage{amsmath,amssymb} @@ -256,6 +256,8 @@ \section{Historique} +\verb|v0.2.9|~:~~~~Correction d'un bug dans les simplifications de Karnaugh + \verb|v0.2.8|~:~~~~Grilles d'évaluation des CCF \verb|v0.2.7|~:~~~~Correction d'un bug dans les simplifications de Karnaugh diff --git a/Master/texmf-dist/doc/latex/randintlist/randintlist-doc.pdf b/Master/texmf-dist/doc/latex/randintlist/randintlist-doc.pdf Binary files differindex e3113d9bd3e..fbdc34128dc 100644 --- a/Master/texmf-dist/doc/latex/randintlist/randintlist-doc.pdf +++ b/Master/texmf-dist/doc/latex/randintlist/randintlist-doc.pdf diff --git a/Master/texmf-dist/doc/latex/randintlist/randintlist-doc.tex b/Master/texmf-dist/doc/latex/randintlist/randintlist-doc.tex index 9042b601d82..a874160bf12 100644 --- a/Master/texmf-dist/doc/latex/randintlist/randintlist-doc.tex +++ b/Master/texmf-dist/doc/latex/randintlist/randintlist-doc.tex @@ -27,8 +27,8 @@ \hypersetup{pdfborder=0 0 0} \usepackage[margin=2cm]{geometry} \setlength{\parindent}{0pt} -\def\TPversion{0.1.2} -\def\TPdate{24/10/2024} +\def\TPversion{0.1.3} +\def\TPdate{04/01/2025} \usepackage{tcolorbox} \usepackage{pgffor} \tcbuselibrary{breakable,skins,hooks,listingsutf8} @@ -101,7 +101,7 @@ basicstyle=\scriptsize\ttfamily,% tabsize=4,% commentstyle={\itshape\color{gray}},% - lastline=148 + lastline=246 },% breakable, listing only,% @@ -192,7 +192,11 @@ The last value is: \medskip \emph{% - The \textsf{luarandom} package do the same things, but with the obligation to compile with \hologo{LuaLaTeX}. + 1. The \textsf{luarandom} package do the same things, but with the obligation to compile with \hologo{LuaLaTeX}. +} + +\emph{% + 2. The \textsf{tuple} package is so much better\ldots\ but I keep \texttt{randintlist}, without new features\ldots } \medskip @@ -287,7 +291,7 @@ Available keys are: \begin{DemoCode}{listing only} %accessing item -\getitemfromrandintlist[separator]{\macro}{index} +\getitemfromrandintlist[separator]{\macro}{index}[\macrores] \end{DemoCode} \begin{DemoCode}{} @@ -295,9 +299,16 @@ Available keys are: \randintlist{\mylistE}raw list: \mylistE\par items list:\par \xintFor* #1 in {\xintSeq{1}{6}}\do{\getitemfromrandintlist{\mylistE}{#1}\par} -first element: \getitemfromrandintlist{\mylistE}{1} +first element: \getitemfromrandintlist{\mylistE}{1}\par \end{DemoCode} +\begin{DemoCode}{} +\getitemfromrandintlist{\mylistE}{3}[\myres]% +third element: \myres +\end{DemoCode} + +\pagebreak + \subsection{Version française} Voilà les commandes en version française, la syntaxe et les clés ne seront pas explicitées. @@ -307,7 +318,7 @@ Voilà les commandes en version française, la syntaxe et les clés ne seront pa \ListeRandint[Min=..,Max=..,Nb=..,Repet=..,Graine=..,Tri=..,Sep=..,Exclure=..]{\macro} %extraire un élément -\ExtraireEltListeRandint[sep]{\macro}{position} +\ExtraireEltListeRandint[sep]{\macro}{position}[\macrores] \end{DemoCode} \begin{DemoCode}{} @@ -317,6 +328,14 @@ Voilà les commandes en version française, la syntaxe et les clés ne seront pa \ExtraireEltListeRandint[/]{\maliste}{4} \end{DemoCode} +\begin{DemoCode}{} +%liste +\ListeRandint[Min=50,Max=100,Nb=10,Repet,Tri=croiss]{\malisteB}\malisteB\\ +%troisième élément +\ExtraireEltListeRandint{\malisteB}{3}[\montroisieme]% +troisième élément : \montroisieme +\end{DemoCode} + \pagebreak \section{Example} @@ -340,6 +359,8 @@ The following example uses \TikZ, and comes from \texttt{luarandom}'s documentat \section{History} +\texttt{0.1.3: Bugfix} + \texttt{0.1.2: Changing name of internal macro} \texttt{0.1.1: Possibility to exclude values} diff --git a/Master/texmf-dist/doc/latex/scaletextbullet/CHANGELOG.md b/Master/texmf-dist/doc/latex/scaletextbullet/CHANGELOG.md index aee88decf97..d556b3f5824 100644 --- a/Master/texmf-dist/doc/latex/scaletextbullet/CHANGELOG.md +++ b/Master/texmf-dist/doc/latex/scaletextbullet/CHANGELOG.md @@ -7,6 +7,14 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to ## [Unreleased] +## [v1.0.4] - 2025-01-03 + +### Changed +- The internal function that scales of the size of the `\textbullet` without + moving its vertical center now uses more accurate floating point + computations. +- Code improvements. + ## [v1.0.3] - 2024-12-09 ### Changed diff --git a/Master/texmf-dist/doc/latex/scaletextbullet/README.txt b/Master/texmf-dist/doc/latex/scaletextbullet/README.txt index 4ef62f229c4..17cc4cf129c 100644 --- a/Master/texmf-dist/doc/latex/scaletextbullet/README.txt +++ b/Master/texmf-dist/doc/latex/scaletextbullet/README.txt @@ -1,6 +1,6 @@ Package: scaletextbullet -- Resize the \textbullet without changing its vertical center -Copyright: 2024 (c) Oliver Beery <beeryoliver@gmail.com> +Copyright: 2024-2025 (c) Oliver Beery <beeryoliver@gmail.com> CTAN: https://ctan.org/pkg/scaletextbullet Repository: https://github.com/beeryoliver/scaletextbullet License: The LaTeX Project Public License 1.3c diff --git a/Master/texmf-dist/doc/latex/scaletextbullet/beery.cls b/Master/texmf-dist/doc/latex/scaletextbullet/beery.cls index 2826ed38aa0..b7e8eab98b6 100644 --- a/Master/texmf-dist/doc/latex/scaletextbullet/beery.cls +++ b/Master/texmf-dist/doc/latex/scaletextbullet/beery.cls @@ -4,7 +4,7 @@ \NeedsTeXFormat{LaTeX2e}[2023-11-01] \ProvidesExplClass {beery} - {2024-12-09} + {2025-01-03} {} {} @@ -43,7 +43,8 @@ \tl_const:Nn \c_beery_alphabet_tl { abcdefghijklmnopqrstuvwxyz } \NewExpandableDocumentCommand \alphabet { } { \c_beery_alphabet_tl } -\NewDocumentCommand \Key { m o o } +\NewDocumentCommand \Key + { >{ \TrimSpaces } m >{ \TrimSpaces } o >{ \TrimSpaces } o } { \mode_leave_vertical: \group_begin: @@ -57,10 +58,12 @@ { #1 $\,=\,$ #2 \hspace* { \fill } \hbox:n { initial $\,=\,$ #3 } } \group_end: } -\NewDocumentCommand \Value { m } { \texttt {#1} } -\NewDocumentCommand \cmd { m } { \texttt { \token_to_str:N #1 } \@ } -\NewDocumentCommand \cs { m } { \texttt { \token_to_str:c {#1} } \@ } -\NewDocumentCommand \marg { m } +\NewDocumentCommand \Value { >{ \TrimSpaces } m } { \texttt {#1} } +\NewDocumentCommand \cmd { >{ \TrimSpaces } m } + { \texttt { \token_to_str:N #1 } \@ } +\NewDocumentCommand \cs { >{ \TrimSpaces } m } + { \texttt { \token_to_str:c {#1} } \@ } +\NewDocumentCommand \marg { >{ \TrimSpaces } m } { \allowbreak \texttt { \c_left_brace_str } @@ -69,7 +72,7 @@ $\rangle$ \texttt { \c_right_brace_str } } -\NewDocumentCommand \oarg { m } +\NewDocumentCommand \oarg { >{ \TrimSpaces } m } { \allowbreak \texttt { [ } @@ -79,16 +82,16 @@ \texttt { ] } } \NewDocumentCommand \sarg { } { $\langle$ \texttt {*} $\rangle$ } -\NewDocumentCommand \meta { m } +\NewDocumentCommand \meta { >{ \TrimSpaces } m } { $\langle$ { \normalfont \itshape #1 } $\rangle$ } -\NewDocumentCommand \cls { m } { \textsf {#1} } -\NewDocumentCommand \env { m } { \texttt {#1} } -\NewDocumentCommand \pkg { m } { \textsf {#1} } -\NewDocumentCommand \latin { m } { \textit {#1} } +\NewDocumentCommand \cls { >{ \TrimSpaces } m } { \textsf {#1} } +\NewDocumentCommand \env { >{ \TrimSpaces } m } { \texttt {#1} } +\NewDocumentCommand \pkg { >{ \TrimSpaces } m } { \textsf {#1} } +\NewDocumentCommand \latin { >{ \TrimSpaces } m } { \textit {#1} } % PAGE STYLE @@ -97,19 +100,28 @@ \dim_log:N \c_beery_alphabet_dim \dim_const:Nn \c_beery_big_dim { \l_fontscale_normalsize_baselineskip_skip } -\dim_const:Nn \c_beery_medium_dim { \c_beery_big_dim / 2 } -\dim_const:Nn \c_beery_small_dim { \c_beery_big_dim / 4 } +\dim_const:Nn \c_beery_medium_dim + { \fp_to_dim:n { \dim_to_fp:n { \c_beery_big_dim / 2 } } } +\dim_const:Nn \c_beery_small_dim + { \fp_to_dim:n { \dim_to_fp:n { \c_beery_big_dim / 4 } } } +\dim_log:N \c_beery_big_dim +\dim_log:N \c_beery_medium_dim +\dim_log:N \c_beery_small_dim + \skip_const:Nn \c_beery_big_skip { \c_beery_big_dim - plus \dim_eval:n { \c_beery_big_dim / 2 } - minus \dim_eval:n { \c_beery_big_dim / 3 } + plus \fp_to_dim:n { \dim_to_fp:n { \c_beery_big_dim } / 2 } + minus \fp_to_dim:n { \dim_to_fp:n { \c_beery_big_dim } / 3 } } \skip_const:Nn \c_beery_medium_skip { \c_beery_big_skip / 2 } \skip_const:Nn \c_beery_small_skip { \c_beery_big_skip / 4 } \skip_set_eq:NN \bigskipamount \c_beery_big_skip \skip_set_eq:NN \medskipamount \c_beery_medium_skip \skip_set_eq:NN \smallskipamount \c_beery_small_skip +\skip_log:N \c_beery_big_skip +\skip_log:N \c_beery_medium_skip +\skip_log:N \c_beery_small_skip \raggedbottom \int_set:Nn \vbadness { 100 } @@ -121,10 +133,10 @@ { a4paper , textwidth = - \dim_eval:n { \fp_to_dim:n { \c_e_fp * \c_beery_alphabet_dim } } + \fp_to_dim:n { \c_e_fp * \dim_to_fp:n { \c_beery_alphabet_dim } } , textheight = - \dim_eval:n - { \fp_to_dim:n { 1.6180 * \c_e_fp * \c_beery_alphabet_dim } } + \fp_to_dim:n + { 1.6180 * \c_e_fp * \dim_to_fp:n { \c_beery_alphabet_dim } } , heightrounded , centering , headheight = \l_fontscale_footnotesize_baselineskip_skip @@ -137,7 +149,7 @@ \RequirePackage { fancyhdr } \pagestyle { fancy } \fancyhf { } -\cs_set:Npn \headrulewidth { 0pt } +\renewcommand \headrulewidth { 0pt } \fancyfoot [ C ] { \footnotesize \thepage \c_space_tl of~ \pageref { LastPage } } @@ -145,8 +157,7 @@ \nonfrenchspacing \linespread { 1 } -\skip_set_eq:NN \parskip \c_beery_medium_skip -\dim_zero:N \parindent +\RequirePackage [ skip = \c_beery_medium_skip ] { parskip } \RequirePackage [ raggedrightboxes ] { ragged2e } \skip_set:Nn \RaggedRightRightskip { 0pt plus 0.5 \linewidth } \dim_zero:N \RaggedRightParindent @@ -170,21 +181,19 @@ \titlespacing* \section % section { 0pt } % indent { - - \parskip - + \c_beery_big_dim - plus \fp_eval:n { 1 / 2 * 4 } \c_beery_big_dim - minus \fp_eval:n { 1 / 3 / 4 } \c_beery_big_dim + \c_beery_big_dim + plus \fp_to_dim:n { 1 / 2 * 4 * \dim_to_fp:n { \c_beery_big_dim } } + minus \fp_to_dim:n { 1 / 3 / 4 * \dim_to_fp:n { \c_beery_big_dim } } } % before - { - \parskip + \c_beery_medium_skip } % after + { \c_beery_medium_skip } % after \titlespacing* \subsection { 0pt } { - - \parskip - + \fp_eval:n { 4 / 3 } \c_beery_medium_dim - plus \fp_eval:n { 1 / 2 * 4 } \c_beery_medium_dim - minus \fp_eval:n { 1 / 3 / 4 } \c_beery_medium_dim + \fp_to_dim:n { 4 / 3 * \dim_to_fp:n { \c_beery_medium_dim } } + plus \fp_to_dim:n { 1 / 2 * 4 * \dim_to_fp:n { \c_beery_medium_dim } } + minus \fp_to_dim:n { 1 / 3 / 4 * \dim_to_fp:n { \c_beery_medium_dim } } } - { - \parskip + \c_beery_medium_skip } + { \c_beery_medium_skip } \titleformat \section % section [ block ] % shape @@ -250,8 +259,9 @@ \renewcommand \topfraction { 1 } \skip_set:Nn \textfloatsep { - \c_beery_big_dim plus \c_beery_big_dim minus - \dim_eval:n { \c_beery_big_dim / 3 } + \c_beery_big_dim + plus \c_beery_big_dim + minus \fp_to_dim:n { \dim_to_fp:n { \c_beery_big_dim } / 3 } } \RequirePackage { tabularray } @@ -265,10 +275,14 @@ \dim_set:Nn \footnotesep { \f@linespread \footnotesep } \coffin_new:N \l__beery_footnote_coffin % 1.2 = baselineskip-size-ratio +% \f@linespread must not be empty here \dim_const:Nn \c_beery_footnote_baselineheight_dim { \fp_to_dim:n - { ( 1.2 * \f@linespread - 1 ) * \l_fontscale_footnotesize_size_dim } + { + ( 1.2 * \f@linespread - 1 ) + * \dim_to_fp:n { \l_fontscale_footnotesize_size_dim } + } } \RenewDocumentCommand \@makefntext { +m } { @@ -280,7 +294,8 @@ { \fp_to_dim:n { - ( 1 - \l_fontscale_footnotesize_scale_fp ) / 2 * \textwidth + ( 1 - \l_fontscale_footnotesize_scale_fp ) / 2 + * \dim_to_fp:n { \textwidth } } } \dim_set_eq:NN \rightmargin \leftmargin diff --git a/Master/texmf-dist/doc/latex/scaletextbullet/scaletextbullet.pdf b/Master/texmf-dist/doc/latex/scaletextbullet/scaletextbullet.pdf Binary files differindex 5a84b517a3f..9cfad1740d3 100644 --- a/Master/texmf-dist/doc/latex/scaletextbullet/scaletextbullet.pdf +++ b/Master/texmf-dist/doc/latex/scaletextbullet/scaletextbullet.pdf diff --git a/Master/texmf-dist/doc/latex/scaletextbullet/scaletextbullet.tex b/Master/texmf-dist/doc/latex/scaletextbullet/scaletextbullet.tex index 087ac72828e..cf98c28096c 100644 --- a/Master/texmf-dist/doc/latex/scaletextbullet/scaletextbullet.tex +++ b/Master/texmf-dist/doc/latex/scaletextbullet/scaletextbullet.tex @@ -16,7 +16,7 @@ Resize the \cs{textbullet} without changing its vertical center Oliver Beery -Version 1.0.3\quad{}9 December 2024 +Version 1.0.4\quad{}3 January 2025 \section{Introduction} diff --git a/Master/texmf-dist/doc/latex/scripture/README.md b/Master/texmf-dist/doc/latex/scripture/README.md index 22b19c52544..6bde6e8feed 100644 --- a/Master/texmf-dist/doc/latex/scripture/README.md +++ b/Master/texmf-dist/doc/latex/scripture/README.md @@ -54,10 +54,14 @@ and documentation (`scripture.pdf`) can be installed by running: l3build install --full ``` +**Note:** The documentation uses one font not found in a standard TeXLive +installation. You can download `KawkabMono-Regular.ttf` from +https://makkuk.com/kawkab-mono/. + ## Licence ``` -Copyright (c) 2022-2023 David Purton <dcpurton@marshwiggle.net> +Copyright (c) 2022-2025 David Purton <dcpurton@marshwiggle.net> This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c of this license diff --git a/Master/texmf-dist/doc/latex/scripture/scripture.pdf b/Master/texmf-dist/doc/latex/scripture/scripture.pdf Binary files differindex 4dbb9323b11..84521cb534e 100644 --- a/Master/texmf-dist/doc/latex/scripture/scripture.pdf +++ b/Master/texmf-dist/doc/latex/scripture/scripture.pdf diff --git a/Master/texmf-dist/doc/latex/tabularray-abnt/README.md b/Master/texmf-dist/doc/latex/tabularray-abnt/README.md new file mode 100644 index 00000000000..d0d30502e02 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tabularray-abnt/README.md @@ -0,0 +1,12 @@ +This is the abnt brazilian standard style theme for tabularray. +It provides abnt (for table with numerical data) and quadro (for table with text information) theme. + +An additional environment abnttblr, tallabnttblr, and longabnttblr are wrapper to tblr, talltblr, and longtblr that apply abnt theme automatically and permit to set table font using \SetAbntTblrFont{} provided here. + +See the brazilian portugese manual tabularray-abnt-pt-br for detaiil. + +License: +LaTeX Project Public License versão 1.3c +https://www.latex-project.org/lppl/ + + diff --git a/Master/texmf-dist/doc/latex/tabularray-abnt/changelog.txt b/Master/texmf-dist/doc/latex/tabularray-abnt/changelog.txt new file mode 100644 index 00000000000..9daa7e6ee18 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tabularray-abnt/changelog.txt @@ -0,0 +1,2 @@ +2025-01-03 +- first public release diff --git a/Master/texmf-dist/doc/latex/tabularray-abnt/tabularray-abnt-pt-br.pdf b/Master/texmf-dist/doc/latex/tabularray-abnt/tabularray-abnt-pt-br.pdf Binary files differnew file mode 100644 index 00000000000..af64a6be548 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tabularray-abnt/tabularray-abnt-pt-br.pdf diff --git a/Master/texmf-dist/doc/latex/tabularray-abnt/tabularray-abnt-pt-br.tex b/Master/texmf-dist/doc/latex/tabularray-abnt/tabularray-abnt-pt-br.tex new file mode 100644 index 00000000000..6ebf28dd5d5 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tabularray-abnt/tabularray-abnt-pt-br.tex @@ -0,0 +1,358 @@ +% -*- coding: utf-8 -*- +% !TEX program = lualatex + +% tabularray-abnt.sty +%---------------------------------------------------------------------- +% copyright (C) January, 2025 by Sadao Massago +% autor: +% Sadao Massago +% e-mail: sadao@ufscar.br +% +% Licença: LaTeX Project Public License versão 1.3c or (se for a sua escolha) qualquer versão posterior. +% https://www.latex-project.org/lppl/ +%---------------------------------------------------------------------- + +\documentclass[12pt,a4paper,oneside]{book} + +\usepackage{iftex} % Para detectar o motor de TeX utilizado +% Fontes, de acordo com o motor do TeX + +\ifPDFTeX % PDFLaTeX + \usepackage[T1]{fontenc} % codificação da fonte em 8-bits + \usepackage{mlmodern} % fontes MLModern que é mais escura que Computer Modern tradicional (espessura de letra de Book) + %\usepackage{lmodern} % fontes Latin Modern: espessura tradicional do Computer Modern + \usepackage[utf8]{inputenc} % acentuação direta em UTF-8 +\else % XeLaTeX/LuaLaTeX + % \usepackage{fontspec} % pacote para configurar fontes + % \defaultfontfeatures{Ligatures=TeX} + % seleção das fontes desejadas pode ser colocados aqui + \usepackage{fontsetup} % New Cmputer Modern com espessura da letra de Book + % \usepackage[olddefault]{fontsetup} % espessura tradicional do Computer Modern +\fi + +% pacotes matemáticas de acordo com o motor TeX +\ifPDFTeX % PDFLaTeX + \usepackage{amsmath,amssymb} % para matematica +\else % XeLaTeX/LuaLaTeX + % para matemática: MikTeX pode precisar instlaçao manual de lm-math + \usepackage{unicode-math} + \ifLuaTeX + \usepackage{lualatex-math} + \fi +\fi + +\usepackage[brazil]{babel} + +% Para linhas horizontais com espaçamento melhorado: \toprule, \midrule, \bottomrule, \cmidrule +\usepackage{booktabs} +\usepackage{siunitx} % medidas internacionais e numeros +% para tabela longa que quebra entre páginas +\usepackage{tabularray} % tabelas configuráveis +\UseTblrLibrary{booktabs,siunitx} % para compatibilidade com booktabs e siunitx +% Configuração do tabularray para abnt +\usepackage{tabularray-abnt} + +%% Para cores +\usepackage[table]{xcolor} % pacote extendido de color (ativando opção de carregar colortbl paa colorir tabelas, se desejar) + +% Para inserir código de LaTeX; +\usepackage{codehigh} % https://ctan.org/pkg/codehigh +\colorlet{highbackcolor}{yellow!50} +\CodeHigh{language=latex/table,style/main=highbackcolor,style/code=highbackcolor} +% \CodeHigh{language=latex/table,style/main=yellow9,style/code=red9,style/demo=azure9} + +\usepackage[ + backend=biber, + language=auto, + % bibencoding=utf8, + style=abnt %authoryear, +]{biblatex} +\addbibresource{tabularray-abnt.bib} % arquivo bib + +\sloppy % preferência a underfull (muito espaço entre palavras) + +\usepackage{hyperref} % Para link automatico + +%\SetAbntTblrFont{\footnotesize} + +\title{Tabularray-abnt: tema abnt para tabularray} +\author{Sadao Massago} +\date{03/01/2025} + +%%%%%%%%%%%%%%%%%%%%% +% INÍCIO DO DOCUMENTO +%%%%%%%%%%%%%%%%%%%%% +\pagestyle{empty} % inicia sem paginação +\begin{document} + +\maketitle + +%%%%%%%%%%%%%%%%%%%%% +% SUMARIO E SIMILARES +%%%%%%%%%%%%%%%%%%%%% + +% LISTA DE QUADROS +%\clearpage\phantomsection\pdfbookmark[chapter]{\listquadroname}{lot} +%\listadequadros % Na classe memoir (ou ABNTeX2), use a versão * para não constar no sumário + + +% LISTA DE TABELAS +%\clearpage\phantomsection\pdfbookmark[chapter]{\listtablename}{lot} +%\listoftables % % Na classe memoir (ou ABNTeX2), use a versão * para não constar no sumário + +% SUMÁRIO +\clearpage\phantomsection\pdfbookmark{\contentsname}{toc} +\tableofcontents % No ABNTeX2 ou memoir, * para não constar ele mesmo +% para ABNTexto + +%%%%%%%%%%%%%%%%%%%% +% CONTEÚDO PRINCIPAL +%%%%%%%%%%%%%%%%%%%% +\chapter{Apresentação} + O arquivo de estilo \texttt{tabularray.sty} implementa o tema \texttt{abnt} e \texttt{quadro} para \texttt{tblr}, \texttt{talltblr} e \texttt{longtblr} para que eles produzam tabelas e quadros de acordo com a norma \texttt{ABNT}. + +O ambiente \texttt{tblr} (com opção \texttt{tall}) e \texttt{talltblr} podem ser usados para produzir tabelas dentro do ambiente de tabelas flutuante e +O ambiente \texttt{tblr} (com opção \texttt{long}) e \texttt{longtblr} produzem tabelas e quadros longos. Ao escolher tema \texttt{abnt} ou \texttt{quadro} para estes ambientes, poderá configurar para produzir tabela ou quadro compatível com a norma ABNT, com poucos ajustes. + +Para a comodidade, foram implementados ambientes \texttt{abnttblr}, \texttt{tallabnttblr} e \texttt{longabnttblr} que aplicam o tema \texttt{abnt} por padrão, além de permitir configurar a fonte usada pelo comando \verb+\SetAbntTblrFont+. Por exemplo, \verb+\SetAbntTblrFont{\footnotesize}+ configurará para que as fontes usadas enstas tabelas e quadros sejam no tamanho \verb+\footnotsize+. + +Note que, para classe exceto o \texttt{abntexto}, será providenciado o ambiente \texttt{quadro} que funciona similarmente para tabelas, e para a classe \texttt{abntexto}, será criada a entrada de legenda ``quadro'' em vez do ambiente que funcionará devidamente como quadro. + +\chapter{Alguns Comentários e Exemplos} +Note que a norma \texttt{ABNT} adota o padrão \texttt{IBGE} para tabelas. +Além disso, separa em duas categorias. +O primeiro delas é quando é uma tabela para finalidade de apresentar dados numéricos, denominado de \emph{tabela}. +O segundo delas é quando o conteúdo é texto ou similar na qual não tem pretensão de apresentar dados numéricos, denominados de \emph{quadro}. + +As tabelas, não podem ter fechamento nos laterais (esquerda e direita), além de não usar linhas horizontais no corpo da tabela. +Tabelas devem ter uma linha de títulos das colunas (que descreve o que são cada colunas), separado do corpo de tabelas pela linha horizontal. A parte de cima e de baixo deve apresentar linha horizontal para fechamento. +Por outro lado, quadro deve ser fechado nos latarias, parte de cima e de baixo e ter grade de divisão. + +O \texttt{ABNTeX2} e \texttt{ABNTexto} implementam as tabelas curtas no padrão \texttt{ABNT}, mas ainda não tem suporte as tabelas longas (2004) que ocupam mais de uma página. O objetivo desta estilo é dar suporte a tabela e quadros curtos e longos no padrão \texttt{ABNT} através do ambientes fornecidos pelo \texttt{tabularray}. + +Para diagramar uma tabela curta, basta usar o ambiente \texttt{abnttblr} com opção \texttt{tall} ou o ambiente \texttt{tallabnttblr} de forma similar a \texttt{tblr} com opção \texttt{tall} ou \texttt{talltblr}. +No ABNT, tabelas e figuras devem ser centralizados no texto. + +\begin{codehigh}[boxsep=4mm] +A Tabela~\ref{abnttblr:curta} é tabela que auto posiciona. +\begin{table}[hbp!] +\center +\begin{tallabnttblr} +[ + caption={Tabela curta}, + label={abnttblr:curta}, + remark{Fonte} = {Elaboração do autor.}, + remark{Nota} = {Testando o estilo ABNT. + A nota é opcional no ABNT}, +] +{ + rowspec={lr}, % l=left, r=right + row{1}={\bfseries}, % primeira linha + row{Z}={\bfseries}, % última linha +} +\toprule + produto & preço \\ +\midrule + cenouras (500g) & R\$0,50 \\ + cogumelos (vidro de 500g) & R\$5,00 \\ + batata (1Kg) & R\$1,20 \\ +\midrule + total & R\$6,70 \\ +\bottomrule +\end{tallabnttblr} +\end{table} +\end{codehigh} + +Lembrando que toda tabela deve ser referenciada no texto e deve conter a fonte (no exemplo, criado pelo \texttt{remark}). O parâmetro \texttt{note} não vai funcionar como \texttt{ABNT}. + +\begin{codehigh}[boxsep=4mm] +\begin{table}[hbp!] +\begin{talltblr} +[ + theme=abnt, + caption={Tabela curta simples}, + label={tab:talltblr:simples}, + remark{Fonte}={Elaboração do autor}, +] +{ + colspec = {XX}, % largura automatica das colunas +} +\toprule + nome & valor \\ +\midrule + Nome 1 & 1 \\ + Nome 2 & 2 \\ + Nome 3 & 3 \\ +\bottomrule +\end{talltblr} +\end{table} +\end{codehigh} + +A Tabela~\ref{tab:longa} é uma tabela que ocupa várias páginas. +Tal tabela pode ser criado pelo ambiente \texttt{longabnttblr}. Devido ao código implementado no \texttt{tabularray-abnt.sty}, precisa de duas compilações para que o cabeçalho seja ajustada devidamente. + +A Tabela~\ref{tab:longa} usa o pacote \texttt{siunitx} para converter os decimais em virgula, além de lidar com o seu alinhamento no decimal. Nesta tabela, foi usado a coloração de linhas em zebra (branco e cinza alternada) para facilitar o acompanhamento das linhas. + +Configuração foi como segue. + +\begin{codehigh}[boxsep=4mm] +\sisetup{ + locale=DE, % Alemão: virgula como decimal + table-format=4.2, % 4 digitos, 2 digitos decimais + table-number-alignment=center % alinhar no decimal +} +\begin{longabnttblr} +[ + caption = {Tabela longa}, % titulo + label={tab:longa}, % rotulo para referências cruzadas + remark{Fonte}={Elaboração do autor}, +] +{ + colspec = {XX[r,si]}, % X é largura automatica. Segundo X tem como parâmetro opcional r (direita) e si (número usando pacote siunitx) + rowhead = 1, % primeira linha será repatida em todas páginas + row{1} = {font=\bfseries}, % linha de título + row{even} = {gray!15}, % linhas par em cinza + % row{Z} = {font=\bfseries,white}, % última linha +} +... +\end{longabnttblr} +\end{codehigh} + +% alinhamento no decimal: +%https://tex.stackexchange.com/questions/303395/align-numbers-based-on-their-decimal-point +% configurando o siunitx +\sisetup{ + locale=DE, % Alemão: virgula como decimal + table-format=4.2, % 4 digitos, 2 digitos decimais + table-number-alignment=center % alinhar no decimal +} + +\begin{longabnttblr} +[ + caption = {Tabela longa}, % titulo + label={tab:longa}, % rotulo para referências cruzadas + remark{Fonte}={Elaboração do autor}, +] +{ + colspec = {XX[r,si]}, % X é largura automatica. Segundo X tem como parâmetro opcional r (direita) e si (número usando pacote siunitx) + rowhead = 1, % primeira linha será repatida em todas páginas + row{1} = {font=\bfseries}, % linha de título + row{even} = {gray!15}, % linhas par em cinza + % row{Z} = {font=\bfseries,white}, % última linha +} +\toprule + texto & \text{número} \\ \midrule + linha 1 & 1.1 \\ % \midrule + linha 2 & 2.2 \\ % \midrule + linha 3 & 3.3 \\ % \midrule + linha 4 & 4.4 \\ % \midrule + linha 5 & 5.5 \\ % \midrule + linha 6 & 6.6 \\ % \midrule + linha 7 & 7.7 \\ % \midrule + linha 8 & 8.8 \\ % \midrule + linha 9 & 9.9 \\ % \midrule + linha 10 & 10.10 \\ % \midrule + %\linebreak % para teste + linha 11 & 11.11 \\ + linha 12 & 12.12 \\ + linha 13 & 13.13 \\ + linha 14 & 14.14 \\ + linha 15 & 15.15 \\ + \bottomrule + \end{longabnttblr} + +Quadro flutuante poderá ser produzido pelo ambiente \texttt{quadro}, exceto para classe \texttt{abntexto} (na qual deverá usar \texttt{table}, caso queira que seja flutuante), como no Quadro~\ref{quadro:flutuante}. +Para produzir o quadro, use o tema \texttt{quadro} fornecido pelo \texttt{tabularray-abnt.sty}, como em + +\begin{codehigh}[boxsep=4mm] +\begin{quadro}[hbp!] +\begin{tallabnttblr} +[ + theme=quadro, + caption={Quadro flutuante simples}, + label={quadro:flutuante}, + remark{Fonte}={Elaboração do autor}, +] +{ + colspec = {XX}, + vlines,hlines, % grades, necessários para quadro. +} +... +\end{tallabnttblr} +\end{quadro} +\end{codehigh} + +Note o uso de grade, o que é necesário para quadros. + +\begin{quadro}[hbp!] +\begin{tallabnttblr} +[ + theme=quadro, + caption={Quadro flutuante simples}, + label={quadro:flutuante}, + remark{Fonte}={Elaboração do autor}, +] +{ + colspec = {XX}, + vlines,hlines, % grades, necessários para quadro. +} +Nome 1 & Sobrenome 1 \\ +Nome 2 & Sobrenome 2 \\ +\end{tallabnttblr} +\end{quadro} + +O quadro longo pode ser produzido pelo tema \texttt{quadro} fornecido pelo \texttt{tabularray-abnt.sty}, sobre \texttt{longanbttblr} como no Exemplo~\ref{quadro:longo}. + +\begin{longabnttblr} +[ + theme={quadro}, + caption={Um quadro longo simples}, + label={quadro:longo}, + remark{Fonte}={Elaboração do autor}, + remark{Nota}={Usando o tema quadro para produzir quadro}, +] +{ + colspec = {XX}, % largura automatica das colunas + vlines,hlines, % fazer grade +} +linha 1 & texto 1 \\ +linha 2 & texto 2 \\ +linha 3 & texto 3 \\ +linha 4 & texto 4 \\ +linha 5 & texto 5 \\ +%\pagebreak % quebrando página para teste +linha 6 & texto 6 \\ +linha 7 & texto 7 \\ +linha 8 & texto 8 \\ +linha 9 & texto 9 \\ +linha 10 & texto 10 \\ +linha 11 & texto 11 \\ +linha 12 & texto 12 \\ +linha 13 & texto 13 \\ +linha 14 & texto 14 \\ +linha 15 & texto 15 \\ +\end{longabnttblr} + +Para configurar a fonte usado em \texttt{abnttblr}, \texttt{tallabnttblr} e \texttt{longabnttblr}, usa-se o comando \verb+\SetAbntTblrFont+. Por exemplo, \verb+\SetAbntTblrFont{\footnotesize}+ configura o corpo de tabelas em \texttt{footnotesize} até que tenha nova chamada de \verb+\SetAbntTblrFont+. +Os ambientes \texttt{tallabnttblr}/\texttt{longabnttblr} é mesmo que \texttt{talltblr}/\texttt{longtblr} com a opção \texttt{theme=abnt} no parâmetro opcional, exceto pela possibilidade de ajuste da fonte pelo comando \verb+\SetAbntTblrFont+. + +Note que \texttt{tblr}, \texttt{talltblr} e \texttt{longtblr} do \texttt{tabularray} funciona também no modo matemático. Assim, \texttt{abnttblr}, \texttt{tallabnttblr} e \texttt{longabnttblr} também funcionarão no modo matemático. + +\textbf{Observação sobre lista de quadros} +A lista de quadros pode ser produzido pelo \verb+\listadequadros+. Note que na classe \texttt{ABNTeX2} acrescenta no sumário por padrão e para evitar isso, basta usar a versão ``*''. Para classe \texttt{abntexto}, terá o comando \verb+\makeloq+ que funcionará da mesma forma que \verb+makelot+. + +Para \texttt{tabularray}, veja o \textcite{book:tabularray:lyu}. Sobre \texttt{ABNTeX2} e \texttt{ABNText}, vejam \textcite{book:abnt2:araujo} e \textcite{book:abntexto:abreu}. + +\chapter{Código} + +%\CodeHigh{lite} +\dochighinput[language=latex/latex3]{tabularray-abnt.sty} + +\phantomsection +\printbibliography[heading=bibintoc] + +\end{document} + +%%%%%%%%%%%%%%%%%%% +% FIM DO DOCUMENTO +%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/doc/latex/tabularray-abnt/tabularray-abnt.bib b/Master/texmf-dist/doc/latex/tabularray-abnt/tabularray-abnt.bib new file mode 100644 index 00000000000..fbe19e53ad9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tabularray-abnt/tabularray-abnt.bib @@ -0,0 +1,44 @@ +% Encoding: UTF-8 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +tabularray-abnt.bib: Referencia bibliografica +Usado por: tabularray-abnt-pt-br.tex +ultima atualizacao: 03/01/2025 por Sadao Massago +http:/www.dm.ufscar.br/~sadao +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +@book{book:abnt2:araujo, +author={Lauro César Araujo}, +title={A classe abntex2: Documentos técnicos e científicos brasileiros compatíveis com as normas ABNT}, +url={https://ctan.org/pkg/abnt2/}, +lastchecked={2018-06-11}, +urldate={2018-06-11}, +year=2016 +} +@comment{note="URL: {\url{https://ctan.org/pkg/abnt2/}}",} + +@book{book:abntexto:abreu, +author={Elayson Abreu}, +title={abntexto: classe para {\LaTeX}}, +url={https://ctan.org/pkg/abntexto}, +lastchecked={2024-12-29}, +urldate={2024-12-29}, +year=2024 +} +@comment{note="URL: {\url{https://ctan.org/pkg/abntexto}}",} + +@book{book:tabularray:lyu, +author={Jianrui Lyu}, +title={Tabularray: Typeset Tabulars and Arrays with {\LaTeX}3}, +url={https://ctan.org/pkg/tabularray}, +lastchecked={2025-01-03}, +urldate={2025-01-03}, +year=2024 +} +@comment{note="URL: {\url{https://ctan.org/pkg/tabularray}}",} + +@Comment{jabref-meta: databaseType:biblatex;} + +@comment{e-mail: Scott Pakin <scott+clsl_AT_pakin.org>} + +%%%%%%%%%% fim do arquivo %%%%%%%%%%% diff --git a/Master/texmf-dist/doc/latex/tikz-decofonts/tikz-decofonts-doc.pdf b/Master/texmf-dist/doc/latex/tikz-decofonts/tikz-decofonts-doc.pdf Binary files differindex 1a5dfe3db06..f6caeaf1cb5 100644 --- a/Master/texmf-dist/doc/latex/tikz-decofonts/tikz-decofonts-doc.pdf +++ b/Master/texmf-dist/doc/latex/tikz-decofonts/tikz-decofonts-doc.pdf diff --git a/Master/texmf-dist/doc/latex/tikz-decofonts/tikz-decofonts-doc.tex b/Master/texmf-dist/doc/latex/tikz-decofonts/tikz-decofonts-doc.tex index aa9da75d2ba..1f1868331d7 100644 --- a/Master/texmf-dist/doc/latex/tikz-decofonts/tikz-decofonts-doc.tex +++ b/Master/texmf-dist/doc/latex/tikz-decofonts/tikz-decofonts-doc.tex @@ -3,6 +3,7 @@ % arara: pdflatex: {shell: no, synctex: no, interaction: batchmode} \documentclass[11pt,a4paper]{ltxdoc} +\usepackage{amsmath} \usepackage{bera} \usepackage{inconsolata} \usepackage[T1]{fontenc} @@ -27,8 +28,8 @@ \hypersetup{pdfborder=0 0 0} \usepackage[margin=2cm]{geometry} \setlength{\parindent}{0pt} -\def\TPversion{0.1.0} -\def\TPdate{14/10/2024} +\def\TPversion{0.1.1} +\def\TPdate{04/01/2025} \usepackage{tcolorbox} \tcbuselibrary{breakable,skins,hooks,listingsutf8} @@ -76,10 +77,10 @@ keywordstyle={\color{violet}},% classoffset=2,% alsoletter={-},% - morekeywords={\tkzbrush,\tkzink,\tkzpixl,\tkzpixletter,\tkzpixlquote},% + morekeywords={\tkzbrush,\tkzink,\tkzpixl,\tkzpixletter,\tkzpixlquote,\tkzbicolor},% keywordstyle={\color{green!50!black}},% classoffset=3,% - morekeywords={color,lines,scale,height,offseth,offsetv,thick,gridcolor,gridafter,nospaceafter,border},% + morekeywords={color,lines,scale,height,offseth,offsetv,thick,gridcolor,gridafter,nospaceafter,border,colors,style,intdelta,paralcolors},% keywordstyle={\color{orange}} },% #1 @@ -109,6 +110,10 @@ \lstinline{#1}% } +\def\sampleformula{$\displaystyle\int_0^1 \dfrac{1+x}{1+x^2}\,\mathrm{d}x$} +\def\sampletxt{But I must explain to you how all this mistaken idea of denouncing pleasure.} +\def\samplenum{1500} + \begin{document} \thispagestyle{empty} @@ -146,12 +151,13 @@ \begin{tcblisting}{colframe=lightgray,colback=lightgray!5,listing only} %paintbrush effect \tkzbrush[color=blue]{DECORATION} - %paintink effect \tkzink[color=orange]{DECORATION} - %pixeletter effect \tkzpixl[color=violet]{DECORATION} +%bicolor effect +\tkzbicolor[colors=blue/red,style=ndiag]{\Huge\sffamily DECORATION} +\tkzbicolor[colors=teal/orange,style=ellips]{\Huge\sffamily DECORATION} \end{tcblisting} \begin{tcolorbox}[colframe=lightgray,colback=lightgray!5] @@ -166,6 +172,10 @@ \hfill\tkzpixl[color=violet]{Decoration} \end{tcolorbox} +\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5] +\hfill\tkzbicolor[colors=blue/red,style=ndiag]{\Huge\sffamily DECORATION}~~\tkzbicolor[colors=teal/orange,style=ellips]{\Huge\sffamily DECORATION}\hfill~ +\end{tcolorbox} + \vfill~ \hrule @@ -203,7 +213,7 @@ In order to load \texttt{tikz-decofonts}, simply use: \usepackage{tikz-decofonts} \end{DemoCode} -Loaded packages are \texttt{tikz}, \texttt{xintexpr}, \texttt{simplekv} and \texttt{xstring}. +Loaded packages are \texttt{tikz}, \texttt{xintexpr}, \texttt{simplekv}, \texttt{listofitems} and \texttt{xstring}. Loaded \texttt{tikz.librairies} are \texttt{decorations}, \texttt{decorations.pathreplacing}, \texttt{calc}, \texttt{positioning}, \texttt{bbox}, \texttt{arrows.meta} and \texttt{bending}. @@ -337,8 +347,77 @@ Some adjustments (keys, paths) are maid from original code, but the global usage \pagebreak +\subsection{Bicolor effect} + +\begin{DemoCode}{listing only} +%compatible with all fonts and/or sizes +\tkzbicolor% + [colors=...,style=...,intdelta=...] + {text} + +\tkzbicolor%with paral style + [paralcolors=...,style=paral,intdelta=...] + {text} + +%style = midh/midv/rect/ellips/paral (paral by default) +%colors = red/blue by default, +%paralcolors = red/blue/orange/gray by default +%intdelta = 0.66 by default, percentage of int dim for ellips/rect +\end{DemoCode} + +\begin{DemoCode}{listing only} +\def\sampleformula{$\displaystyle\int_0^1 \dfrac{1+x}{1+x^2}\,\mathrm{d}x$} +\def\sampletxt{But I must explain to you how all this mistaken idea of denouncing pleasure.} +\def\samplenum{1500} +\end{DemoCode} + +\begin{DemoCode}{} +\tkzbicolor[style=midh]{\sampleformula} +or \tkzbicolor[colors=violet/magenta,style=midv]{\sampleformula} +or \tkzbicolor[colors=darkgray/olive,style=ndiag]{\sampleformula} +or \tkzbicolor[colors=orange/teal,style=sdiag]{\sampleformula} +or \tkzbicolor[colors=orange/teal,style=ellips]{\sampleformula} +or \tkzbicolor[colors=pink/violet,style=rect]{\sampleformula} +\end{DemoCode} + +\begin{DemoCode}{} +\tkzbicolor[style=midh]{\sampletxt}\par +\tkzbicolor[colors=violet/magenta,style=midv]{\sampletxt}\par +\tkzbicolor[colors=darkgray/olive,style=ndiag]{\sampletxt}\par +\tkzbicolor[colors=orange/teal,style=sdiag]{\sampletxt}\par +\tkzbicolor[colors=orange/teal,style=ellips]{\sampletxt}\par +\tkzbicolor[colors=pink/violet,style=rect]{\sampletxt} +\end{DemoCode} + +\begin{DemoCode}{} +\tkzbicolor[style=midh]{\parbox{2.5cm}{\sampletxt}} +\tkzbicolor[colors=violet/gray,style=midv]{\parbox{2.5cm}{\sampletxt}} +\tkzbicolor[colors=darkgray/olive,style=ndiag]{\parbox{2.5cm}{\sampletxt}} +\tkzbicolor[colors=orange/cyan,style=sdiag]{\parbox{2.5cm}{\sampletxt}} +\tkzbicolor[colors=pink/violet,style=ellips]{\parbox{2.5cm}{\sampletxt}} +\tkzbicolor[colors=pink/violet,style=ellips,intdelta=0.85]{\parbox{2.5cm}{\sampletxt}} +\tkzbicolor[colors=cyan/darkgray,style=rect]{\parbox{2.5cm}{\sampletxt}} +\end{DemoCode} + +\begin{DemoCode}{} +\tkzbicolor[style=paral]{\parbox{6cm}{\large\sffamily\sampletxt}} +\end{DemoCode} + +\begin{DemoCode}{} +\tkzbicolor[style=midh]{\samplenum}\par +\tkzbicolor[colors=violet/magenta,style=midv]{\samplenum}\par +\tkzbicolor[colors=darkgray/olive,style=ndiag]{\samplenum}\par +\tkzbicolor[colors=orange/teal,style=sdiag]{\samplenum}\par +\tkzbicolor[colors=orange/teal,style=ellips]{\samplenum} +\end{DemoCode} + + +\pagebreak + \section{History} +\texttt{0.1.1: Bicolor effect} + \texttt{0.1.0: Initial version} \end{document} diff --git a/Master/texmf-dist/doc/latex/tikz-decofonts/tkzbrushA.tex b/Master/texmf-dist/doc/latex/tikz-decofonts/tkzbrushA.tex index bda9222441e..e1308341193 100644 --- a/Master/texmf-dist/doc/latex/tikz-decofonts/tkzbrushA.tex +++ b/Master/texmf-dist/doc/latex/tikz-decofonts/tkzbrushA.tex @@ -8,4 +8,4 @@ \tkzbrush[color=red,lines=20,scale=1.5]{CUSTOM TEXT} -\end{document} +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tikzlings/README.pdf b/Master/texmf-dist/doc/latex/tikzlings/README.pdf Binary files differnew file mode 100644 index 00000000000..8a112071b72 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tikzlings/README.pdf diff --git a/Master/texmf-dist/doc/latex/tikzlings/tikzlings-doc.pdf b/Master/texmf-dist/doc/latex/tikzlings/tikzlings-doc.pdf Binary files differindex e21743c202f..8fc71e8e20a 100644 --- a/Master/texmf-dist/doc/latex/tikzlings/tikzlings-doc.pdf +++ b/Master/texmf-dist/doc/latex/tikzlings/tikzlings-doc.pdf diff --git a/Master/texmf-dist/doc/latex/tikzlings/tikzlings-doc.tex b/Master/texmf-dist/doc/latex/tikzlings/tikzlings-doc.tex index d812bc81777..e2f9a67f83a 100644 --- a/Master/texmf-dist/doc/latex/tikzlings/tikzlings-doc.tex +++ b/Master/texmf-dist/doc/latex/tikzlings/tikzlings-doc.tex @@ -26,7 +26,7 @@ \url{https://github.com/samcarter/tikzlings}\\ \url{https://www.ctan.org/pkg/tikzlings} }{samcarter}} -\date{Version v2.1 \textendash{} 2024/12/12} +\date{Version v2.2 \textendash{} 2025/01/05} \usepackage[ themecolor=samviolet @@ -110,8 +110,9 @@ \newcommand*\gobbleentrynumber[1]{} \newcommand*\mytocformat[1]{#1} \newcommand*\mytocpageformat[1]{#1} +\makeatletter \RedeclareSectionCommand[ - toclinefill=\TOCLineLeaderFill, + toclinefill=\hyper@linkstart{link}{\Hy@tocdestname}\TOCLineLeaderFill\hyper@linkend, tocnumwidth=0pt, tocentrynumberformat=\gobbleentrynumber, tocentryformat=\mytocformat, @@ -119,7 +120,6 @@ tocbeforeskip=0.8ex plus 1pt minus 1pt ]{section} -\makeatletter \renewcommand{\sectionlinesformat}[4]{% \Ifstr{#1}{section}{% \parbox[t]{\linewidth}{% @@ -316,7 +316,7 @@ Another way to use the \tikzlings is the \TikZ library of the same name. By load \subsection*{List of all \tikzlings:} \begingroup - \hypersetup{hidelinks} + \hypersetup{hidelinks,linktoc=all} \tableofcontents \endgroup @@ -727,4 +727,18 @@ A list of all available accessories is given below. For completeness the default ] \end{tcblisting} +\subsection{Random accessories} + +Given the number of available accessories, it can be hard to decide which ones to use. +Luckily, one does not need to decide and pick random accessories instead. +There are two macros for this purpose, \saminline|\randomhead| and \saminline|\randomaccessories|, which will choose a random headpiece and a random other accessories, respectively. +Please note, that one needs to initialise these macros with \saminline|\shufflethings| to generate the random accessories. +\begin{tcblisting}{title={Random accessories}} +\shufflethings +\coati[ + \randomhead, + \randomaccessories +] +\end{tcblisting} + \end{document} diff --git a/Master/texmf-dist/doc/latex/titlesec/README.md b/Master/texmf-dist/doc/latex/titlesec/README.md index 5ae8a61fb30..c5c5198d286 100644 --- a/Master/texmf-dist/doc/latex/titlesec/README.md +++ b/Master/texmf-dist/doc/latex/titlesec/README.md @@ -1,4 +1,4 @@ -2023-10-27 +2025-01-04 ## Titlesec, Titletoc, Titleps @@ -30,6 +30,9 @@ mechanims is used, without intermediate `\leftmark`s or `\rightmark`s. ### Latest changes ``` +2.17 2025-01-04 + Fix – leftlabels raised and error. + 2.16 2023-10-27 Undo the fix for #64. diff --git a/Master/texmf-dist/doc/latex/titlesec/titleps.pdf b/Master/texmf-dist/doc/latex/titlesec/titleps.pdf Binary files differindex c9ef7caf4cf..206c807aa8f 100644 --- a/Master/texmf-dist/doc/latex/titlesec/titleps.pdf +++ b/Master/texmf-dist/doc/latex/titlesec/titleps.pdf diff --git a/Master/texmf-dist/doc/latex/titlesec/titleps.tex b/Master/texmf-dist/doc/latex/titlesec/titleps.tex index c807b5ac0fd..006f04c5093 100644 --- a/Master/texmf-dist/doc/latex/titlesec/titleps.tex +++ b/Master/texmf-dist/doc/latex/titlesec/titleps.tex @@ -1,5 +1,5 @@ % -% Copyright (C) 1998-2023 Javier Bezos http://www.texnia.com +% Copyright (C) 1998-2025 Javier Bezos http://www.texnia.com % % This file may be distributed and/or modified under the conditions of % the MIT License. A version can be found at the end of this file. @@ -7,8 +7,8 @@ % Repository: https://github.com/jbezos/titlesec % -\def\fileversion{2.16} -\def\docdate{2023/10/27} +\def\fileversion{2.17} +\def\docdate{2025/01/04} \documentclass[a4paper]{ltxguide} \usepackage[sf,bf,compact,topmarks,calcwidth,pagestyles]{titlesec} diff --git a/Master/texmf-dist/doc/latex/titlesec/titlesec.pdf b/Master/texmf-dist/doc/latex/titlesec/titlesec.pdf Binary files differindex ef3f90e9dd4..2455b6a8ac1 100644 --- a/Master/texmf-dist/doc/latex/titlesec/titlesec.pdf +++ b/Master/texmf-dist/doc/latex/titlesec/titlesec.pdf diff --git a/Master/texmf-dist/doc/latex/titlesec/titlesec.tex b/Master/texmf-dist/doc/latex/titlesec/titlesec.tex index 366f7692266..0cf7a07435e 100644 --- a/Master/texmf-dist/doc/latex/titlesec/titlesec.tex +++ b/Master/texmf-dist/doc/latex/titlesec/titlesec.tex @@ -1,5 +1,5 @@ % -% Copyright (C) 1998-2023 Javier Bezos http://www.texnia.com +% Copyright (C) 1998-2025 Javier Bezos http://www.texnia.com % % This file may be distributed and/or modified under the conditions of % the MIT License. A version can be found at the end of this file. @@ -7,8 +7,8 @@ % Repository: https://github.com/jbezos/titlesec % -\def\fileversion{2.16} -\def\docdate{2023/10/27} +\def\fileversion{2.17} +\def\docdate{2025/01/04} \documentclass[a4paper]{ltxguide} \usepackage[sf,bf,compact,topmarks,calcwidth,pagestyles]{titlesec} @@ -38,7 +38,7 @@ \title{The \textsf{titlesec}, \textsf{titleps} and \textsf{titletoc} Packages\footnote{The \textsf{titlesec} package is currently at -version 2.16. \copyright{} 1998--2023 Javier Bezos.}} +version 2.17. \copyright{} 1998--2025 Javier Bezos.}} \author{Javier Bezos\footnote{For bug reports, comments and suggestions go to \href{http://www.tex-tipografia.com/contact.html}% @@ -134,19 +134,22 @@ added, including picture environments. entries of different levels in a paragraph or changing the format of entries in the middle of a document. \end{itemize} -\textsf{Titlesec} works with the standard classes and with many -others, including the AMS ones, and it runs smoothly with -\textsf{hyperref}. +At the time of this writing, \textsf{titlesec} works with the standard +classes and should work with many others, including the AMS ones, +although you should be aware the latter reimplement the original +internal commands. These changes will be lost here. \begin{warning} - Be aware the AMS classes reimplement the original internal commands. - These changes will be lost here. The compatibility with - \textsf{hyperref} has been tested with \textsf{dvips}, \textsf{dvipdfm} - and \textsf{pdftex} but it is an unsupported feature (for example, - with |\titleclass| PDF bookmarks are not correctly nested). Please, check - your version of \textsf{hyperref} is compatible with - \textsf{titlesec}. Unfortunately, it is not compatible with - \textsf{memoir} or \textsf{KOMA}, which provide their own tools. + Compatibility with \textsf{hyperref} has been tested in typical use + cases, but it is an unsupported feature. For instance, when + using |\titleclass|, PDF bookmarks may not be properly nested, and + |\nameref| might not function as expected. Furthermore, since + \textsc{hyperref} is actively developed, currently working features + may become non-functional over time. I regret these ‘known + issues’ are unlikely to be addressed in the near future. + + It is not compatible with \textsf{memoir} or \textsf{KOMA}, which + provide their own tools. \end{warning} As usual, load the package in the standard way with @@ -370,7 +373,6 @@ proper places for penalties. See |\sectionbreak| below. |\textcolor| or place the code inside a group. \end{warning} - \begin{desc} |\chaptertitlename| \end{desc} @@ -399,7 +401,10 @@ doesn't work correctly. With a negative value in the latter and if will start in the outer margin, as expected, but the subsequent lines will not; worse, those lines will be shortened at the right margin.} -\item |<before-sep>| is the vertical space before the title. +\item |<before-sep>| is the vertical space before the title. The +standard |\chapter| inserts it with a |\vspace*|, and so does +\textsf{titlesec}; this means you have to take into account other +possible spaces inserted by \LaTeX\ at the op of the page. \item |<after-sep>| is the separation between title and text---vertical with |hang|, |block|, and |display|, and horizontal with |runin|, @@ -514,12 +519,13 @@ placed. Usually, you should use the starred version. |aftersep largestsep| \quad (Package options) \end{desc} -By default, when there are two consecutive titles the |<after-sep>| -space from the first one is used between them. Sometimes this is not -the desired behaviour, especially when the |<before-sep>| space is much -larger than the |<after-sep>| one (otherwise the default seems -preferable). With |largestsep| the largest of them is used. -Default is |aftersep|. +By default, when there are two consecutive titles the |<after-sep>| +space from the first one is used between them. Sometimes this is not +the desired behaviour, especially when the |<before-sep>| space is much +larger than the |<after-sep>| one (otherwise the default seems +preferable). With |largestsep| the largest of them is used. Default is +|aftersep|. [\textbf{Note.} |largestsep| may not work as documented. +This is a known issue.] \begin{desc} |\\ \\*|\\ @@ -771,8 +777,9 @@ TOC entries, which will be based on the full title. \end{desc} \fbox{2.6} Replaces every occurrence of \verb|\\| or \verb|\\*| in -titles by a space in running heads and TOC entries. This way, you -do not have to repeat the title just to remove a formatting command. +titles by a space in running heads and TOC entries. This way, you do +not have to repeat the title just to remove a formatting command. Note +with |\chapter| and |\part| you need to set the title class. \begin{desc} |notocpart*| \quad (Package option) @@ -783,8 +790,7 @@ do not have to repeat the title just to remove a formatting command. should be a contents entry for it. This is somewhat odd, indeed, but the very fact is nobody has complained until now! On the other hand, restoring the behaviour one could expect after 15 years doesn't seem a -good idea. A new page/part style in on the way, but for the moment -this option restores the standard behaviour. +good idea. This option restores the standard behaviour. \subsection{Extended Settings} %~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1358,9 +1364,9 @@ similarly (but not equally) to: Compare this definition with that given above and you will understand how |\dottedcontents| is defined. -Although standard classes use font dependent units (mainly em), -it is recommended using absolute ones (pc, pt, etc.) to ensure -they entries are aligned correctly. +Although standard classes use font dependent units (mainly em), with +|titletoc| you have to use absolute ones (pc, pt, etc.) to ensure they +entries are aligned correctly. \subsection{And more} diff --git a/Master/texmf-dist/doc/latex/warning/README b/Master/texmf-dist/doc/latex/warning/README index b80a18f2689..7fa2066fd5a 100644 --- a/Master/texmf-dist/doc/latex/warning/README +++ b/Master/texmf-dist/doc/latex/warning/README @@ -1,4 +1,4 @@ -README for warning package, 2023-03-18, v0.10 +README for warning package, 2025-01-01, v0.11 TABLE OF CONTENTS diff --git a/Master/texmf-dist/doc/latex/warning/warning-doc.pdf b/Master/texmf-dist/doc/latex/warning/warning-doc.pdf Binary files differindex b3c6f60b2d0..fb776abae18 100644 --- a/Master/texmf-dist/doc/latex/warning/warning-doc.pdf +++ b/Master/texmf-dist/doc/latex/warning/warning-doc.pdf diff --git a/Master/texmf-dist/doc/latex/warning/warning-doc.tex b/Master/texmf-dist/doc/latex/warning/warning-doc.tex index 82a93be17eb..d14a0896e59 100644 --- a/Master/texmf-dist/doc/latex/warning/warning-doc.tex +++ b/Master/texmf-dist/doc/latex/warning/warning-doc.tex @@ -30,10 +30,10 @@ numberstyle=\scriptsize\color{SlateGray}% } -\title{The \pkg{warning} package\thanks{This manual corresponds to \pkg{warning.sty}~v0.10, dated~2023-03-18.}} +\title{The \pkg{warning} package\thanks{This manual corresponds to \pkg{warning.sty}~v0.11, dated~2025-01-01.}} \subtitle{Global warnings at the end of the screen output\\and the logfile} \author{Harald Harders\thanks{\mail{harald.harders@gmx.de}}\hspace{0.7em}(inactive)} -\date{2023-03-18}% (2023-03-18 update done by H.-Martin Münch, <Martin dot Muench at Uni-Bonn dot de>) +\date{2025-01-01}% (2025-01-01 update done by H.-Martin Münch, <Martin dot Muench at Uni-Bonn dot de>) \begin{document} \maketitle diff --git a/Master/texmf-dist/doc/latex/yb-book/DEPENDS.txt b/Master/texmf-dist/doc/latex/yb-book/DEPENDS.txt index cdd7bf4c2b3..3d880587be3 100644 --- a/Master/texmf-dist/doc/latex/yb-book/DEPENDS.txt +++ b/Master/texmf-dist/doc/latex/yb-book/DEPENDS.txt @@ -3,21 +3,25 @@ hard biblatex hard bigfoot hard changepage hard chngcntr +hard collection-fontsextra +hard collection-fontsrecommended hard csquotes +hard cyrillic hard enumitem hard fancyhdr hard float hard footmisc hard geometry +hard hypdoc hard ifmtarg hard imakeidx hard lastpage +hard lh hard libertine hard mdframed hard microtype hard needspace hard paralist -hard hypdoc hard pgf hard pgfopts hard qrcode @@ -39,4 +43,5 @@ soft imakeidx soft l3build soft pgfopts soft scheme-basic +soft silence soft xetex diff --git a/Master/texmf-dist/doc/latex/yb-book/LICENSE.txt b/Master/texmf-dist/doc/latex/yb-book/LICENSE.txt index 1f211e02878..a2ebd120aff 100644 --- a/Master/texmf-dist/doc/latex/yb-book/LICENSE.txt +++ b/Master/texmf-dist/doc/latex/yb-book/LICENSE.txt @@ -1,6 +1,6 @@ (The MIT License) -Copyright (c) 2021-2024 Yegor Bugayenko +Copyright (c) 2021-2025 Yegor Bugayenko Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal diff --git a/Master/texmf-dist/doc/latex/yb-book/README.md b/Master/texmf-dist/doc/latex/yb-book/README.md index caa052d47d8..21181174b58 100644 --- a/Master/texmf-dist/doc/latex/yb-book/README.md +++ b/Master/texmf-dist/doc/latex/yb-book/README.md @@ -27,6 +27,10 @@ Hello, world! \end{document} ``` +Otherwise, you can download +[`yb-book.cls`](https://yegor256.github.io/yb-book/yb-book.cls) and +use in your document. + If you want to contribute yourself, make a fork, then create a branch, then run `make` in the root directory. It should compile everything without errors. If not, submit an issue and wait. diff --git a/Master/texmf-dist/doc/latex/yb-book/yb-book.pdf b/Master/texmf-dist/doc/latex/yb-book/yb-book.pdf Binary files differindex 0a319992b5b..b953b416211 100644 --- a/Master/texmf-dist/doc/latex/yb-book/yb-book.pdf +++ b/Master/texmf-dist/doc/latex/yb-book/yb-book.pdf diff --git a/Master/texmf-dist/doc/latex/zugferd/DEMO-rechnung-zugferd.tex b/Master/texmf-dist/doc/latex/zugferd/DEMO-rechnung-zugferd.tex index e9f705a84d0..5285d44d5c6 100644 --- a/Master/texmf-dist/doc/latex/zugferd/DEMO-rechnung-zugferd.tex +++ b/Master/texmf-dist/doc/latex/zugferd/DEMO-rechnung-zugferd.tex @@ -1,7 +1,7 @@ % !TeX Program=lualatex % % Demo file for the LaTeX-ZUGFeRD project -% This file corresponds to version 0.9c (2024-12-08) +% This file corresponds to version 0.9d (2025-01-02) % % Copyright (C) 2024 Marei Peischl <marei@peitex.de> % --------------------------------------------------------- diff --git a/Master/texmf-dist/doc/latex/zugferd/README.md b/Master/texmf-dist/doc/latex/zugferd/README.md index 3712c73eb72..6a70316a494 100644 --- a/Master/texmf-dist/doc/latex/zugferd/README.md +++ b/Master/texmf-dist/doc/latex/zugferd/README.md @@ -1,8 +1,8 @@ # ZUGFeRD - Create ZUGFeRD and other kinds of E-invoices using LaTeX -Copyright (C) 2023–2024 by Marei Peischl (peiTeX) <marei@peitex.de> +Copyright (C) 2023–2025 by Marei Peischl (peiTeX) <marei@peitex.de> -zugferd version 0.9c (2024-12-08) +zugferd version 0.9d (2025-01-02) *************************************************************************** @@ -23,6 +23,9 @@ This package does not provide any validation. Please be aware of you have to use ## Version History +* 0.9d (2025-01-02) + - extend documentation + - fix purchase-order-reference * 0.9c (2024-12-08) - extend address interface - add document reference fields diff --git a/Master/texmf-dist/doc/latex/zugferd/zugferd.pdf b/Master/texmf-dist/doc/latex/zugferd/zugferd.pdf Binary files differindex 2cc2822f165..858d1574700 100644 --- a/Master/texmf-dist/doc/latex/zugferd/zugferd.pdf +++ b/Master/texmf-dist/doc/latex/zugferd/zugferd.pdf diff --git a/Master/texmf-dist/doc/lualatex/luatbls/README.md b/Master/texmf-dist/doc/lualatex/luatbls/README.md new file mode 100644 index 00000000000..b2fc6681dee --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/luatbls/README.md @@ -0,0 +1,27 @@ +# luatbls + +Lua tables made accessible in LaTeX + +# License + +Copyright (C) 2025 Kale Ewasiuk + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Master/texmf-dist/doc/lualatex/luatbls/luatbls.pdf b/Master/texmf-dist/doc/lualatex/luatbls/luatbls.pdf Binary files differnew file mode 100644 index 00000000000..e8bc8a16941 --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/luatbls/luatbls.pdf diff --git a/Master/texmf-dist/doc/lualatex/luatbls/luatbls.tex b/Master/texmf-dist/doc/lualatex/luatbls/luatbls.tex new file mode 100644 index 00000000000..13e9dbf30be --- /dev/null +++ b/Master/texmf-dist/doc/lualatex/luatbls/luatbls.tex @@ -0,0 +1,410 @@ +% Kale Ewasiuk (kalekje@gmail.com) +% 2025-01-01 +% Copyright (C) 2025 Kale Ewasiuk +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the "Software"), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% +% The above copyright notice and this permission notice shall be included in +% all copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +% ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +% TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +% PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +% SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +% ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +% ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +% OR OTHER DEALINGS IN THE SOFTWARE. + + +\documentclass[11pt,parskip=half]{scrartcl} +\usepackage[left=0.75in,right=0.75in,top=1in,bottom=1in]{geometry} +\setlength{\parindent}{0ex} +\newcommand{\llcmd}[1]{\leavevmode\llap{\texttt{\detokenize{#1}}}} +\newcommand{\cmd}[1]{\texttt{\detokenize{#1}}} +\newcommand{\qcmd}[1]{``\cmd{#1}''} +\usepackage{url} +\usepackage[svgnames]{xcolor} +\usepackage{showexpl} +\lstset{explpreset={justification=\raggedright,pos=r,hsep=1cm,preset={\color{Navy}\small}}} +\setlength\ResultBoxRule{0mm} +\lstset{ + language=[LaTeX]TeX, + basicstyle=\ttfamily\footnotesize\color{blue}, + commentstyle=\ttfamily\footnotesize\color{gray}, + frame=none, + numbers=left, + numberstyle=\ttfamily\footnotesize\color{gray}, + prebreak=\raisebox{0ex}[0ex][0ex]{\color{gray}\ensuremath{\hookleftarrow}}, + extendedchars=true, + breaklines=true, + tabsize=4, +} +\addtokomafont{title}{\raggedright} +\addtokomafont{author}{\raggedright} +\addtokomafont{date}{\raggedright} +\author{Kale Ewasiuk (\url{kalekje@gmail.com})} +\usepackage[yyyymmdd]{datetime}\renewcommand{\dateseparator}{--} +\date{\today} + +\usepackage{enumitem} + +\RequirePackage{luatbls} + +\title{luatbls} +\subtitle{Create, modify, and use Lua tables from within LaTeX} + + +\begin{document} +% + +\maketitle + + +\subsection*{Introduction} + +This package provides a Lua-table interface based on the \cmd{luakeys} package:\\ +\url{https://mirror.quantum5.ca/CTAN/macros/luatex/generic/luakeys/luakeys.pdf}\\ + +A global table called \cmd{luatbls} is created by loading this package. This table contains all user-defined tables +as well as internal package functions and settings. +User tables are stored directly under the module's table, so you can access a table within Lua by using: +\cmd{luatbls['mytable']} or \cmd{luatbls.mytable}. Further, \cmd{luatbls} can be called directly to obtain a table item by \cmd{luatbls'i'}, +where \cmd{i} is a ``flexible'' indexing system discussed in the next paragraphs. + +If you want to change the \cmd{luakeys} global parser options, you can adjust them by:\\ +\cmd{\directlua{luatbls._luakeys.opts.OPTION = VALUE}}\\ +For debugging, set \cmd{\directlua{luatbls._debug = true}} + + +In this documentation, arguments are represented as follows:\\ +\llcmd{t }: table name. If none provided, the most recent is used.\\ +\llcmd{k }: a string key.\\ +\llcmd{n }: an integer index.\\ +\llcmd{v }: a value.\\ +\llcmd{i }: the flexible indexer to get a single item.\\ +\llcmd{I }: the flexible indexer to get a single or multiple items.\\ +\llcmd{keyval }: a key-value string for the table. Standalone values are set to boolean.\\ +\llcmd{csv }: a key-value string where standalone values are parsed as array-like. + +There are a few ways to use the index (placeholder \cmd{i}.\\ +\cmd{t.k} where \cmd{t} is the table name and \cmd{k} is a string key (i.e. uses \cmd{luatbls.t.k}),\\ +\cmd{t/n} where \cmd{n} is an integer index (i.e. uses \cmd{t.k[n]}); note that negative indexes are allowed where -1 is the last element. +Alternatively, \cmd{t} and the symbol can be omitted, and simply pass the element without the table name as a prefix, +where the assumed table is the last one that was created or changed to (i.e. the most 'recent' table). +In this case, passing a number will assume an integer index. + +To use a \cmd{I}, +you can explicitly select tables and groups of keys by \cmd{t|seq}, or \cmd{t.k}, or \cmd{t/n}. +If no \cmd{|./} is provided, the recent table is used and the argument is assumed to be a sequence of keys. +\cmd{penlightplus}'s command \cmd{penlight.seq.tbltrain()} syntax is used for \cmd{seq}uences. +To summarize what \cmd{seq} can be, a comma-separated list of numbers or keys are used to specify which elements are iterated over. +NumPy-like slicing is possibly with \cmd{:} to choose integer ranges. +If \cmd{*} is provided, +all string keys are iterated. +If \cmd{I} is entirely blank, all elements of the recent table are used, which is equivalent to \cmd{t|*,:}.\\ + +Note: nested tables are currently not fully supported. Some variations of commands have an \cmd{E} suffix which indicates +that nested elements can be explicitly indexed. +The table name must be specified, and the validity of table names and keys are not checked. + +The \cmd{tbl} commands fully expand the +\cmd{t}, \cmd{k}, \cmd{n}, \cmd{i}, and \cmd{I} arguments. However a variation with an \cmd{N}-appended is usually provided +which will not expand the \cmd{v}, \cmd{keyval}, or \cmd{csv} args. + + + +%%% +\subsection*{Creating Tables} + +%\tblfrkv{kale}{kale=ewasiuk} +%\luadirect{penlight.wrth(luatbls'kale.kale')} + +\cmd{\tblnew{t}} declares a new table with name \cmd{t}\\ +\cmd{\tblchg{t}} changes the 'recent' table\\ +\\ +\cmd{\tblfrkv{t}{keyval}[opts]} new table from key-vals using \cmd{luakeys} \\ +\cmd{\tblfrkvN{t}{keyval}[opts]} does not expand key-val string \cmd{luakeys} \\ + +\cmd{\tblkvundefcheck} will throw an error if you use define a table from key-values +and use a key that was not specified in the luakeys parse options via \cmd{opts.defaults} or \cmd{opts.defs}.\\ +\\ + \cmd{\tblfrcsv{t}{csv}[opts]} a shorthand \cmd{\tblfrkv{t}{csv}[naked_as_value=true,opts]}, a good way to convert a comma-separated list to an array\\ + \cmd{\tblfrcsvN{t}{csv}[opts]} same as above, but the csv is not expanded.\\ + + +\subsection*{Setting, getting, and modifying} + + +\cmd{\tblset{i}{v}} sets a value of the table/index \cmd{i} to \cmd{v}\\ +\cmd{\tblsetN{i}{v}} same as above, but the value is not expanded.\\ +\\ +\cmd{\tblget{i}} gets the value and \cmd{tex.sprint()}s it\\ +\cmd{\tblgetE{t.k}} An 'explicit' version of tbl get. Use this for nested tables. The tbl name must be specified. +The validity of table names and keys are not checked.\\ + +\begin{LTXexample} +\tblfrkv{ex}{a,b,c,first=john,last=smith}% + [defaults={x=0,1=one,n=false,y=yes}] +\tblget{ex.a}\\ +\tblset{a}{tRuE!!} +\tblget{a}\\ +\tblget{ex.x}\\ +\tblget{.x}\\ +\tbladd{ex.newkey}{val}\tblget{newkey}\\ +\tbladd{nk}{VAL}\tblget{nk}\\ +\end{LTXexample} + +\begin{LTXexample} +\tblfrcsv{EX}{x={1,2,{1,2,3}},name=me} +\tblgetE{EX.x[1]}\\ +\tblgetE{EX.x[3][3]}\\ +\tblgetE{EX.name}\\ +\end{LTXexample} + + + +\cmd{\tbladd{i}{v}} add a new value to a table using index method\\ +\cmd{\tbladdN{i}{v}} above, but don't expand the value argument\\ +\\ +\cmd{\tblapp{t}{v}} append a \cmd{v}alue (integer-wise) to a \cmd{t}able\\ +\cmd{\tblappN{t}{v}}\\ +\\ +\cmd{\tblupd{t}{keyval}} update a \cmd{t}able with more \cmd{keyval}s\\ +\cmd{\tblupdN{t}{keyval}}\\ +\\ +\cmd{\tblcon{t}{csv}} concatenate array-style \cmd{csv} at the end of \cmd{t}\\ +\cmd{\tblconN{t}{csv}}\\ + + + +\subsection*{Conditionals} + +\cmd{\tblif{i}{tr}[fa]} runs code \cmd{tr} if the item is true else \cmd{fa}\\ +\cmd{\tblifv{i}{tr}[fa]} runs code \cmd{tr} if the item is truth-y (using \cmd{pl.hasval}) else \cmd{fa}\\ +\cmd{\tblifeq{i}{v}{tr}[fa]} checks the equivalency of to a user-specified value. Quotes must be used to indicate strings. + +\begin{LTXexample} +\tblfrcsv{x}{n=false,y=true, + k0="",kv=val,k2=6} +\tblif{n}{tr}[FA]\\ +\tblif{k0}{TR}[fa]\\ +\tblifv{k0}{tr}[FA]\\ +\tblifeq{kv}{'val'}{TR}[fa]\\ +\tblifeq{k2}{6}{TR}[fa]\\ +\end{LTXexample} + + +\subsection*{Iterating} +%TODO use PIPE SYMBOLZ \dsadsa + +\cmd{\tblfor{I}{template}} and \cmd{\tblforN} By default, iterates over all elements (\cmd{seq = *,:}), +but arbitrary indices/keys can be iterated over as per \cmd{penlight.seq.tbltrain} syntax. +\cmd{<k>} and \cmd{<v>} are placeholders in the template that are replaced by the keys and vals and can be changed by: +\cmd{\luadirect{luatbls._tblv = '<v>'}} + +If you want to iterate over a second-level tabel, you must use:\\ +\cmd{\tblforE} and \cmd{\tblforEN}, and explicitly provide the table and element. + +\begin{LTXexample} +\tblfrcsv{x}{n1,k1=v1,n2,n3,n4, + k2=v2,k3=v3,n5,n6} +1> \tblfor{:}{<k> = <v>; }\\ +2> \tblfor{*}{<k> = <v>; }\\ +3> \tblfor{1,*,2::2}{<k> = <v>; }\\ +4> \tblfor{ x | 1,*,2::2}{<k> = <v>; }\\ +\tblfrcsv{x}{a,{a,b,c}} +5> \tblforE{x[2]}{<k> = <v>; } +\end{LTXexample} + + + + +\subsection*{Definitions} +\cmd{\tbldef{i}[cs]} pushes the value to macro \cmd{\cs}. If cs is not provided, a default cs name of \cmd{dtbl<t><k>} is used.\\ +\cmd{\tblgdef{i}[cs]} like above but global definition is used.\\ + +\cmd{\tbldefs{I}[cspfx]} and \cmd{\tblgdefs{I}[cspfx]} defines items in table \cmd{t} (use recent if blank) with format \cmd{<cspfx><key>} where \cmd{cspfx} is a command sequence prefix. +If \cmd{cspfx} is blank, keys will be defined as \cmd{dtbl<t><k>}. +The default \cmd{cspfx} is changed by:\\\cmd{\luadirect{luatbls._cspfx = 'dtbl'}}\\ +Numerical keys are converted to capital letters: 1->A, 2->B. +It is recommended that tables and keys contain letters only for predictable behaviour when using this feature.\\ +If the value of a tbl's key is a table, every element in that table is defined, and the keys of that nested table is +appended to the cs: \cmd{dtbl<t><k1><k2>} (noting that numbers are converted to letters).\\ + + +\begin{LTXexample} +\tblfrcsv{EX}{n1,kA=v1,n2,n3,n4, + kB=v2,kC=v3,n5,n6} +1>\tbldef{kA}{mycs}\mycs\tbldef{kA}{}\dtblEXkA\\ +2> \tbldef{EX/1}{}\dtblEXA +\end{LTXexample} + +\begin{LTXexample} +\tblfrcsv{EX}{x={1,2,3}} +1>\tbldef{x}{mycs}\mycsA, \mycsB \\ +2>\tbldefs{}\dtblEXxA, \dtblEXxB +\end{LTXexample} + + + +\cmd{\tbldefxy{i}[cspfx]} splits the value of item by space, and creates two definitions \cmd{<cspfx>x} and \cmd{<cspfx>y}. +This might be useful for passing and using tikz coordinates, for example \cmd{xy=0 5}. An error is thrown if the values +are non-numeric.\\ + +\begin{LTXexample}[width=0.5\linewidth] +\tblfrkv{EX}{coords=12 34,other} +\tbldefxy{coords}[d]\dx, \dy \\ +\tbldefxy{coords}\dtblEXcoordsx, \dtblEXcoordsy \\ +\end{LTXexample} + + + +\subsection*{Utilities} + +\cmd{\tblapply{I}{func1(<v>,x,y)|:func2}[newtable]} apply a Lua function(s).\\If \cmd{newtable} is provided, a new table is created (and made the recent table) +and the original table is preserved.\\ The \cmd{.}, \cmd{/} or \cmd{|} indexer may be used to apply a function +to a single value or group of keys. +Multiple functions can be applied sequentially, separated by \cmd{|}. + +An arbitrary global function (including additional arguments) can be used, +but if a function is prefixed with a \cmd{:}, the class method will be called. +The \cmd{stringx} and \cmd{tablex} methods +from \cmd{penlight} are used depending on the value's type. See:\\ +\url{https://lunarmodules.github.io/Penlight/} + +Arguments can be specified with round brackets, where +\cmd{<v>} and \cmd{<k>} are used as a placeholder for the values and keys. +If no arguments are passed, it is assumed that the value is the only argument. +Note that luakeys parses the args, so quotes are not needed around strings for the args. + + +\begin{LTXexample}[width=0.5\linewidth] +\tblfrcsv{ex}{{a, b, c}} +\tblapply{}{:concat(<v>,-) | :upper}[new] +1> \tblgetE{ex[1][1]}\\ +2> \tblget{new/1}\\ +\tblfrcsv{ex}{HelloWorld} +\tblapply{}{string.sub(<v>,2,-5)}[new] +3> \tblget{new/1} +\end{LTXexample} + +%\begin{luacode*} +% penlight.wrth(penlight.tablex.list2comma({'a','b','c'}),'XYZ') +%\end{luacode*} + +%\tblprt*{ex} + + + + +\cmd{\tblprt{t}} pretty-print the table in console. Using \cmd{\tblprt*{}} will terminate the LaTeX program immediately after and issue an error, which could be useful for debugging. + + + +\luadirect{luatbls._debug = true} + +\subsubsection*{An Example} +% +\begin{LTXexample}\scriptsize +\NewDocumentCommand{\Exampletbl}{m}{ + \tblfrcsv{ex}{#1}[defaults={sal=Hello}] + %\tblkvundefcheck + \tblapply{ex.auth}{:list2comma} + \tblget{sal}, \tblget{auth}! Thank you for writing such a great novel. + My favorite parts were: + \begin{description} + \tblforEN{ex.chaps}{\item[<k>] <v> } + \end{description} + It was also very cool to learn that + \tblgetE{ex.num[1]}*\tblgetE{ex.num[2]}= + \luadirect{tex.sprint(tostring(luatbls.ex.num[1]*luatbls.ex.num[2]))} +} +\Exampletbl{auth={You,Me,Dupree}, + chaps={intro=very enticing, climax=thrilling, finale=what a twist!} + num={12,13} +} +\end{LTXexample} + +\tblprt{ex} + + + + + + +\end{document} + + + + + + +%\begin{luacode*} +% function prt_pyth() +% t = pl.tbls.pyth +% if not t.a then +% pl.tex.pkgerror('must pass a= to \\pyth') +% elseif not t.b then +% t.b = (tonumber(t.c)^2 - +% tonumber(t.a)^2)^0.5 +% elseif not t.c then +% t.c = (tonumber(t.a)^2 + +% tonumber(t.b)^2)^0.5 +% end +% local t = pl.tbx.fmt(t,'.'..t.d..'f') -- format table according to d decimals +% s = 'Right-angle sides a=$a and b=$b form a hypotenuse of c=$c' +% pl.tex.prt(s:fmt(t)) +% end +%\end{luacode*} +%\NewDocumentCommand{\pyth}{m}{% +% \tblfrkv{pyth}{#1}[defaults={a=false,b=false,c=false,d=0,e=extras}] +% \luadirect{prt_pyth()}% +%} +% +%\pyth{a=3,c=5}\\ +%\pyth{a=3.2,b=4.2,d=2}\\ +%C: \tblget{c} +% +%\end{LTXexample} + +% + +% +%\begin{luacode*} +%function prttol() +% local dec = penlight.tbls.tol[4] or 1 +% penlight.wrth(dec,'??') +% penlight.tbls.tol[3] = penlight.tbls.tol[3] or 3 +% penlight.tbls.tol[4] = penlight.tbls.tol[1]*(1.0-penlight.tbls.tol[3]/100.0) + 0.0 +% penlight.tbls.tol[5] = penlight.tbls.tol[1]*(1.0+penlight.tbls.tol[3]/100.0) + 0.0 +% --penlight.tbls.tol['k'] = 'fuckboi' +% --ttt = pl.tbx.fmt(penlight.tbls.tol, '.3f') +% penlight.wrth(('$1\\$2 (\\pmpct{$3} tolerance, $4\\ndash$5\\$2)'):fmt(penlight.tbls.tol, '4=.'..dec..'f, 5=.'..dec..'f'), 'XYZ') +%end +%\end{luacode*} +%\NewDocumentCommand{\prttol}{ m }{\tblfrcsv{tol}{#1}\luadirect{prttol()}}% {50.0,kV,3,P} % 50\us (\pmpct{20} tolerance, 40=--60\us), P is optional and precision of the range (number of decimals) +% +%\prttol{50,kV,3} +% +%\begin{luacode*} +% pl.wrth(pl.filterfiles('.',true,'.*%.tex'), 'FF') +%\end{luacode*} + + + + +%\begin{luacode*} +% for t, k, v in luatbls._iter_tbls_vals('my|*,:') do +% --for t, k, v in luatbls._iter_tbls_vals('my/1') do +% penlight.wrth({t,k,v}) +% end +%\end{luacode*} + + diff --git a/Master/texmf-dist/doc/luatex/penlightplus/README.md b/Master/texmf-dist/doc/luatex/penlightplus/README.md index cc80374347d..04db3bf9914 100644 --- a/Master/texmf-dist/doc/luatex/penlightplus/README.md +++ b/Master/texmf-dist/doc/luatex/penlightplus/README.md @@ -5,7 +5,7 @@ Additions to the Penlight Lua Libraries. # License -Copyright (C) 2021-2023 Kale Ewasiuk +Copyright (C) 2021-2025 Kale Ewasiuk Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Master/texmf-dist/doc/luatex/penlightplus/penlightplus.pdf b/Master/texmf-dist/doc/luatex/penlightplus/penlightplus.pdf Binary files differindex bb9b8027ff4..4a5d6eece3d 100644 --- a/Master/texmf-dist/doc/luatex/penlightplus/penlightplus.pdf +++ b/Master/texmf-dist/doc/luatex/penlightplus/penlightplus.pdf diff --git a/Master/texmf-dist/doc/luatex/penlightplus/penlightplus.tex b/Master/texmf-dist/doc/luatex/penlightplus/penlightplus.tex index bc719dcd9c7..2b32dce4d85 100644 --- a/Master/texmf-dist/doc/luatex/penlightplus/penlightplus.tex +++ b/Master/texmf-dist/doc/luatex/penlightplus/penlightplus.tex @@ -1,6 +1,6 @@ % Kale Ewasiuk (kalekje@gmail.com) -% 2024-09-30 -% Copyright (C) 2021-2024 Kale Ewasiuk +% 2025-01-01 +% Copyright (C) 2021-2025 Kale Ewasiuk % % Permission is hereby granted, free of charge, to any person obtaining a copy % of this software and associated documentation files (the "Software"), to deal @@ -66,7 +66,9 @@ \section*{Package Options and Set-Up} -This package first loads the \cmd{[import]penlight} package---see the documentation here \url{https://lunarmodules.github.io/Penlight/index.html}.\\ +This package first loads the LaTeX \cmd{penlight[import]} package +(\url{https://ctan.org/pkg/penlight?lang=en}). +Documentation for the Lua package can be found here: \url{https://lunarmodules.github.io/Penlight/index.html}.\\ The \texttt{pl} option may be passed to this package to create an alias for \cmd{penlight}.\\ The following global Lua variables are defined: @@ -78,13 +80,14 @@ The following global Lua variables are defined: \subsubsection*{globals option} -If the package option \cmd{globals} is used, many additional globals are set for easier scripting. +Since this package uses the penlight \cmd{import} option, +all \cmd{stringx} functions are injected into the \cmd{string} meta-table and you can use them like so: \cmd{'first name':upfirst()}. +But if the package option \cmd{globals} is used, many additional globals are set for easier scripting. \cmd{pl.hasval}, \cmd{pl.COMP}, \cmd{pl.utils.kpairs}, \cmd{pl.utils.npairs} become globals. \cmd{pl.tablex} is aliased as \cmd{pl.tbx and tbx} (which also includes all native Lua table functions), and -\cmd{pl.array2d} is aliased as \cmd{pl.a2d and a2d}. Since this package uses the penlight \cmd{import} option, -all \cmd{stringx} functions are injected into the \cmd{string} meta-table and you can use them like so: \cmd{'first name':upfirst()}. +\cmd{pl.array2d} is aliased as \cmd{pl.a2d and a2d}. -If you want global \cmd{pl.tex} functions and variables, call \cmd{pl.make_tex_global()}.\\ +%If you want global \cmd{pl.tex} functions and variables, call \cmd{pl.make_tex_global()}.\\ \subsection*{texlua usage} @@ -115,6 +118,8 @@ Some functionality is added to penlight and Lua. \llcmd{pl.hasval(x)} Python-like boolean testing\\ \llcmd{COMP'xyz'()} Python-like comprehensions:\\\url{https://lunarmodules.github.io/Penlight/libraries/pl.comprehension.html}\\ +\llcmd{_Gdot(s)} Return a global (may contain dots) from string + \cmd{clone_function(f)} returns a cloned function\\ \cmd{operator.strgt(a,b)} compares strings a greater than b (useful for sorting)\\ \cmd{operator.strlt(a,b)} compares strings a less than b (useful for sorting)\\ @@ -131,9 +136,15 @@ Some functionality is added to penlight and Lua. \subsection*{string additions} +\begin{luacode*} + pl.wrth(('a = 1, b =2 '):split2('=',',',false)) +\end{luacode*} + \llcmd{string.}\cmd{upfirst(s)} uppercase first letter\\ \llcmd{string.}\cmd{delspace(s)} delete all spaces\\ \llcmd{string.}\cmd{trimfl(s)}remove first and last chars\\ +\llcmd{string.}\cmd{splitstrip(s, sp, st)} split by sp (default comma) followed by strip (default whitespace)\\ +\llcmd{string.}\cmd{split2(s, sep1, sep2, st)} split a string twice (creates a 2d array), first by sep1 (default comma), then by sep2 (default =), with option to strip (default true)\\ \llcmd{string.}\cmd{appif(s, append, bool, alternate)}\\ \llcmd{string.}\cmd{gfirst(s, t)}return first matched patter from an array of patterns t\\ %\llcmd{string.}\cmd{gnum(s)} extract a number from a string\\ @@ -148,27 +159,48 @@ Some functionality is added to penlight and Lua. a few improvements. \cmd{t} can be an array (reference items like \cmd{\$1} in the string), and \cmd{fmt} can be a table of formats (keys correspond to those in \cmd{t}), or a string that is processed by luakeys.\\ -\llcmd{string.}\cmd{parsekv(s, opts)} parse a string using \cmd{penlight.luakeys}. A string or table can be used for opts. +\llcmd{string.}\cmd{parsekv(s, opts)} parse a string using a \cmd{luakeys} instance (\cmd{penlight.luakeys}). A kv-string or table can be used for opts.\\ +\llcmd{string.}\cmd{hasnoalpha(s)} string has no letters\\ +\llcmd{string.}\cmd{hasnonum(s)} string has no numbers\\ +\llcmd{string.}\cmd{isvarlike(s)} string is 'variable-like', starts with a letter or underscore and then is alphanumeric or has underscores after \\ +\begin{luacode*} + pl.wrth(('_'):isvarlike(), 'llll') + pl.wrth(('1_1k'):isvarlike(), ',,') + pl.wrth(('kale_1'):isvarlike(), '') + pl.wrth(('kale_1'):isvarlike(), '') +\end{luacode*} \subsection*{tablex additions} \llcmd{tablex.}\cmd{fmt(t, f)} format a table with table or key-value string f\\ +\llcmd{tablex.}\cmd{list2comma(t)} Use oxford comma type listing, e.g. A, B, and C\\ \llcmd{tablex.}\cmd{strinds(t)} convert integer indexes to string indices (1 -> '1')\\ \llcmd{tablex.}\cmd{filterstr(t,e,case)} keep only values in table t that contain expression e, case insensitive by default.\\ \llcmd{tablex.}\cmd{mapslice(f,t,i1,i2)} map a function to elements between i1 and i2\\ \llcmd{tablex.}\cmd{listcontains(t,v)} checks if a value is in a array-style list \\ +\llcmd{tablex.}\cmd{kkeys(t)} returns keys that are non-numeric (like kpairs) \\ + +\subsection*{List additions} +\llcmd{List:}\cmd{inject(l2, pos)} injects a list (l2) into a list at position. Set pos=0 to inject at end. +\begin{luacode*} + l = pl.List{1,2,3,4,5} + pl.wrth(l:inject({'a','b','c'},0), 'INJECTED') +\end{luacode*} \subsubsection*{seq additions} -A syntax to produce sequences or a 'train' of numbers is provided. This may be useful for including pages from a pdf, or selecting rows of a table with a concise syntax. -\cmd{seq.train(trn, len)} produces a pl.List according to the arguments (like choo-choo train)\\ -\cmd{seq.itrain(trn, len)} produces an iterator according to the arguments. +A syntax to produce sequences or a 'train' of numbers is provided. This may be useful for including pages from a pdf, or selecting rows of a table with a concise syntax.\\ +\llcmd{seq.}\cmd{train(trn, len)} produces a pl.List according to the arguments\\ +\llcmd{seq.}\cmd{itrain(trn, len)} produces an iterator according to the arguments.\\ +\llcmd{seq.}\cmd{tbltrain(tbl, trn)} produces an iterator over a table An example syntax for \cmd{trn} is \cmd{'i1, i2, r1:r2', etc.} where \cmd{i1} and \cmd{i2} are individual indexes/elements, separated by \cmd{,} and \cmd{r1:r2} is a range (inclusive of end-point) denoted with a \cmd{:}. The range format follows python's numpy indexing, and a 'stride' can be given by including a second colon like \cmd{::2 -> is 1,3,5,...}, or \cmd{2::3 -> 2,5,8,...}. Negative numbers can be used to index relative to the length of the table, eg, \cmd{-1 -> len}, but if length is not given, negative indexing cannot be used and a number after the first colon must be provided. -A missing left-number on the colon assumes \cmd{1}, and missing right number assumes \cmd{len}. A missing 'stride' (number after the optional second colon) assumes a value of 1. +A missing left-number on the colon assumes \cmd{1}, and missing right number assumes \cmd{len}. A missing 'stride' (number after the optional second colon) assumes a value of 1.\\ +Variable-like strings can be given in place of numbers, which are assumed to be keys for a table instead.\\ +For \cmd{tbltrain} a \cmd{*} can be passed to iterate over all keys. The default colon and comma separators for ranges and elements can be set with \cmd{seq.train_range_sep} and \cmd{seq.train_element_sep}, respectively. \begin{LTXexample}[width=0.5\linewidth] @@ -178,6 +210,11 @@ The default colon and comma separators for ranges and elements can be set with \ 5) do tex.print(i..',') end + local t = {'n1','n2',a='A',b='B',c='C'} + for k, v in + pl.seq.tbltrain(t, '*,c,1') do + tex.print(tostring(k)..'='..tostring(v)..'; ') + end \end{luacode*} \end{LTXexample} @@ -187,6 +224,7 @@ The default colon and comma separators for ranges and elements can be set with \ \llcmd{add_bkt}\cmd{_cnt(n), }\cmd{close_bkt_cnt(n), reset_bkt_cnt} functions to keep track of adding curly brackets as strings. \cmd{add} will return \cmd{n} (default 1) \{'s and increment a counter. \cmd{close} will return \cmd{n} \}'s (default will close all brackets) and decrement.\\ \llcmd{_NumBkts} internal integer for tracking the number of brackets\\ \llcmd{opencmd(cs)} prints \cmd{\cs}\{ and adds to the bracket counters.\\ +\cmd{openenv(env,opts)} prints a \cmd{\begin{env}[opts]}, and stores the enironment in a list so it can be later closed with \cmd{closeenv{num}} \\ \llcmd{xNoValue,}\cmd{xTrue,xFalse}: \cmd{xparse} equivalents for commands\\ \\ @@ -207,6 +245,7 @@ The default colon and comma separators for ranges and elements can be set with \ \llcmd{deccmd}\cmd{(cs, dft, overwrite)} declare a command. If \cmd{dft} (default) is \cmd{nil}, \cmd{cs} is set to a package warning saying \cmd{'cs' was declared and used in document, but never set}. If \cmd{overwrite} is true, it will overwrite an existing command (using \cmd{defcmd}), otherwise, it will throw error like \cmd{newcmd}.\\ +\\ \llcmd{get_ref_info(l)}accesses the \cmd{\r@label} and returns a table\\ @@ -268,7 +307,8 @@ For example, we can control the expansion of args 2 and 3 with arg 1: \subsection*{Lua boolean expressions} -\cmd{\ifluax{<Lua expr>}{<do if true>}[<do if false>]} and\\ \cmd{\ifluax{<Lua expr>}{<do if true>}[<do if false>]} for truthy (uses \cmd{penlight.hasval}) +\cmd{\ifluax{<Lua expr>}{<do if true>}[<do if false>]} and\\ +\cmd{\ifluaxv{<Lua expr>}{<do if true>}[<do if false>]} for truthy (uses \cmd{penlight.hasval}). The argument is expanded. \begin{LTXexample}[width=0.3\linewidth] \ifluax{3^3 == 27}{3*3*3 is 27}[WRONG]\\ @@ -276,12 +316,16 @@ For example, we can control the expansion of args 2 and 3 with arg 1: \ifluax{not true}{tRuE}[fAlSe]\\ \ifluax{''}{TRUE}[FALSE]\\ \ifluaxv{''}{true}[false]\\ +\def\XXX{8} +\ifluax{\XXX == 8}{Yes}[No] \end{LTXexample} \subsection*{Case-switch for Conditionals} \cmd{\caseswitch{case}{kev-val choices}} The starred version will throw an error if the case is not found. -Use \_\_ as a placeholder for a case that isn't matched. +Use \_\_ as a placeholder for a case that isn't matched. The case is fully expanded and interpreted as a lua string. + +%TODO consider a case switch wth placeholder expressions? that would be cool. \_1 == 8 for example. \begin{LTXexample}[width=0.3\linewidth] \def\caseswitchexample{\caseswitch{\mycase}{dog=DOG, cat=CAT, __=INVALID}} @@ -291,170 +335,13 @@ Use \_\_ as a placeholder for a case that isn't matched. %\caseswitch*{\mycase}{dog=DOG, cat=CAT, __=INVALID} -\subsection*{Creating and using Lua tables in LaTeX - tbl interace} - -\cmd{penlightplus} provides a Lua-table interface. Tables are stored in the -\cmd{penlight.tbls} table. -You can access a table item within lua by using: -\cmd{penlight.tbl'i'}. - -%%% - -\cmd{\tblnew{t}} declares a new table with name \cmd{t}\\ -\cmd{\tblchg{t}} changes the 'recent' table\\ -\\ -\cmd{\tblfrkv{t}{key-val string}[luakeys opts]} new table from key-vals using \cmd{luakeys} \\ -\cmd{\tblfrkvN{t}{key-val string}[luakeys opts]} does not expand key-val string \cmd{luakeys} \\ -\cmd{\tblfrkvCD{t}{key-val string}[luakeys opts]} define tbl from key-val, -check if any were not defined as defaults (see below), and then push all to definitions\\ -\\ -\cmd{\tblkvundefcheck} will throw an error if you use define a table from key-values -and use a key that was not specified in the luakeys parse options via \cmd{opts.defaults} or \cmd{opts.defs}.\\ -\\ - \cmd{\tblfrcsv{t}{csv}} a shorthand \cmd{\tblfrkv{t}{csv}[naked_as_value=true,opts]}, a good way to convert a comma-separated list to an array\\ - \cmd{\tblfrcsvN{t}{csv}} same as above, but the csv is not expanded.\\ -\\ -\cmd{\tblset{i}{v}} sets a value of the table/index \cmd{i} to \cmd{v}\\ -\cmd{\tblsetN{i}{v}} same as above, but the value is not expanded.\\ -\\ -\cmd{\tblget{i}} gets the value and \cmd{tex.sprint()}s it\\ -\\ -\cmd{\tbladd{i}{v}} add a new value to a table using index method\\ -\cmd{\tbladdN{i}{v}} above, but don't expand the value argument\\ -\\ -\cmd{\tblcon{t}{csv}} concatenate an array-style csv\\ -\cmd{\tblconN{t}{csv}}\\ -\\ -\cmd{\tblapp{t}{v}} append a value (integer-wise) to a table\\ -\cmd{\tblappN{t}{v}}\\ -\\ -\cmd{\tbldef{i}{d}} pushes the value to macro \cmd{d}\\ -\cmd{\tbldefall{t}{d}} define all item in table \cmd{t} (use recent if blank) with format \cmd{d<key>} where d is your prefix. If d is blank, keys will be defined as \cmd{\dtbl<t><k>} -\cmd{\tblgdef{i}{d}} pushes the defined value to a global\\ -\cmd{\tbldefxy{i}{d}} splits the value of item by spaces creates two definitions \cmd{\dx} and \cmd{\dy}. Useful for pasing tikz coordinates like \cmd{xy=0 5}\\ -For definiting tables, if \cmd{d} is blank, commands are defined as \cmd{dtbl<t><k>}\\ -\\ -\cmd{\iftbl{i}{tr}[fa]} runs code \cmd{ta} if the item is true else \cmd{fr}\\ -\cmd{\iftblv{i}{tr}[fa]} runs code \cmd{ta} if the item is truthy (using \cmd{pl.hasval}) else \cmd{fr}\\ - -\cmd{\tblprt{t}} print the table in console - -There are 3 ways to use the index (placeholder \cmd{{i}} above, note that this argument is fully expanded). -\cmd{t.key} where \cmd{t} is the table name and \cmd{key} is a string key, -\cmd{t/int} where \cmd{int} is an integer index (ie. uses \cmd{t[int]}, note that negative indexes are allowered where -1 is the last element), -or simply use \cmd{ind} without the table name, where the assumed table is the last one that was created or changed to, (passing a number will used as an integer index). -\enlargethispage{2em} -\begin{LTXexample}[width=0.3\linewidth] -\tblfrkv{my}{a,b,c,first=john,last=smith}% - [defaults={x=0,1=one,n=false,y=yes}] -\tblget{my.a}\\ -\tblset{a}{tRuE!!} -\tblget{a}\\ -\tblget{my.x}\\ -\tblget{.x}\\ -\tbladd{my.newkey}{val}\tblget{newkey}\\ -\tbladd{nk}{VAL}\tblget{nk}\\ -\tblif{n}{tr}[fa]\\ -\tblifv{n}{TR}[FA]\\ -\tblif{my.y}{Tr}[Fa]\\ -\tblifv{y}{tR}[fA]\\ -%% \kvtblundefcheck % would throw error -\tbldef{my.first}{mydef} \mydef\\ -\tbldef{first}{}\dtblmyfirst\\ -{\tbldef{last}{mydef} \mydef} \mydef\\ -{\tblgdef{last}{mydef}} \mydef\\ - -\tbldefall{}{}\dtblmyfirst\\ -\tbldefall{my}{DEF}\DEFfirst - -\tblset{my.a}{12 36} -\tbldefxy{my.a}{coord} (\coordx,\coordy) -\tbldefxy{my.a}{} (\dtblmyax,\dtblmyay) -\tbldefxy{a}{} (\dtblmyax,\dtblmyay) - -\tblfrcsv{me}{a,b,"c,see",d,e} -\tblget{me/1},\tblget{2}\\ -\tblget{3}\\ -\tblset{me/4}{D}\tblget{me/4}\tblget{/4}\\ -\tblset{5}{E}\tblget{5}\\ -\tblget{-2},\tblget{me/-1}\\ -\tblget{/-3}\\ -%% \tblget{k} % would throw error - -\tblfrkvCD{M}{a=A,b=B,d=D}[defaults={a,b,c,d}] -\dtblMa \dtblMb \dtblMc \dtblMd - -\end{LTXexample} - - -%\tblfrcsv{me}{ -%Hello=world, -% -%Bonjour=terre, -%} -%\tblget{Hello} -%\tblget{Bonjour} - - - - -\subsubsection*{A practical tbl example} - -\begin{LTXexample} -\begin{luacode*} - function prt_pyth() - t = pl.tbls.pyth - if not t.a then - pl.tex.pkgerror('must pass a= to \\pyth') - elseif not t.b then - t.b = (tonumber(t.c)^2 - - tonumber(t.a)^2)^0.5 - elseif not t.c then - t.c = (tonumber(t.a)^2 + - tonumber(t.b)^2)^0.5 - end - local t = pl.tbx.fmt(t,'.'..t.d..'f') -- format table according to d decimals - s = 'Right-angle sides a=$a and b=$b form a hypotenuse of c=$c' - pl.tex.prt(s:fmt(t)) - end -\end{luacode*} -\NewDocumentCommand{\pyth}{m}{% - \tblfrkv{pyth}{#1}[defaults={a=false,b=false,c=false,d=0,e=extras}] - \luadirect{prt_pyth()}% -} - -\pyth{a=3,c=5}\\ -\pyth{a=3.2,b=4.2,d=2}\\ -C: \tblget{c} - -\end{LTXexample} - - - -\subsection*{Splitting strings} -Splitting text (or a cmd) into oxford comma format via: -\cmd{\splittocomma[expansion level]{text}{text to split on}}: +\subsection*{Create, modify, and use Lua tables from within LaTeX} +This portion of the package has been moved to a another package called +\cmd{luatbls} \\(\url{https://ctan.org/pkg/luatbls}) -\begin{LTXexample}[width=0.3\linewidth] --\splittocomma{ j doe }{\and}-\\ --\splittocomma{ j doe \and s else }{\and}-\\ --\splittocomma{ j doe \and s else \and a per }{\and}-\\ --\splittocomma{ j doe \and s else \and a per \and f guy}{\and}- -\def\authors{j doe \and s else \and a per \and f guy} -\splittocomma[o]{\authors}{\and} -\end{LTXexample} -The expansion level is up to two characters, \cmd{n|o|t|f}, to control the expansion of each argument. -You can do a similar string split but to \cmd{\item} instead of commas with \cmd{\splittoitems} -\begin{LTXexample} -\begin{itemize} - \splittoitems{kale\and john}{\and} - \splittoitems{kale -john -someone else}{-} - \splittoitems{1,2,3,4}{,} -\end{itemize} -\end{LTXexample} @@ -517,57 +404,43 @@ This might be useful if you're updating \cmd{__PDFmetadata__} by some other mean -% -%\pyth{} % erro -%\begin{luacode*} -% pl.tex.wrth(('a,b,c=3'):parsekv('!naked_as_value'), 'dumy') -%\end{luacode*} +%\writePDFmetadatakv{datxe=2024-02-01} % would throw error, invalid key +%\writePDFmetadatakv[E]{keywords=\thekeywords} % -% \tblfrkv{tbl_def}{kale=cool,paul=gay,craig=fun} -% \tblfrkv{tbl}{kale,paul=gay} %[naked_as_value=true] -% -% \tblget{tbl}{kale}% -% \tblget{tbl}{paul}% -% \tblget{tbl}{craig}% -% -% \tblupd{tbl_def}{tbl}% -% -% \tblfrkvII{tbl}{kale=cool,paul=gay,craig=fun}{kale=weak,paul=sad} -% \tblget{tbl}{craig}% -% \tblget{tbl}{paul}% -% \tblget{tbl}{kale}% +%\luadirect{texio.write_nl(\luastringE{keywords=\thekeywords})} + + + + +%%%%% SAND BOX % -% \NewDocumentCommand{\THINg}{ O{} m}{% -% \tblfrkvII{setti}{color=red,size=small}{#1} % make settings and update based on [arg=] -% {\color{\tblget{setti}{color}}\tblget{setti}{size} #2} -% } +%\xtokcycleenvironment\luastringAenv +% {\addcytoks{##1}} +% {\processtoks{##1}} +% {\addcytoks[1]{##1}} +% {\addcytoks{##1}} +% {} +% {\cytoks\expandafter{\expandafter\luastringO\expandafter{\the\cytoks}}} % -% \THINg[color=blue,size=tiny]{Kale} +%\def\luastringA#1{\luastringAenv#1\endluastringAenv} +%\def\zzz{Hi Mom} +%\NewDocumentCommand{\testcommand}{m}{% +% \luastringA{#1} % this works as requested :) +%% \luadirect{texio.write_nl(\luastringA{#1}..' <<<')} +% } % +%\luastringA{Hmmm. \zzz.} +%\testcommand{Hmmm. \zzz.} + % -%\begin{luacode*} -%function prttol() -% local dec = penlight.tbls.tol[4] or 1 -% penlight.wrth(dec,'??') -% penlight.tbls.tol[3] = penlight.tbls.tol[3] or 3 -% penlight.tbls.tol[4] = penlight.tbls.tol[1]*(1.0-penlight.tbls.tol[3]/100.0) + 0.0 -% penlight.tbls.tol[5] = penlight.tbls.tol[1]*(1.0+penlight.tbls.tol[3]/100.0) + 0.0 -% --penlight.tbls.tol['k'] = 'fuckboi' -% --ttt = pl.tbx.fmt(penlight.tbls.tol, '.3f') -% penlight.wrth(('$1\\$2 (\\pmpct{$3} tolerance, $4\\ndash$5\\$2)'):fmt(penlight.tbls.tol, '4=.'..dec..'f, 5=.'..dec..'f'), 'XYZ') -%end -%\end{luacode*} -%\NewDocumentCommand{\prttol}{ m }{\tblfrcsv{tol}{#1}\luadirect{prttol()}}% {50.0,kV,3,P} % 50\us (\pmpct{20} tolerance, 40=--60\us), P is optional and precision of the range (number of decimals) -% -%\prttol{50,kV,3} -% -%\begin{luacode*} -% pl.wrth(pl.filterfiles('.',true,'.*%.tex'), 'FF') -%\end{luacode*} + +%\pyth{} % erro + + \end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/man/man1/bib2gls.1 b/Master/texmf-dist/doc/man/man1/bib2gls.1 index 9779f171e4b..6197f8450ae 100644 --- a/Master/texmf-dist/doc/man/man1/bib2gls.1 +++ b/Master/texmf-dist/doc/man/man1/bib2gls.1 @@ -1,5 +1,5 @@ .\" -*- mode: troff; coding: utf-8 -*- -.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.45) +.\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== @@ -52,10 +52,13 @@ . \} .\} .rr rF +.\" +.\" Required to disable full justification in groff 1.23.0. +.if n .ds AD l .\" ======================================================================== .\" .IX Title "BIB2GLS 1" -.TH BIB2GLS 1 2024-01-30 "perl v5.38.2" bib2gls +.TH BIB2GLS 1 2024-03-18 "perl v5.40.0" bib2gls .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -65,7 +68,7 @@ \&\fBbib2gls\fR [\fIoption\fR]+ \fIauxfile\fR .SH DESCRIPTION .IX Header "DESCRIPTION" -\&\fBbib2gls\fR is designed to work with the \fBglossaries-extra\fR LaTeX +\&\fBbib2gls\fR is designed to work with the \fBglossaries\-extra\fR LaTeX package. (The \fBrecord\fR package option is required.) The application performs two functions in one: (1) selects entries from .bib files according to information found in the \fIauxfile\fR (similar to @@ -93,7 +96,7 @@ location into a normal record (default). .IX Item "--custom-packages list" Instruct the TeX parser library to attempt to parse the packages listed in \fIlist\fR. This is intended for simple custom -packages that don't contain complex code. +packages that don\*(Aqt contain complex code. .IP "\fB\-\-date\-in\-header\fR (or \fB\-D\fR)" 4 .IX Item "--date-in-header (or -D)" The header comment at the start of the \fI.glstex\fR file will include @@ -101,15 +104,15 @@ the file modification date. .IP "\fB\-\-debug\fR [\fIn\fR]" 4 .IX Item "--debug [n]" Switch on the debug mode at the given setting \fIn\fR, which -should be a non-negative integer. If \fIn\fR is \fB0\fR then the +should be a non\-negative integer. If \fIn\fR is \fB0\fR then the debug mode is switched off. If omitted, \fIn\fR is set to 1, which corresponds to \fB\-\-debug\-mode\fR \fBio\fR. Any positive number will -enable all of \fBbib2gls\fR's debugging messages. The amount of +enable all of \fBbib2gls\fR\*(Aqs debugging messages. The amount of TeX Parser Library debugging messages depends on bitwise operation of \fIn\fR. .IP "\fB\-\-debug\-mode\fR \fIsetting\fR" 4 .IX Item "--debug-mode setting" May be used instead of \fB\-\-debug\fR where the level number is -difficult to remember. The \fIsetting\fR may be a comma-separated list +difficult to remember. The \fIsetting\fR may be a comma\-separated list of any of the keywords: .RS 4 .IP \fBall\fR 4 @@ -128,15 +131,15 @@ TeX Parser declarations. .IP \fBexpansion\fR 4 .IX Item "expansion" TeX Parser expansions (may result in a large transcript file). -.IP \fBexpansion-list\fR 4 +.IP \fBexpansion\-list\fR 4 .IX Item "expansion-list" TeX Parser stack expansions (may result in a large transcript file). -.IP \fBexpansion-once\fR 4 +.IP \fBexpansion\-once\fR 4 .IX Item "expansion-once" -TeX Parser one-level expansions. -.IP \fBexpansion-once-list\fR 4 +TeX Parser one\-level expansions. +.IP \fBexpansion\-once\-list\fR 4 .IX Item "expansion-once-list" -TeX Parser one-level list expansions. +TeX Parser one\-level list expansions. .IP \fBio\fR 4 .IX Item "io" TeX Parser I/O operations (open, close and fetch token). @@ -146,22 +149,22 @@ TeX Parser stack popping. .IP \fBprocess\fR 4 .IX Item "process" TeX Parser macro process (may result in a large transcript file). -.IP \fBprocess-generic-cs\fR 4 +.IP \fBprocess\-generic\-cs\fR 4 .IX Item "process-generic-cs" TeX Parser generic command process. -.IP \fBprocess-stack\fR 4 +.IP \fBprocess\-stack\fR 4 .IX Item "process-stack" TeX Parser stack process (may result in a large transcript file). -.IP \fBprocess-stack-list\fR 4 +.IP \fBprocess\-stack\-list\fR 4 .IX Item "process-stack-list" TeX Parser detailed stack process (may result in a large transcript file). .IP \fBread\fR 4 .IX Item "read" TeX Parser codepoint read from file (likely to result in a large transcript file). -.IP \fBsty-data\fR 4 +.IP \fBsty\-data\fR 4 .IX Item "sty-data" -TeX Parser data (typically relates to internal objects that don't +TeX Parser data (typically relates to internal objects that don\*(Aqt have an analogous TeX macro). This includes data gathered from the aux file. .RE @@ -175,14 +178,14 @@ Set the default character encoding for input and output files. If omitted, the JVM default encoding is assumed. .IP "\fB\-\-dir\fR \fIdirectory\fR (or \fB\-d\fR <directory>)" 4 .IX Item "--dir directory (or -d <directory>)" -Files are relative to \fIdirectory\fR. (This doesn't change the current +Files are relative to \fIdirectory\fR. (This doesn\*(Aqt change the current working directory.) .IP \fB\-\-expand\-fields\fR 4 .IX Item "--expand-fields" -Don't write \f(CW\*(C`\eglsnoexpandfields\*(C'\fR to the \fI.glstex\fR file. +Don\*(Aqt write \f(CW\*(C`\eglsnoexpandfields\*(C'\fR to the \fI.glstex\fR file. .IP "\fB\-\-force\-cross\-resource\-refs\fR or \fB\-x\fR" 4 .IX Item "--force-cross-resource-refs or -x" -Force cross-resource referencing mode on. +Force cross\-resource referencing mode on. .IP "\fB\-\-group\fR or \fB\-g\fR" 4 .IX Item "--group or -g" Add \fBgroup\fR field to entries. @@ -191,10 +194,10 @@ Add \fBgroup\fR field to entries. Display help message and exit. .IP "\fB\-\-ignore\-packages\fR \fIlist\fR (or \fB\-k\fR \fIlist\fR)" 4 .IX Item "--ignore-packages list (or -k list)" -Don't parse the log file for the packages listed in \fIlist\fR. Note +Don\*(Aqt parse the log file for the packages listed in \fIlist\fR. Note that \fB\-\-packages\fR overrides this option, so if the same package is listed in both \fB\-\-ignore\-packages\fR and \fB\-\-packages\fR then the -interpreter will check if it's supported. This option has a +interpreter will check if it\*(Aqs supported. This option has a cumulative action. Only known packages may be included in \&\fIlist\fR. .IP \fB\-\-interpret\fR 4 @@ -224,25 +227,25 @@ Rule for merging locations created with the \fBrecord=nameref\fR package option one of: \fBhcounter\fR, \fBhref\fR, \fBtitle\fR or \fBlocation\fR. .IP \fB\-\-merge\-wrglossary\-records\fR 4 .IX Item "--merge-wrglossary-records" -Merge an entry's \fBwrglossary\fR records for the same page locations. +Merge an entry\*(Aqs \fBwrglossary\fR records for the same page locations. (For use with the \fBindexcounter\fR package option.) .IP \fB\-\-mfirstuc\-math\-protection\fR 4 .IX Item "--mfirstuc-math-protection" -Switch on the auto-insertion of an empty group for math-shift (\f(CW\*(C`$\*(C'\fR). +Switch on the auto\-insertion of an empty group for math\-shift (\f(CW\*(C`$\*(C'\fR). .Sp -If \fImfirstuc\fR v2.08+, \fIglossaries\fR v4.50+ and \fIglossaries-extra\fR v1.49+ +If \fImfirstuc\fR v2.08+, \fIglossaries\fR v4.50+ and \fIglossaries\-extra\fR v1.49+ are detected, the default will be \fB\-\-no\-mfirstuc\-math\-protection\fR as there should no longer be any need for this protection. .IP "\fB\-\-mfirstuc\-protection\fR \fIfields\fR|\fBall\fR (or \fB\-u\fR \fIfields\fR|\fBall\fR)" 4 .IX Item "--mfirstuc-protection fields|all (or -u fields|all)" Insert an empty group if fields start with certain problematic -commands to protect against case-changing commands like \f(CW\*(C`\eGls\*(C'\fR. +commands to protect against case\-changing commands like \f(CW\*(C`\eGls\*(C'\fR. .Sp The default is to do this for all fields. To do this for only a -subset of fields, set \fIfields\fR to a comma-separated list of fields +subset of fields, set \fIfields\fR to a comma\-separated list of fields (e.g. \fBname,short,long\fR). The keyword \fBall\fR indicates all fields. .Sp -If \fImfirstuc\fR v2.08+, \fIglossaries\fR v4.50+ and \fIglossaries-extra\fR v1.49+ +If \fImfirstuc\fR v2.08+, \fIglossaries\fR v4.50+ and \fIglossaries\-extra\fR v1.49+ are detected, the default will be \fB\-\-no\-mfirstuc\-protection\fR as there should no longer be any need for this protection. .IP "\fB\-\-nested\-link\-check\fR \fIlist\fR|\fBnone\fR" 4 @@ -254,13 +257,13 @@ firstplural, short, shortplural, long, longplural, symbol). If \fBnone\fR, disable check. .IP \fB\-\-no\-break\-space\fR 4 .IX Item "--no-break-space" -Interpret \f(CW\*(C`~\*(C'\fR (tilde) and \f(CW\*(C`\enobreakspace\*(C'\fR as a non-breaking space (default). +Interpret \f(CW\*(C`~\*(C'\fR (tilde) and \f(CW\*(C`\enobreakspace\*(C'\fR as a non\-breaking space (default). .IP \fB\-\-no\-cite\-as\-record\fR 4 .IX Item "--no-cite-as-record" -Don't check for instances of \f(CW\*(C`\ecitation\*(C'\fR in the \fI.aux\fR file (default). +Don\*(Aqt check for instances of \f(CW\*(C`\ecitation\*(C'\fR in the \fI.aux\fR file (default). .IP \fB\-\-no\-collapse\-same\-location\-range\fR 4 .IX Item "--no-collapse-same-location-range" -Don't collapse an explicit range that has a duplicate start and end +Don\*(Aqt collapse an explicit range that has a duplicate start and end location into a normal record. .IP \fB\-\-no\-date\-in\-header\fR 4 .IX Item "--no-date-in-header" @@ -274,58 +277,58 @@ Switch off debug mode. (Equivalent to \fB\-\-debug\fR \fB0\fR) Write \f(CW\*(C`\eglsnoexpandfields\*(C'\fR to the \fI.glstex\fR file (default). .IP \fB\-\-no\-force\-cross\-resource\-refs\fR 4 .IX Item "--no-force-cross-resource-refs" -Don't force cross-resource referencing mode on (default). +Don\*(Aqt force cross\-resource referencing mode on (default). .IP \fB\-\-no\-group\fR 4 .IX Item "--no-group" -Don't add \fBgroup\fR field to entries (default). +Don\*(Aqt add \fBgroup\fR field to entries (default). .IP \fB\-\-no\-interpret\fR 4 .IX Item "--no-interpret" -Don't try interpreting (La)TeX commands. The TeX Parser Library will +Don\*(Aqt try interpreting (La)TeX commands. The TeX Parser Library will still be used to parse the \fIaux\fR and \fIbib\fR files. .IP \fB\-\-no\-merge\-wrglossary\-records\fR 4 .IX Item "--no-merge-wrglossary-records" -Don't merge an entry's \fBwrglossary\fR records. +Don\*(Aqt merge an entry\*(Aqs \fBwrglossary\fR records. .IP \fB\-\-no\-mfirstuc\-math\-protection\fR 4 .IX Item "--no-mfirstuc-math-protection" -Switch off the auto-insertion of an empty group for math-shift (\f(CW\*(C`$\*(C'\fR). +Switch off the auto\-insertion of an empty group for math\-shift (\f(CW\*(C`$\*(C'\fR). .IP \fB\-\-no\-mfirstuc\-protection\fR 4 .IX Item "--no-mfirstuc-protection" -Switch off the auto-insertion of an empty group for all fields. +Switch off the auto\-insertion of an empty group for all fields. .IP \fB\-\-no\-nested\-link\-check\fR 4 .IX Item "--no-nested-link-check" -Don't check for potentially problematic nested link text. +Don\*(Aqt check for potentially problematic nested link text. (Equivalent to \fB\-\-nested\-link\-check\fR \fBnone\fR) .IP \fB\-\-no\-obey\-aux\-catcode\fR 4 .IX Item "--no-obey-aux-catcode" Ignore category code changing commands encountered in the aux file. .IP \fB\-\-no\-provide\-glossaries\fR 4 .IX Item "--no-provide-glossaries" -Don't write \f(CW\*(C`\eprovideignoredglossary*\*(C'\fR to the \fI.glstex\fR file to +Don\*(Aqt write \f(CW\*(C`\eprovideignoredglossary*\*(C'\fR to the \fI.glstex\fR file to provide unknown glossaries except in documented situations -(\fBmaster\fR, \fBsecondary\fR and \fBtrigger-type\fR resource options). +(\fBmaster\fR, \fBsecondary\fR and \fBtrigger\-type\fR resource options). This setting is the default. .IP \fB\-\-no\-record\-count\fR 4 .IX Item "--no-record-count" -Don't add record count field to entries (default). +Don\*(Aqt add record count field to entries (default). This option automatically implements \fB\-\-no\-record\-count\-unit\fR. .IP \fB\-\-no\-record\-count\-unit\fR 4 .IX Item "--no-record-count-unit" -Don't add unit record count field to entries (default). +Don\*(Aqt add unit record count field to entries (default). .IP \fB\-\-no\-replace\-quotes\fR 4 .IX Item "--no-replace-quotes" -Don't replace quote characters (default). +Don\*(Aqt replace quote characters (default). .IP \fB\-\-no\-retain\-formats\fR 4 .IX Item "--no-retain-formats" Normal location merging rules apply (default). .IP \fB\-\-no\-support\-unicode\-script\fR 4 .IX Item "--no-support-unicode-script" Text superscript (\f(CW\*(C`\etextsuperscript\*(C'\fR) or subscripts (\f(CW\*(C`\etextsubscript\*(C'\fR) -won't be converted to Unicode superscript/subscript characters. +won\*(Aqt be converted to Unicode superscript/subscript characters. For example, \f(CW\*(C`\etextsuperscript{2}\*(C'\fR will be converted to \f(CW\*(C`<sup>2</sup>\*(C'\fR and the markup will be stripped leaving just the character 2. .IP \fB\-\-no\-trim\-fields\fR 4 .IX Item "--no-trim-fields" -Don't trim leading and trailing spaces from fields (default). +Don\*(Aqt trim leading and trailing spaces from fields (default). This option cancels \fB\-\-trim\-only\-fields\fR and \fB\-\-trim\-fields\fR. .IP "\fB\-\-no\-verbose\fR (or \fB\-\-noverbose\fR)" 4 .IX Item "--no-verbose (or --noverbose)" @@ -333,12 +336,12 @@ Switch off verbose mode. (Some messages will still be written to STDOUT.) .IP \fB\-\-no\-warn\-non\-bib\-fields\fR 4 .IX Item "--no-warn-non-bib-fields" -Don't warn if internal non-bib fields are found in the \fI.bib\fR file. +Don\*(Aqt warn if internal non\-bib fields are found in the \fI.bib\fR file. The use of these internal fields can cause unexpected results, so only use this option if you have taken appropriate precautions. .IP \fB\-\-no\-warn\-unknown\-entry\-types\fR 4 .IX Item "--no-warn-unknown-entry-types" -Don't warn if any unknown entry types are found in the \fI.bib\fR file. +Don\*(Aqt warn if any unknown entry types are found in the \fI.bib\fR file. .IP \fB\-\-obey\-aux\-catcode\fR 4 .IX Item "--obey-aux-catcode" Obey known category code changing commands encountered in the aux @@ -346,7 +349,7 @@ file. .IP "\fB\-\-packages\fR \fIlist\fR (or \fB\-p\fR \fIlist\fR)" 4 .IX Item "--packages list (or -p list)" Instruct the TeX parser library to pretend the packages listed -in \fIlist\fR have been used by the document. Note that there's only a +in \fIlist\fR have been used by the document. Note that there\*(Aqs only a limited number of packages supported by the TeX parser library. This option has a cumulative action so \fB\-\-packages wasysym,pifont\fR is the same as \fB\-\-packages wasysym \-\-packages pifont\fR. @@ -370,7 +373,7 @@ Sets the rule used by \fB\-\-record\-count\fR and \fB\-\-record\-count\-unit\fR. This option automatically implements \fB\-\-record\-count\fR. .Sp The \fIrule\fR may be: \f(CW\*(C`all\*(C'\fR or \f(CW\*(C`a\*(C'\fR (count all records), -\&\f(CW\*(C`non\-ignored\*(C'\fR or \f(CW\*(C`n\*(C'\fR (count all non-ignored records), +\&\f(CW\*(C`non\-ignored\*(C'\fR or \f(CW\*(C`n\*(C'\fR (count all non\-ignored records), \&\f(CW\*(C`f/\*(C'\fR\fIregex\fR\f(CW\*(C`/\*(C'\fR (only count records where the format matches the regular expression \fIregex\fR), \&\f(CW\*(C`c/\*(C'\fR\fIregex\fR\f(CW\*(C`/\*(C'\fR (only count records where the counter name @@ -441,7 +444,7 @@ Switch on verbose mode. Display version information and exit. .IP \fB\-\-warn\-non\-bib\-fields\fR 4 .IX Item "--warn-non-bib-fields" -Warn if internal non-bib fields are found in the \fI.bib\fR file. +Warn if internal non\-bib fields are found in the \fI.bib\fR file. .IP \fB\-\-warn\-unknown\-entry\-types\fR 4 .IX Item "--warn-unknown-entry-types" Warn if any unknown entry types are found in the \fI.bib\fR file. @@ -462,7 +465,7 @@ The bib2gls manual: \& texdoc bib2gls .Ve .PP -The glossaries-extra manual: +The glossaries\-extra manual: .PP .Vb 1 \& texdoc glossaries\-extra diff --git a/Master/texmf-dist/doc/man/man1/bib2gls.man1.pdf b/Master/texmf-dist/doc/man/man1/bib2gls.man1.pdf Binary files differindex 56bb8863e2e..8e8a61561d8 100644 --- a/Master/texmf-dist/doc/man/man1/bib2gls.man1.pdf +++ b/Master/texmf-dist/doc/man/man1/bib2gls.man1.pdf diff --git a/Master/texmf-dist/doc/man/man1/convertgls2bib.1 b/Master/texmf-dist/doc/man/man1/convertgls2bib.1 index ad08941213a..a41f908f964 100644 --- a/Master/texmf-dist/doc/man/man1/convertgls2bib.1 +++ b/Master/texmf-dist/doc/man/man1/convertgls2bib.1 @@ -58,7 +58,7 @@ .\" ======================================================================== .\" .IX Title "CONVERTGLS2BIB 1" -.TH CONVERTGLS2BIB 1 2024-12-08 "perl v5.40.0" convertgls2bib +.TH CONVERTGLS2BIB 1 2024-12-21 "perl v5.40.0" convertgls2bib .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff --git a/Master/texmf-dist/doc/man/man1/convertgls2bib.man1.pdf b/Master/texmf-dist/doc/man/man1/convertgls2bib.man1.pdf Binary files differindex 4e64e4e82ed..71ecf709573 100644 --- a/Master/texmf-dist/doc/man/man1/convertgls2bib.man1.pdf +++ b/Master/texmf-dist/doc/man/man1/convertgls2bib.man1.pdf diff --git a/Master/texmf-dist/doc/man/man1/datatool2bib.1 b/Master/texmf-dist/doc/man/man1/datatool2bib.1 index d2d4d2072a9..581da68d845 100644 --- a/Master/texmf-dist/doc/man/man1/datatool2bib.1 +++ b/Master/texmf-dist/doc/man/man1/datatool2bib.1 @@ -58,7 +58,7 @@ .\" ======================================================================== .\" .IX Title "DATATOOL2BIB 1" -.TH DATATOOL2BIB 1 2024-12-11 "perl v5.40.0" datatool2bib +.TH DATATOOL2BIB 1 2024-12-21 "perl v5.40.0" datatool2bib .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff --git a/Master/texmf-dist/doc/man/man1/datatool2bib.man1.pdf b/Master/texmf-dist/doc/man/man1/datatool2bib.man1.pdf Binary files differindex a9874060114..edca06f41df 100644 --- a/Master/texmf-dist/doc/man/man1/datatool2bib.man1.pdf +++ b/Master/texmf-dist/doc/man/man1/datatool2bib.man1.pdf diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG b/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG index 1dc42d20430..ec9283d51f2 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG +++ b/Master/texmf-dist/doc/metapost/mcf2graph/CHANGELOG @@ -1,6 +1,32 @@ ******************************************************************************* - Changelog of mcf2graph software package by Akira Yamaji 2024-12-01 + Changelog of mcf2graph software package by Akira Yamaji 2025-01-05 ******************************************************************************* +[ver. 5.16 / 2025-01-05] + -change syntax of methyl group + /_ => ? + */_ => ?w + /*_ => ?z + //_ => ?d + -change syntax of just after jump atom + @n,\ => @n,! + @n,\\ => @n,!d + @n,*\ => @n,!w + @n,\* => @n,!z + @n,*\* => @n,!~wv + -change syntax of scaled fused ring + ?n[m] => #m'?n + -change option parameter name + sw_abbreviate => sw_omit + -change ratio parameter + ratio_char_bond => ratio_char_atom + -delete command \,\\,*\,\*,*\*,_ + -delete option for sw_numbering + numbering_start,numbering_end + -delete Calc option for sw_output + -update mcf2graph.mp + -update main_lib.mcf + -update MCF manual,example,template + [ver. 5.15 / 2024-12-01] -change syntax of separator inside @(..) @(a,b) => @(a'b) diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/README b/Master/texmf-dist/doc/metapost/mcf2graph/README index 101daf83058..d018c425118 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/README +++ b/Master/texmf-dist/doc/metapost/mcf2graph/README @@ -1,7 +1,7 @@ ******************************************************************************** mcf2graph : Convert Molecular Coding Format to graphics with MetaPost Author : Akira Yamaji - version : 5.15 2024-12-01 + version : 5.16 2025-01-05 E-mail : mcf2graph@gmail.com Located at : http://www.ctan.org/pkg/mcf2graph ******************************************************************************** @@ -50,7 +50,7 @@ (9) >mpost -s ahlength=7 filename.mp => output report file 5. License - mcf2graph ver 5.15 Copyright (c) 2013-2024 Akira Yamaji + mcf2graph ver 5.16 Copyright (c) 2013-2025 Akira Yamaji Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mp b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mp index 463eeaa59bf..8cecf8c96d6 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mp +++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mp @@ -1,19 +1,19 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% MCF metapost souce file example by Akira Yamaji 2024.12.01 -% Public domain. +% MCF metapost souce file example by Akira Yamaji 2025.01.05 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -if unknown mcftograph: input mcf2graph; fi %%% it must be version 5.15 -message "* mcf_template 2024.12.01"; +if unknown mcftograph: input mcf2graph; fi %%% it must be version 5.16 +message "* mcf_template 2025.01.05"; message ""; %------------------------------------------------------------------------------ +%%%%sw_output:=Fig+Report; fsize:=(30mm,20mm); max_blength:=4mm; -%%%%sw_output:=Fig+Info; -%%%%sw_output:=Fig+Calc; +%%%%sw_numbering:=Atom+Bond; +%%%%sw_frame:=Atom; %%%%ext(defaultscale:=.3; label.rt(EN,(0,0));) %------------------------------------------------------------------------------ -%%%%ext(defaultfont:=mpfont; defaultscale:=.3; -%%%%label.rt(EN&" / "&mw&" / "&fdr(7)(MW_n-scantokens(MW)),(0,0));) +ext(defaultfont:=mpfont; defaultscale:=.3; +label.rt(EN&" / "&mw&" / "&fdr(7)(MW_n-scantokens(MW)),(0,0));) %------------------------------------------------------------------------------ %%%%loadm("CAT=biological","MW<200","a:MW"); %%%%loadm("CAT=biological","MW<50.0","a:EN"); diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf Binary files differindex c06c85627a6..fbff700d50c 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf +++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.pdf diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.tex b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.tex index 9eda6a3192a..fca1224028e 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.tex +++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_example.tex @@ -1,7 +1,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Example of MCF Typeset with LuaLaTeX(luamplib) by A.Yamaji 2024.12.01 +% Example of MCF Typeset with LuaLaTeX(luamplib) by A.Yamaji 2025.01.05 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% ** mcf2graph.mf must be version 5.15 +% ** mcf2graph.mf must be version 5.16 % ** use mcf_library.mcf % ** typeset by LuaLaTeX(luamplib) %------------------------------------------------------------------------- @@ -12,10 +12,10 @@ \mplibnumbersystem{double} \mpliblegacybehavior{disabled} %------------------------------------------------------------------------- -\pagestyle{empty} -\topmargin=-24mm +\pagestyle{headings} +\topmargin=-22mm \oddsidemargin=-12mm -\textwidth=192mm +\textwidth=190mm \textheight=280mm \parindent=0mm \newcount\headeroff @@ -29,7 +29,7 @@ Author : Akira Yamaji \quad Date : \today \\ Located at : http://www.ctan.org/pkg/mcf2graph \end{center} -{\small *use 'mcf2grapf.mp' ver 5.14 \quad +{\small *use 'mcf2grapf.mp' ver 5.16 \quad *typeset with LuaLaTeX \quad *use molecular library file 'main\_lib.mcf' \\ ** FM(fm):molecular formula (calculated) \quad @@ -52,7 +52,6 @@ %------------------------------------------------------------------------- \begin{mplibcode} input mcf2graph; - sw_output:=Fig+Calc; fsize:=(35mm,24mm); max_blength:=4mm; loadm("EXA=1"); @@ -61,7 +60,7 @@ \loop% \advance\fig@num\@ne\relax% \advance\col@num\@ne\relax% -\ifnum\fig@num=276 \CONT@false% +\ifnum\fig@num=516 \CONT@false% \else% \sbox{\fig@box}{% \begin{mplibcode} @@ -94,7 +93,7 @@ \begin{mplibcode} loadm("EXA=2"); fig_num:=0; - fsize:=(50mm,34mm); + fsize:=(50mm,33mm); fmargin:=(4mm,4mm); max_blength:=4mm; row_h:=3.8mm; @@ -114,7 +113,7 @@ \fig@num=0% \loop% \advance\fig@num\@ne\relax% -\ifnum\fig@num=25 \CONT@false% +\ifnum\fig@num=41 \CONT@false% \else% \begin{mplibcode}% beginfigm @@ -148,7 +147,7 @@ VerbatimTeX("\gdef\EN{"&EN&"}"); fi endfigm -\end{mplibcode}\vspace{-1.2pt}\\ +\end{mplibcode}\vspace{-1.5pt}\\ %------------------------------------------------------------------------ \fi% \message{[\the\fig@num:\EN]}% diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf Binary files differindex e57381594c6..e9b2ef24e32 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf +++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.pdf diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex index e5a2b9997d8..73237243a4f 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex +++ b/Master/texmf-dist/doc/metapost/mcf2graph/mcf_manual.tex @@ -1,7 +1,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Molecular Coding Format manual by Akira Yamaji 2024.12.01 +% Molecular Coding Format manual by Akira Yamaji 2025.01.05 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% ** mcf2graph.mf must be version 5.15 +% ** mcf2graph.mf must be version 5.16 % ** use main_lib.mcf % ** typeset by LuaLaTeX(luamplib) %---------------------------------------------------------------------------- @@ -37,7 +37,7 @@ \author{Akira Yamaji} \date{\today} \maketitle -\begin{center} mcf2graph version 5.14 \end{center} +\begin{center} mcf2graph version 5.16 \end{center} \begin{center} Located at http://www.ctan.org/pkg/mcf2graph \end{center} \begin{center} Suggestion or request mail to: mcf2graph@gmail.com \end{center} %----------------------------------------------------------------------------- @@ -45,7 +45,6 @@ \vspace{5mm}% \quad \begin{mplibcode} -sw_output:=Fig+Calc; max_blength:=10mm; ratio_thickness_bond:=0.015; ratio_atom_bond:=0.36; @@ -56,7 +55,7 @@ sw_frame:=0; % Glycine beginfigm \(<30,NH2,!2,COOH) endfigm % L-Alanine -beginfigm \(<30,NH2,!~wb,/_,!,COOH) endfigm +beginfigm \(<30,NH2,!~wb,?,!,COOH) endfigm % L-Valine beginfigm \(<30,NH2,!~wb,/?!,!,COOH) endfigm % L-Leucine @@ -82,14 +81,14 @@ beginfigm \(<30,NH2,!~wb,/!Ph,!,COOH) endfigm % L-Tyrosine beginfigm \(<30,NH2,!~wb,/!Ph'(-3:/OH),!,COOH) endfigm % L-Triptophan -beginfigm \(<30,NH2,!~wb,!,COOH,@2,\,!,<24,|,?5,-4=Ph,2=dr,5=dl,4:NH) endfigm +beginfigm \(<30,NH2,!~wb,!,COOH,@2,!2,<24,|,?5,-4=Ph,2=dr,5=dl,4:NH) endfigm \end{mplibcode} \\ \begin{mplibcode} % L-Prorine beginfigm \(<18,?5,3:NH,4:*/COOH) endfigm % L-Glutamine -beginfigm \(<30,NH2,!~wb,!,COOH,@2,\`1,!`1,!,//O,!,NH2) endfigm +beginfigm \(<30,NH2,!~wb,!,COOH,@2,!2,!,?O,!,NH2) endfigm % L-Asparagine beginfigm \(<30,NH2,!~wb,/!'?O'!NH2,!,COOH) endfigm % L-Aspartic acid @@ -102,14 +101,14 @@ beginfigm \(<30,NH2,!~wb,/!2'COOH,!,COOH) endfigm % L-Lysine beginfigm \(<30,NH2,!~wb,/!4'NH2,!,COOH) endfigm % L-Arginine -beginfigm \(<30,NH2,!~wb,!,COOH,@2,\`1,!`1,!2,NH,!,//NH,!,NH2) endfigm +beginfigm \(<30,NH2,!~wb,!,COOH,@2,!2`1,!2,NH,!,//NH,!,NH2) endfigm % L-Hystidine -beginfigm \(<30,NH2,!~wb,!,COOH,@2,\,!,|,?5,1'3=dl,3:N,5:NH) endfigm +beginfigm \(<30,NH2,!~wb,!,COOH,@2,!2,|,?5,1'3=dl,3:N,5:NH) endfigm \end{mplibcode} \\ \begin{mplibcode} % L-DOPA -beginfigm \(<30,NH2,!~wb,!,COOH,@2,\,!,Ph,-3'-4:/OH) endfigm +beginfigm \(<30,NH2,!~wb,!,COOH,@2,!2,Ph,-3'-4:/OH) endfigm % Ornithine beginfigm \(<30,NH2,!~wb,/!3'NH2,!,COOH) endfigm % Citrulline @@ -120,7 +119,7 @@ beginfigm \(<30,NH2,!4,COOH) endfigm \\ \begin{mplibcode} % amino Levulinic acid -beginfigm \(<30,NH2,!2,//O,!3,COOH) endfigm +beginfigm \(<30,NH2,!2,?O,!3,COOH) endfigm % 4-amino benzoic acid beginfigm \(<30,Ph,1:/NH2,4:/COOH) endfigm % L-Carboxyl glutamic acid @@ -160,13 +159,12 @@ $n (0<=n<360): absolute angle sw_frame:=Outside; blength:=0; beginfigm - #(60mm,17mm); + #(60mm,18mm); sw_numbering:=Bond; - numbering_end:=6; ratio_chain_ring:=1; %---------------------------------------------------------------------- \(<15,-30,45,-45,60,$300,$0, - {1^$15'2^$345'3^$30'4^$345}:/_~dt,5'6=vf + {1^$15'2^$345'3^$30'4^$345}:?~dt,5'6=vf ) ++( defaultscale:=0.5; @@ -183,7 +181,7 @@ endfigm \index{"!}% \begin{verbatim} ! : take value 60 or -60 depend on - current angle and environment + current angle !6 : !,!,!,!,!,! <-30,!6 @@ -191,13 +189,12 @@ endfigm %----------------------------------------- \begin{mplibcode} beginfigm - #(60mm,17mm); + #(60mm,20mm); sw_numbering:=Bond; - numbering_end:=6; ratio_chain_ring:=1; %---------------------------------------------------------------------- \(<-30,!6, - {1^-120'2^60'3^-60'4^60'5^-60'6^60}:/_~dt + {1^-120'2^60'3^-60'4^60'5^-60'6^60}:?~dt ) ++( defaultscale:=0.5; @@ -212,13 +209,11 @@ beginfigm endfigm \end{mplibcode} %----------------------------------------------------------------------------- -\subsubsection{Jump to atom} -\index{"@}% \begin{verbatim} -@n : Jump to An -** An: atom number(-999<=n<=4095) +take value 0 just after jump to atom +@n,! : !=0 -<-30,!6,@3,0,!,@5,-30 +<-30,!5,@3,! \end{verbatim} %----------------------------------------- \begin{mplibcode} @@ -227,74 +222,78 @@ beginfigm sw_trimming:=1; sw_numbering:=Atom; ratio_chain_ring:=1; - \(<-30,!6,@3,0,!,@5,-30) + \(<-30,!6,@3,!) endfigm \end{mplibcode} %----------------------------------------------------------------------------- -\subsubsection{Branch bond} -\index{\textbackslash}% +\subsubsection{Jump to atom} +\index{"@}% \begin{verbatim} -\ : 0 +@n : Jump to An +** An: atom number(-999<=n<=4095) -<-30,!6,@3,\,! +<-30,!6,@3,0,@5,-30 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,16mm) #@(2mm,2mm) - sw_numbering:=Atom; sw_trimming:=1; + sw_numbering:=Atom; ratio_chain_ring:=1; - \(<-30,!6,@3,\,!) + \(<-30,!6,@3,0,@5,-30) endfigm \end{mplibcode} %----------------------------------------------------------------------------- -\subsubsection{Branch modified bond} -\index{*\textbackslash}% -\index{\textbackslash*}% -\index{\textbackslash\textbackslash}% -\index{*\textbackslash*}% +\subsubsection{Branch bond} +\index{\textasciicircum}% ^ +\index{\textasciitilde}% ~ +\index{`}% +\index{"!w}% +\index{"!z}% +\index{"!d}% \begin{verbatim} -\ : 0 -*\ : 0~wf -\* : 0~zf -\\ : 0~dm -*\* : 0~wv +@n,! : @n,! +@n,!w : @n,!~wf +@n,!z : @n,!~zf +@n,!d : @n,!~db +@n,!dr : @n,!~dr -<30,!8, -@2,\,!,@4,*\,!,@6,\*,!,@8,\\,!,@10,*\*,! +<30,!10, +@2,!,!,@4,!w,!,@6,!z,!,@8,!d,!,@10,!dr,! \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm - #(60mm,16mm) #@(2mm,2mm) + #(80mm,20mm) #@(2mm,2mm) sw_numbering:=Atom; - sw_trimming:=1; - numbering_end:=10; ratio_chain_ring:=1; - \(<30,!10,@2,\,!,@4,*\,!,@6,\*,!,@8,\\,!,@10,*\*,!) + \(<30,!10,@2,!,!,@4,!w,!,@6,!z,!,@8,!d,!,@10,!dr,!) endfigm \end{mplibcode} %----------------------------------------------------------------------------- -\index{\textasciicircum}% ^ -\index{\textasciitilde}% ~ -\index{`}% +\subsubsection{Rotate current angle} +\index{\textgreater}% \begin{verbatim} -<30,!6, -\~dr,!, : 0~dr,! -\`1.5,-90 : 0`1.5,-90 -\^15,-60 : 0^15,-60 +<angle : rotate current angle + +0,0,<90,0,<-90,0,<$315,0,<$90,0,<$0,0 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm - #(60mm,20mm) #@(2mm,2mm) + #(62mm,22mm) #@(2mm,3mm) sw_trimming:=1; - sw_numbering:=Atom; - numbering_end:=7; + sw_numbering:=Bond; ratio_chain_ring:=1; - %------------------------- - \(<30,!6,@2,\~dr,!,@4,\`1.5,-90,@6,15,-60) + defaultscale:=0.5; + labeloffset:=2bp; + \(#1,0,0,<90,0,<-90,0,<$315,0,<$90,0,<$0,0,{1:7}=vf, + {3,4^180}:?~dt) + ++( + drawarrow B8/*.7{B8left}..{B3left}B3/*.7; label.urt("90",B8/*.7); + drawarrow B9/*.7{B9right}..{B4right}B4/*.7; label.urt("-90",B9/*.7); + ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- @@ -303,7 +302,7 @@ endfigm \begin{verbatim} &n : Connect to An -<-30,!6,@3,\,!3,&6~bd,@9,&4~bz +<-30,!6,@3,!,!3,&6~bd,@9,&4~bz \end{verbatim} %----------------------------------------- \begin{mplibcode} @@ -313,15 +312,14 @@ beginfigm sw_numbering:=Atom; ratio_chain_ring:=1; %---------------------------------- - \(<-30,!6,@3,\,!3,&6~bd,@9,&4~bz) + \(<-30,!6,@3,!,!3,&6~bd,@9,&4~bz) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Ring} -\index{?}% +\index{?n}% \begin{verbatim} ?n : n membered ring(3<=n<=20) -?6 : <-120,60,60,60,60,60,&1 ?6 \end{verbatim} %----------------------------------------- @@ -335,29 +333,19 @@ beginfigm endfigm \end{mplibcode} %----------------------------------------------------------------------------- -\subsubsection{Rotate current angle} -\index{\textgreater}% +\subsubsection{Ring length} \begin{verbatim} -<angle : rotate current angle +?n`length : change ring length -0,0,<90,0,<-90,0,<$315,0,<$90,0,<$0,0 +?6,@4,!,?6`1.2 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm - #(60mm,20mm) #@(2mm,3mm) + #(60mm,20mm) #@(2mm,2mm) sw_trimming:=1; sw_numbering:=Bond; - ratio_chain_ring:=1; - numbering_end:=7; - defaultscale:=0.5; - labeloffset:=2bp; - \(#1,0,0,<90,0,<-90,0,<$315,0,<$90,0,<$0,0,{1:7}=vf, - {3,4^180}:/_~dt) - ++( - drawarrow B8/*.7{B8left}..{B3left}B3/*.7; label.urt("90",B8/*.7); - drawarrow B9/*.7{B9right}..{B4right}B4/*.7; label.urt("-90",B9/*.7); - ) + \(?6,@4,!,?6`1.2) endfigm \end{mplibcode} %----------------------------------------------------------------------------- @@ -503,7 +491,7 @@ dm_ : duble over line <30,!8,!,60,90`18, {2~si_'4~wf_'6~wb_'8~zf_'10~zb_' - 12~bd_'14~dl_'16~dr_'18~dm_}:/_`2 + 12~bd_'14~dl_'16~dr_'18~dm_}:?`2 \end{verbatim} %----------------------------------------- \begin{mplibcode} @@ -513,7 +501,7 @@ beginfigm ratio_chain_ring:=1; \(<30,!18,$90`1.5,90`15.5, {2~si_'4~wf_'6~wb_'8~zf_'10~zb_' - 12~bd_'14~dl_'16~dr_'18~dm_}:/_`2) + 12~bd_'14~dl_'16~dr_'18~dm_}:?`2) endfigm \end{mplibcode} %----------------------------------------------------------------------------- @@ -563,7 +551,7 @@ endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsection{Change bond length} -\subsubsection{Chain length} +\subsubsection{Chanege chain length} \index{`}% \begin{verbatim} (!,!n)`length : change length of !,!n @@ -579,6 +567,7 @@ beginfigm endfigm \end{mplibcode} %----------------------------------------------------------------------------- +\subsubsection{Change multiple bond length} \index{\#}% \index{\#\#}% \begin{verbatim} @@ -596,22 +585,6 @@ beginfigm endfigm \end{mplibcode} %----------------------------------------------------------------------------- -\subsubsection{Ring length} -\begin{verbatim} -?n`length : change ring length - -?6,@4,\,?6`1.2 -\end{verbatim} -%----------------------------------------- -\begin{mplibcode} -beginfigm - #(60mm,16mm) #@(2mm,2mm) - sw_trimming:=1; - sw_numbering:=Bond; - \(?6,@4,\,?6`1.2) -endfigm -\end{mplibcode} -%----------------------------------------------------------------------------- \subsection{Change atom} \subsubsection{Insert atom} \begin{verbatim} @@ -628,7 +601,7 @@ beginfigm endfigm \end{mplibcode} %----------------------------------------------------------------------------- -\subsubsection{Addressed atom} +\subsubsection{Change atom} \index{:}% \begin{verbatim} 2:O : change A2 C to O @@ -651,16 +624,16 @@ endfigm \begin{verbatim} | : divide brock -?6,@4,\,|,?6,2:O +?6,@4,!,|,?6,2:O \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(70mm,14mm) #@(3mm,1.5mm) - @(0,.5)\(?6,@4,\,|,?6,2:O) + @(0,.5)\(?6,@4,!,|,?6,2:O) sw_numbering:=Atom; ##(1,.88) - @(1,.5)\(?6,@4,\,|,?6,2:O) + @(1,.5)\(?6,@4,!,|,?6,2:O) endfigm \end{mplibcode} %----------------------------------------------------------------------------- @@ -669,57 +642,60 @@ endfigm \begin{verbatim} || : reset brock adress -?6,@4,\,|,?6,||,2:N +?6,@4,!,|,?6,||,2:N \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(70mm,14mm) #@(3mm,1.5mm) - @(0,.5)\(?6,@4,\,|,?6,||,2:N) + @(0,.5)\(?6,@4,!,|,?6,||,2:N) sw_numbering:=Atom; ##(1,.88) - @(1,.5)\(?6,@4,\,|,?6,||,2:N) + @(1,.5)\(?6,@4,!,|,?6,||,2:N) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Absolute address} \index{\$}% $ \begin{verbatim} -$2:N : change A$2 C to N **1<=n<=3095 +$2:n : change A$2 C to N +**1<=n<=3095 -?6,@4,\,|,?6,$2:N +?6,@4,!,|,?6,$2:N \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(70mm,14mm) #@(3mm,1.5mm) - @(0,.5)\(?6,@4,\,?6,$2:N) + @(0,.5)\(?6,@4,!,?6,$2:N) sw_numbering:=Atom; ##(1,.88) - @(1,.5)\(?6,@4,\,?6,$2:N) + @(1,.5)\(?6,@4,!,?6,$2:N) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Relative address} \begin{verbatim} --2:N : change A(-2) C to N **-999<=n<=-1 +-2:n : change A(-2) C to N +**-999<=n<=-1 -?6,@4,\,?6,-2:N +?6,@4,!,?6,-2:N \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(70mm,14mm) #@(3mm,1.5mm) - @(0,.5)\(?6,@4,\,?6,-2:N) + @(0,.5)\(?6,@4,!,?6,-2:N) sw_numbering:=Atom; ##(1,.88) - @(1,.5)\(?6,@4,\,?6,-2:N) + @(1,.5)\(?6,@4,!,?6,-2:N) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Charged atom} \begin{verbatim} -p_ : positive / n_ : negative +p_ : positive +n_ : negative <-30,!2,N,??,p_,!2,S,n_^180, !6,7:N,7:??,9:S,7:n_,9:n_^180 @@ -759,7 +735,7 @@ endfigm ** fused ring size depend on attached bond length -?6,@4,\,?6`1.2,5=?6,11=?6 +?6,@4,!,?6`1.2,5=?6,11=?6 \end{verbatim} %----------------------------------------- \begin{mplibcode} @@ -767,17 +743,17 @@ beginfigm #(60mm,25mm) #@(2mm,2mm) sw_trimming:=1; sw_numbering:=Bond; - \(?6,@4,\,?6`1.2,5=?6,11=?6, + \(?6,@4,!,?6`1.2,5=?6,11=?6, {14:23}=bd_r,5'11=dt) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \begin{verbatim} -?6,3=?6[13] : fuse ?6[13] at B3 -?6[13]: 6 membered ring scaled 13/10 -** ?m[n] (5<=m<=6,11<=n<=15) +?6,3=#1.3'?6 : fuse #1.3'?6 at B3 +#1.3'?6 : 6 membered ring scaled 1.3 +** #n'?m (5<=m<=6,1.1<=n<=1.5) -?6,3=?6[13] +?6,3=#1.3'?6 \end{verbatim} %----------------------------------------- \begin{mplibcode} @@ -786,7 +762,7 @@ beginfigm margin_top_bottom:=1.5mm; sw_numbering:=Bond; sw_trimming:=1; - \(<30,?6,3=?6[13],3=dt,{7:11}=bd_r) + \(<30,?6,3=#1.3'?6,3=dt,{7:11}=bd_r) endfigm \end{mplibcode} %----------------------------------------------------------------------------- @@ -887,7 +863,6 @@ endfigm beginfigm #(40mm,15mm); sw_numbering:=Atom; - numbering_end:=7; ratio_chain_ring:=1; \(<30,!6,@4,?5) endfigm @@ -895,35 +870,59 @@ endfigm %----------------------------------------------------------------------------- \subsection{Group} \subsubsection{Insert group} +\index{?}% +\index{methyl}% +\index{??}% +\index{dimethyl}% +\index{?O}% +\index{carbonyl}% +\index{?S}% +\index{thioketone}% +\index{?NH}% +\index{imino}% +\index{ethyl}% +\index{propyl}% +\index{isopropyl}% +\index{tert-butyl}% \index{/}% \index{Ph}% +\index{phenyl}% \begin{verbatim} -/ : group start single bond - -/_ : methyl +? : methyl +?? : dimethyl +?O : carbonyl +?S : thioketone +?NH : imino /! : ethyl /!2 : propyl /?! : isopropyl /??! : tert-butyl /Ph : phenyl -<30,!,/_,!2,/!,!2,/!2,!4,/?!, - !4,/??!,!2,/Ph^-60,! +<30,!,?,!2,??,!2,?O,!2,?S,!2, + ?NH,!2,/!,!2,/!2,!2`1,/?!,!2`1, + /??!,!2`1,/#.6'Ph,! \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm - #(75mm,18mm); - \(<30,!,/_,!2,/!,!2,/!,!4,/?!,!4,/??!,!2,/#.8'Ph^-60,!) + #(70mm,20mm); + \(<30,!,?,!2,??,!2,?O,!2,?S,!2,?NH,!2,/!,!2,/!2,!2`1, + /?!,!2`1,/??!,!2`1,/#.6'Ph,!) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Insert modified group} \index{//}% +\index{double}% \index{*/}% +\index{wedge forward}% \index{/*}% +\index{hashed wedge}% \index{*/*}% +\index{wave}% \index{**}% +\index{direct}% \begin{verbatim} // : double (double middle) */ : wedge forward @@ -931,13 +930,13 @@ endfigm */* : wave ** : direct -<30,!,//O,!2,*/H,!2,/*H,!2,*/*H,!2,**?3,! +<30,!,//!,!2,*/H,!2,/*H,!2,*/*H,!2,**?3,! \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(70mm,14mm); - \(<30,!`1,//O,!2`1,*/H,!2`1,/*H,!2`1,*/*H,!2`1,**?3,!`1) + \(<30,!`1,//!,!2`1,*/H,!2`1,/*H,!2`1,*/*H,!2`1,**?3,!`1) ++(defaultscale:=0.75; label("//",A2-(0,0.45l)); label("*/",A4-(0,0.45l)); @@ -952,38 +951,48 @@ endfigm \index{\textasciitilde}% ~ \index{`}% \index{\textless}% +\index{change type}% +\index{change angle}% +\index{change length}% +\index{change environment}% \begin{verbatim} ~ : change type ^ : change angle ` : change length > : change environment -<-30,``1,!, - /_`2^30,!2,/!2>lr,!2,/!2>rl,!) +<-30,#1,!, + ?`2^30,!2,/!2>lr,!2,/!2>rl,!) \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,16mm); sw_trimming:=1; - \(<-30,#1,!2,/_`2^30,!2,/!2>lr,!2,/!2>rl,!) + \(<-30,#1,!2,?`2^30,!2,/!2>lr,!2,/!2>rl,!) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Add group} +\index{?w}% +\index{?z}% +\index{?d}% \begin{verbatim} -<30,!17,2:/_,3:/!,4:/!2,7:/iPr, - 8:/tBu,10^-15:/#.6'Ph, - 11'12'*13:*/_,15'16'*17:/*_ +?w : ?~wf +?z : ?~zf +?d : ?~dm + +<30,!17,2:?,3:/!,4:/!2,7:/?!, + 8:/??!,10^-15:/#.6'Ph, + 11'12':?w,13'14:?z,15'16:?d \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(75mm,25mm) #@(2mm,2mm) sw_numbering:=Atom; - numbering_end:=17; - \(<30,!17,2:/_,3:/!,4:/!2,7:/iPr,8:/tBu,10^-15:/#.6'Ph, - 11'12'*13:*/_,15'16'*17:/*_) + \(<30,!17,2:?,3:/!,4:/!2,7:/?!,8:/??!,10^-15:/#.6'Ph, + 11'12:?w,13'14:?z,15'16:?d) endfigm \end{mplibcode} %----------------------------------------------------------------------------- @@ -991,15 +1000,15 @@ endfigm \begin{verbatim} ~,^,` : change type,angle,length -<30,!6,{2~wf'4~zf'6^-30'8^$120}:/_ +<30,!6,{2~wf'4~zf'6^-30'8^$120}:? \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(60mm,18mm) #@(2mm,2mm) sw_trimming:=1; - sw_numbering:=Atom; numbering_end:=9; - \(<30,!8`1,{2~wf'4~zf'6^-30'8^$120}:/_) + sw_numbering:=Atom; + \(<30,!8`1,{2~wf'4~zf'6^-30'8^$120}:?) endfigm \end{mplibcode} %----------------------------------------------------------------------------- @@ -1007,7 +1016,7 @@ endfigm ^,`,> : change angle,length,environment -<-30,!7`1,3:/_`2^30,5:/!2>lr,7:/!2>rl +<-30,!7`1,3:?`2^30,5:/!2>lr,7:/!2>rl \end{verbatim} %----------------------------------------- \begin{mplibcode} @@ -1015,8 +1024,7 @@ beginfigm #(60mm,16mm); sw_trimming:=1; sw_numbering:=Atom; - numbering_end:=8; - \(<-30,!7`1,3:/_`2^30,5:/!2>lr,7:/!2>rl) + \(<-30,!7`1,3:?`2^30,5:/!2>lr,7:/!2>rl) endfigm \end{mplibcode} %----------------------------------------------------------------------------- @@ -1033,13 +1041,12 @@ endfigm ?4, {3^-90'3^-30'3^90}:/!3>hz, - {1^-60'1'1^60}:/!3>vt \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm - #(50mm,25mm); + #(60mm,35mm); sw_trimming:=1; ratio_chain_ring:=1; \(?4,{3^-90'3^-30'3^90}:/!3>hz, @@ -1070,8 +1077,8 @@ endfigm \begin{mplibcode} beginfigm %%%%% EN:Left-right_right-left - #(40mm,18mm); - sw_trimming:=0; + #(50mm,24mm); +% sw_trimming:=1; \(<-30,!6, {3^-30'3'3^30}:/!3>lr, {5^-30'5'5^30}:/!3>rl) @@ -1099,7 +1106,7 @@ endfigm %----------------------------------------- \begin{mplibcode} beginfigm - #(40mm,20mm); + #(45mm,24mm); sw_trimming:=1; \(<30,!4,2:/!6>30,4:/!4>-45) ++(defaultscale:=0.5; labeloffset:=2bp; @@ -1118,7 +1125,7 @@ endfigm %----------------------------------------- \begin{mplibcode} beginfigm - #(60mm,20mm); + #(62mm,24mm); \(<30,!6,6>90'-90'90'-90'90:/!5) ++(defaultscale:=0.5; labeloffset:=2bp; label.lft(">{90'-90'90'-90'90}",A13); @@ -1141,9 +1148,9 @@ endfigm \index{S?O}% \index{S?O?O}% \begin{verbatim} -NH : N,/H~nl N? : N,/_ -N?2 : N,/! S?O : S,//O -S?O?O : S,//O^35,//^-35 +NH : N,/H~nl N? : N,? +N?2 : N,/! S?O : S,?O +S?O?O : S,?O^35,//^-35 <-30,!2,NH,!2,N?,!2,N?2,S?O,!2,S?O?O,! \end{verbatim} @@ -1160,8 +1167,9 @@ endfigm \index{??}% \index{??"!}% \index{N?"!}% +\index{dimethylamino}% \begin{verbatim} -?? : /_^35,/_-35 /?! : isopropyl +?? : ?^35,?-35 /?! : isopropyl /??! : tert-butyl /N?! : dimethylamino <30,!11`1,2:??,4:/!,6:/?!,8:/??!,10:/N?! @@ -1169,14 +1177,16 @@ endfigm %----------------------------------------- \begin{mplibcode} beginfigm -#(60mm,10mm); +#(60mm,12mm); sw_trimming:=1; \(<30,!11`1.2,2:??,4:/!,6:/?!,8:/??!,10:/N?!) endfigm \end{mplibcode} %----------------------------------------------------------------------------- \subsubsection{Define group,parts} -\index{'}% +\index{define group}% +\index{define group with atoms}% +\index{define parts}% \index{`}% \index{``}% \begin{verbatim} @@ -1193,7 +1203,7 @@ iBuOH:=''(!?!,OH); %----------------------------------------- \begin{mplibcode} beginfigm - #(60mm,10mm); + #(60mm,14mm); sw_trimming:=1; iBuOH:=''(!?!,OH); CF3:=``("{CF3}")(C,F,F,F); @@ -1204,16 +1214,14 @@ endfigm \subsubsection{Concatenate group,parts} \index{'}% \begin{verbatim} -a'b : {a,b} or ''(a,b) -/!?!'OH : /''(!?!,OH) +a'b : ''(a,b) <30,!8,2'6:/!?!'OH -or <30,!8,{2'6}:/''(!?!,OH) \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm - #(60mm,12mm) #@(2mm,1mm) + #(60mm,14mm) #@(2mm,1mm) sw_trimming:=1; \(<30,!8,2'6:/!?!'OH) endfigm @@ -1226,14 +1234,14 @@ endfigm @$(x'y): Move l*(x,y) from origin(@1) ** l=bond length of ring -<30,?6,@3,!4,//O,!,O,n_^60,@$(6'1),H,p_^15 +<30,?6,@3,!4,?O,!,O,n_^60,@$(6'1),H,p_^15 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm - #(70mm,13mm) #@(2mm,1mm) + #(70mm,15mm) #@(2mm,1mm) sw_trimming:=1; - \(<30,?6,@3,\,!3,//O,!,O,n_^60,@$(6'1),H,p_^15) + \(<30,?6,@3,!,!3,?O,!,O,n_^60,@$(6'1),H,p_^15) ++(drawdot A1 withpen pencircle scaled 3bp; drawdot A12 withpen pencircle scaled 3bp; pickup pencircle scaled 0.1bp; @@ -1251,14 +1259,14 @@ endfigm \index{\-\-}% \begin{verbatim} 6:10 : 6,7,8,9,10 -<30,!14,{2,6:10,14}:/_~bd_r`0.5 +<30,!14,{2,6:10,14}:?~bd_r`0.5 \end{verbatim} %----------------------------------------- \begin{mplibcode} beginfigm #(75mm,12mm) |<(8mm) - sw_numbering:=Atom; numbering_end:=15; - \(<30,!14,{2'6:10'14}:/_~bd_r`0.5) + sw_numbering:=Atom; + \(<30,!14,{2'6:10'14}:?~bd_r`0.5) endfigm \end{mplibcode} %----------------------------------------------------------------------------- @@ -1286,7 +1294,7 @@ endfigm \begin{verbatim} beginfigm %---------------- - atomfont:="cmr8"; + atomfont:="phvro8g"; %---------------- \(<30,Ph,2'5:N,3:/NH2,4:/COOH) endfigm @@ -1295,7 +1303,7 @@ endfigm \begin{mplibcode} beginfigm #(50mm,18mm) |<(8mm) - atomfont:="cmr8"; + atomfont:="phvro8g"; \(<30,Ph,2'5:N,3:/NH2,4:/COOH) endfigm \end{mplibcode} @@ -1563,7 +1571,7 @@ endfigm \subsubsection{Offset thickness of bond} \index{offset\_thickness}% \begin{verbatim} -default: offset_thickness=0.2pt +default: offset_thickness=0.25pt \end{verbatim} %--------------------------------------------- %%offset_thickness @@ -1571,11 +1579,11 @@ default: offset_thickness=0.2pt beginfigm #(60mm,12mm); offset_thickness:=0.0pt; @(0.1,0.5)\(<30,Ph) - offset_thickness:=0.2pt; @(0.55,0.5)\(<30,Ph) + offset_thickness:=0.25pt; @(0.55,0.5)\(<30,Ph) offset_thickness:=0.5pt; @(1,0.5)\(<30,Ph) **(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.0pt",(0,1bp)); - label.urt("0.2pt",(0.36w,1bp)); + label.urt("0.25pt",(0.36w,1bp)); label.urt("0.5pt",(0.7w,1bp)); ) endfigm @@ -1624,15 +1632,15 @@ endfigm \subsubsection{Offset of wedge width} \index{offset\_wedge}% \begin{verbatim} -default: offset_wedge=0.4pt +default: offset_wedge=0.4pt \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm); - offset_wedge:=0.0pt; @(0.1,0.5)\(<30,?6,5:*/_) - offset_wedge:=0.4pt; @(0.55,0.5)\(<30,?6,5:*/_) %<<== default - offset_wedge:=1.0pt; @(1, 0.5)\(<30,?6,5:*/_) + offset_wedge:=0.0pt; @(0.1,0.5)\(<30,?6,5:?w) + offset_wedge:=0.4pt; @(0.55,0.5)\(<30,?6,5:?w) %<<== default + offset_wedge:=1.0pt; @(1, 0.5)\(<30,?6,5:?w) **(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.0pt",(0,1bp)); label.urt("0.4pt",(0.36w,1bp)); @@ -1646,7 +1654,7 @@ endfigm \index{\textbar\textless()}% \begin{verbatim} |<(n): abbreviated form of max_blength:=n; -default: max_blength=10mm +default: max_blength=10mm \end{verbatim} %--------------------------------------------- \begin{mplibcode} @@ -1669,14 +1677,14 @@ endfigm \subsubsection{Thickness/bond length} \index{ratio\_thickness\_bond}% \begin{verbatim} -default: ratio_thickness_bond=0.015 +default: ratio_thickness_bond=0.012 \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm); ratio_thickness_bond:=0.005; @(0.1,0.5)\(<30,Ph) - ratio_thickness_bond:=0.015; @(.55,0.5)\(<30,Ph) %<<== default + ratio_thickness_bond:=0.012; @(.55,0.5)\(<30,Ph) %<<== default ratio_thickness_bond:=0.03; @(1, 0.5)\(<30,Ph) **(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.005",(0,1bp)); @@ -1686,62 +1694,62 @@ beginfigm endfigm \end{mplibcode} %----------------------------------------------------------------------------- -\subsubsection{Char/bond thickness} -\index{ratio\_char\_bond}% +\subsubsection{Atom/bond length} +\index{ratio\_atom\_bond}% \begin{verbatim} -default: ratio_char_bond=1.5 +default: ratio_atom_bond= 0.36 \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm - #(60mm,12mm) - ratio_char_bond:=1.0; @(0, 0.5)\(<30,?6,6:O,3:NH) - ratio_char_bond:=1.5; @(.5,0.5)\(<30,?6,6:O,3:NH) %<<== default - ratio_char_bond:=2.0; @( 1,0.5)\(<30,?6,6:O,3:NH) + #(60mm,12mm); + ratio_atom_bond:=0.25; @(0.1,0.5)\(<30,?6,3:O) + ratio_atom_bond:=0.33; @(.55,0.5)\(<30,?6,3:O) %<<== default + ratio_atom_bond:=0.45; @(1, 0.5)\(<30,?6,3:O) **(defaultscale:=0.6; labeloffset:=1bp; - label.urt("1.0",(0,1bp)); - label.urt("1.5",(0.36w,1bp)); - label.urt("2.0",(0.7w,1bp)); + label.urt("0.25",(0,1bp)); + label.urt("0.33",(0.36w,1bp)); + label.urt("0.45",(0.7w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- -\subsubsection{Bond gap/bond length} -\index{ratio\_bondgap\_bond}% +\subsubsection{Char thickness/Atom width} +\index{ratio\_char\_atom}% \begin{verbatim} -default: ratio_bondgap_bond= 0.15 +default: ratio_char_atom=0.12 \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm - #(60mm,12mm); - ratio_bondgap_bond:=0.10; @(0.1,0.5)\(<30,Ph) - ratio_bondgap_bond:=0.15; @(.55,0.5)\(<30,Ph) %<<== default - ratio_bondgap_bond:=0.20; @(1 ,0.5)\(<30,Ph) + #(60mm,12mm) + ratio_char_atom:=0.1; @(0, 0.5)\(<30,?6,6:O,3:NH) + ratio_char_atom:=0.12; @(.5,0.5)\(<30,?6,6:O,3:NH) %<<== default + ratio_char_atom:=0.15; @( 1,0.5)\(<30,?6,6:O,3:NH) **(defaultscale:=0.6; labeloffset:=1bp; - label.urt("0.10",(0,1bp)); - label.urt("0.15",(0.36w,1bp)); - label.urt("0.20",(0.7w,1bp)); + label.urt("0.1", (0,1bp)); + label.urt("0.12",(0.36w,1bp)); + label.urt("0.15",(0.7w,1bp)); ) endfigm \end{mplibcode} %----------------------------------------------------------------------------- -\subsubsection{Atom/bond length} -\index{ratio\_atom\_bond}% +\subsubsection{Bond gap/bond length} +\index{ratio\_bondgap\_bond}% \begin{verbatim} -default: ratio_atom_bond= 0.36 +default: ratio_bondgap_bond= 0.15 \end{verbatim} %--------------------------------------------- \begin{mplibcode} beginfigm #(60mm,12mm); - ratio_atom_bond:=0.25; @(0.1,0.5)\(<30,?6,3:O) - ratio_atom_bond:=0.33; @(.55,0.5)\(<30,?6,3:O) %<<== default - ratio_atom_bond:=0.45; @(1, 0.5)\(<30,?6,3:O) + ratio_bondgap_bond:=0.10; @(0.1,0.5)\(<30,Ph) + ratio_bondgap_bond:=0.15; @(.55,0.5)\(<30,Ph) %<<== default + ratio_bondgap_bond:=0.20; @(1 ,0.5)\(<30,Ph) **(defaultscale:=0.6; labeloffset:=1bp; - label.urt("0.25",(0,1bp)); - label.urt("0.33",(0.36w,1bp)); - label.urt("0.45",(0.7w,1bp)); + label.urt("0.10",(0,1bp)); + label.urt("0.15",(0.36w,1bp)); + label.urt("0.20",(0.7w,1bp)); ) endfigm \end{mplibcode} @@ -1749,15 +1757,15 @@ endfigm \subsubsection{Wedge/bond length} \index{ratio\_wedge\_bond}% \begin{verbatim} -default: ratio_wedge_bond=0.12 +default: ratio_wedge_bond=0.12 \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm #(70mm,12mm); - ratio_wedge_bond:=0.1; @(0.05,.5)\(?6,4:*/_) - ratio_wedge_bond:=0.12; @(.55, .5)\(?6,4:*/_) %<<== default - ratio_wedge_bond:=0.2; @(1 , .5)\(?6,4:*/_) + ratio_wedge_bond:=0.1; @(0.05,.5)\(?6,4:?w) + ratio_wedge_bond:=0.12; @(.55, .5)\(?6,4:?w) %<<== default + ratio_wedge_bond:=0.2; @(1 , .5)\(?6,4:?w) **(defaultscale:=0.6; labeloffset:=1bp; label.urt("0.10",(0,1bp)); label.urt("0.12",(0.36w,1bp)); @@ -1777,14 +1785,14 @@ default: ratio_atomgap_atom= 0.050 beginfigm '`("<30,!2`0.5,2:O") #(70mm,12mm) - sw_frame:=sw_frame+Atom; + sw_frame:=Atom; ratio_atomgap_atom:=0.00; @(0, .5)\(scantokens(mc)) ratio_atomgap_atom:=0.050; @(.5,.5)\(scantokens(mc)) %<<== default ratio_atomgap_atom:=0.12; @(1, .5)\(scantokens(mc)) - **(defaultscale:=0.75; labeloffset:=1bp; - label.urt("0.00",(0.05w,1bp)); - label.urt("0.05",(0.45w,1bp)); - label.urt("0.12",(0.85w,1bp)); + **(defaultscale:=0.6; labeloffset:=1bp; + label.urt("0.00",(0.05w,3bp)); + label.urt("0.05",(0.45w,3bp)); + label.urt("0.12",(0.85w,3bp)); ) endfigm \end{mplibcode} @@ -1817,7 +1825,7 @@ default: ratio_hashgap_bond=0.12 %------------------------------------------------------ \begin{mplibcode} beginfigm - '`("<30,!2,2:/*_`1.5") + '`("<30,!2,2:?z`1.5") #(70mm,15mm) ratio_hashgap_bond:=0.06; @(0.08,.5)\(scantokens(mc)) ratio_hashgap_bond:=0.12; @( .55,.5)\(scantokens(mc)) %<<== default @@ -1834,53 +1842,46 @@ endfigm %----------------------------------------------------------------------------- \subsection{Drawing mode} %----------------------------------------------------------------------------- -\subsubsection{Numbering atom} +\subsubsection{Numbering atom,bond} \index{sw\_numbering}% \index{Atom}% -\index{numbering\_start}% -\index{numbering\_end}% \begin{verbatim} -sw_numbering=Atom -numbering_start:=3; -numbering_end:=8; -default: sw_numbering=0 - sw_numbering:=Atom; -\(<-30,!9) \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm - #(60mm,10mm); + #(60mm,7mm); ratio_chain_ring:=1; - numbering_start:=3; numbering_end:=8; sw_numbering:=Atom; \(<-30,!9) endfigm \end{mplibcode} %----------------------------------------------------------------------------- -\subsubsection{Numbering bond} -\index{numbering\_start}% -\index{numbering\_end}% \index{Bond}% \begin{verbatim} -sw_numbering=Bond -numbering_start:=3; -numbering_end:=8; -default: sw_numbering=0 - sw_numbering:=Bond; -\(<-30,!9) \end{verbatim} %------------------------------------------------------ \begin{mplibcode} beginfigm - #(60mm,10mm); + #(60mm,7mm); ratio_chain_ring:=1; - numbering_start:=3; numbering_end:=8; sw_numbering:=Bond; \(<-30,!9) endfigm \end{mplibcode} %----------------------------------------------------------------------------- +\begin{verbatim} +sw_numbering:=Atom+Bond; +\end{verbatim} +%------------------------------------------------------ +\begin{mplibcode} +beginfigm + #(60mm,7mm); + ratio_chain_ring:=1; + sw_numbering:=Atom+Bond; \(<-30,!9) +endfigm +\end{mplibcode} +%----------------------------------------------------------------------------- \subsubsection{Trimming mode} \index{sw\_trimming}% \begin{verbatim} @@ -1891,7 +1892,7 @@ sw_trimming:=0; ** default %------------------------------------------------------ \begin{mplibcode} beginfigm - #(60mm,20mm) ##(1,.7) + #(60mm,15mm) ##(1,.7) sw_frame:=Bothside+Mol; @(.2,.3)\(Ph) @(.8,.7)\(Ph) @@ -1905,7 +1906,7 @@ sw_trimming:=1; %------------------------------------------------------ \begin{mplibcode} beginfigm - #(60mm,20mm) ##(1,.7) + #(60mm,15mm) ##(1,.7) sw_frame:=Bothside+Mol; sw_trimming:=1; @(.2,.3)\(Ph) @@ -1931,15 +1932,15 @@ beginfigm #(60mm,15mm) @(0, .5)\(<30,Ph,1:/COOH,3:/NH2) sw_expand:=1; - @(1, .5)\(<30,Ph,1:/''(//O^-60,/OH^60),3:/''(N,/H^60,/H^-60)) + @(1, .5)\(<30,Ph,1:/''(?O^-60,/OH^60),3:/''(N,/H^60,/H^-60)) endfigm \end{mplibcode} %----------------------------------------------------------------------------- -\subsubsection{Abbreviate group} +\subsubsection{Omit group} \index{Group}% \index{sw\_abbreviate}% \begin{verbatim} -** default: sw_abbreviate=Group +** default: sw_omit=Group \end{verbatim} %------------------------------------------------------ \begin{mplibcode} @@ -1947,16 +1948,16 @@ beginfigm '`("<30,Ph,4:/Cl,3:/F") #(60mm,12mm) @(.15, .5)\(scantokens(mc)) - sw_abbreviate:=Group; + sw_omit:=Group; @(.85, .5)\(scantokens(mc)) endfigm \end{mplibcode} %----------------------------------------------------------------------------- -\subsubsection{Abbreviate bond type} +\subsubsection{Omit bond type} \index{Bond}% \index{sw\_abbreviate}% \begin{verbatim} -** default: sw_abbreviate=Bond +** default: sw_omit=Bond \end{verbatim} %------------------------------------------------------ \begin{mplibcode} @@ -1964,7 +1965,7 @@ beginfigm '`("<30,Ph,4:/Cl,3:/F") #(60mm,12mm) @(.15, .5)\(scantokens(mc)) - sw_abbreviate:=Bond; + sw_omit:=Bond; @(.85, .5)\(scantokens(mc)) endfigm \end{mplibcode} @@ -2045,7 +2046,7 @@ sw_frame=Atom \begin{mplibcode} beginfigm #(60mm,10mm); - sw_frame:=sw_frame+Atom; + sw_frame:=Atom; \(<30,COOH,!,COOH) endfigm \end{mplibcode} @@ -2064,7 +2065,7 @@ beginfigm %-------------------------- \(Ph) endfigm -beginfigm +beginfigm \(Ph) endfigm \end{verbatim} @@ -2117,7 +2118,7 @@ endfigm ratio_thickness_bond:=save_ratio; \end{mplibcode} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Command} +\section{Command of mcf2graph} %----------------------------------------------------------------------------- \subsection{drawm [ \textbackslash{ }]} \index{drawm}% @@ -2155,10 +2156,21 @@ readm(string1,string2, ...); '`(): abbreviated form of readm() (example) -'`("<30,Ph,1'2'6:/O!,-4'-5=?7, ", - " -1'-4'-6=dl,-2://O,-3:/O!, ", - " @9,\,NH,!,//O,! ") +'`("<30,Ph,1'2'6:/O!,-4'-5=?7, ", + " -1'-4'-6=dl,-2:?O,-3:/O!, ", + " @9,!,NH,!,?O,! ") +\\ \end{verbatim} + +\begin{mplibcode} +beginfigm +#(40mm,20mm); +'`("<30,Ph,1'2'6:/O!,-4'-5=?7, ", + " -1'-4'-6=dl,-2:?O,-3:/O!, ", + " @9,!,NH,!,?O,! ") +\\ +endfigm +\end{mplibcode} %----------------------------------------------------------------------------- \subsection{checkm [ \textbackslash*{ }]} \index{checkm()}% @@ -2211,10 +2223,11 @@ endfor getm("name"): "name"=string -beginfigm - $("Adenine") % get data EN="Adenine" - \\ % put figure -endfigm +(example) + beginfigm + $("Adenine") + \\ + endfigm \end{verbatim} %------------------------------------------------------------------------------- \subsection{putm [ \textbackslash\textbackslash{ }]} @@ -2226,7 +2239,8 @@ putm: put figure if op_row>=1: scantokens(op) fi if mc_row>=1: - if checkm(mc)=0: drawm(scantokens(mc)) + if checkm(mc)=0: + drawm(scantokens(mc)) fi fi if ad_row>=1: add(scantokens(ad)) fi @@ -2523,41 +2537,39 @@ endfigm \subsubsection{Local ext setting} \index{\_}% \begin{verbatim} -_s : abbreviated form of EN:=s; - beginfigm - _"?3"@(0.5,1)\(<30,?3) + EN:="?3";@(0.5,1)\(<30,?3) endfigm beginfigm - _"?4"@(0.5,1)\(?4) + EN:="?4";@(0.5,1)\(?4) %------------------------------- **(label.top(EN,(0.5w,0));) %------------------------------- endfigm beginfigm - _"?5"@(0.5,1)\(?5) + EN:="?5";@(0.5,1)\(?5) endfigm beginfigm - _"?6"@(0.5,1)\(?6) + EN:="?6";@(0.5,1)\(?6) endfigm \end{verbatim} %---------------------------------------------------- \quad \begin{mplibcode} beginfigm - _"?3"#(12mm,15mm)@(0.5,1)\(<30,?3) + EN:="?3";#(12mm,15mm)@(0.5,1)\(<30,?3) endfigm beginfigm - _"?4"#(12mm,15mm)@(0.5,1)\(?4) + EN:="?4";#(12mm,15mm)@(0.5,1)\(?4) %------------------------------- **(label.top(EN,(0.5w,0));) %------------------------------- endfigm beginfigm - _"?5"#(12mm,15mm)@(0.5,1)\(?5) + EN:="?5";#(12mm,15mm)@(0.5,1)\(?5) endfigm beginfigm - _"?6"#(12mm,15mm)@(0.5,1)\(?6) + EN:="?6";#(12mm,15mm)@(0.5,1)\(?6) endfigm \end{mplibcode} %----------------------------------------------------------------------------- @@ -2567,47 +2579,47 @@ endfigm ext_clear: reset global ext() beginfigm - _"?3"@(0.5,1)\(<30,?3) + EN:="?3";@(0.5,1)\(<30,?3) endfigm %------------------------------- ext(label.top(EN,(0.5w,0));) %------------------------------- beginfigm - _"?4"@(0.5,1)\(?4) + EN:="?4";@(0.5,1)\(?4) endfigm beginfigm - _"?5"@(0.5,1)\(?5) + EN:="?5";@(0.5,1)\(?5) endfigm %--------- ext_clear; %--------- beginfigm - _"?6"@(0.5,1)\(?6) + EN:="?6";@(0.5,1)\(?6) endfigm \end{verbatim} %------------------------------------- \quad \begin{mplibcode} beginfigm - _"?3"#(12mm,15mm) + EN:="?3";#(12mm,15mm) @(0.5,1)\(<30,?3) endfigm %------------------------------- ext(label.top(EN,(0.5w,0));) %------------------------------- beginfigm - _"?4"#(12mm,15mm) + EN:="?4";#(12mm,15mm) @(0.5,1)\(?4) endfigm beginfigm - _"?5"#(12mm,15mm) + EN:="?5";#(12mm,15mm) @(0.5,1)\(?5) endfigm %--------- ext_clear; %--------- beginfigm - _"?6"#(12mm,15mm) + EN:="?6";#(12mm,15mm) @(0.5,1)\(?6) endfigm \end{mplibcode} @@ -2622,7 +2634,7 @@ endfigm \begin{verbatim} beginfigm #(50mm,15mm) - \(<30,Ph,3=?5,@8,\,?5,9'16=dl,9'14:N,7'11:S,1:/OH,-2:*/COOH) + \(<30,Ph,3=?5,@8,!,?5,9'16=dl,9'14:N,7'11:S,1:/OH,-2:*/COOH) endfigm \end{verbatim} %------------------------------------------- @@ -2630,7 +2642,7 @@ endfigm loadm("EN<>*"); beginfigm #(50mm,15mm) - \(<30,Ph,3=?5,@8,\,?5,9'16=dl,9'14:N,7'11:S,1:/OH,-2:*/COOH) + \(<30,Ph,3=?5,@8,!,?5,9'16=dl,9'14:N,7'11:S,1:/OH,-2:*/COOH) endfigm \end{mplibcode} %----------------------------------------------------------------------------- @@ -2641,7 +2653,7 @@ endfigm beginfigm '`( "<30,Ph,1'2'6:/O!,-4'-5=?7, ", - " -1'-4'-6=dl,-2://O,-3:/O!, ", + " -1'-4'-6=dl,-2:?O,-3:/O!, ", " 9:/NH!'?O! ") #(40mm,20mm) \\ endfigm @@ -2652,7 +2664,7 @@ endfigm beginfigm '`( "<30,Ph,1'2'6:/O!,-4'-5=?7, ", - " -1'-4'-6=dl,-2://O,-3:/O!, ", + " -1'-4'-6=dl,-2:?O,-3:/O!, ", " 9:/NH!'?O! ") #(40mm,20mm) \\ endfigm @@ -2669,13 +2681,11 @@ arc_br : arc bottom right beginfigm %"EN:Maltose","MW:342.3", '`( - %---------------------------------------------------- - "#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##, ", - "#.5,{1^$270'2^$90'3^$270}:/OH,6^$90:/!OH, ", - "@4,$310~arc_lb`1,O,$50~arc_br`1,<$0, ", - "|,#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##, ", - "#.5,{2^$90'3^$270'4^$270}:/OH,6^$90:/!OH ") - %---------------------------------------------------- + %-------------------------------------------------------- + "hexose_hp,#.5,{1^$270'2^$90'3^$270}:/OH,6^$90:/!OH,##,", + "@4,$310~arc_lb`1,O,$50~arc_br`1,<$0, ", + "|,hexose_hp,#.5,{2^$90'3^$270'4^$270}:/OH,6^$90:/!OH ") + %-------------------------------------------------------- #(50mm,20mm) \\ endfigm \end{verbatim} @@ -2684,13 +2694,11 @@ endfigm beginfigm %"EN:Maltose","MW:342.3", '`( - %------------------------------------------------------- - "#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##, ", - "#.5,{1^$270'2^$90'3^$270}:/OH,6^$90:/!OH, ", - "@4,$310~arc_lb`1,O,$50~arc_br`1,<$0, ", - "|,#1.25,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##, ", - "#.5,{2^$90'3^$270'4^$270}:/OH,6^$90:/!OH ") - %------------------------------------------------------- + %-------------------------------------------------------- + "hexose_hp,#.5,{1^$270'2^$90'3^$270}:/OH,6^$90:/!OH,##,", + "@4,$310~arc_lb`1,O,$50~arc_br`1,<$0, ", + "|,hexose_hp,#.5,{2^$90'3^$270'4^$270}:/OH,6^$90:/!OH ") + %-------------------------------------------------------- #(50mm,20mm) \\ endfigm \end{mplibcode} @@ -2699,16 +2707,16 @@ endfigm \paragraph{(Erythromycin)} \begin{verbatim} beginfigm - _"Erythromycin" MW:="733.93"; + EN:=Erythromycin"; MW:="733.93"; #(60mm,30mm) @(1,0.5) '`( %----------------------------------------------------------------------- - "<30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1, ", - " 14:O,13:/*!,1'9://O, ", - " {*2'4'6^-35'8'*10'12^35}:/*_, ", - " {6^35'11'12^-35}:*/OH, ", - " @$3,\*,O,30~zb,|,?6`.7,6:O,#.5,{5~wf'3^35}:/_,4:/*OH,3^-35:/*O!,##, ", - " @$5,\*^30`1.7,O,!~zb,|,?6`.7,6:O,#.5,5:/*_,2:*/OH,3:/*N?! ") + "<30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1, ", + " 14:O,13:/*!,1'9:?O, ", + " {*2'4'6^-35'8'*10'12^35}:?z, ", + " {6^35'11'12^-35}:*/OH, ", + " @$3,!z,O,30~zb,|,?6`.7,6:O,#.5,{5~wf'3^35}:?,4:/*OH,3^-35:/*O!,##,", + " @$5,!z^30`1.7,O,!~zb,|,?6`.7,6:O,#.5,5:?z,2:*/OH,3:/*N?! ") %----------------------------------------------------------------------- \\ **(defaultscale:=0.8; @@ -2720,19 +2728,18 @@ beginfigm endfigm; \end{verbatim} %---------------------------------------------------------------------------- -%%%% EN:Erythromycin MW:733.93 \begin{mplibcode} beginfigm - _"Erythromycin" MW:="733.93"; + EN:="Erythromycin"; MW:="733.93"; #(60mm,30mm) @(1,0.5) '`( %----------------------------------------------------------------------- - "<30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1, ", - " 14:O,13:/*!,1'9://O, ", - " {*2'4'6^-35'8'*10'12^35}:/*_, ", - " {6^35'11'12^-35}:*/OH, ", - " @$3,\*,O,30~zb,|,?6`.7,6:O,#.5,{5~wf'3^35}:/_,4:/*OH,3^-35:/*O!,##, ", - " @$5,\*^30`1.7,O,!~zb,|,?6`.7,6:O,#.5,5:/*_,2:*/OH,3:/*N?! ") + "<30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1, ", + " 14:O,13:/*!,1'9:?O, ", + " {*2'4'6^-35'8'*10'12^35}:?z, ", + " {6^35'11'12^-35}:*/OH, ", + " @$3,!z,O,30~zb,|,?6`.7,6:O,#.5,{5~wf'3^35}:?,4:/*OH,3^-35:/*O!,##,", + " @$5,30~zf`1.7,O,!~zb,|,?6`.7,6:O,#.5,5:?z,2:*/OH,3:/*N?! ") %----------------------------------------------------------------------- \\ **(defaultscale:=0.8; @@ -2751,16 +2758,16 @@ beginfigm '`( %------------------------------------------------------------------ "?6,5=dl,@3,#1,36,45,45,45,45,##,&5,-4=?6,-4=?4,-1=wb,-3=wf,-1:O, ", - " 4:??,6:/_,{3^-60'15}:*/OH,8:/*H^-60,9:*/_^60,10://O, ", - " @1,\,O,!,//O,!,*/OH,!,/Ph,60~wf,NH,-60,//O,60,Ph, ", - " @7,\*,O,-45,//O,60,Ph,{11>rl'*12^-15>lr}:*/O!'?O! ") + " 4:??,6:?,{3^-60'15}:*/OH,8:/*H^-60,9:?w^60,10:?O, ", + " @1,!,O,!,?O,!,*/OH,!,/Ph,60~wf,NH,-60,?O,60,Ph, ", + " @7,!z,O,-45,?O,60,Ph,{11>rl'*12^-15>lr}:*/O!'?O! ") %------------------------------------------------------------------ #(140mm,30mm) if \*(mc)=0: @(0,0.5)\(scantokens(mc)) - sw_numbering:=Atom; + sw_numbering:=Atom+All; @(0.6,0.5)\(scantokens(mc)) - sw_numbering:=Bond; + sw_numbering:=Bond+All; @(1,0.5)\(scantokens(mc)) fi endfigm @@ -2772,14 +2779,14 @@ beginfigm '`( %------------------------------------------------------------------- "?6,5=dl,@3,#1,36,45,45,45,45,##,&5,-4=?6,-4=?4,-1=wb,-3=wf,-1:O, ", - " 4:??,6:/_,{3^-60'15}:*/OH,8:/*H^-60,9:*/_^60,10://O, ", - " @1,\,O,!,//O,!,*/OH,!,/Ph,60~wf,NH,-60,//O,60,Ph, ", - " @7,\*,O,-45,//O,60,Ph,{11>rl'*12^-15>lr}:*/O!'?O! ") + " 4:??,6:?,{3^-60'15}:*/OH,8:/*H^-60,9:?w^60,10:?O, ", + " @1,!,O,!,?O,!,*/OH,!,/Ph,60~wf,NH,-60,?O,60,Ph, ", + " @7,!z,O,-45,?O,60,Ph,{11>rl'*12^-15>lr}:*/O!'?O! ") %------------------------------------------------------------------- #(160mm,40mm) if \*(mc)=0: @(0, 0.5)\(scantokens(mc)) - sw_numbering:=Atom; @(0.5,0.5)\(scantokens(mc)) - sw_numbering:=Bond; @(1, 0.5)\(scantokens(mc)) + sw_numbering:=Atom+All; @(0.5,0.5)\(scantokens(mc)) + sw_numbering:=Bond+All; @(1, 0.5)\(scantokens(mc)) fi endfigm \end{mplibcode} @@ -2814,7 +2821,7 @@ loadm("CAT=biological","MW>=285","MW<=288","a:EN"); row[1][1]="CAT:biological;EN:Luteolin;MW:286.24;EXA:-" row[1][2]=":" -row[1][3]="<30,Ph,3=?6,9=dl,10:O,7://O,@9,\,Ph,2'6'14'15:/OH" +row[1][3]="<30,Ph,3=?6,9=dl,10:O,7:?O,@9,!,Ph,2'6'14'15:/OH" row[1][4]=";" row[2][1]="CAT:biological;EN:Lycorine;MW:287.315;EXA:1" row[2][2]=":" @@ -2828,7 +2835,7 @@ row[3][4]="@7,60~wf`0.75,70~si_`1.3,45,N!,&9~wb,15=dl,6:/OH,8^180:*/H,12:/*OH" row[3][5]=";" row[4][1]="CAT:biological;EN:Piperine;MW:285.343;EXA:1" row[4][2]=":" -row[4][3]="<30,Ph,-1=?5,-1'-3:O,@4,\,!d,!,!d,!,//O,!,?6,-6:N" +row[4][3]="<30,Ph,-1=?5,-1'-3:O,@4,!,!d,!,!d,!,?O,!,?6,-6:N" row[4][4]=";" \end{verbatim} %------------------------------------------------------------------------------ @@ -2839,7 +2846,7 @@ sw_comment=1: row[1][1]="%------------------------------------------------------------------" row[1][2]="CAT:biological;EN:Luteolin;MW:286.24;EXA:-" row[1][3]=":" -row[1][4]="<30,Ph,3=?6,9=dl,10:O,7://O,@9,\,Ph,2'6'14'15:/OH" +row[1][4]="<30,Ph,3=?6,9=dl,10:O,7:?O,@9,!,Ph,2'6'14'15:/OH" row[1][5]=";" ** default sw_comment=0 @@ -2861,7 +2868,7 @@ MI : monoisotopic mass from data USE : the use \begin{verbatim} beginfigm $("Chlorophyll a") - sw_output:=Fig+Calc+Mcode; + sw_output:=Fig+Mcode; #(80mm,30mm) \(scantokens(mc)) VerbatimTeX("\gdef\EN{"&EN&"}\gdef\MW{"&MW&"}"); @@ -2875,7 +2882,7 @@ endfigm \begin{mplibcode} beginfigm $("Chlorophyll a") - sw_output:=Fig+Calc+Mcode; + sw_output:=Fig+Mcode; #(80mm,30mm) \(scantokens(mc)) VerbatimTeX("\gdef\EN{"&EN&"}\gdef\MW{"&MW&"}"); @@ -2890,9 +2897,9 @@ endfigm \begin{verbatim} beginfigm $("Okadaic acid") - '`(",38:*/_,65=red") %%%% add methyl group (color red) %%%% - sw_output:=Fig+Calc+Mcode; %%%% output temp-mc.aux %%%% - _"Dinophysistoxin-1" #(90mm,20mm) + '`(",38:?w,65=red") %%%% add methyl group (color red) %%%% + sw_output:=Fig+Mcode; %%%% output temp-mc.aux %%%% + EN:="Dinophysistoxin-1"; #(90mm,20mm) MW:="819"; if \*(mc)=0: \(scantokens(mc)) VerbatimTeX("\gdef\EN{"&EN&"}\gdef\MW{"&MW&"}"); @@ -2907,10 +2914,10 @@ endfigm; \begin{mplibcode} beginfigm $("Okadaic acid") - '`(",38:*/_,65=red") %%%% add methyl group (color red) %%%% - sw_output:=Fig+Calc+Mcode; %%%% output temp-mc.aux %%%% + '`(",38:?w,65=red") %%%% add methyl group (color red) %%%% + sw_output:=Fig+Mcode; %%%% output temp-mc.aux %%%% MW:="819"; - _"Dinophysistoxin-1" #(90mm,20mm); + EN:="Dinophysistoxin-1"; #(90mm,20mm); if \*(mc)=0: \(scantokens(mc)) VerbatimTeX("\gdef\EN{"&EN&"}\gdef\MW{"&MW&"}"); VerbatimTeX("\gdef\mw{"&mw&"}\gdef\fm{"&fm&"}"); @@ -2930,7 +2937,7 @@ endfigm; \begin{mplibcode} beginfigm $("Maitotoxin") #(150mm,80mm) #@(3mm,3mm) - sw_output:=Fig+Calc+Mcode; %%%% output temp-mc.aux %%%% + sw_output:=Fig+Mcode; %%%% output temp-mc.aux %%%% sw_frame:=Outside; if \*(mc)=0: \(scantokens(mc)) VerbatimTeX("\gdef\EN{"&EN&"}\gdef\MW{"&MW&"}"); @@ -2946,7 +2953,7 @@ endfigm; \begin{mplibcode} beginfigm $("Maitotoxin") #(150mm,80mm) #@(3mm,3mm) - sw_output:=Fig+Calc+Mcode; + sw_output:=Fig+Mcode; sw_frame:=Outside; %% mc_length:=40; if \*(mc)=0: \(scantokens(mc)) VerbatimTeX("\gdef\EN{"&EN&"}\gdef\MW{"&MW&"}"); @@ -2963,18 +2970,18 @@ endfigm; \noindent% \begin{mplibcode} beginfigm -#(160mm,75mm) |<(5mm) +#(160mm,75mm) |<(4mm) %-------------------------------------------------------------------------------- -COOH:=''(//O,!,OH); -HOCO:=''(OH,!,//O,); +COOH:=''(?O,!,OH); +HOCO:=''(OH,!,?O,); S_CoA:=`("{S-CoA}"); -@(0.33, 1)\(<30,HOCO,!,//O,!2,COOH) % Oxaloacetate -@(0.66, 1)\(<30,HOCO,!4,COOH,@-4`1,\,COOH,4:/OH^-165) % Citrate -@(1, 1)\(<30,HOCO,!2,!~dr,!,COOH,@-4`1,\,COOH) % cis-Aconitate -@(1, 0.58)\(<30,HOCO,!4,COOH,@-4,\`1,COOH,5:/OH) % Isocitrate -@(1, 0.05)\(<30,HOCO,!3,//O,!,COOH,@-4,\`1,COOH) % Oxalosuccinate -@(0.66,0.05)\(<30,HOCO,!3,//O,!,COOH) % alfa-Ketoglutarate -@(0.33,0.05)\(<30,HOCO,!3,//O,!,S_CoA) % Succinyl-CoA +@(0.33, 1)\(<30,HOCO,!,?O,!2,COOH) % Oxaloacetate +@(0.66, 1)\(<30,HOCO,!4,COOH,@-4`1,!,COOH,4:/OH^-165) % Citrate +@(1, 1)\(<30,HOCO,!2,!~dr,!,COOH,@-4`1,!,COOH) % cis-Aconitate +@(1, 0.58)\(<30,HOCO,!4,COOH,@-4,!`1,COOH,5:/OH) % Isocitrate +@(1, 0.05)\(<30,HOCO,!3,?O,!,COOH,@-4,!`1,COOH) % Oxalosuccinate +@(0.66,0.05)\(<30,HOCO,!3,?O,!,COOH) % alfa-Ketoglutarate +@(0.33,0.05)\(<30,HOCO,!3,?O,!,S_CoA) % Succinyl-CoA @(0, 0.05)\(<30,HOCO,!3,COOH) % Succinate @(0, 0.55)\(<30,HOCO,!,!~dr,!,COOH) % Fumarate @(0, 1)\(<30,HOCO,!3,COOH,3:/OH) % L-Malate @@ -3015,7 +3022,7 @@ sw_label_emu:=1; ext_setup; r_arrow(10mm)( 0)(p1+ ( 1.1w1, 0.3h1))("Acetyl-CoA",1.5)(" CoA-SH",1); r_arrow(10mm)( 0)(p2+ ( 1.1w2, 0.4h2))("",0)("H2O",1); -r_arrow( 8mm)(270)(p3+ ( 0.5w3,-0.4h3))("H2O",1)("",0); +r_arrow( 8mm)(270)(p3+ ( 0.5w3,-0.6h3))("H2O",1)("",0); r_arrow( 8mm)(270)(p4+ ( 0.5w4,-0.4h4))("NAD+",1)("NADH2+",1); r_arrow(10mm)(180)(p5+ (-0.1w5, 0.4h5))("",0)("CO2",1); r_arrow(10mm)(180)(p6+ (-0.1w6, 0.5h6))("NAD+,CoA-SH",1.7)("NADH2+,CO2",1); @@ -3031,17 +3038,17 @@ endfigm %------------------------------------------------------------------------ \begin{verbatim} beginfigm -#(160mm,75mm) |<(5mm) -COOH:=''(//O,!,OH); % define COOH -HOCO:=''(OH,!,//O,); % define HOCO +#(160mm,75mm) |<(4mm) +COOH:=''(?O,!,OH); % define COOH +HOCO:=''(OH,!,?O,); % define HOCO S_CoA:=`("{S-CoA}"); % define S_CoA -@(0.33, 1)\(<30,HOCO,!,//O,!2,COOH) % Oxaloacetate -@(0.66, 1)\(<30,HOCO,!4,COOH,@-4`1,\,COOH,4:/OH^-165) % Citrate -@(1, 1)\(<30,HOCO,!2,!~dr,!,COOH,@-4`1,\,COOH) % cis-Aconitate -@(1, 0.58)\(<30,HOCO,!4,COOH,@-4,\`1,COOH,5:/OH) % Isocitrate -@(1, 0.05)\(<30,HOCO,!3,//O,!,COOH,@-4,\`1,COOH) % Oxalosuccinate -@(0.66,0.05)\(<30,HOCO,!3,//O,!,COOH) % alfa-Ketoglutarate -@(0.33,0.05)\(<30,HOCO,!3,//O,!,S_CoA) % Succinyl-CoA +@(0.33, 1)\(<30,HOCO,!,?O,!2,COOH) % Oxaloacetate +@(0.66, 1)\(<30,HOCO,!4,COOH,@-4`1,!,COOH,4:/OH^-165) % Citrate +@(1, 1)\(<30,HOCO,!2,!~dr,!,COOH,@-4`1,!,COOH) % cis-Aconitate +@(1, 0.58)\(<30,HOCO,!4,COOH,@-4,!`1,COOH,5:/OH) % Isocitrate +@(1, 0.05)\(<30,HOCO,!3,?O,!,COOH,@-4,!`1,COOH) % Oxalosuccinate +@(0.66,0.05)\(<30,HOCO,!3,?O,!,COOH) % alfa-Ketoglutarate +@(0.33,0.05)\(<30,HOCO,!3,?O,!,S_CoA) % Succinyl-CoA @(0, 0.05)\(<30,HOCO,!3,COOH) % Succinate @(0, 0.55)\(<30,HOCO,!,!~dr,!,COOH) % Fumarate @(0, 1)\(<30,HOCO,!3,COOH,3:/OH) % L-Malate @@ -3058,7 +3065,7 @@ ext( ext_setup; r_arrow(10mm)( 0)(p1+ ( 1.1w1, 0.3h1))("Acetyl-CoA",1.5)(" CoA-SH",1); r_arrow(10mm)( 0)(p2+ ( 1.1w2, 0.4h2))("",0)("H2O",1); - r_arrow( 8mm)(270)(p3+ ( 0.5w3,-0.4h3))("H2O",1)("",0); + r_arrow( 8mm)(270)(p3+ ( 0.5w3,-0.6h3))("H2O",1)("",0); r_arrow( 8mm)(270)(p4+ ( 0.5w4,-0.4h4))("NAD+",1)("NADH2+",1); r_arrow(10mm)(180)(p5+ (-0.1w5, 0.4h5))("",0)("CO_2_",1); r_arrow(10mm)(180)(p6+ (-0.1w6, 0.5h6))("NAD+,CoA-SH",1.7)("NADH2+,CO2",1); @@ -3085,7 +3092,6 @@ endfigm %------------------------------------------------------------------------------ input mcf2graph; > input main macro %------------------------------------------------------------------------------ -sw_output:=Info; % aux(information) file output on > global setting %%%% sw_output:=Report; > report output %%%% sw_output:=MOL2000; > MOL file output #(60mm,40mm); % (figure width,figure height) > @@ -3095,8 +3101,8 @@ outputtemplate:="c%3c-%{EN_}.png"; > beginfigm % EN:Ampicillin MW:349.405 \(<45,?4,-3=?5,2:N,7:S, > immediately compile - 3^45:/*H,1://O^15,5:/*COOH^-18,6:??, > - @4,*\^15,NH,!,//O,!,/*NH2,!,Ph) > + 3^45:/*H,1:?O^15,5:/*COOH^-18,6:??, > + @4,!w^15,NH,!,?O,!,/*NH2,!,Ph) > endfigm > %------------------------------------------------------------------------------ beginfigm @@ -3104,8 +3110,8 @@ beginfigm '`( > read Mcode "<30,?6,-4'-2=?6,-4=?5,7=dl, ", > mc1 "10:/*H^180,11:/*H^-60,17:/*H^-54, ", > mc2 - "4'12:*/_^60, ", > mc3 - "@-1,18,/*_,-60,!3,?! ") > mc4 + "4'12:?w^60, ", > mc3 + "@-1,18,?z,-60,!3,?! ") > mc4 \\ > put figure endfigm > %------------------------------------------------------------------------------ @@ -3168,22 +3174,22 @@ CAT:biological;EN:Adenine;MW:135.13;EXA:1 %------------------------------------------------------------------------------ CAT:biological;EN:Guanine;MW:151.13;EXA:1 : -<30,?6,3=?5,1'3'9=dl,2'9:N,6'7:NH,5://O,1:/NH2 +<30,?6,3=?5,1'3'9=dl,2'9:N,6'7:NH,5:?O,1:/NH2 ; %------------------------------------------------------------------------------ CAT:biological;EN:Cytosine;MW:111.10;EXA:1 : -<30,?6,4'6=dl,4:N,3://O,2:NH,5:/NH2 +<30,?6,4'6=dl,4:N,3:?O,2:NH,5:/NH2 ; %------------------------------------------------------------------------------ CAT:biological;EN:Thymine;MW:126.11;EXA:1 : -<30,?6,3=dl,2'6:NH,1'5://O,4:/_ +<30,?6,3=dl,2'6:NH,1'5:?O,4:? ; %------------------------------------------------------------------------------ CAT:biological;EN:Uracil;MW:112.09;EXA:1 : -<30,?6,6=dl,3'5://O,2'4:NH +<30,?6,6=dl,3'5:?O,2'4:NH ; %== Amino acid ================================================================ CAT:biological;EN:Glycine;MW:75.07;EXA:- @@ -3203,7 +3209,7 @@ sw_output:=Mcode; %% output 'temp-mc.aux' \end{verbatim} \paragraph{(Command line)} \begin{verbatim} - >mpost -s ahlength=3 FILENAME (sw_output=Info+Mcode) + >mpost -s ahlength=3 FILENAME (sw_output=Fig Expand mode) \end{verbatim} \paragraph{(Output mcf file)} \begin{verbatim} @@ -3213,17 +3219,6 @@ sw_output=Mcode %% file name = 'temp-mc.aux' <30,?6,3=?5,1'3'5'9=dl,2'6'9:N,5:/NH2,7:NH \end{verbatim} -\paragraph{(Output library file)} -\begin{verbatim} -sw_output=Info+Mcode %% file name = 'jobname-lib.aux' - -(result) -CAT:biological;EN:Adenine;MW:135.13;EXA:1 -: -<30,?6,3=?5,1'3'5'9=dl,2'6'9:N,5:/NH2,7:NH -; - -\end{verbatim} %------------------------------------------------------------------------ \paragraph{(LuaLaTeX example)} %----------------------------------------------------------------------- @@ -3244,10 +3239,10 @@ CAT:biological;EN:Adenine;MW:135.13;EXA:1 (result) file name = 'temp-mc.aux' -<30,?6,@4,?6,@-4,\,!3,<-12,?5,@-3,<-12,?6,-3=?6,@-3,*\,!3, - ?6,@-4,?6,@6,\,!,/*_^-40,*/OH^20,!,//O,!1,OH, +<30,?6,@4,?6,@-4,!,!3,<-12,?5,@-3,<-12,?6,-3=?6,@-3,!w,!3, + ?6,@-4,?6,@6,!,!,?z^-40,*/OH^20,!,?O,!1,OH, 3=wb,11=dl,15=dr,17'19=wf,38=wb,5'7'16'24'25'33'42:O, - 32:*/H^60,10:/_,12'31:*/_,27://_,37:/*_,28:/OH,3'29:/*OH + 32:*/H^60,10:?,12'31:?w,27:?d,37:?z,28:/OH,3'29:/*OH \end{verbatim} %------------------------------------------------------------------------ \newpage @@ -3266,49 +3261,47 @@ file name = 'temp-mc.aux' \paragraph{(Output)} \begin{verbatim} =========================================================================== - No[5],Name<Cytosine>,Category<biological>,File<main_lib.mcf> + No[148],Name<Phenol>,Category<synthetic>,File<main_lib.mcf> +--------------------------------------------------------------------------- + Row[1],Length[12],Block[3],BackboneA[6],BackboneB[6],Group[1] --------------------------------------------------------------------------- -<30,?6,4'6=db,4:N,3://O,2:NH,5:/NH2 +<30,Ph,3:/OH --------------------------------------------------------------------------- - Row[1],Length[37],Block[7],Code pair[59],Warning[0] +[1 ] <30 +[2 ] Ph +[3 ] 3:/OH --------------------------------------------------------------------------- - =[1] :[4] ?[1] <[1] --------------------------------------------------------------------------- - Width[30.92419],Height[42.36527], Shift x[-1.77635],Shift y[-12.9921] + Width[35.80607],Height[24.55503], Shift x[-1.77635],Shift y[-7.54719] Bond length[11.33855],Atom size[4.881881] --------------------------------------------------------------------------- - Atom[9],Bond[9],Ring[1],Hide H[2] + Atom[7],Bond[7],Ring[1],Hide H[5] < NO. ><atom(s) >( x axis , y axis )<bond><hideH><chg> A1 C ( 0 , 0 ) 3 1 - A2 N ( 1 , -1 ) 3 + A2 C ( 1 , -1 ) 3 1 A3 C ( 2 , 0 ) 4 - A4 N ( 2 , 1 ) 3 - A5 C ( 1 , 1 ) 4 + A4 C ( 2 , 1 ) 3 1 + A5 C ( 1 , 1 ) 3 1 A6 C ( 0 , 1 ) 3 1 - A7 O ( 3 , 0 ) 2 - A8 H ( 1 , -1 ) 1 - A9 NH2 ( 1 , 2 ) 1 + A7 OH ( 3 , 0 ) 1 --------------------------------------------------------------------------- < NO. >< bond (sdt)><angle +( +- )><length ( pt )> - B1 1 -> 2 ( 1) 330 ( -30) 1 ( 11) + B1 1 -> 2 ( 2) 330 ( -30) 1 ( 11) B2 2 -> 3 ( 1) 30 ( 30) 1 ( 11) - B3 3 -> 4 ( 1) 90 ( 90) 1 ( 11) - B4 4 -> 5 ( 2) 150 ( 150) 1 ( 11) - B5 5 -> 6 ( 1) 210 ( -150) 1 ( 11) - B6 6 -> 1 ( 2) 270 ( -90) 1 ( 11) - B7 3 -> 7 ( 2) 330 ( -30)0.660000 ( 7) - B8 2 -> 8 ( 1) 270 ( -90)0.359999 ( 4) - B9 5 -> 9 ( 1) 90 ( 90)0.660000 ( 7) + B3 3 -> 4 ( 2) 90 ( 90) 1 ( 11) + B4 4 -> 5 ( 1) 150 ( 150) 1 ( 11) + B5 5 -> 6 ( 2) 210 ( -150) 1 ( 11) + B6 6 -> 1 ( 1) 270 ( -90) 1 ( 11) + B7 3 -> 7 ( 1) 330 ( -30)0.660000 ( 7) --------------------------------------------------------------------------- <atom>( atom wt )[ mi wt ] < cnt > < sum wt >[ sum mi wt ] - C ( 12.0107)[ 12] * 4 48.0428[ 48] - H (1.0079400)[1.0078250] * 5 5.03969[5.0391251611] - N ( 14.0067)[14.003074] * 3 42.0200[42.009222013] + C ( 12.0107)[ 12] * 6 72.0642[ 72] + H (1.0079400)[1.0078250] * 6 6.04764[6.0469501933] O ( 15.9994)[15.994914] * 1 15.9994[15.994914619] - Molecular Weight [Mono Isotopic] = 111.1019[ 111.043261] + Molecular Weight [Mono Isotopic] = 94.11123[ 94.0418648] --------------------------------------------------------------------------- - Weight Calc: 111.1019 - Input: 111.10 = 0.0019999 - Fomula Calc: C4H5N3O + Weight Calc: 94.11123 - Input: 94.11 = 0.0012399 + Fomula Calc: C6H6O =========================================================================== \end{verbatim} \newpage @@ -3398,12 +3391,12 @@ M END #(50mm,50mm) '`( %--------------------------------------- - "<30,?6,-3'-4=?6, ", - " -5=?3,-2=wf,-1=wb,6=?5,-4=?6,-5=wf, ", - " 13'15'17'20:O,3'12'21://O, ", - " {4~wf^60'8~zf^60'18^35'18^-35}:/_, ", - " {1^60'5^180'16^60}:/*H, ", - " @14,\*,|,?5,1'4=dl,3:O ") + "<30,?6,-3'-4=?6, ", + " -5=?3,-2=wf,-1=wb,6=?5,-4=?6,-5=wf, ", + " 13'15'17'20:O,3'12'21:?O, ", + " {4~wf^60'8~zf^60'18^35'18^-35}:?, ", + " {1^60'5^180'16^60}:/*H, ", + " @14,!z,|,?5,1'4=dl,3:O ") %--------------------------------------- \\ endfigm @@ -3416,10 +3409,10 @@ M END #(80mm,50mm) '`( %----------------------------------------- - "<30,?6,3=dl,{3'5^35'5^-35}:/_, ", - " @4,\,|,!18,1'3'5'7'9'11'13'15'17=dr, ", - " 3'7'12'16:/_, ", - " |,?6,6=dl,{6'2^35'2^-35}:/_ ") + "<30,?6,3=dl,{3'5^35'5^-35}:?, ", + " @4,!,|,!18,1'3'5'7'9'11'13'15'17=dr, ", + " 3'7'12'16:?, ", + " |,?6,6=dl,{6'2^35'2^-35}:? ") %----------------------------------------- \\ endfigm @@ -3432,4 +3425,3 @@ M END \texttt{\printindex} %------------------------------------------------------------------------ \end{document} -} diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/template_lib.mcf b/Master/texmf-dist/doc/metapost/mcf2graph/template_lib.mcf index 644093afd99..92a0866c17a 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/template_lib.mcf +++ b/Master/texmf-dist/doc/metapost/mcf2graph/template_lib.mcf @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% mcf template file mcf_template.mcf by Akira Yamaji 2024.12.01 +% mcf template file mcf_template.mcf by Akira Yamaji 2025.01.05 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % must use version 5.15 % tag1:var1;tag2:var2;tag3:var3 ..... @@ -14,7 +14,6 @@ Cat:biological;EN:Paclitaxel;MW:853.918;EXA:1 %------------------------------------------------------------------- = %%%%%% start parameter setting %%%%%% - sw_output:=Fig+Calc; sw_frame:=Outside; fsize:=(50mm,30mm); fmargin:=(2mm,2mm); @@ -22,9 +21,9 @@ Cat:biological;EN:Paclitaxel;MW:853.918;EXA:1 %------------------------------------------------------------------- : %%%%%%% start MCF %%%%%% ?6,5=dl,@3,#1,36,45,45,45,45,##,&5,-4=?6,-4=?4,-1=wb,-3=wf,-1:O, - 4:??,6:/_,{3^-60'15}:*/OH,8:/*H^-60,9:*/_^60,10://O, - @1,\,O!,?O!,*/OH,!,/Ph,60~wf,NH,-60,//O,60,Ph, - @7,\*,O,-45,//O,60,Ph,{11>rl'*12^-15>lr}:*/O!'?O! + 4:??,6:?,{3^-60'15}:*/OH,8:/*H^-60,9:?w^60,10://O, + @1,!,O!,?O!,*/OH,!,/Ph,60~wf,NH,-60,//O,60,Ph, + @7,!z,O,-45,//O,60,Ph,{11>rl'*12^-15>lr}:*/O!'?O! %------------------------------------------------------------------- * %%%%%% start ext(...) %%%%%% defaultscale:=0.5; @@ -37,19 +36,17 @@ Cat:biological;EN:Paclitaxel;MW:853.918;EXA:1 Cat:biological;EN:Erythromycin;MW:733.93 %------------------------------------------------------------------- = %%%%%% start parameter setting %%%%%% - sw_output:=Fig+Calc; sw_frame:=Outside; fsize:=(50mm,30mm); fmargin:=(2mm,2mm); mposition:=(1,0); %------------------------------------------------------------------- : %%%%%%% start MCF %%%%%% - <30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1, - 14:O,13:/*!,1'9://O, - {*2'4'6^-35'8'*10'12^35}:/*_, - {6^35'11'12^-35}:*/OH, - @$3,\*,O,30~zb,|,?6`.7,6:O,#.5,{5~wf'3^35}:/_,4:/*OH,3^-35:/*O!,##, - @$5,\*^30`1.7,O,!~zb,|,?6`.7,6:O,#.5,5:/*_,2:*/OH,3:/*N?! +<30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1, + 14:O,13:/*!,1'9:?O,{*2'4'6^-35'8'*10'12^35}:?z, + {6^35'11'12^-35}:*/OH, + @$3,!z,O,30~zb,|,?6`.7,6:O,#.5,{5~wf'3^35}:?,4:/*OH,3^-35:/*O!,##, + @$5,30~zf`1.7,O,!zb,|,?6`.7,6:O,#.5,5:?z,2:*/OH,3:/*N?! %------------------------------------------------------------------- * %%%%%% start ext(...) %%%%%% defaultscale:=0.5; diff --git a/Master/texmf-dist/doc/metapost/mcf2graph/template_soc.mp b/Master/texmf-dist/doc/metapost/mcf2graph/template_soc.mp index 306757215c0..4bb88a493e0 100644 --- a/Master/texmf-dist/doc/metapost/mcf2graph/template_soc.mp +++ b/Master/texmf-dist/doc/metapost/mcf2graph/template_soc.mp @@ -1,17 +1,17 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% MCF compile template file by Akira Yamaji 2024.12.01 +% MCF compile template file by Akira Yamaji 2025.01.05 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -if unknown mcftograph: input mcf2graph; fi %%% it must be version 5.15 -message "* mcf_template 2024.12.01"; +if unknown mcftograph: input mcf2graph; fi %%% it must be version 5.16 +message "* mcf_template 2025.01.05"; message ""; %------------------------------------------------------------------------------ +sw_output:=Fig; +%%%%sw_output:=Fig+Report; %%%%ext(defaultscale:=.3; label.rt(EN,(0,0));) %------------------------------------------------------------------------------ %%%%ext(defaultfont:=mpfont; defaultscale:=.3; %%%%label.rt(EN&" / "&mw&" / "&decimal(num_MW-scantokens(MW)),(0,0));) %------------------------------------------------------------------------------ -sw_output:=Fig+Calc; -%------------------------------------------------------------------------------ loadm("f:temp"); %------------------------------------------------------------------------------ for i=1 upto ucount: beginfigm $(i) \\ endfigm endfor diff --git a/Master/texmf-dist/doc/support/bib2gls/CHANGES b/Master/texmf-dist/doc/support/bib2gls/CHANGES index 9419b765cc3..8c57e38ee37 100644 --- a/Master/texmf-dist/doc/support/bib2gls/CHANGES +++ b/Master/texmf-dist/doc/support/bib2gls/CHANGES @@ -1,3 +1,15 @@ +v4.1 (2025-01-03) + + * bib2gls + + - added resource options: + + omit-fields + omit-fields-missing-field-action + gather-parsed-dependencies + + - added \BibGlsNoCaseChange + v4.0a (2024-12-15) Corrected distribution (missing files). diff --git a/Master/texmf-dist/doc/support/bib2gls/README.md b/Master/texmf-dist/doc/support/bib2gls/README.md index deb89f2ad86..c1e0ad4ffcf 100644 --- a/Master/texmf-dist/doc/support/bib2gls/README.md +++ b/Master/texmf-dist/doc/support/bib2gls/README.md @@ -18,7 +18,7 @@ datatool2bib --version ## Licence -Copyright (C) 2017-2024 Nicola L. C. Talbot (dickimaw-books.com) +Copyright (C) 2017-2025 Nicola L. C. Talbot (dickimaw-books.com) License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html diff --git a/Master/texmf-dist/doc/support/bib2gls/bib2gls-begin.pdf b/Master/texmf-dist/doc/support/bib2gls/bib2gls-begin.pdf Binary files differindex 2a581effeb0..6b28722213a 100644 --- a/Master/texmf-dist/doc/support/bib2gls/bib2gls-begin.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/bib2gls-begin.pdf diff --git a/Master/texmf-dist/doc/support/bib2gls/bib2gls.pdf b/Master/texmf-dist/doc/support/bib2gls/bib2gls.pdf Binary files differindex 651fc0335b7..25dd4193310 100644 --- a/Master/texmf-dist/doc/support/bib2gls/bib2gls.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/bib2gls.pdf diff --git a/Master/texmf-dist/doc/support/bib2gls/examples/sample-authors.pdf b/Master/texmf-dist/doc/support/bib2gls/examples/sample-authors.pdf Binary files differindex 30c4d7a9582..ab77cca78e1 100644 --- a/Master/texmf-dist/doc/support/bib2gls/examples/sample-authors.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/examples/sample-authors.pdf diff --git a/Master/texmf-dist/doc/support/bib2gls/examples/sample-bacteria.pdf b/Master/texmf-dist/doc/support/bib2gls/examples/sample-bacteria.pdf Binary files differindex c5ad9618ac6..9d2f6b412cc 100644 --- a/Master/texmf-dist/doc/support/bib2gls/examples/sample-bacteria.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/examples/sample-bacteria.pdf diff --git a/Master/texmf-dist/doc/support/bib2gls/examples/sample-chemical.pdf b/Master/texmf-dist/doc/support/bib2gls/examples/sample-chemical.pdf Binary files differindex af7360f1230..3c50ebfc8f8 100644 --- a/Master/texmf-dist/doc/support/bib2gls/examples/sample-chemical.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/examples/sample-chemical.pdf diff --git a/Master/texmf-dist/doc/support/bib2gls/examples/sample-citations.pdf b/Master/texmf-dist/doc/support/bib2gls/examples/sample-citations.pdf Binary files differindex 736443cfb00..da21fbd9cbc 100644 --- a/Master/texmf-dist/doc/support/bib2gls/examples/sample-citations.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/examples/sample-citations.pdf diff --git a/Master/texmf-dist/doc/support/bib2gls/examples/sample-constants.pdf b/Master/texmf-dist/doc/support/bib2gls/examples/sample-constants.pdf Binary files differindex c53dd236e52..634a82fc6fc 100644 --- a/Master/texmf-dist/doc/support/bib2gls/examples/sample-constants.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/examples/sample-constants.pdf diff --git a/Master/texmf-dist/doc/support/bib2gls/examples/sample-hierarchical.pdf b/Master/texmf-dist/doc/support/bib2gls/examples/sample-hierarchical.pdf Binary files differindex 58b80903e6e..3bd317511e8 100644 --- a/Master/texmf-dist/doc/support/bib2gls/examples/sample-hierarchical.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/examples/sample-hierarchical.pdf diff --git a/Master/texmf-dist/doc/support/bib2gls/examples/sample-markuplanguages.pdf b/Master/texmf-dist/doc/support/bib2gls/examples/sample-markuplanguages.pdf Binary files differindex a3c8aed48d4..b172d129077 100644 --- a/Master/texmf-dist/doc/support/bib2gls/examples/sample-markuplanguages.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/examples/sample-markuplanguages.pdf diff --git a/Master/texmf-dist/doc/support/bib2gls/examples/sample-maths.pdf b/Master/texmf-dist/doc/support/bib2gls/examples/sample-maths.pdf Binary files differindex 2dada63e9ea..8c5271f53a6 100644 --- a/Master/texmf-dist/doc/support/bib2gls/examples/sample-maths.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/examples/sample-maths.pdf diff --git a/Master/texmf-dist/doc/support/bib2gls/examples/sample-media.pdf b/Master/texmf-dist/doc/support/bib2gls/examples/sample-media.pdf Binary files differindex 69e434b5730..fb831a78f4f 100644 --- a/Master/texmf-dist/doc/support/bib2gls/examples/sample-media.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/examples/sample-media.pdf diff --git a/Master/texmf-dist/doc/support/bib2gls/examples/sample-msymbols.pdf b/Master/texmf-dist/doc/support/bib2gls/examples/sample-msymbols.pdf Binary files differindex 4fac04065bc..e656893e591 100644 --- a/Master/texmf-dist/doc/support/bib2gls/examples/sample-msymbols.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/examples/sample-msymbols.pdf diff --git a/Master/texmf-dist/doc/support/bib2gls/examples/sample-multi1.pdf b/Master/texmf-dist/doc/support/bib2gls/examples/sample-multi1.pdf Binary files differindex 01e735867c3..2fdac02fb86 100644 --- a/Master/texmf-dist/doc/support/bib2gls/examples/sample-multi1.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/examples/sample-multi1.pdf diff --git a/Master/texmf-dist/doc/support/bib2gls/examples/sample-multi2.pdf b/Master/texmf-dist/doc/support/bib2gls/examples/sample-multi2.pdf Binary files differindex 8034747fa19..321f02fdba6 100644 --- a/Master/texmf-dist/doc/support/bib2gls/examples/sample-multi2.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/examples/sample-multi2.pdf diff --git a/Master/texmf-dist/doc/support/bib2gls/examples/sample-nested.pdf b/Master/texmf-dist/doc/support/bib2gls/examples/sample-nested.pdf Binary files differindex cd6064f3e52..76bd23cb237 100644 --- a/Master/texmf-dist/doc/support/bib2gls/examples/sample-nested.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/examples/sample-nested.pdf diff --git a/Master/texmf-dist/doc/support/bib2gls/examples/sample-people.pdf b/Master/texmf-dist/doc/support/bib2gls/examples/sample-people.pdf Binary files differindex 57a1f5454e2..69d6b0f5698 100644 --- a/Master/texmf-dist/doc/support/bib2gls/examples/sample-people.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/examples/sample-people.pdf diff --git a/Master/texmf-dist/doc/support/bib2gls/examples/sample-textsymbols.pdf b/Master/texmf-dist/doc/support/bib2gls/examples/sample-textsymbols.pdf Binary files differindex 7f1684d9c1b..7dc2cfa528c 100644 --- a/Master/texmf-dist/doc/support/bib2gls/examples/sample-textsymbols.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/examples/sample-textsymbols.pdf diff --git a/Master/texmf-dist/doc/support/bib2gls/examples/sample-textsymbols2.pdf b/Master/texmf-dist/doc/support/bib2gls/examples/sample-textsymbols2.pdf Binary files differindex d21ed313ec8..fbe93b50dca 100644 --- a/Master/texmf-dist/doc/support/bib2gls/examples/sample-textsymbols2.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/examples/sample-textsymbols2.pdf diff --git a/Master/texmf-dist/doc/support/bib2gls/examples/sample-units1.pdf b/Master/texmf-dist/doc/support/bib2gls/examples/sample-units1.pdf Binary files differindex 4d2c8dbd6c7..8a274954e71 100644 --- a/Master/texmf-dist/doc/support/bib2gls/examples/sample-units1.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/examples/sample-units1.pdf diff --git a/Master/texmf-dist/doc/support/bib2gls/examples/sample-units2.pdf b/Master/texmf-dist/doc/support/bib2gls/examples/sample-units2.pdf Binary files differindex b6a61f0ddd5..1bfec41ad71 100644 --- a/Master/texmf-dist/doc/support/bib2gls/examples/sample-units2.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/examples/sample-units2.pdf diff --git a/Master/texmf-dist/doc/support/bib2gls/examples/sample-units3.pdf b/Master/texmf-dist/doc/support/bib2gls/examples/sample-units3.pdf Binary files differindex 4f79f6dd184..ca86f2bc021 100644 --- a/Master/texmf-dist/doc/support/bib2gls/examples/sample-units3.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/examples/sample-units3.pdf diff --git a/Master/texmf-dist/doc/support/bib2gls/examples/sample-usergroups.pdf b/Master/texmf-dist/doc/support/bib2gls/examples/sample-usergroups.pdf Binary files differindex f324113c5b1..459ad803d14 100644 --- a/Master/texmf-dist/doc/support/bib2gls/examples/sample-usergroups.pdf +++ b/Master/texmf-dist/doc/support/bib2gls/examples/sample-usergroups.pdf diff --git a/Master/texmf-dist/doc/uptex/uptex-base/00readme_uptex.txt b/Master/texmf-dist/doc/uptex/uptex-base/00readme_uptex.txt index ffd6f198b74..18550377b30 100644 --- a/Master/texmf-dist/doc/uptex/uptex-base/00readme_uptex.txt +++ b/Master/texmf-dist/doc/uptex/uptex-base/00readme_uptex.txt @@ -1,5 +1,5 @@ upTeX, upLaTeX --- unicode version of ASCII pTeX, pLaTeX -2024.12.28 Ver2.00 +2025.01.03 Ver2.00 TANAKA, Takuji ttk(at)t-lab(dot)opal(dot)ne(dot)jp [ Contents ] diff --git a/Master/texmf-dist/doc/uptex/uptex-base/01uptex_doc_utf8.txt b/Master/texmf-dist/doc/uptex/uptex-base/01uptex_doc_utf8.txt index c3ac01feff0..da4ba812c63 100644 --- a/Master/texmf-dist/doc/uptex/uptex-base/01uptex_doc_utf8.txt +++ b/Master/texmf-dist/doc/uptex/uptex-base/01uptex_doc_utf8.txt @@ -1,5 +1,5 @@ upTeX, upLaTeX --- 内部unicode版 pTeX, pLaTeX の実装 -2024.12.28 Ver2.00 +2025.01.03 Ver2.00 TANAKA, Takuji ttk(at)t-lab(dot)opal(dot)ne(dot)jp ◇ upTeX開発のねらい upTeX Ver0.02 〜 Ver1.35 @@ -531,6 +531,10 @@ kcatcodeは原則としてUnicodeのblock毎に与えられる。 (0x1FE) 0xFF10..0xFF19, 0xFF21..0xFF3A, 0xFF41..0xFF5A <17> Fullwidth digit and latin alphabet (0x1FF) 0xFF66..0xFF6F, 0xFF71..0xFF9D <17> Halfwidth katakana ○Unicodeの範囲外を合成文字に対応するupTeXの内部コードとして利用する + (0x15F) 0x110000..0x11FFFF <16> for japanese-otf, japanese-otf-uptex macros + (0x160) 0x120000..0x12FFFF <16> for japanese-otf, japanese-otf-uptex macros + (0x161) 0x130000..0x13FFFF <16> for japanese-otf, japanese-otf-uptex macros + (0x162) 0x140000..0x14FFFF <16> for japanese-otf, japanese-otf-uptex macros (0x170) 0x220000..0x23FFFF <17> Kana with Voiced Sound Mark (0x171) 0x240000..0x25E6E5 <17> Kana with Semi-Voiced Sound Mark (0x172) 0x25E6E6..0x25FFFF <18> Emoji Flag Sequence diff --git a/Master/texmf-dist/doc/uptex/uptex-base/02uptex_changelog_utf8.txt b/Master/texmf-dist/doc/uptex/uptex-base/02uptex_changelog_utf8.txt index 94f0096f816..8d3c614d58c 100644 --- a/Master/texmf-dist/doc/uptex/uptex-base/02uptex_changelog_utf8.txt +++ b/Master/texmf-dist/doc/uptex/uptex-base/02uptex_changelog_utf8.txt @@ -1,5 +1,24 @@ ### ChangeLog / 変更履歴 +2025.01.03 Ver2.00-20250103a + TeXLive svn r73271 base + Build/source/texk/web2c/uptexdir: + * uptex-m.ch, kanji.c: + Accept extended upTeX internal encoding also in internal + encoding EUC/SJIS (pTeX-compatible mode). + Set default kcatcode for japanese-otf-uptex macros + to 16 (kanji). + * upkcat.test, tests/upkcat{,-{e,s}}.txt,: + Update tests. + * uptex-widow.test, tests/jchwidow.tex, tests/up-jchwidow.log: + Add new tests for widow penalty originally + written by Kitagawa-san. + https://github.com/texjporg/tex-jp-build/issues/103 + * COPYRIGHT, COPYRIGHT.ja: + Update copyright year. + 00readme_uptex.txt, 01uptex_doc_utf8.txt: + Update. + 2024.12.28 Ver2.00-20241228a TeXLive svn r72803 base Build/source/texk/web2c/uptexdir: diff --git a/Master/texmf-dist/doc/uptex/uptex-base/LICENSE b/Master/texmf-dist/doc/uptex/uptex-base/LICENSE index 2b1e4fd7638..c8ef21cad41 100644 --- a/Master/texmf-dist/doc/uptex/uptex-base/LICENSE +++ b/Master/texmf-dist/doc/uptex/uptex-base/LICENSE @@ -1,6 +1,6 @@ Copyright (c) 2010 ASCII MEDIA WORKS -Copyright (c) 2016-2024 Takuji Tanaka -Copyright (c) 2016-2024 Japanese TeX Development Community +Copyright (c) 2016-2025 Takuji Tanaka +Copyright (c) 2016-2025 Japanese TeX Development Community All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/Master/texmf-dist/doc/uptex/uptex-base/README.md b/Master/texmf-dist/doc/uptex/uptex-base/README.md index eff5888af2d..1f0495af966 100644 --- a/Master/texmf-dist/doc/uptex/uptex-base/README.md +++ b/Master/texmf-dist/doc/uptex/uptex-base/README.md @@ -17,6 +17,6 @@ the 3-clause BSD license (see [LICENSE](./LICENSE)). ## Release Date -2024-12-28 +2025-01-03 Japanese TeX Development Community diff --git a/Master/texmf-dist/doc/xelatex/bidi/README b/Master/texmf-dist/doc/xelatex/bidi/README index d278ac1f0b4..923731f33e3 100644 --- a/Master/texmf-dist/doc/xelatex/bidi/README +++ b/Master/texmf-dist/doc/xelatex/bidi/README @@ -1,6 +1,6 @@ ___________________ The bidi package -v40.8 +v41.3 This package provides a convenient interface for typesetting bidirectional texts in Plain TeX and LaTeX, using XeTeX engine. @@ -25,7 +25,7 @@ The announcements for the new releases of the package will also appear in the Discussions space under the Announcements category. -Current version release date: 2024/12/28 +Current version release date: 2025/01/06 ___________________________________________ Vafa Khalighi diff --git a/Master/texmf-dist/doc/xelatex/bidi/bidi-doc.pdf b/Master/texmf-dist/doc/xelatex/bidi/bidi-doc.pdf Binary files differindex 85dfb7bca67..3d7b08ceb51 100644 --- a/Master/texmf-dist/doc/xelatex/bidi/bidi-doc.pdf +++ b/Master/texmf-dist/doc/xelatex/bidi/bidi-doc.pdf diff --git a/Master/texmf-dist/doc/xelatex/bidi/bidi.pdf b/Master/texmf-dist/doc/xelatex/bidi/bidi.pdf Binary files differindex 9694e6d759e..2a1df26726f 100644 --- a/Master/texmf-dist/doc/xelatex/bidi/bidi.pdf +++ b/Master/texmf-dist/doc/xelatex/bidi/bidi.pdf diff --git a/Master/texmf-dist/doc/xelatex/hduthesis/README.md b/Master/texmf-dist/doc/xelatex/hduthesis/README.md index 6a92084e29b..c90fe46b8d2 100644 --- a/Master/texmf-dist/doc/xelatex/hduthesis/README.md +++ b/Master/texmf-dist/doc/xelatex/hduthesis/README.md @@ -12,8 +12,12 @@ - `pg.config`: 硕士论文格式配置 +- `beamer`: HDU Beamer 主题 + - `stationery.config`: 学校信纸生成 + + - `hdu.l3doc`: 模板 `l3doc` 用户手册配置 --- @@ -34,8 +38,12 @@ Modules of `hduThesiS` provide the following supports: - `pg.config`: Configuration for postgraduate thesis' format +- `beamer`: HDU Beamer theme + - `stationery.config`: Creation of HDU's stationery + + - `hdu.l3doc`: Configuration for class's `l3doc` manual **Welcome to pull requests [here](https://github.com/myhsia/hduthesis).** diff --git a/Master/texmf-dist/doc/xelatex/hduthesis/cha/abstract.tex b/Master/texmf-dist/doc/xelatex/hduthesis/cha/abstract.tex index 3bf688b19b1..2ce7512c451 100644 --- a/Master/texmf-dist/doc/xelatex/hduthesis/cha/abstract.tex +++ b/Master/texmf-dist/doc/xelatex/hduthesis/cha/abstract.tex @@ -1,5 +1,5 @@ \begin{abstract} - \hologo{hduthesis} 是杭州电子科技大学学位论文 \hologo{LaTeX} 模板,支持学士、硕士学位论文排版. + \hologo{hduthesis} 是杭州电子科技大学学位论文 \hologo{LaTeX} 模板,支持学士、硕士学位论文排版,同时提供了学校信笺、Slides(幻灯片)模板. \end{abstract} \begin{center} diff --git a/Master/texmf-dist/doc/xelatex/hduthesis/cha/contents.tex b/Master/texmf-dist/doc/xelatex/hduthesis/cha/contents.tex index 764fa44ed47..25e9ac555b9 100644 --- a/Master/texmf-dist/doc/xelatex/hduthesis/cha/contents.tex +++ b/Master/texmf-dist/doc/xelatex/hduthesis/cha/contents.tex @@ -18,11 +18,14 @@ 其中,\file{hduthesis.cls} 是模板的核心文件,实质上并不提供主要功能,只用于对全局选项的控制加载模板的各个模块. 模板的功能模块如下 \begin{tasks}(2) - \task! \file{typeset}:排版模块,用于控制字体和公式设置. + \task \file{typeset}:字体和公式设置. + \task \file{hdu.l3doc}:用户手册模块. + \addtocounter{task}{5} \task! \file{layout}:版面模块,用于提供封面所用到的盒子和对输入文档信息的处理. + \addtocounter{task}{-6} \task \file{bc.config}:本科学位论文配置模块. \task \file{pg.config}:硕士学位论文配置模块. - \task \file{hdu.l3doc}:用户手册模块. + \task \file{beamerthemehdu}:Beamer 主题. \task \file{hdu.stationery}:信纸模块. \end{tasks} @@ -37,7 +40,7 @@ \begin{table}[htbp] \centering \renewcommand* \arraystretch {.72} - \begin{tabularx}{\linewidth}{*{9}{>{\footnotesize}X}} + \begin{tabular*}{\linewidth}{*9{@{\hspace{1ex}}>{\footnotesize}l@{\hspace{1ex}}}} \toprule \pkg{amssymb} & \pkg{bm} & \pkg{booktabs} & \pkg{cancel} & \pkg{circuitikz} & \pkg{cleveref} & @@ -45,9 +48,9 @@ \midrule \pkg{hyperref} & \pkg{listings} & \pkg{mathtools} & \pkg{multicol} & \pkg{pgfplots} & \pkg{physics2} & - \pkg{siunitx} & \multicolumn{2}{>{\footnotesize}l}{\pkg{unicode-math}}\\ + \pkg{siunitx} & \multicolumn{2}{@{}>{\footnotesize}l}{\pkg{unicode-math}}\\ \bottomrule - \end{tabularx} + \end{tabular*} \end{table} \subsection{文件结构} @@ -84,17 +87,28 @@ .2 hduthesis-layout-module.code. .2 hduthesis-bc.config-module.code. .2 hduthesis-pg.config-module.code. - .2 hduthesis-hdu.l3doc-module.code. + .2 beamerthemehdu.sty. .2 hduthesis-hdu.stationery-module.code. + % + .2 hduthesis-hdu.l3doc-module.code. .2 hdulogo.pdf, hdutitle.pdf, hdumotto.pdf, hdubadge.pdf. } -\subsubsection{许可证} +\subsubsection{许可证、入门手册} \dirtree {% - .1 ./LICENSE, README.md. + .1 ./License, README.md. } + +\subsection{模板的妥协与僵持} + +\begin{enumerate} + \item 模板的章节(\cmd{chapter}、\cmd{section}、\cmd{subsection})字体、前后间距完全按照\emph{杭电理工类毕业论文写作规范}进行设置,虽然这样的设置可能与您的审美不符,但是这是为了保证论文的格式符合学校的要求. + \item \emph{杭电理工类毕业论文写作规范} 中要求 \emph*{参考文献书写格式应符合GB7714-1987},但目前 \emph{GB7714-2015 为学术界通用格式,在已有新标准情况下旧标准理应废止使用}. 所以本模板默认使用 \pkg{gbt7714} 宏包. + \item 根据 \hologo{TeX} 的设计特性:\emph{上一页末尾有足够的空间排版额外一行文本,但在该文本后出现的公式无法完整排版在该页时,上一页末尾的最后一行文本将联同该公式一起移至下一页}. 如果您觉得这样的排版方式不符合您的审美,可以更改数值 \cmd{penalty} 的大小来控制换页算法,但是并不推荐这么做. +\end{enumerate} + \section{模板安装} \subsection{系统要求} @@ -106,14 +120,10 @@ } 本模板最低兼容发行版 \hologo{TeX} Live 2022,推荐使用 \hologo{TeX} Live 2023 或更新版本. \footnote - { 发行版 \hologo{TeX} Live 2022 中不包含 \pkg{physics2} 宏包,无法快捷输入等高括号. } -\footnote - { - 发行版 \hologo{TeX} Live 2022 中通过导言区设置中文字体伪粗体和伪斜体时可能遇到报错. 详情请见 3.2 节. - } -\footnote { - 根据 \emph{Plan for \hologo{TeX} Live 2025: 22feb: code freeze for final build, major bug fixes only; 1mar: final updates from CTAN, final doc tweaks.} 本模板将于 2025 年 2 月 22 日移除对 \hologo{TeX} Live 2022 的兼容,建议 \hologo{TeX} Live 2022 用户尽快升级至最新发行版. + 发行版 \hologo{TeX} Live 2022 中: + 1. 不包含 \pkg{physics2} 宏包. + 2. 通过导言区设置中文字体伪粗体和伪斜体时可能遇到报错. 详情请见 3.2 节. \emph{本模板将于 2025 年 2 月 22 日前移除对 \hologo{TeX} Live 2022 的兼容.} } 使用本模板生成学位论文,仅支持 \hologo{XeLaTeX} 编译;使用本模板生成信纸,支持 \hologo{pdfLaTeX} 编译. @@ -127,7 +137,7 @@ \end{verbatim} \end{framed} -Windows 系统用户无需 \verb|sudo|,请以管理员身份运行命令提示符. 有些时候,您需要手动更新 \cmd{tlmgr} +Windows 系统用户无需 \verb|sudo|,请以管理员身份运行命令提示符. 有些时候,您需要手动更新 \cmd{tlmgr} 才能正常使用 \cmd{tlmgr} 命令安装宏包. \begin{framed} \begin{verbatim} @@ -135,8 +145,6 @@ Windows 系统用户无需 \verb|sudo|,请以管理员身份运行命令提示 \end{verbatim} \end{framed} -才能正常使用 \cmd{tlmgr} 命令安装宏包. -如果您的 \hologo{TeX} 发行版不支持 \cmd{tlmgr},请尽快升级您的 \hologo{TeX} 发行版. 升级该模板,在终端(Terminal)执行以下命令即可 \begin{framed} @@ -147,7 +155,7 @@ Windows 系统用户无需 \verb|sudo|,请以管理员身份运行命令提示 \subsection{手动安装} -本模板已上传至 CTAN、GitHub 和 Gitee 平台. 可以直接从三个平台下载最新版本的 \hologo{hduthesis} 模板. 下载后,将 \file{./hduthesis/tex/} 文件夹中的所有 (runtime) 文件复制到 \file{./hduthesis/example/} 目录下,即可编译 \file{./hduthesis/example/} 文件夹中的样例. +本模板已上传至 CTAN、GitHub 和 Gitee 平台,可直接下载最新版本的 \hologo{hduthesis} 模板. 下载后,将 \file{./hduthesis/tex/} 文件夹中的所有 (runtime) 文件复制到 \file{./hduthesis/example/} 目录下,即可编译 \file{./hduthesis/example/} 中的样例. \section{全局选项} @@ -174,9 +182,7 @@ Windows 系统用户无需 \verb|sudo|,请以管理员身份运行命令提示 \end{framed} 如果你使用的是 \hologo{TeX} Live 2022,设置中文字体的伪粗体和伪斜体时可能会遇到报错. -在此发行版中,最多能对两个选项中的其一赋强度值,且被赋值选项需放在未被赋值选项前. - -更加详细的字体设置请参考 \pkg{xeCJK} 宏包的文档. +在此发行版中,最多能对两个选项中的其一赋强度值,且被赋值选项需放在未被赋值选项前. 更加详细的字体设置请参考 \pkg{xeCJK} 宏包的文档. \section{文档信息设置} @@ -185,19 +191,17 @@ Windows 系统用户无需 \verb|sudo|,请以管理员身份运行命令提示 \cs{DocInfo}\marg{keyvals} \end{syntax} - 此命令接收键值,用于设置文档信息. 键 \keys{\cmdmac~title} 用于设置论文标题,键 \keys{\cmdmac~department} 用于设置学院,键 \keys{\cmdmac~major} 用于设置专业,键 \keys{\cmdmac~class} 用于设置班级,键 \keys{\cmdmac~stdntid} 用于设置学号,键 \keys{\cmdmac~author} 用于设置作者,键 \keys{\cmdmac~supervisor} 用于设置导师,键 \keys{\cmdmac~bibsource} 用于设置插入参考文献文件源. 命令会根据输入的学号自动判断使用者为本科生/研究生. - - 命令 \cs{DocInfo} 需在导言区中执行. 完成文档信息输入后,在 \verb|\begin{document}| 后执行命令 \cs{maketitle} 会调用所设置的键值自动生成 \emph*{论文封面} 和 \emph*{目录}. + 此命令接收键值,用于设置文档信息,\emph{需在导言区中执行}. 键 \keys{\cmdmac~title} 用于设置论文标题,键 \keys{\cmdmac~department} 用于设置学院,键 \keys{\cmdmac~major} 用于设置专业,键 \keys{\cmdmac~class} 用于设置班级,键 \keys{\cmdmac~stdntid} 用于设置学号,键 \keys{\cmdmac~author} 用于设置作者,键 \keys{\cmdmac~supervisor} 用于设置导师,键 \keys{\cmdmac~bibsource} 用于设置插入参考文献文件源. 命令会根据输入的学号自动判断使用者为本科生/研究生. \end{function} -本科生输入样例如下. 需要使用键 \keys{\cmdmac~title} 设置类型为毕业设计/毕业论文,使用斜线 (/) 分隔,如 \cmd{title = 杭州电子科技大学学位论文 \hologo{LaTeX} 模板/毕业论文}. +本科生输入样例如下. 需要使用键 \keys{\cmdmac~title} 设置封面大标题,使用斜线 (/) 分隔. \begin{framed} \begin{verbatim} \DocInfo { title = 杭州电子科技大学学位论文 \hologo{LaTeX} 模板/ - 本科毕业设计, department = 理学院, major = 物理学, + 本科毕业设计, department = 理学院, major = 物理学, bibsource = reference, class = 英才班, stdntid = C668668E, author = 申智能, supervisor = 教授:葉芷晴, } @@ -208,7 +212,6 @@ Windows 系统用户无需 \verb|sudo|,请以管理员身份运行命令提示 \begin{framed} \begin{verbatim} - \documentclass { hduthesis } \DocInfo { title = 杭州电子科技大学学位论文 \hologo{LaTeX} 模板/ @@ -247,15 +250,10 @@ Windows 系统用户无需 \verb|sudo|,请以管理员身份运行命令提示 \begin{framed} \begin{verbatim} - % 本科生使用用例 - ... \maketitle ... \commitment [ example-image-a/2024-05-31 ] ... - % 研究生使用用例 - ... \maketitle ... + \begin{document} ... \maketitle \commitment - [ - example-image-a/2025-05-31, example-image-a/2025-05-31, - example-image-b/2025-06-01 - ] + [ example-image-a/2025-05-31, example-image-a/2025-05-31, + example-image-b/2025-06-01 ] ... \end{document} \end{verbatim} \end{framed} @@ -302,14 +300,24 @@ Windows 系统用户无需 \verb|sudo|,请以管理员身份运行命令提示 \section{附加模块} -\subsection{杭州电子科技大学信纸} +\subsection{用户手册} + +本手册为 \cls{hduthesis} 加载 \pkg{l3doc} 模块后生成,此模块无需 \pkg{agreed} 选项. + +\begin{framed} + \begin{verbatim} + \documentclass [ mode = l3doc ] { hduthesis } + \end{verbatim} +\end{framed} + +\subsection{杭州电子科技大学信笺} -加载全局选项 \pkg{stationery},并进行文档信息设置,即可生成信纸. 可用于推荐信撰写或生成笔记纸. +加载模块 \pkg{stationery},并进行文档信息设置,即可生成信纸. 可用于推荐信撰写或生成笔记纸. 此模块无需 \pkg{agreed} 选项. \begin{framed} \begin{verbatim} - \documentclass [ stationery ] { hduthesis } + \documentclass [ mode = stationery ] { hduthesis } \end{verbatim} \end{framed} @@ -326,30 +334,46 @@ Windows 系统用户无需 \verb|sudo|,请以管理员身份运行命令提示 date = {23\textsuperscript{th} December, 2024}, watermark = true } + \begin{document} \maketitle ... \end{document} \end{verbatim} \end{framed} 若要在信纸上添加笔记线,可使用命令 \cs{noteLine}\oarg{num},其可选参数接收笔记线的数量,默认值为20. 下两页分别为生成的信纸和笔记纸样例,可在终端执行 \cmd{texdoc hduthesis-stationery} 获取此样例文件. -\subsection{用户手册} +\includepdf[pages = -, nup = 1x2, angle = -90, frame, linktodoc, scale = 0.96, delta = 0in .25in] + {/Users/myhsia/Documents/GitHub/hduthesis/example/hduthesis-stationery} + +\subsection{Beamer 主题} -本手册为 \cls{hduthesis} 加载选项 \pkg{l3doc} 后生成,此模块无需 \pkg{agreed} 选项. +本模板中存在独立的 Beamer 主题 \pkg{hdu},用于生成杭州电子科技大学风格的 Beamer 幻灯片. 由于本主题为杭州电子科技大学专属,所以该主题暂不开放更改主题色杭电蓝和Logo. + +加载模块 \pkg{beamer},并进行文档信息设置,即以 \pkg{hdu} 为主题制作Beamer. +此模块无需 \pkg{agreed} 选项. \begin{framed} \begin{verbatim} - \documentclass [ l3doc ] { hduthesis } + \documentclass [ mode = beamer ] { hduthesis } \end{verbatim} \end{framed} -\includepdf[pages = -, nup = 1x2, angle = -90, frame, linktodoc, scale = 0.96, delta = 0in .25in] - {/Users/myhsia/Documents/GitHub/hduthesis/example/hduthesis-stationery} - -\subsection{Beamer 主题} +与学士 / 硕士学位论文文档信息设置类似,使用 \cs{DocInfo} 命令,对信件主题、发件人、邮箱、日期和水印进行设置. 此时 \cs{DocInfo} 命令接受键 +\keys{\cmdmac~title} \keys{\cmdmac~subtitle} \keys{\cmdmac~author} \keys{\cmdmac~date} \keys{\cmdmac~supervisor} \keys{\cmdmac~reference}. 下页为生成Beamer的样例. -本模板中存在独立的 Beamer 主题 \cls{hdu},用于生成杭州电子科技大学风格的 Beamer 幻灯片. 由于本主题为杭州电子科技大学专属,所以该主题暂不开放更改主题色杭电蓝和Logo. +\begin{framed} + \begin{verbatim} + \DocInfo + { + title = Research and Application of Micromagnetic Simulation + Based on Landau-Lifshitz-Gilbert Equation, + subtitle = hdu Undergraduate Thesis Proposal, + author = SAN Chi Nan (C668668E0), + date = {\today{} / Building 6, Room 321}, + supervisor = Prof. YIP Tsz Ching, + bibsource = reference.bib, + } + \end{verbatim} +\end{framed} \begin{center} - \frame{\includegraphics[width = .9\linewidth, page = 1]{/Users/myhsia/Documents/GitHub/hduthesis/example/hduthesis-beamer.pdf}} - \par - \frame{\includegraphics[width = .9\linewidth, page = 2]{/Users/myhsia/Documents/GitHub/hduthesis/example/hduthesis-beamer.pdf}} -\end{center}
\ No newline at end of file + \includepdf[pages = -, nup = 2x4, frame, linktodoc, scale = 0.96, delta = .25in .2in]{/Users/myhsia/Documents/GitHub/hduthesis/example/hduthesis-beamer.pdf} +\end{center} diff --git a/Master/texmf-dist/doc/xelatex/hduthesis/cha/source.tex b/Master/texmf-dist/doc/xelatex/hduthesis/cha/source.tex index c92777877f5..7d7821f3e17 100644 --- a/Master/texmf-dist/doc/xelatex/hduthesis/cha/source.tex +++ b/Master/texmf-dist/doc/xelatex/hduthesis/cha/source.tex @@ -1,6 +1,6 @@ \ExplSyntaxOn \pagecolor{black!\fpeval{100-3200/255}} -\color{black!10} \color_select:n{black!10} \appendix +\appendix \colorlet{bg}{black!\fpeval{100-2400/255}} \hypersetup { filecolor = DarkGreen!40, urlcolor = MidnightBlue!40, @@ -8,10 +8,12 @@ \cfoot{\color_select:n{black!10} \thepage} \lhead{} \rhead{} \let \headrule \relax \pagestyle{fancy} +\color{black!10} \color_select:n{black!10} \ExplSyntaxOff +\changefontsize[10.5pt]{8.5pt} \section{实现细节} -恭喜你已经阅读到了这部分!如你所见,页面已经变成了程序员视力友好颜色. 下面这些内容面向 \hologo{LaTeX} 宏包开发者或者对 \hologo{hduthesis} 开发感兴趣的用户,如果您有任何意见或建议或想法,都欢迎到 \href{https://github.com/myhsia/hduthesis/issues}{GitHub} 提交Issue. 您对模板开发或者本文档的撰写的任何贡献都会受到诚挚欢迎! +恭喜你已经阅读到了这部分!如你所见,页面已经变成了程序员视力友好颜色. 下面这些内容面向 \hologo{LaTeX} 宏包开发者或者对 \hologo{hduthesis} 开发感兴趣的用户\footnote{\color{black!10}本部分由 GitHub Copilot 生成并由作者人工校验.},如果您有任何意见或建议或想法,都欢迎到 \href{https://github.com/myhsia/hduthesis/issues}{GitHub} 提交Issue. 您对模板开发或者本文档的撰写的任何贡献都会受到诚挚欢迎! \setlength {\parindent} {0em} diff --git a/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a1.tex b/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a1.tex index 4bb5fd10bef..dda42894425 100644 --- a/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a1.tex +++ b/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a1.tex @@ -19,7 +19,6 @@ \end{minted} 兼容 \hologo{TeX} Live 2022 及之后的版本. 当对应命令不存在时,在已有命令基础上新增变体 - \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \cs_if_exist:NF \seq_set_split:Nne { \cs_generate_variant:Nn \seq_set_split:Nnn { Nne } } @@ -31,50 +30,50 @@ { \cs_generate_variant:Nn \tl_gset:Nn { Ne } } \end{minted} -定义新命令 \cs{hduthesis_msg_new:nn} 和 \cs{hduthesis_msg_error:nn} 用于新增错误消息和将错误消息广播到 Workspace +定义新命令 \cs{hduthesis_msg_new:nn}、\cs{hduthesis_msg_error:nn} 和 \cs{hduthesis_msg_warning:nn} 用于新增错误/警告消息,并将消息广播到 Workspace. +同时为 \cs{hduthesis_msg_error:nn} 和 \cs{hduthesis_msg_warning:nn} 定义变体 \cs{hduthesis_msg_error:nx} 和 \cs{hduthesis_msg_warning:nx},用于在消息中使用参数时展开参数 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \cs_new_protected:Npn \hduthesis_msg_new:nn #1#2 { \msg_new:nnn { hduthesis } {#1} {#2} } \cs_new_protected:Npn \hduthesis_msg_error:nn #1#2 { \msg_error:nnn { hduthesis } {#1} {#2} } + \cs_generate_variant:Nn \hduthesis_msg_error:nn { nx } + \cs_new_protected:Npn \hduthesis_msg_warning:nn #1#2 + { \msg_warning:nnn { hduthesis } {#1} {#2} } + \cs_generate_variant:Nn \hduthesis_msg_warning:nn { nx } \end{minted} -新增错误消息:用户协议 +新增错误消息 \cs{not found module}、\cs{unknown mode} 和 \cs{Users Agreement},分别对应``模块未找到''、``未知模式''和``用户协议'' \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} - \hduthesis_msg_new:nn { 用户协议 } + \hduthesis_msg_new:nn { not found module } + { The~hduthesis~module~`#1'~not~found. } + \hduthesis_msg_new:nn { unknown mode } + { Unknown~hduthesis~mode~`#1',~ loading~mode~`thesis'~instead. } + \hduthesis_msg_new:nn { Users Agreement } { \exp_not:n { - hduThesiS~ 编译受阻.~ - 使用模板前请认真阅读模板说明文档封面上的「用户协议」~ - 模板作者不对使用本模板产生的格式审查问题负责~ - 添加选项 `agreed'[\documentclass[agreed]{hduthesis}]~ - 即可顺利编译并默认代表您已同意本协议.~ 祝君科研顺利!~ - 如遇问题,可邮件反馈至 xiamyphys@gmail.com. + 编译受阻!~ + 使用模板前请阅读用户手册封面上的「用户协议」~ + !!!模板作者(@myhsia)不对使用本模板产生的格式审查问题负责!!!~ + 如果您同意用户协议,在全局选项中添加 `agreed' 即可解除本错误~ + 欢迎您通过邮件(myhsia@hdu.edu.cn)或GitHub提交反馈意见 } } \end{minted} -对命令 \cs{hduthesis_msg_error:nn} 新增 \cmd{nx} 变体 -\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} - \cs_generate_variant:Nn \hduthesis_msg_error:nn { nx } -\end{minted} - -新增错误消息:未找到模块 -\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} - \hduthesis_msg_new:nn { not found module } - { The~hduthesis~module~`#1'~not~found. } -\end{minted} - -定义命令 \cs{hduthesis_load_module:n} 用于加载模块,若模块不存在则输出错误消息 +定义新命令 \cs{hduthesis_load_module:n} 用于加载模块,若模块不存在则报错 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \cs_new_protected_nopar:Npn \hduthesis_load_module:n #1 { - \file_if_exist_input:nF { hduthesis-##1-module.code.tex } - { \hduthesis_msg_error:nn { not found module } {##1} } + \clist_map_inline:nn {#1} + { + \file_if_exist_input:nF { hduthesis-##1-module.code.tex } + { \hduthesis_msg_error:nn { not found module } {##1} } + } } \end{minted} -定义命令 \cs{hduthesis_provide_module:n} 用于提供模块 +定义新命令 \cs{hduthesis_provide_module:n} 用于提供模块 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \cs_new_protected_nopar:Npn \hduthesis_provide_module:n #1 { @@ -85,19 +84,18 @@ \end{minted} 定义新数组 \cs{g__hdu_base_class_options_clist},用于存储文档类选项 -\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines, breaklines ] {tex} \clist_new:N \g__hdu_base_class_options_clist \end{minted} 定义文档类选项的键: \begin{enumerate} \item 布尔(Bool)值 \keys{\cmdmac~ agreed}:用户是否同意用户协议,初始值 \cmd{false}. 一旦输入 \cmd{agreed} 选项,则将 \cmd{agreed} 设置为 \cmd{true},即 \cmd{agreed} 等价于 \cmd{agreed = true} - \item 布尔(Bool)值 \keys{\cmdmac~ l3doc}:是否启用 \cls{l3doc} 文档类,初始值 \cmd{false}. 一旦输入 \cmd{l3doc} 选项,则将 \cmd{l3doc} 设置为 \cmd{true},即 \cmd{l3doc} 等价于 \cmd{l3doc = true} - \item 布尔(Bool)值 \keys{\cmdmac~ stationery}:是否启用 \cls{letter} 文档类,初始值 \cmd{false}. 一旦输入 \cmd{stationery} 选项,则将 \cmd{stationery} 设置为 \cmd{true},即 \cmd{stationery} 等价于 \cmd{stationery = true} + \item 令牌(token list)\keys{\cmdmac~ mode}:模式,可选值为 \cmd{thesis}、\cmd{l3doc}、\cmd{stationery} 和 \cmd{beamer} \item 令牌(token list)\keys{\cmdmac~ math-font}:数学字体 - \item 令牌(token list) \keys{\cmdmac~ CJKmain-font}:中文主字体 - \item 令牌(token list) \keys{\cmdmac~ CJKsans-font}:中文无衬线字体 - \item 令牌(token list) \keys{\cmdmac~ CJKmono-font}:中文等宽字体 + \item 令牌(token list)\keys{\cmdmac~ CJKmain-font}:中文主字体 + \item 令牌(token list)\keys{\cmdmac~ CJKsans-font}:中文无衬线字体 + \item 令牌(token list)\keys{\cmdmac~ CJKmono-font}:中文等宽字体 \item 未知选项 \keys{\cmdmac~ unknown}:将未知选项交给 \cs{__hduthesis_unknown_option:n} 处理 \end{enumerate} \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} @@ -106,12 +104,7 @@ agreed .bool_set:N = \g__hduthesis_agreement_bool, agreed .initial:n = false, agreed .default:n = true, - l3doc .bool_set:N = \g__hduthesis_doc_bool, - l3doc .initial:n = false, - l3doc .default:n = true, - stationery .bool_set:N = \g__hduthesis_stationery_bool, - stationery .initial:n = false, - stationery .default:n = true, + mode .tl_set:N = \g__hduthesis_mode_tl, math-font .tl_set:N = \g__hduthesis_math_font, CJKmain-font .tl_set:N = \g__hduthesis_main_CJK_font, CJKsans-font .tl_set:N = \g__hduthesis_sans_CJK_font, @@ -120,20 +113,18 @@ } \end{minted} -定义命令 \cs{__hduthesis_unknown_option:n} 用于处理未知选项 - -若未知选项为空,则将 \cs{l_keys_key_str} 加入 \cs{g__hdu_base_class_options_clist} 列表;否则设置 \cs{l_keys_key_str} 为未知选项,并将其加入 \cs{g__hdu_base_class_options_clist} 列表 +定义新命令 \cs{__hduthesis_unknown_option:n} 用于处理未知选项. 若未知选项为空,则将 \cs{l_keys_key_str} 加入 \cs{g__hdu_base_class_options_clist} 列表;否则设置 \cs{l_keys_key_str} 为未知选项,并将其加入 \cs{g__hdu_base_class_options_clist} 列表 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \cs_new_protected_nopar:Npn \__hduthesis_unknown_option:n #1 { - \tl_if_empty:nTF { #1 } - { - \clist_gput_right:NV \g__hdu_base_class_options_clist \l_keys_key_str - } - { - \exp_args:NNx \clist_gput_right:Nn \g__hdu_base_class_options_clist - { \l_keys_key_str = \exp_not:n {#1} } - } + \tl_if_empty:nTF {#1} + { + \clist_gput_right:NV \g__hdu_base_class_options_clist \l_keys_key_str + } + { + \exp_args:NNx \clist_gput_right:Nn \g__hdu_base_class_options_clist + { \l_keys_key_str = \exp_not:n {#1} } + } } \end{minted} @@ -142,22 +133,34 @@ \ProcessKeyOptions [ hduthesis / classoption ] \end{minted} -若启用 \cmd{l3doc} 选项,加载 \cls{l3doc} 文档类为基底,加载 \file{hdu.l3doc} 模块并结束输入 +若令牌 \cs{g__hduthesis_mode_tl} 为空或者不是 \cmd{thesis}、\cmd{l3doc}、\cmd{stationery} 或 \cmd{beamer},则报错``未知模式'' +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \bool_if:nT + { + !\str_if_empty_p:N \g__hduthesis_mode_tl && + !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { thesis } && + !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { l3doc } && + !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { stationery } && + % !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { exam } && + !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { beamer } + } + { \hduthesis_msg_warning:nx { unknown mode } { \g__hduthesis_mode_tl } } +\end{minted} +若模式为 \cmd{l3doc},则使用 \cls{l3doc} 文档类,并加载 \file{hdu.l3doc} 模块 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} - \bool_if:NT \g__hduthesis_doc_bool + \str_if_eq:eeT { \g__hduthesis_mode_tl } { l3doc } { - \PassOptionsToClass { 11pt, letterpaper } { l3doc } + \PassOptionsToClass { 11pt, letterpaper, kernel } { l3doc } \exp_args:NNV \LoadClass [ \g__hdu_base_class_options_clist ] { l3doc } \hduthesis_load_module:n { hdu.l3doc } \endinput } \end{minted} -若启用 \cmd{stationery} 选项,加载 \cls{letter} 文档类为基底,加载 \file{hdu.stationery} 模块并结束输入 - +若模式为 \cmd{stationery},则使用 \cls{letter} 文档类,并加载 \file{hdu.stationery} 模块 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} - \bool_if:NT \g__hduthesis_stationery_bool + \str_if_eq:eeT { \g__hduthesis_mode_tl } { stationery } { \PassOptionsToClass { 12pt } { letter } \exp_args:NNV \LoadClass [ \g__hdu_base_class_options_clist ] { letter } @@ -166,55 +169,58 @@ } \end{minted} -为基本文档类 \cls{ctexrep} 添加选项 \keys{a4paper, zihao = -4},为 \pkg{xeCJK} 宏包添加选项 \keys{quiet, no-math},加载 \cls{ctexrep} 文档类为基底,并用 \cs{exp_args:NNV} 将未知选项展开加载到 \cls{ctexrep} 文档类上 -\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} - \PassOptionsToClass { a4paper, zihao = -4 } { ctexrep } - \PassOptionsToPackage { quiet, no-math } { xeCJK } - \exp_args:NNV \LoadClass [ \g__hdu_base_class_options_clist ] { ctexrep } -\end{minted} +% % \str_if_eq:eeT { \g__hduthesis_mode_tl } { exam } +% % { +% % \exp_args:NNV \LoadClass [ \g__hdu_base_class_options_clist ] { article } +% % \hduthesis_load_module:n { hdu.exam } +% % \endinput +% % } -如果用户未确认用户协议,输出错误消息,并不加载 \pkg{hyperref} 宏包,以免因``遇到报错而停止编译''而产生额外的 \pkg{hyperref} 警告. 否则,加载 \pkg{hyperref} 宏包,设置 \pkg{hyperref} 宏包选项 +若模式为 \cmd{beamer},则使用 \cls{beamer} 文档类,并加载 \file{hdu.beamer} 模块 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} - \bool_if:NTF \g__hduthesis_agreement_bool + \str_if_eq:eeT { \g__hduthesis_mode_tl } { beamer } { - \RequirePackage{hyperref} - \pdfstringdefDisableCommands - { - \def \cite#1 {<#1>} - \def \hologoRobust#1 {<#1>} - } - \AtBeginDocument - { \hypersetup { hidelinks, pdfproducer = hduThesiS~by~Mingyu~Xia } } - } { \hduthesis_msg_error:nn { 用户协议 } { 未确认 } } + \PassOptionsToClass { aspectratio = 2013 } { beamer } + \exp_args:NNV \LoadClass [ \g__hdu_base_class_options_clist ] { beamer } + \usetheme{hdu} + \endinput + } \end{minted} -预加载部分常用包,设置 \pkg{pgfplots} 宏包版本,设置 \pkg{hologo} 宏包字体,设置 \cs{graphicx} 包的相对路径 +若模式为 \cmd{thesis} 或者是除了 \cmd{l3doc}、\cmd{stationery} 和 \cmd{beamer} 之外的未知模式,则使用 \cls{ctexrep} 文档类. 如果用户未同意用户协议,则报错``Users Agreement'';如果用户同意用户协议,则加载 \pkg{hyperref} 宏包,并对其进行设置.\footnote{\color{black!10}此举是防止因``遇到``Users Agreement''报错而停止编译产生在只进行一次编译的情况下的\pkg{hyperref}警告} 加载 \file{typeset} 和 \file{layout} 模块,根据学号长度加载 \file{bc.config} 或 \file{pg.config} 模块 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} - \RequirePackage { siunitx, circuitikz, pgfplots, listings, - hologo, lipsum, zhlipsum, booktabs, multicol } - \pgfplotsset { compat = newest } - \hologoFontSetup { general = \sffamily } - \graphicspath + \bool_if:nT { - {./figure/}{./figures/}{./image/}{./images/} - {./graphics/}{./graphic/}{./pictures/}{./picture/} + \str_if_eq_p:ee { \g__hduthesis_mode_tl } { thesis } || + !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { l3doc } || + !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { stationery } || + % !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { exam } || + !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { beamer } } -\end{minted} - -加载 \cmd{typeset} 和 \cmd{layout} 模块. -\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} - \hduthesis_load_module:n { typeset } - \hduthesis_load_module:n { layout } -\end{minted} - -定义命令 \cs{__hduthesis_docinfo_degree_if_aux} 用于判断学号长度,若学号长度为 8,则加载 \cmd{bc.config} 模块;否则加载 \cmd{bc.config} 或 \cmd{pg.config} 模块. 此命令将用在 \file{hduthesis-docinfo-module.code} 模块中,因为学号长度的判断必须发生在设置文档信息后 - -\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} - \cs_new_protected:Nn \__hduthesis_docinfo_degree_if_aux: { - \int_compare:nNnTF { \tl_count:N \l__docinfo_stdntid_tl } = { 8 } - { \hduthesis_load_module:n { bc.config } } - { \hduthesis_load_module:n { pg.config } } + \PassOptionsToClass { a4paper, zihao = -4 } { ctexrep } + \PassOptionsToPackage { quiet, no-math } { xeCJK } + \exp_args:NNV \LoadClass [ \g__hdu_base_class_options_clist ] { ctexrep } + \bool_if:NTF \g__hduthesis_agreement_bool + { + \RequirePackage{hyperref} + \pdfstringdefDisableCommands + { + \def \cite#1 {<#1>} + \def \hologoRobust#1 {<#1>} + } + \AtBeginDocument + { \hypersetup { hidelinks, pdfproducer = hduThesiS~by~Mingyu~Xia } } + } { \hduthesis_msg_error:nn { Users Agreement } { Unconfirmed } } + \hduthesis_load_module:n { typeset } + \hduthesis_load_module:n { layout } + \cs_new_protected:Nn \__hduthesis_docinfo_degree_if_aux: + { + \int_compare:nNnTF { \tl_count:N \l__docinfo_stdntid_tl } = { 8 } + { \hduthesis_load_module:n { bc.config } } + { \hduthesis_load_module:n { pg.config } } + } + \endinput } \end{minted} diff --git a/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a2.tex b/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a2.tex index 8c78b072a84..e43d9db896c 100644 --- a/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a2.tex +++ b/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a2.tex @@ -5,6 +5,27 @@ \hduthesis_provide_module:n {typeset} \end{minted} +调用 \pkg{circuitikz}, \pkg{pgfplots}, \pkg{listings}, \pkg{hologo}, \pkg{lipsum}, \pkg{zhlipsum}, \pkg{booktabs}, \pkg{multicol} 宏包 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \RequirePackage { circuitikz, pgfplots, listings, hologo, + lipsum, zhlipsum, booktabs, multicol } +\end{minted} + +设置 \pkg{pgfplots} 宏包的兼容性为最新版本,设置 \pkg{hologo} 宏包的全局字体为无衬线字体 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \pgfplotsset { compat = newest } + \hologoFontSetup { general = \sffamily } +\end{minted} + +设置图片文件夹的常用相对路径 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \graphicspath + { + {./figure/}{./figures/}{./image/}{./images/} + {./graphics/}{./graphic/}{./pictures/}{./picture/} + } +\end{minted} + 设置行间距 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \linespread{1.39} @@ -33,7 +54,7 @@ [ Extension = .otf, BoldItalicFont = *-bolditalic, UprightFont = *-regular, BoldFont = *-bold, - ItalicFont = *-italic, Scale = .9, + ItalicFont = *-italic, Scale = .9 ] \end{minted} @@ -47,7 +68,7 @@ \file_if_exist:nTF { physics2.sty } { \RequirePackage{physics2} - \usephysicsmodule{ ab, braket, ab.legacy, op.legacy, bm-um.legacy } + \usephysicsmodule{ ab, braket, op.legacy, bm-um.legacy } } { \RequirePackage{bm} } \end{minted} @@ -82,7 +103,7 @@ { \exp_last_unbraced:No \setCJKmonofont \g__hduthesis_mono_CJK_font } \end{minted} -结束 \file{hduthesis-typeset-module.code} 文件 +结束模块 \file{hduthesis-typeset-module.code} 文件 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \endinput -\end{minted} +\end{minted}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a3.tex b/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a3.tex index 979f48225f4..a42d9452011 100644 --- a/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a3.tex +++ b/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a3.tex @@ -154,7 +154,7 @@ } \end{minted} -定义处理文档信息的辅助命令. 其中论文标题与作者信息为一维数组,指导教师信息为二维数组. +定义处理文档信息的辅助命令. 其中论文标题与作者信息为一维数组,指导教师信息为二维数组. 如果用户未同意用户协议,则清空参考文献来源,以避免加载 \pkg{biblatex} 宏包. 如果参考文献来源为空,则定义 \cs{printbibliography} 命令为输出参考文献空章节,并定义 \cs{cite} 命令为输出参考文献引用标记. 否则加载 \pkg{gbt7714} 宏包,设置参考文献样式为 \texttt{gbt7714-numerical},定义 \cs{printbibliography} 命令为输出参考文献并将其加入目录. \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \cs_set_protected_nopar:Nn \__hduthesis_docinfo_process_aux: { @@ -175,20 +175,25 @@ \bool_if:NF \g__hduthesis_agreement_bool { \tl_clear:N \l__docinfo_bibsource_tl } \tl_if_empty:NTF \l__docinfo_bibsource_tl - { - \newcommand*\printbibliography{\chapter*{参考文献}} - \renewcommand*\cite[1]{\textsuperscript{[##1]}} - } - { - \RequirePackage[sort&compress]{gbt7714} - \bibliographystyle{gbt7714-numerical} - \dim_set:Nn \bibsep {.35ex} - \newcommand*\printbibliography - { - \nocite{*} \bibliography { \l__docinfo_bibsource_tl } - \addcontentsline{toc}{chapter}{参考文献} - } - } + { + \newcommand*\printbibliography{\chapter*{参考文献}} + \newcounter {citecount} + \renewcommand*\cite[1] + { + \refstepcounter{citecount} + \textsuperscript{[\thecitecount]} + } + } + { + \RequirePackage[sort&compress]{gbt7714} + \bibliographystyle{gbt7714-numerical} + \dim_set:Nn \bibsep {.35ex} + \newcommand*\printbibliography + { + \bibliography { \l__docinfo_bibsource_tl } + \addcontentsline{toc}{chapter}{参考文献} + } + } } \end{minted} diff --git a/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a4.tex b/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a4.tex index e6f25c28e80..30e1373c56e 100644 --- a/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a4.tex +++ b/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a4.tex @@ -1,4 +1,240 @@ \subsection{\file{hduthesis-bc.config-module.code} 的实现} -\cmd{bc.config} 模块实现的过程略,主要是对前面定义的命令进行调用,并通过 \cs{ctexset} -或对标准文档类 \cls{report} 中的命令进行重定义.
\ No newline at end of file +由于模块 \file{bc.config} 是通过命令 \cs{__hduthesis_docinfo_degree_if_aux:} 在命令 \cs{DocInfo} 中加载的,所以需要在此模块前后用 \cmd{\ExplSyntaxOn \makeatletter} 和 \cmd{\makeatother \ExplSyntaxOff} 包裹. + +提供模块 \file{bc.config} 文件 +\begin{minted} [ linenos, bgcolor = bg, breaklines ] {tex} + \hduthesis_provide_module:n {bc.config} +\end{minted} + +设置页面布局、页眉、目录页码格式 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \geometry { top = 3.25cm, bottom = 2.4cm, left = 4cm, right = 2cm, + headheight = 15pt, headsep = .72cm } + \fancyhead[C] + { \raisebox { .12ex } { \small 杭州电子科技大学 \l__docinfo_entitle_tl } } + \hook_gput_code:nnn {cmd/tableofcontents/before} { . } + { + \clearpage + \pagenumbering{Roman} \cfoot{\small \thepage} + } + \hook_gput_code:nnn { cmd/tableofcontents/after } { . } + { + \thispagestyle{fancy} \clearpage + \pagenumbering{arabic} \cfoot{} + } +\end{minted} + +使用辅助函数 \cs{__hduthesis_cover_bc_aux:} 重定义 \cs{maketitle} 命令,用于生成封面,并对其单独设置页面布局 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \RenewDocumentCommand \maketitle {} + { + \newgeometry{ margin = 3cm } + \begin{titlepage} + \__hduthesis_cover_bc_aux: + \end{titlepage} + \restoregeometry + } +\end{minted} + +定义 \cs{l__hduthesis_grade_int} 保存毕业年份,根据当前月份判断毕业年份:如果当前月份小于 9 月,则今年毕业;否则判定为明年毕业 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \int_new:N \l__hduthesis_grade_int + \int_set:Nn \l__hduthesis_grade_int + { + \int_compare:nNnTF {\c_sys_month_int} < 9 + {\c_sys_year_int} {\int_eval:n {\c_sys_year_int + 1}} + } +\end{minted} + +使用辅助函数 \cs{__hduthesis_cover_bc_aux:} 重定义封面页的内容 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \cs_new_protected_nopar:Nn \__hduthesis_cover_bc_aux: + { + \begin{center} + \vspace*{14\p@} + \includegraphics[ width = .64\linewidth ]{hdutitle} + \par \vspace*{36\p@} + \scalebox{2.75} + { + \textbf + { + \__hduthesis_cover_spread_box:nn + { .205\paperwidth } { \l__docinfo_entitle_tl } + } + } + \par \vspace*{1.5\baselineskip} + { \LARGE (\int_use:N \l__hduthesis_grade_int \bfseries 届) } + \par \vspace*{3.0\baselineskip} + \begin{tabular} + { + >{\large\bfseries}p{5.5\ccwd}@{} + >{\large\centering\arraybackslash\kaishu}p{.65\linewidth}@{} + } + \__hduthesis_cover_spread_box:nn { 4\ccwd } { 题目 } & + \__hduthesis_cover_center_box:nn { .95\linewidth } { \@title }\\[5.2ex] + \__hduthesis_cover_spread_box:nn { 4\ccwd } { 学院 } & + \__hduthesis_cover_center_box:nn { .95\linewidth } + { \l__docinfo_department_tl }\\[5.2ex] + \__hduthesis_cover_spread_box:nn { 4\ccwd } { 专业 } & + \__hduthesis_cover_center_box:nn { .95\linewidth } + { \l__docinfo_major_tl }\\[5.2ex] + \__hduthesis_cover_spread_box:nn { 4\ccwd } { 班级 } & + \__hduthesis_cover_center_box:nn { .95\linewidth } + { \l__docinfo_class_tl }\\[5.2ex] + \__hduthesis_cover_spread_box:nn { 4\ccwd } { 学号 } & + \__hduthesis_cover_center_box:nn { .95\linewidth } + { \l__docinfo_stdntid_tl }\\[5.2ex] + \__hduthesis_cover_spread_box:nn { 4\ccwd } { 学生姓名 } & + \__hduthesis_cover_center_box:nn { .95\linewidth } { \@author }\\[5.2ex] + \__hduthesis_cover_spread_box:nn { 4\ccwd } { 指导教师 } & + \__hduthesis_cover_center_box:nn { .95\linewidth } + { \l__docinfo_cnsupervisor_tl \quad \l__docinfo_cnrole_tl }\\[5.2ex] + \__hduthesis_cover_spread_box:nn { 4\ccwd } { 完成日期 } & + \__hduthesis_cover_center_box:nn { .95\linewidth } + { + \textsf{\int_use:N \c_sys_year_int} 年 + \textsf{\int_use:N \c_sys_month_int} 月 + } + \end{tabular} + \end{center} + } +\end{minted} + +使用辅助函数 \cs{__hduthesis_commitment_bc_aux:} 定义 \cs{commitment} 命令,用于生成承诺书页面. 该命令接收一个可选参数,用于添加签名图片与日期 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \NewDocumentCommand \commitment { O{} } + { + \newgeometry{ margin = 3cm } + \titlepage + \__hduthesis_commitment_bc_aux:n {#1} + \endtitlepage + \restoregeometry + } +\end{minted} + +使用辅助函数 \cs{__hduthesis_commitment_bc_aux:} 定义承诺书页面的内容 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \cs_new_protected_nopar:Npn \__hduthesis_commitment_bc_aux:n #1 + { + \vspace*{65\p@} + \begin{center} + \@beginparpenalty \@lowpenalty + \Large \textsf + { \bfseries \__hduthesis_cover_spread_box:nn { 6\ccwd }{ 诚信承诺 } } + \@endparpenalty \@M + \end{center} + \vspace*{.4\baselineskip} \par + \linespread{2.1} + { \semilarge + 我谨在此承诺:本人所写的毕业论文《\@title 》均系本人独立完成, + 没有抄袭行为,凡涉及其他作者的观点和材料,均作了注释,若有不实,后果由本人承担。 + \par\vspace*{\baselineskip} \bfseries\sffamily + \hskip.48\linewidth 承诺人(签名): + \__hduthesis_signature_process_aux:nnn {#1}{1}{0} + \tl_if_empty:NF \l__hduthesis_signature_figure_tl + { + \signature { \l__hduthesis_signature_figure_tl } + \tl_clear:N \l__hduthesis_signature_figure_tl + } + \par \vspace*{.5\baselineskip} + \hskip \dim_eval:n { .48\linewidth - 1em } + \makebox [ 3em ] + { \__hduthesis_signature_process_aux:nnn {#1}{1}{1} } 年 + \makebox [ 2em ] + { \__hduthesis_signature_process_aux:nnn {#1}{1}{2} } 月 + \makebox [ 2em ] + { \__hduthesis_signature_process_aux:nnn {#1}{1}{3} } 日 + } + } +\end{minted} + +重新定义摘要环境,该环境接收一个可选参数,用于生成中英文摘要页面,默认为英文页面 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \RenewDocumentEnvironment {abstract} { O{en} } + { + \str_if_eq:nnT {#1} {en} + { + \tl_set:Nn \l__keywords_name_tl {Keywords:~} + \tl_set:Nn \l__keywords_sep_tl {;~} + \@beginparpenalty\@lowpenalty + \chapter*{\normalfont\bfseries ABSTRACT} + } + \str_if_eq:nnT {#1} {cn} + { + \tl_set:Nn \l__keywords_name_tl {\textsf{关键词:}} + \tl_set:Nn \l__keywords_sep_tl {;} + \@beginparpenalty\@lowpenalty + \chapter*{摘\qquad 要} + } + } + { + \tl_clear:N \l__abstract_name_tl + \cfoot{} \clearpage + } +\end{minted} + +新建一个列表 \cs{l__abstract_keywords_clist} 保存关键词,定义 \cs{keywords} 命令,通过 \env{abstract} 环境的可选参数来以不同的分隔符输出关键词 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \clist_new:N \l__abstract_keywords_clist + \NewDocumentCommand \keywords { m } + { + \par \vspace*{\baselineskip} + \noindent\textbf{\l__keywords_name_tl} + \clist_set:Nn \l__abstract_keywords_clist {#1} + \clist_use:Nn \l__abstract_keywords_clist {\l__keywords_sep_tl} + } +\end{minted} + +加载 \pkg{tocloft} 宏包,重新定义目录页的格式 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \RequirePackage{tocloft} + \renewcommand \contentsname {\hfill 目 \qquad 录 \hfill} + \renewcommand* \cfttoctitlefont {\sffamily\semiLarge} + \dim_set:Nn \cftbeforetoctitleskip {3pt} + \dim_set:Nn \cftaftertoctitleskip {24pt} + \dim_set:Nn \cftbeforechapskip {1pt} + \dim_set:Nn \cftbeforesecskip {-.2pt} +\end{minted} + +对 \hologo{LaTeX2e} 中用于生成目录导向线的宏 \cs{@dottedtocline} 打补丁,将导向线改为 ``dash'' 样式 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \patchcmd { \@dottedtocline } + { \leaders \hbox { $\m@th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$ } } + { \kern 4pt \leaders \hbox { $\m@th\mkern .4 mu\hbox{-}\mkern .4 mu$ } } {}{} +\end{minted} + +更改目录章节的项目间距、字体格式、导向线密度和目录深度 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \renewcommand* \l@chapter {\@dottedtocline{1}{0em}{1.6em}} + \renewcommand* \l@section {\@dottedtocline{1}{2.3em}{2.1em}} + \renewcommand* \@dotsep {1.7} + \renewcommand* \@pnumwidth {2.5ex} + \renewcommand* \cftchapfont {\normalfont} + \setcounter{tocdepth}{1} +\end{minted} + +使用 \pkg{ctex} 宏包设置章节标题格式 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \ctexset + { + chapter = + { + fixskip = true, name = {}, beforeskip = 32pt, afterskip = 32pt, + format+ = \sffamily\semiLarge, pagestyle = fancy + }, + section = + { + fixskip = true, format = \sffamily\large, beforeskip = 2ex, afterskip = 2.75ex + }, + subsection = + { + fixskip = true, format = \sffamily\semilarge, beforeskip = 2ex, afterskip = 2.75ex + } + } +\end{minted} + +结束模块 \file{hduthesis-bc.config-module.code} 文件 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \endinput +\end{minted}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a5.tex b/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a5.tex index a23e8009665..d55cdf54ad7 100644 --- a/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a5.tex +++ b/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a5.tex @@ -1,4 +1,334 @@ \subsection{\file{hduthesis-pg.config-module.code} 的实现} -\cmd{pg.config} 模块实现的过程略,主要是对前面定义的命令进行调用,并通过 \cs{ctexset} -或对标准文档类 \cls{report} 中的命令进行重定义.
\ No newline at end of file +由于模块 \file{pg.config} 是通过命令 \cs{__hduthesis_docinfo_degree_if_aux:} 在命令 \cs{DocInfo} 中加载的,所以需要在此模块前后用 \cmd{\ExplSyntaxOn \makeatletter} 和 \cmd{\makeatother \ExplSyntaxOff} 包裹. + +提供模块 \file{pg.config} 文件 +\begin{minted} [ linenos, bgcolor = bg, breaklines ] {tex} + \hduthesis_provide_module:n {pg.config} +\end{minted} + +设置页面布局、页眉、目录页码格式 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \geometry { top = 2.8cm, bottom = 3.2cm, left = 3.2cm, right = 3.2cm, + headheight = 15pt, headsep = .72cm, footskip = 1.5cm } + \fancyhead[C] + { \raisebox { .12ex } { \small 杭州电子科技大学硕士学位论文 } } + \hook_gput_code:nnn { cmd/tableofcontents/after } { . } + { + \clearpage + \pagenumbering{arabic} + \cfoot{\small \thepage} + } +\end{minted} + +使用辅助函数 \cs{__hduthesis_cover_pg_aux:} 重定义 \cs{maketitle} 命令,用于生成封面与扉页,并对其单独设置页面布局 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \RenewDocumentCommand \maketitle {} + { + \newgeometry{margin = 2.75cm} + \begin{titlepage} + \__hduthesis_cover_pg_aux: + \end{titlepage} + \titlepage + \__hduthesis_cnoverleaf_pg_aux: + \endtitlepage + \titlepage + \__hduthesis_enoverleaf_pg_aux: + \endtitlepage + \restoregeometry + \pagenumbering{Roman} + \cfoot {\small \thepage} + } +\end{minted} + +使用辅助函数 \cs{__hduthesis_cover_pg_aux:} 重定义封面页的内容 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \cs_new_protected_nopar:Nn \__hduthesis_cover_pg_aux: + { + \begin{center} + \null + \includegraphics[height = 2.35cm]{hdutitle} + \par \vspace*{40\p@} + { \LARGE\__hduthesis_cover_spread_box:nn {.575\linewidth} {硕士学位论文} } + \par\vspace*{100\p@} + \semiLarge 题 \qquad 目: + \__hduthesis_cover_center_box:nn { .75\linewidth } { \kaishu \@title } + \vspace*{24\p@}\par + \begin{tabular} + { >{\semiLarge\centering\arraybackslash}p{4\ccwd}@{} + >{\semiLarge\centering\arraybackslash\kaishu}p{.65\linewidth}@{} } + \__hduthesis_cover_spread_box:nn { 4\ccwd } { 研究生 } & + \__hduthesis_cover_center_box:nn { .96\linewidth } { \@author }\\ + \__hduthesis_cover_spread_box:nn { 4\ccwd } { 专业 } & + \__hduthesis_cover_center_box:nn { .96\linewidth } + { \l__docinfo_major_tl }\\ + \__hduthesis_cover_spread_box:nn { 4\ccwd } { 指导教师 } & + \__hduthesis_cover_center_box:nn { .96\linewidth } + { + \l__docinfo_cnsupervisor_tl \qquad \l__docinfo_cnrole_tl + }\\[13.5ex] + \semilarge 完成日期 & + \__hduthesis_cover_center_box:nn { .96\linewidth } + { \semilarge + \textsf{\int_use:N \c_sys_year_int} 年 + \textsf{\int_use:N \c_sys_month_int} 月 + } + \end{tabular} + \end{center} + } +\end{minted} + +使用辅助函数 \cs{__hduthesis_cnoverleaf_pg_aux:} 重定义中文扉页的内容 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \cs_new_protected_nopar:Nn \__hduthesis_cnoverleaf_pg_aux: + { + \begin{center} + \vspace*{25\p@} + { \LARGE 杭州电子科技大学硕士学位论文 } + \vspace*{140\p@} \par + \begin{spacing}{1.15} + \huge\textsf{ \@title } + \end{spacing} + \vspace*{128\p@} \par + \begin{tabular}{>{\semiLarge}p{6.25\ccwd}>{\semiLarge\kaishu}l} + \__hduthesis_cover_spread_box:nn { 4\ccwd } {研究生}:& + \__hduthesis_cover_spread_box:nn { 4\ccwd } { \@author }\\[2ex] + \__hduthesis_cover_spread_box:nn { 4\ccwd } {指导教师}:& + \__hduthesis_cover_spread_box:nn { 4\ccwd } + { \l__docinfo_cnsupervisor_tl } \hskip1.5em \l__docinfo_cnrole_tl + \end{tabular} + \par \vspace{60\p@} \semilarge + \textsf{\int_use:N \c_sys_year_int} \kaishu 年 + \textsf{\int_use:N \c_sys_month_int} \kaishu 月 + \end{center} + } +\end{minted} + +使用辅助函数 \cs{__hduthesis_enoverleaf_pg_aux:} 重定义英文扉页的内容 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \cs_new_protected_nopar:Nn \__hduthesis_enoverleaf_pg_aux: + { + \begin{center} + \vspace*{16\p@}{\bfseries \semilarge + Dissertation~Submitted~to~Hangzhou~Dianzi~University\\[.8ex] + for~the~Degree~of~Master} + \vspace*{120\p@} \par + \begin{spacing}{1.12} + \huge\bfseries\l__docinfo_entitle_tl + \end{spacing} + \vspace*{112\p@} \par + \begin{tabular} + { >{\bfseries\large}l + >{\bfseries\large}l + } + \__hduthesis_cover_spread_box:nn { 5em } {Candidate:~} & + \l__docinfo_enauthor_tl\\[3ex] + \__hduthesis_cover_spread_box:nn { 5em } {Supervisor:~} & + \l__docinfo_enrole_tl{}~ \l__docinfo_ensupervisor_tl + \\[11ex] + \end{tabular} + \vspace*{8\p@}\par + \bfseries \large + \clist_item:Nn + \g_system_month_clist { \int_use:N \c_sys_month_int },~ + \int_use:N \c_sys_year_int + \end{center} + } +\end{minted} + +使用辅助函数 \cs{__hduthesis_commitment_pg_aux:} 定义 \cs{commitment} 命令,用于生成承诺书页面. 该命令接收一个可选参数,用于添加签名图片与日期 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \NewDocumentCommand \commitment { O{} } + { + \cfoot {} + \newgeometry{margin = 2.75cm} + \titlepage + \__hduthesis_commitment_pg_aux:n {#1} + \endtitlepage + \restoregeometry + \cfoot {\small \thepage} + } +\end{minted} + +使用辅助函数 \cs{__hduthesis_commitment_pg_aux:} 定义承诺书页面的内容 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \cs_new_protected_nopar:Npn \__hduthesis_commitment_pg_aux:n #1 + { + \vspace*{-12\p@} + \begin{center} + \large + 杭州电子科技大学\\[1ex] 学位论文原创性声明和使用授权说明 + \end{center} + \vspace*{20\p@} + \begin{center} + \semilarge 原创性声明 + \end{center} + \par \vspace*{.4\baselineskip} + \begin{spacing}{1.65} + 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。 + 除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品或成果。 + 对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。\par + \noindent 申请学位论文与资料若有不实之处,本人承担一切相关责任。 + \par \vspace*{1.25\baselineskip} + \noindent \makebox[.45\linewidth][l] + { + 论文作者签名: + \__hduthesis_signature_process_aux:nnn {#1}{1}{0} + \tl_if_empty:NF \l__hduthesis_signature_figure_tl + { + \signature { \l__hduthesis_signature_figure_tl } + \tl_clear:N \l__hduthesis_signature_figure_tl + } + } + 日期: + \makebox [ 2.5em ] [ l ] + { \__hduthesis_signature_process_aux:nnn {#1}{1}{1} } 年 + \makebox [ 2em ] { \__hduthesis_signature_process_aux:nnn {#1}{1}{2} } 月 + \makebox [ 2em ] { \__hduthesis_signature_process_aux:nnn {#1}{1}{3} } 日 + \par\vspace*{20\p@} + \begin{center} + \semilarge 学位论文使用授权说明 + \end{center} + \par \vspace*{.4\baselineskip} + 本人完全了解杭州电子科技大学关于保留和使用学位论文的规定, + 即:研究生在校攻读学位期间论文工作的知识产权单位属杭州电子科技大学。 + 本人保证毕业离校后,发表论文或使用论文工作成果时署名单位仍然为杭州电子科技大学。 + 学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内容, + 可以允许采用影印、缩印或其它复制手段保存论文。(保密论文在解密后遵守此规定) + \par \vspace*{1.25\baselineskip} + \noindent \makebox[.45\linewidth][l] + { + 论文作者签名: + \__hduthesis_signature_process_aux:nnn {#1}{2}{0} + \tl_if_empty:NF \l__hduthesis_signature_figure_tl + { + \signature { \l__hduthesis_signature_figure_tl } + \tl_clear:N \l__hduthesis_signature_figure_tl + } + } + 日期: + \makebox [ 2.5em ] [ l ] + { \__hduthesis_signature_process_aux:nnn {#1}{2}{1} } 年 + \makebox [ 2em ] + { \__hduthesis_signature_process_aux:nnn {#1}{2}{2} } 月 + \makebox [ 2em ] + { \__hduthesis_signature_process_aux:nnn {#1}{2}{3} } 日 + \par \vspace*{\baselineskip} + \noindent \makebox[.45\linewidth][l] + { + 指导教师签名: + \__hduthesis_signature_process_aux:nnn {#1}{3}{0} + \tl_if_empty:NF \l__hduthesis_signature_figure_tl + { + \signature { \l__hduthesis_signature_figure_tl } + \tl_clear:N \l__hduthesis_signature_figure_tl + } + } + 日期: + \makebox [ 2.5em ] [ l ] + { \__hduthesis_signature_process_aux:nnn {#1}{3}{1} } 年 + \makebox [ 2em ] + { \__hduthesis_signature_process_aux:nnn {#1}{3}{2} } 月 + \makebox [ 2em ] + { \__hduthesis_signature_process_aux:nnn {#1}{3}{3} } 日 + \end{spacing} + } +\end{minted} + +重新定义摘要环境,该环境接收一个可选参数,用于生成中英文摘要页面,默认为英文页面 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \RenewDocumentEnvironment {abstract} { O{en} } + { + \str_if_eq:nnT {#1} {en} + { + \tl_set:Nn \l__keywords_name_tl {Keywords:~} + \tl_set:Nn \l__keywords_sep_tl {,~} + \@beginparpenalty\@lowpenalty + \chapter*{\normalfont\bfseries Abstract} + \addcontentsline{toc}{chapter}{\bfseries Abstract} + } + \str_if_eq:nnT {#1} {cn} + { + \tl_set:Nn \l__keywords_name_tl {\textsf{关键词:}} + \tl_set:Nn \l__keywords_sep_tl {,} + \@beginparpenalty\@lowpenalty + \chapter*{摘要} + \addcontentsline{toc}{chapter}{摘要} + } + } + { + \tl_clear:N \l__abstract_name_tl + \clearpage + } +\end{minted} + +新建一个列表 \cs{l__abstract_keywords_clist} 保存关键词,定义 \cs{keywords} 命令,通过 \env{abstract} 环境的可选参数来以不同的分隔符输出关键词 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \clist_new:N \l__abstract_keywords_clist + \NewDocumentCommand \keywords { m } + { + \par \vspace*{\baselineskip} + \noindent\textbf{\l__keywords_name_tl} + \clist_set:Nn \l__abstract_keywords_clist {#1} + \clist_use:Nn \l__abstract_keywords_clist {\l__keywords_sep_tl} + } +\end{minted} + +加载 \pkg{tocloft} 宏包,重新定义目录页的格式 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \RequirePackage{tocloft} + \renewcommand \contentsname {\hfill 目录 \hfill} + \renewcommand* \cfttoctitlefont{\sffamily\semiLarge} + \dim_set:Nn \cftbeforetoctitleskip {12pt} + \dim_set:Nn \cftaftertoctitleskip {24pt} + \dim_set:Nn \cftbeforechapskip {1pt} + \dim_set:Nn \cftbeforesecskip {-.2pt} +\end{minted} + +对 \hologo{LaTeX2e} 中用于生成目录导向线的宏 \cs{@dottedtocline} 打补丁,更改导向线密度 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \patchcmd { \@dottedtocline } + { \leaders \hbox { $\m@th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$ } } + { \kern 4pt \leaders \hbox { $\m@th\mkern .4 mu\hbox{.}\mkern .4 mu$ } } {}{} +\end{minted} + +更改目录章节的项目间距、字体格式、导向线密度和目录深度 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \renewcommand* \l@chapter {\@dottedtocline{1}{0em}{1.6em}} + \renewcommand* \l@section {\@dottedtocline{1}{2.3em}{2.1em}} + \renewcommand* \@dotsep {1.7} + \renewcommand* \@pnumwidth {2.5ex} + \renewcommand* \cftchapfont {\normalfont} + \setcounter{tocdepth}{1} +\end{minted} + +使用 \pkg{ctex} 宏包设置章节标题格式 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \ctexset + { + chapter = + { + aftername = \hspace{.5\ccwd}, fixskip = true, + beforeskip = 32pt, afterskip = 32pt, + format+ = \sffamily\semiLarge, + pagestyle = fancy + }, + section = + { + aftername = \hspace{.5\ccwd}, fixskip = true, + beforeskip = 2ex, afterskip = 2.75ex, + format = \sffamily\large + }, + subsection = + { + aftername = \hspace{.5\ccwd}, fixskip = true, + beforeskip = 2ex, afterskip = 2.75ex, + format = \sffamily\semilarge + } + } +\end{minted} + +结束模块 \file{hduthesis-pg.config-module.code} 文件 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \endinput +\end{minted}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a6.tex b/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a6.tex index 7efec03fbb5..0daa1160cf9 100644 --- a/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a6.tex +++ b/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a6.tex @@ -2,7 +2,7 @@ 模块 \file{hdu.l3doc} 的代码实现与之前类似,唯独不同的是添加了两个 \cs{hologo}: -\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} +\begin{minted} [ linenos, bgcolor = bg, breaklines ] {tex} \def \HoLogo@hduThesiS #1 { \raisebox{-.5pt} diff --git a/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a7.tex b/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a7.tex index a1d38534b2a..b445b4503dc 100644 --- a/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a7.tex +++ b/Master/texmf-dist/doc/xelatex/hduthesis/cha/source/a7.tex @@ -1,8 +1,122 @@ \subsection{\file{hduthesis-hdu.stationery-module.code} 的实现} -模块 \file{stationery} 的代码实现与之前类似. 不同的部分有使用钩子 \cmd{shipout} 来实现水印的添加 +提供模块 \file{hdu.stationery} 文件 +\begin{minted} [ linenos, bgcolor = bg, breaklines ] {tex} + \hduthesis_provide_module:n {hdu.stationery} +\end{minted} + +定义文档信息的键 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \keys_define:nn { hdu.stationery / docinfo } + { + watermark .bool_set:N = \g__docinfo_watermark_bool, + watermark .initial:n = false, + watermark .default:n = true, + title .tl_set:N = \@title, + author .tl_set:N = \@author, + mail .tl_set:N = \l__docinfo_mail_tl, + date .tl_set:N = \@date + } +\end{minted} + +加载所需的宏包 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \RequirePackage{ hyperref, geometry, tikz, twemojis, fancyhdr } + \hypersetup{hidelinks} + \urlstyle{same} +\end{minted} + +定义用户端文档信息的输入命令:清空令牌 \cs{@author} 和 \cs{l__docinfo_mail_tl} 用于后续判断,设置键值对,通过 \pkg{hyperref} 设置 PDF 信息 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \NewDocumentCommand \DocInfo { m } + { + \tl_clear:N \@author + \tl_clear:N \l__docinfo_mail_tl + \keys_set:nn { hdu.stationery / docinfo } {#1} + \hypersetup + { + pdftitle = Hangzhou Dianzi University, + pdfsubject = \@title, pdfauthor = \@author + } + } +\end{minted} + +定义页面布局 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \geometry + { hmargin = .8in, bottom = .75in, top = 1.95in, footskip = 15.87pt, + headheight = 1.2in, headsep = .3in, footskip = .3in } + \linespread{1.25} + \RequirePackage [ skip = \baselineskip ] { parskip } + \renewcommand* \familydefault { \sfdefault } +\end{minted} + +定义杭州电子科技大学主题色 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \definecolor{hdu}{HTML}{214395} +\end{minted} +定义页眉页脚样式 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \renewcommand* \headrulewidth {2pt} + \renewcommand* \footrulewidth {2pt} + \hook_gput_code:nnn { cmd/headrule/before } { . } { \color{hdu!80} } + \hook_gput_code:nnn { cmd/footrule/before } { . } { \color{hdu!80} } + \lhead + { {}~ + \minipage{.6\linewidth} + \medskip \leavevmode \lower -.111in + \hbox { \includegraphics [ height = .75in ] {hdubadge} } + \endminipage \medskip \hfill + \minipage{.36\linewidth} + \medskip \vbox + { \linespread{1.2} + \raggedright \small \color{hdu} + \texttwemoji{1f4cd}~ 1158~No.2~St.,~ Hangzhou,~ 310018\\ + \texttwemoji{1f4de}~ (86)~0571-86915072\\ + \texttwemoji{1f310}~ \url{www.hdu.edu.cn} + } \medskip + \endminipage + } + \lfoot + { + \small{}~ \texttwemoji{1f4cd}~ + 1158~No.2~Street,~ Qiantang~District,~ + Hangzhou,~ Zhejiang~Province,~ 310018,~ P.R.China + } + \cfoot {} + \rfoot { \small \texttwemoji{1f310}~ \url{www.hdu.edu.cn}~ } + \pagestyle{fancy} +\end{minted} + +定义标题样式. 当令牌 \cs{@author} 和 \cs{l__docinfo_mail_tl} 都不为空时,输出 ``From'';当 \cs{@author} 为空时,输出未提供作者警告信息;当 \cs{l__docinfo_mail_tl} 不为空时,输出邮箱;当 \cs{@author} 和 \cs{l__docinfo_mail_tl} 都不为空时,输出换行;输出 ``Date'' 和日期;当 \cs{@title} 为空时,输出未提供标题错误消息;输出 ``Subject'' 和标题 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \renewcommand* \maketitle + { + \group_begin: \small + \bool_if:nT + { !\tl_if_empty_p:N \@author || !\tl_if_empty_p:N \l__docinfo_mail_tl } + { \makebox [ 4em ] [ l ] { \scshape From } } + \tl_if_empty:NTF \@author + { \@latex@warning@no@line {No \noexpand \author given} } { \@author{}~ } + \tl_if_empty:NF \l__docinfo_mail_tl + { \texttt { <\l__docinfo_mail_tl> } } + \bool_if:nT + { !\tl_if_empty_p:N \@author || !\tl_if_empty_p:N \l__docinfo_mail_tl } + { \\ } + \makebox [ 4em ] [ l ] { \scshape Date } + \tl_if_empty:NTF \@date \today \@date \\ + \tl_if_empty:NTF \@title + { \@latex@error {No \noexpand \title given}\@ehc } + { \makebox [ 4em ] [ l ] { \scshape Subject } \@title } + \par \vspace{.5\baselineskip} + \group_end: + } +\end{minted} + +更改字体颜色,通过钩子设置背景,添加水印 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \AtBeginDocument { \color_select:n {black!80} } \DeclareHookRule { shipout / background } { hduthesis / stationery } { before } { pgfrcs } \AddToHook { shipout / background } [ hduthesis / stationery ] @@ -16,11 +130,10 @@ } \end{minted} -调用 \pkg{tikzpagenodes} 宏包用于定位版心的边缘,用循环句柄 \cs{int_step_inline:nn} 与 \cs{draw} 命令来实现横线的绘制. - +加载宏包 \pkg{tikzpagenodes} 用于定位文本区域. 定义命令 \cs{notelines} 用于绘制线条,参数为行数,默认为 20 行. 使用 \pkg{tikz} 绘制线条,透明度为 0.6,颜色为 \cs{hdu},线宽为 2pt,从当前页文本区域的西北角开始,向东绘制线条 \cs{linewidth} 长,每行间隔为 \cs{textheight} 的 20 分之一 \begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} \RequirePackage{tikzpagenodes} - \NewDocumentCommand \notelines {O{20}} + \NewDocumentCommand \notelines { O{20} } { \tikz [ remember~picture, overlay ] { @@ -33,3 +146,24 @@ } } \end{minted} + +从 \cls{ltxdoc} 中抄取命令 \cs{meta} +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \newcommand \meta[1] + { + \ensuremath \langle + \ifmmode \expandafter \nfss@text \fi + { + \itshape\ttfamily \edef \meta@hyphen@restore + { \hyphenchar \the \font \the \hyphenchar \font } + \hyphenchar \font \m@ne \language + \l@nohyphenation #1\/\meta@hyphen@restore + } + \ensuremath \rangle + } +\end{minted} + +结束模块 \file{hduthesis-stationery-module.code} 文件 +\begin{minted} [ linenos, firstnumber = last, bgcolor = bg, breaklines ] {tex} + \endinput +\end{minted} diff --git a/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-bc.pdf b/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-bc.pdf Binary files differindex 8d6248c1ff0..27040a086d9 100644 --- a/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-bc.pdf +++ b/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-bc.pdf diff --git a/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-beamer.pdf b/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-beamer.pdf Binary files differindex e9ef5dc0569..c63d716590e 100644 --- a/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-beamer.pdf +++ b/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-beamer.pdf diff --git a/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-beamer.tex b/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-beamer.tex index 43f87168d2e..26f2dbf8ec3 100644 --- a/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-beamer.tex +++ b/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-beamer.tex @@ -1,15 +1,14 @@ -\documentclass [ svgnames,aspectratio = 2013, handout ] {beamer} +\documentclass[ mode = beamer, handout ]{hduthesis} -\usetheme{hdu} - -\infoset +\usepackage[mono = false]{libertine} +\DocInfo { title = Research and Application of Micromagnetic Simulation Based on Landau-Lifshitz-Gilbert Equation, subtitle = hdu Undergraduate Thesis Proposal, author = SAN Chi Nan (C668668E0), date = {\today{} / Building 6, Room 321}, supervisor = Prof. YIP Tsz Ching, - % reference = reference.bib, + bibsource = reference.bib, } \begin{document} @@ -38,4 +37,57 @@ \alert{The LLG equation is more convenient for numerical calculation, while the LL equation can introduce the dissipation term more physically.} \end{frame} +\begin{frame}{Applications} + \pause + \begin{block}{Magnetic Memory} + Magnetic memory is a type of non-volatile memory that uses magnetic fields to store data. It is a type of computer memory that does not require power to maintain the information stored in the memory. + \end{block} + \pause + \begin{exampleblock}{Magnetic Logic} + Magnetic logic is a type of logic gate that uses magnetic fields to perform logical operations. It is a promising technology for future computing systems. + \end{exampleblock} + \pause + \begin{alertblock}{Magnetic Sensor} + Magnetic sensors are devices that detect magnetic fields. They are used in a wide range of applications, including automotive, industrial, and consumer electronics. + \end{alertblock} + Lorem\cite{xu2023unified}, + Ipsum\cite{wang2023electrical}, + dummy\cite{haug2008quantum}, + text\cite{wang2024switching}, + \cite{jhuria2020spin}, + \cite{gilbert2004phenomenological}, + \cite{foros2005magnetization}, + \cite{chudnovskiy2008spin}, + \cite{foros2009noise}, + \cite{swiebodzinski2010spin}, + \cite{brataas2008scattering}, + \cite{brataas2011magnetization} +\end{frame} + +\begin{frame}{The Nonequilibrium Green's Function Method} + \pause + The NEGF method can be used to study the quantum transport properties of nanoscale devices, such as quantum dots, nanowires, and molecular junctions. The four important Green's functions in the NEGF method are + \pause + \begin{equation} + \begin{cases*} + G^r = -i\theta(t - t') \ab<\{a_i(t), a_j^\dagger(t)\}> & Retarded Green's function\\ + G^a = i\theta(t' - t) \ab<\{a_i(t), a_j^\dagger(t')\}> & Ahead Green's function\\ + G^< = i\ab<\{a_j^\dagger(t'), a_i(t)\}> & Lesser Green's function\\ + G^> = -i\ab<\{a_j^\dagger(t'), a_i(t)\}> & Greater Green's function + \end{cases*} + \end{equation} + \pause + And sometimes we need multiply anchors on the contour of time. + \begin{center} + \begin{tikzpicture} + \draw [->] (-3.6,0) -- (3,0) node [anchor=south] {$t$} node [anchor=north] {$+\infty$} node [at start,anchor=north] {$-\infty$}; + \draw [densely dashed, red,thick] (-3,0.75) -- (1.5,0.75) node [at start,anchor=north] {$C_1$} arc (90:0:0.25); + \draw [densely dashed, green, thick] (1.75,0.5) arc (0:-90:0.25) node [at start] {$\times$} node [at start, anchor=west] {$t_1$} -- (-3.2,0.25) arc (90:270:0.25) -- (2.1,-0.25) arc (90:0:0.25); + \draw [densely dashed, ->, blue, thick] (2.35,-0.5) arc (0:-90:0.25) node [at start] {$\times$} node [at start,anchor=west] {$t_1'$} -- (-3,-0.75) node [anchor=south] {$C_2$}; + \end{tikzpicture} + \end{center} +\end{frame} + +\printbibliography + \end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-pg.pdf b/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-pg.pdf Binary files differindex fb725211b93..2af96c37f89 100644 --- a/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-pg.pdf +++ b/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-pg.pdf diff --git a/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-stationery.pdf b/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-stationery.pdf Binary files differindex b84ec14d24c..39230b0c22d 100644 --- a/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-stationery.pdf +++ b/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-stationery.pdf diff --git a/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-stationery.tex b/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-stationery.tex index 4bc21e0f412..5e0cb7f6743 100644 --- a/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-stationery.tex +++ b/Master/texmf-dist/doc/xelatex/hduthesis/example/hduthesis-stationery.tex @@ -1,4 +1,4 @@ -\documentclass[stationery]{hduthesis} +\documentclass[mode = stationery]{hduthesis} \usepackage{lipsum} \RequirePackage [ mono = false ] {libertine} @@ -8,7 +8,7 @@ title = Recommendation Letter for SAN Chi Nan, author = YIP Tsz Ching, mail = email@server.domain, - date = {23\textsuperscript{th} December, 2024}, + date = \today, watermark = true } @@ -20,13 +20,15 @@ Dear Prof. Wong, \lipsum[1-2] -\vspace{\baselineskip} \raggedleft +\vfill \raggedleft Sincerely yours,\\[4ex] \includegraphics[ height = 2em ]{hdutitle}\\[2ex] Professor of Department of Physics\\ Room \meta{int}, Building \meta{int}, Hangzhou Dianzi University +\vspace{\baselineskip} + \clearpage \notelines[25] diff --git a/Master/texmf-dist/doc/xelatex/hduthesis/example/reference.bib b/Master/texmf-dist/doc/xelatex/hduthesis/example/reference.bib index 5775cc077f7..c8882d0f7c3 100644 --- a/Master/texmf-dist/doc/xelatex/hduthesis/example/reference.bib +++ b/Master/texmf-dist/doc/xelatex/hduthesis/example/reference.bib @@ -100,4 +100,133 @@ publisher={北京:北京航空航天大学出版社}, year={1994}, pages={6--28} +} + +@article{xu2023unified, + title={Unified framework of the microscopic Landau-Lifshitz-Gilbert equation and its application to skyrmion dynamics}, + author={Xu, Fuming and Li, Gaoyang and Chen, Jian and Yu, Zhizhou and Zhang, Lei and Wang, Baigeng and Wang, Jian}, + journal={Physical Review B}, + volume={108}, + number={14}, + pages={144409}, + year={2023}, + publisher={APS} +} + +@article{wang2023electrical, + title={Electrical switchable room-temperature magnetic skyrmions in multiferroic MXene}, + author={Wang, Liming and Ga, Yonglong and Li, Peng and Yu, Dongxing and Jiang, Jiawei and Liang, Jinghua and Wang, Shouguo and Yang, Hongxin}, + journal={Physical Review B}, + volume={108}, + number={5}, + pages={054440}, + year={2023}, + publisher={APS} +} + +@book{haug2008quantum, + title={Quantum kinetics in transport and optics of semiconductors}, + author={Haug, Hartmut and Jauho, Antti-Pekka and others}, + volume={2}, + year={2008}, + publisher={Springer} +} + +@article{wang2024switching, + title={Switching intrinsic magnetic skyrmions with controllable magnetic anisotropy in van der Waals multiferroic heterostructures}, + author={Wang, Ze-quan and Xue, Feng and Qiu, Liang and Wang, Zhe and Wu, Ruqian and Hou, Yusheng}, + journal={Nano Letters}, + volume={24}, + number={14}, + pages={4117--4123}, + year={2024}, + publisher={ACS Publications} +} + +@article{jhuria2020spin, + title={Spin--orbit torque switching of a ferromagnet with picosecond electrical pulses}, + author={Jhuria, Kaushalya and Hohlfeld, Julius and Pattabi, Akshay and Martin, Elodie and Arriola C{\'o}rdova, Aldo Ygnacio and Shi, Xinping and Lo Conte, Roberto and Petit-Watelot, Sebastien and Rojas-Sanchez, Juan Carlos and Malinowski, Gregory and others}, + journal={Nature Electronics}, + volume={3}, + number={11}, + pages={680--686}, + year={2020}, + publisher={Nature Publishing Group UK London} +} + +@article{gilbert2004phenomenological, + title={A phenomenological theory of damping in ferromagnetic materials}, + author={Gilbert, Thomas L}, + journal={IEEE transactions on magnetics}, + volume={40}, + number={6}, + pages={3443--3449}, + year={2004}, + publisher={IEEE} +} + +@article{foros2005magnetization, + title={Magnetization noise in magnetoelectronic nanostructures}, + author={Foros, J{\o}rn and Brataas, Arne and Tserkovnyak, Yaroslav and Bauer, Gerrit EW}, + journal={Physical review letters}, + volume={95}, + number={1}, + pages={016601}, + year={2005}, + publisher={APS} +} + +@article{chudnovskiy2008spin, + title={Spin-torque shot noise in magnetic tunnel junctions}, + author={Chudnovskiy, AL and Swiebodzinski, J and Kamenev, A}, + journal={Physical review letters}, + volume={101}, + number={6}, + pages={066601}, + year={2008}, + publisher={APS} +} + +@article{foros2009noise, + title={Noise and dissipation in magnetoelectronic nanostructures}, + author={Foros, J{\o}rn and Brataas, Arne and Bauer, Gerrit EW and Tserkovnyak, Yaroslav}, + journal={Physical Review B—Condensed Matter and Materials Physics}, + volume={79}, + number={21}, + pages={214407}, + year={2009}, + publisher={APS} +} + +@article{swiebodzinski2010spin, + title={Spin torque dynamics with noise in magnetic nanosystems}, + author={Swiebodzinski, J and Chudnovskiy, A and Dunn, T and Kamenev, A}, + journal={Physical Review B—Condensed Matter and Materials Physics}, + volume={82}, + number={14}, + pages={144404}, + year={2010}, + publisher={APS} +} + +@article{brataas2008scattering, + title={Scattering theory of Gilbert damping}, + author={Brataas, Arne and Tserkovnyak, Yaroslav and Bauer, Gerrit EW}, + journal={Physical review letters}, + volume={101}, + number={3}, + pages={037207}, + year={2008}, + publisher={APS} +} + +@article{brataas2011magnetization, + title={Magnetization dissipation in ferromagnets from scattering theory}, + author={Brataas, Arne and Tserkovnyak, Yaroslav and Bauer, Gerrit EW}, + journal={Physical Review B—Condensed Matter and Materials Physics}, + volume={84}, + number={5}, + pages={054416}, + year={2011}, + publisher={APS} }
\ No newline at end of file diff --git a/Master/texmf-dist/doc/xelatex/hduthesis/hduthesis.pdf b/Master/texmf-dist/doc/xelatex/hduthesis/hduthesis.pdf Binary files differindex e51feb28f23..9681043d1b1 100644 --- a/Master/texmf-dist/doc/xelatex/hduthesis/hduthesis.pdf +++ b/Master/texmf-dist/doc/xelatex/hduthesis/hduthesis.pdf diff --git a/Master/texmf-dist/doc/xelatex/hduthesis/hduthesis.tex b/Master/texmf-dist/doc/xelatex/hduthesis/hduthesis.tex index 9a0a36bd747..14595ff8a3f 100644 --- a/Master/texmf-dist/doc/xelatex/hduthesis/hduthesis.tex +++ b/Master/texmf-dist/doc/xelatex/hduthesis/hduthesis.tex @@ -1,6 +1,6 @@ -\documentclass[l3doc]{hduthesis} +\documentclass[ mode = l3doc ]{hduthesis} -\usepackage{minted} +\usepackage[fontsize = 10.5pt]{fontsize} \DocInfo { @@ -11,7 +11,7 @@ 在 杭州电子科技大学非毕业生 / 教师 中寻找模板的继承维护者, 要求熟悉 \pkg{expl3}. 欢迎有意愿者邮件联系作者. }, - author = Mingyu Xia \mailto{xiamyphys@gmail.com} + author = Mingyu Xia \mailto{myhsia@hdu.edu.cn} \footnote{Physics Department, Graduate in 06/2025}, CJKmain-font = {[AutoFakeSlant]{Songti SC}}, CJKsans-font = {[BoldFont = Hei, AutoFakeSlant]{Heiti SC}}, diff --git a/Master/texmf-dist/doc/xelatex/xepersian/README b/Master/texmf-dist/doc/xelatex/xepersian/README index 487ff09dcdc..19f17a563b7 100644 --- a/Master/texmf-dist/doc/xelatex/xepersian/README +++ b/Master/texmf-dist/doc/xelatex/xepersian/README @@ -1,6 +1,6 @@ ____________________ The XePersian package -v25.8 +v26.0 The xepersian package provides a convenient interface for typesetting Persian and English texts in LaTeX, using XeTeX @@ -25,7 +25,7 @@ The announcements for the new releases of the package will also appear in the Discussions space under the Announcements category. -Current version release date: 2025/01/01 +Current version release date: 2025/01/06 ___________________________________________ Vafa Khalighi diff --git a/Master/texmf-dist/doc/xelatex/xepersian/xepersian-doc.pdf b/Master/texmf-dist/doc/xelatex/xepersian/xepersian-doc.pdf Binary files differindex 2a90eaf714f..16b6bfe982e 100644 --- a/Master/texmf-dist/doc/xelatex/xepersian/xepersian-doc.pdf +++ b/Master/texmf-dist/doc/xelatex/xepersian/xepersian-doc.pdf diff --git a/Master/texmf-dist/doc/xelatex/xepersian/xepersian.pdf b/Master/texmf-dist/doc/xelatex/xepersian/xepersian.pdf Binary files differindex 9fca789d605..562748dbc15 100644 --- a/Master/texmf-dist/doc/xelatex/xepersian/xepersian.pdf +++ b/Master/texmf-dist/doc/xelatex/xepersian/xepersian.pdf diff --git a/Master/texmf-dist/fonts/opentype/public/simpleicons/SimpleIcons.otf b/Master/texmf-dist/fonts/opentype/public/simpleicons/SimpleIcons.otf Binary files differindex 3d3e4294f8e..1d999322b7d 100644 --- a/Master/texmf-dist/fonts/opentype/public/simpleicons/SimpleIcons.otf +++ b/Master/texmf-dist/fonts/opentype/public/simpleicons/SimpleIcons.otf diff --git a/Master/texmf-dist/fonts/tfm/public/simpleicons/SimpleIcons--simpleiconsfour.tfm b/Master/texmf-dist/fonts/tfm/public/simpleicons/SimpleIcons--simpleiconsfour.tfm Binary files differindex 50d2bd45918..980487d3ccd 100644 --- a/Master/texmf-dist/fonts/tfm/public/simpleicons/SimpleIcons--simpleiconsfour.tfm +++ b/Master/texmf-dist/fonts/tfm/public/simpleicons/SimpleIcons--simpleiconsfour.tfm diff --git a/Master/texmf-dist/fonts/tfm/public/simpleicons/SimpleIcons--simpleiconstwo.tfm b/Master/texmf-dist/fonts/tfm/public/simpleicons/SimpleIcons--simpleiconstwo.tfm Binary files differindex a412df0ec8f..01632c2a823 100644 --- a/Master/texmf-dist/fonts/tfm/public/simpleicons/SimpleIcons--simpleiconstwo.tfm +++ b/Master/texmf-dist/fonts/tfm/public/simpleicons/SimpleIcons--simpleiconstwo.tfm diff --git a/Master/texmf-dist/fonts/type1/public/simpleicons/SimpleIcons.pfb b/Master/texmf-dist/fonts/type1/public/simpleicons/SimpleIcons.pfb Binary files differindex 43af4c0f18a..a72265aab65 100644 --- a/Master/texmf-dist/fonts/type1/public/simpleicons/SimpleIcons.pfb +++ b/Master/texmf-dist/fonts/type1/public/simpleicons/SimpleIcons.pfb diff --git a/Master/texmf-dist/ls-R b/Master/texmf-dist/ls-R index 1b5be43cf64..6cd57d5cd74 100644 --- a/Master/texmf-dist/ls-R +++ b/Master/texmf-dist/ls-R @@ -8581,25 +8581,12 @@ plex-samples.tex ./doc/fonts/plex-otf: Changes -Examples README.md plex-otf-doc.bib +plex-otf-doc.fonts plex-otf-doc.pdf plex-otf-doc.tex -./doc/fonts/plex-otf/Examples: -plex-otf-1.tex -plex-otf-10.tex -plex-otf-11.tex -plex-otf-2.tex -plex-otf-3.tex -plex-otf-4.tex -plex-otf-5.tex -plex-otf-6.tex -plex-otf-7.tex -plex-otf-8.tex -plex-otf-9.tex - ./doc/fonts/plimsoll: LICENSE README @@ -14302,6 +14289,7 @@ biblatex-cheatsheet biblatex-chem biblatex-chicago biblatex-claves +biblatex-cse biblatex-cv biblatex-dw biblatex-enc @@ -14539,6 +14527,7 @@ chronology chs-physics-report chscite churchslavonic +chuushaku cidarticle circ circledsteps @@ -15610,6 +15599,7 @@ lgrmath lhelp libgreek lie-hasse +liederbuch liftarm lilyglyphs limap @@ -16645,6 +16635,7 @@ tabularborder tabularcalc tabularew tabularray +tabularray-abnt tabulary tabvar tagging @@ -17282,6 +17273,7 @@ sample-acmsmall-conf.pdf sample-acmsmall-conf.tex sample-acmsmall-submission.pdf sample-acmsmall-submission.tex +sample-acmsmall-tagged-luamml-mathml.html sample-acmsmall-tagged.pdf sample-acmsmall-tagged.tex sample-acmsmall.pdf @@ -17934,8 +17926,6 @@ example.tex ./doc/latex/aomart: README -aom_orcid_logo.eps -aom_orcid_logo.pdf aomart.bib aomart.pdf aomfrench.pdf @@ -20160,6 +20150,12 @@ biblatex-claves.tex latexmkrc makefile +./doc/latex/biblatex-cse: +README.md +biblatex-cse-doc.pdf +biblatex-cse-doc.tex +bibliography.bib + ./doc/latex/biblatex-cv: README.md biblatex-cv.bib @@ -20661,10 +20657,10 @@ socialscienceshuberlin.pdf socialscienceshuberlin.tex ./doc/latex/biblatex-software: -Changes LICENSE README.md biblio.bib +history.tex manual.bib mkbiblatexstubs.sh sample-content.tex @@ -22637,6 +22633,13 @@ churchslavonic-ru.pdf churchslavonic-ru.tex churchslavonic.tex +./doc/latex/chuushaku: +README.txt +chuushaku-sample.pdf +chuushaku-sample.tex +chuushaku.pdf +chuushaku.tex + ./doc/latex/cidarticle: CHANGELOG.md CONTRIBUTING.md @@ -35477,6 +35480,27 @@ lie-hasse.bib lie-hasse.pdf lie-hasse.tex +./doc/latex/liederbuch: +DemoProjekt +README.md +liederbuch-documentation.pdf +liederbuch-documentation.tex + +./doc/latex/liederbuch/DemoProjekt: +DemoProjekt.pdf +DemoProjekt.tex +Readme_Demoprojekt.txt +TestLiederbuch.sty +TestLiederbuchSnippets +printTestLiederbuch.pdf +printTestLiederbuch.tex + +./doc/latex/liederbuch/DemoProjekt/TestLiederbuchSnippets: +CVLB80-OhAlteBurschenherrlichkeit.ly +CVLB80-OhAlteBurschenherrlichkeit.pdf +haenschenKlein.ly +haenschenKlein.pdf + ./doc/latex/liftarm: README.md liftarm.pdf @@ -45687,6 +45711,13 @@ README.txt tabularray.pdf tabularray.tex +./doc/latex/tabularray-abnt: +README.md +changelog.txt +tabularray-abnt-pt-br.pdf +tabularray-abnt-pt-br.tex +tabularray-abnt.bib + ./doc/latex/tabulary: README.txt tabulary.pdf @@ -47053,6 +47084,7 @@ tikzinclude.pdf ./doc/latex/tikzlings: DEPENDS.txt README.md +README.pdf tikzlings-doc-settings.sty tikzlings-doc.pdf tikzlings-doc.tex @@ -53832,6 +53864,7 @@ luaquotes luarandom luaset luasseq +luatbls luatextra luatodonotes luatruthtable @@ -54335,6 +54368,11 @@ luaset.tex README luasseq.pdf +./doc/lualatex/luatbls: +README.md +luatbls.pdf +luatbls.tex + ./doc/lualatex/luatextra: News README @@ -62235,7 +62273,6 @@ logo.png ./doc/xelatex/bidi: README -bidi-bibitem.pdf bidi-doc.pdf bidi-logo.tex bidi.pdf @@ -62453,7 +62490,6 @@ License README.md cha example -examples hduthesis.pdf hduthesis.tex @@ -62508,8 +62544,6 @@ image-0419.png image-0439.png image-0440.png -./doc/xelatex/hduthesis/examples: - ./doc/xelatex/hfutthesis: README.md hfut-bib @@ -222611,9 +222645,6 @@ albatross-0.5.1-src.zip arara-7.1.5-src.zip ./source/support/bib2gls: -src - -./source/support/bib2gls/src: bib2gls-begin.tex bib2gls-cite.bib bib2gls-src.zip @@ -222623,8 +222654,8 @@ bib2gls.pod bib2gls.tex convertgls2bib.pod datatool2bib.pod -gls2bib-src.zip texparser-src.zip +version.tex ./source/support/bibtexperllibs: BibTeX-Parser @@ -233628,6 +233659,7 @@ biblatex-caspervector biblatex-chem biblatex-chicago biblatex-claves +biblatex-cse biblatex-cv biblatex-dw biblatex-enc @@ -233882,6 +233914,7 @@ chronology chs-physics-report chscite churchslavonic +chuushaku cidarticle cinzel circ @@ -235043,6 +235076,7 @@ librecaslon librefranklin libris lie-hasse +liederbuch liftarm lilyglyphs limap @@ -236213,6 +236247,7 @@ tabularborder tabularcalc tabularew tabularray +tabularray-abnt tabulary tabvar tagging @@ -237362,6 +237397,8 @@ anysize.sty tikzlibraryoverlay-beamer-styles.code.tex ./tex/latex/aomart: +aom_orcid_logo.eps +aom_orcid_logo.pdf aomart.cls ./tex/latex/apa: @@ -239547,6 +239584,10 @@ cmsendnotes.sty claves.bbx claves.dbx +./tex/latex/biblatex-cse: +biblatex-cse.bbx +biblatex-cse.cbx + ./tex/latex/biblatex-cv: american-cv.lbx biblatex-cv.bbx @@ -241319,6 +241360,9 @@ cu-num.sty cu-util.sty gloss-churchslavonic.ldf +./tex/latex/chuushaku: +chuushaku.sty + ./tex/latex/cidarticle: cidarticle.cls @@ -244978,6 +245022,7 @@ fancybox.sty fancyhandout.cls ./tex/latex/fancyhdr: +extramarks-v4.sty extramarks.sty fancyhdr.sty fancyheadings.sty @@ -250589,6 +250634,10 @@ ts1ylyw.fd ./tex/latex/lie-hasse: lie-hasse.sty +./tex/latex/liederbuch: +liederbuch.sty +printliederbuch.sty + ./tex/latex/liftarm: liftarm.sty @@ -259554,6 +259603,9 @@ tabularew.sty tabularray-2021.sty tabularray.sty +./tex/latex/tabularray-abnt: +tabularray-abnt.sty + ./tex/latex/tabulary: tabulary-v010.sty tabulary.sty @@ -265881,6 +265933,7 @@ luaquotes luarandom luaset luasseq +luatbls luatextra luatodonotes luatruthtable @@ -266290,6 +266343,10 @@ luaset.sty ./tex/lualatex/luasseq: luasseq.sty +./tex/lualatex/luatbls: +luatbls.lua +luatbls.sty + ./tex/lualatex/luatextra: luatextra.sty @@ -268218,6 +268275,7 @@ beamerouterthemesplit-xetex-bidi.def beamerouterthemetree-xetex-bidi.def beamerthemeHannover-xetex-bidi.def beamerthemeSingapore-xetex-bidi.def +bidi-bibitem.pdf bidi-logo.pdf bidi-media9.sty bidi-perpage.sty @@ -268285,11 +268343,11 @@ letter-xetex-bidi.def lettrine-xetex-bidi.def lineno-xetex-bidi.def listings-xetex-bidi.def -loadingorder-xetex-bidi.def longtable-xetex-bidi.def lscape-xetex-bidi.def mathtools-xetex-bidi.def mdframed-xetex-bidi.def +media9-xetex-bidi.def memoir-xetex-bidi.def midfloat-xetex-bidi.def minitoc-xetex-bidi.def @@ -268305,7 +268363,7 @@ pdfbase-xetex-bidi.def pdflscape-xetex-bidi.def pdfpages-xetex-bidi.def pgfcorescopes.code-xetex-bidi.def -pgfsys.code-xetex-bidi.def +pgfsys-xetex-bidi.def picinpar-xetex-bidi.def plain-xetex-bidi.def pstricks-xetex-bidi.def @@ -268581,64 +268639,63 @@ xecyr.sty xeindex.sty ./tex/xelatex/xepersian: -algorithm-xepersian.def -algorithmic-xepersian.def -amsart-xepersian.def -amsbook-xepersian.def -appendix-xepersian.def -article-xepersian.def -artikel1-xepersian.def -artikel2-xepersian.def -artikel3-xepersian.def -backref-xepersian.def -beamer-xepersian.def -beamerbasetranslator-xepersian.def -bidimoderncv-xepersian.def -bidituftesidenote-xepersian.def -boek-xepersian.def -boek3-xepersian.def -book-xepersian.def -bookest-xepersian.def -breqn-xepersian.def -color-localise-xepersian.def -enumerate-xepersian.def -enumitem-xepersian.def -extarticle-xepersian.def -extbook-xepersian.def -extrafootnotefeatures-xepersian.def -extreport-xepersian.def -fancyref-xepersian.def -footnote-xepersian.def -framed-xepersian.def -glossaries-xepersian.def -hyperref-xepersian.def -imsproc-xepersian.def -kashida-xepersian.def -latex-localise-commands-xepersian.def -latex-localise-environments-xepersian.def -latex-localise-messages-xepersian.def -latex-localise-misc-xepersian.def -listings-xepersian.def -loadingorder-xepersian.def -localise-xepersian.def -memoir-xepersian.def -minitoc-xepersian.def -natbib-xepersian.def -packages-localise-xepersian.def -rapport1-xepersian.def -rapport3-xepersian.def -refrep-xepersian.def -report-xepersian.def -scrartcl-xepersian.def -scrbook-xepersian.def -scrreprt-xepersian.def -soul-xepersian.def -tkz-linknodes-xepersian.def -tocloft-xepersian.def -url-xepersian.def -varioref-xepersian.def -xepersian-localise-commands-xepersian.def -xepersian-localise-environments-xepersian.def +algorithm-xetex-xepersian.def +algorithmic-xetex-xepersian.def +amsart-xetex-xepersian.def +amsbook-xetex-xepersian.def +appendix-xetex-xepersian.def +article-xetex-xepersian.def +artikel1-xetex-xepersian.def +artikel2-xetex-xepersian.def +artikel3-xetex-xepersian.def +backref-xetex-xepersian.def +beamer-xetex-xepersian.def +beamerbasetranslator-xetex-xepersian.def +bidimoderncv-xetex-xepersian.def +bidituftesidenote-xetex-xepersian.def +boek-xetex-xepersian.def +boek3-xetex-xepersian.def +book-xetex-xepersian.def +bookest-xetex-xepersian.def +breqn-xetex-xepersian.def +color-localize-xetex-xepersian.def +enumerate-xetex-xepersian.def +enumitem-xetex-xepersian.def +extarticle-xetex-xepersian.def +extbook-xetex-xepersian.def +extrafootnotefeatures-xetex-bidi-xetex-xepersian.def +extreport-xetex-xepersian.def +fancyref-xetex-xepersian.def +footnote-xetex-bidi-xetex-xepersian.def +framed-xetex-xepersian.def +glossaries-xetex-xepersian.def +hyperref-xetex-xepersian.def +imsproc-xetex-xepersian.def +kashida-xetex-xepersian.def +latex-localize-commands-xetex-xepersian.def +latex-localize-environments-xetex-xepersian.def +latex-localize-messages-xetex-xepersian.def +latex-localize-misc-xetex-xepersian.def +listings-xetex-xepersian.def +localize-xetex-xepersian.def +memoir-xetex-xepersian.def +minitoc-xetex-xepersian.def +natbib-xetex-xepersian.def +packages-localize-xetex-xepersian.def +rapport1-xetex-xepersian.def +rapport3-xetex-xepersian.def +refrep-xetex-xepersian.def +report-xetex-xepersian.def +scrartcl-xetex-xepersian.def +scrbook-xetex-xepersian.def +scrreprt-xetex-xepersian.def +soul-xetex-xepersian.def +tkz-linknodes-xetex-xepersian.def +tocloft-xetex-xepersian.def +url-xetex-xepersian.def +varioref-xetex-xepersian.def +xepersian-localize-commands-xetex-xepersian.def +xepersian-localize-environments-xetex-xepersian.def xepersian-logo.pdf xepersian-magazine.cls xepersian-mathdigitspec.sty diff --git a/Master/texmf-dist/metapost/mcf2graph/main_lib.mcf b/Master/texmf-dist/metapost/mcf2graph/main_lib.mcf index b81ade1ff63..8609cde48fd 100644 --- a/Master/texmf-dist/metapost/mcf2graph/main_lib.mcf +++ b/Master/texmf-dist/metapost/mcf2graph/main_lib.mcf @@ -1,7 +1,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% molecular library file main_lib.mcf by Akira Yamaji 2024.12.01 +% molecular library file main_lib.mcf by Akira Yamaji 2025.01.05 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% must use version 5.15 +% must use version 5.16 % tag1:var1;tag2:var2;tag3:var3 ..... % first character of line "%" comment out % first character of line ":" start MCF @@ -12,7 +12,7 @@ % CAT = CATegory,EN = Name,MW = Molecular weight %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %============================================================================== -CAT:-;EN:-;MW:0;EXA:-; +CAT:Example;EN:Example 0;MW:0;EXA:-; = sw_frame:=Atom; : @@ -27,279 +27,274 @@ CAT:-;EN:-;MW:0;EXA:-; label.top("A9",A9) withcolor red; ; %============================================================================== -CAT:biological;EN:Adenine;MW:135.13;EXA:1 +CAT:nucleic acid;EN:Adenine;MW:135.13;EXA:1 : <30,?6,3=?5,1'3'5'9=db,2'6'9:N,5:/NH2,7:NH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Guanine;MW:151.13;EXA:1 +CAT:nucleic acid;EN:Guanine;MW:151.13;EXA:1 : <30,?6,3=?5,1'3'9=db,2'9:N,6'7:NH,5:?O,1:/NH2 ; %------------------------------------------------------------------------------ -CAT:biological;EN:Cytosine;MW:111.10;EXA:1 +CAT:nucleic acid;EN:Cytosine;MW:111.10;EXA:1 : <30,?6,4'6=db,4:N,3:?O,2:NH,5:/NH2 ; %------------------------------------------------------------------------------ -CAT:biological;EN:Thymine;MW:126.11;EXA:1 +CAT:nucleic acid;EN:Thymine;MW:126.11;EXA:1 : -<30,?6,3=db,2'6:NH,1'5:?O,4:/_ +<30,?6,3=db,2'6:NH,1'5:?O,4:? ; %------------------------------------------------------------------------------ -CAT:biological;EN:Uracil;MW:112.09;EXA:1 +CAT:nucleic acid;EN:Uracil;MW:112.09;EXA:1 : <30,?6,6=db,3'5:?O,2'4:NH ; %== Amino acid ================================================================ -CAT:biological;EN:Glycine;MW:75.07;EXA:- +CAT:amino acid;EN:Glycine;MW:75.07;EXA:1 : <30,NH2,!2,COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Glycine;MW:75.07;EXA:- -: -<30,NH2,!2,COOH -; -%------------------------------------------------------------------------------ -CAT:biological;EN:L-Alanine;MW:89.10;EXA:- +CAT:amino acid;EN:L-Alanine;MW:89.10;EXA:1 : <30,NH2,!wb,?!,COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:L-Valine;MW:117.15;EXA:- +CAT:amino acid;EN:L-Valine;MW:117.15;EXA:1 : <30,NH2,!wb,/?!,!COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:L-Leucine;MW:131.16;EXA:1 +CAT:amino acid;EN:L-Leucine;MW:131.16;EXA:1 : <30,NH2,!wb,/!?!,!COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:L-Isoleucine;MW:131.16;EXA:- +CAT:amino acid;EN:L-Isoleucine;MW:131.16;EXA:1 : <30,NH2,!wb,/?z'!2,!COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:L-Serine;MW:105.09;EXA:- +CAT:amino acid;EN:L-Serine;MW:105.09;EXA:1 : <30,NH2,!wb,/!OH,!COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:L-Threonine;MW:119.12;EXA:- +CAT:amino acid;EN:L-Threonine;MW:119.12;EXA:1 : <30,NH2,!wb,/?'!w'OH,!COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:L-Cysteine;MW:121.16;EXA:- +CAT:amino acid;EN:L-Cysteine;MW:121.16;EXA:1 : <30,NH2,!wb,/!SH,!COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:L-Methionine;MW:149.21;EXA:- +CAT:amino acid;EN:L-Methionine;MW:149.21;EXA:1 : <30,NH2,!wb,/!2'S!,!COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:L-Phenylalanine;MW:165.19;EXA:- +CAT:amino acid;EN:L-Phenylalanine;MW:165.19;EXA:1 : <30,NH2,!wb,/!Ph,!COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:L-Tyrosine;MW:181.19;EXA:- +CAT:amino acid;EN:L-Tyrosine;MW:181.19;EXA:1 : <30,NH2,!wb,/!Ph'(5:/OH),!COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:L-Triptophan;MW:204.21;EXA:- +CAT:biological;EN:L-Triptophan;MW:204.21;EXA:1 : -<30,NH2,!wb,!COOH,@2,\,!,<24,|,?5,2=dr,5=dl,2=Ph,4:NH +<30,NH2,!wb,!COOH,@2,!2,<24,|,?5,2=dr,5=dl,2=Ph,4:NH ; %------------------------------------------------------------------------------ -CAT:biological;EN:L-Proline;MW:115.13;EXA:- +CAT:amino acid;EN:L-Proline;MW:115.13;EXA:1 : <18,?5,3:NH,4:*/COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:L-Glutamine;MW:146.15;EXA:- +CAT:amino acid;EN:L-Glutamine;MW:146.15;EXA:1 : -<30,NH2,!wb,!COOH,@2,\`1,!`1,!,?O!,NH2 +<30,NH2,!wb,!COOH,@2,!2`1,!,?O!,NH2 ; %------------------------------------------------------------------------------ -CAT:biological;EN:L-Asparagine;MW:132.12;EXA:- +CAT:amino acid;EN:L-Asparagine;MW:132.12;EXA:1 : <30,NH2,!wb,/!?O!'NH2,!COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:L-Aspartic acid;MW:133.10;EXA:- +CAT:amino acid;EN:L-Aspartic acid;MW:133.10;EXA:1 : <30,NH2,!wb,/!COOH,!COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:L-Glutamic acid;MW:147.13;EXA:- +CAT:amino acid;EN:L-Glutamic acid;MW:147.13;EXA:1 : <30,NH2,!wb,/!2'COOH,!COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:L-Lysine;MW:146.19;EXA:- +CAT:amino acid;EN:L-Lysine;MW:146.19;EXA:1 : <30,NH2,!wb,/!4'NH2,!COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:L-Arginine;MW:174.21;EXA:- +CAT:amino acid;EN:L-Arginine;MW:174.21;EXA:1 : -<30,NH2,!wb,!COOH,@2,\`1,!`1,!2,NH!,?NH,!NH2 +<30,NH2,!wb,!COOH,@2,!2`1,!2,NH!,?NH,!NH2 ; %------------------------------------------------------------------------------ -CAT:biological;EN:L-Hystidine;MW:155.16;EXA:- +CAT:amino acid;EN:L-Hystidine;MW:155.16;EXA:1 : -<30,NH2,!wb,!COOH,@2,\,!,|,?5,1'3=dl,3:N,5:NH +<30,NH2,!wb,!COOH,@2,!2,|,?5,1'3=dl,3:N,5:NH ; %============================================================================== -CAT:biological;EN:L-DOPA;MW:197.19;EXA:- +CAT:amino acid;EN:L-DOPA;MW:197.19;EXA:1 : <30,NH2,!wb,/!Ph'(4'5:/OH),!COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Ornithine;MW:132.16;EXA:- +CAT:amino acid;EN:Ornithine;MW:132.16;EXA:1 : <30,NH2,!wb,/!3'NH2,!COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Citrulline;MW:175.2;EXA:- +CAT:amino acid;EN:Citrulline;MW:175.2;EXA:1 : <30,NH2,!wb,/!3'NH!'?O!'NH2,!COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:GABA;MW:103.12;EXA:- +CAT:amino acid;EN:GABA;MW:103.12;EXA:1 : <30,NH2,!4,COOH ; %============================================================================== -CAT:biological;EN:Citrate;MW:192.12;EXA:- +CAT:biological;EN:Citrate;MW:192.12;EXA:1 : <30,COOH,!2,/COOH^30,/OH^-30,!2,COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:cis-Aconitate;MW:174.11;EXA:- +CAT:biological;EN:cis-Aconitate;MW:174.11;EXA:1 : <30,COOH,!2,/COOH,!d,60,COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Isocitrate;MW:192.12;EXA:- +CAT:biological;EN:Isocitrate;MW:192.12;EXA:1 : <30,COOH,!4,COOH,3:!COOH,4:/OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Oxalosuccinate;MW:190.11;EXA:- +CAT:biological;EN:Oxalosuccinate;MW:190.11;EXA:1 : <30,COOH,!2,/COOH,!?O!,COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:alfa-Ketoglutarate;MW:146.1;EXA:- +CAT:biological;EN:alfa-Ketoglutarate;MW:146.1;EXA:1 : <30,COOH,!3,?O!,COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Succinate;MW:118.09;EXA:- +CAT:biological;EN:Succinate;MW:118.09;EXA:1 : <30,COOH,!3,COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Fumarate;MW:116.07;EXA:- +CAT:biological;EN:Fumarate;MW:116.07;EXA:1 : <30,COOH,!,!d,!COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Malate;MW:134.09;EXA:- +CAT:biological;EN:Malate;MW:134.09;EXA:1 : <30,COOH,!3,COOH,3:/OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Oxaloacetate;MW:132.07;EXA:- +CAT:biological;EN:Oxaloacetate;MW:132.07;EXA:1 : <30,COOH,!,?O!2,COOH ; %============================================================================== -CAT:biological;EN:Glucose 1;MW:180.16;EXA:1 +CAT:sugar;EN:Glucose 1;MW:180.16;EXA:1 : <30,?6,5:O,2:*/OH,1'3:/*OH,4:*/*OH,6:*/!OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Glucose 2;MW:180.16;EXA:1 +CAT:sugar;EN:Glucose 2;MW:180.16;EXA:1 : <-30,OH,!2,*/OH,!,/*OH,!,/*OH,!,/*OH,!,?O!,H ; %------------------------------------------------------------------------------ -CAT:biological;EN:D-Glucose;MW:180.16;EXA:1 +CAT:sugar;EN:D-Glucose;MW:180.16;EXA:1 : hexose_hp,#.5,{1^$270'2^$90'3^$270'4^$270}:/OH,6^$90:/!OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Fructose 1;MW:180.16;EXA:1 +CAT:sugar;EN:Fructose 1;MW:180.16;EXA:1 : <30,OH,!2,/*OH,!,*/OH,!,*/OH,!,?O!2,OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Fructose 2;MW:180.16;EXA:1 +CAT:sugar;EN:Fructose 2;MW:180.16;EXA:1 : <-18,?5,5:O,1^-48:*/*!OH,1^48:/OH,*2'3:*/OH,4:/*!OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:D-Fluctose;MW:180.16;EXA:1 +CAT:sugar;EN:D-Fluctose;MW:180.16;EXA:1 : Pyranose_hp,#.5,1^$270:/OH,{2^$270'3^$90}:/OH,{1^$90'4^$270}:/!OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:D-Galactose;MW:180.16;EXA:1 +CAT:sugar;EN:D-Galactose;MW:180.16;EXA:1 : hexose_hp,#.5,{1^$90'2^$90'3^$270'4^$270}:/OH,6^$90:/!OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:D-Mannose;MW:180.16;EXA:1 +CAT:sugar;EN:D-Mannose;MW:180.16;EXA:1 : hexose_hp,#.5,{1^$270'2^$90'3^$90'4^$270}:/OH,6^$90:/!OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:L-Fucose;MW:164.16;EXA:1 +CAT:sugar;EN:L-Fucose;MW:164.16;EXA:1 : -hexose_hp,#.5,{1^$270'2^$270'3^$90'4^$90}:/OH,6^$270:/_ +hexose_hp,#.5,{1^$270'2^$270'3^$90'4^$90}:/OH,6^$270:? ; %------------------------------------------------------------------------------ -CAT:biological;EN:D-Ribose;MW:150.13;EXA:1 +CAT:sugar;EN:D-Ribose;MW:150.13;EXA:1 : Pyranose_hp,#.5,{2^$270'3^$270'4^$90}:/OH,1^$90:/!OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:D-Deoxyribose;MW:134.13;EXA:1 +CAT:sugar;EN:D-Deoxyribose;MW:134.13;EXA:1 : Pyranose_hp,#.5,{2^$270'4^$90}:/OH,1^$90:/!OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:D-Glucosamine;MW:179.17;EXA:1 +CAT:sugar;EN:D-Glucosamine;MW:179.17;EXA:1 : hexose_hp,#.5,{1^$270'2^$90'4^$270}:/OH,3^$270:/NH2,6^$90:/!OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:N-acetyl-Glucosamine;MW:221.21;EXA:1 +CAT:sugar;EN:N-acetyl-Glucosamine;MW:221.21;EXA:1 : hexose_hp,#.5,{1^$270'2^$90'4^$270}:/OH,3^$270>lr:/NH!'?O!,6^$90:/!OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Glucuronic acid;MW:194.14;EXA:1 +CAT:sugar;EN:Glucuronic acid;MW:194.14;EXA:1 : hexose_hp,#.5,{1^$270'2^$90'3^$270'4^$270}:/OH,6^$90:/COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Maltose;MW:342.3;EXA:1 +CAT:sugar;EN:Maltose;MW:342.3;EXA:1 : hexose_hp,#.5,{1^$270'2^$90'3^$270}:/OH,6^$90:/!OH,##, @4,$310~arc_lb`1,O,$50~arc_br`1,<$0, |,hexose_hp,#.5,{2^$90'3^$270'4^$270}:/OH,6^$90:/!OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Sucrose;MW:342.3;EXA:1 +CAT:sugar;EN:Sucrose;MW:342.3;EXA:2 : hexose_hp,#.5,{1^$270'2^$90'3^$270}:/OH,6^$90:/!OH,##, @4,$310~arc_lb`1,O,$50~arc_br`1,<$0, @@ -307,21 +302,21 @@ hexose_hp,#.5,{1^$270'2^$90'3^$270}:/OH,6^$90:/!OH,##, #.5,{2^$270'3^$90}:/OH,{1^$90'4^$270}:/!OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Lactose;MW:342.3;EXA:1 +CAT:sugar;EN:Lactose;MW:342.3;EXA:1 : hexose_hp,#.5,{1^$90'2^$90'3^$270}:/OH,6^$90:/!OH,##, @4,$0~arc_ltr,O,$0~arc_lbr, |,hexose_hp,#.5,{2^$90'3^$270'4^$270}:/OH,6^$90:/!OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Cellobiose;MW:342.3;EXA:1 +CAT:sugar;EN:Cellobiose;MW:342.3;EXA:1 : hexose_hp,#.5,{1^$270'2^$90'3^$270}:/OH,6^$90:/!OH,##, @4,$0~arc_lbr,O,$0~arc_ltr, |,hexose_hp,#.5,{2^$90'3^$270'4^$270}:/OH,6^$90:/!OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Trehalose;MW:342.3;EXA:1 +CAT:sugar;EN:Trehalose;MW:342.3;EXA:1 : hexose_hp,#.5,{1^$270'2^$90'3^$270}:/OH,6^$90:/!OH,##, @4,@(1'0),|,hexose_hp,#.5,{1^$270'2^$90'3^$270}:/OH,6^$90:/!OH,##, @@ -330,17 +325,17 @@ hexose_hp,#.5,{1^$270'2^$90'3^$270}:/OH,6^$90:/!OH,##, %============================================================================== CAT:biological;EN:Geraniol;MW:154.25;EXA:1 : -<30,!8,OH,2'6=dr,2'6:/_ +<30,!8,OH,2'6=dr,2'6:? ; %------------------------------------------------------------------------------ -CAT:biological;EN:Limonene;MW:136.24;EXA:- +CAT:biological;EN:Limonene;MW:136.24;EXA:1 : -<30,?6,2=dl,2:/_,5:*/?!d +<30,?6,2=dl,2:?,5:*/?!d ; %------------------------------------------------------------------------------ CAT:biological;EN:l-Menthol;MW:156.27;EXA:1 : -<30,?6,2:/*?!,5:*/_,3:*/OH +<30,?6,2:/*?!,5:?w,3:*/OH ; %------------------------------------------------------------------------------ CAT:biological;EN:Allicin;MW:162.28;EXA:1 @@ -348,27 +343,27 @@ CAT:biological;EN:Allicin;MW:162.28;EXA:1 <-30,!d,!2,S?O,!,S,!2,!d ; %------------------------------------------------------------------------------ -CAT:biological;EN:Benzoic acid;MW:122.12;EXA:- +CAT:biological;EN:Benzoic acid;MW:122.12;EXA:1 : <30,Ph,3:/COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Gallic acid;MW:170.12;EXA:- +CAT:biological;EN:Gallic acid;MW:170.12;EXA:1 : <30,Ph,3:/COOH,1'5'6:/OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Salicylic acid;MW:138.12;EXA:- +CAT:biological;EN:Salicylic acid;MW:138.12;EXA:1 : <30,Ph,3:/COOH,4:/OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Cinnamic acid;MW:148.16;EXA:- +CAT:biological;EN:Cinnamic acid;MW:148.16;EXA:1 : <30,Ph,3:/!dr'!COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Cinnamaldehyde;MW:132.16;EXA:- +CAT:biological;EN:Cinnamaldehyde;MW:132.16;EXA:1 : <30,Ph,3:/!dr'!CHO ; @@ -383,47 +378,47 @@ CAT:biological;EN:Vanillin;MW:152.15;EXA:1 <30,Ph,1:/OH,6:/O!,4:/CHO ; %------------------------------------------------------------------------------ -CAT:biological;EN:alfa-Terpinene;MW:136.24;EXA:- +CAT:biological;EN:alfa-Terpinene;MW:136.24;EXA:1 : -<30,?6,3:/?!,6:/_,3'5=db +<30,?6,3:/?!,6:?,3'5=db ; %------------------------------------------------------------------------------ CAT:biological;EN:beta-Terpinene;MW:136.24;EXA:- : -<30,?6,3:/?!,6://_,3=db +<30,?6,3:/?!,6:?d,3=db ; %------------------------------------------------------------------------------ -CAT:biological;EN:gamma-Terpinene;MW:136.24;EXA:- +CAT:biological;EN:gamma-Terpinene;MW:136.24;EXA:1 : -<30,?6,3:/?!,6:/_,3'6=db +<30,?6,3:/?!,6:?,3'6=db ; %------------------------------------------------------------------------------ CAT:biological;EN:delta-Terpinene;MW:136.24;EXA:- : -<30,?6,3://?!,6:/_,5=db +<30,?6,3://?!,6:?,5=db ; %------------------------------------------------------------------------------ -CAT:biological;EN:Eugenol;MW:164.20;EXA:- +CAT:biological;EN:Eugenol;MW:164.20;EXA:1 : <30,Ph,1:/OH,6:/O!,4:/!'!d ; %------------------------------------------------------------------------------ -CAT:biological;EN:Thymol;MW:150.22;EXA:- +CAT:biological;EN:Thymol;MW:150.22;EXA:1 : -<30,Ph,4:/OH,3:/?!,6:/_ +<30,Ph,4:/OH,3:/?!,6:? ; %------------------------------------------------------------------------------ -CAT:biological;EN:Anisaldehyde;MW:136.15;EXA:- +CAT:biological;EN:Anisaldehyde;MW:136.15;EXA:1 : <30,Ph,4:/CHO,1:/O! ; %------------------------------------------------------------------------------ -CAT:biological;EN:Benzaldehyde;MW:106.12;EXA:- +CAT:biological;EN:Benzaldehyde;MW:106.12;EXA:1 : <30,Ph,4:/CHO ; %------------------------------------------------------------------------------ -CAT:biological;EN:gamma-Nonalactone;MW:156.23;EXA:- +CAT:biological;EN:gamma-Nonalactone;MW:156.23;EXA:1 : <18,?5,2:O,1:?O,3^-12:/!4 ; @@ -433,42 +428,42 @@ CAT:biological;EN:gamma-Undecalactone;MW:184.27;EXA:- <18,?5,2:O,1:?O,3^-12:/!6 ; %------------------------------------------------------------------------------ -CAT:biological;EN:Muscone;MW:238.40;EXA:- +CAT:biological;EN:Muscone;MW:238.40;EXA:1 : -<-72,#1,60,-48,60,60,-48,60,60,-48,60,60,-48,60,60,-48,##,&1,9:?O,7:/_ +<-72,#1,60,-48,60,60,-48,60,60,-48,60,60,-48,60,60,-48,##,&1,9:?O,7:? ; %------------------------------------------------------------------------------ -CAT:biological;EN:alfa-Pinene;MW:136.24;EXA:- +CAT:biological;EN:alfa-Pinene;MW:136.24;EXA:1 : -<30,?6,3:??,5:/_,5=db,@2,180~zf`1,&4~zb +<30,?6,3:??,5:?,5=db,@2,180~zf`1,&4~zb ; %------------------------------------------------------------------------------ CAT:biological;EN:beta-Pinene;MW:136.24;EXA:- : -<30,?6,3:??,5://_,@2,180~zf`1,&4~zb +<30,?6,3:??,5:?d,@2,180~zf`1,&4~zb ; %------------------------------------------------------------------------------ -CAT:biological;EN:Neral;MW:152.24;EXA:- +CAT:biological;EN:Neral;MW:152.24;EXA:1 : <30,!?,!d,!3,?,!d,-60,CHO ; %------------------------------------------------------------------------------ -CAT:biological;EN:Geranial;MW:152.24;EXA:- +CAT:biological;EN:Geranial;MW:152.24;EXA:1 : <30,!?,!d,!3,?,!d,!,CHO ; %------------------------------------------------------------------------------ -CAT:biological;EN:p-Cymene;MW:134.21;EXA:- +CAT:biological;EN:p-Cymene;MW:134.21;EXA:1 : -<30,Ph,4:/?!,1:/_ +<30,Ph,4:/?!,1:? ; %------------------------------------------------------------------------------ -CAT:biological;EN:Benzyl-acetate;MW:150.18;EXA:- +CAT:biological;EN:Benzyl-acetate;MW:150.18;EXA:1 : -<30,Ph,@4,\,?O!,O!,!,Ph +<30,Ph,@4,!,?O!,O!,!,Ph ; %------------------------------------------------------------------------------ -CAT:biological;EN:Benzyl-benzoate;MW:212.25;EXA:- +CAT:biological;EN:Benzyl-benzoate;MW:212.25;EXA:1 : <30,Ph,4:/!O!'?O! ; @@ -490,19 +485,19 @@ CAT:biological;EN:Sphingosine;MW:299.50;EXA:1 %------------------------------------------------------------------------------ CAT:biological;EN:Tocopherol;MW:430.717;EXA:1 : -<30,Ph,3=?6,7:O,1'2'5:/_,8:/*_^60,6:/OH,@8,\,|,!12,4'8:/*_,12:/_ +<30,Ph,3=?6,7:O,1'2'5:?,8:?z^60,6:/OH,@8,!,|,!12,4'8:?z,12:? ; %------------------------------------------------------------------------------ CAT:biological;EN:Thiamine;MW:265.35;EXA:1 : -<30,Ph,4:/NH2,@3,\`1,!,<-12,?5,-1'-4=dl,1'5'8:N,11:S,6'9:/_, +<30,Ph,4:/NH2,@3,!`1,!,<-12,?5,-1'-4=dl,1'5'8:N,11:S,6'9:?, -3^-12:/!2'OH,8:p_^72 ; %------------------------------------------------------------------------------ CAT:biological;EN:Riboflavin;MW:376.37;EXA:2 : -<30,Ph,3'9=?6,8'16=dl,7'10'14:N,12:NH,11'13:?O,1'6:/_, - @10,\`1.5,!,*/OH,!,/*OH,!,*/OH,!2,OH +<30,Ph,3'9=?6,8'16=dl,7'10'14:N,12:NH,11'13:?O,1'6:?, + @10,!`1.5,!,*/OH,!,/*OH,!,*/OH,!2,OH ; %------------------------------------------------------------------------------ CAT:biological;EN:Nicotinic acid;MW:123.11;EXA:1 @@ -522,7 +517,7 @@ CAT:biological;EN:Pantothenic acid;MW:219.23;EXA:1 %------------------------------------------------------------------------------ CAT:biological;EN:Pyridoxine;MW:169.18;EXA:1 : -<30,Ph,2:N,3:/_,4:/OH,5'6:/!OH +<30,Ph,2:N,3:?,4:/OH,5'6:/!OH ; %------------------------------------------------------------------------------ CAT:biological;EN:Biotin;MW:244.31;EXA:1 @@ -530,21 +525,20 @@ CAT:biological;EN:Biotin;MW:244.31;EXA:1 <18,?5,4=?5,2:S,6'8:NH,7:?O,{4^-54'5^54}:*/H,3^-12:/*!4'COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Folic acid;MW:441.3975;EXA:1 +CAT:biological;EN:Folic acid;MW:441.3975;EXA:2 : <30,?6,3=Ph2,1=dl,2'7'10:N,6:NH,5:?O,1:/NH2, - @9,\,!NH!,Ph,@-3,\,?O,!NH!,/*COOH,!3,COOH + @9,!,!NH!,Ph,@-3,!,?O,!NH!,/*COOH,!3,COOH ; %------------------------------------------------------------------------------ CAT:biological;EN:Carotene;MW:536.8726;EXA:1 : -<30,?6,@4,\,!18,?6, - 8'10'12'14'16'18'20'22'24=dr,5'9'13'18'22'-5:/_,4'-6=dl,3'-1:?? +<30,?6,@4,!19,?6,8'10'12'14'16'18'20'22'24=dr,5'9'13'18'22'-5:?,4'-6=dl,3'-1:?? ; %------------------------------------------------------------------------------ CAT:biological;EN:Adrenalin;MW:183.21;EXA:1 : -<30,Ph,1'6:/OH,@4,\,*/OH,!2,NH! +<30,Ph,1'6:/OH,@4,!,*/OH,!2,NH! ; %------------------------------------------------------------------------------ CAT:biological;EN:Caffeine;MW:194.194;EXA:1 @@ -559,24 +553,24 @@ CAT:biological;EN:Nicotine;MW:162.23;EXA:1 %------------------------------------------------------------------------------ CAT:biological;EN:Capsaicin;MW:305.418;EXA:1 : -<30,Ph,1:/OH,6:/O!,@4,\,!NH!,?O,!7,?!,-3=dl +<30,Ph,1:/OH,6:/O!,@4,!,!NH!,?O,!7,?!,-3=dl ; %------------------------------------------------------------------------------ CAT:biological;EN:Gibberellin A3;MW:346.379;EXA:2 : -<18,?5,3=?7,5=?6[12],@8,160`1.3,&3,13=dl,6=wf,8=wb, - @5,40~zf`1,O,50,?O^180,&14~zb,2:/COOH,7://_,*8'13:*/OH,14:*/_,1'4:*/H^60 +<18,?5,3=?7,5=#1.2'?6,@8,160`1.3,&3,13=dl,6=wf,8=wb, + @5,40~zf`1,O,50,?O^180,&14~zb,2:/COOH,7:?d,*8'13:*/OH,14:?w,1'4:*/H^60 ; %------------------------------------------------------------------------------ CAT:biological;EN:Cholesterol;MW:386.664;EXA:1 : <30,?6,-4'-2=?6,-4=?5,7=dl, - 1:*/OH,4'12:*/_^60,{*9^60'10^180'11^-60'-1^-60}:/*H,@-1,17,/*_,!4,?! + 1:*/OH,4'12:?w^60,{*9^60'10^180'11^-60'-1^-60}:/*H,@-1,17,?z,!4,?! ; %------------------------------------------------------------------------------ CAT:biological;EN:Resveratrol;MW:228.24;EXA:1 : -<30,Ph,@4,\,!d,!Ph,2'6'-3:/OH +<30,Ph,@4,!,!d,!Ph,2'6'-3:/OH ; %------------------------------------------------------------------------------ CAT:biological;EN:Glutathione;MW:307.33;EXA:1 @@ -586,20 +580,20 @@ CAT:biological;EN:Glutathione;MW:307.33;EXA:1 %------------------------------------------------------------------------------ CAT:biological;EN:Trenbolone;MW:270.37;EXA:1 : -<30,?6,3'10=?6,13=?5,2'11'15=dl,1:?O,12:*/_^60,-1:/*OH,{9^60'*11^-60}:*/H +<30,?6,3'10=?6,13=?5,2'11'15=dl,1:?O,12:?w^60,-1:/*OH,{9^60'*11^-60}:*/H ; %------------------------------------------------------------------------------ CAT:biological;EN:Luciferin;MW:280.33;EXA:1 : -<30,Ph,3=?5,@8,\,?5,9'16=dl,9'14:N,7'11:S,1:/OH,-2:*/COOH +<30,Ph,3=?5,@8,!,?5,9'16=dl,9'14:N,7'11:S,1:/OH,-2:*/COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Chlorophyll a;MW:893.509;EXA:1 +CAT:biological;EN:Chlorophyll a;MW:893.509;EXA:2 : -<-36,#1,?5,@3,\,54,?5,@-2,\,54,?5,@-2,\,54,?5,@-2,\,&5,@6,22,70,&8,##, - 4'6'8'10'14'16'18'21'23'27=dl,@4,\`1.48~vf,Mg,&17~vb,@11,&27,@27,&23, - 4'11'17'23:N,{1~zf'9'15'21}:/_,14:/!,20:/!d,25:/*?O!'O!,26:?O, - @2,*\^-6,!2,?O!,O!2,!d,|,!13,1'5'9'13:/_ +<-36,#1,?5,@3,!,54,?5,@-2,!,54,?5,@-2,!,54,?5,@-2,!,&5,@6,22,70,&8,##, + 4'6'8'10'14'16'18'21'23'27=dl,@4,!`1.48~vf,Mg,&17~vb,@11,&27,@27,&23, + 4'11'17'23:N,{1~zf'9'15'21}:?,14:/!,20:/!d,25:/*?O!'O!,26:?O, + @2,-6~wf,!2,?O!,O!2,!d,|,!13,1'5'9'13:? ; %------------------------------------------------------------------------------ CAT:biological;EN:Alizarin;MW:240.21;EXA:1 @@ -609,23 +603,23 @@ CAT:biological;EN:Alizarin;MW:240.21;EXA:1 %------------------------------------------------------------------------------ CAT:biological;EN:Indigo;MW:262.26;EXA:1 : -<30,Ph,3=?5,@-2,\\,?5,-3=Ph2,7'14:NH,9'11:?O +<30,Ph,3=?5,@-2,!d,?5,-3=Ph2,7'14:NH,9'11:?O ; %------------------------------------------------------------------------------ CAT:biological;EN:6,6'-dibromoindigo;MW:420.0549;EXA:1 : -<30,Ph,3=?5,@-2,\\,?5,-3=Ph2,7'14:NH,9'11:?O,1'-2:/Br +<30,Ph,3=?5,@-2,!d,?5,-3=Ph2,7'14:NH,9'11:?O,1'-2:/Br ; %------------------------------------------------------------------------------ -CAT:biological;EN:Carminic Acid;MW:492.39;EXA:1 +CAT:biological;EN:Carminic Acid;MW:492.39;EXA:2 : -<30,Ph,3=?6,-3=Ph2,7'10:?O,2'5'6'13:/OH,11:/_,12:/COOH, - @1,\~wb`1,?6,-5:O,-1'*-2'-3:/*OH,-4:*/!OH +<30,Ph,3=?6,-3=Ph2,7'10:?O,2'5'6'13:/OH,11:?,12:/COOH, + @1,!~wb`1,?6,-5:O,-1'*-2'-3:/*OH,-4:*/!OH ; %------------------------------------------------------------------------------ CAT:biological;EN:Curcumin;MW:368.38;EXA:1 : -<30,Ph,@3,\,!7,Ph,8'13=dr,9'11:?O,6'-3:/OH,5'-4:/O! +<30,Ph,@3,!8,Ph,8'13=dr,9'11:?O,6'-3:/OH,5'-4:/O! ; %------------------------------------------------------------------------------ CAT:biological;EN:Berberine;MW:336.36;EXA:1 @@ -633,14 +627,14 @@ CAT:biological;EN:Berberine;MW:336.36;EXA:1 <30,Ph,3=Ph,-3=?6,-2=Ph2,-3=?5,8:N,8:p_^60,-1'-3:O,{1>vt'2}:/!OH ; %============================================================================== -CAT:biological;EN:Apigenin;MW:270.24;EXA:- +CAT:biological;EN:Apigenin;MW:270.24;EXA:1 : -<30,Ph,2'6:/OH,3=?6,9=dl,10:O,7:?O,9:/Ph'(-3:/OH) +<30,Ph,2'6:/OH,3=?6,9=dl,10:O,7:?O,@9,!,Ph,-3:/OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Luteolin;MW:286.24;EXA:- +CAT:biological;EN:Luteolin;MW:286.24;EXA:1 : -<30,Ph,2'6:/OH,3=?6,9=dl,10:O,7:?O,9:/Ph'(-2'-3:/OH) +<30,Ph,2'6:/OH,3=?6,9=dl,10:O,7:?O,@9,!,Ph,-2'-3:/OH ; %------------------------------------------------------------------------------ CAT:biological;EN:Flavone;MW:222.24;EXA:1 @@ -648,12 +642,12 @@ CAT:biological;EN:Flavone;MW:222.24;EXA:1 <30,Ph,3=?6,9=dl,10:O,7:?O,9:/Ph, ; %------------------------------------------------------------------------------ -CAT:biological;EN:Isoflavone;MW:222.24;EXA:- +CAT:biological;EN:Isoflavone;MW:222.24;EXA:1 : <30,Ph,3=?6,9=dl,10:O,7:?O,8:/Ph, ; %------------------------------------------------------------------------------ -CAT:biological;EN:Flavanone;MW:224.25;EXA:- +CAT:biological;EN:Flavanone;MW:224.25;EXA:1 : <30,Ph,3=?6,10:O,7:?O,9:/Ph, ; @@ -665,31 +659,31 @@ CAT:biological;EN:Flavonol;MW:238.24;EXA:1 %------------------------------------------------------------------------------ CAT:biological;EN:Cianidanol;MW:290.27;EXA:1 : -<30,Ph,3=?6,@8,*\,Ph,7:O,{1'5'9~zf'13'14}:/OH +<30,Ph,3=?6,@8,!w,Ph,7:O,{1'5'9~zf'13'14}:/OH ; %------------------------------------------------------------------------------ CAT:biological;EN:Quercetin;MW:302.24;EXA:1 : -<30,Ph,3=?6,@9,\,Ph,9=dl,10:O,7:?O,2'6'8'13'14:/OH +<30,Ph,3=?6,@9,!,Ph,9=dl,10:O,7:?O,2'6'8'13'14:/OH ; %============================================================================== -CAT:biological;EN:Limonin;MW:470.518;EXA:1 +CAT:biological;EN:Limonin;MW:470.518;EXA:2 : <30,?6,-3'-4=?6,-5=?3,-2=wf,-1=wb,6=?5,-4=?6,-5=wf,13'15'17'20:O, - 3'12'21:?O,{4^60'*8^60}:*/_,18:??,{1^60'5^180'16^60}:/*H, - @14,\*,|,?5,1'4=dl,3:O + 3'12'21:?O,{4^60'*8^60}:?w,18:??,{1^60'5^180'16^60}:/*H, + @14,!z,|,?5,1'4=dl,3:O ; %------------------------------------------------------------------------------ CAT:biological;EN:Cromolyn;MW:468.37;EXA:1 : <30,Ph,|,-1=?6,3=dl,1:O,4:?O,2:/COOH, - @$2,\,O!2,/OH,!2,O,60,Ph,|,-5=?6,3=dl,4:O,1:?O,3:/COOH + @$2,!,O!2,/OH,!2,O,60,Ph,|,-5=?6,3=dl,4:O,1:?O,3:/COOH ; %------------------------------------------------------------------------------ CAT:biological;EN:Emetine;MW:480.649;EXA:1 : <30,Ph,-4'-4=?6,8:N,1'6:/O!,-2:/*!,{7^-60'12^-60}:/*H, - @-3,\,!zb,<-60,|,?6,5=dl,2:NH,-6^-60:*/H,|,-2=?6,2'4=dl,-2'-3:/O! + @-3,!,!zb,<-60,|,?6,5=dl,2:NH,-6^-60:*/H,|,-2=?6,2'4=dl,-2'-3:/O! ; %------------------------------------------------------------------------------ CAT:biological;EN:Acronycine;MW:321.376;EXA:1 @@ -699,23 +693,23 @@ CAT:biological;EN:Acronycine;MW:321.376;EXA:1 %------------------------------------------------------------------------------ CAT:biological;EN:Piperine;MW:285.343;EXA:1 : -<30,Ph,-1=?5,-1'-3:O,@4,\,!d,!,!d,!,?O!,?6,-6:N +<30,Ph,-1=?5,-1'-3:O,@4,!,!d,!,!d,!,?O!,?6,-6:N ; %------------------------------------------------------------------------------ CAT:biological;EN:Febrifugine;MW:301.34;EXA:1 : -<30,Ph,3=?6,@9,8=dl,\,!2,!zb,?6,7'9:N,-5:NH,10'12:?O,-1:*/OH +<30,Ph,3=?6,8=dl,@9,!3,!zb,?6,7'9:N,-5:NH,10'12:?O,-1:*/OH ; %------------------------------------------------------------------------------ CAT:biological;EN:Hypericin;MW:504.44;EXA:2 : <30,Ph,-4'-3'(11--4)'(16---17)'19'(23---24)'(22--29)=?6, - 12'14'16'17'*22'24'26'28'33'35=dl,7'25:?O,13'26:/_,2'6'11'21'23'28:/OH + 12'14'16'17'*22'24'26'28'33'35=dl,7'25:?O,13'26:?,2'6'11'21'23'28:/OH ; %------------------------------------------------------------------------------ CAT:biological;EN:Camphor;MW:152.23;EXA:1 : -#1,15,-30,90,90,30,##,&1,@2,0~si_`1.6,&5,{-1^45'-1^-65'5^-45}:/_,4:?O +#1,15,-30,90,90,30,##,&1,@2,0~si_`1.6,&5,{-1^45'-1^-65'5^-45}:?,4:?O ; %------------------------------------------------------------------------------ CAT:biological;EN:Sparteine;MW:234.3803;EXA:1 @@ -725,19 +719,19 @@ CAT:biological;EN:Sparteine;MW:234.3803;EXA:1 %------------------------------------------------------------------------------ CAT:biological;EN:Mitomycine C;MW:334.332;EXA:1 : -<30,?6,3'6=dl,2'5:?O,1:/_,-4=?5,-3:N, - 6:/NH2,,-3=?5,-2=?3,-1=wb,-2=wf,-1:NH,8:/*O!^35,@$9,\,!,O,60,?O!,NH2 +<30,?6,3'6=dl,2'5:?O,1:?,-4=?5,-3:N, + 6:/NH2,,-3=?5,-2=?3,-1=wb,-2=wf,-1:NH,8:/*O!^35,@$9,!2,O,60,?O!,NH2 ; %------------------------------------------------------------------------------ -CAT:biological;EN:Podophyllotoxin;MW:414.41;EXA:1 +CAT:biological;EN:Podophyllotoxin;MW:414.41;EXA:2 : <0,?5,2'5:O,-3=Ph2,-3=?6,-3=?5,-2:O,-1=wb,-3:?O, - @10,\*,Ph,-2'-3'-4:/O!,13:/*OH,{11^-60'*12^60}:*/H + @10,!z,Ph,-2'-3'-4:/O!,13:/*OH,{11^-60'*12^60}:*/H ; %------------------------------------------------------------------------------ CAT:biological;EN:Warfarin;MW:308.333;EXA:1 : -<30,Ph,3=?6,8=dl,10:O,7:/OH,9:?O,@8,\,/Ph`1,60,!,?O! +<30,Ph,3=?6,8=dl,10:O,7:/OH,9:?O,@8,!,/Ph`1,60,!,?O! ; %------------------------------------------------------------------------------ CAT:biological;EN:Genistein;MW:270.24;EXA:1 @@ -750,10 +744,10 @@ CAT:biological;EN:Baicalein;MW:270.24;EXA:1 <30,Ph,3=?6,9=dl,10:O,1'2'6:/OH,7:?O,8:/Ph ; %------------------------------------------------------------------------------ -CAT:biological;EN:Reserpine;MW:608.688;EXA:1 +CAT:biological;EN:Reserpine;MW:608.688;EXA:2 : <54,Ph,3=?5,-2'-4'-3=?6,9=dl,11:N,7:NH,{*10^-60'15^-60'16^60}:/*H, - @20,*\,O!,?O,!Ph,{-2'-3'-4'1'19~zf>rl}:/O!,18:*/?O!'O!>lr + @20,!w,O!,?O,!Ph,{-2'-3'-4'1'19~zf>rl}:/O!,18:*/?O!'O!>lr ; %------------------------------------------------------------------------------ CAT:biological;EN:Rotenone;MW:394.423;EXA:1 @@ -764,27 +758,27 @@ CAT:biological;EN:Rotenone;MW:394.423;EXA:1 %------------------------------------------------------------------------------ CAT:biological;EN:Pyrethrin I;MW:328.452;EXA:1 : -<30,?3,{3^35'*3^-35}:*/_,@1,*\,!d,?!, - @2,\*,?O!,O,-36~zb,|,?5,-2=dl,-1:/_,-3:?O,@-2,\,!4,-1'-3=dl +<30,?3,{3^35'*3^-35}:?w,@1,!w,!d,?!, + @2,!z,?O!,O,-36~zb,|,?5,-2=dl,-1:?,-3:?O,@-2,!5,-1'-3=dl ; %------------------------------------------------------------------------------ CAT:biological;EN:Oseltamivir;MW:312.40;EXA:1 : -<30,?6,3=dl,6:*/NH2,@1,\*,NH!,?O!,@2,*\,O!,/!,!2,4:/?O!'O!2 +<30,?6,3=dl,6:*/NH2,@1,!z,NH!,?O!,@2,!w,O!,/!,!2,4:/?O!'O!2 ; %------------------------------------------------------------------------------ -CAT:biological;EN:Paclitaxel;MW:853.918;EXA:1 +CAT:biological;EN:Paclitaxel;MW:853.918;EXA:2 : ?6,5=dl,@3,#1,36,45,45,45,45,##,&5,-4=?6,-4=?4,-1=wb,-3=wf,-1:O, - 4:??,6:/_,{3^-60'15}:*/OH,8^-60:/*H,9^60:*/_,10:?O, - @1,\,O!,?O!,*/OH,!,/Ph,60~wf,NH,-60,?O,60,Ph, - @7,\*,O,-45,?O,60,Ph,{11>rl'*12^-15>lr}:*/O!'?O! + 4:??,6:?,{3^-60'15}:*/OH,8^-60:/*H,9^60:?w,10:?O, + @1,!,O!,?O!,*/OH,!,/Ph,60~wf,NH,-60,?O,60,Ph, + @7,!z,O,-45,?O,60,Ph,{11>rl'*12^-15>lr}:*/O!'?O! ; %------------------------------------------------------------------------------ CAT:biological;EN:Mevastatin;MW:390.52;EXA:1 : -<30,?6,2=dl,4^60:*/H,-4=?6,-4=dl,9:*/_, - @10,*\,!,60~wb,?6,6:O,-2:?O,-4:/*OH,@5,\*,O,60,?O!,*/_,!2 +<30,?6,2=dl,4^60:*/H,-4=?6,-4=dl,9:?w, + @10,!w,!,60~wb,?6,6:O,-2:?O,-4:/*OH,@5,!z,O,60,?O!,?w,!2 ; %------------------------------------------------------------------------------ CAT:biological;EN:Sesamine;MW:354.35;EXA:1 @@ -799,23 +793,23 @@ CAT:biological;EN:Morphine;MW:285.343;EXA:1 @7,60~wf`0.75,70~si_`1.3,45,N?,&9~wb,15=dl,6:/OH,8^180:*/H,12:/*OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Quinine;MW:324.424;EXA:1 +CAT:biological;EN:Quinine;MW:324.424;EXA:2 : <30,Ph,3=Ph,7:N,6:/O!, - @10,\,*/OH,/*H^-60,!,|,?6,2:N,1^60:*/H,@4,*\,!d,@2,165~zf,60,&5~zb + @10,!,*/OH,/*H^-60,!,|,?6,2:N,1^60:*/H,4:*/!d,@2,165~zf,60,&5~zb ; %------------------------------------------------------------------------------ CAT:biological;EN:Atoropin;MW:289.375;EXA:1 : -<30,O!,?O!2,Ph,@$1,\~zb^-60,|,?7`1.1,@6,*\^190`1.25,N?,&3~wb,$3:/!OH~wv +<30,O!,?O!2,Ph,@1,-60~zb,?7`1.1,@-2,190~wf`1.25,N?,&-5~wb,$3:/!OH~wv ; %------------------------------------------------------------------------------ -CAT:biological;EN:Colchicine;MW:399.443;EXA:1 +CAT:biological;EN:Colchicine;MW:399.443;EXA:2 : <30,Ph,1'2'6:/O!,-4'-5=?7,-1'-4'-6=dl,-2:?O,-3:/O!,9:/NH!'?O! ; %------------------------------------------------------------------------------ -CAT:biological;EN:Lycorine;MW:287.315;EXA:1 +CAT:biological;EN:Lycorine;MW:287.315;EXA:2 : <30,Ph,-4'-2=?6,6'(9--12)=?5,13=dl,8:N,15'17:O,{*9^180'10^60}:*/H,13'*14:*/OH ; @@ -825,127 +819,131 @@ CAT:biological;EN:Ibotenic acid;MW:158.113;EXA:1 <18,?5,4=dl,3:O,2:NH,1:?O,4^-24:/?NH2'!COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Illudin S;MW:264.3;EXA:1 +CAT:biological;EN:Illudin S;MW:264.3;EXA:2 : -<30,?6,3=?5,6:**?3,4'7=dl,2:?O,5:/_,{1^35'8^35}:*/_,{*1^-35'9}:*/OH,8^-35:/*!OH +<30,?6,3=?5,6:**?3,4'7=dl,2:?O,5:?,{1^35'8^35}:?w,{*1^-35'9}:*/OH,8^-35:/*!OH ; %------------------------------------------------------------------------------ CAT:biological;EN:Muscarine;MW:174.26;EXA:1 : -<18,?5,2:O,1:*/_,5:/*OH,@3,*\,48,N,??,p_^180,! +<18,?5,2:O,1:?w,5:/*OH,@3,!w,48,N,??,p_^180,! ; %------------------------------------------------------------------------------ CAT:biological;EN:Psilocybin;MW:284.248;EXA:1 : -<30,Ph,3=?5,8=dl,9:NH,@2,\,O,-60,P,?O^-45,/OH^45,90,OH,7:/!2'N?!>lr +<30,Ph,3=?5,8=dl,9:NH,@2,!,O,-60,P,?O^-45,/OH^45,90,OH,7:/!2'N?!>lr ; %------------------------------------------------------------------------------ -CAT:biological;EN:Tetrodotoxine;MW:319.27;EXA:2 +CAT:marine toxine;EN:Tetrodotoxine;MW:319.27;EXA:2 : #1,<60,-90,60,-30`1.15,150,60,&1,@3,-135,60,-30`1.15,150,&4, - @10,\,O,60`1.33,60,&$3~si_,@8,-15~si_,O,&12,##, - @9,45,-60,OH,1^120://NH,{5~zf^-15'7'9^-75'12'13~zf}:/OH,2:NH,6^180:NH + @10,!,O,60`1.33,60,&$3~si_,@8,-15~si_,O,&12,##, + @9,45,-60,OH,1^120:?NH,{5~zf^-15'7'9^-75'12'13~zf}:/OH,2:NH,6^180:NH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Aflatoxin B1;MW:312.27;EXA:1 +CAT:mycotoxin;EN:Aflatoxin B1;MW:312.27;EXA:1 : <30,Ph,6=?6,-2'4'-2=?5,-2'10=dl,7'14'17:O,2:/O!,8'11:?O,{15^-54'16^54}:*/H ; %------------------------------------------------------------------------------ -CAT:biological;EN:Aflatoxin B2;MW:314.3;EXA:- +CAT:mycotoxin;EN:Aflatoxin B2;MW:314.3;EXA:- : <30,Ph,6=?6,-2'4'-2=?5,10=dl,7'14'17:O,2:/O!,8'11:?O,{15^-54'16^54}:*/H ; %------------------------------------------------------------------------------ -CAT:biological;EN:Aflatoxin G1;MW:328.27;EXA:2 +CAT:mycotoxin;EN:Aflatoxin G1;MW:328.27;EXA:2 : <30,Ph,6'-2=?6,4'-2=?5,-2'10=dl,7'12'15'18:O,2:/O!,8'11:?O,{16^-54'17^54}:*/H ; %------------------------------------------------------------------------------ -CAT:biological;EN:Aflatoxin G2;MW:330.29;EXA:- +CAT:mycotoxin;EN:Aflatoxin G2;MW:330.29;EXA:- : <30,Ph,6'-2=?6,4'-2=?5,10=dl,7'12'15'18:O,2:/O!,8'11:?O,{16^-54'17^54}:*/H ; %------------------------------------------------------------------------------ -CAT:biological;EN:Aflatoxin M1;MW:328.3;EXA:- +CAT:mycotoxin;EN:Aflatoxin M1;MW:328.3;EXA:- : <30,Ph,6=?6,-2'4'-2=?5,-2'10=dl,7'14'17:O,2:/O!,8'11:?O,15^-54:*/H,16^54:*/OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Aflatoxin M2;MW:330.29;EXA:- +CAT:mycotoxin;EN:Aflatoxin M2;MW:330.29;EXA:- : <30,Ph,6=?6,-2'4'-2=?5,10=dl,7'14'17:O,2:/O!,8'11:?O,15^-54:*/H,16^54:*/OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Ochratoxin A;MW:403.813;EXA:1 +CAT:mycotoxin;EN:Ochratoxin A;MW:403.813;EXA:1 : -<30,Ph,@4,\,!,/*COOH,!`1.2,NH,!`1.2,?O!, - Ph,-2:/Cl,-5:/OH,-4=?6,-3:O,-2:*/_,-4:?O +<30,Ph,@4,!2,/*COOH,!`1.2,NH,!`1.2,?O!,Ph,-2:/Cl,-5:/OH,-4=?6,-3:O,-2:?w,-4:?O ; %------------------------------------------------------------------------------ -CAT:biological;EN:Deoxynivalenol;MW:296.32;EXA:1 +CAT:mycotoxin;EN:Deoxynivalenol;MW:296.32;EXA:1 : -<30,?6,3=?6,5=dl,1:?O,6:/_,-1:O,{*4^60'-2}:*/H,7^30:*/_,@7,72`.9,80`1.3,&9, +<30,?6,3=?6,5=dl,1:?O,6:?,-1:O,{*4^60'-2}:*/H,7^30:?w,@7,72`.9,80`1.3,&9, @8,?3,-3=wf_,-1=si_,-1:O,{2'12^18}:/*OH,3^-60`1:/*!OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Patulin;MW:154.12;EXA:1 +CAT:mycotoxin;EN:Patulin;MW:154.12;EXA:1 : <30,?6,3=?5,2'10=dl,6'7:O,5:/OH,8:?O ; %------------------------------------------------------------------------------ -CAT:biological;EN:Citrinin;MW:250.247;EXA:1 +CAT:mycotoxin;EN:Citrinin;MW:250.247;EXA:1 : -<30,?6,3=?6,2'5'11=dl,9:O,1:?O,2:/_,7'*8:*/_,5:/OH,6:/COOH +<30,?6,3=?6,2'5'11=dl,9:O,1:?O,2:?,7'*8:?w,5:/OH,6:/COOH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Zearalenone;MW:318.364;EXA:1 +CAT:mycotoxin;EN:Zearalenone;MW:318.364;EXA:1 : -<30,Ph,@3,#1,\,!5,60,60,!4,&4,##,1'5'8=dl,17:O,16:*/_,1'5:/OH,12'18:?O +<30,Ph,@3,#1,!6,60,60,!4,&4,##,1'5'8=dl,17:O,16:?w,1'5:/OH,12'18:?O ; %------------------------------------------------------------------------------ -CAT:biological;EN:Fumonisin B1;MW:721.83;EXA:1 +CAT:mycotoxin;EN:Fumonisin B1;MW:721.83;EXA:1 : -<30,!19,@6,*\,O!,?O!2,/COOH,!2,COOH,@7,\*`1.2,O!,?O!2,/COOH,!2,COOH, - 5'9:/*_,11'16'*18:*/OH,19:/*NH2 +<30,!19,@6,!w,O!,?O!2,/COOH,!2,COOH,@7,!z`1.2,O!,?O!2,/COOH,!2,COOH, + 5'9:?z,11'16'*18:*/OH,19:/*NH2 ; %------------------------------------------------------------------------------ -CAT:biological;EN:Dicumarol;MW:336.295;EXA:- +CAT:mycotoxin;EN:Puberulic acid;MW:198.13;EXA:1 : -<30,Ph,3=?6,@8,\`1.5,!`1.5,?6,-4=Ph2,8'14=db,10'16:O,9'17:?O,7'13:/OH +<38.5,?7,2'4'7=db,3:/COOH,1'5'7:/OH,6:?O +; +%------------------------------------------------------------------------------ +CAT:biological;EN:Dicumarol;MW:336.295;EXA:1 +: +<30,Ph,3=?6,@8,!`1.5,!`1.5,?6,-4=Ph2,8'14=db,10'16:O,9'17:?O,7'13:/OH ; %------------------------------------------------------------------------------ CAT:biological;EN:Dihydroxybergamotin;MW:338.40;EXA:- : -<30,Ph,3=?6,6=?5,10'13=db,7'13:O,8:?O,@5,\,O,!2,!d,/_,!3,/OH,!,??,!OH +<30,Ph,3=?6,6=?5,10'13=db,7'13:O,8:?O,@5,!,O,!2,!d,?,!3,/OH,!,??,!OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Bergamotin;MW:338.40;EXA:- +CAT:biological;EN:Bergamotin;MW:338.40;EXA:1 : -<30,Ph,3=?6,6=?5,10'13=db,7'13:O,8:?O,@5,\,O,!2,!d,/_,!3,!d,?! +<30,Ph,3=?6,6=?5,10'13=db,7'13:O,8:?O,@5,!,O,!2,!d,?,!3,!d,?! ; %------------------------------------------------------------------------------ -CAT:biological;EN:Alkannin;MW:288.29;EXA:- +CAT:biological;EN:Alkannin;MW:288.29;EXA:1 : -<30,Ph,3=?6,9=db,2'5:/OH,7'10:?O,@8,\,/*OH,!2,!d,?! +<30,Ph,3=?6,9=db,2'5:/OH,7'10:?O,@8,!,/*OH,!2,!d,?! ; %============================================================================== -CAT:synthetic;EN:Benzene;MW:78.11;EXA:- +CAT:synthetic;EN:Benzene;MW:78.11;EXA:1 : <30,Ph ; %------------------------------------------------------------------------------ -CAT:synthetic;EN:Phenol;MW:94.11;EXA:- +CAT:synthetic;EN:Phenol;MW:94.11;EXA:1 : <30,Ph,3:/OH ; %------------------------------------------------------------------------------ -CAT:synthetic;EN:Aniline;MW:93.13;EXA:- +CAT:synthetic;EN:Aniline;MW:93.13;EXA:1 : <30,Ph,3:/NH2 ; %------------------------------------------------------------------------------ -CAT:synthetic;EN:Picric acid;MW:229.10;EXA:- +CAT:synthetic;EN:Picric acid;MW:229.10;EXA:1 : <30,Ph,1'3'5:/NO2,2:/OH ; @@ -955,53 +953,53 @@ CAT:synthetic;EN:Hexaphenylbenzene;MW:534.6876;EXA:1 <30,Ph,1'2'3'4'5'6:/Ph ; %============================================================================== -CAT:synthetic;EN:Naphthalene;MW:128.17;EXA:1 +CAT:aromatic;EN:Naphthalene;MW:128.17;EXA:1 : <30,Ph,3=Ph ; %------------------------------------------------------------------------------ -CAT:synthetic;EN:Anthracene;MW:178.23;EXA:1 +CAT:aromatic;EN:Anthracene;MW:178.23;EXA:1 : <30,Ph,3'6=Ph ; %------------------------------------------------------------------------------ -CAT:synthetic;EN:Phenanthrene;MW:178.23;EXA:1 +CAT:aromatic;EN:Phenanthrene;MW:178.23;EXA:1 : <30,Ph,4'6=Ph ; %------------------------------------------------------------------------------ -CAT:synthetic;EN:Naphthacene;MW:228.3;EXA:1 +CAT:aromatic;EN:Naphthacene;MW:228.3;EXA:1 : <30,Ph,6'3'-3=Ph ; %------------------------------------------------------------------------------ -CAT:synthetic;EN:Chrysene;MW:228.3;EXA:1 +CAT:aromatic;EN:Chrysene;MW:228.3;EXA:1 : <30,Ph2,6'4'-4=Ph ; %------------------------------------------------------------------------------ -CAT:synthetic;EN:Pyrene;MW:202.25;EXA:1 +CAT:aromatic;EN:Pyrene;MW:202.25;EXA:1 : <30,Ph2,6'4=Ph,16---7=?6,-2=dl ; %------------------------------------------------------------------------------ -CAT:synthetic;EN:Coronene;MW:300.35;EXA:1 +CAT:aromatic;EN:Coronene;MW:300.35;EXA:1 : <30,Ph,{1'11--2'15--3'19--4'23--5'27---7}=?6,9'12'14'17'20'22'25'28'30=dl ; %------------------------------------------------------------------------------ -CAT:synthetic;EN:Kekulene;MW:600.7;EXA:2 +CAT:aromatic;EN:Kekulene;MW:600.7;EXA:2 : <30,?6,3'-3'-2'-3'-2'-3'-2'-3'-2'-3'(-2----5)'(5---- -4)=?6, 1'*5'7'9'11'13'17'19'21'23'27'29'31'33'37'39'41'43'47'49'51'53'57'60=dl ; %============================================================================== -CAT:synthetic;EN:12-Crown-4;MW:176.21;EXA:- +CAT:synthetic;EN:12-Crown-4;MW:176.21;EXA:1 : <-180,O,30,60,60,O,-30,60,60,O,-30,60,60,O,-30,60,&1 ; %------------------------------------------------------------------------------ -CAT:synthetic;EN:15-Crown-5;MW:220.26;EXA:- +CAT:synthetic;EN:15-Crown-5;MW:220.26;EXA:1 : <-180,O,48,60,60,O,-48,60,60,O,-48,60,60,O,-48,60,60,O,-48,60,&1 ; @@ -1011,9 +1009,9 @@ CAT:synthetic;EN:18-Crown-6;MW:264.32;EXA:1 <-180,O,60,60,60,O,-60,60,60,O,-60,60,60,O,-60,60,60,O,-60,60,60,O,-60,60,&1 ; %============================================================================== -CAT:synthetic;EN:Porphyrin;MW:310.4;EXA:2 +CAT:synthetic;EN:Porphyrin;MW:310.4;EXA:1 : -<9,#1,?5,@3,\,54,?5,@-2,\,54,?5,@-2,\,54,?5,@-2,\,&5,##, +<9,#1,?5,@3,!,54,?5,@-2,!,54,?5,@-2,!,54,?5,@-2,!,&5,##, 1'4'6'8'10'14'16'18'21'23'27=dl,4'17:N,11'23:NH ; %------------------------------------------------------------------------------ @@ -1034,269 +1032,321 @@ CAT:synthetic;EN:Melamine;MW:126.12;EXA:1 <30,Ph,2'4'6:N,1'3'5:/NH2 ; %============================================================================== -CAT:synthetic;EN:Tartrazine;MW:534.3;EXA:1 +CAT:pigment;EN:Tartrazine;MW:534.3;EXA:1 : -<30,Ph,1:/SO3Na,@4,\,N,!d,N,!,<-12,?5,-2'-5=dl,-2'-3:N,-1:/COONa,-4:/OH, +<30,Ph,1:/SO3Na,@4,!,N,!d,N,!,<-12,?5,-2'-5=dl,-2'-3:N,-1:/COONa,-4:/OH, -3:/Ph'(4:/SO3Na) ; %------------------------------------------------------------------------------ -CAT:synthetic;EN:Disperse yellow 3;MW:269.30;EXA:1 +CAT:pigment;EN:Disperse yellow 3;MW:269.30;EXA:1 : -<30,Ph,2:/_,5:/OH,@4,\,N,!d,N,!Ph,-3:/NH!'?O! +<30,Ph,2:?,5:/OH,@4,!,N,!d,N,!Ph,-3:/NH!'?O! ; %------------------------------------------------------------------------------ -CAT:synthetic;EN:Disperse orenge 30;MW:450.27;EXA:1 +CAT:pigment;EN:Disperse orenge 30;MW:450.27;EXA:1 : -<30,Ph,1:/NO2,3'5:/Cl,@4,\,N,!d,N,!Ph,@-3,\,N,/!2'CN,!3,?O,!O! +<30,Ph,1:/NO2,3'5:/Cl,@4,!,N,!d,N,!Ph,@-3,!,N,/!2'CN,!3,?O,!O! ; %------------------------------------------------------------------------------ -CAT:synthetic;EN:Disperse red 65;MW:371.82;EXA:1 +CAT:pigment;EN:Disperse red 65;MW:371.82;EXA:1 : -<30,Ph,1:/NO2,3:/Cl,@4,\,N,!d,N,!Ph,-1:/_,@-3,\,N,/!2'CN,!2 +<30,Ph,1:/NO2,3:/Cl,@4,!,N,!d,N,!Ph,-1:?,@-3,!,N,/!2'CN,!2 ; %------------------------------------------------------------------------------ CAT:synthetic;EN:Erythrosine;MW:835.9;EXA:1 : -<30,Ph,3'9=?6,8'13'16=dl,10:O,-2:?O,1'5'12'14:/I,@7,\,Ph,-1:/COOH,6:/OH +<30,Ph,3'9=?6,8'13'16=dl,10:O,-2:?O,1'5'12'14:/I,@7,!,Ph,-1:/COOH,6:/OH ; %------------------------------------------------------------------------------ -CAT:synthetic;EN:Sudan red 1;MW:248.28;EXA:1 +CAT:pigment;EN:Sudan red 1;MW:248.28;EXA:1 : -<30,Ph,1=Ph,4:/OH,@3,\,N,!d,N,!Ph +<30,Ph,1=Ph,4:/OH,@3,!,N,!d,N,!Ph ; %------------------------------------------------------------------------------ -CAT:synthetic;EN:Basic blue 1;MW:319.86;EXA:1 +CAT:pigment;EN:Basic blue 1;MW:319.86;EXA:1 : <30,Ph,3=Ph,6=Ph,2:S,5:N,8'13:/N?!,2:p_,@2,@(3.5'1.5),Cl,n_^15 ; %------------------------------------------------------------------------------ -CAT:synthetic;EN:Disperse red 11;MW:268.274;EXA:1 +CAT:pigment;EN:Disperse red 11;MW:268.274;EXA:1 : <30,Ph,3=?6,-3=dr,9=Ph,7'10:?O,-1'-4:/NH2,-2:/O! ; %------------------------------------------------------------------------------ -CAT:synthetic;EN:Disperse red 60;MW:331.326;EXA:1 +CAT:pigment;EN:Disperse red 60;MW:331.326;EXA:1 : <30,Ph,3=?6,-3=dr,9=Ph,7'10:?O,-1'-4:/NH2,-2:/O!'Ph ; %------------------------------------------------------------------------------ -CAT:synthetic;EN:Disperse violet 26;MW:422.438;EXA:1 +CAT:pigment;EN:Disperse violet 26;MW:422.438;EXA:1 : <30,Ph,3=?6,-3=dr,9=Ph,7'10:?O,-1'-4:/NH2,{-2>-30'-3>30}:/O!'Ph ; %------------------------------------------------------------------------------ -CAT:synthetic;EN:Vat blue 1;MW:262.27;EXA:1 +CAT:pigment;EN:Vat blue 1;MW:262.27;EXA:1 +: +<30,Ph,3=?5,@8,!d,?5,-3=dr,-3=Ph,7'14:NH,9'11:?O +; +%------------------------------------------------------------------------------ +CAT:pfas;EN:PFOA;MW:414.07;EXA:1 +: +0,0,0,0,0,0,0,?O,-60,OH,{1^-90'1:7}:/F,{1:7}:/F^180 +; +%------------------------------------------------------------------------------ +CAT:pfas;EN:PFOS;MW:500.13;EXA:1 +: +0,0,0,0,0,0,0,0,S,?O,?O^-180,-.1,OH,{1^-90,1:8}:/F,{1:8}:/F^180 +; +%------------------------------------------------------------------------------ +CAT:pfas;EN:PFHxS;MW:400.12;EXA:1 +: +0,0,0,0,0,0,S,?O,?O^-180,-.1,OH,{1^-90'1:6}:/F,{1:6}:/F^180 +; +%------------------------------------------------------------------------------ +CAT:pfas;EN:GenX;MW:330.05;EXA:1 +: +0,0,0,O,0,0`1,?O,-60,OH,{1^-90,1:3}:/F,{1:3'5}:/F^180,5:/?F?F!F +; +%------------------------------------------------------------------------------ +CAT:pfas;EN:FOSA;MW:499.15;EXA:1 +: +0,0,0,0,0,0,0,0,S,?O,?O^-180,-.1,NH2,{1^-90'1:8}:/F,{1:8}:/F^180 +; +%------------------------------------------------------------------------------ +CAT:pfas;EN:8,2-FTOH;MW:464.12;EXA:1 +: +0,0,0,0,0,0,0,0,-60,60,OH,{1^-90'1:8}:/F,{1:8}:/F^180 +; +%------------------------------------------------------------------------------ +CAT:pfas;EN:6,2-FTS;MW:428.16;EXA:1 +: +0,0,0,0,0,0,-60,60,S,?O,?O^-180,-.1,OH,{1^-90'1:6}:/F,{1:6}:/F^180 +; +%------------------------------------------------------------------------------ +CAT:pfas;EN:PFOPA;MW:500.13;EXA:1 +: +0,0,0,0,0,0,0,0,P,?O,/OH^-179.8,-.1,OH,{1^-90'1:8}:/F,{1:8}:/F^180 +; +%------------------------------------------------------------------------------ +CAT:pfas;EN:6,6-FPi;MW:702.06;EXA:1 : -<30,Ph,3=?5,@8,\\,?5,-3=dr,-3=Ph,7'14:NH,9'11:?O +0,0,0,0,0,0,P,0,0,0,0,0,0,7^180:?O,7`1.5:/OH, + {1^-90,1:6'8:13,13^90,13^-90}:/F,{1:6'8:12}:/F^180 +; +%------------------------------------------------------------------------------ +CAT:pfas;EN:9Cl-PF3ONS;MW:532.58;EXA:1 +: +0,0,0,0,0,0,O,0,0,0,S,?O,?O^-180,-.1,OH, + {1:6'8'9}:/F,{1:6'8'9}:/F^180,1^-90:/Cl ; %============================================================================== CAT:antibiotics;EN:Amoxicillin;MW:365.4042;EXA:1 : <45,?4,-3=?5,2:N,7:S,3^45:/*H,1:?O^15,5:/*COOH^-18,6:??, - @4,*\^15,NH!,?O!,*/NH2,!Ph,-3:/OH + @4,15~wf,NH!,?O!,*/NH2,!Ph,-3:/OH ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Ampicillin;MW:349.405;EXA:1 : <45,?4,-3=?5,2:N,7:S,3^45:/*H,1:?O^15,5:/*COOH^-18,6:??, - @4,*\^15,NH!,?O!,/*NH2,!Ph + @4,15~wf,NH!,?O!,/*NH2,!Ph ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Penicillin G;MW:334.4;EXA:2 : -<45,?4,-3=?5,2:N,7:S,3^45:/*H,1:?O^15,5:/*COOH^-18,6:??,@4,*\^15,NH!,?O!2,Ph +<45,?4,-3=?5,2:N,7:S,3^45:/*H,1:?O^15,5:/*COOH^-18,6:??,@4,15~wf,NH!,?O!2,Ph ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Penicillin V;MW:350.3895;EXA:1 : -<45,?4,-3=?5,2:N,7:S,3^45:/*H,1:?O^15,5:/*COOH^-18,6:??,@4,*\^15,NH!,?O!2,O,!Ph +<45,?4,-3=?5,2:N,7:S,3^45:/*H,1:?O^15,5:/*COOH^-18,6:??,@4,15~wf,NH!,?O!2,O,!Ph ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Mecillinam;MW:325.4264;EXA:1 : <45,?4,-3=?5,2:N,7:S,3^45:/*H,1:?O^15,5:/*COOH^-18,6:??, - @4,*\^15,N,!d,!,?7,-7:N + @4,15~wf,N,!d,!,?7,-7:N ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Nafcillin;MW:414.4748;EXA:1 : <45,?4,-3=?5,2:N,7:S,3^45:/*H,1:?O^15,5:/*COOH^-18,6:??, - @4,*\^15,NH!,?O,!Ph,-2=Ph,-9:/O!2 + @4,15~wf,NH!,?O,!Ph,-2=Ph,-9:/O!2 ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Oxacillin;MW:401.4363;EXA:1 : <45,?4,-3=?5,2:N,7:S,3^45:/*H,1:?O^15,5:/*COOH^-18,6:??, - @4,*\^15,NH!,?O!,<-24,?5,-2'-5=dl,-2:N,-3:O,-4:/_,@-1,-24,Ph + @4,15~wf,NH!,?O!,<-24,?5,-2'-5=dl,-2:N,-3:O,-4:?,@-1,-24,Ph ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Cloxacillin;MW:435.8813;EXA:1 : <45,?4,-3=?5,2:N,7:S,3^45:/*H,1:?O^15,5:/*COOH^-18,6:??, - @4,*\^15,NH!,?O!,<-24,?5,-2'-5=dl,-2:N,-3:O,-4:/_,@-1,-24,Ph,-5:/Cl + @4,15~wf,NH!,?O!,<-24,?5,-2'-5=dl,-2:N,-3:O,-4:?,@-1,-24,Ph,-5:/Cl ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Dicloxacillin;MW:470.3264;EXA:1 : <45,?4,-3=?5,2:N,7:S,3^45:/*H,1:?O^15,5:/*COOH^-18,6:??, - @4,*\^15,NH!,?O!,<-24,?5,-2'-5=dl,-2:N,-3:O,-4:/_,-1^-24:/Ph'(2'6:/Cl) + @4,15~wf,NH!,?O!,<-24,?5,-2'-5=dl,-2:N,-3:O,-4:?,-1^-24:/Ph'(2'6:/Cl) ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Cefalexin;MW:347.3889;EXA:1 : -<45,?4,-3=?6,-4=dl,2:N,8:S,3^45:/*H,1:?O^15,5:/*COOH,6:/_, - @4,*\^15,NH!,?O!,*/NH2,!Ph +<45,?4,-3=?6,-4=dl,2:N,8:S,3^45:/*H,1:?O^15,5:/*COOH,6:?, + @4,15~wf,NH!,?O!,*/NH2,!Ph ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Cefalonium;MW:458.5107;EXA:1 : -<45,?4,-3=?6,-4=dl,2:N,8:S,3^45:/*H,1:?O^15,@5,\*,?O!,O,n_^40, - @4,*\^15,NH!,?O!2,?5,-1'-3=dl,-4:S,@6,\,!,|,Ph,1:N,1:p_^180,4:/?O!'NH2 +<45,?4,-3=?6,-4=dl,2:N,8:S,3^45:/*H,1:?O^15,@5,!z,?O!,O,n_^40, + @4,15~wf,NH!,?O!2,?5,-1'-3=dl,-4:S,@6,!2,|,Ph,1:N,1:p_^180,4:/?O!'NH2 ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Cefazorin;MW:454.51;EXA:2 : <45,?4,-3=?6,-4=dl,2:N,8:S,3^45:/*H,1^15:?O,5:/*COOH, - @4,*\^15,NH!,?O!2,?5,-2'-4=dl,-1'-2'-3'-5:N, - @6,\,!,S,!,?5,-3'-5=dl,-1:S,-2:/_,-3'-4:N + @4,15~wf,NH!,?O!2,?5,-2'-4=dl,-1'-2'-3'-5:N, + @6,!2,S,!,?5,-3'-5=dl,-1:S,-2:?,-3'-4:N ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Cefoperazone;MW:645.67;EXA:1 : <45,?4,-3=?6,-4=dl,2:N,8:S,3^45:/*H,1:?O^15,5:/*COOH, - @4,*\^15,NH!,?O!,/*Ph'(4:/OH),!NH!,?O!,?6,-3'-6:N,-4'-5:?O,-3:/!, - @6,\,!,S,!,?5,-3'-5=dl,-1:/_,-1'-2'-3'-4:N, + @4,15~wf,NH!,?O!,/*Ph'(4:/OH),!NH!,?O!,?6,-3'-6:N,-4'-5:?O,-3:/!, + @6,!2,S,!,?5,-3'-5=dl,-1:?,-1'-2'-3'-4:N, ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Cefquinome;MW:528.6;EXA:1 : -<45,?4,-3=?6,-4=dl,2:N,8:S,3^45:/*H,1:?O^15,@5,\*,?O!,O,n_^40, - @4,*\^15,NH!,?O!,//N!'O!,!,?5,-2'-5=dl,-3:S,-1:N,-2:/NH2, - @6,\,!Ph,-2=?6,-10:N,-10:p_^180 +<45,?4,-3=?6,-4=dl,2:N,8:S,3^45:/*H,1:?O^15,@5,!z,?O!,O,n_^40, + @4,15~wf,NH!,?O!,//N!'O!,!,?5,-2'-5=dl,-3:S,-1:N,-2:/NH2, + @6,!2,Ph,-2=?6,-10:N,-10:p_^180 ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Ceftiofur;MW:523.5626;EXA:1 : <45,?4,-3=?6,-4=dl,2:N,8:S,3^45:/*H,1:?O^15,5:/*COOH, - @4,*\^15,NH!,?O!,//N!'O!,!,?5,-2'-5=dl,-3:S,-1:N,-2:/NH2, - @6,\,!,S,!,?O!,?5,-1'-3=dl,-4:O + @4,15~wf,NH!,?O!,//N!'O!,!,?5,-2'-5=dl,-3:S,-1:N,-2:/NH2, + @6,!2,S,!,?O!,?5,-1'-3=dl,-4:O ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Cefuroxime;MW:424.3852;EXA:1 : <45,?4,-3=?6,-4=dl,2:N,8:S,3^45:/*H,1:?O^15,5:/*COOH, - @4,*\^15,NH!,?O!,//N!'O!,!,?5,-1'-3=dl,-4:O,@6,\,!O!,?O!,NH2 + @4,15~wf,NH!,?O!,//N!'O!,!,?5,-1'-3=dl,-4:O,@6,!2,O!,?O!,NH2 ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Apramycin;MW:539.58;EXA:1 : -<30,?6,3=?6,2'10:O,@1,\*,O,60~zb,?6,@9,\*,O,-60~zb,?6,-5:O, +<30,?6,3=?6,2'10:O,@1,!z,O,60~zb,?6,@9,!z,O,-60~zb,?6,-5:O, 7'13'*14'*-1'-2:*/OH,*6'15'17'*-3:*/NH2,8:*/NH!^-20,-4:*/!OH,{*3^-60,4^60}:*/H ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Gentamycin;MW:477.596;EXA:1 : -<-30,?6,@1,\*,O,0~zb,?6,-5:O,@5,\*,O,0~zb,?6,-5:O,2'4'*20:*/NH2,6:*/OH, - 11:*/OH^-35,11:/*_^35,12:*/NH!,13:/*OH,17:*/?!'NH! +<-30,?6,@1,!z,O,0~zb,?6,-5:O,@5,!z,O,0~zb,?6,-5:O,2'4'*20:*/NH2,6:*/OH, + 11:*/OH^-35,11:?z^35,12:*/NH!,13:/*OH,17:*/?!'NH! ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Kanamycin;MW:484.499;EXA:1 : -<-30,?6,@1,\*,O,0~zb,?6,-5:O,@5,\,O,0,?6,-5:O, +<-30,?6,@1,!z,O,0~zb,?6,-5:O,@5,!,O,0,?6,-5:O, 2'4'12:*/NH2,*6'11'13'18'*19'20:/*OH,10:*/!OH,17:*/!NH2 ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Neomycin;MW:614.644;EXA:1 : <30,?6,3:O,2:/*!NH2,1'*6:*/OH,5:*/NH2, - @4,*\,O,!wb,?6,{-3,-5^15}:/*NH2,-2:*/OH^-15, - @-1,\*,O,-72~wb,?5,-4:O,-1:/*OH>vt,-3:*/!OH>vt, - @-2,\*^-24,O,-60~zb,?6,-5:O,-1:/*NH2,-2'*-3:*/OH,-4:/*!NH2>60 + @4,!w,O,!wb,?6,{-3,-5^15}:/*NH2,-2:*/OH^-15, + @-1,!z,O,-72~wb,?5,-4:O,-1:/*OH>vt,-3:*/!OH>vt, + @-2,!z^-24,O,-60~zb,?6,-5:O,-1:/*NH2,-2'*-3:*/OH,-4:/*!NH2>60 ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Streptmycin;MW:581.574;EXA:2 : -<54,?5,3:O,4:/*_,5:/OH^45,@1,\*,O,-24~wb,?6,-5:O,@2,*\,O,24~zb,?6, +<54,?5,3:O,4:?z,5:/OH^45,@1,!z,O,-24~wb,?6,-5:O,@2,!w,O,24~zb,?6, 5:/!dO^-48,10'*11'15'*16'*18:*/OH,9:/*!OH,12:*/NH!,{17^-18'19}:*/NH!'?NH'!NH2 ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Streptmycin-H2O;MW:599.574;EXA:- : -<54,?5,3:O,4:/*_,5:/OH^60,@1,\*,O,-24~wb,?6,-5:O,@2,*\,O,24~zb,?6, +<54,?5,3:O,4:?z,5:/OH^60,@1,!z,O,-24~wb,?6,-5:O,@2,!w,O,24~zb,?6, @5,-18,/OH^15,45,OH,10'*11'15'*16'*18:*/OH,9:/*!OH,12:*/NH!, {17^-18'19}:*/NH!'?NH'!NH2 ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:dihydro-Streptmycin;MW:583.574;EXA:1 : -<54,?5,3:O,4:/*_,5:/!OH^-48,5:/*OH^35,@1,\*,O,-24~wb,?6,-5:O,@2,*\,O,24~zb,?6, +<54,?5,3:O,4:?z,5:/!OH^-48,5:/*OH^35,@1,!z,O,-24~wb,?6,-5:O,@2,!w,O,24~zb,?6, 10'*11'15'*16'*18:*/OH,9:/*!OH,12:*/NH!,{17^-18'19}:*/NH!'?NH'!NH2 ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Spectinomycin;MW:332.35;EXA:1 : <30,?6,3'9=?6,7=zf,11=wb,7'10'14:O,9^60:*/H,11:?O,{1'*5'8^-60}:*/OH, - 13:/*_,2'6:*/NH! + 13:?z,2'6:*/NH! ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Tobramycin;MW:467.51;EXA:1 : -<-30,?6,@1,\*,O,0~zb,?6,-5:O,@5,\,O,0,?6,-5:O, +<-30,?6,@1,!z,O,0~zb,?6,-5:O,@5,!,O,0,?6,-5:O, 2'4'12'*20:*/NH2,*6'11'13'18:/*OH,10:*/!OH,17:*/!NH2 ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Spiramycin;MW:843.1;EXA:1 : <-90,#1,60,60,-60,60,60,-60,60,60,-60,60,60,60,-60,60,-60,&1,##, - 12'14=dl,2:O,{1'10^-30}:/*_,5:/*OH,3:?O,6:/*O!>vt,8:/*!'!dO, - @-6,\*^-30,O,!wb,?6`.7,-5:O,#.5,-3:/*N?!,-4:*/_,##, - @7,\*,O,0~wb,?6`.7,-5:O,#.5,-2:*/N?!,-1:/*OH,-4:*/_,##, - @-3,\*`1,O,60~wb,?6`.7,-5:O,#.5,{-2^35'-3}:*/OH,{-2^-35'-4}:/*_,##, + 12'14=dl,2:O,{1'10^-30}:?z,5:/*OH,3:?O,6:/*O!>vt,8:/*!'!dO, + @-6,!z^-30,O,!wb,?6`.7,-5:O,#.5,-3:/*N?!,-4:?w,##, + @7,!z,O,0~wb,?6`.7,-5:O,#.5,-2:*/N?!,-1:/*OH,-4:?w,##, + @-3,!z`1,O,60~wb,?6`.7,-5:O,#.5,{-2^35'-3}:*/OH,{-2^-35'-4}:?z,##, ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Neospiramycin;MW:698.9;EXA:1 : <-90,#1,60,60,-60,60,60,-60,60,60,-60,60,60,60,-60,60,-60,&1,##, - 12'14=dl,2:O,{1'10^-30}:/*_,5:/*OH,3:?O,6:/*O!>vt,8:/*!'!dO, - @-6,\*^-30,O,!wb,?6`.7,-5:O,#.5,-3:/*N?!,-4:*/_,##, - @7,\*,O,0~wb,?6`.7,-5:O,#.5,-2:*/N?!,-4:*/_,-1'-3:/*OH,##, + 12'14=dl,2:O,{1'10^-30}:?z,5:/*OH,3:?O,6:/*O!>vt,8:/*!'!dO, + @-6,!z^-30,O,!wb,?6`.7,-5:O,#.5,-3:/*N?!,-4:?w,##, + @7,!z,O,0~wb,?6`.7,-5:O,#.5,-2:*/N?!,-4:?w,-1'-3:/*OH,##, ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Josamycin;MW:827.995;EXA:1 : <-90,#1,60,60,-60,60,60,-60,60,60,-60,60,60,60,-60,60,-60,&1,##, - 12'14=dl,2:O,1:/*_,3:?O,10:/*_,6:/*O!>vt,-6:/*OH,5:/*O!'?O!^-25,8:/*!'!dO, - @7,\*,O,0~wb,?6`.7,-5:O,#.5,-2:*/N?!,-1:/*OH,-4:*/_,##, - @-3,\*`1,O,60~wb,?6`.7,-5:O,#.5,-2^35:*/OH,{-2^-35'-4}:/*_,##, - @-3,*\,O,60,?O,60,-60,/_,!, + 12'14=dl,2:O,1:?z,3:?O,10:?z,6:/*O!>vt,-6:/*OH,5:/*O!'?O!^-25,8:/*!'!dO, + @7,!z,O,0~wb,?6`.7,-5:O,#.5,-2:*/N?!,-1:/*OH,-4:?w,##, + @-3,!z`1,O,60~wb,?6`.7,-5:O,#.5,-2^35:*/OH,{-2^-35'-4}:?z,##, + @-3,!w,O,60,?O,60,-60,?,!, ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Leucomycin A5;MW:771.942;EXA:1 : <-90,#1,60,60,-60,60,60,-60,60,60,-60,60,60,60,-60,60,-60,&1,##, - 12'14=dl,2:O,1:/*_,3:?O,10:/*_,6:/*O!>vt,-6:/*OH,5:/*OH,8:/*!'!dO, - @7,\*,O,0~wb,?6`.7,-5:O,#.5,-2:*/N?!,-1:/*OH,-4:*/_,##, - @-3,\*`1,O,60~wb,?6`.7,-5:O,#.5,-2^35:*/OH,{-2^-35'-4}:/*_,##, - @-3,*\,O,60,?O,60,-60,60, + 12'14=dl,2:O,1:?z,3:?O,10:?z,6:/*O!>vt,-6:/*OH,5:/*OH,8:/*!'!dO, + @7,!z,O,0~wb,?6`.7,-5:O,#.5,-2:*/N?!,-1:/*OH,-4:?w,##, + @-3,!z`1,O,60~wb,?6`.7,-5:O,#.5,-2^35:*/OH,{-2^-35'-4}:?z,##, + @-3,!w,O,60,?O,60,-60,60, ; %------------------------------------------------------------------------------ -CAT:antibiotics;EN:Erythromycin;MW:733.93;EXA:1 +CAT:antibiotics;EN:Erythromycin;MW:733.93;EXA:2 : <30,#1,<-120,60,60,60,-60,60,60,-60,60,60,60,-60,60,60,##,&1, - 14:O,13:/*!,1'9:?O,{*2'4'6^-35'8'*10'12^35}:/*_, + 14:O,13:/*!,1'9:?O,{*2'4'6^-35'8'*10'12^35}:?z, {6^35'11'12^-35}:*/OH, - @$3,\*,O,30~zb,|,?6`.7,6:O,#.5,{5~wf'3^35}:/_,4:/*OH,3^-35:/*O!,##, - @$5,\*^30`1.7,O,!zb,|,?6`.7,6:O,#.5,5:/*_,2:*/OH,3:/*N?! + @$3,!z,O,30~zb,|,?6`.7,6:O,#.5,{5~wf'3^35}:?,4:/*OH,3^-35:/*O!,##, + @$5,30~zf`1.7,O,!zb,|,?6`.7,6:O,#.5,5:?z,2:*/OH,3:/*N?! ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Emamectine;MW:886.133;EXA:1 : -<24,?6,6=?5,3=dl,9:O,2:*/OH,3:/_,6:/*OH^-60, +<24,?6,6=?5,3=dl,9:O,2:*/OH,3:?,6:/*OH^-60, @5,#1.04,6,?O,-60,O,60~wb,60,-60,60~wf,60,-60,60,60,60,-60,60,##,&7, -1'-3'-7=dl,-11--(-10)=?6,@-2,?6,-6=wf,-1=zb,-5=dl, - -1'-6:O,-3:*/_,@-2,\,*/_,!2, - 17:/_,19:/*_,@18,\,O!,?6`.7,-1:O,#.5,-2:*/_,-4:*/O!,##, - @-3,\,O,60,?6`.7,-5:O,#.5,-4:*/_,-3:/*NH!,-2:*/O! + -1'-6:O,-3:?w,@-2,!,?w,!2, + 17:?,19:?z,@18,!,O!,?6`.7,-1:O,#.5,-2:?w,-4:*/O!,##, + @-3,!,O,60,?6`.7,-5:O,#.5,-4:?w,-3:/*NH!,-2:*/O! ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Spinosad;MW:731.968;EXA:2 @@ -1304,83 +1354,83 @@ CAT:antibiotics;EN:Spinosad;MW:731.968;EXA:2 <30,#1,<-120,60,60,-60,60,60,60,-60,60,60,60,-60,&1,##, 5=?5,-1=dl,{-2^60'-3^-35}:/*H,-3=?6,-4=dl, {-1^35'*-2^-60}:*/H,-2=?5,2:O,{3^25,7^-25}:?O,1:*/!, - @-2,\*,O,66~zb,?6`.7,-1:O,#.5,-2:*/_,{*-3'-4'-5}:*/O!,8:*/_,5^-65:*/H,##, - @9,\*,O,!zb,|,?6`.7,6:O,#.5,5:/*_,4:*/N?! + @-2,!z,O,66~zb,?6`.7,-1:O,#.5,-2:?w,{*-3'-4'-5}:*/O!,8:?w,5^-65:*/H,##, + @9,!z,O,!zb,|,?6`.7,6:O,#.5,5:?z,4:*/N?! ; %------------------------------------------------------------------------------ -CAT:antibiotics;EN:Natamycin;MW:665.733;EXA:1 +CAT:antibiotics;EN:Natamycin;MW:665.733;EXA:2 : <-90,#1,60,60,-60,60,-60,60,-60,60,-60,60,60,60,O,-60, 60,60,-60,60,-60,60,-60,60,60,-60,&1,##,12--13=?6, 2'4'6'8'20=dl,11=zb,23:O,-2:/*OH,-3:*/COOH, - 18=?3,-1=wb,-2=wf,-1:O,22:?O,24:*/_,{14^60'16}:*/OH, - @10,*\^15,O,90,?6`.7,-1:O,#.5,-3'*-5:*/OH,-4:/*NH2,-2:/*_ + 18=?3,-1=wb,-2=wf,-1:O,22:?O,24:?w,{14^60'16}:*/OH, + @10,15~wf,O,90,?6`.7,-1:O,#.5,-3'*-5:*/OH,-4:/*NH2,-2:?z ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Tylocin;MW:916.10;EXA:1 : <-90,#1,60,60,-60,60,60,-60,60,60,-60,60,60,60,-60,60,-60,&1,##, - 12'14=dl,2:O,1:/*!,5:/*OH,3:?O,10:/*_,6:/*_,-6:?O,-3:/_,8:/*!'!dO, - @-1,*\,-60,O,0~wb,?6`.7,-5:O,#.5,-3:/*OH,-4:*/_,-1'-2:/*O!,##, - @7,\*,O,0~wb,?6`.7,-5:O,#.5,-2:*/N?!,-1:/*OH,-4:*/_,##, - @-3,\*`1,O,60~wb,?6`.7,-5:O,#.5,{-2^35'-3}:*/OH,{-2^-35'-4}:/*_,##, + 12'14=dl,2:O,1:/*!,5:/*OH,3:?O,10:?z,6:?z,-6:?O,-3:?,8:/*!'!dO, + @-1,!w,-60,O,0~wb,?6`.7,-5:O,#.5,-3:/*OH,-4:?w,-1'-2:/*O!,##, + @7,!z,O,0~wb,?6`.7,-5:O,#.5,-2:*/N?!,-1:/*OH,-4:?w,##, + @-3,!z`1,O,60~wb,?6`.7,-5:O,#.5,{-2^35'-3}:*/OH,{-2^-35'-4}:?z,##, ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Tilmicosin;MW:869.133;EXA:2 : <-90,#1,60,60,-60,60,60,-60,60,60,-60,60,60,60,-60,60,-60,&1,##, - 12'14=dl,2:O,1:/*!,5:/*OH,3'11:?O,6'10:/*_,14:/_, - @-1,*\,-60,O,0~zb,?6`.7,-5:O,#.5,-1'-2:*/O!,-3:*/OH,-4:/*_,##, - @7,\*,O,0,?6`.7,-5:O,#.5,-2:*/N?!,-1'-3:/*OH,-4:*/_,##, - @8,\*,!2,?6`.7,-6:N,#.5,-2'-4:*/_ + 12'14=dl,2:O,1:/*!,5:/*OH,3'11:?O,6'10:?z,14:?, + @-1,!w,-60,O,0~zb,?6`.7,-5:O,#.5,-1'-2:*/O!,-3:*/OH,-4:?z,##, + @7,!z,O,0,?6`.7,-5:O,#.5,-2:*/N?!,-1'-3:/*OH,-4:?w,##, + @8,!z,!2,?6`.7,-6:N,#.5,-2'-4:?w ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Mirosamicin;MW:727.8791;EXA:1 : <-90,#1,60,60,-60,60,60,-60,60,60,-60,60,60,60,-60,60,-60,&1,##, - @8,\*,O,0,?6`.7,-5:O,#.5,-2:*/N?!,-1:/*OH,-4:*/_,##, - 5'13=dl,15=?3,-2=wf,-1=wb,-1:O,3:O,2:/*!,4'12:?O,7'9'*11:*/_,1:/*OH^-80, - @1,*\,!,O,!wb,?6`.7,-5:O,#.5,-3:/*OH,-4:*/_,-1'-2:/O! + @8,!z,O,0,?6`.7,-5:O,#.5,-2:*/N?!,-1:/*OH,-4:?w,##, + 5'13=dl,15=?3,-2=wf,-1=wb,-1:O,3:O,2:/*!,4'12:?O,7'9'*11:?w,1:/*OH^-80, + @1,!w,!,O,!wb,?6`.7,-5:O,#.5,-3:/*OH,-4:?w,-1'-2:/O! ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Chlortetracyclin;MW:478.88;EXA:1 : -<30,Ph,-4'-3'-3=?6,16'19=dl,10'18:?O,7:*/_^-35,2:/Cl, +<30,Ph,-4'-3'-3=?6,16'19=dl,10'18:?O,7:?w^-35,2:/Cl, {5'7~zf^35'13~wf^60'14'16}:/OH,15:*/N?!,17:/?O!'NH2 ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Oxytetracyclin;MW:460.434;EXA:2 : -<30,Ph,-4'-3'-3=?6,16'19=dl,10'18:?O,7:*/_^-35,11:*/OH, +<30,Ph,-4'-3'-3=?6,16'19=dl,10'18:?O,7:?w^-35,11:*/OH, {5'7~zf^35'13~wf^60'14'16}:/OH,15:*/N?!,17:/?O!'NH2 ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Tetracyclin;MW:444.435;EXA:1 : -<30,Ph,-4'-3'-3=?6,16'19=dl,10'18:?O,7:*/_^-35, +<30,Ph,-4'-3'-3=?6,16'19=dl,10'18:?O,7:?w^-35, {5'7~zf^35'13~wf^60'14'16}:/OH,15:*/N?!,17:/?O!'NH2 ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Doxycyclin;MW:444.43;EXA:1 : -<30,Ph,-4'-3'-3=?6,16'19=dl,10'18:?O,7:*/_, +<30,Ph,-4'-3'-3=?6,16'19=dl,10'18:?O,7:?w, {5'13~wf^60'11~wf'14'16}:/OH,15:*/N?!,17:/?O!'NH2 ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Tiamulin;MW:493.74;EXA:1 : -<-45.5,?8,-3=?5,@8,#.8,-210~zf,/_^60,45,56,##,&6~zb, - {3^-45'5'8}:*/_,@3,\*^30,!d,4:/*OH,11:?O,7:*/H^60, +<-45.5,?8,-3=?5,@8,#.8,-210~zf,?^60,45,56,##,&6~zb, + {3^-45'5'8}:?w,@3,30~zf,!d,4:/*OH,11:?O,7:*/H^60, @1,15,O!,?O!2,S,60,60,-60,N?2,!2 ; %------------------------------------------------------------------------------ CAT:antibiotics;EN:Rifampicin;MW:822.94;EXA:2 : -<30,Ph,6:/_^30,5:/OH,-6=?5,-3:O,-8=?6,-2'-4=dl,-1'-4:/OH, - #1,@-2,\,NH,60,-60,60~dl,60,60~dl,-60, +<30,Ph,6:?^30,5:/OH,-6=?5,-3:O,-8=?6,-2'-4=dl,-1'-4:/OH, + #1,@-2,!,NH,60,-60,60~dl,60,60~dl,-60, 60,-60,60,60,-60,60,-53,66,-53~dl,66`1.2,O,##,&$8, - ||,9'15:?O,16:/_,{20'24^30}:*/_,21'23:/*OH,{8^60'22'26^30}:/*_, - -4:/*O!,@-6,-30,O!,?O!,@$11,\,!d,N,!,|,?6,1:N,4:N? + ||,9'15:?O,16:?,{20'24^30}:?w,21'23:/*OH,{8^60'22'26^30}:?z, + -4:/*O!,@-6,-30,O!,?O!,@$11,!,!d,N,!,|,?6,1:N,4:N? ; %============================================================================== CAT:pesticide;EN:BHC;MW:290.83;EXA:1 @@ -1390,43 +1440,43 @@ CAT:pesticide;EN:BHC;MW:290.83;EXA:1 %------------------------------------------------------------------------------ CAT:pesticide;EN:pp-DDT;MW:354.49;EXA:1 : -<30,Ph,6:/Cl,@3,\,/?Cl?Cl!Cl,!Ph,-3:/Cl +<30,Ph,6:/Cl,@3,!,/?Cl?Cl!Cl,!Ph,-3:/Cl ; %------------------------------------------------------------------------------ CAT:pesticide;EN:op-DDT;MW:354.49;EXA:- : -<30,Ph,4:/Cl,@3,\,/?Cl?Cl!Cl,!Ph,-3:/Cl +<30,Ph,4:/Cl,@3,!,/?Cl?Cl!Cl,!Ph,-3:/Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:pp-DDD;MW:320;EXA:- +CAT:pesticide;EN:pp-DDD;MW:320;EXA:1 : -<30,Ph,6:/Cl,@3,\,/?Cl!Cl,!Ph,-3:/Cl +<30,Ph,6:/Cl,@3,!,/?Cl!Cl,!Ph,-3:/Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:pp-DDE;MW:318;EXA:- +CAT:pesticide;EN:pp-DDE;MW:318;EXA:1 : -<30,Ph,6:/Cl,@3,\,//?Cl!Cl,!Ph,-3:/Cl +<30,Ph,6:/Cl,@3,!,//?Cl!Cl,!Ph,-3:/Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:XMC;MW:179.2;EXA:- +CAT:pesticide;EN:XMC;MW:179.2;EXA:1 : -<30,Ph,1'5:/_,@3,\,O!,?O!,NH! +<30,Ph,1'5:?,@3,!,O!,?O!,NH! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Acrinathrin;MW:541.45;EXA:1 : -<-30,?3,{2^-35,*2^35}:*/_, - @1,\,!d,!,?O,!O!,/?F?F!F,!,?F?F!F,@3,\,?O,!O!,/CN,!Ph,-4:/O!'Ph>rl +<-30,?3,{2^-35,*2^35}:?w, + @1,!,!d,!,?O,!O!,/?F?F!F,!,?F?F!F,@3,!,?O,!O!,/CN,!Ph,-4:/O!'Ph>rl ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Azaconazole;MW:300.139;EXA:1 : -<30,Ph,4'6:/Cl,@3,\,!2,?5,-2'-4=dl,-2'-4'-5:N,@7,?5,-1'-4:O +<30,Ph,4'6:/Cl,@3,!3,?5,-2'-4=dl,-2'-4'-5:N,@7,?5,-1'-4:O ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Acetochlor;MW:269.769;EXA:1 : -<30,Ph,2:/_,4:/!,@3,\,N,/?O!2'Cl,!2,O!2 +<30,Ph,2:?,4:/!,@3,!,N,/?O!2'Cl,!2,O!2 ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Atrazine;MW:215.7;EXA:1 @@ -1456,22 +1506,22 @@ CAT:pesticide;EN:Iprobenfos;MW:288.34;EXA:1 %------------------------------------------------------------------------------ CAT:pesticide;EN:Uninnazole-P;MW:291.779;EXA:1 : -<30,Ph,6:/Cl,@3,\,!d,!,/OH,!,??!,@8,\,|,?5,2'4=dl,1'2'4:N +<30,Ph,6:/Cl,@3,!,!d,!,/OH,!,??!,@8,!,|,?5,2'4=dl,1'2'4:N ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Esprocarb;MW:265.4;EXA:1 : -<30,Ph,@3,\,!S!,?O!,N?2!,?!,?! +<30,Ph,@3,!2,S!,?O!,N?2,!,?!,?! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Ethalfluralin;MW:333.3;EXA:1 : -<30,Ph,1'3:/NO2,5:/?F?F!F,@2,\`1.1,/!,N,!2,/_,!d +<30,Ph,1'3:/NO2,5:/?F?F!F,@2,!`1.1,/!,N,!2,?,!d ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Ethofenprox;MW:376.5;EXA:1 : -<30,Ph,@5,\,O,!Ph,@10,\,O!3,??,!Ph,-3:/O!2 +<30,Ph,@5,!,O,!Ph,@10,!,O!3,??,!Ph,-3:/O!2 ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Endrin;MW:380.91;EXA:1 @@ -1482,38 +1532,38 @@ CAT:pesticide;EN:Endrin;MW:380.91;EXA:1 %------------------------------------------------------------------------------ CAT:pesticide;EN:Oxadiazon;MW:345.2;EXA:1 : -<30,Ph,4'6:/Cl,1:/O'!?!,@3,\,|,?5,2=dl,1'2:N,4:O,5:?O,3:/??! +<30,Ph,4'6:/Cl,1:/O'!?!,@3,!,|,?5,2=dl,1'2:N,4:O,5:?O,3:/??! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Oxadixyl;MW:278.3;EXA:1 : -<30,Ph,2'4:/_,@3,\,N,!1,?O!2,O!,@7,\,|,?5,1:N,2:O,5:?O +<30,Ph,2'4:?,@3,!,N,!1,?O!2,O!,@7,!,|,?5,1:N,2:O,5:?O ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Oxyfluorfen;MW:361.701;EXA:1 : -<30,Ph,6:/?F?F!F,4:/Cl,@3,\,O,!Ph,-3:/NO2,-4:/O!2 +<30,Ph,6:/?F?F!F,4:/Cl,@3,!,O,!Ph,-3:/NO2,-4:/O!2 ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Cafenstrole;MW:350.4;EXA:1 : -<30,Ph,2'4'6:/_,@3,\,S?O?O,!,|,?5,2'5=dl,2'4'5:N,-2:/?O!'N?'!2 +<30,Ph,2'4'6:?,@3,!,S?O?O,!,|,?5,2'5=dl,2'4'5:N,-2:/?O!'N?'!2 ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Carfentrazone-ethyl;MW:412.19;EXA:1 : -<30,Ph,4:/F,6:/Cl,@1,\,!,/Cl,!,?O!,O!2, - @3,\,|,?5,4=dl,1'3'5:N,-4:?O,-3:/?F!F,-2:/_ +<30,Ph,4:/F,6:/Cl,@1,!2,/Cl,!,?O!,O!2, + @3,!,|,?5,4=dl,1'3'5:N,-4:?O,-3:/?F!F,-2:? ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Carboxin;MW:235.301;EXA:1 : -<30,?6,3=dl,2:S,5:O,4:/_,@3,\,?O,!NH!,Ph +<30,?6,3=dl,2:S,5:O,4:?,@3,!,?O,!NH!,Ph ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Quinoxyfen;MW:308.13;EXA:1 : -<30,Ph,4=Ph,10:N,2'6:/Cl,@7,\,O,!Ph,-3:/F +<30,Ph,4=Ph,10:N,2'6:/Cl,@7,!,O,!Ph,-3:/F ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Quitozene;MW:295.3;EXA:1 @@ -1523,53 +1573,73 @@ CAT:pesticide;EN:Quitozene;MW:295.3;EXA:1 %------------------------------------------------------------------------------ CAT:pesticide;EN:Kresoxim-Methyl;MW:313.348;EXA:1 : -<30,Ph,@3,\,/?O!'O!,!d,N,!O!,@4,\,!,O,!Ph,-1:/_ +<30,Ph,@3,!,/?O!'O!,!d,N,!O!,@4,!2,O,!Ph,-1:? ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Clomazone;MW:239.7;EXA:1 : -<30,Ph,2:/Cl,@3,\,!,|,?5,1:N,2:O,-2:??,-1:?O +<30,Ph,2:/Cl,@3,!2,|,?5,1:N,2:O,-2:??,-1:?O ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Chlorfenapyr;MW:407.62;EXA:1 : -<18,?5,3=dl,5=dl,2:N,4:/CN,5:/Br,1:/?F?F!F,2:/!O!2,3:/Ph'(-3:/Cl) +<18,?5,3=dl,5=dl,2:N,4:/CN,5:/Br,1:/?F?F!F,2:/!O'!2,3:/Ph'(-3:/Cl) ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Chlorfenson;MW:303.153;EXA:1 : -<30,Ph,@3,\,O!,S?O?O,!Ph,6'12:/Cl +<30,Ph,@3,!,O!,S?O?O,!Ph,6'12:/Cl ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Chlorpropham;MW:213.7;EXA:1 : -<30,Ph,6:/Cl,@4,\,NH!,?O!,O,!?! +<30,Ph,6:/Cl,@4,!,NH!,?O!,O,!?! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Chlorbenside;MW:269.183;EXA:1 : -<30,Ph,@3,\,S,!2,Ph,6'12:/Cl +<30,Ph,@3,!,S,!2,Ph,6'12:/Cl ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Chlorobenzilate;MW:325.2;EXA:1 : -<30,Ph,@3,\,/OH^-35,/?O!'O!2^30>lr,!Ph,6'11:/Cl +<30,Ph,@3,!,/OH^-35,/?O!'O!2^30>lr,!Ph,6'11:/Cl ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Chlorantraniliprole;MW:483.15;EXA:1 : -<30,Ph,1:/Cl,3:/_,@5,\,?O,60,NH!,@4,\,NH!,?O!,<24,?5,-1'-3=db,-3'-4:N,-2:/Br, +<30,Ph,1:/Cl,3:?,@5,!,?O,60,NH!,@4,!,NH!,?O!,<24,?5,-1'-3=db,-3'-4:N,-2:/Br, @-4,24,Ph,-5:N,-1:/Cl ; %------------------------------------------------------------------------------ +CAT:pesticide;EN:Chlorothalonil;MW:265.9;EXA:1 +: +<30,Ph,4'6:/CN,1'2'3'5:/Cl +; +%------------------------------------------------------------------------------ +CAT:pesticide;EN:Chlorothalonil-4-Hydroxy;MW:247.5;EXA:- +: +<30,Ph,4'6:/CN,1'2'5:/Cl,3:/OH +; +%------------------------------------------------------------------------------ +CAT:pesticide;EN:Chlornitrofen;MW:318.5;EXA:1 +: +<30,Ph,6:/NO2,@3,!,O,!,Ph,-1'-3'-5:/Cl +; +%------------------------------------------------------------------------------ +CAT:pesticide;EN:Fthalide;MW:271.9;EXA:1 +: +<30,Ph,3=?5,8:O,9:?O,1'2'5'6:/Cl +; +%------------------------------------------------------------------------------ CAT:pesticide;EN:Azoxystrobin;MW:403.4;EXA:1 : -<30,Ph,2:/CN,@3,\,O,!Ph,-1'-3:N,@-4,\,O,!Ph,@-5,\,/?O!'O!,!d,!O! +<30,Ph,2:/CN,@3,!,O,!Ph,-1'-3:N,@-4,!,O,!Ph,@-5,!,/?O!'O!,!d,!O! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Thiuram;MW:240.43;EXA:1 : -<30,!,N?!,//S,!,S,!,S,!,//S,!,N?! +<30,!,N?!,?S,!,S,!,S,!,?S,!,N?! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Probenazole;MW:223.25;EXA:1 @@ -1579,28 +1649,28 @@ CAT:pesticide;EN:Probenazole;MW:223.25;EXA:1 %------------------------------------------------------------------------------ CAT:pesticide;EN:Penflufen;MW:317.41;EXA:1 : -<30,Ph,@3,\,NH!,?O!,?5,-1'-4=db,-2'-3:N,-2'-4:/_,-1:/F,@4,\,/_,60,!?! +<30,Ph,@3,!,NH!,?O!,?5,-1'-4=db,-2'-3:N,-2'-4:?,-1:/F,@4,!,?,60,!?! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:MCPA;MW:200.62;EXA:1 : -<30,Ph,1:/Cl,5:/_,4:/O!2'COOH +<30,Ph,1:/Cl,5:?,4:/O!2'COOH ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Asulam;MW:230.2;EXA:1 : -<30,Ph,1:/NH2,@3,\,S?O?O,!NH!,?O!,O! +<30,Ph,1:/NH2,@3,!,S?O?O,!NH!,?O!,O! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Imazosulfuron;MW:412.81;EXA:1 : <-11.8,?6,3=?5,1'5'7'9=db,4'7:N,8:/Cl, - @-1,\,S?O?O,!NH!,?O,!NH!,Ph,-1'-5:N,-2'-4:/O! + @-1,!,S?O?O,!NH!,?O,!NH!,Ph,-1'-5:N,-2'-4:/O! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Triaziflam;MW:333.4;EXA:1 :, -<30,Ph,2'6:/_,@4,\,O!2,?!,NH!,Ph,-1'-3'-5:N,-2:/NH2,-4:/??'!F +<30,Ph,2'6:?,@4,!,O!2,?!,NH!,Ph,-1'-3'-5:N,-2:/NH2,-4:/??'!F ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Trichlopyr;MW:256.47;EXA:1 @@ -1610,13 +1680,13 @@ CAT:pesticide;EN:Trichlopyr;MW:256.47;EXA:1 %------------------------------------------------------------------------------ CAT:pesticide;EN:Halosulfuron-methyl;MW:434.82;EXA:1 :, -<6,?5,3'5=db,1'2:N,2:/_,5:/Cl,@3,\,S?O?O,!NH!,?O,!NH!,Ph,-2'-4:/O!,4:/?O!'O! +<6,?5,3'5=db,1'2:N,2:?,5:/Cl,@3,!,S?O?O,!NH!,?O,!NH!,Ph,-2'-4:/O!,4:/?O!'O! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Flupoxam;MW:460.8;EXA:1 : -<30,Ph,4:/Cl,@1,\,?5,-2'-4=db,-2'-4'-5:N,-1:/Ph,-3:/?O!'NH2, - @3,\,!,O!2,/F^35,/F^-35,!,?F?F!F +<30,Ph,4:/Cl,@1,!,?5,-2'-4=db,-2'-4'-5:N,-1:/Ph,-3:/?O!'NH2, + @3,!2,O!2,/F^35,/F^-35,!,?F?F!F ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Cyanazine;MW:240.7;EXA:1 @@ -1626,48 +1696,48 @@ CAT:pesticide;EN:Cyanazine;MW:240.7;EXA:1 %------------------------------------------------------------------------------ CAT:pesticide;EN:Diethofencarb;MW:267.3;EXA:1 : -<30,Ph,@4,\,NH!,?O!,O,!?!,1'6:/O!2 +<30,Ph,@4,!,NH!,?O!,O,!?!,1'6:/O!2 ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Diclofop-methyl;MW:341.2;EXA:1 : -<30,Ph,4'6:/Cl,@3,\,O,!Ph,@-4,\,O,!?!,?O,!O! +<30,Ph,4'6:/Cl,@3,!,O,!Ph,@-4,!,O,!?!,?O,!O! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Cyhalothrin;MW:449.86;EXA:1 : -<-30,?3,{2^-35'*2^35}:*/_,@1,\,!d,/?F?F!F,!Cl,@3,\,?O,!O!,/CN,!Ph,-4:/O!'Ph>rl +<-30,?3,{2^-35'*2^35}:?w,@1,!,!d,/?F?F!F,!Cl,@3,!,?O,!O!,/CN,!Ph,-4:/O!'Ph>rl ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Cyhalofop-Buthyl;MW:357.381;EXA:1 : -<30,Ph,1:/CN,4:/F,@3,\,O,!Ph,@-3,\,O,!?!,?O!,O,!4 +<30,Ph,1:/CN,4:/F,@3,!,O,!Ph,@-3,!,O,!?!,?O!,O,!4 ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Diphenamid;MW:239.3;EXA:1 : -<30,Ph,@3,\,!Ph,-5:/?O!'N?! +<30,Ph,@3,!2,Ph,-5:/?O!'N?! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Cyfluthrin;MW:434.3;EXA:1 : -<-30,?3,{2^-35'*2^35}:*/_, - @1,\,!d,/Cl,!Cl,@3,\,?O,!O!,/CN,!Ph,-3:/F,-4:/O!'Ph>rl +<-30,?3,{2^-35'*2^35}:?w, + @1,!,!d,/Cl,!Cl,@3,!,?O,!O!,/CN,!Ph,-3:/F,-4:/O!'Ph>rl ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Diflufenican;MW:394.29;EXA:1 : -<30,Ph,1'5:/F,@4,\,NH!,?O,!Ph,6:N,-5:/O!'Ph'(-3:/?F?F!F) +<30,Ph,1'5:/F,@4,!,NH!,?O,!Ph,6:N,-5:/O!'Ph'(-3:/?F?F!F) ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Cyproconazole;MW:291.8;EXA:1 : -<30,?3,@2,\,?!,/OH^30,-90,!,|,<-18,?5,2'4=dl,1'3'5:N,@$5,-30,Ph,-3:/Cl +<30,?3,@2,!,?!,/OH^30,-90,!,|,<-18,?5,2'4=dl,1'3'5:N,@$5,-30,Ph,-3:/Cl ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Cypermethrin;MW:416.3;EXA:1 : -<-30,?3,{2^-35'*2^35}:*/_,@1,\,!d,/Cl,!Cl,@3,\,?O,!O!,/CN,!Ph,-4:/O!'Ph>rl +<-30,?3,{2^-35'*2^35}:?w,@1,!,!d,/Cl,!Cl,@3,!,?O,!O!,/CN,!Ph,-4:/O!'Ph>rl ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Simazine;MW:201.7;EXA:1 @@ -1682,7 +1752,7 @@ CAT:pesticide;EN:Dimethametryn;MW:255.4;EXA:1 %------------------------------------------------------------------------------ CAT:pesticide;EN:Dimethenamid;MW:275.8;EXA:1 : -<-6,?5,3'5=dl,2:S,3'5:/_,@4,\,N,!,?O!2,Cl,6:/?!2'O! +<-6,?5,3'5=dl,2:S,3'5:?,@4,!,N,!,?O!2,Cl,6:/?!2'O! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Simetryn;MW:213.3;EXA:1 @@ -1692,34 +1762,34 @@ CAT:pesticide;EN:Simetryn;MW:213.3;EXA:1 %------------------------------------------------------------------------------ CAT:pesticide;EN:Dimepiperate;MW:263.4;EXA:1 : -<30,Ph,@3,\,??,!S!,?O!,?6,-6:N +<30,Ph,@3,!,??,!S!,?O!,?6,-6:N ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Diazinon;MW:304.35;EXA:1 : -<30,!2,O!,P,//S,/O!2^160>rl,!O!,|,Ph,4'6:N,5:/_,3:/?! +<30,!2,O!,P,?S,/O!2^160>rl,!O!,|,Ph,4'6:N,5:?,3:/?! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Thiobencarb;MW:257.776;EXA:1 : -<30,Ph,1:/Cl,@4,\,!S!,?O!,N?2,!2 +<30,Ph,1:/Cl,@4,!2,S!,?O!,N?2,!2 ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Thiometon;MW:246.34;EXA:1 : -<-30,!O!,P,//S,/O!^160,!,S!3,S!2 +<-30,!O!,P,?S,/O!^160,!,S!3,S!2 ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Thifluzamide;MW:528.08;EXA:1 : -<-12,?5,3'5=dl,2:S,5:N,3:/?F?F!F,1:/_, - @4,\,?O,!NH!,<6,Ph,-5'-1:/Br,-3:/O!'?F?F!F +<-12,?5,3'5=dl,2:S,5:N,3:/?F?F!F,1:?, + @4,!,?O,!NH!,<6,Ph,-5'-1:/Br,-3:/O!'?F?F!F ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Dieldrin;MW:380.895;EXA:1 : <30,?6`1.2,3=?6,6=dl,9=?3,-1:O,@2,148~wf`1.4,&5~wb, - @7,*\^145`1.3,&10~zb,{1'2'5'6'12^-210'12^-150}:/Cl + @7,145~wf`1.3,&10~zb,{1'2'5'6'12^-210'12^-150}:/Cl ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Aldrin;MW:364.908;EXA:1 @@ -1740,17 +1810,17 @@ CAT:pesticide;EN:Tetrachlorvinfos;MW:365.97;EXA:1 %------------------------------------------------------------------------------ CAT:pesticide;EN:Tetraconazole;MW:372.14;EXA:1 : -<-6,?5,2'5=dl,1'2'4:N,@4,\,!3,O!,/F^35,/F^-35,!,?F!F,7:/Ph'(4'6:/Cl) +<-6,?5,2'5=dl,1'2'4:N,@4,!4,O!,/F^35,/F^-35,!,?F!F,7:/Ph'(4'6:/Cl) ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Tetradifon;MW:356.038;EXA:1 : -<30,Ph,@3,\,S?O?O,!Ph,6'10'11'13:/Cl +<30,Ph,@3,!,S?O?O,!Ph,6'10'11'13:/Cl ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Thenylchlor;MW:323.835;EXA:1 : -<6,?5,2'5=dl,4:S,2:/O!,@3,\,!,N,7^-15:/Ph'(6'2:/_),!,?O!2,Cl, +<6,?5,2'5=dl,4:S,2:/O!,@3,!2,N,7^-15:/Ph'(6'2:?),!,?O!2,Cl, ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Tebuconazole;MW:307.8;EXA:1 @@ -1760,12 +1830,12 @@ CAT:pesticide;EN:Tebuconazole;MW:307.8;EXA:1 %------------------------------------------------------------------------------ CAT:pesticide;EN:Tebufenpyrad;MW:333.86;EXA:1 : -<6,?5,3'5=dl,1'2:N,4:/Cl,5:/!,2:/_,@3,\,?O!,NH,!2,Ph,-3:/??! +<6,?5,3'5=dl,1'2:N,4:/Cl,5:/!,2:?,@3,!,?O!,NH,!2,Ph,-3:/??! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Tefluthrin;MW:418.736;EXA:1 : -<-30,?3,{2^-35'*2^35}:*/_,@1,\,!d,/?F?F!F,!Cl,@3,\,?O!,O!2,|,Ph,2'3'5'6:/F,4:/_ +<-30,?3,{2^-35'*2^35}:?w,@1,!,!d,/?F?F!F,!Cl,@3,!,?O!,O!2,|,Ph,2'3'5'6:/F,4:? ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Terbutryn;MW:241.4;EXA:1 @@ -1775,17 +1845,17 @@ CAT:pesticide;EN:Terbutryn;MW:241.4;EXA:1 %------------------------------------------------------------------------------ CAT:pesticide;EN:Terbufos;MW:288.42;EXA:1 : -<30,!2,O!,P,//S,/O!2^160>rl,!,S!2,S!,??! +<30,!2,O!,P,?S,/O!2^160>rl,!,S!2,S!,??! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Triadimefon;MW:293.8;EXA:1 : -<30,Ph,6:/Cl,@3,\,O!2,?O!,??!,@8,\,|,?5,2'4=dl,1'2'4:N +<30,Ph,6:/Cl,@3,!,O!2,?O!,??!,@8,!,|,?5,2'4=dl,1'2'4:N ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Triazophos;MW:313.31;EXA:1 : -<30,!2,O!,P,//S,/O!2^160>rl,!O!,<-12,|,?5,2'5=dl,2'4'5:N,4:/Ph +<30,!2,O!,P,?S,/O!2^160>rl,!O!,<-12,|,?5,2'5=dl,2'4'5:N,4:/Ph ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Triallate;MW:304.7;EXA:1 @@ -1800,83 +1870,83 @@ CAT:pesticide;EN:Dimethylvinphos;MW:331.52;EXA:1 %------------------------------------------------------------------------------ CAT:pesticide;EN:Trifluralin;MW:335.3;EXA:1 : -<30,Ph,1'3:/NO2,5:/?F?F!F,@2,\,N,/!2,!3 +<30,Ph,1'3:/NO2,5:/?F?F!F,@2,!,N,/!2,!3 ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Napropamide;MW:271.4;EXA:1 : -<-30,Ph,4=Ph,@10,\,O!,?!,?O!,N?2,!2 +<-30,Ph,4=Ph,@10,!,O!,?!,?O!,N?2,!2 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Nitrothal-isopropyl;MW:295.3;EXA:- +CAT:pesticide;EN:Nitrothal-isopropyl;MW:295.3;EXA:1 : <30,Ph,5:/NO2,1'3:/?O!'O!'?! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Norflurazon;MW:303.7;EXA:- +CAT:pesticide;EN:Norflurazon;MW:303.7;EXA:1 : <30,?6,1'5=dl,4'5:N,1:/NH!,3:?O,2:/Cl,4:/Ph'(3:/?F?F!F) ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Paclobutrazole;MW:293.795;EXA:- +CAT:pesticide;EN:Paclobutrazole;MW:293.795;EXA:1 : -<30,Ph,6:/Cl,@3,\,!2,/OH,!,??!,@8,\,|,?5,2'4=dl,1'2'4:N +<30,Ph,6:/Cl,@3,!3,/OH,!,??!,@8,!,|,?5,2'4=dl,1'2'4:N ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Picolinafen;MW:376.331;EXA:- +CAT:pesticide;EN:Picolinafen;MW:376.331;EXA:1 : -<30,Ph,5:/?F?F!F,@3,\,O,!Ph,-5:N,@-4,\,?O,!NH!,Ph,-3:/F +<30,Ph,5:/?F?F!F,@3,!,O,!Ph,-5:N,@-4,!,?O,!NH!,Ph,-3:/F ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Bitertanol;MW:337.4;EXA:- +CAT:pesticide;EN:Bitertanol;MW:337.4;EXA:1 : -<30,Ph,@3,\,Ph,@-3,\,O!2,/OH,!,??!,@14,\,|,?5,2'4=dl,1'2'4:N +<30,Ph,@3,!,Ph,@-3,!,O!2,/OH,!,??!,@14,!,|,?5,2'4=dl,1'2'4:N ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Bifenox;MW:342.14;EXA:- +CAT:pesticide;EN:Bifenox;MW:342.14;EXA:1 : -<30,Ph,4'6:/Cl,@3,\,O,!Ph,-4:/?O!'O!,-3:/NO2 +<30,Ph,4'6:/Cl,@3,!,O,!Ph,-4:/?O!'O!,-3:/NO2 ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Bifenthrin;MW:422.88;EXA:2 : -<-30,?3,{2^-35'*2^35}:*/_,@1,\,!d,/Cl,!,?F?F!F,@3,\,?O,!O!,-60,Ph,-1:/_,-2:/Ph +<-30,?3,{2^-35'*2^35}:?w,@1,!,!d,/Cl,!,?F?F!F,@3,!,?O,!O!,-60,Ph,-1:?,-2:/Ph ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Pyraflufen-ethyl;MW:413.174;EXA:- +CAT:pesticide;EN:Pyraflufen-ethyl;MW:413.174;EXA:1 : -<30,Ph,6:/Cl,4:/F,@3,\,|,?5,1'4=dl,2'3:N,-3:/_,5:/Cl, - @-2,\,O!,/F,!F,@$1,\,O!2,?O!,O!2 +<30,Ph,6:/Cl,4:/F,@3,!,|,?5,1'4=dl,2'3:N,-3:?,5:/Cl, + @-2,!,O!,/F,!F,@$1,!,O!2,?O!,O!2 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Pyridaben;MW:364.9;EXA:- +CAT:pesticide;EN:Pyridaben;MW:364.9;EXA:1 : -<30,?6,2'4=dl,5'6:N,6:/??!,1:?O,2:/Cl,@-4,\,S,!2,Ph,-3:/??! +<30,?6,2'4=dl,5'6:N,6:/??!,1:?O,2:/Cl,@-4,!,S,!2,Ph,-3:/??! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Pyridaphenthion;MW:340.34;EXA:1 : -<30,!2,O!,P,//S,/O!2^160>rl,!O!,|,?6,1'5=dl,2'3:N,4:?O,3:/Ph +<30,!2,O!,P,?S,/O!2^160>rl,!O!,|,?6,1'5=dl,2'3:N,4:?O,3:/Ph ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Pyributicarb;MW:330.4;EXA:1 : -<30,Ph,5:/??!,@3,\,?O!,S!,N?!,Ph,-5:N,-4:/O! +<30,Ph,5:/??!,@3,!,?O!,S!,N?!,Ph,-5:N,-4:/O! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Pyriproxyfen;MW:321.5;EXA:1 : -<30,Ph,@5,\,O,!Ph,@-3,\,O!2,?!,O,-60,Ph,-5:N +<30,Ph,@5,!,O,!Ph,@-3,!,O!2,?!,O,-60,Ph,-5:N ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Pyriminobac-Methyl;MW:361.354;EXA:- +CAT:pesticide;EN:Pyriminobac-Methyl;MW:361.354;EXA:1 : -<30,Ph,2:/O!'?O!,@5,\,/_,!d,N,!O!,@3,\,O!,|,Ph,2'6:N,3'5:/O! +<30,Ph,2:/O!'?O!,@5,!,?,!d,N,!O!,@3,!,O!,|,Ph,2'6:N,3'5:/O! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Pyrimethanil;MW:199.257;EXA:- +CAT:pesticide;EN:Pyrimethanil;MW:199.257;EXA:1 : -<30,Ph,@3,\,NH!,|,Ph,2'6:N,3'5:/_ +<30,Ph,@3,!,NH!,|,Ph,2'6:N,3'5:? ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Pyroquilon;MW:173.2;EXA:1 @@ -1886,247 +1956,242 @@ CAT:pesticide;EN:Pyroquilon;MW:173.2;EXA:1 %------------------------------------------------------------------------------ CAT:pesticide;EN:Vinclozolin;MW:286.108;EXA:1 : -<36,?5,3:N,5:O,2'4:?O,1:/_^54,1:/!d^-30,3:/Ph'(3'5:/Cl) +<36,?5,3:N,5:O,2'4:?O,1:?^54,1:/!d^-30,3:/Ph'(3'5:/Cl) ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Fipronil;MW:437.2;EXA:1 +CAT:pesticide;EN:Fipronil;MW:437.2;EXA:2 : -<30,Ph,2'4:/Cl,6:/?F?F!F,@3,\,|,?5,2'4=dl,1'2:N,3:/CN,5:/NH2,-2:/S?O'!?F?F!F +<30,Ph,2'4:/Cl,6:/?F?F!F,@3,!,|,?5,2'4=dl,1'2:N,3:/CN,5:/NH2,-2:/S?O'!'?F?F!F ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Fenomiphos;MW:303.36;EXA:- +CAT:pesticide;EN:Fenomiphos;MW:303.36;EXA:1 : -<30,!2,O!,P,?O,/NH'!?!^160,!,O,!Ph,-4:/_,-3:/S! +<30,!2,O!,P,?O,/NH'!?!^160,!,O,!Ph,-4:?,-3:/S! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Fenarimol;MW:331.2;EXA:- +CAT:pesticide;EN:Fenarimol;MW:331.2;EXA:1 : -<30,Ph,@3,\,!Ph,4'11:/Cl,7:/OH^30,7^-30:/Ph'(3'5:N) +<30,Ph,@3,!2,Ph,4'11:/Cl,7:/OH^30,7^-30:/Ph'(3'5:N) ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Fenothiocarb;MW:253.4;EXA:- +CAT:pesticide;EN:Fenothiocarb;MW:253.4;EXA:1 : -<30,Ph,@3,\,O,!5,S,!,?O!,N?! +<30,Ph,@3,!,O,!5,S,!,?O!,N?! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Fensulfothion;MW:308.35;EXA:- +CAT:pesticide;EN:Fensulfothion;MW:308.35;EXA:1 : -<30,!2,O!,P,//S,/O!2^160>rl,!,O,!Ph,-3:/S'?O! +<30,!2,O!,P,?S,/O!2^160>rl,!,O,!Ph,-3:/S'?O! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Fenitrothion;MW:277.23;EXA:- +CAT:pesticide;EN:Fenitrothion;MW:277.23;EXA:1 : -<-30,!O!,P,//S,/O!^160,!,O,!Ph,-4:/_,-3:/NO2 +<-30,!O!,P,?S,/O!^160,!,O,!Ph,-4:?,-3:/NO2 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Parathion-methyl;MW:263.2;EXA:- +CAT:pesticide;EN:Parathion-methyl;MW:263.2;EXA:1 : -<-30,!O!,P,//S,/O!^160,!,O,!Ph,-3:/NO2 +<-30,!O!,P,?S,/O!^160,!,O,!Ph,-3:/NO2 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Parathion;MW:291.3;EXA:- +CAT:pesticide;EN:Parathion;MW:291.3;EXA:1 : -<30,!2,O!,P,//S,/O!2^160>rl,!O,!Ph,-3:/NO2 +<30,!2,O!,P,?S,/O!2^160>rl,!O,!Ph,-3:/NO2 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Fenthion;MW:278.33;EXA:- +CAT:pesticide;EN:Fenthion;MW:278.33;EXA:1 : -<-30,!O!,P,//S,/O!^160,!O!,|,Ph,3:/_,4:/S! +<-30,!O!,P,?S,/O!^160,!O!,|,Ph,3:?,4:/S! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Butamifos;MW:332.36;EXA:- +CAT:pesticide;EN:Butamifos;MW:332.36;EXA:1 : -<-30,!2,?!,NH!,P,//S,/O!2^170>rl,!O!,|,Ph,2:/NO2,5:/_ +<-30,!2,?!,NH!,P,?S,/O!2^170>rl,!O!,|,Ph,2:/NO2,5:? ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Phenthoate;MW:320.358;EXA:- +CAT:pesticide;EN:Phenthoate;MW:320.358;EXA:1 : -<-30,!O!,P,//S,/O!^160,!,S,!,/Ph,!,?O!,O!2 +<-30,!O!,P,?S,/O!^160,!,S,!,/Ph,!,?O!,O!2 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Prothyophos;MW:329.18;EXA:- +CAT:pesticide;EN:Prothyophos;MW:329.18;EXA:1 : -<-30,!3,O!,P,//S,/O!2^160>rl,!O!,Ph,-5'-3:/Cl +<-30,!3,O!,P,?S,/O!2^160>rl,!O!,Ph,-5'-3:/Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Propaphos;MW:304.343;EXA:- +CAT:pesticide;EN:Propaphos;MW:304.343;EXA:1 : <-30,!3,O!,P,?O,/O!3^160>rl,!O!,Ph,-3:/S! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Profenofos;MW:373.6;EXA:- +CAT:pesticide;EN:Profenofos;MW:373.6;EXA:1 : -<30,!2,O!,P,//S,/O!3^160>rl,!O,!Ph,-5:/Cl,-3:/Br +<30,!2,O!,P,?S,/O!3^160>rl,!O,!Ph,-5:/Cl,-3:/Br ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Bromophos;MW:365.99;EXA:- +CAT:pesticide;EN:Bromophos;MW:365.99;EXA:1 : -<-30,!O!, P,//S,/O!^160,!O!,|,Ph,3'6:/Cl,4:/Br +<-30,!O!, P,?S,/O!^160,!O!,|,Ph,3'6:/Cl,4:/Br ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Phosalone;MW:367.80;EXA:- +CAT:pesticide;EN:Phosalone;MW:367.80;EXA:1 : -<30,!2,O!,P,//S,/O!2^160>rl,!,S!2,|,?5,4=Ph,4=dr,1:N,2:?O,3:O,8:/Cl +<30,!2,O!,P,?S,/O!2^160>rl,!,S!2,|,?5,4=Ph,4=dr,1:N,2:?O,3:O,8:/Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Phosmet;MW:317.32;EXA:- +CAT:pesticide;EN:Phosmet;MW:317.32;EXA:1 : -<-30,!O!,P,//S,/O!^160,!,S,!2,|,?5,3=Ph2,1:N,2'5:?O +<-30,!O!,P,?S,/O!^160,!,S,!2,|,?5,3=Ph2,1:N,2'5:?O ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Phorate;MW:260.4;EXA:- +CAT:pesticide;EN:Phorate;MW:260.4;EXA:1 : -<30,!2,O!,P,//S,!,S!2,S!2,4:/O!2^160>rl +<30,!2,O!,P,?S,!,S!2,S!2,4:/O!2^160>rl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Malathion;MW:330.35;EXA:- +CAT:pesticide;EN:Malathion;MW:330.35;EXA:1 : -<-30,!O!,P,//S,/O!^160,!S!,/!?O!'O!2`1,!,?O!,O!2 +<-30,!O!,P,?S,/O!^160,!S!,/!?O!'O!2`1,!,?O!,O!2 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Methidathion;MW:302.32;EXA:- +CAT:pesticide;EN:Methidathion;MW:302.32;EXA:1 : -<-30,!O!,P,//S,/O!^160,!,S!2,|,?5,4=dl,1'5:N,3:S,2:?O,4:/O! +<-30,!O!,P,?S,/O!^160,!,S!2,|,?5,4=dl,1'5:N,3:S,2:?O,4:/O! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Mevinphos;MW:224.15;EXA:- +CAT:pesticide;EN:Mevinphos;MW:224.15;EXA:1 : <-30,!O!,P,?O,/O!^160,!O,!?,!d,!,?O!,O! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Chlorpyrifos;MW:350.59;EXA:1 : -<30,!2,O!,P,//S,/O!2^160>rl,!O!,|,Ph,6:N,2'4'5:/Cl +<30,!2,O!,P,?S,/O!2^160>rl,!O!,|,Ph,6:N,2'4'5:/Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Chlorpyrifos-methyl;MW:322.53;EXA:- +CAT:pesticide;EN:Chlorpyrifos-methyl;MW:322.53;EXA:1 : -<-30,!O!,P,//S,/O!^160>rl,!O!,|,Ph,6:N,2'4'5:/Cl +<-30,!O!,P,?S,/O!^160>rl,!O!,|,Ph,6:N,2'4'5:/Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Cadusafos;MW:270.386;EXA:- +CAT:pesticide;EN:Cadusafos;MW:270.386;EXA:1 : <-30,!2,?!,S!,P,?O,/O!2^160>rl,!,S,!?,!2 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Dimethoate;MW:229.25;EXA:- +CAT:pesticide;EN:Dimethoate;MW:229.25;EXA:1 : -<-30,!O!,P,//S,/O!^160,!,S!2,?O,!NH! +<-30,!O!,P,?S,/O!^160,!,S!2,?O,!NH! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Tribufos;MW:314.50;EXA:- +CAT:pesticide;EN:Tribufos;MW:314.50;EXA:1 : <30,!4,S,!,P,?O,/S'!4^160>rl,!,S,!4 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Tolclofos-methyl;MW:301.13;EXA:- +CAT:pesticide;EN:Tolclofos-methyl;MW:301.13;EXA:1 : -<-30,!O!,P,//S,/O!^160,!O!,|,Ph,2'6:/Cl,4:/_ +<-30,!O!,P,?S,/O!^160,!O!,|,Ph,2'6:/Cl,4:? ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Piperophos;MW:353.48;EXA:- +CAT:pesticide;EN:Piperophos;MW:353.48;EXA:1 : -<-30,!3,O!,P,//S,/O'!?!^160>rl,!,S!2,?O!,|,?6,1:N,6:/_ +<-30,!3,O!,P,?S,/O'!?!^160>rl,!,S!2,?O!,|,?6,1:N,6:? ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Pyraclofos;MW:360.80;EXA:- +CAT:pesticide;EN:Pyraclofos;MW:360.80;EXA:1 : <30,!2,O!,P,?O,/S!3^160>rl,!O!,<-12,|,?5,1'4=dl,3'4:N,@-3,-12,Ph,-3:/Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Pyrazophos;MW:373.37;EXA:- +CAT:pesticide;EN:Pyrazophos;MW:373.37;EXA:1 : -<30,!2,O!,P,//S,/O!2^160>rl,!O!,|,?5,3=?6,2'5'7'9=dl,4'5'6:N,7:/_,-2:/?O!'O!2 +<30,!2,O!,P,?S,/O!2^160>rl,!O!,|,?5,3=?6,2'5'7'9=dl,4'5'6:N,7:?,-2:/?O!'O!2 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:EPN;MW:323.303;EXA:- +CAT:pesticide;EN:EPN;MW:323.303;EXA:1 : -<30,!2,O!,P,//S,/Ph^170,!,O,!Ph,-3:/NO2 +<30,!2,O!,P,?S,/Ph^170,!,O,!Ph,-3:/NO2 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Anilofos;MW:367.9;EXA:- +CAT:pesticide;EN:Anilofos;MW:367.9;EXA:1 : -<-30,!O!,P,//S,/O!^160,!,S,!2,?O!,N,/?!,!Ph,-3:/Cl +<-30,!O!,P,?S,/O!^160,!,S,!2,?O!,N,/?!,!Ph,-3:/Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Isazofos;MW:313.74;EXA:- +CAT:pesticide;EN:Isazofos;MW:313.74;EXA:1 : -<30,!2,O!,P,//S,/O!2^160>rl,!O!,|,?5,2'5=dl,2'4'5:N,4:/Cl,3:/?! +<30,!2,O!,P,?S,/O!2^160>rl,!O!,|,?5,2'5=dl,2'4'5:N,4:/Cl,3:/?! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Ethion;MW:384.46;EXA:- +CAT:pesticide;EN:Ethion;MW:384.46;EXA:1 : -<30,!2,O!,P,//S,/O!2^160>rl,!,S,!2,S,!,P,//S,/O!2^200>lr,!,O!2 +<30,!2,O!,P,?S,/O!2^160>rl,!,S,!2,S,!,P,?S,/O!2^200>lr,!,O!2 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Edifenphos;MW:310.37;EXA:- +CAT:pesticide;EN:Edifenphos;MW:310.37;EXA:1 : -<30,Ph,@3,\,O!,P,//S,/O!2>rl^160,!,S,!Ph +<30,Ph,@3,!,O!,P,?S,/O!2>rl^160,!,S,!Ph ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Ethoprophos;MW:242.33;EXA:- +CAT:pesticide;EN:Ethoprophos;MW:242.33;EXA:1 : <-30,!3,S,!,P,?O,/S!3^160>rl,!,O!2 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Ethrimfos;MW:292.29;EXA:- +CAT:pesticide;EN:Ethrimfos;MW:292.29;EXA:1 : -<-30,!O!,P,//S,/O!^160,!O!,|,Ph,2'4:N,5:/!,3:/O!2 +<-30,!O!,P,?S,/O!^160,!O!,|,Ph,2'4:N,5:/!,3:/O!2 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Quinalphos;MW:298.30;EXA:- +CAT:pesticide;EN:Quinalphos;MW:298.30;EXA:1 : -<30,!,O!2,P,//S,/O!2^160>rl,!O!,|,Ph,3=Ph,2'5:N +<30,!,O!2,P,?S,/O!2^160>rl,!O!,|,Ph,3=Ph,2'5:N ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Chlorfenvinphos;MW:359.58;EXA:- +CAT:pesticide;EN:Chlorfenvinphos;MW:359.58;EXA:1 : <30,!2,O!,P,?O,/O!2^160>rl,!O!,/Ph'(2'4:/Cl)`1,!d,!Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Pirimiphos-methyl;MW:305.333;EXA:- +CAT:pesticide;EN:Pirimiphos-methyl;MW:305.333;EXA:1 : -<-30,!O!,P,//S,/O!^160,!O,!Ph,-5'-3:N,-2:/_,-4:/N?2'!2 +<-30,!O!,P,?S,/O!^160,!O,!Ph,-5'-3:N,-2:?,-4:/N?2'!2 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Cyanophos;MW:243.22;EXA:- +CAT:pesticide;EN:Cyanophos;MW:243.22;EXA:1 : -<-30,!O!,P,//S,/O!^160,!,O,!Ph,-3:/CN +<-30,!O!,P,?S,/O!^160,!,O,!Ph,-3:/CN ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Dichlofenthion;MW:315.2;EXA:- +CAT:pesticide;EN:Dichlofenthion;MW:315.2;EXA:1 : -<30,!2,O!,P,//S,/O!2^160>rl,!,O,!Ph,-5'-3:/Cl +<30,!2,O!,P,?S,/O!2^160>rl,!,O,!Ph,-5'-3:/Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Fenvalerate;MW:419.91;EXA:- +CAT:pesticide;EN:Fenvalerate;MW:419.91;EXA:1 : -<30,Ph,6:/Cl,@3,\,/?!,!,?O,!O!,/CN,!Ph,-4:/O'!Ph>rl +<30,Ph,6:/Cl,@3,!,/?!,!,?O,!O!,/CN,!Ph,-4:/O'!Ph>rl ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Fenpropathrin;MW:349.4;EXA:1 : -<-30,?3,{1^35'2^-35}:*/_,{1^-35'2^35}:/*_,@3,\,?O,!O!,/CN,!Ph,-4:/O!'Ph>rl +<-30,?3,{1^35'2^-35}:?w,{1^-35'2^35}:?z,@3,!,?O,!O!,/CN,!Ph,-4:/O!'Ph>rl ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Fenpropimorph;MW:303.49;EXA:1 : -<30,?6,3:N,6:O,1'5:*/_,@3,\,!?,!2,Ph,-3:/??! +<30,?6,3:N,6:O,1'5:?w,@3,!,!?,!2,Ph,-3:/??! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Phthalide;MW:271.9;EXA:1 -: -<30,Ph,3=?5,8:O,9:?O,1'2'5'6:/Cl -; -%------------------------------------------------------------------------------ -CAT:pesticide;EN:Butachlor;MW:311.85;EXA:- +CAT:pesticide;EN:Butachlor;MW:311.85;EXA:1 : <30,!4,O!2,N,/Ph'(-1'-5:/!)`1,!,?O!2,Cl ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Bupirimate;MW:316.42;EXA:1 : -<30,Ph,4'6:N,1:/_,@3,\,O!,S?O?O,!,N?!,2:/!3,5:/NH!2 +<30,Ph,4'6:N,1:?,@3,!,O!,S?O?O,!,N?!,2:/!3,5:/NH!2 ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Buprofezin;MW:305.4;EXA:1 @@ -2134,59 +2199,59 @@ CAT:pesticide;EN:Buprofezin;MW:305.4;EXA:1 <-30,?6,1'5:N,1:/Ph,3:S,6:?O,5:/?!,4://N'!??! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Flamprop-methyl;MW:335.8;EXA:- +CAT:pesticide;EN:Flamprop-methyl;MW:335.8;EXA:1 : -<30,Ph,1:/Cl,6:/F,@3,\,N,/?O!'Ph>rl,!?!,?O,!O! +<30,Ph,1:/Cl,6:/F,@3,!,N,/?O!'Ph>rl,!?!,?O,!O! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Fluacrypyrim;MW:426.392;EXA:1 : -<30,Ph,4'6:N,1:/?F?F!F,5:/O'!?!,@3,\,O!2,Ph,@-1,\,|,!d,!O!,1:/?O!'O! +<30,Ph,4'6:N,1:/?F?F!F,5:/O'!?!,@3,!,O!2,Ph,@-1,!,|,!d,!O!,1:/?O!'O! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Fluquinconazole;MW:376.2;EXA:1 : -<30,Ph,3=?6,8=dl,7'9:N,6:/F,10:?O,@8,\,|,?5,2'4=dl,1'3'5:N,$9:/Ph'(4'6:/Cl) +<30,Ph,3=?6,8=dl,7'9:N,6:/F,10:?O,@8,!,|,?5,2'4=dl,1'3'5:N,$9:/Ph'(4'6:/Cl) ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Fludioxonil;MW:248.2;EXA:1 : -<30,Ph,5=?5,7'9:O,{8^-40'8^40}:/F,@4,\,|,?5,2'5=dl,-2:NH,-4:/CN +<30,Ph,5=?5,7'9:O,{8^-40'8^40}:/F,@4,!,|,?5,2'5=dl,-2:NH,-4:/CN ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Flucythrinate;MW:451.5;EXA:1 : -<30,Ph,@6,\,O!,/F,!,F,@3,\,/?!,!,?O,!O!,/CN,!Ph,-4:/O!'Ph>rl +<30,Ph,@6,!,O!,/F,!,F,@3,!,/?!,!,?O,!O!,/CN,!Ph,-4:/O!'Ph>rl ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Flutolanil;MW:323.3;EXA:1 : -<30,Ph,2:/?F?F!F,@3,\,?O,!NH!,Ph,-1:/O'!?! +<30,Ph,2:/?F?F!F,@3,!,?O,!NH!,Ph,-1:/O'!?! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Fluvalinate;MW:502.92;EXA:1 : -<30,Ph,5:/Cl,1:/?F?F!F,@4,\,NH!,/?!,!,?O,!O!,/CN,!Ph,-4:/O!'Ph>rl +<30,Ph,5:/Cl,1:/?F?F!F,@4,!,NH!,/?!,!,?O,!O!,/CN,!Ph,-4:/O!'Ph>rl ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Flumioxazin;MW:354.337;EXA:1 : -<30,Ph,6:/F,3=?6,-1:O,-4:N,-3:?O,@-4,\,!,!t,@1,\,|,?5,3=?6,3=dr,1:N,2'5:?O +<30,Ph,6:/F,3=?6,-1:O,-4:N,-3:?O,@-4,!2,!t,@1,!,|,?5,3=?6,3=dr,1:N,2'5:?O ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Pretilachlor;MW:311.85;EXA:- +CAT:pesticide;EN:Pretilachlor;MW:311.85;EXA:1 : -<30,Ph,2'4:/!,@3,\,N,/?O!2'Cl`1,!3,O!3 +<30,Ph,2'4:/!,@3,!,N,/?O!2'Cl`1,!3,O!3 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Procymidone;MW:284.136;EXA:- +CAT:pesticide;EN:Procymidone;MW:284.136;EXA:1 : -?6,1:N,@3,&5,2'6:?O,3'5:/_,1:/Ph'(3'5:/Cl) +?6,1:N,@3,&5,2'6:?O,3'5:?,1:/Ph'(3'5:/Cl) ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Propachlor;MW:211.689;EXA:- +CAT:pesticide;EN:Propachlor;MW:211.689;EXA:1 : -<30,Ph,@3,\,N,/?!,!,?O!2,Cl +<30,Ph,@3,!,N,/?!,!,?O!2,Cl ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Propazine;MW:229.7;EXA:1 @@ -2194,64 +2259,64 @@ CAT:pesticide;EN:Propazine;MW:229.7;EXA:1 <30,Ph,2'4'6:N,5:/Cl,1'3:/NH'!?! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Propanil;MW:218.077;EXA:- +CAT:pesticide;EN:Propanil;MW:218.077;EXA:1 : <30,Ph,1'6:/Cl,3:/NH!'?O!2 ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Propyzamide;MW:256.1;EXA:1 : -<30,Ph,1'5:/Cl,@3,\,?O,!NH,!??!,!t +<30,Ph,1'5:/Cl,@3,!,?O,!NH,!??!,!t ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Propiconazole;MW:342.22;EXA:1 : -<30,Ph,4'6:/Cl,@3,\,!2,|,?5,2'4=dl,1'2'4:N,@$7,?5,-1'-4:O,-3:/!2^-15 +<30,Ph,4'6:/Cl,@3,!3,|,?5,2'4=dl,1'2'4:N,@$7,?5,-1'-4:O,-3:/!2^-15 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Prohydrojasmon;MW:254.37;EXA:- +CAT:pesticide;EN:Prohydrojasmon;MW:254.37;EXA:1 : <18,?5,2:?O,3:*/!4^-12,4:/*!?O!'O!3 ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Bromacil;MW:261.119;EXA:1 : -<30,?6,6=dl,3:N,1:/Br,2'4:?O,5:NH,6:/_,3:/?!2 +<30,?6,6=dl,3:N,1:/Br,2'4:?O,5:NH,6:?,3:/?!2 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Prometryn;MW:241.4;EXA:- +CAT:pesticide;EN:Prometryn;MW:241.4;EXA:1 : <30,Ph,2'4'6:N,5:/S!,1'3:/NH'!?! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Bromobutide;MW:312.2;EXA:- +CAT:pesticide;EN:Bromobutide;MW:312.2;EXA:1 : -<30,Ph,@3,\,??,!NH!,?O!,/Br,!??! +<30,Ph,@3,!,??,!NH!,?O!,/Br,!??! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Bromopropylate;MW:428.12;EXA:- +CAT:pesticide;EN:Bromopropylate;MW:428.12;EXA:1 : -<30,Ph,@3,\,!Ph,6'11:/Br,7:/OH^-45,@7,30,?O!,O,-60,?! +<30,Ph,@3,!2,Ph,6'11:/Br,7:/OH^-45,@7,30,?O!,O,-60,?! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Hexaconazole;MW:314.2;EXA:- +CAT:pesticide;EN:Hexaconazole;MW:314.2;EXA:1 : <36,?5,1'4=dl,1'3'5:N,@3,30,!5,-4^30:/OH,@-5,-30,Ph,-3'-1:/Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Hexazinone;MW:252.31;EXA:- +CAT:pesticide;EN:Hexazinone;MW:252.31;EXA:1 : -<30,?6,3=dl,2'4'6:N,2:/_,1'5:?O,6:/?6,3:/N?! +<30,?6,3=dl,2'4'6:N,2:?,1'5:?O,6:/?6,3:/N?! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Benalaxyl;MW:325.4;EXA:- +CAT:pesticide;EN:Benalaxyl;MW:325.4;EXA:1 : -<30,Ph,@3,\,!,?O!,N,/Ph'(-5'-1:/_),!?!,?O,!O! +<30,Ph,@3,!2,?O!,N,/Ph'(-5'-1:?),!?!,?O,!O! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Benoxacor;MW:260.1;EXA:- +CAT:pesticide;EN:Benoxacor;MW:260.1;EXA:1 : -<90,Ph,3=?6,7:N,10:O,8:/_,@7,\,?O!,/Cl,!Cl +<90,Ph,3=?6,7:N,10:O,8:?,@7,!,?O!,/Cl,!Cl ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Heptachlor;MW:373.35;EXA:2 @@ -2259,19 +2324,19 @@ CAT:pesticide;EN:Heptachlor;MW:373.35;EXA:2 <30,?6`1.3,3=?5,6'8=dl,@2,210~wf`1.5,&5~wb,{1'2'5'6'9'10^-210'10^-150}:/Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Permethrin;MW:391.30;EXA:- +CAT:pesticide;EN:Permethrin;MW:391.30;EXA:1 : -<-30,?3,{2^-35'*2^35}:*/_,@1,\,!d,/Cl,!Cl,@3,\,?O!,O!2,Ph,-4:/O!'Ph>rl +<-30,?3,{2^-35'*2^35}:?w,@1,!,!d,/Cl,!Cl,@3,!,?O!,O!2,Ph,-4:/O!'Ph>rl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Penconazole;MW:284.184;EXA:- +CAT:pesticide;EN:Penconazole;MW:284.184;EXA:1 : -<30,Ph,4'6:/Cl,@3,\,/!2,!2,|,<30,?5,2'4=dl,1'2'4:N +<30,Ph,4'6:/Cl,@3,!,/!2,!2,|,<30,?5,2'4=dl,1'2'4:N ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Pendimethalin;MW:281.3;EXA:- +CAT:pesticide;EN:Pendimethalin;MW:281.3;EXA:1 : -<30,Ph,3'5:/NO2,1'2:/_,@4,\,NH,!?,!2 +<30,Ph,3'5:/NO2,1'2:?,@4,!,NH,!?,!2 ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Benfluralin;MW:335.3;EXA:1 @@ -2281,118 +2346,118 @@ CAT:pesticide;EN:Benfluralin;MW:335.3;EXA:1 %------------------------------------------------------------------------------ CAT:pesticide;EN:Benfuresate;MW:256.3;EXA:1 : -<30,Ph,3=?5,7:O,9:??,@6,\,O!,S?O?O,!2 +<30,Ph,3=?5,7:O,9:??,@6,!,O!,S?O?O,!2 ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Bensulide;MW:397.5;EXA:1 : -<30,!?!,O!,P,//S,/O'!?!^160>rl,!,S!3,NH!,S?O?O,!Ph +<30,!?!,O!,P,?S,/O'!?!^160>rl,!,S!3,NH!,S?O?O,!Ph ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Myclobutanil;MW:288.8;EXA:- +CAT:pesticide;EN:Myclobutanil;MW:288.8;EXA:1 : <36,?5,1'4=dl,1'3'5:N,@3,30,!,/CN^30,/Ph'(4:/Cl)^-30,!4 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Methoxychlor;MW:345.644;EXA:- +CAT:pesticide;EN:Methoxychlor;MW:345.644;EXA:1 : -<30,Ph,@3,\,!Ph,6'11:/O!,7:/?Cl?Cl!Cl +<30,Ph,@3,!2,Ph,6'11:/O!,7:/?Cl?Cl!Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Metolachlor;MW:283.8;EXA:- +CAT:pesticide;EN:Metolachlor;MW:283.8;EXA:1 : -<30,Ph,5:/!,3:/_,@4,\,N,/?!2'O!,!,?O!2,Cl +<30,Ph,5:/!,3:?,@4,!,N,/?!2'O!,!,?O!2,Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Mefenacet;MW:298.4;EXA:- +CAT:pesticide;EN:Mefenacet;MW:298.4;EXA:1 : -<12,Ph,3=?5,9=dl,9:N,7:S,@8,\,O!2,?O!,N?!,Ph +<12,Ph,3=?5,9=dl,9:N,7:S,@8,!,O!2,?O!,N?!,Ph ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Mefenpyr-diethyl;MW:373.23;EXA:- +CAT:pesticide;EN:Mefenpyr-diethyl;MW:373.23;EXA:1 : -<18,?5,5=dl,4'5:N,3^65:/_,{1^12'3^-12}:/?O!'O!2,@4,-24,Ph,-3'-1:/Cl +<18,?5,5=dl,4'5:N,3^65:?,{1^12'3^-12}:/?O!'O!2,@4,-24,Ph,-3'-1:/Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Mepronil;MW:269.3;EXA:- +CAT:pesticide;EN:Mepronil;MW:269.3;EXA:1 : -<30,Ph,2:/_,@3,\,?O,!NH!,Ph,-2:/O'!?! +<30,Ph,2:?,@3,!,?O,!NH!,Ph,-2:/O'!?! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Molinate;MW:187.3;EXA:1 : -<47,?7,3:N,@3,\,?O!,S!2 +<47,?7,3:N,@3,!,?O!,S!2 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Resmethrin;MW:338.4;EXA:2 +CAT:pesticide;EN:Resmethrin;MW:338.4;EXA:1 : -<-30,?3,{2^-35'*2^35}:*/_,@1,\,!d,?!,3:/?O!'O!2,|,?5,3'5=dl,2:O,3:/!Ph +<-30,?3,{2^-35'*2^35}:?w,@1,!,!d,?!,3:/?O!'O!2,|,?5,3'5=dl,2:O,3:/!Ph ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Lenacil;MW:234.3;EXA:- +CAT:pesticide;EN:Lenacil;MW:234.3;EXA:1 : <30,?6,3=?5,3=dl,6:N,2:NH,1'5:?O,6:/?6 ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Halfenprox;MW:477.4;EXA:1 : -<30,Ph,@6,\,O!,/F^35,/F^-35,!,Br,@3,\,!??!,O!2,Ph,-2:/O!'Ph>rl +<30,Ph,@6,!,O!,/F^35,/F^-35,!,Br,@3,!,!??!,O!2,Ph,-2:/O!'Ph>rl ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Paraquat;MW:257.16;EXA:1 : -Ph,@4,\,Ph,1'10:N?,1:p_^-90,10:p_^90,@1,@(0'1.2),Cl,n_^15,@10,@(0'1.2),Cl,n_^15 +Ph,@4,!,Ph,1'10:N?,1:p_^-90,10:p_^90,@1,@(0'1.2),Cl,n_^15,@10,@(0'1.2),Cl,n_^15 ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Oxine-Copper;MW:351.852;EXA:1 : -Ph,4:N,5=Ph,@-4,\,O,-60,<90,Cu,-90,O,60,Ph,-2=Ph,10:N,@4,&12~vf,@23,&12~vf +Ph,4:N,5=Ph,@-4,!,O,-60,<90,Cu,-90,O,60,Ph,-2=Ph,10:N,@4,&12~vf,@23,&12~vf ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Endosulfan;MW:406.904;EXA:2 : -<26,?7,7=?6[13],@11,208~wf`1.45,&8~wb,10=dl,3'5:O,4:S,4:?O, +<26,?7,7=#1.3'?6,@11,208~wf`1.45,&8~wb,10=dl,3'5:O,4:S,4:?O, {8'9'10'11'12^-210'12^-150}:/Cl ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Uniconazole-P;MW:291.779;EXA:1 : -<30,Ph,6:/Cl,@3,\,!d,!,/OH,!??!,@8,\,|,?5,2'4=dl,1'2'4:N +<30,Ph,6:/Cl,@3,!,!d,!,/OH,!??!,@8,!,|,?5,2'4=dl,1'2'4:N ; %****************************************************************************** -CAT:pesticide;EN:Azinphos-methyl;MW:317.318;EXA:- +CAT:pesticide;EN:Azinphos-methyl;MW:317.318;EXA:1 : -<-30,!O!,P,//S,/O!^160,!,S!2,|,?6,-3=?6,2'4'8'10=dl,1'3:N,6:?O +<-30,!O!,P,?S,/O!^160,!,S!2,|,?6,-3=?6,2'4'8'10=dl,1'3:N,6:?O ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Azoxystorbin;MW:403.394;EXA:2 +CAT:pesticide;EN:Azoxystorbin;MW:403.394;EXA:1 : -<30,Ph,2:/CN,@3,\,O,!Ph,-1'-3:N,@-4,\,O,!Ph,@-5,\,//!O!,!,?O!,O! +<30,Ph,2:/CN,@3,!,O,!Ph,-1'-3:N,@-4,!,O,!Ph,@-5,!,//!O!,!,?O!,O! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Aramite;MW:334.859;EXA:- +CAT:pesticide;EN:Aramite;MW:334.859;EXA:1 : -<30,Ph,6:/??!,@3,\,O!2,?!,O!,S,?O,!,O!3,Cl +<30,Ph,6:/??!,@3,!,O!2,?!,O!,S,?O,!,O!3,Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Aldicarb;MW:190.3;EXA:- +CAT:pesticide;EN:Aldicarb;MW:190.3;EXA:1 : <-30,!,S,!,??,!,!d,N,!O!,?O,!NH! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Aldoxycarb;MW:222.3;EXA:- +CAT:pesticide;EN:Aldoxycarb;MW:222.3;EXA:1 : <30,!,?O,!NH!,O!,N,!d,!,??,!,S?O?O,! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Isoxaflutole;MW:359.319;EXA:1 : -<30,Ph,6:/?F?F!F,@4,\,S?O?O,!,@3,\`1,?O,!`1,<-12,|,?5,1'4=dl,3:O,4:N,2:/?3 +<30,Ph,6:/?F?F!F,@4,!,S?O?O,!,@3,!`1,?O,!`1,<-12,|,?5,1'4=dl,3:O,4:N,2:/?3 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Iprovalicarb;MW:320.4;EXA:- +CAT:pesticide;EN:Iprovalicarb;MW:320.4;EXA:1 : -<30,Ph,6:/_,@3,\,!?!,NH!,?O!,??,!NH!,?O!,O,!?! +<30,Ph,6:?,@3,!,!?!,NH!,?O!,??,!NH!,?O!,O,!?! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Imazalil;MW:297.2;EXA:1 @@ -2402,10 +2467,10 @@ CAT:pesticide;EN:Imazalil;MW:297.2;EXA:1 %------------------------------------------------------------------------------ CAT:pesticide;EN:Imidacloprid;MW:255.662;EXA:1 : -<30,Ph,1:N,6:/Cl,@3,\,!,|,?5,1:N,3:NH,2://N'!NO2 +<30,Ph,1:N,6:/Cl,@3,!2,|,?5,1:N,3:NH,2://N'!NO2 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Indanofan;MW:340.80;EXA:- +CAT:pesticide;EN:Indanofan;MW:340.80;EXA:1 : <30,Ph,3=?5,7'9:?O,8^55>lr:/!,@8,-30,!2,Ph,-2:/Cl,@11,?3,-2:O ; @@ -2413,87 +2478,87 @@ CAT:pesticide;EN:Indanofan;MW:340.80;EXA:- CAT:pesticide;EN:Indoxacarb;MW:527.837;EXA:2 : <-6,Ph,3=?5,9=?6,15=dl,10:O,12'13:N,1:/Cl,8`1^-54:/?O!'O!, - @12,\,?O!,N,/?O!'O!,!Ph,-3:/O!'?F?F!F + @12,!,?O!,N,/?O!'O!,!Ph,-3:/O!'?F?F!F ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Oxamyl;MW:219.3;EXA:- +CAT:pesticide;EN:Oxamyl;MW:219.3;EXA:1 : <-30,!,N?!,?O!,/S!,!d,N,!O!,?O!,NH! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Oryzalin;MW:346.4;EXA:- +CAT:pesticide;EN:Oryzalin;MW:346.4;EXA:1 : <30,Ph,1'3:/NO2,5:/S?O?O'!NH2,2:/N?2'!3 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Carbaryl;MW:201.22;EXA:- +CAT:pesticide;EN:Carbaryl;MW:201.22;EXA:1 : -<30,Ph,5=Ph,@4,\,?O,!O!,NH! +<30,Ph,5=Ph,@4,!,?O,!O!,NH! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Carpropamid;MW:334.665;EXA:- +CAT:pesticide;EN:Carpropamid;MW:334.665;EXA:1 : -<-30,?3,1:/_,{2^-35'*2^35}:*/Cl,3^70:/!,@3,\,?O!,NH,!?!,Ph,-3:/Cl +<-30,?3,1:?,{2^-35'*2^35}:*/Cl,3^70:/!,@3,!,?O!,NH,!?!,Ph,-3:/Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Cumyluron;MW:302.802;EXA:- +CAT:pesticide;EN:Cumyluron;MW:302.802;EXA:1 : -<30,Ph,@4,\,??,!NH!,?O!,NH,!2,Ph,-1:/Cl +<30,Ph,@4,!,??,!NH!,?O!,NH,!2,Ph,-1:/Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Cloquintocet-methyl;MW:335.83;EXA:- +CAT:pesticide;EN:Cloquintocet-methyl;MW:335.83;EXA:1 : -<90,Ph,4=Ph,2:N,10:/Cl,@7,\,O!2,?O!,O,!?,!5 +<90,Ph,4=Ph,2:N,10:/Cl,@7,!,O!2,?O!,O,!?,!5 ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Clotianidin;MW:249.673;EXA:1 : -<6,?5,3'5=dl,2:S,5:N,1:/Cl,@3,\,!NH!,/NH!,!d,N,!NO2 +<6,?5,3'5=dl,2:S,5:N,1:/Cl,@3,!2,NH!,/NH!,!d,N,!NO2 ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Chromafenozide;MW:394.515;EXA:1 : -<30,?6,3=?6,5:O,7'9'11=dl,7:/_,@8,\,?O,!NH!,N,/??!,!,?O,!Ph,-4'-3:/_ +<30,?6,3=?6,5:O,7'9'11=dl,7:?,@8,!,?O,!NH!,N,/??!,!,?O,!Ph,-4'-3:? ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Clomeprop;MW:324.2;EXA:- +CAT:pesticide;EN:Clomeprop;MW:324.2;EXA:1 : -<30,Ph,4'6:/Cl,5:/_,@3,\,O,!?!,?O,!NH!,Ph +<30,Ph,4'6:/Cl,5:?,@3,!,O,!?!,?O,!NH!,Ph ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Chloridazon;MW:221.6;EXA:- +CAT:pesticide;EN:Chloridazon;MW:221.6;EXA:1 : <30,?6,3'4:N,2'6=dl,5:?O,1:/NH2,6:/Cl,4:/Ph ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Chloroxuron;MW:290.745;EXA:- +CAT:pesticide;EN:Chloroxuron;MW:290.745;EXA:1 : -<30,Ph,6:/Cl,@3,\,O,!Ph,@-3,\,NH!,?O!,N?! +<30,Ph,6:/Cl,@3,!,O,!Ph,@-3,!,NH!,?O!,N?! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Cyazofamid;MW:324.783;EXA:1 : -<18,?5,2'5=dl,2'4:N,1:/Cl,3:/CN,@4,\,S?O?O,!,N?!,5:/Ph'(4:/_) +<18,?5,2'5=dl,2'4:N,1:/Cl,3:/CN,@4,!,S?O?O,!,N?!,@5,!,Ph,-3:? ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Diuron;MW:233.1;EXA:- +CAT:pesticide;EN:Diuron;MW:233.1;EXA:1 : -<30,Ph,1'6:/Cl,@3,\,NH!,?O!,N?! +<30,Ph,1'6:/Cl,@3,!,NH!,?O!,N?! ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Cyflufenamid;MW:412.36;EXA:2 : -<30,Ph,4^20:/?F?F!F,1'2:/F,@3,\,!NH!,?O!2,Ph,@-10,\\,N,!,<-12,O!2,?3 +<30,Ph,4^20:/?F?F!F,1'2:/F,@3,!2,NH!,?O!2,Ph,@-10,!d,N,!,<-12,O!2,?3 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Diflubenzuron;MW:310.7;EXA:- +CAT:pesticide;EN:Diflubenzuron;MW:310.7;EXA:1 : -<30,Ph,2'4:/F,@3,\,?O,!NH!,?O,!NH!,Ph,-3:/Cl +<30,Ph,2'4:/F,@3,!,?O,!NH!,?O,!NH!,Ph,-3:/Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Cyprodinil;MW:225.295;EXA:- +CAT:pesticide;EN:Cyprodinil;MW:225.295;EXA:1 : -<30,Ph,2'4:N,5:/_,1:/?3,3:/NH!'Ph +<30,Ph,2'4:N,5:?,1:/?3,3:/NH!'Ph ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Simeconazole;MW:293.417;EXA:1 @@ -2501,229 +2566,230 @@ CAT:pesticide;EN:Simeconazole;MW:293.417;EXA:1 <36,?5,1'3'5:N,1'4=dl,@3,30,!,/OH^30,!2,Si,??!,7^-30:/Ph'(4:/F), ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Dimethirimol;MW:209.29;EXA:- +CAT:pesticide;EN:Dimethirimol;MW:209.29;EXA:1 : -<30,?6,3'5=dl,1:?O,2:NH,3:/N?!,4:N,5:/_,6:/??! +<30,?6,3'5=dl,1:?O,2:NH,3:/N?!,4:N,5:?,6:/??! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Dimethomorph;MW:387.86;EXA:- +CAT:pesticide;EN:Dimethomorph;MW:387.86;EXA:1 : -<30,?6,1:O,4:N,@4,\,?O!,!d`1,/Ph'(4:/Cl),!,|,Ph,4'5:/O! +<30,?6,1:O,4:N,@4,!,?O!,!d`1,/Ph'(4:/Cl),!,|,Ph,4'5:/O! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Silafluofen;MW:408.588;EXA:- +CAT:pesticide;EN:Silafluofen;MW:408.588;EXA:1 : -<30,Ph,@5,\,O,!Ph,-1:/F,@10,\,!3,Si,??,!Ph,-3:/O!2 +<30,Ph,@5,!,O,!Ph,-1:/F,@10,!4,Si,??,!Ph,-3:/O!2 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Di-allate;MW:270.212;EXA:- +CAT:pesticide;EN:Di-allate;MW:270.212;EXA:1 : <-30,!?!,N,!,?O!,S,!2,!d,!Cl,3:/?!,7:/Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Daimuron;MW:268.4;EXA:- +CAT:pesticide;EN:Daimuron;MW:268.4;EXA:1 : -<30,Ph,@4,\,??,!NH!,?O,!NH!,Ph,-3:/_ +<30,Ph,@4,!,??,!NH!,?O,!NH!,Ph,-3:? ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Thiacloprid;MW:252.72;EXA:- +CAT:pesticide;EN:Thiacloprid;MW:252.72;EXA:1 : -<30,Ph,1:N,6:/Cl,@3,\,!,<-12,|,?5,1:N,3:S,-4://N'!CN +<30,Ph,1:N,6:/Cl,@3,!2,<-12,|,?5,1:N,3:S,-4://N'!CN ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Thiabendazole;MW:201.247;EXA:1 : -<30,Ph,3=?5,8=dl,9:NH,7:N,@8,\,|,?5,1'4=dl,3:S,5:N +<30,Ph,3=?5,8=dl,9:NH,7:N,@8,!,|,?5,1'4=dl,3:S,5:N ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Thiamethoxam;MW:291.71;EXA:2 : -<30,?6,2:O,4'6:N,6:/_,@5,\\,N,!NO2,@4,\,!,|,?5,1'3=dl,3:N,5:S,4:/Cl +<30,?6,2:O,4'6:N,6:?,@5,!d,N,!NO2,@4,!2,|,?5,1'3=dl,3:N,5:S,4:/Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Tebuthiuron;MW:228.3;EXA:- +CAT:pesticide;EN:Tebuthiuron;MW:228.3;EXA:1 : -<18,?5,3'5=dl,4'5:N,2:S,1:/??!,@3,\,N?!,?O,!NH! +<18,?5,3'5=dl,4'5:N,2:S,1:/??!,@3,!,N?!,?O,!NH! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Tebufenozide;MW:352.5;EXA:- +CAT:pesticide;EN:Tebufenozide;MW:352.5;EXA:1 : -<30,Ph,6:/!,@3,\,?O,!NH!,N,/??!,!,?O,!Ph,-4'-2:/_ +<30,Ph,6:/!,@3,!,?O,!NH!,N,/??!,!,?O,!Ph,-4'-2:? ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Teflubenzuron;MW:381.1;EXA:- +CAT:pesticide;EN:Teflubenzuron;MW:381.1;EXA:1 : -<30,Ph,2'4:/F,@3,\,?O,!NH!,?O,!NH!,|,Ph,3'5:/Cl,4'6:/F +<30,Ph,2'4:/F,@3,!,?O,!NH!,?O,!NH!,|,Ph,3'5:/Cl,4'6:/F ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Tridemorph;MW:297.5;EXA:- +CAT:pesticide;EN:Tridemorph;MW:297.5;EXA:1 : -<30,?6,3:N,6:O,1'5:/_,3:/!12 +<30,?6,3:N,6:O,1'5:?,3:/!12 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Triflumuron;MW:358.701;EXA:- +CAT:pesticide;EN:Triflumuron;MW:358.701;EXA:1 : -<30,Ph,4:/Cl,@3,\,?O,!NH!,?O,!NH!,Ph,-2:/O!'?F?F!F +<30,Ph,4:/Cl,@3,!,?O,!NH!,?O,!NH!,Ph,-2:/O!'?F?F!F ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Naproanilide;MW:291.35;EXA:- +CAT:pesticide;EN:Naproanilide;MW:291.35;EXA:1 : -<30,Ph,4=Ph,@8,\,O,!?!,?O,!NH!,Ph +<30,Ph,4=Ph,@8,!,O,!?!,?O,!NH!,Ph ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Novaluron;MW:492.706;EXA:- +CAT:pesticide;EN:Novaluron;MW:492.706;EXA:1 : -<30,Ph,2'4:/F,@3,\,?O,!NH!,?O,!NH!, - Ph,-4:/Cl,@-3,\,O!,/F^-35,/F^35,!,/F,!O!,?F?F!F +<30,Ph,2'4:/F,@3,!,?O,!NH!,?O,!NH!, + Ph,-4:/Cl,@-3,!,O!,/F^-35,/F^35,!,/F,!O!,?F?F!F ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Pyraclostrobin;MW:387.817;EXA:- +CAT:pesticide;EN:Pyraclostrobin;MW:387.817;EXA:1 : -<30,Ph,@3,\,!O!,<12,|,?5,2'5=dl,4'5:N,@4,12,Ph,-3:/Cl,||,@2,\,N,/O!,!?O,!O! +<30,Ph,@3,!2,O!,<12,|,?5,2'5=dl,4'5:N,@4,12,Ph,-3:/Cl,||,@2,!,N,/O!,!?O,!O! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Pirimicarb;MW:238.291;EXA:- +CAT:pesticide;EN:Pirimicarb;MW:238.291;EXA:1 : -<30,Ph,1'5:N,2'3:/_,6:/N?!,@4,\,O!,?O!,N?! +<30,Ph,1'5:N,2'3:?,6:/N?!,@4,!,O!,?O!,N?! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Fenoxycarb;MW:301.35;EXA:- +CAT:pesticide;EN:Fenoxycarb;MW:301.35;EXA:1 : -<30,Ph,@5,\,O,!Ph,@-3,\,O!3,NH!,?O!,O!2 +<30,Ph,@5,!,O,!Ph,@-3,!,O!3,NH!,?O!,O!2 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Fenobucarb;MW:207.3;EXA:- +CAT:pesticide;EN:Fenobucarb;MW:207.3;EXA:1 : -<30,Ph,5:/?!2,@4,\,O!,?O,!NH! +<30,Ph,5:/?!2,@4,!,O!,?O,!NH! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Ferimzone;MW:254.337;EXA:- +CAT:pesticide;EN:Ferimzone;MW:254.337;EXA:1 : -<30,Ph,4:/_,@3,\,/_,!d,N,!NH!,|,Ph,2'6:N,3'5:/_ +<30,Ph,4:?,@3,!,?,!d,N,!NH!,|,Ph,2'6:N,3'5:? ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Fenamidone;MW:311.403;EXA:- +CAT:pesticide;EN:Fenamidone;MW:311.403;EXA:1 : -<18,?5,4=dl,3'5:N,2:?O,@3,\,NH!,Ph,4:/S!,1^52:*/_,1^-48:/*Ph +<18,?5,4=dl,3'5:N,2:?O,@3,!,NH!,Ph,4:/S!,1^52:?w,1^-48:/*Ph ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Fenpyroximate;MW:421.49;EXA:- +CAT:pesticide;EN:Fenpyroximate;MW:421.49;EXA:2 : -<-6,?5,3'5=db,1'2:N,2'5:/_,@3,-15,O,!Ph,@4,\,!d,N!,O!2,Ph,@-3,\,?O,-60,O,!4 +<-6,?5,3'5=db,1'2:N,2'5:?,@3,-15,O,!Ph,@4,!,!d,N!,O!2,Ph,@-3,!,?O,-60,O,!4 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Phenmedipham;MW:300.32;EXA:- +CAT:pesticide;EN:Phenmedipham;MW:300.32;EXA:1 : -<30,Ph,5:/_,@3,\,NH!,?O!,O,!Ph,-4:/NH!'?O!'O! +<30,Ph,5:?,@3,!,NH!,?O!,O,!Ph,-4:/NH!'?O!'O! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Butafenacil;MW:474.817;EXA:- +CAT:pesticide;EN:Butafenacil;MW:474.817;EXA:1 : -<30,?6,6=dl,3'5:N,2'4:?O,6:/?F?F!F,3:/Ph'(4:/Cl),@-2,\,?O,!O!,??,!,?O!,O!2,!d +<30,?6,5=dl,1'3:N,1:?,2'4:?O,6:/?F?F!F,@3,!,Ph,-3:/Cl, + @-2,!,?O,!O!,??,!,?O!,O!2,!d ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Flufenacet;MW:363.331;EXA:- +CAT:pesticide;EN:Flufenacet;MW:363.331;EXA:1 : -<6,?5,2'5=dl,1'2:N,4:S,5:/?F?F!F,@3,\,O!,-60,?O!,N,/?!,!Ph,-3:/F +<6,?5,2'5=dl,1'2:N,4:S,5:/?F?F!F,@3,!,O!,-60,?O!,N,/?!,!Ph,-3:/F ; %------------------------------------------------------------------------------ CAT:pesticide;EN:Flufenoxuron;MW:488.77;EXA:1 : -<30,Ph,2'4:/F,@3,\,?O,!NH!,?O,!NH!,Ph,-1:/F,@-3,\,O,!Ph,-3:/?F?F!F,-1:/Cl +<30,Ph,2'4:/F,@3,!,?O,!NH!,?O,!NH!,Ph,-1:/F,@-3,!,O,!Ph,-3:/?F?F!F,-1:/Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Fluridone;MW:329.3;EXA:- +CAT:pesticide;EN:Fluridone;MW:329.3;EXA:1 : -<30,?6,3'6=dl,2:N,2:/_,5:?O,@4,\,Ph,-4:/?F?F!F,6:/Ph +<30,?6,3'6=dl,2:N,2:?,5:?O,@4,!,Ph,-4:/?F?F!F,6:/Ph ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Propaquizafop;MW:443.884;EXA:- +CAT:pesticide;EN:Propaquizafop;MW:443.884;EXA:1 : -<90,Ph,3=?6,8'10=dl,7'10:N,1:/Cl,@8,\,O,!Ph,@-3,\,O,!?!,?O,!O,!3,O!,N,!dr,?! +<90,Ph,3=?6,8'10=dl,7'10:N,1:/Cl,@8,!,O,!Ph,@-3,!,O,!?!,?O,!O,!3,O!,N,!dr,?! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Hexaflumuron;MW:461.14;EXA:- +CAT:pesticide;EN:Hexaflumuron;MW:461.14;EXA:1 : -<30,Ph,2'4:/F,@3,\,?O,!NH!,?O,!NH!,|,Ph,3'5:/Cl,@4,\,O!,/F^-35,/F^35,!,/F,!F +<30,Ph,2'4:/F,@3,!,?O,!NH!,?O,!NH!,|,Ph,3'5:/Cl,@4,!,O!,/F^-35,/F^35,!,/F,!F ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Hexathiazox;MW:352.877;EXA:- +CAT:pesticide;EN:Hexathiazox;MW:352.877;EXA:1 : -<30,?6,@3,\,NH!,?O!,<-24,|,?5,1:N,3:S,2:?O,5:/_,4:/Ph'(4:/Cl) +<30,?6,@3,!,NH!,?O!,<-24,|,?5,1:N,3:S,2:?O,5:?,@4,!,Ph,-3:/Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Pencycuron;MW:328.84;EXA:- +CAT:pesticide;EN:Pencycuron;MW:328.84;EXA:1 : -<30,Ph,6:/Cl,@3,\,!N,/?5,!,?O,!NH!,Ph +<30,Ph,6:/Cl,@3,!2,N,/?5,!,?O,!NH!,Ph ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Bendiocarb;MW:223.228;EXA:- +CAT:pesticide;EN:Bendiocarb;MW:223.228;EXA:1 : -<30,Ph,5=?5,7'9:O,8:??,@4,\,O!,?O,!NH! +<30,Ph,5=?5,7'9:O,8:??,@4,!,O!,?O,!NH! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Pentoxazone;MW:353.774;EXA:- +CAT:pesticide;EN:Pentoxazone;MW:353.774;EXA:1 : -<66,?5,5://?!,1:O,3:N,2'4:?O,@3,\,|,Ph,4:/Cl,6:/F,3:/O!'?5 +<66,?5,5://?!,1:O,3:N,2'4:?O,@3,!,|,Ph,4:/Cl,6:/F,3:/O!'?5 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Boscalid;MW:343.21;EXA:- +CAT:pesticide;EN:Boscalid;MW:343.21;EXA:1 : -<30,Ph,5:N,4:/Cl,@3,\,?O,!NH!,Ph,-1:/Ph'(4:/Cl) +<30,Ph,5:N,4:/Cl,@3,!,?O,!NH!,Ph,@-1,!,Ph,-3:/Cl ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Methabenzthiazuron;MW:221.3;EXA:- +CAT:pesticide;EN:Methabenzthiazuron;MW:221.3;EXA:1 : -Ph,3=?5,9=dl,7:S,9:N,@8,\,N?!,?O,!NH! +Ph,3=?5,9=dl,7:S,9:N,@8,!,N?!,?O,!NH! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Methoxyfenozide;MW:368.48;EXA:- +CAT:pesticide;EN:Methoxyfenozide;MW:368.48;EXA:1 : -<30,Ph,2:/_,1:/O!,@3,\,?O,!NH!,N,/??!,!,?O,!Ph,-4'-2:/_ +<30,Ph,2:?,1:/O!,@3,!,?O,!NH!,N,/??!,!,?O,!Ph,-4'-2:? ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Monolinuron;MW:214.6;EXA:- +CAT:pesticide;EN:Monolinuron;MW:214.6;EXA:1 : -<30,Ph,6:/Cl,@3,\,NH!,?O!,N?!,O! +<30,Ph,6:/Cl,@3,!,NH!,?O!,N?!,O! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Lactofen;MW:461.78;EXA:- +CAT:pesticide;EN:Lactofen;MW:461.78;EXA:1 : -<30,Ph,4:/Cl,6:/?F?F!F,@3,\,O,!Ph,-3:/NO2,@-4,\,?O!,O,!?!,?O!,O!2 +<30,Ph,4:/Cl,6:/?F?F!F,@3,!,O,!Ph,-3:/NO2,@-4,!,?O!,O,!?!,?O!,O!2 ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Linuron;MW:249.1;EXA:- +CAT:pesticide;EN:Linuron;MW:249.1;EXA:1 : -<30,Ph,1'6:/Cl,@3,\,NH!,?O!,N?!,O! +<30,Ph,1'6:/Cl,@3,!,NH!,?O!,N?!,O! ; %------------------------------------------------------------------------------ -CAT:pesticide;EN:Lufenuron;MW:511.15;EXA:- +CAT:pesticide;EN:Lufenuron;MW:511.15;EXA:1 : <30,Ph,2'4:/F, - @3,\,?O,!NH!,?O,!NH!,Ph,-1'-4:/Cl,@-3,\,O!,/F^35,/F^-35,!,/F,!,?F?F!F + @3,!,?O,!NH!,?O,!NH!,Ph,-1'-4:/Cl,@-3,!,O!,/F^35,/F^-35,!,/F,!,?F?F!F ; %****************************************************************************** -CAT:antibacterial;EN:Sulfacetamide;MW:214.239;EXA:- +CAT:antibacterial;EN:Sulfacetamide;MW:214.239;EXA:1 : -<30,Ph,1:/NH2,@4,\,S?O?O,!NH!,?O! +<30,Ph,1:/NH2,@4,!,S?O?O,!NH!,?O! ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Sulfatiazole;MW:255.31;EXA:- +CAT:antibacterial;EN:Sulfatiazole;MW:255.31;EXA:1 : -<30,Ph,1:/NH2,@4,\,S?O?O,!NH!,|,?5,1'3=dl,2:N,5:S +<30,Ph,1:/NH2,@4,!,S?O?O,!NH!,|,?5,1'3=dl,2:N,5:S ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Chlopidol;MW:192.039;EXA:- +CAT:antibacterial;EN:Chlopidol;MW:192.039;EXA:1 : -<30,Ph,1'3:/_,2:N,4'6:/Cl,5:/OH +<30,Ph,1'3:?,2:N,4'6:/Cl,5:/OH ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Sulfadiadine;MW:250.276;EXA:- +CAT:antibacterial;EN:Sulfadiadine;MW:250.276;EXA:1 : -<30,Ph,1:/NH2,@4,\,S?O?O,!NH!,Ph,-5'-1:N +<30,Ph,1:/NH2,@4,!,S?O?O,!NH!,Ph,-5'-1:N ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Levamisole;MW:204.29;EXA:- +CAT:antibacterial;EN:Levamisole;MW:204.29;EXA:1 : ?5,3=?5,6=dl,2:S,4'6:N,7:/Ph ; @@ -2733,166 +2799,166 @@ CAT:antibacterial;EN:5-(Propylsulphonyl)-1-H-Benzimidazole-2-Amine;MW:239.29;EXA <30,Ph,3=?6,8=dl,7:N,9:NH,6:/S!3,8:/NH2 ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Sulfapyrizine;MW:249.288;EXA:- +CAT:antibacterial;EN:Sulfapyrizine;MW:249.288;EXA:1 : -<30,Ph,1:/NH2,@4,\,S?O?O,!NH!,Ph,-1:N +<30,Ph,1:/NH2,@4,!,S?O?O,!NH!,Ph,-1:N ; %------------------------------------------------------------------------------ CAT:antibacterial;EN:Marbofloxacin;MW:362.361;EXA:1 : -<30,Ph,3'(2--7)=?6,9=dl,6:/F,7'13:N,11:O,9:/COOH,10:?O,13:/_,1:/?6'(1:N)'(4:N?) +<30,Ph,3'(2--7)=?6,9=dl,6:/F,7'13:N,11:O,9:/COOH,10:?O,13:?,@1,!,?6,-6:N,-3:N? ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Sulfamerazine;MW:264.303;EXA:- +CAT:antibacterial;EN:Sulfamerazine;MW:264.303;EXA:1 : -<30,Ph,1:/NH2,@4,\,S?O?O,!NH!,Ph,-5'-1:N,-4:/_ +<30,Ph,1:/NH2,@4,!,S?O?O,!NH!,Ph,-5'-1:N,-4:? ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Trimethoprim;MW:290.323;EXA:- +CAT:antibacterial;EN:Trimethoprim;MW:290.323;EXA:1 : <30,Ph,1'5:N,2'6:/NH2,3:/!Ph'(4'5'6:/O!) ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Ofloxacin;MW:361.373;EXA:- +CAT:antibacterial;EN:Ofloxacin;MW:361.373;EXA:1 : -<30,Ph,3'(2--7)=?6,9=dl,7:N,11:O,6:/F,9:/COOH,10:?O,13:/_,1:/?6'(1:N)'(4:N?) +<30,Ph,3'(2--7)=?6,9=dl,7:N,11:O,6:/F,9:/COOH,10:?O,13:?,1:/?6'(1:N)'(4:N?) ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Ciprofloxacin;MW:331.347;EXA:- +CAT:antibacterial;EN:Ciprofloxacin;MW:331.347;EXA:1 : <30,Ph,3=?6,9=dl,7:N,6:/F,7:/?3,9:/COOH,10:?O,1:/?6'(1:N)'(4:NH) ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Enrofloxacin;MW:359.401;EXA:- +CAT:antibacterial;EN:Enrofloxacin;MW:359.401;EXA:2 : -<30,Ph,3=?6,9=dl,7:N,6:/F,7:/?3,9:/COOH,10:?O,1:/?6'(1:N)'(4:N?2) +<30,Ph,3=?6,9=dl,7:N,6:/F,7:/?3,9:/COOH,10:?O,@1,!,?6,-6:N,-3:N?2 ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Danofloxacin;MW:357.385;EXA:- +CAT:antibacterial;EN:Danofloxacin;MW:357.385;EXA:1 : <30,Ph,3=?6,9=dl,7:N,6:/F,7:/?3,9:/COOH,10:?O, - @1,\,|,?6,@2,-200`1.1,&5,1'4:N,4:*/_ + @1,!,|,?6,@2,-200`1.1,&5,1'4:N,4:?w ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Ormetoprim;MW:274.324;EXA:- +CAT:antibacterial;EN:Ormetoprim;MW:274.324;EXA:1 : -<30,Ph,1'5:N,2'6:/NH2,@3,\,!,|,Ph,2:/_,4'5:/O! +<30,Ph,1'5:N,2'6:/NH2,@3,!2,|,Ph,2:?,4'5:/O! ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Sulfadimidine;MW:278.33;EXA:- +CAT:antibacterial;EN:Sulfadimidine;MW:278.33;EXA:1 : -<30,Ph,1:/NH2,@4,\,S?O?O,!NH!,|,Ph,2'4:N,3'5:/_ +<30,Ph,1:/NH2,@4,!,S?O?O,!NH!,|,Ph,2'4:N,3'5:? ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Orbifloxacin;MW:395.382;EXA:- +CAT:antibacterial;EN:Orbifloxacin;MW:395.382;EXA:1 : -<30,Ph,3=?6,9=dl,7:N,2'5'6:/F,7:/?3,9:/COOH,10:?O,@1,\,|,?6,1:N,3'5:*/_,4:NH +<30,Ph,3=?6,9=dl,7:N,2'5'6:/F,7:/?3,9:/COOH,10:?O,@1,!,|,?6,1:N,3'5:?w,4:NH ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Sulfamethoxypyridazine;MW:280.302;EXA:- +CAT:antibacterial;EN:Sulfamethoxypyridazine;MW:280.302;EXA:1 : -<30,Ph,1:/NH2,@4,\,S?O?O,!NH!,|,Ph,5'6:N,4:/O! +<30,Ph,1:/NH2,@4,!,S?O?O,!NH!,|,Ph,5'6:N,4:/O! ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Sarafloxacin;MW:385.371;EXA:- +CAT:antibacterial;EN:Sarafloxacin;MW:385.371;EXA:1 : -<30,Ph,3=?6,9=dl,7:N,6:/F,9:/COOH,10:?O,@1,\,?6,-6:N,-3:NH,7:/Ph'(4:/F) +<30,Ph,3=?6,9=dl,7:N,6:/F,9:/COOH,10:?O,@1,!,?6,-6:N,-3:NH,7:/Ph'(4:/F) ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Difloxacin;MW:399.398;EXA:- +CAT:antibacterial;EN:Difloxacin;MW:399.398;EXA:1 : <30,Ph,3=?6,9=dl,7:N,6:/F,9:/COOH,10:?O,7:/Ph'(4:/F),1:/?6'(1:N)'(4:N?) ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Sulfamonomethoxine;MW:280.302;EXA:- +CAT:antibacterial;EN:Sulfamonomethoxine;MW:280.302;EXA:1 : -<30,Ph,1:/NH2,@4,\,S?O?O,!NH!,|,Ph,2'4:N,3:/O! +<30,Ph,1:/NH2,@4,!,S?O?O,!NH!,|,Ph,2'4:N,3:/O! ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Sulfachlorpyridazine;MW:284.723;EXA:- +CAT:antibacterial;EN:Sulfachlorpyridazine;MW:284.723;EXA:1 : -<30,Ph,1:/NH2,@4,\,S?O?O,!NH!,|,Ph,5'6:N,4:/Cl +<30,Ph,1:/NH2,@4,!,S?O?O,!NH!,|,Ph,5'6:N,4:/Cl ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Sulfadoxine;MW:310.328;EXA:- +CAT:antibacterial;EN:Sulfadoxine;MW:310.328;EXA:1 : -<30,Ph,1:/NH2,@4,\,S?O?O,!NH!,|,Ph,4'6:N,2'3:/O! +<30,Ph,1:/NH2,@4,!,S?O?O,!NH!,|,Ph,4'6:N,2'3:/O! ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Sulfamethoxazole;MW:253.276;EXA:- +CAT:antibacterial;EN:Sulfamethoxazole;MW:253.276;EXA:1 : -<30,Ph,1:/NH2,@4,\,S?O?O,!NH!,|,?5,2'5=dl,4:O,5:N,3:/_ +<30,Ph,1:/NH2,@4,!,S?O?O,!NH!,|,?5,2'5=dl,4:O,5:N,3:? ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Pirimethamin;MW:248.714;EXA:- +CAT:antibacterial;EN:Pirimethamin;MW:248.714;EXA:1 : -<30,Ph,6:/Cl,@3,\,Ph,-2'-4:N,-1:/!,-3'-5:/NH2 +<30,Ph,6:/Cl,@3,!,Ph,-2'-4:N,-1:/!,-3'-5:/NH2 ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Oxibendazole;MW:249.27;EXA:- +CAT:antibacterial;EN:Oxibendazole;MW:249.27;EXA:1 : <30,Ph,3=?5,9=dl,7:NH,9:N,1:/O!3,8:/NH!'COOH ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Oxolinic acid;MW:261.233;EXA:- +CAT:antibacterial;EN:Oxolinic acid;MW:261.233;EXA:1 : <30,Ph,3=?6,6=?5,9=dl,7:N,11'13:O,10:?O,7:/!,9:/COOH ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Sulfabenzamide;MW:276.31;EXA:- +CAT:antibacterial;EN:Sulfabenzamide;MW:276.31;EXA:1 : -<30,Ph,1:/NH2,@4,\,S?O?O,!NH!,?O,!Ph +<30,Ph,1:/NH2,@4,!,S?O?O,!NH!,?O,!Ph ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Ethopabate;MW:237.255;EXA:- +CAT:antibacterial;EN:Ethopabate;MW:237.255;EXA:1 : <30,Ph,1:/NH!'?O!,3:/O!2,4:/?O!'O! ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Sulfadimethoxine;MW:310.33;EXA:- +CAT:antibacterial;EN:Sulfadimethoxine;MW:310.33;EXA:1 : -<30,Ph,1:/NH2,@4,\,S?O?O,!NH!,|,Ph,2'4:N,3'5:/O! +<30,Ph,1:/NH2,@4,!,S?O?O,!NH!,|,Ph,2'4:N,3'5:/O! ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Sulfaquinoxaline;MW:300.337;EXA:- +CAT:antibacterial;EN:Sulfaquinoxaline;MW:300.337;EXA:1 : -<30,Ph,1:/NH2,@4,\,S?O?O,!NH!,Ph,-4=Ph,-5'-2:N +<30,Ph,1:/NH2,@4,!,S?O?O,!NH!,Ph,-4=Ph,-5'-2:N ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Nalidixic acid;MW:232.239;EXA:- +CAT:antibacterial;EN:Nalidixic acid;MW:232.239;EXA:1 : -<30,Ph,3=?6,9=dl,5'10:N,6:/_,7:?O,8:/COOH,10:/! +<30,Ph,3=?6,9=dl,5'10:N,6:?,7:?O,8:/COOH,10:/! ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Flubendazole;MW:313.288;EXA:- +CAT:antibacterial;EN:Flubendazole;MW:313.288;EXA:1 : -<30,Ph,3=?5,9=dl,7:NH,9:N,@1,\,O,!Ph,8:/NH!'?O!'O! +<30,Ph,3=?5,9=dl,7:NH,9:N,@1,!,?O,!Ph,-2:/F,8:/NH!'?O!'O! ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Flumequine;MW:261.225;EXA:- +CAT:antibacterial;EN:Flumequine;MW:261.225;EXA:1 : -<30,Ph,3'(2--7)=?6,9=dl,7:N,6:/F,9:/COOH,10:?O,13:/_ +<30,Ph,3'(2--7)=?6,9=dl,7:N,6:/F,9:/COOH,10:?O,13:? ; %------------------------------------------------------------------------------ -34;CAT:antibacterial;EN:Sulfanitran;MW:335.334;EXA:- +CAT:antibacterial;EN:Sulfanitran;MW:335.334;EXA:1 : -<30,Ph,@1,\,NH!,?O!,@4,\,S?O?O,!NH!,Ph,-3:/NO2 +<30,Ph,@1,!,NH!,?O!,@4,!,S?O?O,!NH!,Ph,-3:/NO2 ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Xylazine;MW:220.334;EXA:- +CAT:antibacterial;EN:Xylazine;MW:220.334;EXA:1 : -<30,?6,3=dl,2:S,4:N,@3,\,NH!,Ph,-5'-1:/_ +<30,?6,3=dl,2:S,4:N,@3,!,NH!,Ph,-5'-1:? ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Famphur;MW:325.3;EXA:- +CAT:antibacterial;EN:Famphur;MW:325.3;EXA:1 : -<-30,!O!,P,//S,/O!^160,!,O,!Ph,-3:/S?O?O!'N?! +<-30,!O!,P,?S,/O!^160,!,O,!Ph,-3:/S?O?O!'N?! ; %------------------------------------------------------------------------------ CAT:antibacterial;EN:Lincomycin;MW:406.54;EXA:1 : -<6,?5,5:N,5:*/_,2:*/!2, - @3,\*,?O,!NH!,!wb,?6,-1:O,*-3'-4'-5:*/OH,-2:/*S!,8:/?!'OH^-30>lr +<6,?5,5:N,5:?w,2:*/!2, + @3,!z,?O,!NH!,!wb,?6,-1:O,*-3'-4'-5:*/OH,-2:/*S!,8:/?!'OH^-30>lr ; %------------------------------------------------------------------------------ CAT:antibacterial;EN:2-acethylamino-5-nitrothiazole;MW:187.178;EXA:- @@ -2900,60 +2966,79 @@ CAT:antibacterial;EN:2-acethylamino-5-nitrothiazole;MW:187.178;EXA:- <18,?5,2'5=dl,2:N,4:S,3:/NH!'?O!,5:/NO2 ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Chlorsulon;MW:380.66;EXA:- +CAT:antibacterial;EN:Chlorsulon;MW:380.66;EXA:1 : -<30,Ph,6:/NH2,1'3:/S?O?O'!NH2,@4,\,/Cl,60~dl,/Cl,!Cl +<30,Ph,6:/NH2,1'3:/S?O?O'!NH2,@4,!,/Cl,60~dl,/Cl,!Cl ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Florfenicol;MW:358.21;EXA:- +CAT:antibacterial;EN:Florfenicol;MW:358.21;EXA:1 : -<30,Ph,1:/S?O?O!,@4,\,/OH,!,/!F,!NH!,?O!,/Cl,!Cl +<30,Ph,1:/S?O?O!,@4,!,/OH,!,/!F,!NH!,?O!,/Cl,!Cl ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Thiamphenicol;MW:356.22;EXA:- +CAT:antibacterial;EN:Thiamphenicol;MW:356.22;EXA:1 : -<30,Ph,1:/S?O?O!,@4,\,/OH,!,/!OH,!`1.1,NH,!`1.1,?O!,/Cl,!Cl +<30,Ph,1:/S?O?O!,@4,!,/OH,!,/!OH,!`1.1,NH,!`1.1,?O!,/Cl,!Cl ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Oxadiargyl;MW:341.19;EXA:- +CAT:antibacterial;EN:Oxadiargyl;MW:341.19;EXA:1 : -<30,Ph,1'3:/Cl,6:/O!2'!t,@4,\,|,?5,2=dl,1'2:N,4:O,5:?O,3:/??! +<30,Ph,1'3:/Cl,6:/O!2'!t,@4,!,|,?5,2=dl,1'2:N,4:O,5:?O,3:/??! ; %------------------------------------------------------------------------------ -CAT:antibacterial;EN:Oxaziclomefone;MW:376.277;EXA:- +CAT:antibacterial;EN:Oxaziclomefone;MW:376.277;EXA:1 : -<30,?6,6=dl,4:N,2:O,1:/_,5:?O,6:/Ph,@4,\,??,!Ph,-4'-2:/Cl +<30,?6,6=dl,4:N,2:O,1:?,5:?O,6:/Ph,@4,!,??,!Ph,-4'-2:/Cl ; %------------------------------------------------------------------------------ -CAT:biological;EN:Pyrrolnitrin;MW:111;EXA:- +CAT:biological;EN:Pyrrolnitrin;MW:257.07;EXA:1 : -<30,Ph,@3,\,?5,8'11=db,1'11:/Cl,9:NH,2:/NO2, +<30,Ph,@3,!,?5,8'11=db,1'11:/Cl,9:NH,2:/NO2 ; %****************************************************************************** -CAT:biological;EN:Okadaic acid;MW:805.00;EXA:2 +CAT:antibiotics;EN:Vancomycin;MW:1449.25;EXA:2 +: +<-30,#1,!12,1'3'12=zf,7=wf,60,60,Ph,@-3,!,O,!Ph,@-4,!,O,!Ph,@-3,!,&1, + @7,&26,@$1,60,60,NH,60,-60,Ph,@-1,!,Ph,@-2,&4,##, + {36'3^40'6'9'12}:?O,2'5'8'11:NH,{1'4^180'*7^-60'*10^60'*14^60'35^-60}:*/H, + 41'43'46:/OH,14'*35:*/OH,{17'34^15}:/Cl,38^180:*/COOH, + @10,-60~wf,60,?O!,NH2,@13,!w,NH!,?O!,/??!,*/H^60,!z,NH!, + @23,!,O,!z,|,?6`.7,2:O,3^10:*/!OH,*4'5:*/OH, + @-1,!z,O,!wb,|,?6`.7,6:O,{*3^35'5}:?w,3^-35:/NH2,4:/*OH +; +%------------------------------------------------------------------------------ +CAT:marine toxine;EN:Okadaic acid;MW:805.00;EXA:2 : -<30,?6,@4,?6,@-4,\,!3,<-12,?5,@-3,<-12,?6,-3=?6,@-3,*\,!3, - ?6,@-4,?6,@6,\,!,/*_^-40,*/OH^20,!,?O!,OH, +<30,?6,@4,?6,@-4,!4,<-12,?5,@-3,<-12,?6,-3=?6,@-3,!w,!3, + ?6,@-4,?6,@6,!2,?z^-40,*/OH^20,!,?O!,OH, 3'38=wb,11=dl,15=dr,17'19=wf,5'7'16'24'25'33'42:O, - 32:*/H^60,10:/_,12'31'*37:*/_,27://_,28:/OH,3'29:/*OH + 32:*/H^60,10:?,12'31'*37:?w,27:?d,28:/OH,3'29:/*OH ; %------------------------------------------------------------------------------ -CAT:antibiotics;EN:Vancomycin;MW:1449.25;EXA:2 +CAT:marine toxine;EN:Ciguatoxine-1B;MW:1111.31;EXA:2 : -<-30,#1,!12,1'3'12=zf,7=wf,60,60,Ph,@-3,\,O,!Ph,@-4,\,O,!Ph,@-3,\,&1, - @7,&26,@$1,60,60,NH,60,-60,Ph,@-1,\,Ph,@-2,&4,##, - {36'3^40'6'9'12}:?O,2'5'8'11:NH,{1'4^180'*7^-60'*10^60'*14^60'35^-60}:*/H, - 41'43'46:/OH,14'*35:*/OH,{17'34^15}:/Cl,38^180:*/COOH, - @10,*\^-60,60,?O!,NH2,@13,*\,NH!,?O!,/??!,*/H^60,!z,NH!, - @23,\,O,!z,|,?6`.7,2:O,3^10:*/!OH,*4'5:*/OH, - @-1,\*,O,!wb,|,?6`.7,6:O,{*3^35'5}:*/_,3^-35:/NH2,4:/*OH, +<30,?7,-5'-3=?6,-3'-3=?7,-4=?9,-3=?7,-4=?6,-3=?8,-5=?6,-3=?7,-4=?6,@-2,?5, + -5=zf,-1=wb,6'19'28'32=db,2'11'12'20'21'32'33'41'42'51'52'60'64:O, + 1:/*H^60,3'9'13'18'22'30'34'39'43'49'53:/*H^-60, + {4'10'14'19'23^75'31^55'40'44'50'54}:*/H^60, + {35^60'*46'56'*57'58}:?w`.8,*8'36'*55'62:*/OH, + @1,!,!dl,!,/*OH,!2,OH +; +%------------------------------------------------------------------------------ +CAT:marine toxine;EN:Ciguatoxine-3C;MW:1023.25;EXA:1 +: +<30,?7,-5'-3=?6,-3=?7,-3=?8,-5=?9,-3=?7,-4=?6,-3=?8,-5=?6,-3=?7,-4=?6,@-2,?5, + -5=zf,-1=wb,6'19'28'33=db,2'11'12'20'21'33'34'42'43'52'53'61'65:O, + {3'9'13'18^-65'22'31^-70'35^-55'40^-65'44'50'54}:/*H^-60, + {4'10'14'19'23^75'32^65'41'45'51'55}:*/H^60, + {36^60'*47'57'*58'59}:?w`.8,*8'37'*56:*/OH ; %------------------------------------------------------------------------------ -CAT:biological;EN:Maitotoxin;MW:3425.86;EXA:- +CAT:marine toxine;EN:Maitotoxin;MW:3425.86;EXA:2 : -<55.8,?6,-4=?7,-4'-3'-3'-3=?6,@-3,\,!3,?6,-4'-3'-3'-3=?6,@-3,\,?6,-3=?6, - @-3,\,!3,60,<-30,?6,-3=?6,@-3,30,<30,?6,-3'-3=?6,-3=?7,-4'-3'-3=?6, - @-2,\,?6,-3=?6,-3=?7,-3'-3=?6,-3=?8,-3=dl,-5'-3'-3'-3=?6, +<55.8,?6,-4=?7,-4'-3'-3'-3=?6,@-3,!4,?6,-4'-3'-3'-3=?6,@-3,!,?6,-3=?6, + @-3,!4,60,<-30,?6,-3=?6,@-3,30,<30,?6,-3'-3=?6,-3=?7,-4'-3'-3=?6, + @-2,!,?6,-3=?6,-3=?7,-3'-3=?6,-3=?8,-3=dl,-5'-3'-3'-3=?6, 5'7'15'16'23'24'32'40'41'48'49'58'59'72'73'82'83'90'91'99' 100'107'113'114'122'123'130'131'140'141'148'149:O, {1^60'2'26'28'29'51'54'61'63'68'75^60'78'109}:*/OH, @@ -2961,10 +3046,9 @@ CAT:biological;EN:Maitotoxin;MW:3425.86;EXA:- 3'8'13'17'21'33'38'42'56'70'84'92'101'106'111'128'138'142'146'150:/*H^-60, 4'14'22'34'39'43'*47'*57'*71'81'89'98'102'116'121'125'129'133:*/H^60, 6'46'50'53'60'67'74:*/H^-60, - 9'18'85'93'112'139'143'147:*/_^60`1,80'88'97'*108'115'120'124:/*_^-60`1, - @$6,\,|,!11,60~dr,-60,60,OH,*2'7'10:*/OH,1'3'*8:*/_,11://_,12:/_, - @6,\,O,30,SO3Na, + 9'18'85'93'112'139'143'147:?w^60`1,80'88'97'*108'115'120'124:?z^-60`1, + @$6,!,|,!11,60~dr,-60,60,OH,*2'7'10:*/OH,1'3'*8:?w,11:?d,12:?,@6,!,O,30,SO3Na, @$36,-45~zf,O,30,SO3Na, - @$150,\,|,!7,1'2:/*OH,4:*/_,5:/*_,7=dl + @$150,!,|,!7,1'2:/*OH,4:?w,5:?z,7=dl ; %------------------------------------------------------------------------------ diff --git a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mp b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mp index 2c91c108a31..c7ece3e2467 100644 --- a/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mp +++ b/Master/texmf-dist/metapost/mcf2graph/mcf2graph.mp @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% mcf2graph ver 5.15 Copyright (c) 2013-2024 Akira Yamaji +% mcf2graph ver 5.16 Copyright (c) 2013-2025 Akira Yamaji % % Permission is hereby granted, free of charge, to any person obtaining a copy of this software % and associated documentation files (the "Software"), to deal in the Software without restriction, @@ -22,85 +22,54 @@ % This package is located at : http://www.ctan.org/pkg/mcf2graph % Suggestion or request mail to : mcf2graph@gmail.com %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -message "* This is mcf2graph ver 5.15 2024.12.01"; -tracingstats:=1; prologues:=3; warningcheck:=0; +message "* This is mcf2graph ver 5.16 2025.01.05"; +tracingstats:=1; prologues:=3; %------------------------------------------------------------------------------------------------- -newinternal string EN_; +newinternal string EN_,tempc,temps,blanks,line_s,atom_s,forbiddens,firstc,file_output; +newinternal numeric nA,nB,nC,nD,nE,nL,nN,nP,nR,nS,nU,nX,nY,pX,pY,pcode_int; numeric save_num[],pcode_x[][],pcode_y[][],param_e[][],pcode_cnt[],tbl_atom[],tbl_group[][], tbl_atom_wt[],tbl_atom_mi[],tbl_char_wd[],tbl_char_ht[],at_char[],mc_indent[],op_indent[], ex_indent[],ad_indent[],unit_lines[],info[],tbl_asc[],lenw[]; string row[][],save_str[],tbl_atom_str[],str_tbl[],arg_s[],mc[],ex[],ad[],op[],tag[],rw[], - lib_tag[][],lib_val[][],mc,ex,ad,op,aux_delimiter,default_library,EN,FM,MW,MI,CAT,JN,CAS, - USE,EXA,EXB,file_input,file_output,default_temp_file,mpfont,atomfont,tempc,temps,blanks, - sC,sI,sS,sT,sV,forbiddens; + lib_tag[][],lib_val[][],block_s[],mc,ex,ad,op,aux_delimiter,default_library,EN,FM,MW,MI, + CAT,JN,CAS,USE,EXA,EXB,file_input,default_temp_file,mpfont,atomfont,numberfont; pair save_pair[],msize,mposition,fsize,fmargin,save_mposition; %------------------------------------------------------------------------------------------------- -fig_num:=str_cnt:=tbl_cnt:=mangle:=sw_frame:=sw_trimming:=sw_ext_all:=sw_abbreviate:=sw_expand:=0; -sw_comment:=sw_output:=sw_numbering:=tag_cnt:=rw_cnt:=pcode_all:=0; -numbering_start:=1; numbering_end:=4095; +fig_num:=str_cnt:=tbl_cnt:=mangle:=sw_frame:=sw_trimming:=sw_ext_all:=sw_omit:=sw_expand:=0; +sw_comment:=sw_output:=sw_numbering:=tag_cnt:=rw_cnt:=pcode_all:=MW_n:=0; %------------------------------------------------------------------------------------------------- -aux_delimiter:=";"; blanks:= " "; forbiddens:=" &()[]{}^=;!'+,`~"; for s="No","EN","JN","MW","MI","FM","CAT","CAS","USE","EXA","EXB": tag[incr tag_cnt]:=s; endfor -MW_n:=0; Fig:=1; Mcode:=2; Calc:=4; Info:=8; Table:=16; Report:=32; MOL2k:=64; MOL3k:=128; -Atom:=8; Bond:=16; Group:=32; Mol:=64; Outside:=1; Inside:=2; Bothside:=Outside+Inside; -%------------------------------------------------------------------------------------------------- -PRS:=ASCII("(");PRE:=ASCII(")");BRS:=ASCII("{");BRE:=ASCII("}");BKS:=ASCII("[");BKE:=ASCII("]"); -CMA:=ASCII(",");EQU:=ASCII("=");AST:=ASCII("*");SLS:=ASCII("/");GTN:=ASCII("<");LTN:=ASCII(">"); -AMP:=ASCII("&");HSH:=ASCII("#");HAT:=ASCII("^");TLD:=ASCII("~");BQT:=ASCII("`");CLN:=ASCII(":"); -AMK:=ASCII("@");QUT:=ASCII("'");BAR:=ASCII("|");PLS:=ASCII("+");MIS:=ASCII("-");BLK:=ASCII(" "); -BSL:=ASCII("\");QES:=ASCII("?"); -%------------------------------------------------------------------------------------------------- -for s="??!","!?!","!!!","!?","?!","??","*/*","/*","*/","//","**","##","||","\\": - rw[incr rw_cnt]:=s; lenw[rw_cnt]:=length(s); endfor -%------------------------------------------------------------------------------------------------- -let DIV= /; let MUL= *; let LT= <; let GT= >; let AND= &; let :: = : ; let == = =; let ef=elseif; -let ISP=intersectionpoint; def ]]]=] ] ] enddef; let +++ = ++; -%------------------------------------------------------------------------------------------------- -def ext(text t)= sw_ext_all:=1; def EXT_ALL = t enddef; enddef; -def ext_clear= sw_ext_all:=0; def EXT_ALL = enddef; enddef; -def wpcs expr n= withpen pencircle scaled n enddef; -def ppcs expr n= pickup pencircle scaled n enddef; -def sbp(expr m,n)expr p=subpath(m*length(p),n*length(p)) of p enddef; -def printf expr s= write s to file_output enddef; -def warning(expr s)= message "% "&decimal(fig_num)&fdr(3)(incr warning_cnt)&")"&s; enddef; -%------------------------------------------------------------------------------------------------- -vardef frac primary n= n-floor n enddef; -vardef iif(expr a,b,c)=if a: b else: c fi enddef; -vardef subc(expr i,s)= substring(i-1,i) of s enddef; -vardef sfrt(expr a,b,c)= a shifted ((b,0) rotated c) enddef; -vardef fsr(expr n)(expr s)= (substring(0,n-length(s)) of blanks)&s enddef; -vardef fsl(expr n)(expr s)= s&(substring(0,n-length(s)) of blanks) enddef; -vardef fdr(expr n)(expr s)= - if length(decimal(s))>n: substring (0,n) of decimal(s) else: fsr(n)(decimal(s)) fi enddef; -vardef fdl(expr n)(expr s)= fsl(n)(decimal(s)) enddef; -vardef Incr suffix $ == $:=$+1; $ enddef; +Fig:=1; Mcode:=2; Info:=4; Report:=8; MOL2k:=16; MOL3k:=32; Atom:=2; Bond:=4; All:=8; +Group:=8; Mol:=16; Outside:=1; Inside:=2; Bothside:=Outside+Inside; %================================================================================================= default_library:="main_lib.mcf"; default_temp_file:="temp.mcf"; -mpfont:="uhvr8r"; atomfont:="draw"; defaultfont:=mpfont; +mpfont:="uhvr8r"; atomfont:=numberfont:="draw"; defaultfont:=mpfont; let ef=elseif; %--default ahangle=45--------------------------------------------------------------------- -if ahangle=1: outputformat:="png"; hppp:=vppp:=0.12; % png format(600dpi) -ef ahangle=11: outputformat:="png"; hppp:=vppp:=0.06; % png format(1200dpi) -ef ahangle=2: outputformat:="eps"; % eps format(.eps) -ef ahangle=3: outputformat:="eps"; % eps format(.mps) -ef ahangle=45: outputformat:="svg"; % svg format *default +if ahangle=1: outputformat:="png"; hppp:=vppp:=0.12; % png format(600dpi) +ef ahangle=11: outputformat:="png"; hppp:=vppp:=0.06; % png format(1200dpi) +ef ahangle=2: outputformat:="eps"; % eps format(.eps) +ef ahangle=3: outputformat:="eps"; % eps format(.mps) +ef ahangle=45: outputformat:="svg"; % svg format *default fi %--default ahlength=4--------------------------------------------------------------------- -if ahlength=3: sw_output:=Fig; sw_expand:=1; % output figure(expanded) -ef ahlength=4: sw_output:=Fig; % output figure *default -ef ahlength=5: sw_output:=MOL2k; sw_expand:=1; % output MOL(V2000) -ef ahlength=6: sw_output:=MOL3k; sw_expand:=1; % output MOL(V3000) -ef ahlength=7: sw_output:=Report; % output report +if ahlength=3: sw_output:=Fig; sw_expand:=1; % output figure(expanded) +ef ahlength=4: sw_output:=Fig; % output figure *default +ef ahlength=5: sw_output:=MOL2k; sw_expand:=1; % output MOL(V2000) ** max 500files +ef ahlength=6: sw_output:=MOL3k; sw_expand:=1; % output MOL(V3000) ** max 500files +ef ahlength=7: sw_output:=Report; % output report fi %-- default bboxmargin=2------------------------------------------------------------------ if bboxmargin=3: ext(defaultfont:=mpfont; defaultscale:=.3; label.rt(EN,(0,0));) -ef bboxmargin=4: sw_output:=Fig+Calc; +ef bboxmargin=4: sw_output:=Fig+Report; ext(defaultfont:=mpfont; defaultscale:=.3; - label.rt(EN&" / "&MW&" / "&decimal(MW_n-scantokens(MW)),(0,0));) fi + label.rt(EN&" / "&MW&" / "&decimal(MW_n-scantokens(MW)),(0,0));) +fi %--default outputtemplate:="%j-%3c."&"svg"------------------------------------------------ if outputformat="svg": outputtemplate:="s%3c-%{EN_}.svg"; ef outputformat="png": outputtemplate:="p%3c-%{EN_}.png"; ef (outputformat="eps")and(ahangle=3): outputtemplate:="%j-%3c.mps"; -else: outputtemplate:="%j-%3c."&outputformat; fi +else: outputtemplate:="%j-%3c."&outputformat; +fi %----------------------------------------------------------------------------------------- message "* jobname="&jobname; message "* numbersystem="&numbersystem; @@ -108,19 +77,45 @@ message "* outputformat="&outputformat; message "* outputtemplate="&outputtemplate; if ahlength=5: message "* output MOL file(V2000)"; message "* "&jobname&"-nnn-"&"EN"&".mol"; ef ahlength=6: message "* output MOL file(V3000)"; message "* "&jobname&"-nnn-"&"EN"&".mol"; -ef ahlength=7: message "* output report file"; message "* file name="&jobname&"-report.txt"; fi +ef ahlength=7: message "* output report file"; message "* file name="&jobname&"-report.txt"; +fi clearit; %------------------------------------------------------------------------------------------------- -ratio_chain_ring:=0.66; ratio_atom_bond:=0.36; ratio_thickness_bond:=0.015; -ratio_thickness_char:=0.1; ratio_char_bond:=1.5; ratio_bondgap_bond:=0.15; -ratio_hashgap_bond:=0.12; ratio_hash_black:=0.4; ratio_wedge_bond:=0.12; ratio_atomgap_atom:=0.04; -offset_thickness:=0.2; offset_bond_gap:=0.3; offset_hash_gap:=0.1; offset_atom:=0.8; -offset_wedge:=0.4; thickness_frame:=0.2; +ratio_chain_ring:=0.66; ratio_atom_bond:=0.36; ratio_thickness_bond:=0.012; ratio_char_atom:=0.12; +ratio_bondgap_bond:=0.15; ratio_hashgap_bond:=0.12; ratio_hash_black:=0.4; +ratio_wedge_bond:=0.12; ratio_atomgap_atom:=0.05; offset_thickness:=0.25; offset_bond_gap:=0.3; +offset_hash_gap:=0.1; offset_atom:=0.8; offset_wedge:=0.4; thickness_frame:=0.2; max_blength:=10mm; blength:=mangle:=0; max_labelsize:=20mm; dottedline_gap:=1.5; fsize:=(30mm,20mm); fmargin:=(0.4mm,0.4mm); msize:=(1,1); mposition:=(0.5,0.5); ahangle:=45; ahlength:=4; defaultsize:=8; defaultscale:=1; labeloffset:=3; ext_defaultline:=0.5; lonepairdiam:=lonepairspace:=circlediam:=circlepen:=bboxmargin:=0; mc_length:=100; outputformatoptions:=""; +%------------------------------------------------------------------------------------------------- +let DIV= /; let MUL= *; let LT= <; let GT= >; let AND= &; let :: = : ; let == = =; let +++ = ++; +let ISP=intersectionpoint; def ]]]=] ] ] enddef; vardef Incr suffix $ == $:=$+1; $ enddef; +%------------------------------------------------------------------------------------------------- +def ext(text t)= sw_ext_all:=1; def EXT_ALL = t enddef; enddef; +def ext_clear= sw_ext_all:=0; def EXT_ALL = enddef; enddef; +def wpcs expr n= withpen pencircle scaled n enddef; +def ppcs expr n= pickup pencircle scaled n enddef; +def sbp(expr m,n)expr p=subpath(m*length(p),n*length(p)) of p enddef; +def puts expr s= write s to file_output enddef; +%------------------------------------------------------------------------------------------------- +vardef frac primary n= n-floor n enddef; +vardef iif(expr a,b,c)=if a: b else: c fi enddef; +vardef sfrt(expr a,b,c)= a shifted ((b,0) rotated c) enddef; +vardef fsr(expr n)(expr s)= (substring(0,n-length(s)) of blanks)&s enddef; +vardef fsl(expr n)(expr s)= s&(substring(0,n-length(s)) of blanks) enddef; +vardef fdr(expr n)(expr s)= + if length(decimal(s))>n: substring (0,n) of decimal(s) else: fsr(n)(decimal(s)) fi enddef; +vardef fdl(expr n)(expr s)= fsl(n)(decimal(s)) enddef; +%------------------------------------------------------------------------------------------------- +aux_delimiter:=";"; blanks:= " "; forbiddens:=" &()[]{}^=;!'+,`~"; +for s="*/*","/*","*/","//","**","##","||":rw[incr rw_cnt]:=s; lenw[rw_cnt]:=length(s); endfor +PRS:=ASCII("(");PRE:=ASCII(")");BRS:=ASCII("{");BRE:=ASCII("}");QES:=ASCII("?");DOL:=ASCII("$"); +CMA:=ASCII(",");EQU:=ASCII("=");AST:=ASCII("*");SLS:=ASCII("/");GTN:=ASCII("<");LTN:=ASCII(">"); +AMP:=ASCII("&");HSH:=ASCII("#");HAT:=ASCII("^");TLD:=ASCII("~");BQT:=ASCII("`");CLN:=ASCII(":"); +AMK:=ASCII("@");QUT:=ASCII("'");BAR:=ASCII("|");PLS:=ASCII("+");MIS:=ASCII("-");BLK:=ASCII(" "); %================================================================================================= pcode_emb_start:=1001; % 1001 => 1900 for embedded pcode (max 900) pcode_emi_start:=1901; % 1901 => 2000 for embedded internal pcode (max 100) @@ -128,25 +123,24 @@ pcode_usr_start:=2001; % 2001 => 3000 for user pcode (max 1000) pcode_int_start:=3000; % 3001 => 4000 for internal pcode (max 1000) %------------------------------------------------------------------------------------------------- def def_com(expr n)(text tx)= nA:=n; forsuffixes list=tx:: list:=nA; nA:=nA+1; endfor enddef; -def_com(-4090)(_com,_jp_atom,_jp_absA,_jp_bond,_cyc,_cyc_sB,_cyc_eB, - _set_line,_tmp_line,_chg_len,_chg_slen,_get_len,_ring_len,_tmp_len,_rot_ang,_adj_ang, - _chg_env,_tmp_env,_set_colorA,_set_colorB, - _group_si,_group_dm,_group_wf,_group_zf,_set_adr,_mk_bond,_set_atom,_arrange_ang,_chg_atom, - _tmp_rot,_fuse,_fuse_ext,_size_atom,_numeric,_numeric_inv,_jump_at,_set_add,_chg_add,_nop, +def_com(-4090)(_com,_jp_atom,_jp_absA,_jp_bond,_cyc,_cyc_sB,_cyc_eB,_set_line,_tmp_line,_tmp_rot, + _tmp_env,_tmp_len,_chg_len,_set_len,_get_len,_ring_len,_rot_ang,_adj_ang,_chg_env,_set_colorA, + _set_colorB,_group_si,_group_dm,_group_wf,_group_zf,_set_adr,_mk_bond,_set_atom,_arrange_ang, + _chg_atom,_fuse,_fuse_ext,_size_atom,_numeric,_numeric_inv,_jump_at,_set_add,_chg_add,_nop, _mark,_moff,_term,_len_s,_len_e,_len_ss,_len_ee,_group_s,_group_e,_rest,_charge,_from,_until, si,dl,dl_,dr,dr_,db,dm,dm_,tm,wf,wb,bd,bz,zf,zb,dt,wv,nl,vf,vb,nb,wf_r,wb_r,bd_r,arc_lb,arc_br, arc_lbr,arc_ltr,si_,wf_,wb_,zf_,zb_,wv_,bd_); %------------------------------------------------------------------------------------------------- def parameter_list= - sw_numbering,sw_expand,sw_output,sw_ext_all,sw_frame,sw_trimming,sw_abbreviate,ratio_atom_bond, - ratio_thickness_bond,ratio_char_bond,ratio_chain_ring,ratio_bondgap_bond,ratio_hash_black, - ratio_hashgap_bond,ratio_thickness_char,ratio_wedge_bond,ratio_atomgap_atom,lonepairdiam, - lonepairspace,offset_atom,offset_wedge,max_blength,offset_hash_gap,offset_bond_gap, - thickness_frame,offset_thickness,numbering_start,numbering_end,defaultsize,defaultscale, + sw_numbering,sw_output,sw_ext_all,sw_frame,sw_trimming,sw_omit,ratio_atom_bond, + ratio_thickness_bond,ratio_chain_ring,ratio_bondgap_bond,ratio_hash_black,ratio_hashgap_bond, + ratio_wedge_bond,ratio_atomgap_atom,ratio_char_atom,offset_atom,offset_wedge,max_blength, + offset_hash_gap,offset_bond_gap,thickness_frame,offset_thickness,defaultsize,defaultscale, labeloffset,mangle,blength,fsize,fmargin,msize,mposition,defaultfont,atomfont,dottedline_gap enddef; %------------------------------------------------------------------------------------------------- -def init_par(text t)= nA:=nB:=nC:=0; +def init_par(text t)= + nA:=nB:=nC:=0; for list=t: if numeric list: save_num[incr nA]:=list; ef pair list: save_pair[incr nB]:=list; ef string list: save_str[incr nC]:=list; @@ -154,7 +148,8 @@ def init_par(text t)= nA:=nB:=nC:=0; endfor enddef; %------------------------------------------------------------------------------------------------- -def store_par(text t)= nA:=nB:=nC:=0; +def store_par(text t)= + nA:=nB:=nC:=0; for list=t: if numeric list: if save_num[incr nA]<>list: save_num[nA]:=list; fi ef pair list: if save_pair[incr nB]<>list: save_pair[nB]:=list; fi ef string list: if save_str[incr nC]<>list: save_str[nC]:=list; fi @@ -162,7 +157,8 @@ def store_par(text t)= nA:=nB:=nC:=0; endfor enddef; %------------------------------------------------------------------------------------------------- -def restore_par(text t)= nA:=nB:=nC:=0; +def restore_par(text t)= + nA:=nB:=nC:=0; forsuffixes list=t: if numeric list: if list<>save_num[incr nA]: list:=save_num[nA]; fi ef pair list: if list<>save_pair[incr nB]: list:=save_pair[nB]; fi ef string list: if list<>save_str[incr nC]: list:=save_str[nC]; fi @@ -172,117 +168,111 @@ enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% def beginfigm= begingroup - save ','',`,``,//,@,#,#@,##,\,\\,\*,|=,|<,**,++,_,f_ext,blen,ext,add,ang_br,fw_n,bw_n, - info_cnt,bond_cntA,firstc,warning_cnt,hideH,hideH_cnt,cntM,cntA,cntB, - minX,minY,maxX,maxY,posA,posM,lineB,sB,eB,angB,angA,lenB,angX,numS,sumA,bond_num,wdM,htM, - chargeA,addA,add_rot,mol_pic,color_list,filter_s,no,mw,mi,fm; + save ','',`,``,//,@,#,#@,##,\,\\,\*,|=,|<,**,++,f_ext,blen,ext,add,ang_br,fw_n,bw_n,adr_n, + bond_cntA,unknown_cnt,unknown_s,warning_cnt,warning_s,hideH,hideH_cnt,cntM,cntA,cntB, + minX,minY,maxX,maxY,posA,posM,lineB,sB,eB,angB,angA,lenB,angX,numS,sumA,bond_num,wdM,htM, + chargeA,addA,add_rot,mol_pic,color_list,no,mw,mi,fm,group_num,f_line,f_type,ay,bx,by,pcnt; numeric hideH[],lineB[],sB[],eB[],angB[],angA[],lenB[],angX[],strA[],sumA[],bond_num[], - wdM[],htM[],chargeA[],addA[],add_rot[]; + wdM[],htM[],chargeA[],addA[],add_rot[]; pair posA[],posM[][]; - string mi,no,fm,mw,firstc,filter_s; + string unknown_s[],warning_s[],mi,no,fm,mw; picture mol_pic[]; color color_list[]; %----------------------------------------------------------------------------------------------- store_par(parameter_list); - no:=mc:=ex:=ad:=op:=temps:=mw:=mi:=fm:=filter_s:=""; + no:=mc:=ex:=ad:=op:=mw:=mi:=fm:=""; EN:=JN:=MW:=FM:=MI:=CAS:=CAT:=EXA:=EXB:=USE:="-"; - f_ext:=cntM:=mc_row:=ex_row:=ad_row:=op_row:=info_cnt:=err_cnt:=param_int:=0; + f_ext:=cntM:=mc_row:=ex_row:=ad_row:=op_row:=err_cnt:=param_int:=unknown_cnt:=warning_cnt:=0; let ext=ext_to_fig; let add=add_to_molecule; let ++=add_to_molecule; let **=ext_to_fig; - def '' = define_parts enddef; def '` = readm enddef; def \ = drawm enddef; def \\ = putm enddef; def \* = checkm enddef; def $ = getm enddef; def @ expr p = mposition:=p; enddef; + def '' = define_parts enddef; def '` = readm enddef; def \ = drawm enddef; def \\ = putm enddef; + def \* = checkm enddef; def $ = getm enddef; def @ expr p = mposition:=p; enddef; def # expr p = fsize:=p; enddef; def #@ expr p = fmargin:=p; enddef; def `(expr s) = define_group_string(s)() enddef; def `` = define_group_string enddef; def ## expr p = msize:=p; enddef; def |=(expr n) = blength:=n; enddef; - def |<(expr n) = max_blength:=n; enddef; def _ expr s = EN:=s; enddef; + def |<(expr n) = max_blength:=n; enddef; pcode_num:=pcode_usr_start; pcode_int:=pcode_int_start; fig_num:=fig_num+1; mol_pic[0]:=nullpicture; enddef; %------------------------------------------------------------------------------------------------- def endfigm= - %-------------------------------------------------------------------------------------------- if cntM>=1: - %-------------------------------------------------------------------------------------------- - if scan_bit(sw_output,Fig): - if EN<>"-": EN_:=forbidden_to_underbar(EN); fi - beginfig(fig_num) - %------------------------------------------------------------------------------------------ - if sw_ext_all=1: ext_to_fig(EXT_ALL); fi - if sw_trimming>=1: - nA:=nC:=4095; nB:=nD:=-4095; - for i=1 upto cntM: - if xpart(posM[1][i])<nA: nA:=xpart(posM[1][i]); fi - if xpart(posM[2][i])>nB: nB:=xpart(posM[2][i]); fi - if ypart(posM[1][i])<nC: nC:=ypart(posM[1][i]); fi - if ypart(posM[2][i])>nD: nD:=ypart(posM[2][i]); fi - endfor - fig_wd:=nB-nA+2xpart(fmargin); fig_ht:=nD-nC+2ypart(fmargin); fsize:=(fig_wd,fig_ht); + if scan_bit(sw_output,Fig):: + if EN<>"-": EN_:=forbidden_to_underbar(EN); else: EN_:="no_name"; fi + beginfig(fig_num) + if sw_ext_all=1: ext_to_fig(EXT_ALL); fi + if sw_trimming>=1: + nA:=nC:=4095; nB:=nD:=-4095; + for i=1 upto cntM: + if xpart(posM[1][i])<nA: nA:=xpart(posM[1][i]); fi + if xpart(posM[2][i])>nB: nB:=xpart(posM[2][i]); fi + if ypart(posM[1][i])<nC: nC:=ypart(posM[1][i]); fi + if ypart(posM[2][i])>nD: nD:=ypart(posM[2][i]); fi + endfor + fig_wd:=nB-nA+2xpart(fmargin); fig_ht:=nD-nC+2ypart(fmargin); fsize:=(fig_wd,fig_ht); + for i=1 upto cntM: + posM[0][i]:=posM[0][i]+fmargin-(nA,nC); posM[1][i]:=posM[1][i]+fmargin-(nA,nC); + endfor + fi + if scan_bit(sw_frame,Outside): draw_frame((0,0),fsize,thickness_frame); + else: draw_corner(fsize,0.004); + fi + if scan_bit(sw_frame,Inside): draw_frame(fmargin,fsize-2fmargin,thickness_frame); fi for i=1 upto cntM: - posM[0][i]:=posM[0][i]+fmargin-(nA,nC); posM[1][i]:=posM[1][i]+fmargin-(nA,nC); + addto currentpicture also mol_pic[i] shifted posM[0][i]; mol_pic[i]:=nullpicture; + if scan_bit(sw_frame,Mol): ext(draw_frame(p[i],(w[i],h[i]),thickness_frame)) fi endfor - fi - %---------------------------------------------------------------------------------------- - if scan_bit(sw_frame,Outside): draw_frame((0,0),fsize,thickness_frame); - else: draw_corner(fsize,0.004); fi - if scan_bit(sw_frame,Inside): draw_frame(fmargin,fsize-2fmargin,thickness_frame); fi - for i=1 upto cntM: - addto currentpicture also mol_pic[i] shifted posM[0][i]; mol_pic[i]:=nullpicture; - if scan_bit(sw_frame,Mol): ext(draw_frame(p[i],(w[i],h[i]),thickness_frame)) fi - endfor - if f_ext=1: addto currentpicture also mol_pic[0]; mol_pic[0]:=nullpicture; fi - %----------------------------------------------------------------------------------------- - endfig; - clearit; - fi - %--------------------------------------------------------------------------------------------- - if scan_bit(sw_output,Report): proc_report_out; fi - if scan_bit(sw_output,MOL2k): proc_mol_out(2000); fi - if scan_bit(sw_output,MOL3k): proc_mol_out(3000); fi - %--------------------------------------------------------------------------------------------- + if f_ext=1: addto currentpicture also mol_pic[0]; mol_pic[0]:=nullpicture; fi + endfig; + clearit; + fi ef scan_bit(sw_output,Fig): - EN_:="no_figure"; + if EN<>"-": EN_:=forbidden_to_underbar(EN); else: EN_:="no_name"; fi beginfig(fig_num) - defaultscale:=.6; draw_frame((0,0),fsize,thickness_frame) label("no figure",0.5fsize); + defaultscale:=.6; draw_frame((0,0),fsize,thickness_frame) label("no figure",0.5fsize); endfig; clearit; fi - %--------------------------------------------------------------------------------------------- if err_cnt=0: - if scan_bit(sw_output,Mcode): proc_mc_out; message "["&decimal(fig_num)&"]:"&EN; fi - if scan_bit(sw_output,Report): proc_report_out; message "["&decimal(fig_num)&"]:"&EN; fi - if scan_bit(sw_output,MOL2k): proc_mol_out(2000); message "["&decimal(fig_num)&"]:"&EN; fi - if scan_bit(sw_output,MOL3k): proc_mol_out(3000); message "["&decimal(fig_num)&"]:"&EN; fi + if scan_bit(sw_output,Mcode): proc_mc_out; fi + if scan_bit(sw_output,Report): proc_report_out; fi + if scan_bit(sw_output,MOL2k): proc_mol_out(2000); fi + if scan_bit(sw_output,MOL3k): proc_mol_out(3000); fi fi - %--------------------------------------------------------------------------------------------- restore_par(parameter_list); endgroup; - message EN; + message "["&decimal(fig_num)&"]EN:"&EN; message ""; enddef; %================================================================================================= def readm(text s)= - save fw_n,bw_n; for list=s: - fw_n:=scan_char(" ",list,1,1)-1; bw_n:=scan_char(" ",list,-1,1); - mc_indent[incr mc_row]:=fw_n; mc[mc_row]:=substring(fw_n,bw_n) of list; mc:=mc&mc[mc_row]; + fw_n:=scan_char(" ",list,1,1)-1; + bw_n:=scan_char(" ",list,-1,1); + mc_indent[incr mc_row]:=fw_n; + mc[mc_row]:=substring(fw_n,bw_n) of list; + mc:=mc&mc[mc_row]; endfor enddef; %================================================================================================= def getm(expr a)=if string a: read_unit(get_adr("EN",a)) ef numeric a: read_unit(a) fi enddef; %------------------------------------------------------------------------------------------------- def read_unit(expr n)= - save nF; nF:=0; + f_line:=0; if (n>=1)and(n<=ucount): for i=1 upto info[n]: for j=1 upto tag_cnt: if lib_tag[n][i]=tag[j]: scantokens(tag[j]):=lib_val[n][i]; fi endfor endfor for i=1 upto unit_lines[n]: - temps:=row[n][i]; firstc:=subc(1,temps); exitif firstc=";"; - if firstc=":": nF:=1; ef firstc="=": nF:=2; ef firstc="*": nF:=3; ef firstc="+": nF:=4; + line_s:=row[n][i]; firstc:=substring(0,1) of line_s; exitif firstc=";"; + if firstc=":": f_line:=1; ef firstc="=": f_line:=2; + ef firstc="*": f_line:=3; ef firstc="+": f_line:=4; ef firstc="%": else: - fw_n:=scan_char(" ",temps,1,1)-1; temps:=substring(fw_n,length(temps)) of temps; - if nF=1: mc_indent[incr mc_row]:=fw_n; mc[mc_row]:=temps; mc:=mc&temps; - ef nF=2: op_indent[incr op_row]:=fw_n; op[op_row]:=temps; op:=op&temps; - ef nF=3: ex_indent[incr ex_row]:=fw_n; ex[ex_row]:=temps; ex:=ex&temps; - ef nF=4: ad_indent[incr ad_row]:=fw_n; ad[ad_row]:=temps; ad:=ad&temps; + fw_n:=scan_char(" ",line_s,1,1)-1; + line_s:=substring(fw_n,length(line_s)) of line_s; + if f_line=1: mc_indent[incr mc_row]:=fw_n; mc[mc_row]:=line_s; mc:=mc&line_s; + ef f_line=2: op_indent[incr op_row]:=fw_n; op[op_row]:=line_s; op:=op&line_s; + ef f_line=3: ex_indent[incr ex_row]:=fw_n; ex[ex_row]:=line_s; ex:=ex&line_s; + ef f_line=4: ad_indent[incr ad_row]:=fw_n; ad[ad_row]:=line_s; ad:=ad&line_s; fi fi endfor @@ -290,7 +280,7 @@ def read_unit(expr n)= enddef; %================================================================================================= vardef get_adr(expr t,v)= - save adr_n; adr_n:=0; + adr_n:=0; for n=1 upto ucount: for i=1 upto info[n]: for j=1 upto tag_cnt: if (lib_tag[n][i]=t)and(lib_val[n][i]=v): adr_n:=n; fi endfor @@ -315,42 +305,47 @@ vardef pcode_extend(expr p,a,b,c,d)= enddef; def move_pos(expr n) = <$0,angle(pcode_y[n][1],pcode_y[n][2])~0`length(pcode_y[n][1],pcode_y[n][2]),<$0 enddef; +def message_unknown(expr n) = + unknown_s[incr unknown_cnt]:="*Unknown found in block("AND decimal(n)AND")"; + message "["AND decimal(fig_num)AND"]"AND unknown_s[unknown_cnt]; + message ""; +enddef; %------------------------------------------------------------------------------------------------- -vardef abs_adress primary n = if (n>=si)and(n<=bd_):: (_tmp_line,n) else:: n-4095 fi enddef; +vardef abs_adress primary n = + if numeric n:: if (n>=si)and(n<=bd_):: (_tmp_line,n) else:: n-4095 fi else:: _nop fi enddef; primarydef a from_until b = (_from,a),(_until,b) enddef; -primarydef a op_quot b = if (known a)and(known b):: add_parts(a,b) else:: _nop fi enddef; +primarydef a bop_qut b = if (known a)and(known b):: add_parts(a,b) else:: _nop fi enddef; primarydef a fuse__ b = pcode_extend(_fuse_ext,a,b,2,0) enddef; primarydef a fuse___ b = pcode_extend(_fuse_ext,a,b,3,0) enddef; primarydef a fuse____ b = pcode_extend(_fuse_ext,a,b,4,0) enddef; -tertiarydef a op_equ b = if (known a)and(known b):: change_bond(a,b) else:: _nop fi enddef; -tertiarydef a op_col b = if (known a)and(known b):: change_atom(a,b) else:: _nop fi enddef; -tertiarydef a op_hat b = if (known a)and(known b):: (_tmp_rot,b),a else:: _nop fi enddef; -tertiarydef a op_til b = if (known a)and(known b):: (_tmp_line,b),a else:: _nop fi enddef; -tertiarydef a op_lth b = if (known a)and(known b):: (_tmp_env,b),a else:: _nop fi enddef; -tertiarydef a op_bqu b = if (known a)and(known b):: (_tmp_len,b),a else:: _nop fi enddef; -def chg_length primary n = (_chg_slen,n) enddef; -def rot_angle primary n = if known n:: (_rot_ang,n) else:: _nop fi enddef; -def cyc_atom primary n = if known n:: (_cyc,n) else:: _nop fi enddef; +tertiarydef a bop_equ b = if (known a)and(known b):: set_bond(a,b) else:: _nop fi enddef; +tertiarydef a bop_col b = if (known a)and(known b):: set_atom(a,b) else:: _nop fi enddef; +tertiarydef a bop_hat b = if (known a)and(numeric b):: (_tmp_rot,b),a else:: _nop fi enddef; +tertiarydef a bop_til b = if (known a)and(numeric b):: (_tmp_line,b),a else:: _nop fi enddef; +tertiarydef a bop_lth b = if (known a)and(numeric b):: (_tmp_env,b),a else:: _nop fi enddef; +tertiarydef a bop_bqu b = if (known a)and(numeric b):: (_tmp_len,b),a else:: _nop fi enddef; +def chg_length primary n = if numeric n:: (_set_len,n) else:: _nop fi enddef; +def rot_angle primary n = if numeric n:: (_rot_ang,n) else:: _nop fi enddef; +def cyc_atom primary n = if numeric n:: (_cyc,n) else:: _nop fi enddef; def jump_atom secondary n = if n>=pcode_int_start:: move_pos(n) else::(_jp_atom,n) fi enddef; -def jump_atom_abs secondary n = if n>=pcode_int_start::(_jp_atom,$1),move_pos(n) - else::(_jp_atom,$n) fi enddef; -def group_si secondary n = if known n:: (_group_si,n) else:: _nop fi enddef; -def group_dm secondary n = if known n:: (_group_dm,n) else:: _nop fi enddef; -def group_wf secondary n = if known n:: (_group_wf,n) else:: _nop fi enddef; -def group_zf secondary n = if known n:: (_group_zf,n) else:: _nop fi enddef; -def group_wv secondary n = if known n:: /n~wv else:: _nop fi enddef; -def group_nb secondary n = if known n:: /n~nb else:: _nop fi enddef; +def jump_atom_abs secondary n = if numeric n:: + if n>=pcode_int_start::(_jp_atom,$1),move_pos(n) else::(_jp_atom,$n) fi else:: _nop fi enddef; +def group_si secondary n = if numeric n:: (_group_si,n) else:: _nop fi enddef; +def group_dm secondary n = if numeric n:: (_group_dm,n) else:: _nop fi enddef; +def group_wf secondary n = if numeric n:: (_group_wf,n) else:: _nop fi enddef; +def group_zf secondary n = if numeric n:: (_group_zf,n) else:: _nop fi enddef; +def group_wv secondary n = if numeric n:: /n~wv else:: _nop fi enddef; +def group_nb secondary n = if numeric n:: /n~nb else:: _nop fi enddef; %================================================================================================= def read_mcf(expr n)(text t)= begingroup if unknown inside_mc:: - save /,//,*,/*,*/,**,*/*,~,^,`,',<,>,:,=,\,\\,*\,\*,*\*,@,@$,$,&,&$,#,##,{,},|,||,_, - --,---,----,CP,CA,CC,DL,FR,inside_mc; - inside_mc:=1; | :=mark_adress; || :=reset_adress; ##:=reset_length; _:=NO_ATOM; - \:=0; \\:=zero_dm; *\:=zero_wf; \*:=zero_zf; *\*:=zero_wv; let ' == op_quot; let = ==op_equ; - let : ==op_col; let ^ ==op_hat; let ~ ==op_til; let > ==op_lth; let ` ==op_bqu; - let -- == fuse__; let --- == fuse___; let ---- == fuse____; let } == ); - let @$ ==jump_atom_abs; let < ==rot_angle; let @ ==jump_atom; let & ==cyc_atom; + save /,//,*,/*,*/,**,*/*,~,^,`,',<,>,:,=,@,@$,$,&,&$,#,##,{,},|,||,--,---,----, + CP,CA,CC,DL,FR,inside_mc; + inside_mc:=1; | :=mark_adress; || :=reset_adress; ##:=reset_length; + let ' == bop_qut; let = ==bop_equ; let : ==bop_col; let ^ ==bop_hat; let ~ ==bop_til; + let > ==bop_lth; let ` ==bop_bqu; let -- == fuse__; let --- == fuse___; let ---- == fuse____; + let } == ); let @$ ==jump_atom_abs; let < ==rot_angle; let @ ==jump_atom; let & ==cyc_atom; let # ==chg_length; let / ==group_si; let // ==group_dm; let */ ==group_wf; let /* ==group_zf; let */* ==group_wv; let ** ==group_nb; let CP == pcode_add; let CA == pcode_add_adr; let FR == fuse_ring_bonds; def DL(expr p)==CA(_set_line,dl,p) enddef; @@ -359,18 +354,19 @@ def read_mcf(expr n)(text t)= def * primary p == (_numeric_inv,p) enddef; fi %---------------------------------------------------------------------------------------------- - pcode_cnt[n]:=0; + pcode_cnt[n]:=block_cnt:=0; for list==t:: + block_cnt:=block_cnt+1; if known list:: if pair list:: pcode_x[n][Incr pcode_cnt[n]]:=xpart(list); pcode_y[n][pcode_cnt[n]]:=ypart(list); ef numeric list:: - if list==_nop:: message "unknown command in "AND decimal(n); + if list==_nop:: message_unknown(block_cnt); ef list>=pcode_emb_start:: expand_pcode(n,list); else:: pcode_x[n][Incr pcode_cnt[n]]:=_mk_bond; pcode_y[n][pcode_cnt[n]]:=list; fi fi - else:: message "unknown command in "AND decimal(n); + else:: message_unknown(block_cnt); fi endfor endgroup @@ -389,13 +385,13 @@ def expand_pcode(expr n,a)= enddef; %------------------------------------------------------------------------------------------------- vardef read_adress(text t)= - save :,',pcnt,start_num; + save :,',start_num; let ' == , ; let : == from_until; pcode_int:=pcode_int+1; pcnt:=0; for list==t:: if known list:: if numeric list:: - if list==_nop:: message "unknown command in "AND decimal(pcode_int); + if list==_nop:: message_unknown(block_cnt); else:: pcode_x[pcode_int][Incr pcnt]:=_numeric; pcode_y[pcode_int][pcnt]:=list; fi ef pair list:: @@ -407,7 +403,7 @@ vardef read_adress(text t)= else:: pcode_x[pcode_int][Incr pcnt]:=xpart(list); pcode_y[pcode_int][pcnt]:=ypart(list); fi fi - else:: message "unknown command in "AND decimal(pcode_int); + else:: message_unknown(block_cnt); fi endfor pcode_cnt[pcode_int]:=pcnt; pcode_int @@ -417,13 +413,13 @@ vardef add_parts(expr a,b)= if (pair a)and(pair b):: pcode_x[Incr pcode_int][1]:=xpart a; pcode_y[pcode_int][1]:=ypart a; pcode_x[pcode_int][2]:=xpart b; pcode_y[pcode_int][2]:=ypart b; pcode_cnt[pcode_int]:=2; - elseif pair a:: + ef (pair a)and(numeric b):: pcode_x[Incr pcode_int][1]:=xpart a; pcode_y[pcode_int][1]:=ypart a; if b>=pcode_emb_start:: pcode_x[pcode_int][2]:=b; else:: pcode_x[pcode_int][2]:=_numeric; pcode_y[pcode_int][2]:=b; fi pcode_cnt[pcode_int]:=2; - elseif pair b:: + ef (numeric a)and(pair b):: if a>=pcode_int_start:: pcode_x[a][Incr pcode_cnt[a]]:=xpart b; pcode_y[a][pcode_cnt[a]]:=ypart b; elseif a>=pcode_emb_start:: @@ -433,10 +429,10 @@ vardef add_parts(expr a,b)= pcode_x[Incr pcode_int][1]:=_numeric; pcode_y[pcode_int][1]:=a; pcode_x[pcode_int][2]:=xpart b; pcode_y[pcode_int][2]:=ypart b; pcode_cnt[pcode_int]:=2; fi - elseif (a LT pcode_emb_start)and(b LT pcode_emb_start):: + ef (a LT pcode_emb_start)and(b LT pcode_emb_start):: pcode_x[Incr pcode_int][1]:=_numeric; pcode_y[pcode_int][1]:=a; pcode_x[pcode_int][2]:=_numeric; pcode_y[pcode_int][2]:=b; pcode_cnt[pcode_int]:=2; - elseif (a>=pcode_int_start)and(b LT pcode_int_start):: + ef (a>=pcode_int_start)and(b LT pcode_int_start):: if b>=pcode_emb_start:: pcode_x[a][Incr pcode_cnt[a]]:=b; else:: pcode_x[a][Incr pcode_cnt[a]]:=_numeric; pcode_y[a][pcode_cnt[a]]:=b; fi @@ -446,124 +442,126 @@ vardef add_parts(expr a,b)= enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% def fuse_ring(expr a,b) = - CP(_jp_bond,a) CP(_rot_ang,180) CP(_get_len,a) CC(_len_s) CP(_chg_len,_ring_len) + CP(_jp_bond,a) CP(_rot_ang,180) CP(_get_len,a) CP(_set_len,_ring_len) for i==1 upto b-2:: CB(360 DIV b) endfor CC(_len_e) if a<=0:: CP(_cyc_eB,a-b+2) else:: CP(_cyc_eB,a) fi enddef; %------------------------------------------------------------------------------------------------- def fuse_ring_bonds(expr s,e,b,c) = - CP(_jp_bond,s) CP(_rot_ang,180) CC(_len_s) - if b==6:: CP(_chg_len,1) for i==1 upto c-1:: CB(60) endfor - ef b==5:: if c==2:: CP(_chg_len,1.25) CB(80) ef c==3:: CP(_chg_len,1.1) CB(78) CB(72) fi - ef b==4:: CP(_chg_len,1.225) CB(105) - fi + CP(_jp_bond,s) CP(_rot_ang,180) + if b==6:: CP(_set_len,1) for i==1 upto c-1:: CB(60) endfor + ef b==5:: if c==2:: CP(_set_len,1.25) CB(80) ef c==3:: CP(_set_len,1.1) CB(78) CB(72) fi + ef b==4:: CP(_set_len,1.225) CB(105) fi CC(_len_e) if e<=0:: CP(_cyc_eB,e-c+1) else:: CP(_cyc_eB,e) fi enddef; %------------------------------------------------------------------------------------------------- def fuse_ring_size(expr a,b,c) = - CP(_jp_bond,a) CP(_rot_ang,180) CC(_len_s) CP(_chg_len,c DIV 10) - if b==5:: CB(72-((c-9) MUL 1.5)) CB(72+(c-9)) CB(72+(c-9)) - ef b==6:: CB(60-(c-8)) for i==1 upto 3:: CB(60+((c-8) DIV 2)) endfor - fi + CP(_jp_bond,a) CP(_rot_ang,180) CP(_set_len,c) + if b==5:: CB(72-((10c-9) MUL 1.5)) CB(63+10c) CB(63+10c) + ef b==6:: CB(68-10c) for i==1 upto 3:: CB(60+(5c-4)) endfor fi CC(_len_e) if a<=0:: CP(_cyc_eB,a-b+2) else:: CP(_cyc_eB,a) fi enddef; %================================================================================================= -vardef change_bond(expr a,b) = - save pY; - if known b:: pcode_cnt[Incr pcode_int]:=0; - if numeric b:: - if (b>=si)and(b<=bd_):: +vardef set_bond(expr a,b) = + pcode_cnt[Incr pcode_int]:=0; + if numeric b:: + if (b>=si)and(b<=bd_):: + if a>=pcode_int_start:: + for i==1 upto pcode_cnt[a]:: + if pcode_x[a][i]==_numeric:: CA(_set_line,b,pcode_y[a][i]) + elseif pcode_x[a][i]==_numeric_inv:: + if b==dl:: CA(_set_line,dr,pcode_y[a][i]) + ef b==dr:: CA(_set_line,dl,pcode_y[a][i]) fi + fi + endfor + else:: CP(_set_adr,a) CP(_set_line,b) + fi + ef (b>=?3)and(b<=Ph2)or(b>=pcode_int_start):: + if numeric a:: if a>=pcode_int_start:: for i==1 upto pcode_cnt[a]:: - if pcode_x[a][i]==_numeric:: CA(_set_line,b,pcode_y[a][i]) - elseif pcode_x[a][i]==_numeric_inv:: - if b==dl:: CA(_set_line,dr,pcode_y[a][i]) - ef b==dr:: CA(_set_line,dl,pcode_y[a][i]) fi + ay:=pcode_y[a][i]; + if pcode_x[a][i]==_numeric:: + if b==Ph1:: fuse_ring(ay,6) DL(-2) DL(-4) + ef b==Ph2:: fuse_ring(ay,6) DL(-1) DL(-3) DL(-5) + else:: fuse_ring(ay,b-?3+3) fi + ef pcode_x[a][i]==_fuse_ext:: + if b==?6:: FR(param_e[ay][1],param_e[ay][2],6,6-param_e[ay][3]) + ef b==?5:: FR(param_e[ay][1],param_e[ay][2],5,5-param_e[ay][3]) + ef b==?4:: FR(param_e[ay][1],param_e[ay][2],4,2) fi fi endfor - else:: CP(_set_adr,a) CP(_set_line,b) - fi - elseif (b>=?3)and(b<=?6[15]):: - if numeric a:: - if a>=pcode_int_start:: - for i==1 upto pcode_cnt[a]:: - pY:=pcode_y[a][i]; - if pcode_x[a][i]==_numeric:: - if b==Ph1:: fuse_ring(pY,6) DL(-2) DL(-4) - ef b==Ph2:: fuse_ring(pY,6) DL(-1) DL(-3) DL(-5) - ef (b>=?5[11])and(b<=?6[15]):: fuse_ring_size(a,pcode_x[b][1],pcode_y[b][1]) - else:: fuse_ring(pY,b-?3+3) - fi - ef pcode_x[a][i]==_fuse_ext:: - if b==?6:: FR(param_e[pY][1],param_e[pY][2],6,6-param_e[pY][3]) - ef b==?5:: FR(param_e[pY][1],param_e[pY][2],5,5-param_e[pY][3]) - ef b==?4:: FR(param_e[pY][1],param_e[pY][2],4,2) - fi - fi - endfor - else:: - if b==Ph1:: fuse_ring(a,6) DL(-2) DL(-4) - ef b==Ph2:: fuse_ring(a,6) DL(-1) DL(-3) DL(-5) - ef (b>=?5[11])and(b<=?6[15]):: fuse_ring_size(a,pcode_x[b][1],pcode_y[b][1]) - else:: fuse_ring(a,b-?3+3) fi - fi - ef pair a:: - if b==?6:: FR(param_e[ypart a][1],param_e[ypart a][2],6,6-param_e[ypart a][3]) - ef b==?5:: FR(param_e[ypart a][1],param_e[ypart a][2],5,5-param_e[ypart a][3]) - ef b==?4:: FR(xpart a,ypart a,4,2) + else:: + if b==Ph1:: fuse_ring(a,6) DL(-2) DL(-4) + ef b==Ph2:: fuse_ring(a,6) DL(-1) DL(-3) DL(-5) + ef b>=pcode_int_start:: + if (pcode_x[b][1]==_set_len)and(pcode_x[b][2]>=?5)and(pcode_x[b][2]<=?6):: + fuse_ring_size(a,pcode_x[b][2]-?3+3,pcode_y[b][1]) fi + else:: fuse_ring(a,b-?3+3) fi fi + ef pair a:: + if b==?6:: FR(param_e[ypart a][1],param_e[ypart a][2],6,6-param_e[ypart a][3]) + ef b==?5:: FR(param_e[ypart a][1],param_e[ypart a][2],5,5-param_e[ypart a][3]) + ef b==?4:: FR(xpart a,ypart a,4,2) fi fi - elseif color b:: cntC:=cntC+1; color_list[cntC]:=b; CA(_set_colorB,cntC,a) fi - pcode_int - fi + else:: message_unknown(block_cnt); + fi + elseif color b:: cntC:=cntC+1; color_list[cntC]:=b; CA(_set_colorB,cntC,a) fi + pcode_int enddef; %------------------------------------------------------------------------------------------------- -vardef change_atom(expr a,b)= - if known b:: pcode_cnt[Incr pcode_int]:=pcnt:=0; - if numeric b:: - if (b GT pcode_emb_start)and(b<=pcode_atm_end):: CA(_chg_atom,b,a) - ef b==NH:: CA(_chg_atom,N,a) if sw_expand==0:: CP(_tmp_line,nl) fi - CC(_group_s) CA(_group_si,H,a) CC(_group_e) - ef b==N?:: CA(_chg_atom,N,a) CC(_group_s) CA(_group_si,_,a) CC(_group_e) - ef b==N?2:: CA(_chg_atom,N,a) CC(_group_s) CA(_group_si,!,a) CC(_group_e) - ef b==?O:: CC(_group_s) CA(_group_dm,O,a) CC(_group_e) - ef b==?NH:: CC(_group_s) CA(_group_dm,NH,a) CC(_group_e) - ef b==??:: CP(_tmp_rot, 35) CC(_group_s) CA(_group_si,_,a) CC(_group_e) - CP(_tmp_rot,-35) CC(_group_s) CA(_group_si,_,a) CC(_group_e) - ef b==n_:: CC(_group_s) CP(_set_add,MIS) CP(_chg_add,a) CC(_group_e) - ef b==p_:: CC(_group_s) CP(_set_add,PLS) CP(_chg_add,a) CC(_group_e) - fi - ef pair b:: - CC(_group_s) - if a>=pcode_emb_start:: - for i==1 upto pcode_cnt[a]:: - if pcode_x[a][i]==_numeric:: CA(xpart(b),ypart(b),pcode_y[a][i]) - ef pcode_x[a][i]==_numeric_inv:: - if xpart(b)==_group_wf:: CA(_group_zf,ypart(b),pcode_y[a][i]) - ef xpart(b)==_group_zf:: CA(_group_wf,ypart(b),pcode_y[a][i]) fi - else:: CP(pcode_x[a][i],pcode_y[a][i]) - fi - endfor - else:: CA(xpart(b),ypart(b),a) fi - CC(_group_e) - ef color b:: cntC:=cntC+1; color_list[cntC]:=b; CA(_set_colorA,cntC,a) +vardef set_atom(expr a,b)= + pcode_cnt[Incr pcode_int]:=pcnt:=f_type:=0; + if numeric b:: if (b>=?)and(b<=?dm):: bx:=pcode_x[b][1]; by:=pcode_y[b][1]; f_type:=1; fi + ef pair b:: bx:=xpart(b); by:=ypart(b); f_type:=1; + ef color b:: f_type:=2; + fi + if f_type==0:: + if (b GT pcode_emb_start)and(b<=pcode_atm_end):: CA(_chg_atom,b,a) + ef b==NH:: CA(_chg_atom,N,a) if sw_expand==0:: CP(_tmp_line,nl) fi + CC(_group_s) CA(_group_si,H,a) CC(_group_e) + ef b==N?:: CA(_chg_atom,N,a) CC(_group_s) CA(_group_si,NO_ATOM,a) CC(_group_e) + ef b==N?2:: CA(_chg_atom,N,a) CC(_group_s) CA(_group_si,!,a) CC(_group_e) + ef b==?O:: CC(_group_s) CA(_group_dm,O,a) CC(_group_e) + ef b==?NH:: CC(_group_s) CA(_group_dm,NH,a) CC(_group_e) + ef b==??:: CP(_tmp_rot, 35) CC(_group_s) CA(_group_si,NO_ATOM,a) CC(_group_e) + CP(_tmp_rot,-35) CC(_group_s) CA(_group_si,NO_ATOM,a) CC(_group_e) + ef b==n_:: CC(_group_s) CP(_set_add,MIS) CP(_chg_add,a) CC(_group_e) + ef b==p_:: CC(_group_s) CP(_set_add,PLS) CP(_chg_add,a) CC(_group_e) + ef b==_nop:: message_unknown(block_cnt); fi - pcode_cnt[pcode_int]:=pcode_cnt[pcode_int]; pcode_int + ef f_type==1:: + CC(_group_s) + if a>=pcode_emb_start:: + for i==1 upto pcode_cnt[a]:: + if pcode_x[a][i]==_numeric:: CA(bx,by,pcode_y[a][i]) + ef pcode_x[a][i]==_numeric_inv:: + if bx==_group_wf:: CA(_group_zf,by,pcode_y[a][i]) + ef bx==_group_zf:: CA(_group_wf,by,pcode_y[a][i]) + fi + else:: CP(pcode_x[a][i],pcode_y[a][i]) + fi + endfor + else:: CA(bx,by,a) fi + CC(_group_e) + ef f_type==2:: cntC:=cntC+1; color_list[cntC]:=b; CA(_set_colorA,cntC,a) fi + pcode_cnt[pcode_int]:=pcode_cnt[pcode_int]; pcode_int enddef; %------------------------------------------------------------------------------------------------- -def pcode_add(expr c,p)= pcode_x[pcode_int][Incr pcode_cnt[pcode_int]]:=c; - pcode_y[pcode_int][pcode_cnt[pcode_int]]:=p; +def pcode_add(expr x,y)= pcode_x[pcode_int][Incr pcode_cnt[pcode_int]]:=x; + pcode_y[pcode_int][pcode_cnt[pcode_int]]:=y; enddef; -def pcode_add_adr(expr c,p,a)= +%------------------------------------------------------------------------------------------------- +def pcode_add_adr(expr x,y,a)= if a>=pcode_emb_start:: for i==1 upto pcode_cnt[a]:: - if pcode_x[a][i]==_numeric:: pcode_add(_set_adr,pcode_y[a][i]) pcode_add(c,p) + if pcode_x[a][i]==_numeric:: pcode_add(_set_adr,pcode_y[a][i]) pcode_add(x,y) else:: pcode_add(pcode_x[a][i],pcode_y[a][i]) fi endfor - else:: pcode_add(_set_adr,a) pcode_add(c,p) + else:: pcode_add(_set_adr,a) pcode_add(x,y) fi enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -625,9 +623,9 @@ enddef; %================================================================================================= def drawm(text t)= begingroup - save f_bra,temp_strA,temp_lenE,temp_lenF,temp_cntB,f_term,f_at,f_lineT,f_rotT,angL,lenL,cpos, - tpos,f_lenT,f_envT,factor,m_wd,m_ht,raise_pos,slen,sdir,char_wd,char_ht,tcol,f_col,knownA, - group_num,markA,markB,saveA,saveB,bondL,lenT,lineT,angT,rotT,envT,envB,rate_cr,posBs,posBe, + save f_bra,temp_strA,len_e_T,len_ee_T,temp_cntB,f_term,f_at,f_lineT,f_rotT,angL,lenL,cpos,tpos, + f_lenT,f_envT,factor,m_wd,m_ht,raise_pos,slen,sdir,char_wd,char_ht,tcol,f_col, + knownA,markA,markB,saveA,saveB,bondL,lenT,lineT,angT,rotT,envT,envB,rate_cr,posBs,posBe, group_par,group_cnt,group_com,colorA,colorB,aW,aH,fW,fH,hW,hW,hH,qH,fP,hP,ww,aw,ap,am, Ls,Le,pA,zA,zL; numeric group_com[][],group_par[][],group_cnt[],colorA[],colorB[]; @@ -641,7 +639,8 @@ def drawm(text t)= %=============================================================================================== read_mcf(0)(t,(_com,_term)); proc_bond_atom(0)(1); - if (group_num>0)and(not scan_bit(sw_abbreviate,Group)): expand_group(1); fi + backboneA:=cntA; backboneB:=cntB; + if (group_num>0)and(not scan_bit(sw_omit,Group)): expand_group(1); fi %-scaling--------------------------------------------------------------------------------------- if blength>1: blen:=blength; proc_size_setup; proc_skeleton(0); proc_scaling; elseif blength>0: blen:=fig_wd*blength; proc_size_setup; proc_skeleton(0); proc_scaling; @@ -654,10 +653,13 @@ def drawm(text t)= proc_skeleton(0); proc_scaling; if (mol_ht/mol_wd)>(m_ht/m_wd): if ypart(msize)>1: factor:=ypart(msize)/mol_ht; - else: factor:=((fig_ht-2ypart(fmargin))*ypart(msize))/mol_ht; fi + else: factor:=((fig_ht-2ypart(fmargin))*ypart(msize))/mol_ht; + fi else: if xpart(msize)>1: factor:=xpart(msize)/mol_wd; - else: factor:=((fig_wd-2xpart(fmargin))*xpart(msize))/mol_wd; fi fi + else: factor:=((fig_wd-2xpart(fmargin))*xpart(msize))/mol_wd; + fi + fi exitif (factor>=1-eps)and(factor<=1+eps); blen:=blen*factor; proc_size_setup; endfor if blen>max_blength: blen:=max_blength; proc_size_setup; proc_skeleton(0); proc_scaling; fi @@ -685,27 +687,25 @@ def drawm(text t)= for i=1 upto cntB: if lineB[i]>=si_: draw_bond(i); fi endfor %-atom numbering------------------------------------------------------------------------------ if scan_bit(sw_numbering,Atom): - for i=1 upto cntA: - if (i>=numbering_start)and(i<=numbering_end): - defaultscale:=.18blen/defaultsize; nH:=1.2defaultsize*defaultscale; - if i<=9: nW:=nH; ef i<=99: nW:=1.3nH; else: nW:=1.9nH; fi - erase fill unitsquare xscaled nW yscaled nH shifted (posA[i]-(nW/2,nH/2)); - draw unitsquare xscaled nW yscaled nH shifted (posA[i]-(nW/2,nH/2)) wpcs 0.1; - label(decimal(i),posA[i]); - fi + if scan_bit(sw_numbering,All): numbering_end:=cntA; else: numbering_end:=backboneA; fi + for i=1 upto numbering_end: + defaultscale:=.2blen/defaultsize; nH:=1.2defaultsize*defaultscale; + if i<=9: nW:=nH; ef i<=99: nW:=1.3nH; else: nW:=1.9nH; fi + erase fill fullcircle xscaled 1.1nW yscaled 1.1nH shifted posA[i] wpcs 0.1; + draw fullcircle xscaled 1.1nW yscaled 1.1nH shifted posA[i] wpcs 0.1; + if numberfont="draw": draw_number(i,posA[i]); else: label(decimal(i),posA[i]); fi endfor fi %-bond numbering------------------------------------------------------------------------------ if scan_bit(sw_numbering,Bond): - for i=1 upto cntB: - if (i>=numbering_start)and(i<=numbering_end): - defaultscale:=.18blen/defaultsize; nH:=1.2defaultsize*defaultscale; - if i<=9: nW:=nH; ef i<=99: nW:=1.3nH; else: nW:=1.9nH; fi - nH:=defaultsize*defaultscale; tpos:=.5[posA[sB[i]],posA[eB[i]]]; - erase fill unitsquare xscaled nW yscaled nH shifted (tpos-(nW/2,nH/2)); - draw unitsquare xscaled nW yscaled nH shifted (tpos-(nW/2,nH/2)) wpcs 0.1; - label(decimal(i),tpos); - fi + if scan_bit(sw_numbering,All): numbering_end:=cntB; else: numbering_end:=backboneB; fi + for i=1 upto numbering_end: + defaultscale:=.18blen/defaultsize; nH:=1.2defaultsize*defaultscale; + if i<=9: nW:=nH; ef i<=99: nW:=1.3nH; else: nW:=1.9nH; fi + nH:=defaultsize*defaultscale; tpos:=.5[posA[sB[i]],posA[eB[i]]]; + erase fill unitsquare xscaled nW yscaled 1.05nH shifted (tpos-(nW/2,1.05nH/2)); + draw unitsquare xscaled nW yscaled 1.05nH shifted (tpos-(nW/2,1.05nH/2)) wpcs 0.1; + if numberfont="draw": draw_number(i,tpos); else: label(decimal(i),tpos); fi endfor fi %--------------------------------------------------------------------------------------------- @@ -718,7 +718,7 @@ def drawm(text t)= mol_pic[cntM]:=currentpicture; clearit; fi - if sw_output>=Calc: proc_calc(0); fi + proc_calc(0); endgroup; enddef; %------------------------------------------------------------------------------------------------- @@ -757,7 +757,7 @@ def proc_scaling= if strA[i]<>0: nU:=nD:=nP:=nL:=nR:=0; for j=1 upto length(str_tbl[strA[i]]): - tempc:=subc(j,str_tbl[strA[i]]); + tempc:=substring(j-1,j) of str_tbl[strA[i]]; if tempc="^": nU:=.5atom_wd; ef tempc="_": nD:=.5atom_wd; ef (tempc<>"{")and(tempc<>"}"): nP:=nP+atom_wd*tbl_char_wd[ASCII(tempc)]; fi @@ -776,8 +776,7 @@ enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% def proc_bond_atom(expr a)(expr n)= f_bra:=f_term:=rotT:=f_lineT:=f_rotT:=f_lenT:=f_envT:=envT:=envB:=temp_strA:=f_at:=0; - bondL:=rate_cr; lenT:=rate_cr; sB[0]:=0; eB[0]:=1; lineT:=si; - addAT:=markA:=markB:=saveA:=saveB:=0; + addAT:=markA:=markB:=saveA:=saveB:=sB[0]:=0; bondL:=rate_cr; lenT:=rate_cr; eB[0]:=1; lineT:=si; %----------------------------------------------------------------------------------------------- for i=n upto pcode_cnt[a]: pX:=pcode_x[a][i]; pY:=pcode_y[a][i]; if pX=_mk_bond: if (pY=0)and(rotT<>0): rotT:=0; fi add_atom(0); @@ -786,12 +785,13 @@ def proc_bond_atom(expr a)(expr n)= ef pY=_rest: markA:=saveA; markB:=saveB; ef pY=_moff: markA:=markB:=0; ef pY=_term: termA; - ef pY=_len_s: temp_lenE:=bondL; ef pY=_len_e: bondL:=temp_lenE; - ef pY=_len_ss: temp_lenF:=bondL; ef pY=_len_ee: bondL:=temp_lenF; + ef pY=_len_s: len_e_T:=bondL; ef pY=_len_e: bondL:=len_e_T; + ef pY=_len_ss: len_ee_T:=bondL; ef pY=_len_ee: bondL:=len_ee_T; ef pY=_group_s: f_at:=1; if lineT<>si: f_lineT:=1; fi if rotT<>0: f_rotT:=1; fi if lenT<>rate_cr: f_lenT:=1; fi if envT<>hz: f_envT:=1; fi - ef pY=_group_e: f_at:=0; f_lineT:=f_rotT:=f_lenT:=f_envT:=rotT:=envT:=0; - lineT:=si; lenT:=rate_cr; fi + ef pY=_group_e: f_at:=f_lineT:=f_rotT:=f_lenT:=f_envT:=rotT:=envT:=0; + lineT:=si; lenT:=rate_cr; + fi ef pX=_set_atom: temp_strA:=pY; ef pX=_group_si: add_group(pY); ef pX=_group_dm: lineT:=dm; add_group(pY); @@ -802,11 +802,13 @@ def proc_bond_atom(expr a)(expr n)= ef pX=_jp_absA: sB[cntB+1]:=pY; f_bra:=1; temp_cntB:=cntB; ef pX=_chg_atom: strA[getA(adrT)]:=pcode_y[pY][1]; ef pX=_chg_len: if pY=_ring_len: bondL:=ringL; else: bondL:=pY; fi - ef pX=_chg_slen: temp_lenE:=bondL; if pY=_ring_len: bondL:=ringL; else: bondL:=pY; fi + ef pX=_set_len: len_e_T:=bondL; if pY=_ring_len: bondL:=ringL; else: bondL:=pY; fi ef pX=_get_len: if pY=_tmp_len: if bondL=rate_cr: bondL:=lenT; fi ef pY=_ring_len: - if lenT<>rate_cr: bondL:=lenT; else: if bondL<0: bondL:=1; fi fi - else: ringL:=lenB[getB(pY)]; fi + if lenT<>rate_cr: bondL:=lenT; else: if bondL<0: bondL:=1; fi + fi + else: ringL:=lenB[getB(pY)]; + fi ef pX=_tmp_len: lenT:=pY; ef pX=_set_line: lineB[getB(adrT)]:=pY; ef pX=_tmp_line: lineT:=pY; @@ -826,8 +828,8 @@ def proc_bond_atom(expr a)(expr n)= enddef; %------------------------------------------------------------------------------------------------- def add_group(expr n)= - if f_at=1: nE:=getA(adrT); check_adrA(nE); else: nE:=cntA+1; fi - group_cnt[incr group_num]:=0; store_group(_jp_absA,nE) + if f_at=1: nA:=getA(adrT); check_adrA(nA); else: nA:=cntA+1; fi + group_cnt[incr group_num]:=0; store_group(_jp_absA,nA) store_group(_com,_mark) store_group(_com,_len_s) if lineT<>nb: store_group(_tmp_line,lineT) fi @@ -858,7 +860,8 @@ def add_atom(expr n)= if f_bra=0: strA[incr cntA]:=temp_strA; sB[cntB]:=cntA; addA[cntA]:=addAT; addAT:=temp_strA:=add_rot[cntA]:=0; if rotT<>0: add_rot[cntA]:=rotT; rotT:=0; fi - else: f_bra:=0; fi + else: f_bra:=0; + fi if n=0: eB[cntB]:=cntA+1; f_term:=0; else: eB[cntB]:=n; f_term:=1; fi enddef; %------------------------------------------------------------------------------------------------- @@ -867,9 +870,8 @@ def check_adrA(expr n)= def check_adrB(expr n)= if (n>cntB)or(n<=0): errmessage("cntB=[ "&decimal(n)&" ]"); fi enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% def proc_skeleton(expr n)= - markA:=markB:=cntA:=cntB:=f_bra:=rotT:=f_term:=0; - envT:=envB:=f_lineT:=f_rotT:=f_lenT:=f_envT:=0; lineT:=si; angT:=mangle; - angA[0]:=angB[0]:=angX[0]:=0; posA[0]:=posBs:=posBe:=(0,0); + markA:=markB:=cntA:=cntB:=f_bra:=rotT:=f_term:=envT:=envB:=f_lineT:=f_rotT:=f_lenT:=f_envT:=0; + angA[0]:=angB[0]:=angX[0]:=0; lineT:=si; angT:=mangle; posA[0]:=posBs:=posBe:=(0,0); %----------------------------------------------------------------------------------------------- for i=1 upto pcode_cnt[n]: pX:=pcode_x[n][i]; pY:=pcode_y[n][i]; if pX=_mk_bond: if (pY=0)and(rotT<>0):pY:=rotT; rotT:=0; fi add_bond(pY,1); @@ -903,23 +905,27 @@ def add_bond(expr n,f)= cntB:=cntB+1; if nA>-3700: angB[cntB]:=angT:=(angT+nA) mod 360; else: angB[cntB]:=angT:=nA+4095; fi if f=1: - if lenB[cntB]=_size_atom: posBe:=sfrt(posBs,atom_wd,angT); + if lenB[cntB]=_size_atom: posBe:=sfrt(posBs,1.12atom_wd,angT); else: nA:=lenB[cntB]; if nA<0: nB:=glu_atom(adrT)+glu_atom(cntA+1); nA:=abs(nA); else: nB:=0; fi posBe:=sfrt(posBs,nA*blen+nB,angT); fi posA[cntA+1]:=posBe; f_term:=0; - else: f_term:=1; fi + else: f_term:=1; + fi posBs:=posBe; enddef; %------------------------------------------------------------------------------------------------- vardef arrange_ang(expr n)= - if cntB=0: angT:=(angT-180) mod 360; 180 - else: if envB>=pcode_emb_start: pcode_y[envB][cntB-temp_cntB] - else: if envB=hz: if n=0: 60 ef n<=90: -60 ef n<=180: 60 ef n<270: -60 else: 60 fi - ef envB=vt: if n=0: -60 ef n<90: 60 ef n<=180: -60 ef n<=270: 60 else: -60 fi - ef abs(envB)<=180: envB - fi - fi + if f_bra=1: 0 + else: + if cntB=0: angT:=(angT-180) mod 360; 180 + else: if envB>=pcode_emb_start: pcode_y[envB][cntB-temp_cntB] + else: if envB=hz: if n=0: 60 ef n<=90: -60 ef n<=180: 60 ef n<270: -60 else: 60 fi + ef envB=vt: if n=0: -60 ef n<90: 60 ef n<=180: -60 ef n<=270: 60 else: -60 fi + ef abs(envB)<=180: envB + fi + fi + fi fi enddef; %------------------------------------------------------------------------------------------------- @@ -941,19 +947,25 @@ enddef; def termB= if f_term=0: if f_bra=0: angX[incr cntA]:=angT; else:f_bra:=0; fi f_term:=1; fi enddef; %------------------------------------------------------------------------------------------------- vardef glu_atom(expr n)= - if strA[n]<>0: nE:=angT mod 90; nF:=0.5atom_wd; (iif(nE<45,sind nE,cosd nE)*nF)+++nF else: 0 fi + save squ_a,hwd,glu_n; + if strA[n]<>0: + squ_a:=angT mod 90; hwd:=0.5atom_wd; glu_n:=(iif(squ_a<45,sind squ_a,cosd squ_a)*hwd)+++hwd; + glu_n + else: 0 + fi enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% def draw_atom(expr n)= if atomfont<>"draw": defaultfont:=atomfont; defaultsize:=atom_wd; fi - temps:=str_tbl[strA[n]]; slen:=length(temps); nC:=nS:=0; raise_pos:=(0,0); tpos:=posA[n]; + atom_s:=str_tbl[strA[n]]; slen:=length(atom_s); nC:=nS:=0; raise_pos:=(0,0); tpos:=posA[n]; if (angX[n]<=90)or(angX[n]>=270): sdir:=1; else: sdir:=-1; fi for i=1 upto slen: - if nC=0: tempc:=subc(i,temps); + if nC=0: tempc:=substring(i-1,i) of atom_s; if (sdir=-1)and(tempc="{"): - nD:=i; nC:=0; for j=nD upto slen: nC:=nC+1; exitif subc(j+1,temps)="}"; endfor + nD:=i; nC:=0; for j=nD upto slen: nC:=nC+1; exitif substring(j,j+1) of atom_s="}"; endfor fi - else: nC:=nC-1; tempc:=subc(nD+nC,temps); fi + else: nC:=nC-1; tempc:=substring(nD+nC-1,nD+nC) of atom_s; + fi if tempc="_": raise_pos:=iif(raise_pos=(0,0),(0,-.5atom_wd),(0,0)); ef tempc="^": raise_pos:=iif(raise_pos=(0,0),(0, .5atom_wd),(0,0)); ef (tempc<>"{")and(tempc<>"}"): @@ -973,6 +985,18 @@ def draw_atom(expr n)= fi if scan_bit(sw_frame,Atom): draw frameA[n] wpcs thickness_frame; fi enddef; +%------------------------------------------------------------------------------------------------- +def draw_number(expr n,p)= + begingroup + save atom_wd,bond_pen_wd,slen,spos; + pair spos; + atom_wd:=.18blen; bond_pen_wd:=.012blen; temps:=decimal(n); slen:=length(temps); spos:=p; + for i=1 upto slen: + if i=1: spos:=spos-(slen*.35atom_wd-.35atom_wd,0); else: spos:=spos+(0.73atom_wd,0); fi + draw_char(substring(i-1,i) of temps,spos); + endfor + endgroup +enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% def draw_bond(expr n)= nL:=lineB[n]; angL:=angB[n]; nS:=sB[n]; nE:=eB[n]; f_col:=0; @@ -982,12 +1006,13 @@ def draw_bond(expr n)= Ls:=posA[nS]; Le:=posA[nE]; pA:=(.1,.9); ef strA[nS]=0: Ls:=posA[nS]; Le:=zL ISP frameA[nE]; pA:=(.15,1); ef strA[nE]=0: Ls:=zL ISP frameA[nS]; Le:=posA[nE]; pA:=(0,.85); - else: Ls:=zL ISP frameA[nS]; Le:=zL ISP frameA[nE]; pA:=(0,1); fi + else: Ls:=zL ISP frameA[nS]; Le:=zL ISP frameA[nE]; pA:=(0,1); + fi zA:=Ls--Le; lenL:=length(Le-Ls); %----------------------------------------------------------------------------------------------- if known tcol: if tcol<>0: drawoptions(withcolor color_list[tcol]); f_col:=1;fi fi pickup pencircle scaled bond_pen_wd; - if (nL=si)or(scan_bit(sw_abbreviate,Bond)): draw zA; + if (nL=si)or(scan_bit(sw_omit,Bond)): draw zA; ef nL=dl: draw zA; draw sfrt(subpath pA of zA,bondgap,ap); ef nL=dr: draw zA; draw sfrt(subpath pA of zA,bondgap,am); ef nL=dm: draw sfrt(zA,bondgap/1.75,ap); draw sfrt(zA,bondgap/1.75,am); @@ -1042,25 +1067,30 @@ def draw_bond(expr n)= ef nL=arc_ltr: draw posA[nS]+(0,iif(strA[nS]=0,0,0.6aw))--posA[nS]+(0,.8aw) ..0.5[posA[nS],posA[nE]]+(0,1.7aw)..posA[nE]+(0,.8aw) --posA[nE]+(0,iif(strA[nE]=0,0,.6aw)); - %---------------------------------------------------------------------------------------------- fi if f_col=1: drawoptions(); fi enddef; %------------------------------------------------------------------------------------------------ -def wz_put(expr a,b,c)= nB:=round(lenL/hash_gap); - for i=1 upto nB: nA:=i/nB; if i=1: nD:=0; else: nD:=(i-ratio_hash_black)/nB; fi +def wz_put(expr a,b,c)= + nB:=round(lenL/hash_gap); + for i=1 upto nB: + nA:=i/nB; if i=1: nD:=0; else: nD:=(i-ratio_hash_black)/nB; fi fill nD[a,b]--nD[a,c]--nA[a,c]--nA[a,b]--cycle; endfor enddef; %------------------------------------------------------------------------------------------------ -def bz_put(expr a,b,c,d)= nB:=round(lenL/hash_gap); - for i=0 upto nB-1: nA:=i/nB; nD:=nA+ratio_hash_black/nB; +def bz_put(expr a,b,c,d)= + nB:=round(lenL/hash_gap); + for i=0 upto nB-1: + nA:=i/nB; nD:=nA+ratio_hash_black/nB; fill nA[b,a]--nA[d,c]--nD[d,c]--nD[b,a]--cycle; endfor enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% def char_size_set(expr w,h)(expr s)= - for j=1 upto length(s): nN:=ASCII(subc(j,s)); tbl_char_wd[nN]:=w; tbl_char_ht[nN]:=h; endfor + for j=1 upto length(s): + nA:=ASCII(substring(j-1,j) of s); tbl_char_wd[nA]:=w; tbl_char_ht[nA]:=h; + endfor enddef; %------------------------------------------------------------------------------------------------- char_size_set( 1, 1)("CGHMNOQW"); @@ -1099,7 +1129,7 @@ def draw_char(expr s,p)= aW:=atom_wd*tbl_char_wd[ASCII(s)]*(1-2ratio_atomgap_atom); aH:=atom_wd*tbl_char_ht[ASCII(s)]*(1-2ratio_atomgap_atom); cpos:=p-(aW/2,atom_wd/2*(1-2ratio_atomgap_atom)); - fP:=bond_pen_wd*ratio_char_bond; + fP:=atom_wd*ratio_char_atom; hP:=fP/2; qP:=fP/4; fW:=aW-hP; hW:=aW/2; fH:=aH-hP; hH:=aH/2; qH:=aH/4; %----------------------------------------------------------------------------------------------- pickup pencircle scaled fP; @@ -1108,12 +1138,13 @@ def draw_char(expr s,p)= ef s="O": dw circ_O; ef s="N": dwv Z_b--Z_w; dwv Z_e--Z_t; dwvs(1.4)(1.4hP,aH)--(aW-1.4hP,0); ef s="S": cdw sbp(.05,.45)circ_O; cdw sbp(.55,.95)circ_O; dw (fW,.3aH){up}..{up}(hP,.7aH); - ef s="F": dwh Z_q--Z_u; dwh (0,.45aH)--(fW,.45aH); dw Z_b--Z_r; + ef s="F": dwh Z_q--Z_u; dwh (.1hP,.48aH)--(fW-hP,.48aH); dwv Z_b--Z_r; ef s="P": dwv Z_b--Z_w; dw Z_r--(.65aW,fH){right}..(fW,.7aH)..{left}(.65aW,.44aH)..(hP,.44aH); ef s="I": dwv Z_x--Z_s; dwh (hW-fP,hP)--(hW+fP,hP); dwh (hW-fP,fH)--(hW+fP,fH); ef s="l": dwv Z_g--Z_f; dwh Z_s--Z_r; dwh Z_x--Z_z; ef s="2": cdw (hP,1.3hP)..(.4fW,.35fH)..(fW,.65aH)..Z_s..(hP,.65aH); dwh Z_d--Z_a; - ef s="3": cdw sbp(0,.75)circ_Oh; cdw sbp(.25,.98)circ_Oh shifted (0,hH-hP); dwh (.3aW,hH)--Z_y; + ef s="3": cdw sbp(0,.75)circ_Oh; cdw sbp(.25,.95)circ_Oh shifted (0,hH-hP); + dwh (.3aW,hH)--(.7aW,hH); ef s="4": dwh Z_j--Z_k; dwv Z_l--(0.75aW,aH)--(1.2hP,qH+hP); dwv (.75aW+qP,aH)--(1.7hP,qH+hP); ef s="-": dwh Z_m--Z_o; ef s="+": dwv Z_x--Z_s; dwh Z_m--Z_o; @@ -1165,8 +1196,8 @@ def draw_char(expr s,p)= ef s="z": dwh Z_q--Z_u; dwvs(1.4)(1.4hP,fP)--(aW-1.4hP,aH-fP); dwh Z_a--Z_d; ef s="0": dw Z_m...Z_s...Z_o...Z_x...cycle; ef s="1": dwv Z_g--(hW,aH-.3hP)--(hW-fP,aH-fP)--(hW-fP,aH-1.5fP); - ef s="5": dwh Z_q--Z_u; dwv Z_r--(hP,.55fH); - cdw (qP,.18aH)..(.65aW,1.3hP)..(fW,.4aH)..(hW,.63aH)..(.7hP,.56aH); + ef s="5": dwh Z_q--Z_u-(hP,0); dwv Z_r--(hP,.55fH); + cdw (qP,.25aH)..(.65aW,1.3hP)..(fW,.4aH)..(hW,.63aH)..(.7hP,.56aH); ef s="6": dw Z_x..(fW,.5fW)..Z_i..(hP,.5fW)..cycle; cdw (.8fP,hH)--Z_f; ef s="7": dwh (0,.fH)--Z_u; dwvs(1.2)(aW-1.2hP,aH-fP)--(.4aW,0); ef s="8": dw circ_Oh; dw (hP,.75aH)...Z_s...(fW,.75aH)...Z_y...cycle; @@ -1175,29 +1206,37 @@ def draw_char(expr s,p)= fi enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -def warning_bond(expr a)= +def warn_valence(expr a)= if addA[a]=0: - warning("A"&decimal(a)&" ( "&fsl(8)(str_tbl[strA[a]])&") has"&fdr(2)(bond_cntA)&" bonds"); + warning_s[incr warning_cnt]:="!Strange valence "&str_tbl[strA[a]]&"(A"&decimal(a)&") has"& + fdr(2)(bond_cntA)&" bonds"; + message "["&decimal(fig_num)&"]"&warning_s[warning_cnt]; message ""; fi enddef; %------------------------------------------------------------------------------------------------- vardef erase_char(expr s)= - sS:=""; - if (length(s)>=4)and(s<>"COOH"): - for i=1 upto length(s): sC:=subc(i,s); if scan_c(sC,"{}_^+")=0: sS:=sS&sC; fi endfor sS + temps:=""; nA:=length(s); + if (nA>=4)and(s<>"COOH"): + for i=1 upto nA: + tempc:=substring(i-1,i) of s; + if scan_c(tempc,"{}_^+")=0: temps:=temps&tempc; fi + endfor + temps else: s fi enddef; %------------------------------------------------------------------------------------------------- -vardef forbidden_to_underbar(expr t)= sS:=""; - for i=1 upto length(t): - sC:=subc(i,t); if scan_c(sC,forbiddens)>0: sS:=sS&"_"; else: sS:=sS&sC; fi +vardef forbidden_to_underbar(expr s)= + temps:=""; nA:=length(s); + for i=1 upto nA: + tempc:=substring(i-1,i) of s; + if scan_c(tempc,forbiddens)>0: temps:=temps&"_"; else: temps:=temps&tempc; fi endfor - sS + temps enddef; %================================================================================================= def proc_calc(expr n)= - MW_n:=MI_n:=tbl_atom_max:=warning_cnt:=hideH_cnt:=0; nE:=pcode_emb_start; + MW_n:=MI_n:=tbl_atom_max:=warning_cnt:=hideH_cnt:=0; nA:=pcode_emb_start; for i=1 upto tbl_atom_end: sumA[i]:=0; endfor for i=1 upto cntA: knownA:=bond_cntA:=0; nS:=strA[i]; @@ -1206,23 +1245,23 @@ def proc_calc(expr n)= if (sB[j]=i)or(eB[j]=i): bond_cntA:=bond_cntA+bond_num[j]; fi endfor Bcnt[i]:=bond_cntA; - if ((nS=0)or(nS=(C-nE)))and(bond_cntA<4): + if ((nS=0)or(nS=(C-nA)))and(bond_cntA<4): hideH[i]:=4-bond_cntA; hideH_cnt:=hideH_cnt+hideH[i]; else: hideH[i]:=0; fi - if nS=0: if bond_cntA>4: warning_bond(i) fi - ef nS=(O-nE): if bond_cntA<>2: warning_bond(i) fi - ef nS=(N-nE): if (bond_cntA<>3)and(bond_cntA<>5): warning_bond(i) fi - ef nS=(S-nE): if (bond_cntA<>2)and(bond_cntA<>4)and(bond_cntA<>6): warning_bond(i) fi - ef nS=(H-nE): if bond_cntA<>1: warning_bond(i) fi - ef nS=(OH-nE): if bond_cntA<>1: warning_bond(i) fi - ef nS=(COOH-nE): if bond_cntA<>1: warning_bond(i) fi - ef nS=(NH2-nE): if bond_cntA<>1: warning_bond(i) fi - ef nS=(CN-nE): if bond_cntA<>1: warning_bond(i) fi - ef nS=(P-nE): if bond_cntA<>5: warning_bond(i) fi - ef nS=(C-nE): if bond_cntA>4: warning_bond(i) fi - ef nS=(F-nE): if bond_cntA<>1: warning_bond(i) fi - ef nS=(Cl-nE): if bond_cntA<>1: warning_bond(i) fi - ef nS=(Br-nE): if bond_cntA<>1: warning_bond(i) fi + if nS=0: if bond_cntA>4: warn_valence(i) fi + ef nS=(O-nA): if bond_cntA<>2: warn_valence(i) fi + ef nS=(N-nA): if (bond_cntA<>3)and(bond_cntA<>5): warn_valence(i) fi + ef nS=(S-nA): if (bond_cntA<>2)and(bond_cntA<>4)and(bond_cntA<>6): warn_valence(i) fi + ef nS=(H-nA): if bond_cntA<>1: warn_valence(i) fi + ef nS=(OH-nA): if bond_cntA<>1: warn_valence(i) fi + ef nS=(COOH-nA): if bond_cntA<>1: warn_valence(i) fi + ef nS=(NH2-nA): if bond_cntA<>1: warn_valence(i) fi + ef nS=(CN-nA): if bond_cntA<>1: warn_valence(i) fi + ef nS=(P-nA): if bond_cntA<>5: warn_valence(i) fi + ef nS=(C-nA): if bond_cntA>4: warn_valence(i) fi + ef nS=(F-nA): if bond_cntA<>1: warn_valence(i) fi + ef nS=(Cl-nA): if bond_cntA<>1: warn_valence(i) fi + ef nS=(Br-nA): if bond_cntA<>1: warn_valence(i) fi fi for j=1 upto tbl_group_end: if str_tbl[nS]=tbl_atom_str[j]: @@ -1237,7 +1276,7 @@ def proc_calc(expr n)= fi exitif knownA=1; endfor - if knownA=0: warning(" Unknown Str("&str_tbl[strA[i]]&") is used "&decimal(i)); fi + if knownA=0: message " Unknown Str("&str_tbl[strA[i]]&") is used "&decimal(i); fi endfor %------------------------------------------------------------------------------------- sumA[2]:=sumA[2]+hideH_cnt; if (tbl_atom_max=1)and(sumA[2]>0): tbl_atom_max:=2; fi @@ -1251,56 +1290,58 @@ def proc_calc(expr n)= enddef; %================================================================================================= def proc_report_out= + block_cnt_s:=split_str(mc,",")(block_s); file_output:=jobname&"-report.txt"; - printf "==========================================================================="; - printf " No["&decimal(fig_num)&"],Name<"& EN&">,Category<"&CAT&">,File<"&file_input&">"; - printf "---------------------------------------------------------------------------"; - for i=1 upto mc_row: printf (substring(0,mc_indent[i]) of blanks)&mc[i]; endfor - printf "---------------------------------------------------------------------------"; - printf " Row["&decimal(mc_row)&"],Length["&decimal(length(mc))&"],Block"& - "["&decimal(block_cnt+1)&"]"&",Code pair["&decimal(pcode_cnt[0])& - "],Warning["&decimal(warning_cnt)&"]"; - printf "---------------------------------------------------------------------------"; - printf "" for i=EQU,CLN,QES,AMK,AMP,HSH,GTN,BAR,QUT,TLD,HAT,BQT,LTN: - if tbl_asc[i]>=1: &" "&char(i)&"["&decimal(tbl_asc[i])&"]" fi - endfor ; - printf "---------------------------------------------------------------------------"; - printf " Width["&fdr(8)(mol_wd)&"],Height["&fdr(8)(mol_ht)&"],"& + puts "==========================================================================="; + puts " No["&decimal(fig_num)&"],Name<"& EN&">,Category<"&CAT&">,File<"&file_input&">"; + puts "---------------------------------------------------------------------------"; + puts " Row["&decimal(mc_row)&"],Length["&decimal(length(mc))&"],Block"& + "["&decimal(block_cnt_s)&"]"&",BackboneA["&decimal(backboneA)&"]"& + ",BackboneB["&decimal(backboneB)&"]"&",Group["&decimal(group_num)&"]"; + puts "---------------------------------------------------------------------------"; + for i=1 upto mc_row: puts (substring(0,mc_indent[i]) of blanks)&mc[i]; endfor + puts "---------------------------------------------------------------------------"; + for i=1 upto block_cnt_s: puts "["&fdl(3)(i)&"] "&block_s[i]; endfor + puts "- unknown and warning -----------------------------------------------------"; + for i=1 upto unknown_cnt: puts unknown_s[i]; endfor + for i=1 upto warning_cnt: puts warning_s[i]; endfor + puts "---------------------------------------------------------------------------"; + puts " Width["&fdr(8)(mol_wd)&"],Height["&fdr(8)(mol_ht)&"],"& " Shift x["& fdr(8)(minX)&"],Shift y["&fdr(8)(minY)&"]"; - printf " Bond length["&fdr(8)(blen)&"],Atom size["&fdr(8)(atom_wd)&"]"; - printf "---------------------------------------------------------------------------"; - printf " Atom["&decimal(cntA)&"],Bond["&decimal(cntB)& + puts " Bond length["&fdr(8)(blen)&"],Atom size["&fdr(8)(atom_wd)&"]"; + puts "---------------------------------------------------------------------------"; + puts " Atom["&decimal(cntA)&"],Bond["&decimal(cntB)& "],Ring["&decimal(cntB-cntA+1)&"],Hide H["&decimal(hideH_cnt)&"]"; - printf "< NO. ><atom(s) >( x axis , y axis )<bond><hideH><chg>"; + puts "< NO. ><atom(s) >( x axis , y axis )<bond><hideH><chg>"; for i=1 upto cntA: - printf " A"&fdl(6)(i)&fsl(8)(erase_char(str_tbl[strA[i]]))& + puts " A"&fdl(6)(i)&fsl(8)(erase_char(str_tbl[strA[i]]))& " ("&fdr(10)(round(xpart(posA[i])/blen))&" , "& fdr(10)(round(ypart(posA[i])/blen))&" ) "&fdr(4)(Bcnt[i])& iif(hideH[i]>0,fdr(6)(hideH[i])," ") if chargeA[i]<>0: &fdr(4)(chargeA[i]) fi; endfor - printf "---------------------------------------------------------------------------"; - printf "< NO. >< bond (sdt)><angle +( +- )><length ( pt )>"; + puts "---------------------------------------------------------------------------"; + puts "< NO. >< bond (sdt)><angle +( +- )><length ( pt )>"; for i=1 upto cntB: nC:=lenB[i]; if nC=_size_atom: nC:=ratio_atom_bond; elseif nC<0: nC:=-nC; fi nB:=angB[i]; if nB>180: nB:=nB-360; fi - printf " B"&fdl(4)(i)&fdr(3)(sB[i])&" -> "&fdr(3)(eB[i])& + puts " B"&fdl(4)(i)&fdr(3)(sB[i])&" -> "&fdr(3)(eB[i])& " ("&fdr(3)(bond_num[i])&")"&fdr(8)(round(angB[i]))& " ("&fdr(6)(round(nB))&")"&fdr(8)(nC)&" ("&fdr(8)(round(nC*blen))&")"; endfor - printf "---------------------------------------------------------------------------"; - printf "<atom>( atom wt )[ mi wt ] < cnt > < sum wt >[ sum mi wt ]"; + puts "---------------------------------------------------------------------------"; + puts "<atom>( atom wt )[ mi wt ] < cnt > < sum wt >[ sum mi wt ]"; for i=1 upto tbl_atom_max: if sumA[i]>=1: - printf " "&fsl(5)(erase_char(tbl_atom_str[i]))& + puts " "&fsl(5)(erase_char(tbl_atom_str[i]))& "("&fdr(9)(tbl_atom_wt[i])&")"&"["&fdr(9)(tbl_atom_mi[i])&"]"&" * "&fdr(8)(sumA[i]) &" "&fdr(7)(tbl_atom_wt[i]*sumA[i])&"["&fdr(12)(tbl_atom_mi[i]*sumA[i])&"]"; fi endfor - printf " Molecular Weight [Mono Isotopic] = "&fsr(12)(mw)&"["&fsr(12)(MI)&"]"; - printf "---------------------------------------------------------------------------"; - printf " Weight Calc: "&mw if MW<>"-": &" - Input: "&MW&" = "&fdr(9)(MW_n-scantokens(MW)) fi; - printf " Fomula Calc: "&fm if FM<>"-": &" "&iif(fm=FM,"=","<>")&" Input: "&FM fi; - printf "==========================================================================="; + puts " Molecular Weight [Mono Isotopic] = "&fsr(12)(mw)&"["&fsr(12)(MI)&"]"; + puts "---------------------------------------------------------------------------"; + puts " Weight Calc: "&mw if MW<>"-": &" - Input: "&MW&" = "&fdr(9)(MW_n-scantokens(MW)) fi; + puts " Fomula Calc: "&fm if FM<>"-": &" "&iif(fm=FM,"=","<>")&" Data: "&FM fi; + puts "==========================================================================="; enddef; %================================================================================================= def proc_mol_out(expr n)= @@ -1308,54 +1349,54 @@ def proc_mol_out(expr n)= file_output:="m"&fit_zero(fig_num)&"-"&EN_&".mol"; %-V2000--------------------------------------------------------------------------------------- if n=2000: - printf ""; printf " -MCFtoMOL- "&fsl(20)(EN); printf ""; - printf fdr(3)(cntA)&fdr(3)(cntB)&" 0 0 0 0 0 0 0 0999 V2000"; + puts ""; puts " -MCFtoMOL- "&fsl(20)(EN); puts ""; + puts fdr(3)(cntA)&fdr(3)(cntB)&" 0 0 0 0 0 0 0 0999 V2000"; for i=1 upto cntA: - printf fdr(10)(xpart(posA[i])/blen)& fdr(10)(ypart(posA[i])/blen)&fdr(10)(0)&" "& + puts fdr(10)(xpart(posA[i])/blen)& fdr(10)(ypart(posA[i])/blen)&fdr(10)(0)&" "& fsl(2)(erase_char(str_tbl[strA[i]]))&" 0"&fdr(3)(bond_charge(chargeA[i]))&" 0 0"; endfor for i=1 upto cntB: - if lineB[i]<>0: printf fdr(3)(sB[i])&fdr(3)(eB[i])&fdr(3)(bond_type(lineB[i]))& + if lineB[i]<>0: puts fdr(3)(sB[i])&fdr(3)(eB[i])&fdr(3)(bond_type(lineB[i]))& fdr(3)(bond_stereo(lineB[i]))&" 0 0"; fi endfor - printf "M END"; + puts "M END"; %-V3000--------------------------------------------------------------------------------------- elseif n=3000: - printf ""; printf " -MCFtoMOL- "&fsl(20)(EN); printf ""; - printf " 0 0 0 0 0 0 0 0 0 0 0 V3000"; - printf "M V30 BEGIN CTAB"; - printf "M V30 COUNTS "&decimal(cntA)&" "&decimal(cntB)&" 0 0 0"; - printf "M V30 BEGIN ATOM"; + puts ""; puts " -MCFtoMOL- "&fsl(20)(EN); puts ""; + puts " 0 0 0 0 0 0 0 0 0 0 0 V3000"; + puts "M V30 BEGIN CTAB"; + puts "M V30 COUNTS "&decimal(cntA)&" "&decimal(cntB)&" 0 0 0"; + puts "M V30 BEGIN ATOM"; for i=1 upto cntA: - printf "M V30 "&decimal(i)&" "&erase_char(str_tbl[strA[i]])&" "& + puts "M V30 "&decimal(i)&" "&erase_char(str_tbl[strA[i]])&" "& decimal(xpart(posA[i])/blen)&" "&decimal(ypart(posA[i])/blen)&" 0 0" if chargeA[i]<>0: &" CHG="&decimal(chargeA[i]) fi; endfor - printf "M V30 END ATOM"; printf "M V30 BEGIN BOND"; + puts "M V30 END ATOM"; puts "M V30 BEGIN BOND"; for i=1 upto cntB: if lineB[i]<>0: - printf "M V30 "&decimal(i)&" "&decimal(bond_type(lineB[i]))& + puts "M V30 "&decimal(i)&" "&decimal(bond_type(lineB[i]))& " "&decimal(sB[i])&" "&decimal(eB[i]) if bond_stereo(lineB[i])<>0: &" CFG="&decimal(bond_config(lineB[i])) fi; fi endfor - printf "M V30 END BOND"; printf "M V30 END CTAB"; printf "M END"; fi + puts "M V30 END BOND"; puts "M V30 END CTAB"; puts "M END"; fi enddef; %================================================================================================= def proc_mc_out= file_output:="temp-mc.aux"; if mc_length<100: - nN:=split_str(mc,",")(arg_s); nA:=0; temps:=""; - for i=1 upto nN: - if i=nN: temps:=temps&arg_s[i]; printf temps; - ef at_char[i+1]-nA>mc_length: nA:=at_char[i]; printf temps&arg_s[i]&","; temps:=""; + nB:=split_str(mc,",")(arg_s); nA:=0; temps:=""; + for i=1 upto nB: + if i=nB: temps:=temps&arg_s[i]; puts temps; + ef at_char[i+1]-nA>mc_length: nA:=at_char[i]; puts temps&arg_s[i]&","; temps:=""; else: temps:=temps&arg_s[i]&","; fi endfor - else: for i=1 upto mc_row: printf (substring(0,mc_indent[i]) of blanks)&mc[i]; endfor + else: for i=1 upto mc_row: puts (substring(0,mc_indent[i]) of blanks)&mc[i]; endfor fi - printf EOF; + puts EOF; enddef; %================================================================================================= vardef fit_zero(expr n)= if n<=9: "00" ef n<=99: "0" else: "" fi &decimal(n) enddef; @@ -1416,7 +1457,13 @@ def define_atom_group_parts= NO_ATOM:=`("",0,0); tbl_atom_end:=tbl_cnt; %----------------------------------------------------------------------------------------------- - if sw_expand=0: + !:=!1:='((_mk_bond,_arrange_ang)); + if sw_expand=1: + CH3:='(/H,/H^60,/H^-60); NH:='(N,/H); NH2:='(N,/H^60,/H^-60); NO2:='(N,//O^60,//O^-60); + OH:='(O,!,H); NO:='(N,//O); CONH2:='(//O,!,NH2); SH:='(S,!,H); SO2H:='(S,//O^60,/OH^-60); + SO3H:='(S,/OH,//O^60,//O^-60); CHO:='(//O^-60,/H^60); COOH:='(//O^-60,/OH^60); CN:='(!~tm,N); + ONa:='(O,!,Na); SO3Na:='(S,/ONa,//O^60,//O^-60); + else: CH3:=``("C{H_3_}")(C,H,H,H); CH2:=``("C{H_3_}")(C,H,H); CN:=``("CN")(C,N); OH:=``("OH")(O,H); COOH:=``("COOH")(C,O,O,H); COONa:=``("COO{Na}")(C,O,O,Na); CHO:=``("CHO")(C,H,O); NO:=``("NO")(N,O); NO2:=``("N{O_2_}")(N,O,O); NH2:=``("N{H_2_}")(N,H,H); @@ -1426,38 +1473,29 @@ def define_atom_group_parts= %----------------------------------------------------------------------------------------------- tbl_group_end:=tbl_cnt; pcode_atm_end:=pcode_num; ?:='((_group_si,NO_ATOM)); ?wf:=?w:='((_group_wf,NO_ATOM)); ?zf:=?z:='((_group_zf,NO_ATOM)); - ?O:='((_group_dm,O)); NH:='(N,/H~nl); ?NH:='((_group_dm,NH)); + ?dm:=?d:='((_group_dm,NO_ATOM)); ?O:='((_group_dm,O)); ?S:='((_group_dm,S)); NH:='(N,/H~nl); + ?NH:='((_group_dm,NH)); %----------------------------------------------------------------------------------------------- ?H:='(/H); ?F:='(/F); ?Cl:='(/Cl); ?OH:='(/OH); ?OH:='(/COOH); ?NH2:='(/NH2); for i=3 upto 20: ?[i]:='((_com,_len_ss),(_get_len,_ring_len),<((-180 DIV i)-90) for j==2 upto i:: ,(360 DIV i) endfor,(_cyc_sB,1-i),(_com,_len_ee)); endfor Ph:=Ph1:='(?6,-2=dl,-4=dl,-6=dl); Ph2:='(?6,-1=dl,-3=dl,-5=dl); - for i=5,6: for j=11 upto 15: ?[i][j]:='((i,j)); endfor endfor %----------------------------------------------------------------------------------------------- - !:=!1:='((_mk_bond,_arrange_ang)); !db:=!d:='(!~db); !tm:=!t:='(!~tm); !wf:=!w:='(!~wf); - !zf:=!z:='(!~zf); !wb:='(!~wb); !zb:='(!~zb); !dl:='(!~dl); !dr:='(!~dr); !dm:='(!~dm); + !db:=!d:='(!~db); !tm:=!t:='(!~tm); !wf:=!w:='(!~wf); !zf:=!z:='(!~zf); !wb:='(!~wb); + !zb:='(!~zb); !dl:='(!~dl); !dr:='(!~dr); !dm:='(!~dm); for i==2 upto 20: ![i]:='((_com,_len_ss),(_get_len,_tmp_len),! for j==2 upto i::,! endfor ,(_com,_len_ee)); endfor - ?!:='(/_,!); ?!d:='(/_,!d); ?!2:='(/_,!2); ??!:='(/_,/_^60,60); ??:='(/_^35,/_^-35); - !?:='(!,/_); !?!:='(!?,!); !??!:='(!,??,!); ?2:='(/!); !?2:='(!,?2); ?2!:='(?2,!); + ?!:='(?,!); ?!d:='(?,!d); ?!2:='(?,!2); ??!:='(?,?^60,60); ??:='(?^35,?^-35); + !?:='(!,?); !?!:='(!?,!); !??!:='(!,??,!); ?2:='(/!); !?2:='(!,?2); ?2!:='(?2,!); n_:='((_set_add,MIS)); p_:='((_set_add,PLS)); - zero_wf:='(0~wf); zero_zf:='(0~zf); zero_dm:='(0~dm); zero_wv:='(0~wv); mark_adress:='((_com,_mark)); reset_adress:='((_com,_moff)); reset_length:='((_com,_len_e)); %----------------------------------------------------------------------------------------------- - if sw_expand=1: - CH3:='(/H,/H^60,/H^-60); NH:='(N,/H); NH2:='(N,/H^60,/H^-60); NO2:='(N,//O^60,//O^-60); - OH:='(O,!,H); NO:='(N,//O); CONH2:='(//O,!,NH2); SH:='(S,!,H); SO2H:='(S,//O^60,/OH^-60); - SO3H:='(S,/OH,//O^60,//O^-60); CHO:='(//O^-60,/H^60); COOH:='(//O^-60,/OH^60); CN:='(!~tm,N); - ONa:='(O,!,Na); SO3Na:='(S,/ONa,//O^60,//O^-60); - fi - %----------------------------------------------------------------------------------------------- - ?F!F:='(/F,60,F); ?Cl!Cl:='(/Cl,60,Cl); ?Br!Br:='(/Br,60,Br); ?F?F!F:='(/F,/F^60,60,F); + ?F!F:='(/F,60,F); ?F?F!F:='(/F,/F^60,60,F); ?Br!Br:='(/Br,60,Br); ?Cl!Cl:='(/Cl,60,Cl); ?Cl?Cl!Cl:='(/Cl,/Cl^60,60,Cl); %----------------------------------------------------------------------------------------------- - N!:='(N,!); N?:='(N,/_); N!2:='(N,!3); N!2:='(N,!3); !N:='(!,N); - N?!:='(N,?!); N?2:='(N,?2); N?2!:='(N?2,!); N?!2:='(N,?!2); + N!:='(N,!); N?:='(N,?); N!2:='(N,!3); N!2:='(N,!3); !N:='(!,N); N?!:='(N,?!); N?2:='(N,?2); S?O:='(S,?O); S?O!:='(S?O,!); ?O?O:='(?O^-35,?O^35); S?O?O:='(S,?O?O); S?O?O!:='(S?O?O,!); O!:='(O,!); O!2:='(O,!2); O!3:='(O,!3); S!:='(S,!); S!2:='(S,!2); S!3:='(S,!3); %----------------------------------------------------------------------------------------------- @@ -1465,10 +1503,8 @@ def define_atom_group_parts= NH!:='(NH,!); NH!2:='(NH,!2); !NH:='(!,NH); !NH!:='(!,NH!); %----------------------------------------------------------------------------------------------- !OH:='(!,OH); !SH:='(!,SH); !NH2:='(!,NH2); !S?O:='(!,S?O); !O:='(!,O); !dO:='(!d,O); - !O!:='(!,O!); !O!2:='(!,O!2); !O!3:='(!,O!3); !S!:='(!,S!); !S!2:='(!,S!2); !S!3:='(!,S!3); + !Cl:='(!,Cl); !Br:='(!,Br); !F:='(!,F); !O!:='(!,O!); !S!:='(!,S!); !COOH:='(!,COOH); ?COOH:='(/COOH); !CH3:='(!,CH3); !CN:='(!,CN); !CHO:='(!,CHO); !NO2:='(!,NO2); - !Cl:='(!,Cl); !Br:='(!,Br); !F:='(!,F); !?F!F:='(!,?F!F); !?Cl!Cl:='(!,?Cl!Cl); - !?F?F!F:='(!,?F?F!F); !?Cl?Cl!Cl:='(!,?Cl?Cl!Cl); !?3:='(!,?3); !?4:='(!,?4); !?5:='(!,?5); !?6:='(!,?6); !?7:='(!,?7); !?8:='(!,?8); !Ph:='(!,Ph); !?OH:='(!,?OH); ?OH!:='(?OH,!); %----------------------------------------------------------------------------------------------- @@ -1488,25 +1524,27 @@ message "pcode_emb =" & decimal(pcode_emb_start) &" => " & decimal(pcode_num) & message "pcode_emi =" & decimal(pcode_emi_start) &" => " & decimal(pcode_int); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% vardef checkm(expr s)= - save mc_char,mc_adr,mc_asc,char_cnt,lens,f_depth; - string err_type[]; + save mc_char,mc_adr,mc_asc,err_type,char_cnt,lens,f_exit; numeric mc_char[],mc_asc[],mc_adr[]; - err_cnt:=char_cnt:=block_cnt:=f_depth:=0; nA:=1; lens:=length(s); - err_type[0]:="no mc-row "; err_type[1]:="mismatch () "; err_type[2]:="mismatch {} "; - err_type[3]:="mismatch [] "; err_type[4]:="missing arg "; err_type[5]:="extra arg "; + %--------------------------------------------------------------------------------------------- + string err_type[]; + err_cnt:=char_cnt:=0; nA:=1; lens:=length(s); + err_type[0]:="Error no mc-row "; err_type[1]:="Error mismatch ()"; + err_type[2]:="Error mismatch {}"; err_type[4]:="Error missing arg"; + err_type[5]:="Error extra arg "; %--------------------------------------------------------------------------------------------- if mc_row>=1: for i=1 upto 128: tbl_asc[i]:=0; endfor - for i=1 upto lens: mc_char[i]:=ASCII(subc(i,s)); endfor + for i=1 upto lens: mc_char[i]:=ASCII(substring(i-1,i) of s); endfor forever: - temps:=substring (nA-1,nA) of s; - if (temps<>",")and(temps<>" "): nF:=0; - for j=1 upto rw_cnt: nC:=lenw[j]-1; + tempc:=substring (nA-1,nA) of s; + if (tempc<>",")and(tempc<>" "): f_exit:=0; + for j=1 upto rw_cnt: + nC:=lenw[j]-1; if substring (nA-1,nA+nC) of s=rw[j]: - for k=1 upto nC: mc_char[nA]:=j; mc_char[nA+k]:=BLK; endfor - nF:=1; nA:=nA+nC; + for k=1 upto nC: mc_char[nA]:=j; mc_char[nA+k]:=BLK; endfor nA:=nA+nC; f_exit:=1; fi - exitif nF=1; + exitif f_exit=1; endfor fi nA:=nA+1; exitif nA>=lens; @@ -1518,21 +1556,19 @@ vardef checkm(expr s)= %-- argument check ------------------------------------------------------------------------- for i=1 upto char_cnt: nA:=mc_asc[i-1]; nB:=mc_asc[i]; nC:=mc_asc[i+1]; tbl_asc[nB]:=tbl_asc[nB]+1; - if nB=CMA: if f_depth=0: block_cnt:=block_cnt+1; fi - ef (nB=EQU)or(nB=CLN)or(nB=HAT)or(nB=BQT)or(nB=TLD)or(nB=LTN): % =,:,^,`,~,> - if (nA=CMA)or(nC=CMA): proc_err(4,i) fi - ef (nB=AMK)or(nB=AMP)or(nB=GTN)or(nB=HSH): % @,&,<,# - if nA<>CMA: proc_err(5,nB) fi if nC=CMA: proc_err(4,i) fi - ef (nB=SLS)or((nB>=7)and(nB<=11)): % /,*/*,//,/*,*/,** - if (nA<>CMA)and(nA<>CLN)and(nA<>PRS): proc_err(5,i) fi - if (nC=CMA): proc_err(4,i) fi + if (nB=EQU)or(nB=CLN)or(nB=HAT)or(nB=BQT)or(nB=TLD)or(nB=LTN)or(nB=QUT): % =,:,^,`,~,>,' + if (nA=CMA)or(nC=CMA)or(nA=QUT)or(nC=QUT): proc_err(4,i) fi + ef (nB=AMK)or(nB=AMP)or(nB=GTN): % @,&,<,$ + if nA<>CMA: proc_err(5,nB) fi if (nC=CMA)or(nC=QUT): proc_err(4,i) fi + ef (nB=SLS)or((nB>=1)and(nB<=5)): + if (nA<>CMA)and(nA<>CLN)and(nA<>PRS): proc_err(5,i) fi % /,*/*,//,/*,*/,** + if (nC=CMA)or(nC=QUT): proc_err(4,i) fi + ef nB=DOL: if (nC=QUT)or(nC=CMA): proc_err(4,i) fi fi - if (nB=PRS)or(nB=BRS): f_depth:=f_depth+1; ef (nB=PRE)or(nB=BRE): f_depth:=f_depth-1; fi endfor %-- brackets balance check ----------------------------------------------------------------- if tbl_asc[PRS]<>tbl_asc[PRE]: proc_err(1,0) fi % mismatch () if tbl_asc[BRS]<>tbl_asc[BRE]: proc_err(2,0) fi % mismatch {} - if tbl_asc[BKS]<>tbl_asc[BKE]: proc_err(3,0) fi % mismatch [] else: proc_err(0,0) fi %--------------------------------------------------------------------------------------------- %%%%%%% err_cnt>0: readstring; @@ -1541,26 +1577,25 @@ enddef; %------------------------------------------------------------------------------------------------- def proc_err(expr e,n)= err_cnt:=err_cnt+1; - message "["&decimal(fig_num)&"]:"&err_type[e] + message "["&decimal(fig_num)&"]#"&err_type[e] if n>=1: &"("&fdr(3)(n)&") "&substring(mc_adr[n]-2,mc_adr[n]+3) of mc fi ; enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% def savem(expr s)= file_output:=s; - for i=1 upto ucount: for j=1 upto unit_lines[i]: printf row[i][j]; endfor endfor + for i=1 upto ucount: for j=1 upto unit_lines[i]: puts row[i][j]; endfor endfor closefrom file_output; enddef; %------------------------------------------------------------------------------------------------- def loadm(text s)= begingroup - save f_mcf,f_line,lines,unit_cnt,row_s,row_cnt,semic_cnt,info_cnt,order,min_n,max_n,firstc, - sign_at,sign_n,filter_n,filter_tag,filter_var,filter_sign,filter_cnt,filter_p,lib_unit_cnt, - at_colon,at_equal,at_less,at_greater,at_n,sort_tbl,key_s,sort_s,sign_s,sV,sS,sT,sort_oder, - tag_s,val_s; - string row_s[][],sort_s,sort_tbl[],key_s,filter_tag[],filter_var[],sign_s[],sV,sS,sT,firstc, - tag_s[][],val_s[][]; + save f_mcf,lines,unit_cnt,row_s,row_cnt,info_cnt,order,min_n,max_n,sign_at,sign_n,tag_s, + val_s,filter_n,filter_tag,filter_val,filter_sign,filter_cnt,filter_p,lib_unit_cnt,at_colon, + at_equal,at_less,at_greater,at_n,sort_tbl,key_s,sort_s,sign_s,sV,sT,sort_oder; + string row_s[][],sort_s,sort_tbl[],key_s,filter_tag[],filter_val[],sign_s[],tag_s[][],val_s[][], + sV,sT; numeric row_cnt[],order[],order_tbl[],filter_sign[],filter_p[]; - lines:=f_mcf:=mc_row:=info_cnt:=filter_cnt:=lib_unit_cnt:=0; unit_cnt:=1; + lines:=f_mcf:=mc_row:=info_cnt:=filter_cnt:=lib_unit_cnt:=0; unit_cnt:=1; file_input:=default_library; sign_s1:="="; sign_s2:="<>"; sign_s3:="<"; sign_s4:=">"; sign_s5:="<="; sign_s6:=">="; %----------------------------------------------------------------------------------------------- @@ -1571,27 +1606,36 @@ def loadm(text s)= if at_colon>=2: sign_at:=at_colon; sign_n:=0; at_n:=1; ef at_equal>=2: if (at_equal-1)=at_less: sign_at:=at_equal; sign_n:=5; at_n:=2; ef (at_equal-1)=at_greater: sign_at:=at_equal; sign_n:=6; at_n:=2; - else: sign_at:=at_equal; sign_n:=1; at_n:=1; fi + else: sign_at:=at_equal; sign_n:=1; at_n:=1; + fi ef at_greater>=2: if (at_greater-1)=at_less: sign_at:=at_greater; sign_n:=2; at_n:=2; - else: sign_at:=at_greater; sign_n:=4; at_n:=1; fi - ef at_less>=2: sign_at:=at_less; sign_n:=3; at_n:=1; fi - sT:=substring(0,sign_at-at_n) of list; sV:=substring(sign_at,length(list)) of list; + else: sign_at:=at_greater; sign_n:=4; at_n:=1; + fi + ef at_less>=2: sign_at:=at_less; sign_n:=3; at_n:=1; + fi + sT:=substring(0,sign_at-at_n) of list; + sV:=substring(sign_at,length(list)) of list; %--------------------------------------------------------------------------------------------- if sign_n=0: if sT="f": if scan_c(".",sV)=0: file_input:=sV&".mcf"; else: file_input:=sV; fi ef sT="a": key_s:=sV; sort_oder:=0; - ef sT="d": key_s:=sV; sort_oder:=1; fi + ef sT="d": key_s:=sV; sort_oder:=1; + fi else: - filter_tag[incr filter_cnt]:=sT; filter_sign[filter_cnt]:=sign_n; - if (sign_n>=3)and(is_num(sV)=1): filter_var[filter_cnt]:=fix_num(sV); - else: filter_var[filter_cnt]:=sV; fi + filter_tag[incr filter_cnt]:=sT; + filter_sign[filter_cnt]:=sign_n; + if (sign_n>=3)and(is_num(sV)=1): filter_val[filter_cnt]:=fix_num(sV); + else: filter_val[filter_cnt]:=sV; + fi fi endfor %----------------------------------------------------------------------------------------------- forever: - temps:=readfrom file_input; exitif temps=EOF; firstc:=subc(1,temps); + line_s:=readfrom file_input; + exitif line_s=EOF; + firstc:=substring(0,1) of line_s; if (firstc<>"%")or(sw_comment=1): - row_s[unit_cnt][incr lines]:=temps; + row_s[unit_cnt][incr lines]:=line_s; if firstc=";": row_cnt[unit_cnt]:=lines; f_mcf:=lines:=0; filter_n:=1; for i=1 upto filter_cnt: filter_p[i]:=0; endfor @@ -1603,13 +1647,13 @@ def loadm(text s)= for j=1 upto filter_cnt: if filter_tag[j]=sT: filter_p[j]:=1; - if (filter_sign[j]>=3)and(is_num(sV)=1): temps:=fix_num(sV); else: temps:=sV; fi - if filter_sign[j]=1: if not(temps= filter_var[j]): filter_n:=0; fi - ef filter_sign[j]=2: if not(temps<>filter_var[j]): filter_n:=0; fi - ef filter_sign[j]=3: if not(temps< filter_var[j]): filter_n:=0; fi - ef filter_sign[j]=4: if not(temps> filter_var[j]): filter_n:=0; fi - ef filter_sign[j]=5: if not(temps<=filter_var[j]): filter_n:=0; fi - ef filter_sign[j]=6: if not(temps>=filter_var[j]): filter_n:=0; fi + if (filter_sign[j]>=3)and(is_num(sV)=1): line_s:=fix_num(sV); else: line_s:=sV; fi + if filter_sign[j]=1: if not(line_s= filter_val[j]): filter_n:=0; fi + ef filter_sign[j]=2: if not(line_s<>filter_val[j]): filter_n:=0; fi + ef filter_sign[j]=3: if not(line_s< filter_val[j]): filter_n:=0; fi + ef filter_sign[j]=4: if not(line_s> filter_val[j]): filter_n:=0; fi + ef filter_sign[j]=5: if not(line_s<=filter_val[j]): filter_n:=0; fi + ef filter_sign[j]=6: if not(line_s>=filter_val[j]): filter_n:=0; fi fi fi endfor @@ -1619,7 +1663,8 @@ def loadm(text s)= if filter_n=1: if key_s<>"": sort_tbl[unit_cnt]:=sort_s; fi unit_cnt:=unit_cnt+1; fi ef (firstc=":")or(firstc="="): f_mcf:=1; mc_row:=1; ef (firstc<>"%")or(sw_comment=1): - if f_mcf=1: mc_row:=mc_row+1; else: info[unit_cnt]:=info_cnt:=split_str(temps,";")(arg_s); + if f_mcf=1: mc_row:=mc_row+1; + else: info[unit_cnt]:=info_cnt:=split_str(line_s,";")(arg_s); fi fi fi @@ -1627,10 +1672,10 @@ def loadm(text s)= ucount:=unit_cnt:=unit_cnt-1; %============================================================================================= message "* Input : "&file_input&" ["&decimal(lib_unit_cnt)&"]"; - message "* Output : ucount ["&decimal(ucount)&"]"; + message "* Output : ucount ["&decimal(ucount)&"]"; message ""; if filter_cnt>=1: for i=1 upto filter_cnt: - message "* Filter("&decimal(i)&"): "&filter_tag[i]&" "&sign_s[filter_sign[i]]&filter_var[i]; + message "* Filter("&decimal(i)&"): "&filter_tag[i]&" "&sign_s[filter_sign[i]]&filter_val[i]; endfor if key_s<>"": message "* Sort key : "&key_s&iif(sort_oder=0," (ascending)"," (descending)"); fi @@ -1639,14 +1684,14 @@ def loadm(text s)= if key_s<>"": for i=1 upto unit_cnt: order[i]:=0; endfor for i=1 upto unit_cnt: - if sort_oder=0: temps:="~"; + if sort_oder=0: line_s:="~"; for j=1 upto unit_cnt: - if order[j]=0: if sort_tbl[j]<temps: temps:=sort_tbl[j]; min_n:=j; fi fi + if order[j]=0: if sort_tbl[j]<line_s: line_s:=sort_tbl[j]; min_n:=j; fi fi endfor order[min_n]:=i; order_tbl[i]:=min_n; - ef sort_oder=1: temps:=" "; + ef sort_oder=1: line_s:=" "; for j=1 upto unit_cnt: - if order[j]=0: if sort_tbl[j]>temps: temps:=sort_tbl[j]; max_n:=j; fi fi + if order[j]=0: if sort_tbl[j]>line_s: line_s:=sort_tbl[j]; max_n:=j; fi fi endfor order[max_n]:=i; order_tbl[i]:=max_n; fi @@ -1672,16 +1717,17 @@ def loadm(text s)= enddef; %============================================================================================= vardef fix_num(expr s)= - sS:=s; nN:=scan_c(".",sS); - if nN=0: sS:=fsr(4)(sS); ef nN=1: sS:=" 0"&sS; - ef nN=2: sS:=" "&sS; ef nN=3: sS:=" "&sS; ef nN=4: sS:=" "&sS; + temps:=s; nN:=scan_c(".",temps); + if nN=0: temps:=fsr(4)(temps); ef nN=1: temps:=" 0"&temps; + ef nN=2: temps:=" "&temps; ef nN=3: temps:=" "&temps; ef nN=4: temps:=" "&temps; fi - sS + temps enddef; %------------------------------------------------------------------------------------------------- vardef is_num(expr s)= for i=1 upto length(s): - if ((subc(i,s)>="0")and(subc(i,s)<="9"))or(subc(i,s)="."): nN:=1; else: nN:=0; fi + tempc:=substring(i-1,i) of s; + if ((tempc>="0")and(tempc<="9"))or(tempc="."): nN:=1; else: nN:=0; fi endfor nN enddef; @@ -1689,19 +1735,24 @@ enddef; vardef scan_bit(expr n,b)= if b>=1: odd(floor(n/b)) else: odd(floor((frac n)/b)) fi enddef; %------------------------------------------------------------------------------------------------- vardef scan_char(expr c,s,d,n)= - nN:=0; - if d=0: for i=n upto length(s): if subc(i,s)=c: nN:=i; fi exitif nN>0; endfor - ef d=1: for i=n upto length(s): if subc(i,s)<>c: nN:=i; fi exitif nN>0; endfor - ef d=-1: for i=length(s) downto n: if subc(i,s)<>c: nN:=i; fi exitif nN>0; endfor + nN:=0; nA:=length(s); + if d=0: for i=n upto nA: if substring(i-1,i) of s=c: nN:=i; fi exitif nN>0; endfor + ef d=1: for i=n upto nA: if substring(i-1,i) of s<>c: nN:=i; fi exitif nN>0; endfor + ef d=-1: for i=nA downto n: if substring(i-1,i) of s<>c: nN:=i; fi exitif nN>0; endfor fi nN enddef; %------------------------------------------------------------------------------------------------- -def scan_c(expr c,s)= scan_char(c,s,0,1) enddef; +vardef scan_c(expr c,s)= + nN:=0; nA:=length(s); + for i=1 upto nA: if substring(i-1,i) of s=c: nN:=i; fi exitif nN>0; endfor + nN +enddef; %------------------------------------------------------------------------------------------------- vardef split_str(expr s,c)(suffix v)= - at_char[0]:=nN:=0; for i=1 upto length(s): if subc(i,s)=c: at_char[incr nN]:=i; fi endfor - nN:=nN+1; at_char[nN]:=length(s)+1; + at_char[0]:=nN:=0; nA:=length(s); + for i=1 upto nA: if substring(i-1,i) of s=c: at_char[incr nN]:=i; fi endfor + at_char[incr nN]:=nA+1; for i=1 upto nN: v[i]:=substring (at_char[i-1],at_char[i]-1) of s; endfor nN enddef; diff --git a/Master/texmf-dist/scripts/bib2gls/bib2gls.jar b/Master/texmf-dist/scripts/bib2gls/bib2gls.jar Binary files differindex 6acc98ca791..4ae46e4016f 100755 --- a/Master/texmf-dist/scripts/bib2gls/bib2gls.jar +++ b/Master/texmf-dist/scripts/bib2gls/bib2gls.jar diff --git a/Master/texmf-dist/scripts/bib2gls/bibglscommon.jar b/Master/texmf-dist/scripts/bib2gls/bibglscommon.jar Binary files differindex 95d4e0ad86d..7f21711c1df 100755 --- a/Master/texmf-dist/scripts/bib2gls/bibglscommon.jar +++ b/Master/texmf-dist/scripts/bib2gls/bibglscommon.jar diff --git a/Master/texmf-dist/scripts/bib2gls/convertgls2bib.jar b/Master/texmf-dist/scripts/bib2gls/convertgls2bib.jar Binary files differindex 73108e6bb03..4b1f49d46ea 100755 --- a/Master/texmf-dist/scripts/bib2gls/convertgls2bib.jar +++ b/Master/texmf-dist/scripts/bib2gls/convertgls2bib.jar diff --git a/Master/texmf-dist/scripts/bib2gls/datatool2bib.jar b/Master/texmf-dist/scripts/bib2gls/datatool2bib.jar Binary files differindex 2bd19ca5200..dfc1de2d9c2 100755 --- a/Master/texmf-dist/scripts/bib2gls/datatool2bib.jar +++ b/Master/texmf-dist/scripts/bib2gls/datatool2bib.jar diff --git a/Master/texmf-dist/scripts/bib2gls/resources/bib2gls-en.xml b/Master/texmf-dist/scripts/bib2gls/resources/bib2gls-en.xml index 1d5e08e7c00..3c037118750 100644 --- a/Master/texmf-dist/scripts/bib2gls/resources/bib2gls-en.xml +++ b/Master/texmf-dist/scripts/bib2gls/resources/bib2gls-en.xml @@ -276,6 +276,9 @@ Defaulting to: {0}. <entry key="message.mgls.found">Found mgls ref ''{0}''</entry> <entry key="message.mgls.nonefound">No mgls references found.</entry> <entry key="message.etc"> ETC... </entry> +<entry key="message.omitting.field">Omitting field {0} for entry {1}</entry> +<entry key="message.calculating.omitlist">Calculating field exclusion list for entry {0}</entry> +<entry key="message.adding.omitlist">Adding ''{0}'' to field exclusion list.</entry> <entry key="comment.header">% This file was created by {0} v{1} on {2}.</entry> <entry key="comment.header.no_date">% This file was created by {0} v{1}.</entry> @@ -411,6 +414,7 @@ Aliased entries must be in the same resource set as their target entries with op <entry key="warning.write_forbidden.cwd">Write access forbidden with security setting {0}={1} for path {2} (outside current working directory).</entry> <entry key="warning.write_forbidden.io">Write access forbidden by Java Virtual Machine for file {0}</entry> <entry key="warning.write_forbidden.security_manager">Write access forbidden by Java's Security Manager for file {0}</entry> +<entry key="warning.unknown_field_in_omitlist">Can''t add ''{0}'' to field exclusion list for entry {1}. (Invalid field name.)</entry> <entry key="error.title">Error: {0}</entry> <entry key="error.no_log">File {0} not found. Remember to run LaTeX before {1}. @@ -434,6 +438,8 @@ Have you indexed your entries using commands like \gls?</entry> <entry key="error.missing.aux.new.cs">Missing \{0} in aux file (make sure glossaries-extra.sty is at least {1}).</entry> <entry key="error.only.one.aux">Only one aux file permitted.</entry> <entry key="error.no.aux">Aux file not supplied. {0}</entry> +<entry key="error.no.aux.args_found">Aux file not supplied or an option is missing its argument. +{0}</entry> <entry key="error.file.not.found">File not found: {0}</entry> <entry key="error.cant.parse.file.malformed.input">Can''t parse {0}: may not be {1} encoded. (Try a different encoding with {2} or {3}.)</entry> diff --git a/Master/texmf-dist/scripts/bib2gls/texparserlib.jar b/Master/texmf-dist/scripts/bib2gls/texparserlib.jar Binary files differindex f06dafccc15..21db0d29e60 100755 --- a/Master/texmf-dist/scripts/bib2gls/texparserlib.jar +++ b/Master/texmf-dist/scripts/bib2gls/texparserlib.jar diff --git a/Master/texmf-dist/scripts/tlshell/tlshell.tcl b/Master/texmf-dist/scripts/tlshell/tlshell.tcl index 5d34e2197cc..abfe1dc1922 100755 --- a/Master/texmf-dist/scripts/tlshell/tlshell.tcl +++ b/Master/texmf-dist/scripts/tlshell/tlshell.tcl @@ -1,6 +1,6 @@ #!/usr/bin/env wish -# Copyright 2017-2024 Siep Kroonenberg +# Copyright 2017-2025 Siep Kroonenberg # This file is licensed under the GNU General Public License version 2 # or any later version. @@ -873,7 +873,7 @@ proc splash_loading {} { wm title .loading [__ "Loading"] # wallpaper - pack [ttk::frame .loading.bg -padding 3pt] -fill both -expand 1 + pack [ttk::frame .loading.bg -padding 3p] -fill both -expand 1 set lbl [__ \ "If loading takes too long, press Abort and choose another repository."] @@ -1357,10 +1357,10 @@ proc repository_dialog {} { ### add/remove tlcontrib ### ttk::label .tlr.contribt -text [__ "tlcontrib additional repository"] \ -font bfont - pack .tlr.contribt -in .tlr.bg -anchor w -padx 3pt -pady [list 10pt 3pt] - pack [ttk::label .tlr.contribl] -in .tlr.bg -anchor w -padx 3pt -pady 3pt + pack .tlr.contribt -in .tlr.bg -anchor w -padx 3p -pady [list 10p 3p] + pack [ttk::label .tlr.contribl] -in .tlr.bg -anchor w -padx 3p -pady 3p ttk::checkbutton .tlr.contribb -variable ::toggle_contrib - pack .tlr.contribb -in .tlr.bg -anchor w -padx 3pt -pady [list 3pt 10pt] + pack .tlr.contribb -in .tlr.bg -anchor w -padx 3p -pady [list 3p 10p] set ::toggle_contrib 0 set has_contrib 0 foreach nm [array names ::repos] { @@ -1379,7 +1379,7 @@ proc repository_dialog {} { } # two ways to close the dialog - pack [ttk::frame .tlr.closebuttons] -pady [list 10pt 0pt] -in .tlr.bg -fill x + pack [ttk::frame .tlr.closebuttons] -pady [list 10p 0p] -in .tlr.bg -fill x ttk::button .tlr.save -text [__ "Save and Load"] -command save_load_repo ppack .tlr.save -in .tlr.closebuttons -side right dis_enable_reposave @@ -2787,7 +2787,7 @@ proc populate_main {} { # with the default ttk::frame color, which seems to work # everywhere. pack [ttk::frame .bg] -expand 1 -fill both - .bg configure -padding 5pt + .bg configure -padding 5p # bottom of main window pack [ttk::frame .endbuttons] -in .bg -side bottom -fill x @@ -2820,7 +2820,7 @@ proc populate_main {} { pack [ttk::frame .toprepo] -in .topfl -side top -anchor w # various info (left frame) - pack [ttk::frame .topfll] -in .topfl -side top -anchor nw -pady {6pt 0pt} + pack [ttk::frame .topfll] -in .topfl -side top -anchor nw -pady {6p 0p} ttk::label .topfll.lluptodate -text [__ "TL Manager up to date?"] -anchor w pgrid .topfll.lluptodate -row 2 -column 0 -sticky w ttk::label .topfll.luptodate -text [__ "Unknown"] -anchor w @@ -2844,7 +2844,7 @@ proc populate_main {} { pack [ttk::label .topfr.lshell] -side top -anchor e pack [ttk::separator .sp -orient horizontal] \ - -in .bg -side top -fill x -pady 3pt + -in .bg -side top -fill x -pady 3p # controls frame, between info frame and package list pack [ttk::frame .middle] -in .bg -side top -fill x @@ -2854,17 +2854,17 @@ proc populate_main {} { # package list display options ttk::label .lpack -text [string toupper [__ "Package list"]] \ -font hfont - pack .lpack -in .pkcontrol -side top -padx 3pt -pady {6pt 6pt} -anchor w + pack .lpack -in .pkcontrol -side top -padx 3p -pady {6p 6p} -anchor w - pack [ttk::frame .pkfilter -relief groove -borderwidth 2 -padding 3pt] \ + pack [ttk::frame .pkfilter -relief groove -borderwidth 2 -padding 3p] \ -in .pkcontrol -side top -anchor nw # on my current linux, groove works only with a dimensionless borderwidth # separator columns - grid columnconfigure .pkfilter 1 -minsize 20pt + grid columnconfigure .pkfilter 1 -minsize 20p grid [ttk::separator .pkfilter.sep1 -orient vertical] \ -column 1 -row 0 -rowspan 5 -sticky ns - grid columnconfigure .pkfilter 3 -minsize 20pt + grid columnconfigure .pkfilter 3 -minsize 20p grid [ttk::separator .pkfilter.sep3 -orient vertical] \ -column 3 -row 0 -rowspan 5 -sticky ns @@ -2887,7 +2887,7 @@ proc populate_main {} { if {! $::have_remote} get_packages_info_remote collect_and_display_filtered } - grid .pkfilter.lstat -column 0 -row 0 -sticky w -padx {3pt 50pt} + grid .pkfilter.lstat -column 0 -row 0 -sticky w -padx {3p 50p} pgrid .pkfilter.inst -column 0 -row 1 -sticky w pgrid .pkfilter.notins -column 0 -row 2 -sticky w pgrid .pkfilter.alls -column 0 -row 3 -sticky w @@ -2947,14 +2947,14 @@ proc populate_main {} { # marking all/none pack [ttk::frame .pksel] \ - -in .bg -pady 6pt -side top -fill x + -in .bg -pady 6p -side top -fill x pack [ttk::button .mrk_all -text [__ "Mark all displayed"] \ -command mark_displayed] -in .pksel -side left pack [ttk::button .mrk_none -text [__ "Mark none"] -command unmark_all] \ - -in .pksel -padx 6pt -side left + -in .pksel -padx 6p -side left ttk::label .binwarn \ -text [__ "Only packages for installed platforms are displayed"] - pack .binwarn -in .pksel -padx 3pt -side right -anchor s + pack .binwarn -in .pksel -padx 3p -side right -anchor s # packages list itself pack [ttk::frame .fpkg] -in .bg -side top -fill both -expand 1 diff --git a/Master/texmf-dist/source/generic/tex4ht/ChangeLog b/Master/texmf-dist/source/generic/tex4ht/ChangeLog index f07eae9f822..babba8790b7 100644 --- a/Master/texmf-dist/source/generic/tex4ht/ChangeLog +++ b/Master/texmf-dist/source/generic/tex4ht/ChangeLog @@ -1,3 +1,10 @@ +2025-01-05 Michal Hoftich <michal.h21@gmail.com> + + * tex4ht-mathml.tex (mathml.4ht): don't configure tilde accents in + the MathML output, it removes support for Unicode characters with + tilde. + https://github.com/michal-h21/make4ht/issues/163 + 2024-12-11 Michal Hoftich <michal.h21@gmail.com> * tex4ht-unicode.tex (unicode.4ht): fixed suppport for umlauts and diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-4ht.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-4ht.tex index e7c1d3ace2f..23b2e60f1eb 100644 --- a/Master/texmf-dist/source/generic/tex4ht/tex4ht-4ht.tex +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-4ht.tex @@ -1,7 +1,7 @@ -% $Id: tex4ht-4ht.tex 1615 2024-12-08 22:14:41Z michal_h21 $ +% $Id: tex4ht-4ht.tex 1618 2025-01-05 16:19:50Z karl $ % tex tex4ht-4ht or ht tex tex4ht-4ht % -% Copyright 2009-2024 TeX Users Group +% Copyright 2009-2025 TeX Users Group % Copyright 1996-2009 Eitan M. Gurari % Released under LPPL 1.3c+. % See tex4ht-cpright.tex for license text. @@ -13567,10 +13567,9 @@ A script of the form %%%%%%%%%%%%%%%%%%%%%%%%%% \<splitidx.4ht\><<< -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% splitidx.4ht |version % -% Copyright (C) |CopyYear.2003. Eitan M. Gurari % -|<TeX4ht copyright|> +% splitidx.4ht (|version), generated from |jobname.tex +% Copyright |CopyYear.2003. Eitan M. Gurari +|<TeX4ht copywrite|> |<splitidx configs|> \Hinput{splitidx} \endinput @@ -33302,10 +33301,9 @@ index.sty\EndLink %%%%%%%%%%%%%%%%%%%%%%%%%%% \<multind.4ht\><<< -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% multind.4ht |version % -% Copyright (C) |CopyYear.1999. Eitan M. Gurari % -|<TeX4ht copyright|> +% multind.4ht (|version), generated from |jobname.tex +% Copyright |CopyYear.1999. Eitan M. Gurari +|<TeX4ht copywrite|> |<multind.sty|> \Hinput{multind} diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-mathml.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-mathml.tex index 5201a4f1a15..089998ac2ee 100644 --- a/Master/texmf-dist/source/generic/tex4ht/tex4ht-mathml.tex +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-mathml.tex @@ -1,8 +1,8 @@ -% $Id: tex4ht-mathml.tex 1610 2024-12-04 14:52:13Z michal_h21 $$ +% $Id: tex4ht-mathml.tex 1620 2025-01-05 21:36:18Z karl $$ % compile 3 times: latex tex4ht-mathltx % or xhlatex tex4ht-mathltx "html,3,sections+" % -% Copyright 2009-2024 TeX Users Group +% Copyright 2009-2025 TeX Users Group % Copyright 1999-2009 Eitan M. Gurari % Released under LPPL 1.3c+. % See tex4ht-cpright.tex for license text. @@ -577,7 +577,7 @@ in italic and without space that would separate it from the following element. \<mathml\><<< % mathml.4ht (|version), generated from |jobname.tex -% Copyright 2009-2024 TeX Users Group +% Copyright 2009-2025 TeX Users Group % Copyright |CopyYear.1999. Eitan M. Gurari |<TeX4ht copywrite|> >>> @@ -826,10 +826,12 @@ We reserve code 254 (and 255) for unknown symbols. {} {\HCode{<\a:mathml mover\Hnewline accent="true"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}% \:widetilde:over \HCode{</\a:mathml mover>}} - \Configure{accent}\tilde\tilde{{}{}} - {} - {\HCode{<\a:mathml mover\Hnewline accent="true"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}% - \:tilde:over \HCode{</\a:mathml mover>}} + % this configuration caused problems with text accents. + % we can use Unicode characters with tilde accents instead even in MathML + % \Configure{accent}\tilde\tilde{{}{}} + % {} + % {\HCode{<\a:mathml mover\Hnewline accent="true"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}% + % \:tilde:over \HCode{</\a:mathml mover>}} \Configure{accent}\widehat\widehat{{}{}} {} {\HCode{<\a:mathml mover\Hnewline accent="true"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}% diff --git a/Master/texmf-dist/source/generic/tex4ht/tex4ht-unicode.tex b/Master/texmf-dist/source/generic/tex4ht/tex4ht-unicode.tex index 63edaefe80d..9db6bd1ba0b 100644 --- a/Master/texmf-dist/source/generic/tex4ht/tex4ht-unicode.tex +++ b/Master/texmf-dist/source/generic/tex4ht/tex4ht-unicode.tex @@ -1,7 +1,7 @@ -% $Id: tex4ht-unicode.tex 1616 2024-12-11 13:42:55Z michal_h21 $ +% $Id: tex4ht-unicode.tex 1617 2024-12-15 15:18:36Z karl $ % latex tex4ht-unicode or xhlatex tex4ht-unicode "html,3,sections+" % -% Copyright 2009-2023 TeX Users Group +% Copyright 2009-2024 TeX Users Group % Copyright 1998-2009 Eitan M. Gurari % Released under LPPL 1.3c+. % See tex4ht-cpright.tex for license text. @@ -227,7 +227,7 @@ of \verb'\mathop', \verb'\mathrel',...., for the next parameter. \<unicode\><<< % unicode.4ht (|version), generated from |jobname.tex -% Copyright 2009-2023 TeX Users Group +% Copyright 2009-2024 TeX Users Group % Copyright |CopyYear.1998. Eitan M. Gurari |<TeX4ht copywrite|> >>> diff --git a/Master/texmf-dist/source/latex/acmart/Makefile b/Master/texmf-dist/source/latex/acmart/Makefile index 5d90dbdd577..b8fbc0c1ab0 100644 --- a/Master/texmf-dist/source/latex/acmart/Makefile +++ b/Master/texmf-dist/source/latex/acmart/Makefile @@ -144,7 +144,7 @@ docclean: samples/$(PACKAGE)-tagged.cls \ samples/ACM-Reference-Format.bst \ samples/*.log samples/*.aux samples/*.out \ - samples/*.bbl samples/*.blg samples/*.cut *.toc \ + samples/*.bbl samples/*.blg samples/*.cut samples/*.toc \ samples/acm-jdslogo.png \ samples/*.run.xml samples/*.bcf $(SAMPLEBIBLATEXFILES) diff --git a/Master/texmf-dist/source/latex/acmart/acmart.dtx b/Master/texmf-dist/source/latex/acmart/acmart.dtx index b5cda362361..797f6e0e560 100644 --- a/Master/texmf-dist/source/latex/acmart/acmart.dtx +++ b/Master/texmf-dist/source/latex/acmart/acmart.dtx @@ -1534,7 +1534,7 @@ % % As for the |printonly| and |screenonly| environments, % |\begin{acks}| and |\end{acks}| should start on a -% line of their own with no leading or trailing spaces. +% line of their own with no leading or trailing spaces or comments. % % \DescribeMacro{\grantsponsor}% % \DescribeMacro{\grantnum}% @@ -1567,7 +1567,7 @@ % % The authors would also like to thank the anonymous referees for % their valuable comments and helpful suggestions. This work is -% supported by the \grantsponsor{GS501100001809}{National Natural +% supported by the \grantsponsor{my-grant-GS501100001809}{National Natural % Science Foundation of % China}{https://doi.org/10.13039/501100001809} under Grant % No.:~\grantnum{GS501100001809}{61273304} @@ -2256,7 +2256,7 @@ %</gobble> %<class&!tagged>\ProvidesClass{acmart} %<tagged>\ProvidesClass{acmart-tagged} -[2024/12/07 v2.11 Typesetting articles for the Association for Computing Machinery] +[2024/12/28 v2.12 Typesetting articles for the Association for Computing Machinery] % \end{macrocode} % % \changes{v1.00}{2016/04/14}{First released version} @@ -2958,9 +2958,10 @@ % \end{macrocode} % % \changes{v1.40}{2017/06/05}{Added `textcase' package} -% We need |textcase| for better upcasing +% \changes{v2.12}{2024/12/28}{Removed `textcase' package} +% We no longer need |textcase| for better upcasing. % \begin{macrocode} -\RequirePackage{textcase} +% \RequirePackage{textcase} % \end{macrocode} % % @@ -3949,23 +3950,27 @@ % monotype font declaration} % \changes{v1.74}{2020/10/25}{Changed the order of font loading}% % We use Libertine throughout. +% \changes{v2.12}{2024/12/29}{Use unicode-math and libertinus for Unicode engines}% +% We use Libertine throughout. % \begin{macrocode} \if@ACM@newfonts - \RequirePackage[T1]{fontenc} % Note that the order in which packages are loaded matters, % and the correct order depends on the LaTeX engine used. % See https://github.com/borisveytsman/acmart/issues/402 % and https://github.com/borisveytsman/acmart/issues/410 \ifxetex - \RequirePackage[libertine]{newtxmath} + \RequirePackage{unicode-math} + \setmathfont[Scale=MatchUppercase]{libertinusmath-regular.otf} \RequirePackage[tt=false]{libertine} \setmonofont[StylisticSet=3]{inconsolata} \else \ifluatex - \RequirePackage[libertine]{newtxmath} + \RequirePackage{unicode-math} + \setmathfont[Scale=MatchUppercase]{libertinusmath-regular.otf} \RequirePackage[tt=false]{libertine} \setmonofont[StylisticSet=3]{inconsolata} \else + \RequirePackage[T1]{fontenc} \RequirePackage[tt=false, type1=true]{libertine} \RequirePackage[varqu]{zi4} \RequirePackage[libertine]{newtxmath} @@ -5112,7 +5117,7 @@ \def\position##1{\ignorespaces}% \def\institution##1{##1\ignorespaces}% \def\department{\@ifnextchar[{\@department}{\@department[]}}% - \def\@department[##1]##2{\unskip, ##2\ignorespaces}% + \def\@department[##1]##2{##2, \ignorespaces}% \let\city\position \let\state\position \let\country\position @@ -6437,7 +6442,9 @@ \if@printcopyright \copyright\ \@copyrightyear\ \@copyrightowner\\ \else - \@copyrightyear.\ + \ifx\@copyrightyear\@empty\else + \@copyrightyear.\ + \fi \fi \if@ACM@manuscript Manuscript submitted to ACM\\ @@ -6563,6 +6570,7 @@ \fi \ifx\@empty\@authorsaddresses\else\bigskip\@setauthorsaddresses\fi \zsaveposy{@ACM@acmcpbox@y}% + \par } \egroup} % \end{macrocode} @@ -7148,6 +7156,8 @@ % This version is used in most journal formats. Note that \cs{and} between % authors with the same affiliation becomes \verb*| and |: % \changes{v1.87}{2022/08/14}{Special treatment for acmcp} +% \changes{v1.12}{2024/12/28}{Removed MakeTextUppercase due to a bug +% with new kernel} % \begin{macrocode} \def\@mkauthors@i{% \def\@currentauthors{}% @@ -7155,9 +7165,9 @@ \global\let\and\@typeset@author@line \def\@author##1{% \ifx\@currentauthors\@empty - \gdef\@currentauthors{\@authorfont\MakeTextUppercase{##1}}% + \gdef\@currentauthors{\@authorfont\MakeUppercase{##1}}% \else - \g@addto@macro{\@currentauthors}{\and\MakeTextUppercase{##1}}% + \g@addto@macro{\@currentauthors}{\and\MakeUppercase{##1}}% \fi \gdef\and{}}% \def\email##1##2{}% diff --git a/Master/texmf-dist/source/latex/babel/babel.dtx b/Master/texmf-dist/source/latex/babel/babel.dtx index ec9d48de065..9bb9c860fab 100644 --- a/Master/texmf-dist/source/latex/babel/babel.dtx +++ b/Master/texmf-dist/source/latex/babel/babel.dtx @@ -1,7 +1,7 @@ % \iffalse % This document requires lualatex %% -%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. %% Copyright (C) 1989-2012 Johannes L. Braams and %% any individual authors listed elsewhere in this file. %% All rights reserved. @@ -37,7 +37,7 @@ lang = en-001, } \ProvidesFile{babel.dtx}% - [2024/12/21 v24.15 + [2025/01/01 v25.1 The multilingual framework for pdfLaTeX, LuaLaTeX and XeLaTeX] \documentclass{ltxdoc} \GetFileInfo{babel.dtx} @@ -195,6 +195,7 @@ \def\toclevel@trouble{0} \def\listoftroubles{\section*{Troubleshoooting}\@starttoc{tsh}} \let\l@trouble\l@figure +\def\@tocrmarg{3.5em plus 1000em} \let\saved@check@percent\check@percent \let\check@percent\relax % Changes to doc.sty (add <<...>> syntax) @@ -2235,13 +2236,15 @@ The available fields are: fill other fields if they are considered necessary). \item[|language.tag.bcp47|] is the BCP 47 language tag. \item[|tag.opentype|] is the tag used by OpenType (usually, but not - always, the same as BCP 47). + always, the same as BCP 47). It can be useful when customizing fonts + with \textsf{luaotfload}. \item[|script.name|], as provided by the Unicode CLDR. \item[|script.tag.bcp47|] is the BCP 47 tag of the script used by this locale. This is a required field for the fonts to be correctly set up, and therefore it should always be defined. \item[|script.tag.opentype|] is the tag used by OpenType (usually, - but not always, the same as BCP 47). + but not always, the same as BCP 47). It can be useful when + customizing fonts with \textsf{luaotfload}. \item[|region.tag.bcp47|] is the BCP 47 tag of the region or territory. Defined only if the locale loaded actually contains it (e.g., |es-MX| does, but |es| doesn’t), which is how locales behave in the CLDR. @@ -3301,20 +3304,31 @@ cases. \Describe{onchar=}{\texttt{ids} $\string|$ \texttt{fonts} $\string|$ \texttt{letters}} + \New{3.38} This option is much like an ‘event’ called when a character belonging to the script of this locale is found (as its name implies, -it acts on characters, not on spaces). There are currently two -‘actions’, which can be used at the same time (separated by a space): -with |ids| the |\language| and the |\localeid| are set to the values of -this locale; with |fonts|, the fonts are changed to those of this -locale (as set with |\babelfont|). Characters can be added or modified with -|\babelcharproperty|. - -\New{3.81} Option |letters| restricts the ‘actions’ to letters, in the -\TeX{} sense (i.e., with catcode 11). Digits and punctuation are then -considered part of current locale (as set by a selector). This option -is useful when the main script in non-Latin and there is a secondary -one whose script is Latin. +it acts on characters, not on spaces). + +This option is particularly useful in pure Unicode multilingual text, +because you can intermingle with no explicit markup differents scripts, +each of which with its own hyphenation rules and font, and even its +characteristic writing direction. + +There are currently 3 ‘actions’, which can be used at the same time +(separated by spaces): +\begin{itemize} +\item With |ids|, both |\language| and |\localeid| are set to the values + associated with this locale, affecting the hyphenation rules, as well + as any transforms declared for it. +\item With |fonts|, the fonts are switched to those specified for this + locale (as set with |\babelfont|). Characters assigned to a locale can + be customized with |\babelcharproperty|. +\item \New{3.81} Option |letters| restricts the ‘actions’ to letters, in + the \TeX{} sense (i.e., with catcode 11). Digits and punctuation are + then considered part of current locale (as set by a selector). This + option is useful when the main script is non-Latin and there is a + secondary one whose script is Latin. +\end{itemize} \begin{note} An alternative approach with \luatex{} and Harfbuzz is the font @@ -4309,7 +4323,7 @@ Gujarati, Hindi, Kannada, Malayalam, Marathi, Odia, Tamil, Telugu.} \textit{u}, \textit{V}.} \trans{Sanskrit}{transliteration.iast}{The IAST system to -romanize Devanagari.\footnote{Thanks to Maximilian Mehner}} +romanize Devanagari (thanks to Maximilian Mehner).} \trans{Serbian}{transliteration.gajica}{(Note |serbian| with |ini| files refers to the Cyrillic script, which is here the target.) The @@ -4573,24 +4587,27 @@ characters \textit{;:!?«»} are applied.} \subsection{Scripts} -Currently \babel{} provides no standard interface to select -scripts, because they are best selected with either |\fontencoding| -(low-level) or a language name (high-level). Even the Latin script may -require different encodings (i.e., sets of glyphs) depending on the -language, and therefore such a switch would be in a sense -incomplete.\footnote{The so-called Unicode fonts do not improve the +\Babel{} provides no standard interface to select scripts, because they +are best selected with languages tied to them. In \pdftex, scripts are +indirectly managed by means of the low-level |\fontencoding|, whose +direct use is discouraged — even the Latin script may require different +encodings (i.e., sets of glyphs) depending on the language, and +therefore such a switch would be in a sense incomplete. Note the +so-called Unicode fonts (in \luatex\ and \xetex) do not improve the situation either. So, a font suited for Vietnamese is not necessarily suited for, say, the romanization of Indic languages, and the fact it contains glyphs for Modern Greek does not mean it includes them for -Classic Greek.} +Classic Greek. -Some languages sharing the same script define macros to switch it (e.g., -|\textcyrillic|), but be aware they may also set the language to a -certain default. Even the \babel{} core defined |\textlatin|, but is -was somewhat buggy because in some cases it messed up encodings and -fonts (for example, if the main Latin encoding was |LY1|), and -therefore it has been deprecated (but still defined for -backwards compatibility). +\begin{note} + Some languages sharing the same script define macros to switch it + (e.g., |\textcyrillic|), but be aware they may also set the language + to a certain default. Even the \babel{} core defined |\textlatin|, + but it was somewhat buggy because in some cases it messed up + encodings and fonts (for example, if the main Latin encoding was + |LY1|), and therefore it has been deprecated (but still defined for + backwards compatibility). +\end{note} The locales currently available cover the following scripts: \begin{multicols}{4} @@ -6013,8 +6030,8 @@ wouldn’t exist. % \section{Tools} % % \begin{macrocode} -%<<version=24.15>> -%<<date=2024/12/21>> +%<<version=25.1>> +%<<date=2025/01/01>> % \end{macrocode} % % \textbf{Do not use the following macros in \texttt{ldf} files. They @@ -7087,7 +7104,7 @@ wouldn’t exist. \bbl@ifunset{bbl@id@@\languagename}% {\count@\bbl@id@last\relax \advance\count@\@ne - \bbl@csarg\chardef{id@@\languagename}\count@ + \global\bbl@csarg\chardef{id@@\languagename}\count@ \edef\bbl@id@last{\the\count@}% \ifcase\bbl@engine\or \directlua{ @@ -15039,7 +15056,7 @@ wouldn’t exist. % % WIP. |\bbl@arabicjust| is executed with both elongated an kashida. % This must be fine tuned. The attribute kashida is set by transforms -% with |kashida|- +% with |kashida|. % % \begin{macrocode} \ifnum\bbl@bidimode>100 \ifnum\bbl@bidimode<200 @@ -24005,9 +24022,16 @@ function Babel.bidi(head, ispar, hdir) end head = node.prev(head) or head - - -------------- FIX HYPERLINKS ---------------- - +% \end{macrocode} +% +% Now direction nodes has been distributed with relation to characters +% and spaces, we need to take into account \TeX\-specific elements in +% the node list, to move them at an appropriate place. Firstly, with +% hyperlinks. Secondly, we avoid them between penalties and spaces, so +% that the latter are still discardable. +% +% \begin{macrocode} + --- FIXES --- if has_hyperlink then local flag, linking = 0, 0 for item in node.traverse(head) do @@ -24034,10 +24058,23 @@ function Babel.bidi(head, ispar, hdir) end end + for item in node.traverse_id(10, head) do + local p = item + local flag = false + while p.prev and p.prev.id == 14 do + flag = true + p = p.prev + end + if flag then + node.insert_before(head, p, node.copy(item)) + node.remove(head,item) + end + end + return head end -- Make sure anything is marked as 'bidi done' (including nodes inserted --- after the babel algorithm). +-- after the babel algorithm). 128 = 1000 0000. function Babel.unset_atdir(head) local ATDIR = Babel.attr_dir for item in node.traverse(head) do diff --git a/Master/texmf-dist/source/latex/babel/babel.ins b/Master/texmf-dist/source/latex/babel/babel.ins index 3ee035de163..650d9a0c962 100644 --- a/Master/texmf-dist/source/latex/babel/babel.ins +++ b/Master/texmf-dist/source/latex/babel/babel.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright 2012-2024 Javier Bezos and Johannes L. Braams. +%% Copyright 2012-2025 Javier Bezos and Johannes L. Braams. %% Copyright 1989-2008 Johannes L. Braams and any individual authors %% listed elsewhere in this file. All rights reserved. %% @@ -26,7 +26,7 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension .ins) which are part of the distribution. %% -\def\filedate{2024/12/21} +\def\filedate{2025/01/01} \def\batchfile{babel.ins} \input docstrip.tex diff --git a/Master/texmf-dist/source/latex/babel/bbcompat.dtx b/Master/texmf-dist/source/latex/babel/bbcompat.dtx index 7276671bc19..b41f17ded0d 100644 --- a/Master/texmf-dist/source/latex/babel/bbcompat.dtx +++ b/Master/texmf-dist/source/latex/babel/bbcompat.dtx @@ -30,7 +30,7 @@ % % \iffalse %<*dtx> -\ProvidesFile{bbcompat.dtx}[2024/12/21 v24.] +\ProvidesFile{bbcompat.dtx}[2025/01/01 v24.] %</dtx> % %% File 'bbcompat.dtx' diff --git a/Master/texmf-dist/source/latex/babel/locale.zip b/Master/texmf-dist/source/latex/babel/locale.zip Binary files differindex ea6f18b43ad..74dda946e9f 100644 --- a/Master/texmf-dist/source/latex/babel/locale.zip +++ b/Master/texmf-dist/source/latex/babel/locale.zip diff --git a/Master/texmf-dist/source/latex/biblatex-software/Makefile b/Master/texmf-dist/source/latex/biblatex-software/Makefile index 5d80961ef20..552b71581d5 100644 --- a/Master/texmf-dist/source/latex/biblatex-software/Makefile +++ b/Master/texmf-dist/source/latex/biblatex-software/Makefile @@ -70,7 +70,11 @@ distrib: # update history rm history.tex make software-biblatex.pdf - tar --transform 's,^\(.\),biblatex-software/\1,' -czhvf biblatex-software.tar.gz `git ls-files` + rm -rf biblatex-software + mkdir biblatex-software + cp -a `git ls-files` biblatex-software +# tar --transform 's,^\(.\),biblatex-software/\1,' -czvf biblatex-software.tar.gz `git ls-files` + tar -czvf biblatex-software.tar.gz biblatex-software .PHONY: preserve restore clean distclean diff --git a/Master/texmf-dist/source/latex/bithesis/bithesis.dtx b/Master/texmf-dist/source/latex/bithesis/bithesis.dtx index 88157edae07..17a7cecd007 100644 --- a/Master/texmf-dist/source/latex/bithesis/bithesis.dtx +++ b/Master/texmf-dist/source/latex/bithesis/bithesis.dtx @@ -1,7 +1,7 @@ % \iffalse meta-comment % -% Copyright (C) 2023 -% Association of Bit Network Pioneer and any individual authors listed elsewhere in this file. +% Copyright (C) 2025 +% Net Pioneer Association of BIT and any individual authors listed elsewhere in this file. % ----------------------------------- % % This work may be distributed and/or modified under the @@ -21,10 +21,10 @@ %<thesis>\ProvidesExplClass{bithesis} %<report>\ProvidesExplClass{bitreport} %<beamer>\ProvidesExplClass{bitbeamer} -%<cls>{2024-10-07}{3.8.0}{BIT Thesis Templates} +%<cls>{2025-01-03}{3.8.1}{BIT Thesis Templates} % %<*driver> -\ProvidesFile{bithesis.dtx}[2024/10/07 3.8.0 BIT Thesis Templates] +\ProvidesFile{bithesis.dtx}[2025/01/03 3.8.1 BIT Thesis Templates] \documentclass[letterpaper]{l3doc} \usepackage{dtx-style} @@ -3133,15 +3133,18 @@ % \begin{macro}{\pubsection} % 设置小标题。 % \begin{macrocode} -\NewDocumentCommand \pubsection {m} { +\NewDocumentCommand \pubsection {s m} { { - % 自增计数器 - \par\stepcounter{pub} + \par + \IfBooleanF {#1} { + % 自增计数器 + \stepcounter{pub} + } % 设置小标题,暂时没有考虑英文模式 \noindent \textbf{ \heiti{ - \zhnumber{\thepub}、#1 + \IfBooleanF {#1} {\zhnumber{\thepub}、}#2 } }\par } diff --git a/Master/texmf-dist/source/latex/delimset/delimset.dtx b/Master/texmf-dist/source/latex/delimset/delimset.dtx index 337f1a4271e..1f9bc5a3927 100644 --- a/Master/texmf-dist/source/latex/delimset/delimset.dtx +++ b/Master/texmf-dist/source/latex/delimset/delimset.dtx @@ -1,27 +1,28 @@ % \iffalse % -% delimset.dtx Copyright (C) 2016-2024 Niklas Beisert +% delimset.dtx Copyright (C) 2016-2025 Niklas Beisert % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. % The latest version of this license is in -% http://www.latex-project.org/lppl.txt -% and version 1.3 or later is part of all distributions of LaTeX -% version 2005/12/01 or later. +% https://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2008 or later. % % This work has the LPPL maintenance status `maintained'. % % The Current Maintainer of this work is Niklas Beisert. % % This work consists of the files delimset.dtx and delimset.ins -% and the derived files delimset.sty and dlmssamp.tex +% and the derived files delimset.sty and dlmssamp.tex. % %<package|sample>\NeedsTeXFormat{LaTeX2e}[1996/12/01] -%<package>\ProvidesPackage{delimset}[2024/07/17 v2.0 convenient size control for delimiter sets] -%<sample>\ProvidesFile{dlmssamp.tex}[2024/07/17 v2.0 sample for delimset] +%<package>\ProvidesPackage{delimset}[2025/01/05 v2.1 convenient size control for delimiter sets] +%<sample>\ProvidesFile{dlmssamp.tex}[2025/01/05 v2.1 sample for delimset] %<*driver> -%\ProvidesFile{delimset.drv}[2024/07/17 v2.0 delimset Reference Manual file] +\def\thedate#1{2025/01/05}\def\theversion#1{v2.1} +\ProvidesFile{delimset.dtx}[\thedate{} \theversion{} delimset reference manual file] \PassOptionsToClass{10pt,a4paper}{article} \documentclass{ltxdoc} @@ -31,24 +32,30 @@ \usepackage[usenames]{color} \usepackage{amsmath,amsfonts} -\hypersetup{colorlinks=true} -\hypersetup{pdfstartview=FitH} -\hypersetup{pdfpagemode=UseNone} +\AddToHook{begindocument/before}{\hypersetup{colorlinks=false}} +\hypersetup{urlbordercolor={.5 1 1}} +\hypersetup{linkbordercolor={1 .7 .7}} +\AddToHook{begindocument/before}{\hypersetup{pdfstartview=FitH}} \hypersetup{pdfsource={}} \hypersetup{pdflang={en-UK}} -\hypersetup{pdfcopyright={Copyright 2016-2024 Niklas Beisert. +\hypersetup{pdfurl={https://ctan.org/pkg/delimset}} +\hypersetup{pdfcopyright={Copyright 2016-2025 Niklas Beisert. This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 of this license or (at your option) any later version.}} -\hypersetup{pdflicenseurl={http://www.latex-project.org/lppl.txt}} -\hypersetup{pdfcontactaddress={ETH Zurich, ITP, HIT K, Wolfgang-Pauli-Strasse 27}} +\hypersetup{pdflicenseurl={https://www.latex-project.org/lppl.txt}} +\hypersetup{pdfcontactaddress={ETH Zurich, ITP, HIT K, + Wolfgang-Pauli-Strasse 27}} \hypersetup{pdfcontactpostcode={8093}} \hypersetup{pdfcontactcity={Zurich}} \hypersetup{pdfcontactcountry={Switzerland}} \hypersetup{pdfcontactemail={nbeisert@itp.phys.ethz.ch}} -\hypersetup{pdfcontacturl={http://people.phys.ethz.ch/\xmptilde nbeisert/}} +\hypersetup{pdfcontacturl={https://people.phys.ethz.ch/\xmptilde nbeisert/}} +\newcommand{\markpkg}[1]{\textsf{#1}} \newcommand{\secref}[1]{\hyperref[#1]{section \ref*{#1}}} +\newcommand{\ctanref}[2]{\href{https://ctan.org/#1}{#2}} +\newcommand{\ctanpkg}[1]{\ctanref{pkg/#1}{\markpkg{#1}}} \def\textvert{\texttt{\char"7C}} @@ -59,7 +66,7 @@ \begin{document} -\title{The \textsf{delimset} Package} +\title{The \markpkg{delimset} Package} \hypersetup{pdftitle={The delimset Package}} \author{Niklas Beisert\\[2ex] Institut f\"ur Theoretische Physik\\ @@ -69,12 +76,14 @@ {\texttt{nbeisert@itp.phys.ethz.ch}}} \hypersetup{pdfauthor={Niklas Beisert}} \hypersetup{pdfsubject={Manual for the LaTeX2e Package delimset}} -\date{17 July 2024, \textsf{v2.0}} +\date{\thedate{}, \theversion{}\\[1ex] +\url{https://ctan.org/pkg/delimset}} \maketitle \begin{abstract}\noindent -\textsf{delimset} is a \LaTeXe{} package to typeset and declare -sets of delimiters in math mode whose size can be adjusted conveniently. +\markpkg{delimset} is a \LaTeXe{} package +to typeset and declare sets of delimiters in math mode +whose size can be adjusted conveniently. \end{abstract} \begingroup @@ -153,7 +162,7 @@ the size |\big(...\big)|: \end{aligned} \] -The package \textsf{delimset} provides mechanisms to declare sets of delimiters +The package \ctanpkg{delimset} provides mechanisms to declare sets of delimiters whose size can be adjusted conveniently by adding simple flag parameters. For example, it provides a general purpose bracket |\brk| which can be used as follows: @@ -258,7 +267,7 @@ that they are based on a fixed font size of 10pt. More precisely, they use a vertical phantom of height 8.5pt, 11.5pt, 14.5pt or 17.5pt, respectively to set the height of the delimiter. -The package \textsf{amsmath} corrects for font size +The package \ctanpkg{amsmath} corrects for font size by instead placing a (centred) vertical phantom of height 1.2, 1.8, 2.4 or 3 times the size of the currently selected math font @@ -277,7 +286,7 @@ they come out way too big: \] % This package modifies the definitions of -the size modifiers (of \textsf{amsmath}) +the size modifiers (of \ctanpkg{amsmath}) to automatically adjust to sub/superscripts (subject to availability in the font): % @@ -372,7 +381,7 @@ e.g.: Depending on the particular situation, any of these expressions may be the most appropriate representation. -The package \textsf{delimset} automatically takes care of the math classes +The package \ctanpkg{delimset} automatically takes care of the math classes of the left and right delimiters. It also offers several choices for intermediate delimiters to take the context into account. @@ -434,8 +443,8 @@ With those, the above expression can be abbreviated as: Here, |\usedelim]|, alternatively |\brk]|, closes the delimiter set with the type and options previously specified by |\brk...[|. -For nesting purposes, there also exists a more elaborate -solution using registers, see below. +This mechanism respects nesting, and for even broader control +there exists a more elaborate solution using registers, see below. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Philosophy} @@ -488,20 +497,20 @@ There are at least three other packages which offer a similar functionality: % \begin{itemize} \item -The package \href{http://ctan.org/pkg/delim}{\textsf{delim}} supplies a command +The package \ctanpkg{delim} supplies a command |\delimdef| to declare a set of delimiters which is similar to the present |\DeclareMathDelimiterSet|. The size of delimiters to be used in each case is then specified by a prefix command such as |\mbig| or |\mauto|. \item -The package \href{http://ctan.org/pkg/mathtools}{\textsf{mathtools}} +The package \ctanpkg{mathtools} supplies commands |\DeclarePairedDelimiter...| (among many other things) which are similar to the present |\DeclareMathDelimiterSet|. The size of delimiters to be used in each case is then specified by an optional argument such as `|*|' or |[\big]|. \item -The package \href{http://ctan.org/pkg/delimseasy}{\textsf{delimseasy}} +The package \ctanpkg{delimseasy} defines a collection of useful delimiters such as |\prn| for round parentheses or |\sqpr| square parentheses. Modifier letters can be prepended and appended to adjust their size. @@ -524,11 +533,11 @@ only a single character and a single command. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Usage} -To use the package \textsf{delimset} add the command +To use the package \ctanpkg{delimset} add the command \begin{center}|\usepackage{delimset}|\end{center} to the preamble of your \LaTeX{} document. If not yet present, -the package \textsf{amsmath} will be loaded automatically. +the package \ctanpkg{amsmath} will be loaded automatically. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Delimiter Sets and Presentation Flags} @@ -577,7 +586,7 @@ to be displayed. It can take one of the following values: \end{aligned} \] % -The intended delimiter size is stored as the dimension register: +The intended delimiter size is stored as the dimension variable: % \[ |\delimsize| @@ -613,25 +622,25 @@ It can take one of the following values: \\ \textvert, |,|&\qquad \text{first intermediate delimiter} \\ -|)|&\qquad \text{right delimiter} -\\ |?|\emph{n}&\qquad \text{\emph{n}-th delimiter (starting with |0|: left)} +\\ +|)|&\qquad \text{right delimiter} \end{aligned} \] -Third, register flags store are retrieve delimiter -for splitting the across blocks or lines: +Third, register flags store and retrieve delimiter sets +for splitting them across blocks or lines: % \[ \begin{aligned} -|[|&\qquad \text{store delimiter type to register `|.|', -display left delimiter (same as `|>.(|')} +|[|&\qquad \text{push delimiter type to register stack, display left delimiter +(similar to `|>.(|')} \\ -|]|&\qquad \text{display right delimiter stored in default register `|.|' -(same as `|<.)|')} +|]|&\qquad \text{pop delimiter type from stack, display right delimiter +(similar to `|<.)|')} \\ |>|\emph{r}, |>{|\emph{reg}|}|&\qquad \text{store delimiter type -in register \emph{r} or \emph{reg}} +to register \emph{r} or \emph{reg}} \\ |<|\emph{r}, |<{|\emph{reg}|}|&\qquad \text{retrieve delimiter type from register \emph{r} or \emph{reg}} @@ -641,15 +650,23 @@ from register \emph{r} or \emph{reg}} A register stores the type of delimiter set (|\|\emph{name}), the desired size (except for variable size `|*|') as well as the math class of the compound (`|'|' vs. `|"|', see below). +The register stack enables convenient access to nested delimiter sets, +and the special register `|.|' points to the top of the stack. A stored register can be retrieved and displayed by the macro: % \[ -|\usedelim|\,\emph{r}\ \emph{sel} +|\usedelim|\,\emph{r}\ \emph{flags}\ \emph{sel} \quad\text{or}\quad -|\usedelim|\{\emph{reg}\}\emph{sel} +|\usedelim|\{\emph{reg}\}\,\emph{flags}\ \emph{sel} +\quad\text{or}\quad +|\usedelim|\,\emph{sel} \] % -Here, \emph{sel} is a flag to select an individual delimiter, see above. +Here, \emph{sel} +is a flag to select an individual delimiter +(`|(|', `\textvert', `|,|', `|?|\emph{n}', `|)|' or `|]|'), see above. +The abbreviated form without register specification operates +on the top of the register stack. In addition, there are some general purpose flags: % @@ -721,6 +738,15 @@ for block enclosure which uses |\bgroup| and |\egroup| as well. As it does not make much sense to use variable-size (`|*|') and block (`|:|') compounds for individual delimiter selection, the state of these flags is not stored in the global registers. + +\item +The delimiter selectors `|[|' and `|]|' implement a stack, +and they must be properly balanced. +Technically, they access the register `|.|\emph{n}' +with the stack counter \emph{n}=1,2,3\ldots\ a global variable +which is increased or decreased, respectively. +The special register `|.|' points to the current top of the stack +to enable access to intermediate delimiters. \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1107,8 +1133,8 @@ a bra-ket contraction $\langle\emph{expr1}\vert\emph{expr2}\rangle$. \item |\lfrac[|\emph{type}|]|\emph{flags}|{|\emph{expr1}|}{|\emph{expr2}|}| describes the linear representation $\emph{expr1}/\emph{expr2}$ of a fraction. -An optional argument \emph{type} taking values |[r]|, |[s]|, |[c]|, |[a]| encloses the -fraction in round, square, curly or angle brackets as for |\brk|. +An optional argument \emph{type} taking values |[r]|, |[s]|, |[c]|, |[a]| +encloses the fraction in round, square, curly or angle brackets as for |\brk|. \end{itemize} % The extended definitions need to be activated by @@ -1175,13 +1201,13 @@ If no value is given |true| is assumed; initially set to |true|. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Copyright} -Copyright \copyright{} 2016--2024 Niklas Beisert +Copyright \copyright{} 2016--2025 Niklas Beisert This work may be distributed and/or modified under the conditions of the \LaTeX{} Project Public License, either version 1.3 of this license or (at your option) any later version. The latest version of this license is in - \url{http://www.latex-project.org/lppl.txt} + \url{https://www.latex-project.org/lppl.txt} and version 1.3 or later is part of all distributions of \LaTeX{} version 2005/12/01 or later. @@ -1228,24 +1254,24 @@ distribution, e.g.\ \textit{texmf-root}|/tex/latex/delimset|. The package is related to other packages available at CTAN: \begin{itemize} \item -This package relies on some functionality of the package \textsf{amsmath} +This package relies on some functionality of the package \ctanpkg{amsmath} by using and overwriting some native code. -Compatibility with the \textsf{amsmath} package +Compatibility with the \ctanpkg{amsmath} package has been tested with v2.15d (2016/06/28). \item -This package uses the package \textsf{keyval} from the \textsf{graphics} bundle -to process optional arguments to the package options. -Compatibility with the \textsf{keyval} package +This package uses the package \ctanpkg{keyval} from the +\ctanpkg{graphics} bundle to process optional arguments to the package options. +Compatibility with the \ctanpkg{keyval} package has been tested with v1.15 (2014/10/28). \item -The package \textsf{icomma} modifies the spacing behaviour +The package \ctanpkg{icomma} modifies the spacing behaviour of the comma character in math mode which leads to inadequate spacing when it is used as a middle delimiter. To achieve proper spacing in sample code, use |{[p]*,}| rather than |{*,}|. The extended commands |\intv|, |\comm|, |\acomm| and |\pair| -are compatible with the \textsf{icomma} package -has been tested with v2.0 (2002/03/10). +are compatible with the \ctanpkg{icomma} package +has been tested with v2.0+ (2002/03/10). \end{itemize} % @@ -1262,6 +1288,17 @@ has been tested with v2.0 (2002/03/10). \subsection{Revision History} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\paragraph{v2.1:} 2025/01/05 + +\begin{itemize} +\item +the flags `|[|' and `|]|' now implement a register stack +for convenient individual access to nested delimiter sets +\item +syntax of |\usedelim| extended for direct access to top of register stack +\end{itemize} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \paragraph{v2.0:} 2024/07/17 \begin{itemize} @@ -1289,7 +1326,7 @@ null delimiter now properly has zero width for variable size \item internal mechanisms revised \item -compatibility with \textsf{icomma} package +compatibility with \ctanpkg{icomma} package (thanks to Olivier Godin for pointing out the issue) \end{itemize} @@ -1353,7 +1390,7 @@ standard definitions %\fi % % In this section we provide a \LaTeX{} example how to use -% some of the \textsf{delimset} features. +% some of the \ctanpkg{delimset} features. % % Preamble and beginning of document body: % @@ -1493,7 +1530,7 @@ alternative representation: \] % \end{macrocode} -display individual delimiters of a set: +display individual delimiters of a set with nesting: % \begin{macrocode} \renewcommand{\braket}{\delimpair<|>} \[ @@ -1502,7 +1539,9 @@ display individual delimiters of a set: \quad \braket*( A\big. \braket*| B_{} \braket*), \quad -\braket^1( A \braket^3| B \braket^2) +\braket^1( A \braket^3| B \braket^2), +\quad +\braket^2[ \brk[s]^1[ A \brk] \usedelim| B \usedelim] \] % \end{macrocode} @@ -1518,7 +1557,7 @@ the final size is not available for the enclosed expressions): \] % \end{macrocode} -% end of document body: +% End of document body: % \begin{macrocode} \end{document} % \end{macrocode} @@ -1538,10 +1577,10 @@ the final size is not available for the enclosed expressions): % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \paragraph{Required Packages.} % -% The package loads the packages \textsf{amsmath} and \textsf{keyval} +% The package loads the packages \ctanpkg{amsmath} and \ctanpkg{keyval} % if not yet present. -% \textsf{amsmath} is used for basic delimiter size functionality. -% \textsf{keyval} is used for extended options processing. +% \ctanpkg{amsmath} is used for basic delimiter size functionality. +% \ctanpkg{keyval} is used for extended options processing. % % \begin{macrocode} \RequirePackage{amsmath} @@ -1551,7 +1590,7 @@ the final size is not available for the enclosed expressions): % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \paragraph{Package Options.} % -% The package has some boolean \textsf{keyval} options +% The package has some boolean \ctanpkg{keyval} options % which can be set to |true| or |false|. % % \begin{macrocode} @@ -1572,9 +1611,9 @@ the final size is not available for the enclosed expressions): % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \paragraph{Improved Size Adjustments.} % -% Overwrite the \textsf{amsmath} command |\bBigg@| +% Overwrite the \ctanpkg{amsmath} command |\bBigg@| % to select the size according to the present math style -% (uses the \textsf{amsmath} definitions |\@mathmeasure| and |\big@size|). +% (uses the \ctanpkg{amsmath} definitions |\@mathmeasure| and |\big@size|). % This code is activated only if % the package option |scriptstyle| is set to |true|. % @@ -1726,14 +1765,23 @@ the final size is not available for the enclosed expressions): % Macros for storing and retrieving delimiter types using global registers. % % \begin{macrocode} +\newcount\dlm@reg@lvl +\dlm@reg@lvl\z@ +\def\dlm@reg@dot{.} +\newcommand{\dlm@reg@set}[1]{\edef\dlm@reg@cur{#1}\ifx\dlm@reg@cur\dlm@reg@dot% + \edef\dlm@reg@cur{\dlm@reg@dot\the\dlm@reg@lvl}\fi} +\newcommand{\dlm@reg@step}[1]{\global\advance\dlm@reg@lvl#1% + \ifnum\dlm@reg@lvl<\z@\PackageError{delimset}{register stack exhausted}{}% + \dlm@reg@lvl\z@\fi} \newcommand{\dlm@reg@save@init}[1]{% \xdef#1{\delimsize\the\delimsize}\ifx\dlm@inner\mathinner% \expandafter\gdef\expandafter#1\expandafter{#1\dlm@enclose@inner}\fi} -\newcommand{\dlm@reg@save}[2]{% - \expandafter\dlm@reg@save@init\csname dlm@reg@init@#1\endcsname% - \expandafter\gdef\csname dlm@reg@sel@#1\endcsname{#2}} -\newcommand{\dlm@reg@init}[1]{\csname dlm@reg@init@#1\endcsname} -\newcommand{\dlm@reg@sel}[1]{\csname dlm@reg@sel@#1\endcsname} +\newcommand{\dlm@reg@save}[2]{\dlm@reg@set{#1}% + \expandafter\dlm@reg@save@init\csname dlm@reg@init@\dlm@reg@cur\endcsname% + \expandafter\gdef\csname dlm@reg@sel@\dlm@reg@cur\endcsname{#2}} +\newcommand{\dlm@reg@init}[1]{\dlm@reg@set{#1}% + \csname dlm@reg@init@\dlm@reg@cur\endcsname} +\newcommand{\dlm@reg@sel}{\csname dlm@reg@sel@\dlm@reg@cur\endcsname} % \end{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1796,11 +1844,13 @@ the final size is not available for the enclosed expressions): % Flags to access registers. % % \begin{macrocode} -\dlm@parsedef{[}{}{\dlm@reg@save{.}{#2}\def\selecteddelim{0}#2} -\dlm@parsedef{]}{}{\dlm@reg@init{.}\def\selecteddelim{9}\dlm@reg@sel{.}} +\dlm@parsedef{[}{}{\dlm@reg@step\@ne\dlm@reg@save\dlm@reg@dot{#2}% + \def\selecteddelim{0}#2} +\dlm@parsedef{]}{}{\dlm@reg@init\dlm@reg@dot\dlm@reg@step\m@ne% + \def\selecteddelim{9}\dlm@reg@sel} \dlm@parsedef{>}{#3}{\dlm@reg@save{#3}{#2}} \dlm@parsedef{<}{#3}{\dlm@reg@init{#3}\dlm@parseflags% - {\PackageError{delimset}{must select delimiter}{}}{\dlm@reg@sel{#3}}} + {\PackageError{delimset}{must select delimiter}{}}{\dlm@reg@sel}} % \end{macrocode} % Further flags. @@ -1903,14 +1953,20 @@ the final size is not available for the enclosed expressions): % \end{macrocode} % |\usedelim| retrieves a stored delimiter type. -% The argument `|]|' immediately closes the delimiter set -% using the default register. +% The arguments `|]|', `|(|', `\textvert', `|,|', `|?|\emph{n}', `|)|' +% immediately select the delimiter using the stack register. % Otherwise the desired register must be followed % by the delimiter selection flag. % % \begin{macrocode} -\newcommand{\usedelim}{\@ifnextchar]{\parsedelimflags{}{}}{\parsedelimflags% - {\PackageError{delimset}{must select delimiter}{}}{}<}} +\newcommand{\usedelim}{% + \@ifnextchar]{\parsedelimflags{}{}}{% + \@ifnextchar({\parsedelimflags{}{}<.}{% + \@ifnextchar|{\parsedelimflags{}{}<.}{% + \@ifnextchar,{\parsedelimflags{}{}<.}{% + \@ifnextchar){\parsedelimflags{}{}<.}{% + \@ifnextchar?{\parsedelimflags{}{}<.}{% + \parsedelimflags{}{}<}}}}}}} % \end{macrocode} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/source/latex/delimset/delimset.ins b/Master/texmf-dist/source/latex/delimset/delimset.ins index 68e41a72428..bce99ff3c29 100644 --- a/Master/texmf-dist/source/latex/delimset/delimset.ins +++ b/Master/texmf-dist/source/latex/delimset/delimset.ins @@ -2,25 +2,15 @@ \input docstrip.tex \keepsilent -% delimset.ins Copyright (C) 2016-2024 Niklas Beisert -% -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.3 -% of this license or (at your option) any later version. -% The latest version of this license is in -% http://www.latex-project.org/lppl.txt -% and version 1.3 or later is part of all distributions of LaTeX -% version 2005/12/01 or later. - \preamble -Copyright (C) 2016-2024 Niklas Beisert +Copyright (C) 2016-2025 Niklas Beisert This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 of this license or (at your option) any later version. The latest version of this license is in - http://www.latex-project.org/lppl.txt + https://www.latex-project.org/lppl.txt and version 1.3 or later is part of all distributions of LaTeX version 2005/12/01 or later. diff --git a/Master/texmf-dist/source/latex/easybook/easybook.dtx b/Master/texmf-dist/source/latex/easybook/easybook.dtx index a20a18ad58e..b9b85535e29 100644 --- a/Master/texmf-dist/source/latex/easybook/easybook.dtx +++ b/Master/texmf-dist/source/latex/easybook/easybook.dtx @@ -1,5 +1,5 @@ % -% Copyright (C) 2021-2024 by Qu Yi <toquyi@163.com> +% Copyright (C) 2021-2025 by Qu Yi <toquyi@163.com> % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either @@ -14,7 +14,7 @@ % This work has the LPPL maintenance status `maintained'. %<class|package>\NeedsTeXFormat{LaTeX2e}[2021/11/15] %<*class> -\ProvidesExplClass{easybook}{2024/12/26}{2024last} +\ProvidesExplClass{easybook}{2025/01/03}{2025b} {Easily typesetting Chinese theses or books} \bool_new:N \l__eb_compile_draft_bool @@ -308,7 +308,7 @@ %</class> %<*package> \RequirePackage{etoolbox} -\ProvidesExplPackage{easybase}{2024/12/26}{2024last} +\ProvidesExplPackage{easybase}{2025/01/03}{2025b} {Easily typesetting Chinese theses or books} \cs_generate_variant:Nn \dim_set:Nn { NV } @@ -2055,7 +2055,7 @@ \group_begin: \tl_set_eq:NN \eb@toc@title \indexname \cs_set_eq:NN \imki@indexlevel \use_none:n - \IfValueT{#3}{\keys_set:nn { eb/tocouter } {#3}} + \eb_toc_kv_set:nn { idx } {#3} \cs_set_protected:Npn \imki@indexheaders { \eb_toc_title_level_cmd:n {#1} @@ -2641,7 +2641,7 @@ { \group_begin: \tl_set_eq:NN \eb@toc@title \bibname - \IfValueT{##3}{ \keys_set:nn { eb/tocouter } {##3} } + \eb_toc_kv_set:nn { bbl } {##3} \cs_set_protected:Npn \bibsection { \eb_toc_title_level_cmd:n {##1} @@ -3008,7 +3008,7 @@ } %</package> %<*tcolorbox> -\ProvidesExplFile{eb-tcolorbox.cfg}{2024/12/26}{2024last} +\ProvidesExplFile{eb-tcolorbox.cfg}{2025/01/03}{2025b} {Customization of tcolorbox for easybook} \cs_set_protected:Npn \addtotcbstyle #1#2 diff --git a/Master/texmf-dist/source/latex/easybook/easybook.ins b/Master/texmf-dist/source/latex/easybook/easybook.ins index dd041f6aab5..9647bd25649 100644 --- a/Master/texmf-dist/source/latex/easybook/easybook.ins +++ b/Master/texmf-dist/source/latex/easybook/easybook.ins @@ -1,5 +1,5 @@ % -% Copyright (C) 2021-2024 by Qu Yi <toquyi@163.com> +% Copyright (C) 2021-2025 by Qu Yi <toquyi@163.com> % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either diff --git a/Master/texmf-dist/source/latex/fancyhdr/fancyhdr.dtx b/Master/texmf-dist/source/latex/fancyhdr/fancyhdr.dtx index 0443afba184..e7ac550cc17 100644 --- a/Master/texmf-dist/source/latex/fancyhdr/fancyhdr.dtx +++ b/Master/texmf-dist/source/latex/fancyhdr/fancyhdr.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1994-2024 by Pieter van Oostrum <pieter@vanoostrum.org> +% Copyright (C) 1994-2025 by Pieter van Oostrum <pieter@vanoostrum.org> % ------------------------------------------------------- % % This file may be distributed and/or modified under the @@ -25,53 +25,80 @@ \NeedsTeXFormat{LaTeX2e} %<fancyhdr>\ProvidesPackage{fancyhdr}% %<fancyheadings>\ProvidesPackage{fancyheadings} -%<extramarks>\ProvidesPackage{extramarks} -%<fancyhdr|extramarks> [2024/12/09 v4.5 +%<extramarks|extramarks-v4>\ProvidesPackage{extramarks} +%<fancyhdr|extramarks> [2025/01/01 v5.0 %<fancyhdr> Extensive control of page headers and footers]% %<fancyheadings> [2022/11/09 v4.1 %<fancyheadings> Legacy package to call fancyhdr] %<extramarks> Extra marks for LaTeX] -%<fancyhdr|extramarks>% Copyright (C) 1994-2024 by Pieter van Oostrum <pieter@vanoostrum.org> +%<fancyhdr|extramarks>% Copyright (C) 1994-2025 by Pieter van Oostrum <pieter@vanoostrum.org> +%<extramarks-v4> [2024/11/30 v4.5 +%<extramarks-v4> Legacy version of extramarks for LaTeX] +%<extramarks-v4>% Copyright (C) 1994-2024 by Pieter van Oostrum <pieter@vanoostrum.org> +%<extramarks-v4>%% +%<extramarks-v4>%% This is a legacy version (v4) of extramarks.sty +%<extramarks-v4>%% %<fancyheadings>% Public domain %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \end{macrocode} % %<*driver> -\documentclass[a4paper]{ltxdoc} +% Specify options for the url and hyperref packages +\PassOptionsToPackage{hyphens}{url} +\PassOptionsToPackage{colorlinks,linktocpage}{hyperref} +\documentclass[a4paper]{l3doc} +\addtolength\textheight{2cm} \usepackage{multicol} \usepackage{float} \usepackage{makeidx} +\usepackage{robustindex} +\makeindex \usepackage{layout} \usepackage{array} \usepackage{booktabs} \usepackage{boxedminipage} +\usepackage{tikz} +\usetikzlibrary{decorations.fractals} + +% The package fourier-orns defines \danger, which conflicts +% with the 'danger' environment of l3doc. +% We save, clear and restore \danger arounf this \usepackage +\let \liiidocxxxsavedanger\danger +\let\danger\undefined \usepackage{fourier-orns} +\let\danger\liiidocxxxsavedanger +% End of conflict resolution \usepackage[T1]{fontenc} -\usepackage[fit]{truncate} \usepackage[hyphens]{url} +\usepackage[fit]{truncate} +\usepackage{fancyvrb} +\usepackage{graphicx} +\usepackage{subcaption} \usepackage[colorlinks,linktocpage]{hyperref} \usepackage{ifthen} +\usepackage{xparse} +\usepackage{enumitem} +\setlist{itemsep=1pt} \usepackage{fancyhdr} \GetFileInfo{fancyhdr.sty} -\def\latex/{\protect\LaTeX{}} -\def\tex/{\TeX} \def\ams/{\protect\pAmS} \def\pAmS{{\the\textfont2 A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}} -\def\amslatex/{\ams/-\latex/} \newcommand{\bs}{\symbol{'134}} -\newcommand{\env}[1]{\texttt{#1}} -\newcommand{\Package}[1]{\textsf{#1}} +\providecommand\env{} +\renewcommand{\env}[1]{\texttt{#1}} \renewcommand{\partname}{Part} \DisableCrossrefs \CodelineIndex \RecordChanges -\newcommand\bsbs{\cs{\char`\\}} +\newcommand\bsbs{\char`\\\char`\\} \newcommand{\Cmd}[1]{\texttt{\def\{{\char`\{}\def\}{\char`\}}\bs#1}} -\newcommand{\CmdIndex}[1]{\index{#1=\string\texttt{\bs#1}}} -\newcommand{\TTindex}[1]{\index{#1=\string\texttt{#1}}} +%\newcommand{\CmdIndex}[1]{\index{#1=\string\texttt{\bs#1}}} +\newcommand{\CmdIndex}[1]{\setbox0\hbox{\cs{#1}}} +\newcommand{\TTindex}[1]{\index{#1=\string\texttt{#1}}\ignorespaces} \newcommand{\PSindex}[1]{\index{page style>#1=\string\texttt{#1}}} \newcommand{\OPTindex}[1]{\index{option>#1=\string\texttt{#1}}} +\newcommand{\PKGindex}[1]{\index{package>#1=\string\pkg{#1}}\ignorespaces} \renewcommand{\topfraction}{0.9} \renewcommand{\bottomfraction}{0.9} \renewcommand{\textfraction}{0.05} @@ -108,6 +135,7 @@ % Our own page style: \pagestyle{fancy} +\setlength{\headheight}{16.0pt} \addtolength{\headwidth}{\marginparsep} \addtolength{\headwidth}{0.5\marginparwidth} \fancyhf{} @@ -118,24 +146,24 @@ % Page style for demonstrating struts, \headruleskip and \footruleskip. \newcommand{\strutheader}{% - \texttt{\textbackslash strut}: - \rule[-0.3\normalbaselineskip]{10pt}{0.3\normalbaselineskip}% - \rule{10pt}{0.7\normalbaselineskip} - \texttt{\textbackslash headruleskip}$\searrow$ + \texttt{\textbackslash strut}:\{ + \rule{10pt}{0.7\normalbaselineskip}% + \hspace{-3pt}\rule[-0.3\normalbaselineskip]{10pt}{0.3\normalbaselineskip}% \raisebox{-0.3\normalbaselineskip}[0pt][0pt]% {\ifdim \headruleskip>0pt \rule[-\headruleskip]{10pt}{\headruleskip} \else \rule{10pt}{-\headruleskip} - \fi} + \fi}% + \raisebox{-0.3\normalbaselineskip}[0pt][0pt]{$\swarrow$}\texttt{\textbackslash headruleskip}% } \newcommand{\strutfooter}{% \raisebox{0pt}[0pt][0pt]{% - \texttt{\textbackslash strut}: + \texttt{\textbackslash strut}:\{ \rule[-0.3\normalbaselineskip]{10pt}{0.3\normalbaselineskip}% - \rule{10pt}{0.7\normalbaselineskip} - \texttt{\textbackslash footruleskip} $\nearrow$ - \rule[0.7\normalbaselineskip]{10pt}{\footruleskip}}% + \hspace{-3pt}\rule{10pt}{0.7\normalbaselineskip}% + \rule[0.7\normalbaselineskip]{10pt}{\footruleskip} + \raisebox{0.3\normalbaselineskip}{$\nwarrow$}\texttt{\textbackslash footruleskip}}% } \fancypagestyle{showstruts}{% \fancyhead[L]{% @@ -159,24 +187,97 @@ {\renewcommand{\footrulewidth}{0pt}}% } } -% Change \MacroFont to have verbatim in normal size -\renewcommand{\MacroFont}% - {\fontencoding\encodingdefault - \fontfamily\ttdefault - \fontseries\mddefault - \fontshape\shapedefault - \normalsize} -\newcounter{example} -\newcommand{\Example}{% - \refstepcounter{example}% - \marginpar{\vspace{\baselineskip}\hfill Example \theexample\quad\quad}% +\newcommand\exampleindex{} +\def\exampleindex#1#2#3\relax{% + \ifx \relax#2\relax \index{Example 0#1=Example #1}\else \index{Example #1#2#3}\fi} + +\newcommand{\ExampleLabel}{} +\NewDocumentCommand \Example { m o } + { + \renewcommand{\ExampleLabel}{Example~#1\IfNoValueF{#2}{\\#2}}% + \exampleindex#1\relax\relax% + } + +\newcommand{\NoExample}[1] + {% + \renewcommand{\ExampleLabel}{#1}% +% \index{Example `#1'}% + } +\newcommand{\formatexample}{\hbox{\hspace{-2.5cm}% + \raisebox{-2\baselineskip}[0pt][0pt]{% + \parbox[t]{2.5cm}{\normalfont\normalsize + \centering + \ExampleLabel}}}\nopagebreak} + +\newcommand{\FExample}[1]{% + \noindent\makebox[0pt][l]{\hspace{-2.5cm}\parbox[t][0pt]{2.5cm}{% + \normalfont\normalsize + \centering + Example #1}}% + \exampleindex#1\relax\relax% +}% + +\newcommand{\VL}{0.008} % size of vertical line segments +\newcommand{\upperline}{% + \hbox to 0pt{% + \kern\leftmargin + \begin{picture}(0pt,0pt) + \setlength{\unitlength}{\linewidth} + \put(0,0){\line(1,0){1}} + \put(0,0){\line(0,-1){\VL}} + \put(1,0){\line(0,-1){\VL}} + \end{picture}\hss}% + \nopagebreak } -\newcommand{\FExample}{% - \refstepcounter{example}% - \makebox[0pt][r]{{Example \theexample}\quad\quad}% + +\newcommand{\lowerline}{ +\nopagebreak\noindent +\begin{picture}(0pt,0pt) + \setlength{\unitlength}{\linewidth} + \put(0,\VL){\line(1,0){1}} + \put(0,\VL){\line(0,1){\VL}} + \put(1,\VL){\line(0,1){\VL}} +\end{picture}\par } +% fancyvrb hacking +\makeatletter +\def\FV@Frame@mylines{% + \let\FV@BeginListFrame\upperline + \let\FV@LeftListFrame\relax + \let\FV@RightListFrame\relax + \let\FV@EndListFrame\lowerline} +\makeatother + +% print the Example number in the margin and gobble the % sign of ltxdoc +\DefineVerbatimEnvironment{example}{Verbatim}{formatcom=\formatexample,gobble=1, + vspace=0pt,frame=mylines} +\DefineVerbatimEnvironment{code}{Verbatim}{gobble=1,vspace=0pt,frame=mylines} + +\newlength{\normalparindent} +\setlength{\normalparindent}{\parindent} + +% Macro to print a header in the running text +\makeatletter +\newcommand\showheader[2][O]{% +% #1 optional = O/E (odd/even header) +% #2 = fancyhdr code for the header +% + \begingroup + \let\headwidth\textwidth + #2 + \noindent\makebox[\textwidth][c]{\if O#1\@oddhead\else\@evenhead\fi} + \endgroup +} +\makeatother + +% l3doc resets section counters at \part. +% I don't want that. +\makeatletter +\@removefromreset{section}{part} +\makeatother + \begin{document} \DeleteShortVerb{\|} \DocInput{\jobname.dtx} @@ -203,9 +304,56 @@ % Right brace \} Tilde \~} % % \DoNotIndex{\#,\$,\%,\&,\@,\\,\{,\},\^,\_,\~,\ } -% \DoNotIndex{\@ne} -% \DoNotIndex{\advance,\begingroup,\catcode,\closein} -% \DoNotIndex{\closeout,\day,\def,\edef,\else,\empty,\@empty,\endgroup} +% \expandafter\DoNotIndex\expandafter{\bslash} ^^A BUG in l3doc +% \DoNotIndex{\@ne,\box,\box_new:N,\csx,\csn,\copy,\color} +% \DoNotIndex{\@opcol,\@opcol:,\expandafter,\errorcontextlines} +% \DoNotIndex{\advance,\begingroup,\catcode,\closein,\centering,\dbltextfloatsep} +% \DoNotIndex{\begin,\end,\bgroup,\egroup} +% \DoNotIndex{\closeout,\day,\def,\edef,\else,\empty,\endgroup,\everypar} +% \DoNotIndex{\cs_gset_eq:NN,\cs_gset_protected:Npn,\cs_if_exist:NTF,\cs_if_exist:cTF} +% \DoNotIndex{\cs_new:Nn,\cs_new_eq:NN,\cs_new_protected:Npn,\cs_set_eq:NN} +% \DoNotIndex{\csname,\endcsname,\end,\endinput,\def,\dimen,\do,\dp} +% \DoNotIndex{\dim_set:Nn,\c_max_dim,\endlinechar,\errmessage} +% \DoNotIndex{\exp_args:Nc,\exp_last_unbraced:Nv,\exp_not:n,\exp_not:v} +% \DoNotIndex{\ExplSyntaxOn,\ExplSyntaxOff,\fi,\gdef,\global} +% \DoNotIndex{\group_begin:,\group_end:,\hbox,\hfil,\hfill,\hsize,\hskip,\hss,\ht} +% \DoNotIndex{\hrule,\hrulefill,\if,\ifdim,\ifnum,\ifx,\ifvmode,\ifvoid,\ifdefined} +% \DoNotIndex{\index,\int_new:N,\int_set:Nn,\int_set_eq:NN,\c_max_int} +% \DoNotIndex{\label,\leavevmode,\let,\llap,\LM,\long,\macro} +% \DoNotIndex{\makeatletter,\makeatother,\MessageBreak,\mark,\maxdimen} +% \DoNotIndex{\msg_error:nnn,\msg_error:nnnn,\msg_new:nnn,\mysaved,\newif} +% \DoNotIndex{\newmarks,\newtoks,\nobreak,\noexpand,\noindent,\output,\outputdblcol} +% \DoNotIndex{\parbox,\patchcmd,\plain,\pretocmd,\protect,\providecommand} +% \DoNotIndex{\protect,\ProvidesPackage,\quad,\relax,\renewcommand,\RequirePackage,\restorecr} +% \DoNotIndex{\restylefloat,\rlap,\rm,\rmfamily,\scan_stop:} +% \DoNotIndex{\seq_map_inline:Nn,\seq_new:N,\seq_put_right:Nn,\setAP,\setbox} +% \DoNotIndex{\setcounter,\setlength,\settowidth,\sl,\slshape,\space,startAP,\string} +% \DoNotIndex{\strut,\temp@a,\temp@a:,\@[xy]lhead,\@botlist,\@chapapp,\@currbox,\@currsize,\@empty} +% \DoNotIndex{\@firstoftwo,\@for,\@forloop,\@fortmp,\@gobble,\@gobbletwo,\@height} +% \DoNotIndex{\@ifnextchar,\@ifpackageloaded,\@ifstar,\@ifundefined,\@makecol,\@minus} +% \DoNotIndex{\@mkboth,\@namedef,\@nameuse,\@newbaseline,\@nil,\@normalcr,\@normalsize} +% \DoNotIndex{\@outputbox,\@outputdblcol,\@outputpage,\@parboxrestore,\@plus} +% \DoNotIndex{\@secondoftwo,\@spaces,\@tempa,\@tempboxa,\@tempdima,\@tempdimb,\@tempdimc} +% \DoNotIndex{\@tempskipa,\@tempskipb,\@temptokena,\@temptokenb,\@tfor,\@themark} +% \DoNotIndex{\@toplist,\@topnewpage,\@undefined,\@unexpandable@protect,\@width} +% \DoNotIndex{\c@page,\c@secnumdepth,\col@number,\color@begingroup,\color@endgroup} +% \DoNotIndex{\color@endbox,\color@vbox,\f@nch@,\insert@nonemptymarks,\latex@makecol} +% \DoNotIndex{\m@ne,\partial@page,\pcol@@outputpage,\pcol@combinefloats} +% \DoNotIndex{\pcol@getcurrcol,\pcol@imakeflushedpage,\pcol@ioutputelt,\pcol@makecol,\pcol@prevdepth} +% \DoNotIndex{\pcol@makeflushedpage,\pcol@outputpage@l,\pcol@outputpage@r,\pcol@prec_depth} +% \DoNotIndex{\pcol@rightpage,\pcol@spanning,\pcol@synccolumn,\ps@xxx,\return@nonemptymark} +% \DoNotIndex{\scr@topnewpage,\set@keptmarks,\temp@a,\temp@b,\temp@c,\temp@ty,\tmpf@ra} +% \DoNotIndex{\toks@,\unrestored@protected@xdef,\voidb@x,\z@,\z@skip} +% \DoNotIndex{\tex_marks:D,\tex_splitmaxdepth:D,\tex_vbadness:D,\textbf,\textsl,\texttt} +% \DoNotIndex{\textfraction,\textwidth,\the,\c_empty_tl} +% \DoNotIndex{\tl_gset:cn,\tl_gset:Nn,\tl_gset:No,\tl_gset:co,\tl_gset_eq:NN,\tl_gset_eq:cc,\tl_gset_eq:cN} +% \DoNotIndex{\tl_if_empty:cF,\tl_if_empty:cTF,\tl_if_empty:cT,\tl_if_empty:NF,\tl_if_empty:NTF} +% \DoNotIndex{\tl_new:N,\tl_new:c,\tl_set_eq:cc,\tl_to_str:c,\token_to_str:c,\token_to_str:N} +% \DoNotIndex{\undefined,\unskip,\unvbox,\unvcopy,\use:n,\use:N,\use:c,\use_none:n,\usepackage} +% \DoNotIndex{\var,\vbox,\vbox_set:Nn,\vbox_set_split_to_ht:NNn,\vboxed,\vskip,\vspace} +% \DoNotIndex{\vsplit,\vss,\xdef,\xlap,\xxxx,\xmarks} +% \DoNotIndex{\newcommand,\NewDocumentCommand,\NewExpandableDocumentCommand,\newlength,\newtoks} +% % \ProvideDocElement[printtype=\textit{hook},idxtype=hook,idxgroup=Hooks]{Hook}{hookdecl}% % \newcommand\makedate{} % \def\makedate#1/#2/#3/{% @@ -217,9 +365,9 @@ % } % \expandafter\makedate\filedate/ % -% \title{The \Package{fancyhdr} and \Package{extramarks} +% \title{The \pkg{fancyhdr} and \pkg{extramarks} % packages\\{\normalsize version \fileversion.}} -% \author{Pieter van Oostrum\thanks{A considerable part of this documentation was +% \author{Pieter van Oostrum\thanks{Part of this documentation was % written by George % Gr\"atzer (University of Manitoba) in \emph{Notices Amer. Math. Soc.} % Thanks, George!}\\ @@ -230,95 +378,97 @@ % \maketitle % \begin{abstract} % This document describes how to customize the page layout of your LaTeX -% documents, i.e how to change page margings and sizes, +% documents, i.e., how to change page margings and sizes, % headers and footers, and the % proper placement of figures and tables (collectively called floats) on % the page. % -% This documentation describes version 4.0 or later of the -% \Package{fancyhdr} and \Package{extramarks} packages. The user -% documentation is valid for the versions 4.0 or later of the -% \Package{fancyhdr} package (except for the changes mentioned in -% section~\ref{sec:version-4}), and version 2.1 or later of the -% \Package{extramarks} package. +% This documentation describes version 5.0 or later of the +% \pkg{fancyhdr} and \pkg{extramarks} packages. The user +% documentation is also mostly valid for the versions 4.0 or later of +% the \pkg{fancyhdr} and \pkg{extramarks} packages (except +% for the changes mentioned in sections~\ref{sec:version-4} and +% \ref{sec:version-5}). % % \end{abstract} % % \tableofcontents % \markright{Contents} % -%\part{Introduction} +% \begin{documentation} +% \part{Introduction} % % This document contains four parts: % % Part I is a short documentation on -% the user commands of the \Package{fancyhdr} and \Package{extramarks} packages. +% the user commands of the \pkg{fancyhdr} and \pkg{extramarks} packages. % -% Part II contains elaborate documentation on page layout in \latex/. -% This used to be the complete documentation of \Package{fancyhdr} and -% \Package{extramarks} for several years. +% Part II contains elaborate documentation on page layout in \LaTeX. +% This used to be the complete documentation of \pkg{fancyhdr} and +% \pkg{extramarks} for several years. % % Part III contains Questions and Answers. % % Part IV contains the annotated implementation. % -% This document describes version 4 of \Package{fancyhdr}, which is described in -% the \emph{The \LaTeX{} Companion, Third Edition}. -% The differences between this version and previous versions +% This document describes version 5 of \pkg{fancyhdr}. This version +% is an extension of \pkg{fancyhdr} version 4, which is described in +% the \emph{The \LaTeX{} Companion, Third Edition}. It just +% has some additional commands that are not mentioned in \emph{The +% \LaTeX{} Companion}. +% The differences between these versions % are summarized in section~\ref{sec:version-4} on -% page~\pageref{sec:version-4}. +% page~\pageref{sec:version-4}, and section~\ref{sec:version-5} on +% page~\pageref{sec:version-5}. % Throughout this documentation it is mentioned when a specific feature -% is only available in version 4, or when there are differences between -% version 3 and 4. +% is only available in version 4 or a later version, or when there are +% differences between version 4 and 5. +% +% This document also describes version 5 of \pkg{extramarks}. This +% is a new implementation that differs significantly from the previous +% versions. See section~\ref{sec:extramarks-5} on +% page~\pageref{sec:extramarks-5} for more details. +% +% This documentation contains several examples. Most of the examples are +% available for download from Github, see section~\ref{sec:contact}. +% These examples are indicated with their name in the margin. If the +% margin says ``Example \meta{n}'', where \meta{n} is numeric, maybe +% followed by a letter, then the file name will be +% \texttt{example\meta{n}.tex}. When it is followed by a letter in +% parentheses like (A), it means an item in the file. Other names +% without the word ``Example'' are just the file name without extension, +% for example ``with-beamer'' indicates the file name \texttt{with-beamer.tex}. % % \section{Installation} % \label{sec:installation} % % The preferred way to install this package is with a package installer. % If you want to install it by hand, then first run the command -% \verb+tex fancyhdr.ins+ and then move the files \texttt{fancyhdr.sty}, -% \texttt{extramarks.sty} and \texttt{fancyheadings.sty} to a place -% where \latex/ can find it, preferably in a directory similar to -% \texttt{.../texmf/tex/latex/fancyhdr/} in your \tex/ directory tree. -% -% \section{Using \Package{fancyhdr}} -% -% The package \Package{fancyhdr} gives you several commands to define -% headers and footers of the pages in a \latex/ document. +% `\verb+tex fancyhdr.ins+' and then move the files \pkg{fancyhdr.sty}, +% \pkg{extramarks.sty}, \pkg{extramarks-v4.sty} +% and \pkg{fancyheadings.sty} to a place +% where \LaTeX{} can find it, preferably in a directory similar to +% \texttt{.../texmf/tex/latex/fancyhdr/} in your \TeX{} directory tree. +% To get the documentation, run `\verb+pdflatex fancyhdr.dtx+'. +% +% \section{Using \pkg{fancyhdr}} +% \label{sec:using-fancyhdr} +% +% The package \pkg{fancyhdr} gives you several commands to define +% headers and footers of the pages in a \LaTeX{} document. % You load the package with the following command in the preamble: % \begin{quote} -% \verb|\usepackage|\oarg{options}\verb|{fancyhdr}| +% \cs{usepackage}\oarg{options}\verb|{fancyhdr}| % \end{quote} -% (Options are available since version~4.0) -% The following options are supported: -% \begin{center} -% \begin{tabular}{ l l } -% \toprule -% Option & Meaning \\ -% \midrule -% \texttt{nocheck} & do not check the heights of the header and footer \\ -% & (see section~\ref{sec:warning} on page~\pageref{page:warning})\\ -% \texttt{compatV3} & keep some behaviour (now considered undesirable) as in version~3 \\ -% & (see section~\ref{sec:options} and section~\ref{sec:warning} on -% page~\pageref{page:warning}) \\ -% \texttt{twoside} & use two-sided headers and footers even in one-sided documents \\ -% & for \Package{fancyhdr}-based pagestyles (version 4.1 or later) \\ -% \texttt{headings} & redefine the \texttt{headings} page style to be fancy-based \\ -% \texttt{myheadings} & redefine the \texttt{myheadings} page style to be fancy-based \\ -% \bottomrule -% \end{tabular} -% \end{center} -% \OPTindex{nocheck} -% \OPTindex{compatV3} -% \OPTindex{twoside} -% \OPTindex{headings} -% \OPTindex{myheadings} -% -% \begin{flushleft} -% \DescribeMacro{\fancyhead}\cmd{\fancyhead}\oarg{places}\marg{field} \\ -% \DescribeMacro{\fancyfoot}\cmd{\fancyfoot}\oarg{places}\marg{field} \\ -% \DescribeMacro{\fancyhf}\cmd{\fancyhf}\oarg{places}\marg{field} -% \end{flushleft} +% (Options are available since version~4.0. +% See \smartref{sec:using-fancyhdr}{sec:options} for the details.) +% +% \begin{function}{\fancyhead,\fancyfoot,\fancyhf} +% \begin{syntax} +% \cmd{\fancyhead}\oarg{places}\marg{field} \\ +% \cmd{\fancyfoot}\oarg{places}\marg{field} \\ +% \cmd{\fancyhf}\oarg{places}\marg{field} +% \end{syntax} % Here \meta{places} is a comma-separated list of places where % \meta{field} will be placed. There are 12 places defined: Left, % Center and Right Headers and Footers, and both can be on Even or Odd @@ -327,98 +477,307 @@ % \texttt{R}, (3) \texttt{H} or \texttt{F}. So a place is given with 3 % letters, like \texttt{EOH}. A missing coordinate means: all % possibilities, except for \cs{fancyhead} where \texttt{H} is implied -% and \cs{fancyfoot} where \texttt{F} is implied. -% -% \begin{flushleft} -% \DescribeMacro{\fancyheadoffset}\cmd{\fancyheadoffset}\oarg{places}\marg{length} \\ -% \DescribeMacro{\fancyfootoffset}\cmd{\fancyfootoffset}\oarg{places}\marg{length} \\ -% \DescribeMacro{\fancyhfoffset}\cmd{\fancyhfoffset}\oarg{places}\marg{length} -% \end{flushleft} +% and \cs{fancyfoot} where \texttt{F} is implied. Although in this +% documentation always uppercase letters are used in the \meta{places}, +% lowercase is also acceptable. +% \end{function} +% +% \begin{function}{\fancyheadoffset,\fancyfootoffset,\fancyhfoffset} +% \begin{syntax} +% \cmd{\fancyheadoffset}\oarg{places}\marg{length} \\ +% \cmd{\fancyfootoffset}\oarg{places}\marg{length} \\ +% \cmd{\fancyhfoffset}\oarg{places}\marg{length} +% \end{syntax} % These define offsets to let the headers stick into the margin (or to % the inside if negative). Places cannot contain the \texttt{C} -% specifier. See section~\ref{sec:book-examples} for more details. -% -% \DescribeMacro{\headrulewidth} -% \DescribeMacro{\footrulewidth} -% \DescribeMacro{\headruleskip} -% \DescribeMacro{\footruleskip} -% \DescribeMacro{\headrule} -% \DescribeMacro{\footrule} -% \DescribeMacro{\headwidth} +% specifier. See sections~\ref{sec:book-examples} and +% \ref{sec:headwidth} for more details. +% \end{function} +% +% \begin{function}{\fancyheadwidth,\fancyfootwidth,\fancyhfwidth} +% \begin{syntax} +% \cmd{\fancyheadwidth}\oarg{places}\marg{length} \\ +% \cmd{\fancyfootwidth}\oarg{places}\marg{length} \\ +% \cmd{\fancyhfwidth}\oarg{places}\marg{length} +% \end{syntax} +% These define widths for the header and footer fields. The fields will +% be typeset in a \cs{parbox} of this width, which can be different for +% each \emph{place}. If the width of a field is not specified, it +% defaults to \cs{headwidth}, which may cause them to overlap. See +% section~\ref{sec:field-width} for more details. +% \end{function} +% +% \begin{variable}{\headrulewidth, \footrulewidth, \headruleskip, +% \footruleskip, \headwidth} % \cs{headrulewidth} and \cs{footrulewidth} are macros to define the % thickness of a line under the header and above the footer. % \cs{headruleskip} and \cs{footruleskip} are macros that define the % distance between the lines and the header and footer text, % respectively. (But \cs{headruleskip} is only available since version~4.0.) +% And \cs{headwidth} is a length parameter that defines the +% total width of the headers and footers. See section~\ref{sec:headwidth} for more details. +% \end{variable} +% +% \begin{function}{\headrule, \footrule} % \cs{headrule} and \cs{footrule} are macros to completely redefine -% these lines. And \cs{headwidth} is a length parameter that defines the -% total width of the headers and footers. See section~\ref{sec:book-examples} for more details. +% these lines. +% \end{function} % -% \DescribeMacro{\fancyheadinit} -% \DescribeMacro{\fancyfootinit} -% \DescribeMacro{\fancyhfinit} +% \begin{function}{\fancyheadinit, \fancyfootinit, \fancyhfinit} % \cs{fancyheadinit} and \cs{fancyfootinit} can be used to define % initialisation code for the header and footer, respectively, and % \cs{fancyhfinit} defines both of these. These commands are only -% available in \Package{fancyhdr} version~4.0 and later. See section~\ref{sec:change}. -% -% \DescribeMacro{\fancycenter} +% available in \pkg{fancyhdr} version~4.0 and later. See section~\ref{sec:curpagestyle}. +% \end{function} +% +% \begin{function}{\fancyfootalign} +% \begin{syntax} +% \cmd{\fancyfootalign}\texttt{\{\}}\\ +% \cmd{\fancyfootalign}\marg{length} +% \end{syntax} +% \end{function} +% The command \cs{fancyfootalign} allows you to fine-tune the vertical +% position of the footer with respect to the page bottom. This command +% is only available in \pkg{fancyhdr} 5.0 and later. +% See section~\ref{sec:fancyfootalign}. +% +% \begin{function}{\fancycenter} +% \begin{syntax} +% \cs{fancycenter}\oarg{dist}\oarg{stretch}\marg{left-field}\marg{center-field}\marg{right-field} +% \end{syntax} % (Only in version~4.0 and later.) The command \cs{fancycenter} packs 3 % header fields into a full-width header. See section~\ref{sec:fancycenter}. -% -% \DescribeMacro{\iftopfloat} -% \DescribeMacro{\ifbotfloat} -% \DescribeMacro{\iffloatpage} -% \DescribeMacro{\iffootnote} +% \end{function} +% +% \begin{function}{\fancyhdrbox} +% \begin{syntax} +% \cs{fancyhdrbox}\oarg{alignment}\oarg{width}\marg{lines separated by \cmd{\\}} +% \end{syntax} +% (Only in version~5.0 and later.) The command \cs{fancyhdrbox} can be +% used to align multi-line parts vertically and horizontally. +% See section~\ref{sec:fancyhdrbox}. +% \end{function} +% +% \begin{function}{\iftopfloat, \ifbotfloat, \iffloatpage, \iffootnote} % The macros \cs{iftopfloat}, \cs{ifbotfloat}, \cs{iffloatpage} and % \cs{iffootnote} are used to detect if there is a float on the top or % the bottom of the page, or the page is a float page, or if there is % a footnote at the bottom of the page. These can be used to choose % different headers and/or footers if these conditions are met. See % section~\ref{sec:float} for more details. +% \end{function} % -% \begin{flushleft} -% \DescribeMacro{\fancypagestyle} -% \cmd{\fancypagestyle}\marg{style-name}\oarg{base-style}\marg{definitions} -% \end{flushleft} +% \begin{function}{\fancypagestyle,\fancypagestyle*} +% \begin{syntax} +% \cs{fancypagestyle}\marg{style-name}\oarg{base-style}\marg{definitions}\\ +% \cs{fancypagestyle}*\marg{style-name}\oarg{base-style}\marg{definitions} +% \end{syntax} % This command lets you (re)define page styles for use in special -% situations. See section~\ref{sec:fancypagestyle} for more details. +% situations. See sections~\ref{sec:pagestyle-plain} and +% \ref{sec:fancypagestyle} for more details. +% \end{function} +% +% \begin{function}{\fancypagestyleassign} +% \begin{syntax} +% \cs{fancypagestyleassign}\marg{ps1}\marg{ps2} +% \end{syntax} +% This command assigns page style \meta{ps2} to \meta{ps1}. This causes +% \meta{ps1} to be an exact copy of \meta{ps2}, but completely +% independent of \meta{ps2}. Or you could say that \meta{ps1} becomes a +% new name for page style \meta{ps2}. +% See section~\ref{sec:tocstyle} for an example. +% \end{function} +% +% \begin{function}{\fancyhdrsettoheight} +% \begin{syntax} +% \cs{fancyhdrsettoheight}\marg{lengthvar}\marg{header/footer} +% \end{syntax} +% Sets \meta{lengthvar} to the height of the \meta{header/footer}, which must +% be one of \texttt{oddhead}, \texttt{evenhead}, \texttt{oddfoot} or \texttt{evenfoot}. +% Please note: You usually use this outside of a header or a footer (for +% example in the \emph{preamble}, but then if you use marks with a non-standard height +% in your headers or footers, the calculated height may be wrong, as marks don't work well +% outside of a header or footer. +% \end{function} +% +% \section{Package \pkg{fancyhdr} options} +% \label{sec:options} % -% \section{Using \Package{extramarks}} -% \label{sec:using-extramarks} +% \textbf{NOTE:} This section applies to \pkg{fancyhdr} version~4.0 and later. +% +% You can supply options to the \cs{usepackage} command: +% \begin{quote} +% \verb|\usepackage|\oarg{options}\verb|{fancyhdr}| +% \end{quote} +% The following options are supported: +% \begin{center} +% \OPTindex{nocheck}\OPTindex{compatV3}\OPTindex{twoside}\OPTindex{headings}\OPTindex{myheadings}% +% \begin{tabular}{ l l } +% \toprule +% Option & Meaning \\ +% \midrule +% \texttt{nocheck} & do not check the heights of the header and footer \\ +% \texttt{compatV3} & keep some behaviour (now considered undesirable) as in version~3 \\ +% \texttt{twoside} & use two-sided headers and footers even in one-sided documents \\ +% & for \pkg{fancyhdr}-based page styles (version 4.1 or later) \\ +% \texttt{headings} & redefine the \texttt{headings} page style to be fancy-based \\ +% \texttt{myheadings} & redefine the \texttt{myheadings} page style to be fancy-based \\ +% \bottomrule +% \end{tabular} +% \end{center} % -% The \Package{extramarks} gives you some extra marks in \latex/, -% besides the normal \cs{leftmark} and \cs{rightmark}, that are defined -% by the \cs{markboth} and \cs{markright} commands. +% \begin{itemize} +% \item Options \texttt{nocheck} and \texttt{compatV3} are described in +% section~\ref{sec:warning} on page~\pageref{page:warning}. % -% \DescribeMacro{\firstleftmark} -% \DescribeMacro{\lastrightmark} -% \DescribeMacro{\firstrightmark} -% \DescribeMacro{\lastleftmark} -% Standard \latex/ has two marks: a left and a right one. The standard +% \item \OPTindex{compatV3}Option \texttt{compatV3} keeps two \pkg{fancyhdr} +% version~3.x (or earlier) features that are now considered undesirable. +% \begin{enumerate} +% \item The automatic adjustment of \cs{headheight} or \cs{footskip} +% when these are too small. This causes the page layout to become +% inconsistent. +% \item In these previous versions the changes to the +% \pkg{fancyhdr} headers and footers (including those by +% \cs{fancyhead}, \cs{fancyheadoffset} and similar commands) are +% made globally, except within a page style defined by +% \cs{fancypagestyle}. That is, when these commands are given inside +% a \LaTeX{} group, they affect the whole document, not only the +% group. If your document depends on this behaviour, you can give +% the \texttt{compatV3} package option. However, this is only +% considered a short-time solution. You should change your document +% as soon as possible to work around this problem. In version~4.0 and +% later, without this option, the changes are always local. +% \end{enumerate} +% This option is deprecated in version~5.0 of +% \pkg{fancyhdr}. It will disappear in a later release. Please +% don't use this option anymore, but rather change your document. +% +% \item \OPTindex{twoside}Option \texttt{twoside} implements two-sided headers +% and footers in one-sided documents (version 4.1 or later). This applies only +% for \pkg{fancyhdr}-based page styles. This option doesn't do anything +% special for two-sided documents (\texttt{twoside} documentclass option), as +% these already have that functionality. And with the \texttt{twoside} +% documentclass option that does apply to other page styles as well. +% +% \item \PSindex{headings}\PSindex{myheadings}\OPTindex{headings}\OPTindex{myheadings} +% The options \texttt{headings} and \texttt{myheadings} redefine the +% corresponding page style with \pkg{fancyhdr} commands (including a +% decorative line under the header), so that you can later select this +% page style as the page style for (part of) the +% document\footnote{These options were copied from the +% \PKGindex{nccfancyhdr} +% \pkg{nccfancyhdr} package, but contrary to that package, they are +% not automatically selected.}. +% \end{itemize} +% +% \PSindex{headings} +% The page style \texttt{headings} is in some aspects similar to the default page +% style \texttt{fancy} settings. In the \texttt{fancy} page style, the +% page number is in the footer, but in the \texttt{headings} +% page style it is in the header. The header fields look similar, however. +% +% Please note that these page styles redefine the \cs{chaptermark} and/or +% \Cmd{[sub]sectionmark} commands (see section~\ref{sec:scoop}), as do the +% standard \LaTeX{} page styles. The consequence is, that if you select +% e.g., \Cmd{pagestyle\{headings\}}, the definitions of +% \Cmd{pagestyle\{fancy\}} are overridden. +% Also when you change the headers and/or footers +% while such a page style is in effect, and you then switch back to this +% page style, for +% example with \verb|\pagestyle{headings}|, they revert to the built-in +% settings. Therefore it is not advisable to change the headers or +% footers in this way, but instead define your +% own page style, as explained in section~\ref{sec:fancypagestyle}. +% +% \section{Using \pkg{extramarks}} +% \label{sec:using-extramarks} +% +% Standard \LaTeX{} has two marks: a left one and a right one. The standard % command \cs{leftmark} gives you the last left mark on a page, and -% \cs{rightmark} gives you the first right one. These macros give you -% also the other combinations, where \cs{firstrightmark} = -% \cs{rightmark} and \cs{lastleftmark} = \cs{leftmark}. As with the -% standard marks, these are meant to be used in headers and footers. In -% other places they will not work properly. +% \cs{rightmark} gives you the first right one. These are to be used in +% the headers and footers of a page. These are derived from information +% that is given by the \cs{markboth} and \cs{markright} commands in the +% text body. +% +% \begin{function}{\firstleftmark, \lastrightmark, \firstrightmark, \lastleftmark} +% These macros give you the other combinations, where +% \cs{firstrightmark} = \cs{rightmark} and \cs{lastleftmark} = \cs{leftmark}. +% \end{function} +% +% \begin{function}{\extramarks, \extramarksleft, \extramarksright} +% \begin{syntax} +% \cs{extramarks}\marg{left-text}\marg{right-text} +% \cs{extramarksleft}\marg{left-text}\\ +% \cs{extramarksright}\marg{right-text} +% \end{syntax} +% +% The command \cs{extramarks}\marg{$m_1$}\marg{$m_2$} defines two extra marks, +% similar to the standard ones by \LaTeX, where \meta{$m_1$} is the left +% mark and \meta{$m_2$} is the right mark. +% +% \label{sec:extramarks-5} +% In versions before 5.0, the \texttt{extramarks} are connected to each +% other and to the original \LaTeX{} marks; they are not independent. +% For example, if you use \cs{markboth} or \cs{markright}, this +% introduced empty \texttt{extramarks} or duplicated existing ones. This is +% also true in the other direction. This sometimes caused unwanted effects. +% +% Since version 5.0 this is no longer the case. +% Now the \texttt{extramarks} are independent of the traditional marks, +% and they can also be set independently of each other by the commands +% \cs{extramarksleft}\marg{$m_1$} and \cs{extramarksright}\marg{$m_2$}. +% \end{function} +% +% \begin{variable}{extramarks-left, extramarks-right} +% \begin{syntax} +% \texttt{extramarks-left}\\ +% \texttt{extramarks-right} +% \end{syntax} +% These are the `mark classes' for the two marks. +% \end{variable} +% +% \medskip +% +% \textbf{NOTE}: The implementation of \pkg{extramarks} version 5 +% only is available if your \LaTeX{} release is the +% November 2022 \LaTeX{} release or newer. It uses the new \LaTeX{} +% marks introduced in that release. These marks are described in \emph{The \LaTeX{} +% Companion, Third Edition}, section 5.3.5 (Part I). Of course you can +% also use these new marks directly, or use additional ones if you need +% more. Some examples in this manual use these. +% +% This manual contains several examples of the use of \pkg{extramarks}, +% where its features are essential, but in future releases of this +% manual these examples will be rewritten to use the new \LaTeX{} marks directly. +% +% \subsubsection*{Extramarks commands to be used in the headers or footers} +% +% \begin{function}{\firstleftxmark, \firstrightxmark, \topleftxmark, +% \toprightxmark, \lastleftxmark, \lastrightxmark, \firstxmark, +% \lastxmark, \topxmark} +% \begin{flushleft} +% These commands are used to extract the marks defined by +% \cs{extramarks}\marg{$m_1$}\marg{$m_2$}, \cs{extramarksleft}\marg{$m_1$}\ and +% \cs{extramarksright}\marg{$m_2$} described above.\\ +% They are used in the headers or footers, similar to the ones without +% the \texttt{x}. +% \end{flushleft} +% \end{function} +% +% If you want to keep the old behaviour of \pkg{extramarks}, you can use: +% \begin{verbatim} +% \usepackage{extramarks}[=v4] +% \end{verbatim} +% or if you have an old \LaTeX{} system where the above doesn't work % \begin{verbatim} -% \extramarks{aa}{bb} -% \firstleftxmark -% \firstrightxmark -% \topleftxmark -% \toprightxmark -% \lastleftxmark -% \lastrightxmark -% \firstxmark -% \lastxmark -% \topxmark +% \usepackage{extramarks-v4} % \end{verbatim} -% The command \Cmd{extramarks\{aa\}\{bb\}} defines two extra marks, -% similar to the standard ones by \latex/, where \texttt{aa} is the left -% one and \texttt{bb} is the right one. The other commands are to -% extract these in the headers and footers, similar to the ones without -% the \texttt{x}. See sections~\ref{sec:scoop} and \ref{sec:xmarks} for more details. +% Please note that in that case the +% \cs{topleftxmark}, \cs{toprightxmark} and \cs{topxmark} commands may +% give you unexpected results. +% +% See sections~\ref{sec:scoop} and \ref{sec:xmarks} for more details +% about the use of the package. % % \newpage % \part{Page Layout in \LaTeX} @@ -454,7 +813,7 @@ % \cs{evensidemargin} (on even-numbered pages) and \cs{oddsidemargin} % (on odd-numbered pages). In one-sided documents % \cs{oddsidemargin} is used for either. \cs{leftmargin} is also a valid -% \latex/ parameter but it has a different use (namely the indentation of +% \LaTeX{} parameter but it has a different use (namely the indentation of % lists). % \item Most of the parameters should not be changed in the middle of a % document. Some changes might work at a pagebreak. If you want to change @@ -481,7 +840,7 @@ % % The page headers and footers in \LaTeX{} are defined by the % \cs{pagestyle} and \cs{pagenumbering} commands. \cs{pagestyle} -% defines the general contents of the headers and footers (e.g.\ where the +% defines the general contents of the headers and footers (e.g., where the % page number will be printed), while % \cs{pagenumbering} defines the format of the page number. % \LaTeX{} has four standard page styles: @@ -521,7 +880,7 @@ % \end{center} % % These are not user commands, but rather ``variables'' that are used by -% \latex/'s output routine. +% \LaTeX's output routine. % As the command names contain the character `\texttt{@}', they should % be defined in a package file, or otherwise be sandwiched between the commands % \cs{makeatletter} and \cs{makeatother}. @@ -543,7 +902,7 @@ % % The \Cmd{pagenumbering\{xxx\}} defines the command \cs{thepage} to be the % expansion of the page number in the given notation \texttt{xxx}. -% The pagestyle command +% The page style command % then would include \cs{thepage} in the appropriate place. Additionally % the \cs{pagenumbering} command resets the page number to~1. % The \cs{pagestyle} and \cs{pagenumbering} apply to the page that is @@ -551,10 +910,10 @@ % to what page they apply (see section \ref{sec:change}). % % -% \section{What is \Package{fancyhdr}} +% \section{What is \pkg{fancyhdr}} % -% The \Package{fancyhdr} macro package allows you to customize -% in \latex/ your page headers and footers in an easy way. You can +% The \pkg{fancyhdr} macro package allows you to customize +% in \LaTeX{} your page headers and footers in an easy way. You can % define: % \begin{itemize} % \item three-part headers and footers @@ -569,19 +928,19 @@ % Of course, you also have complete control over fonts, uppercase % and lowercase displays, etc. % -% \section{Simple use of \Package{fancyhdr}} To use this package -% install it in a place where \latex/ can find it (see -% section~\ref{sec:installation})\footnote{In most modern \tex/ +% \section{Simple use of \pkg{fancyhdr}} To use this package +% install it in a place where \LaTeX{} can find it (see +% section~\ref{sec:installation})\footnote{In most modern \TeX{} % installation the package is already included.}, and include in the preamble of your document % the commands: % % \PSindex{fancy} -% \begin{verbatim} +% \begin{code} % \usepackage{fancyhdr} % \pagestyle{fancy} -% \end{verbatim} +% \end{code} % -% We can visualize the page layout we can create with \Package{fancyhdr} +% We can visualize the page layout we can create with \pkg{fancyhdr} % as follows: % % \begin{fblock} @@ -601,8 +960,8 @@ % separately. % % \begin{fblock} -% \textbf{NOTE:} In \Package{fancyhdr} version 4.3 and later, paragraph -% hooks will not work inside \Package{fancyhdr} headers and footers to +% \textbf{NOTE:} In \pkg{fancyhdr} version 4.3 and later, paragraph +% hooks will not work inside \pkg{fancyhdr} headers and footers to % avoid unwanted interactions with the main text. % \end{fblock} % @@ -627,13 +986,14 @@ % bit thicker (2pt). % % This is accomplished by these commands following -% \Cmd{pagestyle\{fancy\}}\footnote{Note that version 1 of fancyheadings +% \Cmd{pagestyle\{fancy\}}\footnote{Note that version 1 of \pkg{fancyheadings} % used the \cs{setlength} command to change the \texttt{\bs...rulewidth} parameters.}: % \CmdIndex{fancyhead} % \CmdIndex{fancyfoot} % \CmdIndex{headrulewidth} % \CmdIndex{footrulewidth} -% \begin{verbatim} +% \Example{1} +% \begin{example} % \fancyhead[L,C]{} % \fancyhead[R]{\textbf{The performance of new graduates}} % \fancyfoot[L]{From: K. Grant} @@ -641,7 +1001,7 @@ % \fancyfoot[R]{\thepage} % \renewcommand{\headrulewidth}{0.4pt} % \renewcommand{\footrulewidth}{2pt} -% \end{verbatim} +% \end{example} % (The \cs{thepage} macro displays the current page number. % \cs{textbf} puts its argument in bold face.) % @@ -649,10 +1009,11 @@ % all these headers and footers. To eliminate all but the % centered page number, issue the command % +% \Example{2} % \CmdIndex{thispagestyle} -% \begin{verbatim} +% \begin{example} % \thispagestyle{plain} -% \end{verbatim} +% \end{example} % after the % \Cmd{begin\{document\}} % and the @@ -661,93 +1022,99 @@ % commands. % % Alternatively, issue -% \begin{verbatim} +% \begin{code} % \thispagestyle{empty} -% \end{verbatim} +% \end{code} % if you do not want any headers or footers. % -% In fact the standard \latex/ classes have the command \cs{maketitle} +% In fact the standard \LaTeX{} classes have the command \cs{maketitle} % defined in such a way that a \Cmd{thispagestyle\{plain\}} is automatically % issued. So if you \emph{do} want the fancy layout on a page containing % \cs{maketitle} you must issue a \Cmd{thispagestyle\{fancy\}} after the % \cs{maketitle}. % -% \section{Fancy Centering} -% \label{sec:fancycenter} +% \section{The default layout} +% \label{sec:default} +% Let us use the \pkg{book.cls} documentclass and the default settings for +% \pkg{fancyhdr}; so we don't use any of the page style options in +% the \Cmd{usepackage\{fancyhdr\}} command, and we don't redefine any +% headers or footers. So just: +% \begin{code} +% \usepackage{fancyhdr} +% \pagestyle{fancy} +% \end{code} +% and let \pkg{fancyhdr} take care of everything. As mentioned +% before, we get a layout that is similar to the page style +% \texttt{headings}, but it is not exactly the same. If you want to have +% the same layout as the page style \texttt{headings}, but with a line +% under the header, use (you need \pkg{fancyhdr} version 4 or later +% for this): +% \PSindex{headings} +% \begin{code} +% \usepackage[headings]{fancyhdr} +% \pagestyle{headings} +% \end{code} % -% \textbf{Note:} This section only applies to \Package{fancyhdr} version~4.0 -% and later\footnote{This comes from the \Package{nccfancyhdr} -% package by Alexander I. Rozhenko.}. +% On the pages where new chapters start, we get a centered page number +% in the footer; there is nothing in the header, and there are no decorative lines. % -% The fields in a fancy header and footer are prepared using \cs{parbox} -% command. So, you can use multiline fields. In the header, they are -% aligned to the bottom line, but, in the footer, they are aligned to -% the top line. The maximum width of every field is equal to the -% \cs{headwidth}. This can lead to overlapping of neighbouring fields. +% On an even page, we get the layout: % -% \CmdIndex{fancycenter} -% If you want to prepare headers/footers in more traditional way in a line -% not exceeding the \cs{headwidth}, you can use -% the following command in any header/footer command: -% \begin{quote} -% \cs{fancycenter}\oarg{distance}\oarg{stretch}\\ -% \verb| |\marg{left-field}\marg{center-field}\marg{right-field} -% \end{quote} -% \CmdIndex{fancycenter} -% This command works like -% \begin{center} -% \verb|\hbox to\linewidth{|\marg{left-field}\cs{hfil}\marg{center-field}\cs{hfil}\marg{right-field}\verb|}| -% \end{center} -% but does this more carefully trying to exactly center the central part of -% the text if possible. The solution for exact centering -% is applied if the width of \meta{center-field} is less than -% \begin{quote} -% \verb|\linewidth - 2*(|\meta{stretch}\verb|*|\meta{distance}\verb| +|\\ -% \verb| max(width(|\meta{left-field}\verb|), width(|\meta{right-field}\verb|)))|. -% \end{quote} -% Otherwise the \meta{center-field} will slightly migrate to a shorter item -% (\meta{left-field} or \meta{right-field}), but at least \meta{distance} -% space between all parts of line is provided. -% The default values of \meta{distance} and \meta{stretch} -% are 1em and 3. +% \begin{fblock} +% \noindent\makebox[\textwidth]{\textsl{1.2 EVALUATION}\hfill +% \textsl{CHAPTER 1. INTRODUCTION}}\showrule +% \noindent\makebox[\textwidth]{\hfill page body\hfill}\\[2\baselineskip] +% \noindent\makebox[\textwidth]{\hfill2\hfill} +% \end{fblock} % -% If the \meta{center-field} is empty, the \cs{fancycenter} is equivalent to -% the following command: -% \begin{center} -% \verb|\hbox to\linewidth {|\marg{left-field}\verb|\hfil |\marg{right-field}\verb|}| -% \end{center} +% On an odd page, we get the layout: % -% You would use this in a header for example with -% \begin{quote} -% \verb|\fancyhead[C]{|\cs{fancycenter}\oarg{distance}\oarg{stretch}\\ -% \verb| |\marg{left-field}\marg{center-field}\marg{right-field}\verb|}| -% \end{quote} -% and leave the \texttt{[L,R]} parts empty. +% \begin{fblock} +% \noindent\makebox[\textwidth]{\textsl{CHAPTER 1. INTRODUCTION}\hfill +% \textsl{1.2 EVALUATION}}\showrule +% \noindent\makebox[\textwidth]{\hfill page body\hfill}\\[2\baselineskip] +% \noindent\makebox[\textwidth]{\hfill +% 3\hfill } +% \end{fblock} % -% \textbf{Note 1}: -% When \cs{fancycenter} is used inside a header or -% \CmdIndex{linewidth}% -% \CmdIndex{headwidth}% -% footer, \cs{linewidth} usually is the same as \cs{headwidth}. Only -% when \cs{fancycenter} is used inside a box with a different width, -% \cs{linewidth} will be the width of that box. +% \noindent where the header text is slanted uppercase. % -% \textbf{Note 2}: -% If the whole of the \cs{fancycenter} is wider than -% \cs{linewidth} it will stick out on the right. See -% section~\ref{sec:longtitles} for possible solutions. +% In the \texttt{article} documentclass, we get section and subsection +% instead of chapter and section. % -% \textbf{Note 3}: The usage of the \cs{fancycenter} command is not limited to the -% argument of headers/footers. You can use it anywhere in your -% document. Then \cs{linewidth} will be the width of the box or text in -% which it is used. +% And in a one-sided document, all pages get the same layout as the even pages +% above. It would probably have been more logical to choose the odd page +% layout, but changing that now would break some existing documents. +% Anyway, you can change the layout easily yourself. +% +% This default layout is produced by the following commands: +% \Example{5} +% \CmdIndex{rightmark} +% \CmdIndex{leftmark} +% \begin{example} +% \fancyhead[LE,RO]{\textsl{\rightmark}} +% \fancyhead[LO,RE]{\textsl{\leftmark}} +% \fancyfoot[C]{\thepage} +% \end{example} +% +% The following settings are used for the decorative lines: +% +% \begin{tabbing} +% \CmdIndex{headrulewidth} +% \noindent \cs{headrulewidth}\qquad \qquad \qquad \=0.4\=pt\\ +% \CmdIndex{footrulewidth} +% \Cmd{footrulewidth}\>0\>pt +% \end{tabbing} +% +% The header text is turned into all uppercase by the standard \LaTeX{} +% code in \pkg{book.cls}. % % \section{An example of two-sided printing}\label{two-sided} % % \TTindex{twoside} -% Some document classes, such as \verb|book.cls|, print two-sided by default: the even +% Some document classes, such as \pkg{book.cls}, print two-sided by default: the even % pages and the odd pages have different layouts; other document classes -% use the \verb|twoside| option to print two-sided. +% use the \texttt{twoside} option to print two-sided. % % Now let us print the report two-sided. Let the above page % layout be used for the odd (right-side) pages, and the @@ -767,7 +1134,8 @@ % % Here are the commands: % -% \begin{verbatim} +% \Example{3} +% \begin{example} % \fancyhead{} % clear all header fields % \fancyhead[RO,LE]{\textbf{The performance of new graduates}} % \fancyfoot{} % clear all footer fields @@ -776,7 +1144,7 @@ % \fancyfoot[CO,RE]{To: Dean A. Smith} % \renewcommand{\headrulewidth}{0.4pt} % \renewcommand{\footrulewidth}{0.4pt} -% \end{verbatim} +% \end{example} % % \CmdIndex{fancyhead} % \CmdIndex{fancyfoot} @@ -826,14 +1194,564 @@ % use \Cmd{thispagestyle\{plain\}} for a simple page layout for % page~1. % +% \section{Specifying the widths of the header and footer fields} +% \label{sec:field-width} +% +% In \pkg{fancyhdr} version 5.0 and later you can specify the width of +% each header and footer field individually. In older versions each of +% the fields was typeset in a \cs{parbox} of width \cs{headwidth}, which +% could cause them to overlap (see e.g., section~\ref{sec:longtitles}). +% +% In \pkg{fancyhdr} version 5.0 and later, this is still the default but +% now you can override this with the commands \cs{fancyheadwidth}, +% \cs{fancyfootwidth} or \cs{fancyhfwidth}. These work exactly like the +% \cs{fancyhead} etc. commands but instead of a header/footer value they +% have a \meta{length} as parameter. +% +% \begin{syntax} +% \cmd{\fancyheadwidth}\oarg{places}\marg{length} \\ +% \cmd{\fancyfootwidth}\oarg{places}\marg{length} \\ +% \cmd{\fancyhfwidth}\oarg{places}\marg{length} +% \end{syntax} +% Field widths that are not specified default to \cs{headwidth}. +% +% NOTE: The widths will be stored as expressions, not as calculated +% values. The values will be calculated when the header or footer is +% constructed. So they can change, for example when different pages have +% different \cs{headwidth} and you use e.g., \texttt{0.3\cs{headwidth}} +% or another expression with a `variable' as value. Note, however, that +% at definition time, the width is assigned to a temporary length +% variable, to check if it is a legal \meta{length}. So any variables +% used in it should have a value, although this may be different from +% the value at its final use. +% +% The fields are typeset in a \cs{parbox} with the specified width or +% the default \cs{headwidth}. It is still possible to get overlaps if +% the sum of the width in a particular header or footer is larger than \cs{headwidth}. +% +% The fields will be positioned in a space of width \cs{headwidth} as +% follows: +% \begin{itemize} +% \item the left field will be positioned at the left edge of this space +% \item the right field will be positioned at the right edge of this space +% \item the position of the center field by default will be in the +% horizontal center of the header/footer. But it depends on the available space:\\[1ex] +% Let $W_L$, $W_C$, and $W_R$ be the width of the left, center and +% right field, respectively. +% \begin{itemize} +% \item if the total width of the three fields +% $ \sum_{i \in \{L, C, R\}}{W_i} > \cs{headwidth}$, +% the center field will be centered in the +% header/footer, i.e., its midpoint will be at +% $\frac{1}{2}\cs{headwidth}$ from each side.\\ +% NOTE: this also includes the default situation if no widths are +% specified. This ensures that documents that don't specify widths +% get the same output as before version 5.0. +% \item otherwise ($ \sum_{i \in \{L, C, R\}}{W_i} \le \cs{headwidth}$): +% \item if there would be an overlap between any of the fields, i.e.,\\ +% $ W_L +\frac{1}{2}W_C > \frac{1}{2}\cs{headwidth}$ or +% $ W_R +\frac{1}{2}W_C > \frac{1}{2}\cs{headwidth}$, then the +% center field will be centered between the left and right fields, +% with equal distances to both. +% \item otherwise (there is enough space, and no overlap), the center +% field is centered in the header/footer, like the first case above. +% \end{itemize} +% \end{itemize} +% Here are some examples. The header fields have a colored bar in them +% that indicates their width. +% +% In the first example, the sum of the field widths $> \cs{headwidth}$, +% so the center field will be in the center of the header, but there +% will be overlaps. +% \NoExample{testheadwidth\\(1.2)} +% \begin{example} +% \usepackage{fancyhdr} +% \pagestyle{fancy} +% \fancyhead[L]{llllll llllll llllll llllll llllll llllll llllll\\ +% \color{red}\rule {\linewidth}{4mm}} +% \fancyhead[C]{cccc cccc cc cc cccc cccc\\ +% \color{green}\rule{\linewidth}{2mm}} +% \fancyhead[R]{rrrrrr rrrrrr rrrrrr rrrrrr rrrrrr rrrrrr rrrrrr\\ +% \color{blue}\rule {\linewidth}{4mm}} +% \fancyheadwidth[L]{0.3\headwidth} +% \fancyheadwidth[C]{0.5\headwidth} +% \fancyheadwidth[R]{0.4\headwidth} +% \end{example} +% \showheader{% +% \setlength{\headheight}{40pt} +% \fancyhead[L]{llllll llllll llllll llllll llllll llllll llllll\\ +% \color{red}\rule {\linewidth}{5mm}} +% \fancyhead[C]{cccc cccc cc cc cccc cccc\\ +% \color{green}\rule{\linewidth}{3mm}} +% \fancyhead[R]{rrrrrr rrrrrr rrrrrr rrrrrr rrrrrr rrrrrr rrrrrr\\ +% \color{blue}\rule {\linewidth}{2mm}} +% \fancyheadwidth[L]{0.3\headwidth} +% \fancyheadwidth[C]{0.5\headwidth} +% \fancyheadwidth[R]{0.4\headwidth} +% } +% +% In the second example, the sum of the field widths $\le \cs{headwidth}$. +% And there is no overlap between the center field and the other ones +% (the center and right fields just touch each other), so the center +% field is still centered in the header. +% \NoExample{testheadwidth\\(1.3)} +% \begin{example} +% \fancyheadwidth[L]{0.3\headwidth} +% \fancyheadwidth[C]{0.2\headwidth} +% \fancyheadwidth[R]{0.4\headwidth} +% \end{example} +% \showheader{% +% \setlength{\headheight}{40pt} +% \fancyhead[L]{llllll llllll llllll llllll llllll llllll llllll\\ +% \color{red}\rule {\linewidth}{5mm}} +% \fancyhead[C]{cccc cccc cc cc cccc cccc\\ +% \color{green}\rule{\linewidth}{3mm}} +% \fancyhead[R]{rrrrrr rrrrrr rrrrrr rrrrrr rrrrrr rrrrrr rrrrrr\\ +% \color{blue}\rule {\linewidth}{2mm}} +% \fancyheadwidth[L]{0.3\headwidth} +% \fancyheadwidth[C]{0.2\headwidth} +% \fancyheadwidth[R]{0.4\headwidth} +% } +% +% In the last example, the sum of the field widths still is $\le \cs{headwidth}$. +% But there would be overlap between the center field and the right +% field if the center field was centered horizontally in the +% header. So now it is centered between the left and right fields. +% \NoExample{testheadwidth\\(1.4)} +% \begin{example} +% \fancyheadwidth[L]{0.3\headwidth} +% \fancyheadwidth[C]{0.25\headwidth} +% \fancyheadwidth[R]{0.4\headwidth} +% \end{example} +% \showheader{% +% \setlength{\headheight}{40pt} +% \fancyhead[L]{llllll llllll llllll llllll llllll llllll llllll\\ +% \color{red}\rule {\linewidth}{5mm}} +% \fancyhead[C]{cccc cccc cc cc cccc cccc\\ +% \color{green}\rule{\linewidth}{3mm}} +% \fancyhead[R]{rrrrrr rrrrrr rrrrrr rrrrrr rrrrrr rrrrrr rrrrrr\\ +% \color{blue}\rule {\linewidth}{2mm}} +% \fancyheadwidth[L]{0.3\headwidth} +% \fancyheadwidth[C]{0.25\headwidth} +% \fancyheadwidth[R]{0.4\headwidth} +% } +% \smallskip +% +% \textbf{NOTE:} The \cs{fancyheadwidth}, +% \cs{fancyfootwidth} and \cs{fancyhfwidth} commands are still +% experimental. This means that they have not been thoroughly tested, so +% there can still be bugs in them. And the implementation could change +% in a following release. Use at your own risk, and please, report any bugs. +% +% \section{Fancy Centering} +% \label{sec:fancycenter} +% +% \textbf{Note:} This section only applies to \pkg{fancyhdr} version~4.0 +% and later\footnote{This comes from the \pkg{nccfancyhdr} +% \PKGindex{nccfancyhdr} +% package by Alexander I. Rozhenko.}. +% +% The fields in a fancy header and footer are prepared using \cs{parbox} +% command. So, you can use multiline fields. In the header, they are +% aligned to the bottom line, but, in the footer, they are aligned to +% the top line. The maximum width of every field is by default equal to the +% \cs{headwidth} (unless changed by the commands \cs{fancyheadwidth}, +% \cs{fancyfootwidth} or \cs{fancyhfwidth} from section~\ref{sec:field-width}.) +% This can lead to overlapping of neighbouring fields. +% +% \CmdIndex{fancycenter} +% If you want to prepare headers/footers in more traditional way in a line +% not exceeding the \cs{headwidth}, you can use +% the following command in any header/footer command: +% \begin{quote} +% \cs{fancycenter}\oarg{distance}\oarg{stretch}\\ +% \verb| |\marg{left-field}\marg{center-field}\marg{right-field} +% \end{quote} +% \CmdIndex{fancycenter} +% This command works like +% \begin{center} +% \verb|\hbox to\linewidth{|\marg{left-field}\cs{hfil}\marg{center-field}\cs{hfil}\marg{right-field}\verb|}| +% \end{center} +% but does this more carefully trying to exactly center the central part of +% the text if possible. The solution for exact centering +% is applied if the width of \meta{center-field} is less than +% \begin{quote} +% \verb|\linewidth - 2*(|\meta{stretch}\verb|*|\meta{distance}\verb| +|\\ +% \verb| max(width(|\meta{left-field}\verb|), width(|\meta{right-field}\verb|)))|. +% \end{quote} +% Otherwise the \meta{center-field} will slightly migrate to a shorter item +% (\meta{left-field} or \meta{right-field}), but at least \meta{distance} +% space between all parts of line is provided. +% The default values of \meta{distance} and \meta{stretch} +% are 1em and 3. +% +% If the \meta{center-field} is empty, the \cs{fancycenter} is equivalent to +% the following command: +% \begin{center} +% \verb|\hbox to\linewidth {|\marg{left-field}\verb|\hfil |\marg{right-field}\verb|}| +% \end{center} +% +% You would use this in a header for example with +% \begin{quote} +% \verb|\fancyhead[C]{|\cs{fancycenter}\oarg{distance}\oarg{stretch}\\ +% \verb| |\marg{left-field}\marg{center-field}\marg{right-field}\verb|}| +% \end{quote} +% and leave the \texttt{[L,R]} parts empty. +% +% \textbf{Note 1}: +% When \cs{fancycenter} is used inside a header or +% \CmdIndex{linewidth}% +% \CmdIndex{headwidth}% +% footer, \cs{linewidth} usually is the same as \cs{headwidth}. Only +% when \cs{fancycenter} is used inside a box with a different width, +% \cs{linewidth} will be the width of that box. +% +% \textbf{Note 2}: +% If the whole of the \cs{fancycenter} is wider than +% \cs{linewidth} it will stick out on the right. See +% section~\ref{sec:longtitles} for possible solutions. +% +% \textbf{Note 3}: The usage of the \cs{fancycenter} command is not limited to the +% argument of headers/footers. You can use it anywhere in your +% document. Then \cs{linewidth} will be the width of the box or text in +% which it is used. +% +% \section{The \cs{fancyhdrbox} command} +% \label{sec:fancyhdrbox} +% +% The \cs{fancyhdrbox} command can be used to align multi-line header +% and footer fields and, for example, images. It is modeled after the +% \PKGindex{makecell} +% \pkg{makecell} package by Olga Lapko, but it is a bit simplified, and also has extra +% vertical alignments \texttt{T} and \texttt{B}. And the vertical +% centering of \cs{fancyhdrbox} is better than the one from +% \pkg{makecell}. The \cs{fancyhdrbox} command is primarily meant for +% use in headers and footers, but can be used anywhere in a document. +% +% The command is used as follows: +% +% \cs{fancyhdrbox}\oarg{alignment}\oarg{width}\marg{lines separated by \cmd{\\}} +% +% Here \meta{alignment} specifies both the vertical and the horizontal +% alignment of the contents with respect to other text on the same line +% (including other \cs{fancyhdrbox} instances). The result of the +% command is a box in horizontal mode (in \LaTeX{} parlance an \textbf{LR +% box}), similar to \cs{parbox} or \cs{makebox}. +% +% The \meta{alignment} optional parameter consists of two letters: a vertical +% alignment, which indicates where the baseline of the complete box will +% be, followed by a horizontal alignment that specifies how the lines will be +% positioned horizontally in the box. +% +% The possibilities for the vertical alignment are: +% \begin{description} +% \item [\texttt{T}] The baseline of the box is on the top of the first line, i.e., just +% where the top of the tallest character or item in the line is. +% \item [\texttt{t}] The baseline of the box is the baseline of the first line. +% \item [\texttt{c}] The baseline of the box is on the vertical center +% of the box. +% \item [\texttt{b}] The baseline of the box is the baseline of the last line. +% \item [\texttt{B}] The baseline of the box is on the bottom of the last line, i.e., just +% where the bottom of the deepest character or item in the line is. +% \end{description} +% The horizontal alignment can be +% \begin{description} +% \item[\texttt{l}] left aligned +% \item[\texttt{c}] centered +% \item[\texttt{r}] right aligned +% \end{description} +% These are the same as, for example, in \texttt{tabular} columns. +% +% Each of the vertical and horizontal alignments can be omitted. The +% default is \texttt{c} for the vertical alignment, and \texttt{l} for +% the horizontal alignment. If a single \texttt{c} is specified, it +% counts as both the vertical and horizontal alignment, i.e., as \texttt{cc}. +% +% When multiple boxes are put next to each other (i.e., on the same +% line), their baselines will be aligned. Therefore in general it makes +% not much sense to specify different vertical alignments for them, +% unless you want a special effect. And in that case the results may be surprising. +% +% The second optional parameter, \meta{width}, specifies the width of +% the box. If this is not given, the box has its ``natural'' width, +% detemined by its contents. With the \meta{width} parameter, the width +% of the box is fixed to this value, independent of the contents. Note +% that there will be no automatic line breaking of the lines if they +% don't fit in the specified width. If a line is too long it will just +% stick out of the box, and may overlap the following text. If you want +% automatic line breaking, use a \cs{parbox}, a \texttt{tabular} with a +% \texttt{p\{..\}} column, or something similar. +% +% The lines (rows) in the box are separated by \cmd{\\} just like in a +% tabular. You can even use \cmd{\\}\oarg{length} to add extra +% vertical space (or decrease the vertical space with a negative length). +% Also allowed is \cs{hline} after \cmd{\\}. +% +% Here are examples of all the vertical alignment options, with some +% variations of the horizontal alignment. Some lines use a bigger font +% than others, in order to make the alignment non-trivial. All the +% \cs{fancyhdrbox} boxes are enclosed in a tight \cs{fbox} to show how +% big they are. The red horizontal line is the common baseline. +% +% \begingroup ^^A for some local definitions +% \setlength\fboxsep{0pt} +% ^^A Vertical bar to indicate measurements +% \newcommand{\R}{\rule[-0.3\baselineskip]{0.1pt}{\baselineskip}\hspace{-0.1pt}} +% \newcommand{\showbaseline}{^^A +% \begin{picture}(0,0) +% \put(-1cm,0){\color{red}\rule{7cm}{0.1pt}} +% \end{picture}^^A +% } +% +% \subsubsection*{T-aligned boxes:} +% +% \begin{code} +% \fancyhdrbox[T]{% +% ABC \\ +% xyz \\ XYZ \\ +% \Huge DEF ghij +% }% +% \fancyhdrbox[T]{% +% {\Huge ABC} \\ +% DEF ghij} +% \end{code} +% +% \fbox{\showbaseline\fancyhdrbox[T]{^^A +% ABC \\ +% xyz \\ XYZ \\ +% \Huge DEF ghij +% }^^A +% \fancyhdrbox[T]{{\Huge ABC} \\ +% DEF ghij}} +% +% \subsubsection*{t-aligned boxes:} +% +% This example also uses right-alignment in the boxes, but the first +% line in the left box has a 1cm space added to the right, so it is +% shifted left 1cm. +% +% \begin{code} +% \fancyhdrbox[tr]{% +% ABC\hspace{1cm} \\ +% xyz \\ XYZ \\ +% \Huge DEF ghij +% }% +% \fancyhdrbox[tr]{% +% {\Huge ABC} \\ +% DEF ghij +% } +% \end{code} +% +% \fbox{\showbaseline\fancyhdrbox[tr]{^^A +% ABC\hspace{1cm} \\ +% xyz \\ XYZ \\ +% \Huge DEF ghij +% }^^A +% \fancyhdrbox[tr]{^^A +% {\Huge ABC} \\ +% DEF ghij +% }} +% +% \subsubsection*{b-aligned boxes:} +% +% \begin{code} +% \fancyhdrbox[b]{% +% ABC \\ +% xyz \\ XYZ \\ +% \Huge DEF ghij +% }% +% \fancyhdrbox[b]{% +% {\Huge ABC} \\ +% DEF ghij} +% \end{code} +% +% \fbox{\showbaseline\fancyhdrbox[b]{^^A +% ABC \\ +% xyz \\ XYZ \\ +% \Huge DEF ghij +% }^^A +% \fancyhdrbox[b]{^^A +% {\Huge ABC} \\ +% DEF ghij}} +% +% \subsubsection*{B-aligned boxes:} +% +% \begin{code} +% \fancyhdrbox[B]{% +% ABC \\ +% xyz \\ XYZ \\ +% \Huge DEF ghij +% }% +% \fancyhdrbox[B]{% +% {\Huge ABC} \\ +% DEF ghij} +% \end{code} +% +% \fbox{\showbaseline\fancyhdrbox[B]{^^A +% ABC \\ +% xyz \\ XYZ \\ +% \Huge DEF ghij +% }^^A +% \fancyhdrbox[B]{^^A +% {\Huge ABC} \\ +% DEF ghij}} +% +% \subsubsection*{c-aligned boxes:} +% +% The first box has an explicit \texttt{[c]} positioning, which implies +% both vertical and horizontal centering. The second one uses the +% default positioning (i.e., it is not explicitely specified), which make +% it \texttt{[cl]}, i.e., horizontally left aligned. +% +% \begin{code} +% \fancyhdrbox[c]{% +% ABC \\ +% xyz \\ XYZ \\ +% \Huge DEF ghij +% }% +% \fancyhdrbox{% +% {\Huge ABC} \\ +% DEF ghij} +% \end{code} +% +% \fbox{\showbaseline\fancyhdrbox[c]{^^A +% ABC \\ +% xyz \\ XYZ \\ +% \Huge DEF ghij +% }^^A +% \fancyhdrbox{^^A +% {\Huge ABC} \\ +% DEF ghij}} +% +% \subsubsection*{c-aligned with \meta{width}:} +% +% This example shows the use of the second optional argument of +% \cs{fancyhdrbox}, the width of the box. +% +% \begin{code} +% \fancyhdrbox[c][5cm]{% +% ABC \\ xyz \\ XYZ\texttt{\textbackslash\textbackslash[10pt]} \\[10pt] +% \Huge DEF ghij% +% }% +% \fancyhdrbox[c][3cm]{% +% {\Huge ABC}\\ +% DEF ghij} +% \end{code} +% +% \noindent\R\makebox[5cm]{5cm}\R\makebox[3cm]{3cm}\R\\[2pt] +% \fbox{\showbaseline\fancyhdrbox[c][5cm]{^^A +% ABC \\ xyz \\ XYZ\texttt{\textbackslash\textbackslash[10pt]} \\[10pt] +% {\Huge DEF ghij}^^A +% }^^A +% \fancyhdrbox[c][3cm]{^^A +% {\Huge ABC}\\ +% DEF ghij}} +% +% \subsubsection*{Different vertical alignments} +% +% Here is an example with two different vertical alignments in boxes +% next to each other, one with the \texttt{[b]} alignment and the other +% one with \texttt{[t]}. +% +% \begin{code} +% \fbox{\showbaseline\fancyhdrbox[b]{% +% first line \\ +% second line [b] +% }} +% baseline +% \fbox{\fancyhdrbox[t]{% +% first line [t] \\ +% second line}} +% \end{code} +% +% \fbox{\showbaseline\fancyhdrbox[b]{^^A +% first line \\ +% second line [b] +% }} +% baseline +% \fbox{\fancyhdrbox[t]{^^A +% first line [t] \\ +% second line}} +% +% \endgroup +% +% \bigskip +% +% It may be surprising that the \texttt{[b]} box is on top and the +% \texttt{[t]} box on the bottom of the total line, but if you look at +% the baselines, it should become clear why this is so. This is just the +% way vertical alignment works in \LaTeX. So if that is what you want, +% just use it. +% +% \subsubsection*{Two headers with \cs{fancyhdrbox} parts} +% Finally, two headers with \cs{fancyhdrbox} parts. Note that these are +% in different header fields (left and right). +% +% \NoExample{image+\\twolineheader} +% \begin{example} +% \setlength{\headheight}{68pt} +% \pagestyle{fancy} +% \fancyhf{} +% \rhead{\fancyhdrbox{\Large First Long Title \\ \large Second title}} +% \lhead{\fancyhdrbox{\includegraphics[width=3cm]{example-image}}} +% \end{example} +% +% \bigskip +% +% \showheader{% +% \setlength{\headheight}{68pt} +% \pagestyle{fancy} +% \fancyhf{} +% \rhead{\fancyhdrbox{\Large First Long Title \\ \large Second title}} +% \lhead{\fancyhdrbox{\includegraphics[width=3cm]{example-image}}} +% } +% +% In the next example the left header has an image in a \cs{fancyhdrbox} +% with the default alignment. The right header has two +% \cs{fancyhdrbox}|es, one with an explicit width of 4cm, the second +% one with its natural width. +% +% \NoExample{threeboxes} +% \begin{example} +% \setlength{\headheight}{20pt} +% \pagestyle{fancy} +% \fancyhf{} +% \fancyhead[L]{\sffamily +% \fancyhdrbox{\includegraphics[height=3\normalbaselineskip] +% {example-image}} +% } +% \fancyhead[R]{% +% \fancyhdrbox[][4cm]{Our Office \\ Street 1 \\ City1 }% +% \fancyhdrbox[l]{ Our Factory \\ Street 2 \\ City2 } +% } +% \end{example} +% +% \bigskip +% +% \showheader{% +% \setlength{\headheight}{40pt} +% \pagestyle{fancy} +% \fancyhf{} +% \fancyhead[L]{\sffamily +% \fancyhdrbox{\includegraphics[height=3\normalbaselineskip] +% {example-image}} +% } +% \fancyhead[R]{% +% \fancyhdrbox[][4cm]{Our Office \\ Street 1 \\ City1 }% +% \fancyhdrbox[l]{ Our Factory \\ Street 2 \\ City2 } +% } +% } +% +% \bigskip +% % \section{Redefining page style \texttt{plain}} % \label{sec:pagestyle-plain} % -% Some \latex/ commands, like \cs{chapter}, use the \cs{thispagestyle} +% Some \LaTeX{} commands, like \cs{chapter}, use the \cs{thispagestyle} % command to automatically switch to the \texttt{plain} page style, thus % ignoring the page style currently in effect. % -% They do this by issuing a \verb+\thispagestyle{plain}+ command. The most +% They do this by issuing a \Cmd{thispagestyle\{plain\}} command. The most % well-known places where this could happen are: % \begin{itemize} % \item The first pages of chapters in the \texttt{book} and \texttt{report} class @@ -844,42 +1762,50 @@ % % To customize even such pages you must redefine the \texttt{plain} % page style. As we indicated before you could do this by defining the -% \cs{ps@plain} command, but \Package{fancyhdr} gives you an easier way +% \cs{ps@plain} command, but \pkg{fancyhdr} gives you an easier way +% \CmdIndex{fancypagestyle} % with the \cs{fancypagestyle} command. This command can be used to % redefine existing page styles (like \texttt{plain}) or to define new ones, -% e.g.\ if part of your document needs a different page style. This command -% has two mandatory parameters: the first one is the name of the page style to be defined, the -% second consists of commands that change the headers and/or footers, i.e., +% e.g., if part of your document needs a different page style. This command +% has two mandatory parameters and an optional one in between: the first parameter +% is the name of the page style to be defined, then an optional +% parameter of an existing base page style can be given, and the last +% parameter consists of commands that change the headers and/or footers, i.e., % \verb|\fancyhead| etc. Also allowed are changes to \cs{headrulewidth} and % \cs{footrulewidth} or even \cs{headrule} and \cs{footrule}. % The (re)defined page style uses the standard -% \texttt{fancy} definitions, amended by the definitions in the second -% parameter. In other words, those parts that are not redefined in the -% second parameter get their value from the \texttt{fancy} definition that -% is current. In particular, if the second parameter is empty, i.e., given -% as \verb+{}+, then the new page style is equal to page style -% \texttt{fancy}. -% -% As an example, let us redefine the \texttt{plain} style so that it will -% be the same as page style \texttt{fancy}: -% \begin{verbatim} +% \texttt{fancy} definitions, amended by the optional base style, and +% finally the definitions in the last +% parameter. For details see \smartref{sec:pagestyle-plain}{sec:fancypagestyle}. +% In particular, if the last parameter is empty, i.e., given +% as \verb+{}+, then the new page style is equal to base style. +% +% As an example, let us redefine the \texttt{plain} style so that it will +% be the same as the standard page style \texttt{fancy}: +% \begin{code} +% \fancypagestyle{plain}[fancy]{} +% \end{code} +% If you have not redefined page style \texttt{fancy} with \cs{fancypagestyle}, +% this is equivalent to: +% \begin{code} % \fancypagestyle{plain}{} -% \end{verbatim} +% \end{code} % Now when these special pages use the \texttt{plain} page style, they use your redefined version. % % As another example, let us -% redefine the \texttt{plain} style for the report in Section~\ref{two-sided} by +% redefine the \texttt{plain} style for the report in section~\ref{two-sided} by % making the page number bold and enclosing it in en-dashes without any rules. % \PSindex{plain} % -% \begin{verbatim} +% \Example{4} +% \begin{example} % \fancypagestyle{plain}{% % \fancyhf{}% clear all header and footer fields % \fancyfoot[C]{\textbf{--~\thepage~--}} % except the center % \renewcommand{\headrulewidth}{0pt}% % \renewcommand{\footrulewidth}{0pt}% % } -% \end{verbatim} +% \end{example} % % % \section{Defining other page styles} @@ -888,223 +1814,176 @@ % Just like redefining the \texttt{plain} page style in the previous % section, you can define or redefine other page styles based on page % style \texttt{fancy}. This is also done with the \cs{fancypagestyle} -% command. The general form of this command is: -% \begin{quote} -% \CmdIndex{fancypagestyle} -% \verb|\fancypagestyle|\marg{style-name}\oarg{base-style}\marg{definitions} -% \end{quote} -% As you see, there is an optional argument between the two mandatory arguments. +% command. +% With \texttt{*} it defines a ``\emph{closed}'' page style, otherwise an +% ``\emph{open}'' one. The difference is that the \emph{open} page style +% does not necessarily have all the information in itself that is +% necessary to construct the headers and footers. So it will need to pick up the +% remaining elements from the environment of the text. +% The \emph{closed} page style, however, will pick up all necessary +% elements from the environment at the moment it is \textbf{defined}, +% rather than when it is used, and carries that with it. +% The information that is picked up consists of: +% \begin{itemize} +% \item The header and footer fields in all variants (EO,LRC,HF) (12 items) +% \item The header and footer field widths in all variants (EO,LRC,HF) (12 items) +% \item The header and footer offsets (EO,LR,HF) (8 items), see +% section~\ref{sec:book-examples} and~\ref{sec:headwidth} +% \item The header and footer init values (2 items), see section~\ref{sec:curpagestyle} +% \item \cs{headrule}, \cs{headrulewidth}, \cs{footrule}, \cs{footrulewidth} (4 items) +% \item the \texttt{[nocheck]} option +% \end{itemize} +% The \emph{closed} versions can come handy when you are switching back +% and forth between different page styles, as explained in section~\ref{sec:change}. % -% For example: -% \begin{verbatim} +% Here is an example of a simple (\emph{open}) definition: +% \begin{code} % \fancypagestyle{toc}{% % \fancyhf{}% % \fancyhead[RO]{\thepage}% % \fancyhead[RO]{\textsl{TABLE OF CONTENTS}}% % \fancyfoot[C]{\thepage} % } -% \end{verbatim} +% \end{code} % This defines a special page style \texttt{toc} for use in the table % of contents with \Cmd{pagestyle\{toc\}}. % Inside the definition you can define the headers and/or footers, % change the header and footer rules, and redefine commands like -% \cs{chaptermark} (see section~\ref{sec:options} for an example). The +% \cs{chaptermark} (see section~\ref{sec:scoop} for an example). The % headers and footers and marks that are not redefined inside the -% \cs{fancypagestyle} definition, are taken from the global page style -% \texttt{fancy} values. +% \cs{fancypagestyle} definition, are taken from the global fancy page style +% values. +% +% The general form of the command is: +% \begin{quote} +% \CmdIndex{fancypagestyle} +% \verb|\fancypagestyle|\marg{style-name}\oarg{base-style}\marg{definitions} +% \verb|\fancypagestyle*|\marg{style-name}\oarg{base-style}\marg{definitions} +% \end{quote} +% As you see, there is an optional \oarg{base-style} argument between the two mandatory arguments. % -% You can also give an optional base page style to the -% \cs{fancypagestyle} command. Then the new page style will be based on -% the base style. This base style must be a \texttt{fancyhdr}-defined +% If you give this optional base page style to the +% \cs{fancypagestyle} command, then the new page style will be based on +% that base style. This base style must be a \texttt{fancyhdr}-defined % style. Also you should take care not to -% create circular dependencies. In this case the order of picking up the -% definitions (headers, footers, marks) is: +% create circular dependencies. +% When no base style is given, an internal base style, which has the +% default values is used. This is the same as page style +% \texttt{fancy}, unless the latter has been redefined. +% The order of picking up the +% definitions (headers, footers, marks, etc.) is: % \begin{enumerate} % \item The definitions from the base style are taken. % \item The definitions given in the \cs{fancypagestyle} command % override and/or augment these. -% \item Any definitions that are not given by the two above, are taken -% from the environment at the time the new page style is used. +% \item Any definitions that are not given by the two rules above, are taken +% from the environment, for an \emph{open} page style at the time the +% new page style is used, for a \emph{closed} page style at the time it +% is defined. % \end{enumerate} -% Only the first two parts are embedded in the page style. -% When no base style is given, part 1 is null. +% In an \emph{open} page style, i.e., if you use the form \cs{fancypagestyle}\oarg{base-style}\marg{style-name}\ldots\ {} +% only the first two parts are embedded in the page style. % -% The optional base style argument is only available since version~4.0. In -% this version it is also possible to redefine page style \texttt{fancy} +% The optional base style argument is only available in \pkg{fancyhdr} version~4.0 and later. +% In these versions it is also possible to redefine page style \texttt{fancy} % in this way. In version~3.x and earlier this was not possible. +% The starred (\emph{closed}) version is only available in +% \pkg{fancyhdr} version~5.0 and later. +% +% \subsubsection*{The page style \texttt{fancydefault}} +% \label{sec:fancydefault} % % If you want to restore the original default definitions % from page style \texttt{fancy} as described in section~\ref{sec:default}, you can use -% \begin{verbatim} +% \begin{code} % \fancypagestyle{myfancy}[fancydefault]{ % . . . override some here % } -% \end{verbatim} +% \end{code} % \PSindex{fancydefault} % Page style \texttt{fancydefault} is the version of page style -% \texttt{fancy} that has all the initialisation embedded. Contrary to +% \texttt{fancy} that has all the initialisation embedded, including the relevant +% definitions of \cs{chaptermark} and \Cmd{[sub]sectionmark}. Contrary to % this, page style \texttt{fancy} as defined in the package uses the % same defaults, but doesn't have them embedded. It picks them up from % the environment. So if the environment changes, because you redefine % headers, footers, mark commands, etc, the functioning of page style % \texttt{fancy} changes with it. The page style \texttt{fancydefault} -% does not change, however. However, \texttt{fancydefault} is only available -% since fancyhdr version~4.0. -% -% \section{Package options} -% \label{sec:options} -% -% \textbf{NOTE:} This section applies to fancyhdr version~4.0 and later. -% -% You can supply options to the \cs{usepackage} command: -% \begin{quote} -% \verb|\usepackage|\oarg{options}\verb|{fancyhdr}| -% \end{quote} -% % The following options are supported: -% \begin{center} -% \OPTindex{nocheck}\OPTindex{compatV3}\OPTindex{twoside}\OPTindex{headings}\OPTindex{myheadings} -% \begin{tabular}{ l l } -% \toprule -% Option & Meaning \\ -% \midrule -% \texttt{nocheck} & do not check the heights of the header and footer \\ -% \texttt{compatV3} & keep some behaviour (now considered undesirable) as in version~3 \\ -% \texttt{twoside} & use two-sided headers and footers even in one-sided documents \\ -% & for \Package{fancyhdr}-based pagestyles (version 4.1 or later) \\ -% \texttt{headings} & redefine the \texttt{headings} page style to be fancy-based \\ -% \texttt{myheadings} & redefine the \texttt{myheadings} page style to be fancy-based \\ -% \bottomrule -% \end{tabular} -% \end{center} -% +% does not change, however. It is in fact the \emph{closed} version of +% page style \texttt{fancy}, defined with +% \Cmd{fancypagestyle*\{fancydefault\}}\marg{initialisation code} just after +% \pkg{fancyhdr}'s initialisation. However, \texttt{fancydefault} +% is only available since \pkg{fancyhdr} version~4.0. +% +% If you don't like the defaults, you can redefine it yourself. For +% example if you don't want to include the \Cmd{...mark} definitions, +% just put \Cmd{fancypagestyle*\{fancydefault\}\{\}} after +% \Cmd{usepackage\{fancyhdr\}}. Or if you want to include your own +% header and/or footer definitions, use +% \Cmd{fancypagestyle*\{fancydefault\}}\marg{your definitions}. +% +%\subsection{The \cs{fancypagestyleassign} command} +% \label{sec:fancypagestyleassign} +% +% The \cs{fancypagestyleassign} command is only available in +% \pkg{fancyhdr} version 5.0 and later. +% \begin{raggedright} +% The command \cs{fancypagestyleassign}\marg{ps1}\marg{ps2} makes +% page style \meta{ps1} an exact copy of page style \meta{ps1}. +% The effect is similar to the command +% \cs{fancypagestyle}\marg{ps1}\oarg{ps2}\texttt{\{\}}, but there are +% important differences: % \begin{itemize} -% \item \OPTindex{nocheck}Option \texttt{nocheck} is described in section~\ref{sec:warning} on -% page~\pageref{page:warning}. -% -% \item \OPTindex{compatV3}Option \texttt{compatV3} keeps two fancyhdr -% version~3.x (or earlier) features that are now considered undesirable. -% \begin{enumerate} -% \item The automatic adjustment of \cs{headheight} or \cs{footskip} -% when these are too small. This causes the page layout to become -% inconsistent. See section~\ref{sec:warning} on -% page~\pageref{page:warning}. -% \item In these previous versions the changes to the -% \Package{fancyhdr} headers and footers (including those by -% \cs{fancyhead}, \cs{fancyheadoffset} and similar commands) are -% made globally, except within a page style defined by -% \cs{fancypagestyle}. That is, when these commands are given inside -% a \LaTeX{} group, they affect the whole document, not only the -% group. If your document depends on this behaviour, you can give -% the \texttt{compatV3} package option. However, this is only -% considered a short-time solution. You should change your document -% as soon as possible to work around this problem. In version~4.0 and -% later, without this option, the changes are always local. -% \end{enumerate} -% The option is scheduled to disappear in version~5 of -% \Package{fancyhdr}. -% -% \item \OPTindex{twoside}Option \texttt{twoside} implements two-sided headers -% and footers in one-sided documents (version 4.1 or later). This applies only -% for \Package{fancyhdr}-based pagestyles. This option doesn't do anything -% special for two-sided documents (\texttt{twoside} documentclass option), as -% these already have that functionality. And with the \texttt{twoside} -% documentclass option that does apply to other pagestyles as well. -% -% \item \PSindex{headings}\PSindex{myheadings}\OPTindex{headings}\OPTindex{myheadings} -% The options \texttt{headings} and \texttt{myheadings} redefine the -% corresponding page style with fancyhdr commands (including a -% decorative line under the header), so that you can later select this -% page style as the page style for (part of) the -% document\footnote{These options were copied from the -% \texttt{nccfancyhdr} package, but contrary to that package, they are -% not automatically selected.}. +% \item with \cs{fancypagestyleassign}\marg{ps1}\marg{ps2} the page +% style \meta{ps1} will be completely independent from \meta{ps2}. On +% the other hand, with +% \cs{fancypagestyle}\marg{ps1}\oarg{ps2}\texttt{\{\}} the page +% style \meta{ps1} will depend on \meta{ps2}. If +% \meta{ps2} later changes (for example with a redefinition with +% \cs{fancypagestyle}), the page style \meta{ps1} will change accordingly. +% \item with \cs{fancypagestyle}\marg{ps1}\oarg{ps2}\texttt{\{\}} you +% must take care that you don't get cyclical dependencies, whereas with +% \cs{fancypagestyleassign}\ you can't create cyclical dependencies. +% \item with \cs{fancypagestyle}\marg{ps1}\oarg{ps2}\texttt{\{\}} the +% page style \meta{ps2} must be a page style that is defined by +% \pkg{fancyhdr} (with \cs{fancypagestyle} or predefined), but +% \cs{fancypagestyleassign}\marg{ps1}\marg{ps2} can also be used if +% \meta{ps2} is not defined by \pkg{fancyhdr}, for example a standard +% \LaTeX{} page style like \texttt{plain}. % \end{itemize} +% If \meta{ps2} is defined by \pkg{fancyhdr}, then also \meta{ps1} is +% considered to be defined by \pkg{fancyhdr}. If \meta{ps2} is a +% \emph{closed} page style, then \meta{ps1} is also \emph{closed}. +% \end{raggedright} +% +% \cs{fancypagestyleassign} comes especially handy if you want to +% temporaryly redefine a page style, and later to restore it to its +% original value. For example, if we have a page style +% \texttt{special}, and we want temporarily to define page style +% \texttt{plain} to be equal to this, but later to restore it to its +% original definition, you can do this as follows: +% \begin{code} +% \fancypagestyleassign{origplain}{plain} +% \fancypagestyleassign{plain}{special} +% . . . code where plain is equal to special +% \clearpage +% \fancypagestyleassign{plain}{origplain} +% . . . code where plain has its original meaning +% \end{code} +% Note that you couldn't do this with \cs{fancypagestyle} because (1) +% this would introduce a cyclical dependency, (2) you cannot use +% \texttt{plain} as the base page style, because it is not \pkg{fancyhdr}-based. % -% \PSindex{headings} -% The page style \texttt{headings} is in some aspects similar to the default page -% style \texttt{fancy} settings. In the \texttt{fancy} page style, the -% page number is in the footer, but in the \texttt{headings} -% page style it is in the header. The header fields look similar, however. -% -% Please note that these page styles redefine the \cs{chaptermark} and/or -% \cs{[sub]sectionmark} commands (see section~\ref{sec:scoop}), as do the -% standard \latex/ page styles. The consequence is, that if you select -% e.g.\ \Cmd{pagestyle\{headings\}}, the definitions of -% \Cmd{pagestyle\{fancy\}} are overridden. -% Also when you change the headers and/or footers -% while such a page style is in effect, and you then switch back to this -% page style, for -% example with \verb|\pagestyle{headings}|, they revert to the built-in -% settings. Therefore it is not advisable to change the headers or -% footers in this way, but instead define your -% own page style, as explained in section~\ref{sec:fancypagestyle}. -% -% \section{The default layout} -% \label{sec:default} -% Let us use the \verb|book.cls| documentclass and the default settings for -% \Package{fancyhdr}; so we don't use any of the page style options in -% the \Cmd{usepackage\{fancyhdr\}} command, and we don't redefine any -% headers or footers. So just: -% \begin{verbatim} -% \usepackage{fancyhdr} -% \pagestyle{fancy} -% \end{verbatim} -% and let \Package{fancyhdr} take care of everything. As mentioned -% before, we get a layout that is very similar to the page style \texttt{headings}. -% -% On the pages where new chapters start, we get a centered page number -% in the footer; there is nothing in the header, and there are no decorative lines. -% -% On an even page, we get the layout: -% -% \begin{fblock} -% \noindent\makebox[\textwidth]{\textsl{1.2 EVALUATION}\hfill -% \textsl{CHAPTER 1. INTRODUCTION}}\showrule -% \noindent\makebox[\textwidth]{\hfill page body\hfill}\\[2\baselineskip] -% \noindent\makebox[\textwidth]{\hfill2\hfill} -% \end{fblock} -% -% On an odd page, we get the layout: -% -% \begin{fblock} -% \noindent\makebox[\textwidth]{\textsl{CHAPTER 1. INTRODUCTION}\hfill -% \textsl{1.2 EVALUATION}}\showrule -% \noindent\makebox[\textwidth]{\hfill page body\hfill}\\[2\baselineskip] -% \noindent\makebox[\textwidth]{\hfill -% 3\hfill } -% \end{fblock} -% -% \noindent where the header text is slanted uppercase. -% -% This default layout is produced by the following commands: -% \CmdIndex{rightmark} -% \CmdIndex{leftmark} -% \begin{verbatim} -% \fancyhead[LE,RO]{\textsl{\rightmark}} -% \fancyhead[LO,RE]{\textsl{\leftmark}} -% \fancyfoot[C]{\thepage} -% \end{verbatim} -% -% The following settings are used for the decorative lines: -% -% \begin{tabbing} -% \CmdIndex{headrulewidth} -% \noindent \cs{headrulewidth}\qquad \qquad \qquad \=0.4\=pt\\ -% \CmdIndex{footrulewidth} -% \Cmd{footrulewidth}\>0\>pt -% \end{tabbing} -% -% The header text is turned into all uppercase by the standard \LaTeX{} -% code in \verb|book.cls|. +% See section~\ref{sec:tocstyle} for an example. % -% \section{The scoop on \latex/'s marks} +% \section{The scoop on \LaTeX's marks} % \label{sec:scoop} % % Usually, for documents of class \verb|book| and \verb|report|, you may % want to use chapter and section information in the headings (chapter only % for one-sided printing), and for documents of class \verb|article|, % section and subsection information (section only for one-sided -% printing). \latex/ uses a marker mechanism to remember the chapter and +% printing). \LaTeX{} uses a marker mechanism to remember the chapter and % section (section and subsection) information for a page; this is % discussed in detail in \emph{The \LaTeX{} Companion, Third Edition}, % section 5.3.4 (Part I). @@ -1115,11 +1994,11 @@ % \CmdIndex{leftmark} % \cs{leftmark} % (higher-level) and \cs{rightmark} (lower-level) contain the information -% processed by \latex/, and you can use them directly as shown in +% processed by \LaTeX, and you can use them directly as shown in % section~\ref{sec:default}. % % These marks are set by the commands -% \Cmd{markboth\{leftmark\}\{rightmark\}} and \Cmd{markright\{rightmark\}}. +% \cs{markboth}\marg{leftmark}\marg{rightmark} and \cs{markright}\marg{rightmark}. % These commands are usually used inside commands like \cs{chaptermark} % and \cs{sectionmark} but they can be also be given directly in your % document, although this not very usual. @@ -1160,40 +2039,40 @@ % So if ``2. Implementation'' is the current chapter % and ``2.1.\ First steps'' is the current section, then % -% ^^A \Example -% \begin{verbatim} +% \Example{6} +% \begin{example} % \renewcommand{\chaptermark}[1]{% % \markboth{\chaptername\ \thechapter.\ #1}{}} % \renewcommand{\sectionmark}[1]{\markright{\thesection.\ #1}} -% \end{verbatim} +% \end{example} % will give % ``Chapter 2. Implementation'' and ``2.1.\ First steps'' % % Redefining the \cs{chaptermark} and \cs{sectionmark} commands may -% not eliminate all uppercaseness. E.g.\ the bibliography will have a title +% not eliminate all uppercaseness. E.g., the bibliography will have a title % \CmdIndex{uppercase} % \index{BIBLIOGRAPHY} % of \textsc{bibliography} in the header, as the \cs{MakeUppercase} is % explicitly given in the definition of \cs{thebibliography}. Similar for % \index{INDEX} % \textsc{index} etc.\ If you don't want to redefine these commands, you can -% use the \cs{nouppercase} command that \Package{fancyhdr} makes available in the header +% use the \cs{nouppercase} command that \pkg{fancyhdr} makes available in the header % and footer fields. Note that this may screw other things, like uppercase % roman numerals in your headers, so it should be used with care. Essentially % this command typesets its argument in an environment where % \cs{MakeUppercase} and \cs{uppercase} are changed into identity operations. % -% ^^A \Example -% \begin{verbatim} +% \Example{7} +% \begin{example} % \fancyhead[L]{\nouppercase{\rightmark}} % \fancyhead[R]{\nouppercase{\leftmark}} -% \end{verbatim} +% \end{example} % % Figure~\ref{fig:markers} shows some variants for ``Chapter 2.\ Implementation'' % (the last example is appropriate in some non-English languages). The \texttt{\%} % signs at the end of the lines are to prevent unwanted space. Normally you % would continue the lines and remove these \texttt{\%} signs\footnote{The \texttt{\bs -% MakeUppercase} command is used in \latex/ to generate uppercase text, +% MakeUppercase} command is used in \LaTeX{} to generate uppercase text, % while \cs{uppercase} is the plain \TeX{} command for this. The difference is % that \cs{MakeUppercase} also deals with non-ASCII letters.}. % @@ -1205,26 +2084,32 @@ % \begin{multicols}{2} % \noindent Code:\\ % \mbox{}\\ +% \FExample{8}^^A % \verb|\renewcommand{\chaptermark}[1]{%|\\ % \verb| \markboth{\chaptername|\\ % \verb| \ \thechapter.\ #1}{}}|\\ % \mbox{}\\ +% \FExample{9}^^A % \verb|\renewcommand{\chaptermark}[1]{%|\\ % \verb| \markboth{\MakeUppercase{%|\\ % \verb| \chaptername}\ \thechapter.%|\\ % \verb| \ #1}{}}|\\ % \mbox{}\\ +% \FExample{10}^^A % \verb|\renewcommand{\chaptermark}[1]{%|\\ % \verb| \markboth{\MakeUppercase{%|\\ % \verb| \chaptername\ \thechapter.%|\\ % \verb| \ #1}}{}}|\\ % \mbox{}\\ +% \FExample{11}^^A % \verb|\renewcommand{\chaptermark}[1]{%|\\ % \verb| \markboth{#1}{}}|\\ % \mbox{}\\ +% \FExample{12}^^A % \verb|\renewcommand{\chaptermark}[1]{%|\\ % \verb| \markboth{\thechapter.\ #1}{}}|\\ % \mbox{}\\ +% \FExample{13}^^A % \verb|\renewcommand{\chaptermark}[1]{%|\\ % \verb| \markboth{\thechapter.%|\\ % \verb| \ \chaptername.\ #1}{}}|\\ @@ -1256,11 +2141,11 @@ % \caption{Marker variants}\label{fig:markers} % \end{figure} % -% It should be noted that the \latex/ marking mechanism works fine with +% It should be noted that the \LaTeX{} marking mechanism works fine with % chapters (which always start on a new page) and sections (which are % reasonably long). It does not work quite as well with short sections and -% subsections. This is a problem with \latex/, not with -% \Package{fancyhdr}. +% subsections. This is a problem with \LaTeX, not with +% \pkg{fancyhdr}. % % As an example let's take a page layout where the leftmarks are generated by % the sections and the rightmarks by the subsections (as is default in the @@ -1280,49 +2165,147 @@ % One thing you can do in these cases is use only the \cs{rightmark}s and % redefine \cs{sectionmark} accordingly. % -% However, the \Package{extramarks} package described in section~\ref{sec:xmarks} +% However, the \pkg{extramarks} package described in section~\ref{sec:xmarks} % contains a command % \CmdIndex{firstleftmark} % \cs{firstleftmark} that can be used to get the first of the leftmarks % on the page in the header. This might be the best solution in this % situation. Now the header will contain ``Section 1.'' in the situation % described above. -% ^^A \Example -% \begin{verbatim} +% +% \Example{14} +% \begin{example} % \usepackage{extramarks} % . . . % \fancyhead[R]{\firstleftmark} -% \end{verbatim} +% \end{example} % -% Another problem with the marks in the standard \latex/ classes is that the -% higher level sectioning commands (e.g.\ \cs{chapter}) call +% Another problem with the marks in the standard \LaTeX{} classes is that the +% higher level sectioning commands (e.g., \cs{chapter}) call % \cs{markboth} with an empty right argument. This means that on the first % page of a chapter (or a section in article style) the \cs{rightmark} -% will be empty. The underlying problem is that the \tex/ machinery has -% only one \cs{mark}. All the marks must be packed together in -% this one. So there are no independent left or right marks. That also -% applies to the extra marks as described in section~\ref{sec:xmarks}. -% If this is a problem you must manually insert extra -% \cs{markright} commands or redefine the \cs{chaptermark} -% (\cs{sectionmark}) commands to issue a \cs{markboth} command with -% two decent parameters. -% -% As a final remark you should also note that the \verb|*| forms of the -% \cs{chapter} etc.\ commands do \emph{not} call the mark commands. So if -% you want your preface to set the header info but not be numbered nor be put in -% the table of contents, you must issue the \cs{markboth} command -% yourself, e.g., -% -% \begin{verbatim} +% will be empty. The underlying problem is that the original \TeX{} machinery had +% only one \cs{mark}. All the marks had to be packed together in +% this one. So there were no independent left or right marks. +% Modern \LaTeX{} distributions, however, do have independent marks, so +% this problem can be solved. See Example~35 in +% section~\ref{sec:firstsubsection} for an example. +% +% \section{Headers for unnumbered chapters, sections, etc.} +% \label{sec:unnumbered} +% +% In the standard \LaTeX{} documentclasses the \verb|*| forms of the +% \cs{chapter} etc.\ commands do \emph{not} call the mark commands. So +% these don't appear in the header. Neither are they put in the Table of +% Contents. +% So, for example, if you want your Preface to set the header info but +% not be numbered, you must issue the \cs{markboth} command yourself, +% e.g., +% +% \begin{code} % \chapter*{Preface} % \markboth{Preface}{} -% \end{verbatim} +% \end{code} % -% Or in a documentclass without chapters: -% \begin{verbatim} +% Or for a section: +% \begin{code} % \section*{Preface} % \markboth{Preface}{} -% \end{verbatim} +% \end{code} +% +% It can be a bit annoying to have to repeat the title. If you don't +% want that, it is possible to redefine the \cs{chapter} and/or +% \cs{section} command, in such a way that the \texttt{*} version +% \emph{does} set the header info. For a chapter this is usually done +% with the \cs{markboth} command. For a section in a chapter-oriented +% documentclass with \cs{markright}, otherwise also with \cs{markboth}. +% +% Here is a definition that accomplishes this. +% Redefine the \cs{chapter} command:\\ +% \cs{chapter}\oarg{header}\marg{title}\\ +% \cs{chapter*}\marg{title}\\ +% For the \cs{chapter*} version, we insert a \cs{markboth} command. +% For the non-\texttt{*} version we just pass the arguments to the +% original \cs{chapter} command. +% +% We use the \cs{RenewDocumentCommand} to redefine the \cs{chapter} +% command because it allows us to redefine also the \texttt{*} variant, +% which is much more difficult with \cs{renewcommand}\footnote{If you +% have an older \LaTeX{} distribution that doesn't have the +% \cs{RenewDocumentCommand}, include \PKGindex{xparse}\Cmd{usepackage\{xparse\}} in your +% preamble. Or better: update your \LaTeX{} installation.}. +% +% The \verb|{som}| in the definition defines the arguments of the +% \cs{chapter} command: +% \begin{enumerate} +% \item \texttt{s} - a \texttt{*} which can be present or absent. This +% is checked with \Cmd{IfBooleanTF\{\#1\}} +% \item \texttt{o} - an optional argument. the presence of the optional +% argument is checked with \Cmd{IfNoValueTF\{\#2\}} +% \item \texttt{m} - a mandatory argument +% \end{enumerate} +% We first save the original definition of \cs{chapter} in +% \cs{originalchapter} with the \cs{let} statement. The +% \Cmd{newcommand\cs{originalchapter}\{\}} is just a precaution to get an error message +% if \cs{originalchapter} was already defined, for example by +% another package. +% +% \NoExample{unnumbered} +% \begin{example} +% \newcommand\originalchapter{}% check that we can define this name +% \let\originalchapter\chapter +% \RenewDocumentCommand \chapter {som}{% +% \IfBooleanTF{#1} +% {% \chapter* +% \originalchapter*{#3}% +% \markboth{#3}{}% +% % we can also put it in the Table of Contents +% \addcontentsline{toc}{chapter}{#3} +% }% +% {% normal \chapter +% \IfNoValueTF{#2} +% {\originalchapter{#3}} +% {\originalchapter[#2]{#3}}% +% }% +% } +% \end{example} +% We can do the same for the \cs{section} command, but we use +% \cs{markright} instead of \cs{markboth}. Note that the \cs{mark..} +% commands are called \textbf{after} the original command, because the +% \cs{chapter} command begins with a page break, and a \cs{section} +% could have a page break before it, but not after it. +% +% \textbf{NOTE:} We don't use \cs{chaptermark} or \cs{sectionmark} here +% because these often include the chapter/section number, which doesn't +% make sense for an unnumbered one. +% +% \NoExample{unnumbered} +% \begin{example} +% \newcommand\originalsection{}% check that we can define this name +% \let\originalsection\section +% \RenewDocumentCommand \section {som}{% +% \IfBooleanTF{#1} +% {% \section* +% \originalsection*{#3}% +% \markright{#3}% +% % we can also put it in the Table of Contents +% \addcontentsline{toc}{section}{#3} +% }% +% {% normal \section +% \IfNoValueTF{#2} +% {\originalsection{#3}} +% {\originalsection[#2]{#3}}% +% }% +% } +% \end{example} +% +% Please note that, contrary to the original \LaTeX{} commands, +% these new command do accept an optional argument with +% the \texttt{*} version, but if it is given, they don't use it. It is +% not difficult to add additional code to process this optional argument +% similar to the non-\texttt{*} case. +% This is left as an exercise for the reader, or look at the example +% files \texttt{unnumberedart1.tex} and \texttt{unnumberedart2.tex}. % % \section{Dictionary style headers} % @@ -1330,16 +2313,16 @@ % \index{concordance} % Dictionaries and concordances usually have a header containing the first % word defined on the page or both the first and the last words. This can -% easily be accomplished with \Package{fancyhdr} and \latex/'s +% easily be accomplished with \pkg{fancyhdr} and \LaTeX's % \texttt{mark} mechanism. Of course if you use the marks for dictionary % style headers, you cannot use them for chapter and section information, so % if there are also chapters and sections present, you must redefine the % \cs{chaptermark} and \cs{sectionmark} to make them harmless: % -% \begin{verbatim} +% \begin{code} % \renewcommand{\chaptermark}[1]{} % \renewcommand{\sectionmark}[1]{} -% \end{verbatim} +% \end{code} % % Now you do a \Cmd{markboth\{\#1\}\{\#1\}} for each dictionary or concordance % entry \verb|#1| and use \cs{rightmark} for the first entry defined on @@ -1349,19 +2332,19 @@ % it would be nice if this would be reduced to just the form % \textsf{firstword} if both are the same. This could happen if there is just % one entry on the page. In this case a test must be made to check if the -% marks are the same. However, \tex/'s marks are strange beasts, which -% cannot be compared out of the box with the plain \tex/ \cs{if} commands. -% \TTindex{ifthen} -% Fortunately the \Package{ifthen} package works well: +% marks are the same. However, \TeX's marks are strange beasts, which +% cannot be compared out of the box with the plain \TeX{} \Cmd{if} commands. +% Fortunately the \PKGindex{ifthen}\pkg{ifthen} package works well: % -% \begin{verbatim} +% \Example{15} +% \begin{example} % \newcommand{\mymarks}{ % \ifthenelse{\equal{\leftmark}{\rightmark}} % {\rightmark} % if equal % {\rightmark--\leftmark}} % if not equal % \fancyhead[LE,RO]{\mymarks} % \fancyhead[LO,RE]{\thepage} -% \end{verbatim} +% \end{example} % % \section{Fancy layouts} % \label{sec:fancy}\label{sec:warning} @@ -1386,7 +2369,8 @@ % subsection title of an article in two lines in the upper right hand % corner: % -% \begin{verbatim} +% \Example{16} +% \begin{example} % \documentclass{article} % \usepackage{fancyhdr} % \pagestyle{fancy} @@ -1394,42 +2378,46 @@ % \renewcommand{\sectionmark}[1]{\markboth{#1}{}} % \renewcommand{\subsectionmark}[1]{\markright{#1}} % \fancyhead[R]{\leftmark\\\rightmark} -% \end{verbatim} +% \end{example} +% +% Note that if you want to use header or footer layouts with multiline +% parts that have to be aligned, you can do this with +% the \cs{fancyhdrbox} command. See section~\ref{sec:fancyhdrbox}. % % You can also customize the decorative lines. You can make the decorative % line in the header quite thick with % % \CmdIndex{headrulewidth} -% \begin{verbatim} +% \begin{code} % \renewcommand{\headrulewidth}{0.6pt} -% \end{verbatim} +% \end{code} % or you can make the decorative line in the footer disappear with % \CmdIndex{footrulewidth} -% \begin{verbatim} +% \begin{code} % \renewcommand{\footrulewidth}{0pt} -% \end{verbatim} +% \end{code} % % The decorative lines, themselves, are defined in the two macros % \cs{headrule} and \cs{footrule}. For instance, % if you want a dotted line rather than a solid line in the header, % redefine the command \cs{headrule}: % -% \begin{verbatim} +% \begin{code} % \renewcommand{\headrule}{\vbox to 0pt % {\makebox[\headwidth]{\dotfill}\vss}} -% \end{verbatim} +% \end{code} % -% The redefined \cs{headrule} should preferably take up no vertical space, as in the example above, and as in the standard definition. If it does take vertical space, the header may come too close to the text, or even intrude in the text. In that case \Package{fancyhdr} will give you a warning that \cs{headheight} is too small. Like -% \begin{verbatim} +% The redefined \cs{headrule} should preferably take up no vertical space, as in the example above, and as in the standard definition. If it does take vertical space, the header may come too close to the text, or even intrude in the text. In that case \pkg{fancyhdr} will give you a warning that \cs{headheight} is too small. Like +% \begin{code} % Package fancyhdr Warning: \headheight is too small (12.0pt): % (fancyhdr) Make it at least 14.0pt, for example: % (fancyhdr) \setlength{\headheight}{14.0pt}. -% (fancyhdr) You might also make \topmargin smaller to compensate: +% (fancyhdr) You might also make \topmargin smaller: % (fancyhdr) \addtolength{\topmargin}{-2.0pt}. -% \end{verbatim} +% \end{code} % \label{page:warning}\index{Warning} % You will probably get this warning on every page. -% \textbf{Note:} Before version 4.0, \Package{fancyhdr} would change the +% \textbf{Note:} Before version 4.0, \pkg{fancyhdr} would change the % \cs{headheight} itself, causing the text on the following pages % to come out lower than on this page. This appeared to be confusing, so % since version~4.0 this is no longer done (except when you give the @@ -1437,15 +2425,15 @@ % \texttt{compatV3} package option. You should not give this as a % permanent solution, however, but solve the problem). Therefore you are strongly advised to % redefine \cs{headheight} in the preamble, like this: -% \begin{verbatim} +% \begin{code} % \setlength{\headheight}{14pt} -% \end{verbatim} +% \end{code} % This would cause the main text to be put 2pt lower on the page, which % might be undesirable. You can compensate this by making \cs{topmargin} % correspondingly smaller, for example -% \begin{verbatim} +% \begin{code} % \addtolength{\topmargin}{-2pt} -% \end{verbatim} +% \end{code} % A similar change would be necessary for \cs{footskip} if the footer comes out too tall. % % You can also eliminate this check completely by using the @@ -1453,20 +2441,21 @@ % \texttt{nocheck} option of the package. But this may risk unwanted % run-ins of the header or footer with other text. So this is generally % discouraged. It is better to change \cs{headheight}, \cs{footskip}, -% and/or \cs{topmargin}. But in cases where you generate the \latex/ +% and/or \cs{topmargin}. But in cases where you generate the \LaTeX{} % code automatically, and the software does not know how tall the header % or footer will be, this may be handy. % % As an alternative to changing \cs{headrulewidth} to 0 to have the rule % disappear, you can also make it empty with -% \begin{verbatim} +% \begin{code} % \renewcommand{\headrule}{} -% \end{verbatim} +% \end{code} % Visually this makes no difference, but it is more difficult to restore % it later to its default value. % % Finally, let us make a real `decorative' line\footnote{Based upon an idea by Wayne Chan.}. -% \begin{verbatim} +% \PKGindex{fourier-orns}% +% \begin{code} % \usepackage{fourier-orns} % ... % \renewcommand\headrule{% @@ -1474,7 +2463,7 @@ % \raisebox{-2.1pt} % {\quad\decofourleft\decotwo\decofourright\quad}% % \hrulefill} -% \end{verbatim} +% \end{code} % This gives us the following headrule: % % \noindent\makebox[\textwidth]{\hrulefill @@ -1486,20 +2475,20 @@ % should change \cs{headheight} as given above. Another problem is that % the distance between the line and the header text is quite big. We can % reduce this by putting a negative \cs{vspace} above it, like -% \begin{verbatim} +% \Example{17} +% \begin{example} % \renewcommand\headrule{% % \vspace{-6pt} % \hrulefill % \raisebox{-2.1pt} % {\quad\decofourleft\decotwo\decofourright\quad}% % \hrulefill} -% \end{verbatim} +% \end{example} % % We can use the same code for the \cs{footrule}, but we wouldn't need % the \cs{vspace}. If you want to change the distance between that % decorative line and the footer text you need to adjust the % \CmdIndex{footruleskip} -% \DescribeMacro{\footruleskip} % parameter \cs{footruleskip}. It % defines the distance between the decorative line in the footer and the top % of the footer text line. By default it is set to 30\% of the normal line @@ -1511,9 +2500,8 @@ % the maximum depth of possible descenders in the text, which is 30\% of % the normal line distance. You can increase or decrease this distance % \CmdIndex{headruleskip} -% \DescribeMacro{\headruleskip} -% by defining the macro \cs{headruleskip}, similar to \cs{footruleskip} -% \footnote{(But \cs{headruleskip} is only available since version~4.0.)}. +% by defining the macro \cs{headruleskip}, similar to \cs{footruleskip}.% +% \footnote{But \cs{headruleskip} is only available since version~4.0.} % This defines the extra distance. The default value is 0pt, and % positive values make the distance larger, and negative values make the % distance shorter. @@ -1525,18 +2513,70 @@ % % \pagestyle{showstruts} % \noindent\begin{minipage}{\textwidth} +% \parindent=\normalparindent % \phantomsection\label{showstruts} % \indent The header and footer in this page % show the \emph{strut} (the amount of space in the text area above and % below the baseline), and the \cs{headruleskip} and \cs{footruleskip}. -% For this page \cs{headruleskip} is 4pt. +% For this page \cs{headruleskip} is 4pt and \cs{footruleskip} is 3.6pt +% (0.3\cs{normalbaselineskip}). +% +% The code for this can be found in section~\ref{sec:curpagestyle}. % \end{minipage} % +% \paragraph{Fine-tuning the footer position.} +% \label{sec:fancyfootalign} +% By default \LaTeX{} positions the baseline of the footer on the bottom +% edge of the bottom margin (the lower line of the footer box in +% figure~\ref{fig:layout}). Most of the time this is what you want, but +% it means that any descenders in the footer (symbols that extend below +% the baseline, e.g., p and g or parentheses). See +% figure~\ref{fig:footalign-default}, where the horizontal line denotes the +% bottom border. +% +% \begin{figure}[hbpt] +% \subcaptionsetup{format=hang} +% \centering\LARGE\setlength\parindent{0pt} +% \subcaptionbox{default footer positioning\label{fig:footalign-default}} +% {\mbox{\rule{5cm}{0.2pt}\hspace{-4cm}\fbox{\strut Page Footer}}} +% \hspace{2cm} +% \subcaptionbox{\raggedright footer positioning with \cmd{\fancyfootalign}\marg{length}\label{fig:footalign-length}}[0.5\linewidth][l] +% {\mbox{\rule{6cm}{0.2pt}\hspace{-5.5cm}% +% \raisebox{0.7\baselineskip}[0.8\baselineskip][0pt]{\fbox{\strut Page Footer}}% +% \normalsize\hspace{-4pt}\raisebox{5pt}{$\swarrow$}\raisebox{10pt}{\meta{length}}}} +% \caption{Vertical footer positioning} +% \end{figure} +% +% In some cases this is undesirable, for example when the bottom border +% is completely missing (\texttt{0pt}). In that case the descenders are +% cut off because they are outside of the paper, and even if there are +% no descenders, the resulting layout with the footer at the edge of the +% paper isn't esthetic. The beamer class has this layout. +% +% In this case we can shift the footer up with the \cs{fancyfootalign} +% command (only available in \pkg{fancyhdr} 5.0 and later). +% This command has two versions: +% \begin{flushleft} +% \cs{fancyfootalign}\texttt{\{\}} -- This selects the default alignment, +% as in figure~\ref{fig:footalign-default}.\\ +% \cs{fancyfootalign}\marg{length} -- This gives extra space of +% \meta{length} between \emph{the bottom of the footer, (including the +% space for descenders and the interline space)}, and the border. See +% figure~\ref{fig:footalign-length}. +% \end{flushleft} +% Usually a \meta{length} of \texttt{0pt} is sufficient; this means that +% the bottom of the footer box coincides with the bottom border. You can +% also use negative \meta{length} values, so that the footer box only +% partially sticks out under the border. A given \meta{length} applies +% to all subsequent footers (but is subject to the local group +% structure). It can be cancelled by \cs{fancyfootalign}\texttt{\{\}}. +% See section~\ref{sec:beamer} for an example. +% % \section{Two book examples} % \label{sec:book-examples} % % The following definitions give an approximation of the style -% used in L. Lamport's \latex/ book. +% used in L. Lamport's \LaTeX{} book. % % Lamport's header overhangs the outside margin. This is done as follows. % @@ -1551,10 +2591,10 @@ % printed, add both \cs{marginparsep} and \cs{marginparwidth} to % \cs{headwidth} with the commands: % -% \begin{verbatim} +% \begin{code} % \addtolength{\headwidth}{\marginparsep} % \addtolength{\headwidth}{\marginparwidth} -% \end{verbatim} +% \end{code} % % \begin{flushleft} % It is safest to issue these commands \emph{after} the first @@ -1571,7 +2611,8 @@ % each chapter begins with a page that contains only a drawing. In most % other cases you probably would want a page number on the page.) % -% \begin{verbatim} +% \Example{18} +% \begin{example} % \documentclass{book} % \usepackage{fancyhdr} % \pagestyle{fancy} @@ -1587,14 +2628,14 @@ % \fancyhead{} % get rid of headers % \renewcommand{\headrulewidth}{0pt} % and the line % } -% \end{verbatim} +% \end{example} % \PSindex{plain} % % Notice that the \cs{chaptermark} and \cs{sectionmark} commands have % been redefined to eliminate the chapter numbers and the uppercaseness. % % For more control about the horizontal position of the headers and/or -% footers, \Package{fancyhdr} has additional commands to specify the +% footers, \pkg{fancyhdr} has additional commands to specify the % offset of the header and/or footer elements. Use % \Cmd{fancyhfoffset[place]\{length\}} % \CmdIndex{fancyhfoffset} @@ -1609,46 +2650,46 @@ % \CmdIndex{fancyheadoffset} % \CmdIndex{fancyfootoffset} % -% When you use these commands, \latex/ will recalculate \cs{headwidth}, +% When you use these commands, \LaTeX{} will recalculate \cs{headwidth}, % based on the given parameters. % % So the above example could also have been done with (N.B. You can only -% use such an expression as a length parameter if the \Package{calc} +% use such an expression as a length parameter if the \PKGindex{calc}\pkg{calc} % package is used): % -% \begin{verbatim} +% \Example{19} +% \begin{example} % \fancyheadoffset[LE,RO]{\marginparsep+\marginparwidth} -% \end{verbatim} +% \end{example} % % \textbf{NOTE:} If you change the \cs{textwidth} in the middle of your -% document, for example by using the \Package{geometry}\TTindex{geometry} package, +% document, for example by using the \PKGindex{geometry}\pkg{geometry} package, % by default the \cs{headwidth} will not change, as it picks up the value % of \cs{textwidth} at the beginning of the document. If you want it to track % the changes to \cs{textwidth}, you should use the command \verb|\fancyhfoffset{0pt}| % in the neighborhood of your header/footer definitions, unless you % already use such an \texttt{\ldots offset} command, of course. % \vspace{\baselineskip} -% -% For the second example, we take the \amslatex/ book\footnote{George Gratzer, -% \textit{Math into LaTeX, An Introduction to \LaTeX{} and \amslatex/}, Birkhauser, Boston.}. +% For the second example, we take the \ams/-\LaTeX{} book\footnote{George Gratzer, +% \textit{Math into LaTeX, An Introduction to \LaTeX{} and \ams/-\LaTeX}, Birkhauser, Boston.}. % % Chapter pages have no headers or footers. So we declare % -% \begin{verbatim} +% \begin{code} % \thispagestyle{empty} -% \end{verbatim} +% \end{code} % for every chapter page, and we do not need to redefine plain. % % Chapter and section titles appear in the form: 2.\ IMPLEMENTATION, so we have % to redefine \cs{chaptermark} and \cs{sectionmark} as follows (see % Section~\ref{sec:scoop}): % -% \begin{verbatim} +% \begin{code} % \renewcommand{\chaptermark}[1]% % {\markboth{\MakeUppercase{\thechapter.\ #1}}{}} % \renewcommand{\sectionmark}[1]% % {\markright{\MakeUppercase{\thesection.\ #1}}} -% \end{verbatim} +% \end{code} % % On an even page, the page number is printed as the left header and % the chapter info as the right header; on an odd page, the section info @@ -1658,10 +2699,10 @@ % There is a decorative line in the header. It is 0.5pt wide, so we need % the commands: % -% \begin{verbatim} +% \begin{code} % \renewcommand{\headrulewidth}{0.5pt} % \renewcommand{\footrulewidth}{0pt} -% \end{verbatim} +% \end{code} % % The font used in the headers is 9 pt bold Helvetica. The \textsf{PSNFSS} system % (originally by the late Sebastian Rahtz) uses the short (Karl Berry) name \texttt{phv} for @@ -1669,18 +2710,19 @@ % Heros, which uses the short name \texttt{qhv} so this font is selected with the commands^^A % \footnote{See \emph{The \LaTeX{} Companion, Third Edition}, Part I, section % 9.5.2, and Part II, section 10.8.16.}: -% \begin{verbatim} +% \begin{code} % \fontfamily{qhv}\fontseries{b}\fontsize{9}{11}\selectfont -% \end{verbatim} +% \end{code} % Let us define a shorthand for this: -% \begin{verbatim} +% \begin{code} % \newcommand{\helv}{% % \fontfamily{qhv}\fontseries{b}\fontsize{9}{11}\selectfont} -% \end{verbatim} +% \end{code} % % Now we are ready for the page layout: % -% \begin{verbatim} +% \Example{20} +% \begin{example} % \documentclass{book} % \usepackage{fancyhdr} % \pagestyle{fancy} @@ -1696,8 +2738,36 @@ % \fancyhead[LE,RO]{\helv \thepage} % \fancyhead[LO]{\helv \rightmark} % \fancyhead[RE]{\helv \leftmark} -% \end{verbatim} +% \end{example} +% % +%\section{Summary of \cs{headwidth} calculation} +%\label{sec:headwidth} +% +% Here is a summary of the calculation of the widths of headers and +% footers, as illustrated in \smartref{sec:headwidth}{sec:book-examples}. +% \begin{itemize} +% \CmdIndex{headwidth}% +% \CmdIndex{textwidth}% +% \CmdIndex{fancyhfoffset}% +% \CmdIndex{fancyheadoffset}% +% \CmdIndex{fancyfootoffset}% +% \item If no \cs{fancy...offset} commands are given, the default value +% for \cs{headwidth} is \cs{textwidth}. This is used for the width of +% both the header and the footer. It is possible to change the value of +% \cs{headwidth}, for example with \cs{setlength} or \cs{addtolength}. +% The excess or deficit will be applied to the right for a onesided +% document, and for a two-sided document to the right on odd pages and to +% the left on even pages. The header and the footer will have the same +% width, \cs{headwidth}. +% \item If some \cs{fancy...offset} command is given, the header and +% footer widths are independently calculated by adding the appropriate +% offsets to \cs{textwidth}. Any changes made to \cs{headwidth} will not +% be taken into account. The header/footer will stick in/out at the proper +% side(s) specified by the offsets. +% \end{itemize} +% The file \texttt{example-headwidth.tex} in the \texttt{Examples} +% branch of the repository illustrates this. % % \section{Special page layout for float pages} % \label{sec:float} @@ -1705,10 +2775,10 @@ % \index{float page} % Some people want to have a special layout for float pages (pages only % containing floats). As these pages -% are generated autonomically by \latex/, the user doesn't have any control +% are generated autonomically by \LaTeX, the user doesn't have any control % over them. There is no \cs{thispagestyle} for float pages and any change % of the page style will at least also affect the page before the float page. -% With \Package{fancyhdr}, however, you can specify in each of +% With \pkg{fancyhdr}, however, you can specify in each of % the header- or footer fields % % \medskip @@ -1718,19 +2788,13 @@ % You can even use this to get rid of the decorative line on float pages only % by defining: % -% \begin{verbatim} +% \Example{21} +% \begin{example} % \renewcommand{\headrulewidth}{\iffloatpage{0pt}{0.4pt}} -% \end{verbatim} -% -% \textbf{NOTE:} There is also a package \TTindex{floatpag}% -% \Package{floatpag}\footnote{\url{https://www.ctan.org/pkg/floatpag}} by Vytas -% Statulevičius and Sigitas Tolušis that has a command -% \cs{floatpagestyle}\marg{pagestyle}, that applies \meta{pagestyle} to -% all float pages, where \meta{pagestyle} can be defined with -% \cs{fancypagestyle} (or by any other means). +% \end{example} % -% \textbf{NOTE:} There is also a package \TTindex{floatpag}% -% \Package{floatpag}\footnote{\url{https://www.ctan.org/pkg/floatpag}} by Vytas +% \textbf{NOTE:} There is also a package \PKGindex{floatpag}% +% \pkg{floatpag}\footnote{\url{https://www.ctan.org/pkg/floatpag}} by Vytas % Statulevičius and Sigitas Tolušis that has a command % \cs{floatpagestyle}\marg{pagestyle}, that applies \meta{pagestyle} to % all float pages, where \meta{pagestyle} can be defined with @@ -1740,16 +2804,16 @@ % Sometimes you may want to change the layout also for pages that contain a % float on the top of the page, a float on the bottom of the page or a footnote on the bottom of the page. % -% \Package{fancyhdr} gives you the commands \cs{iftopfloat}, \cs{ifbotfloat} and \cs{iffootnote} +% \pkg{fancyhdr} gives you the commands \cs{iftopfloat}, \cs{ifbotfloat} and \cs{iffootnote} % similar to \cs{iffloatpage}. For example: -% \begin{verbatim} +% \begin{code} % \fancyhead[R]{\iftopfloat{This page has a topfloat} % {There is no topfloat here}} -% \end{verbatim} +% \end{code} % -% Note: Marks in floats will not be visible in \latex/'s output routine, so +% Note: Marks in floats will not be visible in \LaTeX's output routine, so % it is not useful to put marks in floats. So there is currently no way to -% let a float (e.g.\ a figure caption) influence the page header or footer. +% let a float (e.g., a figure caption) influence the page header or footer. % % \section{Those blank pages} % \label{sec:blank} @@ -1757,7 +2821,7 @@ % In the \texttt{book} class when the \texttt{openany} option is not given or % in the \texttt{report} class when the \texttt{openright} option is given, % chapters start at odd-numbered pages, half of the time causing a blank page -% to be inserted. Some people prefer this page to be completely empty, i.e.\ +% to be inserted. Some people prefer this page to be completely empty, i.e., % without headers and footers. This cannot be done with \cs{thispagestyle} % as this command would have to be issued on the \emph{previous} page. There % is, however, no magic necessary to get this done: @@ -1765,9 +2829,9 @@ % \PSindex{empty} % \CmdIndex{clearpage} % \CmdIndex{cleardoublepage} -% \begin{verbatim} +% \begin{code} % \clearpage\begingroup\pagestyle{empty}\cleardoublepage\endgroup -% \end{verbatim} +% \end{code} % % As the \Cmd{pagestyle\{empty\}} is enclosed in a group it only affects the % page that may be generated by the \cs{cleardoublepage}. You can of @@ -1775,7 +2839,7 @@ % automatically at each chapter start or when you want some other text on the % page then you must redefine the \cs{cleardoublepage} command. % \index{blank page} -% \begin{verbatim} +% \begin{code} % \makeatletter % \def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else % \begingroup @@ -1790,44 +2854,45 @@ % \if@twocolumn\mbox{}\newpage\fi % \endgroup\fi\fi} % \makeatother -% \end{verbatim} +% \end{code} % % \section{\textsf{N} of \textsf{M} style page numbers} % \label{sec:nofm} % % Some document writers prefer the pages to be numbered as \textsf{n} of % \textsf{m} where \textsf{m} is the number of pages in the document. -% There is a package \Package{lastpage} -% \TTindex{lastpage} -% available which you can use with \Package{fancyhdr} as follows: +% There is a package \PKGindex{lastpage}\pkg{lastpage} +% available which you can use with \pkg{fancyhdr} as follows: % -% \begin{verbatim} +% \Example{22} +% \begin{example} % \usepackage{lastpage} % ... % \fancyfoot[C]{\thepage\ of \pageref{LastPage}} -% \end{verbatim} -% Because you want the pages with pagestyle \texttt{plain} to contain +% \end{example} +% Because you want the pages with page style \texttt{plain} to contain % the same style of page numbers, you will have to redefine this -% pagestyle too. -% \begin{verbatim} +% page style too. +% \begin{code} % \fancypagestyle{plain}{\fancyhead{}\renewcommand{\headrule}{}} -% \end{verbatim} +% \end{code} % We clear all the headers including its rule. The footer will be -% ``inherited'' from the pagestyle \texttt{fancy}. +% ``inherited'' from the page style \texttt{fancy}. % -% The value of the \texttt{LastPage}\TTindex{LastPage} label can be used to -% make different headers or footers on the last page of a document. E.g.\ if +% The value of the \TTindex{LastPage}\texttt{LastPage} label can be used to +% make different headers or footers on the last page of a document. E.g., if % you want the footer of every odd page, except if it is the last one, to % contain the text ``Please turn over'', this can be done by checking if % the page number is odd, and if it is equal to the number of the last page. % -% We use the macro \cs{getpagerefnumber} from the package\TTindex{refcount} -% \Package{refcount}, because \cs{pageref} isn't always usable in a +% We use the macro \cs{getpagerefnumber} from the package +% \PKGindex{refcount}% +% \pkg{refcount}, because \cs{pageref} isn't always usable in a % numerical context (it is meant for typesetting only). This is also done in % following similar examples. % -% \TTindex{ifthen}\TTindex{lastpage}\TTindex{refcount} -% \begin{verbatim} +% \PKGindex{ifthen}\PKGindex{lastpage}\PKGindex{refcount} +% \begin{code} % \usepackage{ifthen} % \usepackage{lastpage} % \usepackage{refcount} @@ -1837,7 +2902,7 @@ % \not \( \value{page}=\getpagerefnumber{LastPage} \) }% % {Please turn over}{}% % } -% \end{verbatim} +% \end{code} % % In order to get the number of pages correctly used, you usually have % to do one additional \LaTeX{} run. @@ -1848,7 +2913,7 @@ % In technical documentation very often page numbers are used of the form % 2-10 where the first number is the chapter number and the second is the % pagenumber relative to the chapter. Sometimes section is used rather than -% chapter. The package \Package{chappg} can be used to get this format. +% chapter. The package \PKGindex{chappg}\pkg{chappg} can be used to get this format. % % Basically this package redefines \cs{thepage} as % \cs{thechapter}\cs{chappgsep}\Cmd{arabic\{page\}}, where @@ -1856,19 +2921,20 @@ % separator, you must redefine \cs{chappgsep}, for example to use an % en-dash: % -% \begin{verbatim} +% \begin{code} % \renewcommand{\chappgsep}{--} -% \end{verbatim} +% \end{code} % % To use a different prefix, for example the section number, use the % \Cmd{pagenumbering\{bychapter\}} command with an optional argument % specifying the prefix. % \CmdIndex{pagenumbering} % -% \begin{verbatim} +% \Example{23} +% \begin{example} % \clearpage % \pagenumbering[\thesection]{bychapter} -% \end{verbatim} +% \end{example} % % What the package also does is reset the page number to 1 at the beginning % of each chapter. @@ -1884,17 +2950,17 @@ % after the first \cs{chapter} command. If you want to do it before the % \cs{chapter} command you must precede it % by a \cs{newpage} command (see the next section). -% \begin{verbatim} +% \begin{code} % \pagenumbering{roman} % \tableofcontents % \newpage % \pagenumbering{bychapter} % \chapter{Introduction} -% \end{verbatim} +% \end{code} % % There is a caveat when you have appendices in your document. Before the % \cs{appendix} command you should give a \cs{clearpage} or -% \cs{cleardoublepage}. See the \Package{chappg} documentation for +% \cs{cleardoublepage}. See the \pkg{chappg} documentation for % details. % % There is a fundamental difference between the page numbering of the style @@ -1912,30 +2978,30 @@ % Page style \texttt{fancy}, if not redefined, does not have the definitions of the % headers and footers built-in, but they are defined in the document, % globally, or locally in a group. This also applies to the definitions of the -% \cs{chaptermark} and/or \cs{[sub]sectionmark} commands. So if you want +% \cs{chaptermark} and/or \Cmd{[sub]sectionmark} commands. So if you want % to switch from another page style to the \texttt{fancy} page style % later in the document, and that other page style has changed for -% example the \cs{chaptermark} and/or \cs{[sub]sectionmark} commands, +% example the \cs{chaptermark} and/or \Cmd{[sub]sectionmark} commands, % you will have to redefine these yourself and maybe also % the definitions of the headers and footers, at that point. % For example -% \begin{verbatim} +% \begin{code} % \pagestyle{fancy} % \renewcommand{\chaptermark}[1]{\markboth{Chapter \thechapter. #1}{}} % \renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} -% \end{verbatim} +% \end{code} % % If the previous page style was one of the standard \LaTeX{} page -% styles, or some page style that is not based on \Package{fancyhdr}, +% styles, or some page style that is not based on \pkg{fancyhdr}, % then the definitions of \cs{fancyhead} or \cs{fancyfoot} are not % affected. So strictly you don't have to include them. But if it was -% based on \Package{fancyhdr} and had different definitions, you will +% based on \pkg{fancyhdr} and had different definitions, you will % get the wrong headers and/or footers when you switch back to page % style \texttt{fancy}. So it is safer to include them anyway. % % A better possibility is to define your own page style, and include % these definitions in that page style: -% \begin{verbatim} +% \begin{code} % \fancypagestyle{myfancy}{ % \renewcommand{\chaptermark}[1]{\markboth{Chapter \thechapter. ##1}{}} % \renewcommand{\sectionmark}[1]{\markright{\thesection\ ##1}} @@ -1943,7 +3009,7 @@ % } % ... % \pagestyle{myfancy} -% \end{verbatim} +% \end{code} % Please note that you now have to double the \verb|#| signs, because the % definitions are inside a macro. % @@ -1967,11 +3033,115 @@ % \cs{clearpage} or \cs{cleardoublepage} command % before the \cs{pagestyle} command, so that the last page will be % finished with the previous page style. I.e., the proper sequence is: -% \begin{verbatim} +% \begin{code} % \newpage % (or \clearpage or \cleardoublepage) % \pagestyle{newstyle} % \chapter{My New Chapter} -% \end{verbatim} +% \end{code} +% +% Finally, in this section, we give an example that illustrates why +% using \emph{closed} page styles is recommendable. +% +% Suppose we have a part of our document, maybe one or more chapters, +% that need a different style headers and/or footers than the rest of +% the document. We can do this by defining a new page style for this +% part with \cs{fancypagestyle}. First we use the traditional +% (\emph{open}) form: +% \NoExample{switchstyle1} +% \begin{example} +% \pagestyle{fancy} +% \fancyhf{} +% \fancyhead[L]{\leftmark} +% \fancyhead[R]{\rightmark} +% \fancyfoot[C]{\thepage} +% +% \fancypagestyle{special}{% +% \fancyhf{} +% \renewcommand{\headrulewidth}{0pt} +% \fancyhead[L]{Special Page Style \nouppercase\leftmark} +% \fancyfoot[R]{\thepage} +% } +% . . . +% \chapter{Special Chapter} +% \pagestyle{special} +% Chapter text +% +% \chapter{Another Chapter} +% \pagestyle{fancy} +% Chapter text +% \end{example} +% Now the last chapter will not use the headers and footers that we +% defined in the beginning, but those that are defined in page style +% \texttt{special}. This is because the command +% \Cmd{pagestyle\{special\}} will just execute the definitions inside +% it, and so it changes the definitions of \cs{fancyhead[]} etc. Also +% the definition of \cs{headrulewidth} will not be restored. +% +% To remedy this we would need to put the relevant definitions inside +% the page style \texttt{fancy}. First we try this with the \emph{open} +% \cs{fancypagestyle}. +% +% \NoExample{switchstyle2} +% \begin{example} +% \fancypagestyle{fancy}{% +% \renewcommand{\headrulewidth}{0.4pt} +% \fancyhf{} +% \fancyhead[L]{\leftmark} +% \fancyhead[R]{\rightmark} +% \fancyfoot[C]{\thepage} +% } +% +% \fancypagestyle{special}{% +% \fancyhf{} +% \renewcommand{\headrulewidth}{0pt} +% \fancyhead[L]{Special Page Style \nouppercase\leftmark} +% \fancyfoot[R]{\thepage} +% } +% \pagestyle{fancy} +% . . . +% \chapter{Special Chapter} +% \pagestyle{special} +% Chapter text +% +% \chapter{Another Chapter} +% \pagestyle{fancy} +% Chapter text +% \end{example} +% We now have the relevant definitions also embedded in page style +% \texttt{fancy}. Note that we have to include the (default) definition +% of \cs{headrulewidth}, although it looks unlogical that we have to do this. +% But we need it because page style \texttt{special} changes it. And if +% we had another page style that would change for example the +% \texttt{offsets} (see section~\ref{sec:book-examples}) then we would +% also have to include these. This is the reason for the existence of +% the \emph{closed} form \cs{fancypagestyle*}. So now we give the +% solution with these. This solves the problem in an elegant and robust way. +% +% \NoExample{switchstyle3} +% \begin{example} +% \fancypagestyle*{fancy}{% +% \fancyhf{} +% \fancyhead[L]{\leftmark} +% \fancyhead[R]{\rightmark} +% \fancyfoot[C]{\thepage} +% } +% +% \fancypagestyle*{special}{% +% \fancyhf{} +% \renewcommand{\headrulewidth}{0pt} +% \fancyhead[L]{Special Page Style \nouppercase\leftmark} +% \fancyfoot[R]{\thepage} +% } +% \pagestyle{fancy} +% . . . +% \chapter{Special Chapter} +% \pagestyle{special} +% Chapter text +% +% \chapter{Another Chapter} +% \pagestyle{fancy} +% Chapter text +% \end{example} % % \section{When to change the headers and footers?} % \label{sec:change} @@ -1981,10 +3151,10 @@ % Sometimes you want to change only a header or footer without changing % the whole page style. % -% It should be noted that although the \Package{fancyhdr} commands like +% It should be noted that although the \pkg{fancyhdr} commands like % \cs{fancyhead} take effect immediately, this does not mean that any % ``variables'' used in these commands get the value they have at the place -% where these commands are given. E.g.\ if \Cmd{fancyfoot[C]\{}\Cmd{thepage\}} is given +% where these commands are given. E.g., if \Cmd{fancyfoot[C]\{}\Cmd{thepage\}} is given % the page number that will be inserted in the footer is not the page number % of the page where this command is given, but rather the page number of % the actual page where the footer is constructed. Of course for the page @@ -1998,11 +3168,12 @@ % If we want the name of the author in the header opposite the chapter % title, we can use the following commands: % -% \begin{verbatim} +% \Example{24} +% \begin{example} % \newcommand{\TheAuthor}{} % \newcommand{\Author}[1]{\renewcommand{\TheAuthor}{#1}} % \fancyhead[LE,RO]{\TheAuthor} -% \end{verbatim} +% \end{example} % % \noindent and start each chapter with the command % \Cmd{Author\{Real Name\}}. @@ -2011,22 +3182,22 @@ % if you gave the above command \emph{before} the \cs{chapter} command % rather than after it. So we give the \cs{Author} command after the % \cs{chapter} command: -% \begin{verbatim} +% \begin{code} % \chapter{Chapter Title} % \Author{Author Name} -% \end{verbatim} +% \end{code} % As a chapter starts on a new page, we can be sure that the \cs{Author} % command comes at the same page as the chapter start. % -% Another source of problems is the fact that \tex/'s output routine processes +% Another source of problems is the fact that \TeX's output routine processes % commands ahead, so it may already have processed some commands that produce % text that will appear on the next page. So if our book was not divided % into chapters, but into sections, we cannot use the similar system: -% \begin{verbatim} +% \begin{code} % %%% NOTE: This may not work %%%% % \section{Chapter Title} % \Author{Author Name} -% \end{verbatim} +% \end{code} % because in this case, when this command comes at the end of a page, % the ``variable'' \cs{TheAuthor} could be set at that page, but then % \TeX{} could decide to move the section title to the next page. And @@ -2034,7 +3205,7 @@ % be solved using marks. In fact this is the whole reason the mark % mechanism was developed in \TeX. See section~\ref{sec:xmarks}. % -% The same applies to other changes in the middle of a page, e.g.\ to change the page +% The same applies to other changes in the middle of a page, e.g., to change the page % numbering from roman to arabic (with \cs{pagenumbering}). For the same % reason \Cmd{thispagestyle\{mystyle\}} will not always work in the % middle of a page. @@ -2048,6 +3219,7 @@ % the current page and changing the style of the next page. % % \subsection{Changing the page style of the current page} +% \label{sec:curpagestyle} % % So now we are giving an example how to change the headers and footers, % only on the current page. In some cases this can be done by the @@ -2070,15 +3242,15 @@ % the page number with the label page number and choose the proper % value. For example, if we want to replace the section title on the % special page with ``MYFANCY SECTION'', like in -% \begin{verbatim} +% \begin{code} % \fancypagestyle{myfancy}{ % \fancyhead[LE,RO]{MYFANCY SECTION} % } -% \end{verbatim} -% ^^A\Example -% we define a new pagestyle that makes the choice: -% \TTindex{ifthen}\TTindex{refcount} -% \begin{verbatim} +% \end{code} +% \Example{25 (a)} +% we define a new page style that makes the choice: +% \PKGindex{ifthen}\PKGindex{refcount} +% \begin{example} % \usepackage{ifthen} % \usepackage{refcount} % . . . @@ -2088,7 +3260,7 @@ % {MYFANCY SECTION} % {\textsl{\rightmark}}} % } -% \end{verbatim} +% \end{example} % \CmdIndex{ifthenelse} % where \verb|\textsl{\rightmark}| is the normal value of the header % field from \Cmd{pagestyle\{fancy\}}. @@ -2106,7 +3278,7 @@ % appears. It depends on the positioning of the \cs{label} command. % Probably it is safer to make sure the sentence isn't broken. This can % be done by putting the text in a \cs{parbox} or \texttt{minipage} environment. -% \begin{verbatim} +% \begin{code} % \noindent % \begin{minipage}{\textwidth} % This page should have a different header than the surrounding pages. @@ -2115,7 +3287,7 @@ % has tests in the header field definitions. This chooses the actual % header depending on the page number. % \end{minipage} -% \end{verbatim} +% \end{code} % The \cs{noindent} is necessary, otherwise the whole \texttt{minipage} % will be shifted right by the paragraph indentation. % @@ -2139,30 +3311,35 @@ % \emph{expandable}. However, the \cs{ifthenelse} construct is not % expandable, so you will get strange error messages if you use % something like -% \begin{verbatim} +% \begin{code} % %%% NOTE: This does not work %%%% % \renewcommand{\footrulewidth}{% % \ifthenelse{\value{page}=\getpagerefnumber{otherpagestyle}}{0.4pt}{0pt}% % } -% \end{verbatim} -% For cases like this \Package{fancyhdr} version~4.0 and later has some -% new commands \cs{fancyheadinit}, \cs{fancyfootinit} and \cs{fancyhfinit}. +% \end{code} % \DescribeMacro{\fancyheadinit} +% \DescribeMacro{\fancyfootinit} +% \DescribeMacro{\fancyhfinit} +% \phantomsection\label{sec:hfinit} +% For cases like this \pkg{fancyhdr} version~4.0 and later has some +% new commands \cs{fancyheadinit}, \cs{fancyfootinit} and \cs{fancyhfinit}. +% \CmdIndex{fancyheadinit} +% % With \Cmd{fancyheadinit\{\meta{code}\}} you can define some code that will be executed % just before the construction of the header. As it is executed in the % header, it can test the correct page number, because the counter % \texttt{page} is guaranteed to have the correct value in the headers % and footers. Similarly, the code in \Cmd{fancyfootinit\{\meta{code}\}} is executed in -% \DescribeMacro{\fancyfootinit} +% \CmdIndex{fancyfootinit} % the footer. And \Cmd{fancyhfinit\{\meta{code}\}} sets its code for both the header -% \DescribeMacro{\fancyhfinit} +% \CmdIndex{fancyhfinit} % and the footer. Now we can set for example \cs{headruleskip} or % \cs{footrulewidth} depending on the page number. So instead of putting % the test inside the definition of \cs{headruleskip}, we can put it % outside, and then we can use the command \cs{ifthenelse}. So we put % the following in \Cmd{pagestyle\{switch\}}\footnote{Assuming we have -% already loaded package \Package{refcount}.}: -% \begin{verbatim} +% already loaded package \PKGindex{refcount}\pkg{refcount}.}: +% \begin{code} % \fancyheadinit{% % \ifthenelse{\value{page}=\getpagerefnumber{otherpagestyle}} % {\renewcommand{\headruleskip}{4pt}} @@ -2173,9 +3350,10 @@ % {\renewcommand{\footrulewidth}{0.4pt}} % {\renewcommand{\footrulewidth}{0pt}} % } -% \end{verbatim} +% \end{code} % Now here is the definition of the page style used for page~\pageref{showstruts}. -% \begin{verbatim} +% \Example{25 (b)} +% \begin{example} % \fancypagestyle{showstruts}{% % \fancyhead[L]{% % \ifthenelse{\value{page}=\getpagerefnumber{showstruts}}% @@ -2198,7 +3376,7 @@ % {\renewcommand{\footrulewidth}{0pt}}% % } % } -% \end{verbatim} +% \end{example} % The label used on that page is \texttt{showstruts}. \cs{strutheader} % and \cs{strutfooter} are macros that contain the code to draw these % pictures. In this example the values for \cs{headruleskip} and @@ -2213,25 +3391,182 @@ % been set up. But you can use it to set the color and font of the % header and/or footer, for example to get large, red text in the % headers and footers on this specific page: -% \begin{verbatim} +% \begin{code} % \fancyhfinit{% % \ifthenelse{\value{page}=\getpagerefnumber{otherpagestyle}} % {\color{red}\Large} % {} % } -% \end{verbatim} +% \end{code} +% +% \subsection{Changing the page style of the next page} +% \label{sec:nextpagestyle} % -% \subsection{\Package{Fancyhdr} hooks} +% If you want the change of the page style to take effect +% at the next page you must make sure that the current page is finished. In +% most cases this can be done by issuing a +% \CmdIndex{clearpage}\CmdIndex{newpage}% +% \cs{newpage} or \cs{clearpage} command before % any changes. However, +% this will immediately end the current page, possibly leaving you with a +% half-empty page, which may be undesirable. +% +% If this is not what you want, you can use the +% \PKGindex{afterpage}% +% \pkg{afterpage} package with:\\[1ex] +% \CmdIndex{afterpage}\Cmd{afterpage\{}\Cmd{fancyhead[L]\{new value\}\}} or\\ +% \CmdIndex{pagenumbering}\Cmd{afterpage\{}\Cmd{pagenumbering\{roman\}\}}. +% \\[1ex] +% You cannot use \cs{afterpage} +% to change the \cs{pagestyle} as the commands issued by \cs{afterpage} +% are local in a group, and the \cs{pagestyle} command makes only local +% changes. The \cs{pagenumbering} and the \cs{thispagestyle} +% command make global changes, as well as changes to \LaTeX's counters, +% such as \cs{setcounter} and \cs{addtocounter}. +% So these can be used\footnote{In \pkg{fancyhdr} version~3 and +% earlier the commands like \cs{fancyhead} and \cs{fancyfoot} also made +% global changes. This is no longer the case in version~4.0 and later.}. +% Here is an example to change the page style of the next page with \cs{afterpage}: +% +% \Example{26} +% \begin{example} +% \usepackage{afterpage} +% \usepackage{fancyhdr} +% \fancypagestyle{myfancy}{ +% \fancyhead[LE,RO]{\textbf{MYFANCY SECTION}} +% \fancyhead[LO,RE]{\textbf{MYFANCY CHAPTER}} +% \fancyfoot[C]{\textbf{--~\thepage~--}} +% } +% . . . +% \afterpage{\thispagestyle{myfancy}} +% \end{example} +% Then the page after this code will have the page style \texttt{myfancy}. +% +% \subsection{Changing the page style in a \TeX{} group} +% \label{sec:change-group} +% +% Special care has to be taken when you change the page style inside a +% \TeX{} group. This can be any environment, text between +% \cs{begingroup} and \cs{endgroup}, between \{~and~\}, and other +% similar situations. \TeX{} definitions inside such a group are local +% to this group, unless they are declared to be global. All +% definitions pertaining to the page style (i.e., \cs{fancypagestyle}, +% \cs{pagestyle}, \cs{fancyhead}, etc.) are local definitions, i.e., +% they disappear at the end of the group. The only +% exception is \cs{thispagestyle}, which is global, i.e., its setting +% survives the end of the group. +% +% An example is the \env{appendices} environment of the package +% \PKGindex{appendix}\pkg{appendix}\footnote{Use the command `\texttt{texdoc appendix}' to +% see its documentation.} that you use to get special layout for your +% appendices. If you also want to change the page headers and/or footers +% for the appendices, you could use +% \begin{code} +% \clearpage +% \begin{appendices} +% \pagestyle{appendices} +% \chapter{My Appendix} +% Appendix text. +% \end{appendices} +% \chapter*{Bibliograpy} +% \end{code} +% Note that we put a \cs{clearpage} before the environment to prevent +% that the page before this environment gets the new page style, as +% indicated in sections~\ref{sec:curpagestyle} and \ref{sec:nextpagestyle}. +% In the example above, it is probable that the \texttt{appendices} +% environment does not end with a \verb|\newpage| or \verb|\clearpage|. +% Then a page break will be given by the following \verb|\chapter| +% command, but then the `Special' page style will no longer be current, +% so the last page of the \texttt{appendices} environment will have the +% headers and footers that were current before the environment started. +% If there were still floats to be output at the end of the +% \texttt{appendices} environment, this could even be several pages. So +% we should put a \verb|\clearpage| before the \verb|\end{appendices}|. +% +% \smallskip +% +% Here follows a more stylized example. The intention is to give the +% pages of the environment the header ``Special Header''. First, the +% ``wrong'' implementation. +% \Example{26G}[(a)] +% \begin{example} +% \fancypagestyle{Special}{ +% % setting the header in beginning of environment +% \fancyhead[C]{Special Header} +% }% +% +% \newenvironment{Special}[1]{% +% \pagestyle{Special}% +% \section*{Special Environment #1} +% }{% +% } +% ... +% \begin{Special}{a} +% +% Some text or a lot of text. +% +% \end{Special} +% \end{example} +% Now the last page of this environment, which may be the first page if +% the environment fits on one page, will get the wrong page header. +% +% The first solution would be to end the environment with a \cs{newpage} +% or \cs{clearpage} as described above. Generally, it is best to use +% \cs{clearpage}, because it also takes care of extra pages with floats. +% \Example{26G}[(b)] +% \begin{example} +% \begin{Special}{b} +% +% Some text or a lot of text. +% +% \clearpage +% \end{Special} +% \end{example} +% It is also possible to add the \cs{clearpage} to the definition of the +% \env{Special} environment if you define this environment yourself. If +% you use an existing environment you may use a \LaTeX{} environment +% hook to inject a \cs{clearpage}, for example in the case of the +% \env{appendices} environment: +% \begin{code} +% \AddToHook{env/appendices/end}{\clearpage} +% \end{code} +% +% Of course this will always cause a page break. If you don't want a +% page break at the +% end of your environment, you will have to decide +% what to do with the page that is partially filled with the special +% environment and partially with the following text. Which page style to +% use: the Special page style or the normal page style? If you do +% nothing it will be the normal page style. If you still want the +% Special page style, you can put a \Cmd{thispagestyle\{Special\}} at +% the end of the environment. Again, at the use of the environment, at +% the definition, or using a hook. +% \Example{26G}[(c)] +% \begin{example} +% \begin{Special}{c} +% +% Some text or a lot of text. +% +% \thispagestyle{Special} +% \end{Special} +% \end{example} +% Note, however, that this only works if the \texttt{Special} page style +% is defined outside of the environment, as is done in this example. +% However if the \texttt{Special} page style was defined inside the environment, +% it will have disappeared at the end of the page, and \LaTeX{} will +% silently ignore it. It doesn't even give an error message. The +% following pages will then get the normal header again. +% +% \section{\pkg{Fancyhdr} hooks} % \label{sec:hooks} % % \LaTeX{} has a system of \emph{hooks}\index{hooks} since the 2020/10/01 release. % This allows packages and classes (and other \LaTeX{} software) to % define points in its code where other \LaTeX{} code can insert a piece % of code. For more details, see \emph{The \LaTeX{} Companion, Third -% Edition}, part I, pp. 671ff or the documentation that can be read +% Edition}, part I, pp. 671 ff. or the documentation that can be read % with the command `\texttt{texdoc lthooks-doc}'. % -% \Package{Fancyhdr} version 4.5 or later defines a number of hooks to be executed at the +% \pkg{Fancyhdr} version 4.5 or later defines a number of hooks to be executed at the % beginning or end of the header and/or footer, if your \LaTeX{} version % supports it. The hooks are defined in % mirrored pairs, which means the second one of the pair is executed in the @@ -2252,9 +3587,10 @@ % beginning and the end of the footer construction, respectively % \end{description} % -% The interaction of the hooks and the \cs{fancyhfinit} code described in -% the previous section with the construction of the -% header and footer is as follows: for the header construction +% The interaction of the hooks and the \cs{fancyhfinit} code described +% on page~\pageref{sec:hfinit} in section~\ref{sec:hfinit} with the +% construction of the header and footer is as follows: for the header +% construction % \begin{itemize} % \item first the \texttt{fancyhdr/before} hooks are run, then the % \texttt{fancyhdr/head/begin} hooks, then the \cs{fancyheadinit} code. @@ -2265,7 +3601,7 @@ % \texttt{head} by \texttt{foot}. % \item Note that between the construction of the header and the footer, % \LaTeX{} builds the body of the page. This process consists mainly of -% putting boxes next to each other, and \Package{fancyhdr} does not +% putting boxes next to each other, and \pkg{fancyhdr} does not % interfere with this, and neither should the hook code. % \end{itemize} % @@ -2294,72 +3630,38 @@ % \begin{itemize} % \item Hooks are global, but the \cs{fancyhfinit} declarations are % local. That is, if \cs{fancyhfinit} (or its siblings -% \texttt{fancyheadinit} or \cs{fancyfootinit}) are given in a \TeX{} +% \cs{fancyheadinit} or \cs{fancyfootinit}) are given in a \TeX{} % group, they last until the end of the group. They will disappear % outside of the group, or be reset to the value they had outside of the group. % \item \cs{fancyhfinit} is meant to be used by the user who writes the -% document, i.e. it is meant for the current document. +% document, i.e., it is meant for the current document. % \cs{fancyhfinit} \emph{should not be used by package or class writers % and similar. They should use the hooks mechanism.} On the other hand % the user can also use hooks in the document instead of, or in addition % to the \cs{fancyhfinit} mechanism. % \item Hooks can be added multiple times, but the \cs{fancyhfinit} code -% can only be given once (i.e. a new one overwrites the previous one). +% can only be given once (i.e., a new one overwrites the previous one). +% \item The \cs{fancyhfinit} code is stored in a \emph{closed} page +% style (see section~\ref{sec:fancypagestyle}). Hooks are not. % \item \cs{fancyhfinit} has no corresponding \texttt{exit} function, so % if you need some code to be executed after the construction of the header or % footer, you have to use hooks. +% \item The hooks can also be given if \pkg{fancyhdr} is not used. +% This can be used as a precautionary measure in packages and classes +% that may have a bad interaction with \pkg{fancyhdr} otherwise. If +% \pkg{fancyhdr} is not used in a document, the hooks don't do anything. % \end{itemize} % -% \subsection{Changing the page style of the next page} -% -% If you want the change of the page style to take effect -% at the next page you must make sure that the current page is finished. In -% most cases this can be done by issuing a -% \CmdIndex{clearpage}\CmdIndex{newpage}% -% \cs{newpage} or \cs{clearpage} command before % any changes. However, -% this will immediately end the current page, possibly leaving you with a -% half-empty page, which may be undesirable. -% -% If this is not what you want, you can use the -% \TTindex{afterpage.sty}% -% \Package{afterpage} package with:\\[1ex] -% \CmdIndex{afterpage}\Cmd{afterpage\{}\Cmd{fancyhead[L]\{new value\}\}} or\\ -% \CmdIndex{pagenumbering}\Cmd{afterpage\{}\Cmd{pagenumbering\{roman\}\}}. -% \\[1ex] -% You cannot use \cs{afterpage} -% to change the \cs{pagestyle} as the commands issued by \cs{afterpage} -% are local in a group, and the \cs{pagestyle} command makes only local -% changes. The \cs{pagenumbering} and the \cs{thispagestyle} -% command make global changes, as well as changes to \LaTeX's counters, -% such as \cs{setcounter} and \cs{addtocounter}. -% So these can be used\footnote{In \Package{fancyhdr} version~3 and -% earlier the commands like \cs{fancyhead} and \cs{fancyfoot} also made -% global changes. This is no longer the case in version~4.0 and later.}. -% Here is an example to change the page style of the next page with \cs{afterpage}: -% ^^A \Example -% \begin{verbatim} -% \usepackage{afterpage} -% \usepackage{fancyhdr} -% \fancypagestyle{myfancy}{ -% \fancyhead[LE,RO]{\textbf{MYFANCY SECTION}} -% \fancyhead[LO,RE]{\textbf{MYFANCY CHAPTER}} -% \fancyfoot[C]{\textbf{--~\thepage~--}} -% } -% . . . -% \afterpage{\thispagestyle{myfancy}} -% \end{verbatim} -% Then the page after this code will have the page style \texttt{myfancy}. -% % \section{Headers and footers induced by the text} % \label{sec:xmarks} % % We have seen how we can use \LaTeX's marks to get information from the % document contents to the headers and footers. The marks mechanism is the % only reliable mechanism that you can use to get changing information to the -% headers or footers. This is because \latex/ may be processing your document +% headers or footers. This is because \LaTeX{} may be processing your document % ahead before deciding to break the page. % -% Sometimes the two marks that \latex/ offers are not enough. An example is +% Sometimes the two marks that \LaTeX{} offers are not enough. An example is % the following: % \begin{quote} % If a solution to an exercise goes across a page break, then I would like @@ -2368,19 +3670,20 @@ % first page and ``(Continued\ldots)'' at the top in the margin of the next page. % \end{quote} % -% You cannot use \latex/'s mark mechanisms for this if you also want to use +% You cannot use \LaTeX's mark mechanisms for this if you also want to use % chapter and section information. % -% The \Package{extramarks} package gives you +% The \pkg{extramarks} package gives you % two extra marks that can be used in this situation. % Here is a way to use this package: % -% \begin{verbatim} +% \Example{27} +% \begin{example} % \usepackage{extramarks} % ... % \pagestyle{fancy} -% \fancyhead[L]{\firstxmark} -% \fancyfoot[R]{\lastxmark} +% \fancyhead[L]{\firstleftxmark} % = \firstxmark +% \fancyfoot[R]{\lastrightxmark} % = \lastxmark % \fancypagestyle{plain}{\fancyhead{}\renewcommand{\headrule}{}} % ... % \extramarks{}{}% 1 @@ -2390,18 +3693,16 @@ % ... % \extramarks{Continued\ldots}{}% 3 % \extramarks{}{}% 4 -% \end{verbatim} +% \end{example} % % \CmdIndex{extramarks} % Note that we redefine the \texttt{plain} page style, so that on the % first page of a chapter also the footer will be given if necessary. We % assume that a `Continued' block will not cross chapter boundaries, so no % header will be necessary on these pages. -% Also the \cs{extramarks} command must be close to the text, i.e no +% Also the \cs{extramarks} command must be close to the text, i.e., no % empty lines (paragraph boundaries) should intervene. Otherwise the page may -% be broken at that boundary and the extramarks would come on the wrong page. -% The final \verb+\extramarks{}{}+ is to prevent the `Continued\ldots' -% header to appear on the following pages. +% be broken at that boundary and the \texttt{extramarks} would come on the wrong page. % % Explanation: There are two new marks that can be used in the page layout with this % package: If commands of the form @@ -2412,7 +3713,8 @@ % \cs{lastxmark} gives you the last $m_2$ value % of the current page. In the above example, when the complete block % falls on the same page, the \cs{firstxmark} will be the empty -% parameter of the first \cs{extramarks} command (indicated by \texttt{\%~1}), and +% parameter of the first \cs{extramarks} command (indicated by +% \texttt{\%~1}), and % the \cs{lastxmark} will be the empty parameter from the last % \cs{extramarks} command (indicated by \texttt{\%~4}). % @@ -2445,110 +3747,499 @@ % \CmdIndex{toprightxmark} % % The package also gives you the \cs{firstleftmark} and \cs{lastrightmark} -% commands that complement the standard \latex/ marks. +% commands that complement the standard \LaTeX{} marks. % \CmdIndex{firstleftmark} % \CmdIndex{lastrightmark} % -% To stress the point that marks are the correct way to do this, let me -% give you a ``solution'' that will not work\footnote{Actually there is -% another way but it requires two \latex/ passes: you can put \cs{label} -% commands before and after the text and compare the \cs{pageref}s.}: -% -% \begin{verbatim} -% \fancyhead[L]{Continued} -% \fancyfoot[R]{Continued on next page\ldots} -% Some text that may or may not cross a page boundary... -% \fancyhead[L]{} -% \fancyfoot[R]{} -% \end{verbatim} -% -% You may be tempted to think that the first \cs{fancyhead} and \cs{fancyfoot} -% will be in effect when \tex/ breaks the page in the middle of the text, -% and the last ones when the page breaks after the text. This is not true as -% the whole paragraph (including the last definitions) will be processed -% \index{page break} -% before \tex/ considers the page break, so at the time of the page break the -% last definitions are effective, whether the page break occurs inside the text -% or outside of it. Putting a paragraph boundary between the -% text and the last definitions will not work either, because you don't want -% the first definitions to be in effect when \tex/ decides to break the page -% exactly at this boundary. Actually the marks mechanism was invented to get -% rid of these kinds of problems. +% \medskip % % In the above example the text ``Continued'' appears in the page header. It % \index{margin} % may be nicer to put it in the margin. This can be easily % accomplished by positioning it at a fixed place relative to the page header. -% In plain \tex/ you would use a concoction of \Cmd{hbox to 0pt}, +% In plain \TeX{} you would use a concoction of \Cmd{hbox to 0pt}, % \Cmd{vbox to 0pt}, \cs{hskip},\cs{vskip}, \cs{hss} and % \cs{vss} but fortunately -% \latex/'s \texttt{picture} environment gives a much cleaner way to do this. +% \LaTeX's \texttt{picture} environment gives a much cleaner way to do this. % In order not to disturb the normal header layout we put the text in a zero-sized % \texttt{picture}. Generally this is the best way to position things on fixed % places on the page. You can then also use the normal headings. See also % section~\ref{sec:thumb} for another example of % this technique. % +% \Example{28} % \TTindex{picture} -% \begin{verbatim} +% \begin{example} % \fancyhead[L]{\setlength{\unitlength}{\baselineskip}% % \begin{picture}(0,0) % \put(-2,-3){\makebox(0,0)[r]{\firstxmark}} % \end{picture}\rightmark} % \rightmark = section title -% \end{verbatim} +% \end{example} % % This solution can of course also be used for the footer. Make sure you put the % \texttt{picture} as the first thing in left-handside entries and last in right-handside % ones. % +% \medskip +% % Finally you may want to put ``(Continued\ldots)'' in the \emph{text} % rather than in the header or the margin. Then you have to use the -% \TTindex{afterpage.sty} -% \Package{afterpage} package. We also decide to make a separate -% environment for it. -% -% \begin{verbatim} -% \newenvironment{continued}{\par +% \PKGindex{afterpage}% +% \pkg{afterpage} package. We also decide to make a separate +% environment \env{continued} for it\footnote{In the example files for +% examples 27 and 28 this is also done; it is just not documented here.}. +% +% The first thought might be to use +% \cs{afterpage}\texttt{\{\cs{firstxmark}\}}. But the marks can only be +% used in the headers and footers, not in the running text% +% \footnote{NOTE: This used to be different in \pkg{extramarks} version 4 and earlier.}. +% Moreover, we +% need the value that will become \cs{firstxmark} (=\cs{firstleftxmark}) +% on the next page, but on the current page it will be in \cs{lastleftxmark}. +% +% Then you might think that the \cs{afterpage} command could be put in +% a header or footer, but unfortunately it appears that then the timing is wrong. +% The \cs{afterpage} text will appear one page too late. +% +% So what we do is, we put the \cs{lastleftxmark} in a variable during the +% footer processing and then use this variable in \cs{afterpage}. As the +% footer processing is done inside a \TeX{} group, we must use a global +% definition. Also the mark must be expanded so that we get the contents +% of the mark in our variable and not just the name. We can do this with +% the primitive \TeX{} command \cs{xdef}. There is no \LaTeXe{} command +% for this. +% +% First we give a simple (but +% incomplete) solution. +% +% \NoExample{Incomplete!} +% \begin{example} +% \newcommand\ContiText{} +% \fancyhead[L]{Example 29a} +% \fancyhead[R]{\rightmark} +% \fancyfoot[R]{\lastrightxmark} +% \fancyfoot[L]{\xdef\ContiText{\lastleftxmark}} +% +% \newenvironment{continued}{% +% \par % \extramarks{}{}% -% \extramarks{(Continued\ldots)}{Continued on next page\ldots}% -% \afterpage{\noindent\firstxmark\vspace{1ex}}% +% \extramarks{\noindent Continued\ldots\\[1ex]}% +% {Continued on next page\ldots}% +% \afterpage{\ContiText}% % \ignorespaces -% }{% -% \unskip\extramarks{(Continued\ldots)}{}% +% }{% +% \unskip +% \extramarks{\noindent Continued\ldots\\[1ex]}{}% % \extramarks{}{}\par % } -% \end{verbatim} +% \end{example} +% +% The header contains document information: the name of the document on +% the left and the section title on the right. The footer contains the +% ``Continued'' information like in the previous examples. The +% \cs{extramarks} contain essentially the same information as in the +% previous examples, just formatted a little differently. +% But the \cs{...leftxmark} is not put in the header, but is eventually used as +% the argument in \cs{afterpage} so that it will appear at the top of the +% next page body. This is also the reason for the \verb|\\[1ex]|, to +% separate it from the rest of the page text. % % Note how we use \cs{ignorespaces}, \cs{unskip} and \texttt{\%} to % prevent unwanted spaces to creep into the text. % -% It is a bit dangerous to use \cs{firstxmark} outside the page layout -% routine, but apparently with \cs{afterpage} this works. If you would -% need the information further on in the page you must remember the state of -% the marks in your own variable. You can set this in one of the -% \Package{fancyhdr} fields. For example if you want to add something -% \emph{after} the broken piece of text you can use the following: +% However, there are some problems with this simple solution: +% \begin{enumerate} +% \item If the block spans more than one page boundary, the +% \cs{afterpage} is not repeated on the following page breaks +% (\cs{afterpage} only applies to the next page). So on +% these pages the ``Continued'' header will be missing. +% +% We can solve this by repeating the \cs{afterpage} command in the +% \cs{afterpage} text. To do this we have to put it in a macro +% (\texttt{AP} stands for \texttt{afterpage}): +% \begin{code} +% \newcommand{\setAP}{\afterpage{\ContiText\setAP}} +% \end{code} +% There is a disadvantage that the \cs{afterpage} will be continued on +% all pages after the block has ended. But as \cs{lastleftxmark} will be +% empty then, no harm will be done. However, the following subsection (\ref{sec:afterpage2}) +% will give a solution that stops this repetition. +% \item If the page break comes out such that the beginning of the block +% is pushed to the next page, but the \cs{afterpage} is given while +% \LaTeX{} was still at the previous page, the \cs{afterpage} text will +% be inserted before the block begins. +% +% Fortunately the \cs{lastleftxmark} on this page is empty, so the +% \cs{afterpage} on this page is essentially harmless, and because we have it made +% repeating by the previous point, it will be picked up at the +% proper place. +% \item If there is more than one \env{continue} block on the same +% page (with the last one crossing the page boundary) there will be an +% \cs{afterpage} for each block, thereby repeating the ``Continued'' +% text multiple times at the top of the page. Therefore we should start +% the \cs{afterpage} only once, not once for each block. As the +% \cs{afterpage} is repeated on each page by the previous solution we +% don't need multiple starts of \cs{afterpage}. +% +% We could do this by inserting the \cs{afterpage} command before the +% first block instead of inside it, but that is error-prone. +% +% The solution is to define a command \cs{startAP} that sets the +% \cs{afterpage} command, and then redefines itself do do nothing. +% Because the \cs{startAP} is called inside a \TeX{} group (the +% \env{continued} environment) we must do a \emph{global} redefine. +% \LaTeXe{} does not have a command for this, so we use the low-level +% \TeX{} command \cs{gdef} for this. +% \begin{code} +% \newcommand{\startAP}{\setAP\gdef\startAP{}} +% . . . +% \newenvironment{continued}{% +% . . . +% \startAP +% } . . . +% \end{code} +% \end{enumerate} % -% \begin{verbatim} -% \newcommand{\mysaved}{} +% We also put some thick black rules around the environment. +% And because the text for the left mark is used twice we put that in +% a macro \cs{LM}. The order of the commands is chosen such that the +% `Continued' marks don't go to the wrong page. +% This makes the total solution like this: +% +% \Example{29a} +% \begin{example} +% \newcommand\ContiText{} +% \newcommand{\LM}{\noindent\hl{Continued from previous page\ldots}\\[1ex]} +% \newcommand{\setAP}{\afterpage{\ContiText\setAP}} +% \newcommand{\startAP}{\setAP\gdef\startAP{}} +% +% \fancyhead[L]{Example 29a} +% \fancyhead[R]{\rightmark} +% \fancyfoot[R]{\lastrightxmark} +% \fancyfoot[L]{\xdef\ContiText{\lastleftxmark}} +% +% \newenvironment{continued}{% +% \par\startAP +% \extramarks{}{}% +% \noindent\rule{\textwidth}{1mm}% +% \extramarks{\LM}{Continued on next page\ldots}% +% \\*\ignorespaces +% }{% +% \unskip\noindent\rule{\textwidth}{1mm}% +% \extramarks{\LM}{}% +% \extramarks{}{}\par +% } +% \end{example} +% +% \subsection{More sophisticated solutions} +% \label{sec:afterpage2} +% +% In this subsection we present some more sophisticated, and therefore +% a little more tricky solutions and variations to the previous example. +% If you want to avoid that trickery, you can just skip this subsection. +% +% First we change the example such that the sequence of \cs{afterpage} +% invocations will stop as soon as possible. We do this by not using a +% fixed text as argument for \cs{afterpage} but by using a macro \cs{APcommand} +% as argument. When we want to stop the sequence of \cs{afterpage} calls, +% we make this macro empty. To get a proper timing we reset this macro +% in the righthand footer field when this is empty, which indicates that +% we are outside of a `Continued' block. +% +% We must then take care of restarting the \cs{afterpage} sequence when +% a new `Continued' block is started, and making sure that we don't get +% more than one such sequence activated. We do this by changing +% \cs{startAP} such that it only start an \cs{afterpage} if +% \cs{APcommand} is empty. +% +% \Example{29b} +% \newcommand{\R}{\color{red}} +% \begin{example}[numbers=left,numbersep=1pt,commandchars=|\(\)] +% \newcommand\ContiText{} +% \newcommand*{\LM}{\noindent Continued from previous page\ldots\\[1ex]} +% |R\newcommand*{\APcommand}{}|label(line:apcommand) +% |R\newcommand*{\setAPcommand}{\gdef\APcommand{\ContiText\setAP}}|label(line:set) +% |R\newcommand*{\clearAPcommand}{\gdef\APcommand{}}|label(line:clr) +% |R\newcommand*{\setAP}{\afterpage{\APcommand}}|label(line:setap) +% |R\newcommand*{\startAP}{\ifx\APcommand\empty\setAPcommand\setAP\fi}|label(line:startap) +% +% \fancyhead[L]{Example 29b} +% \fancyhead[R]{\rightmark} +% \fancyfoot[R]{\lastrightxmark} +% \fancyfoot[L]{\xdef\ContiText{\lastleftxmark}} +% \fancypagestyle{plain}{\fancyhead{}\renewcommand{\headrule}{}} % -% \newenvironment{continued}{\par +% \newenvironment{continued}{% +% \par\startAP % \extramarks{}{}% -% \extramarks{(Continued\ldots)}{Continued on next page\ldots}% -% \ignorespaces -% }{% -% \unskip\extramarks{(Continued\ldots)}{}% -% \extramarks{}{}\par\vspace{1ex}\mysaved}% +% \noindent\rule{\textwidth}{1mm}% +% \extramarks{\LM}{Continued on next page\ldots}% +% \\*\ignorespaces +% }{% +% \unskip\noindent\rule{\textwidth}{1mm}% +% \extramarks{\LM}{}% +% |R \extramarks{}{\protect\clearAPcommand}\par|label(line:callclr) % } -% \fancyhead[L]{\leftmark} -% \fancyhead[C]{\ifthenelse{\equal{\lastxmark}{}} -% {\gdef\mysaved{}} -% {\gdef\mysaved{\noindent[Continued from previous page]}}} -% \end{verbatim} +% \end{example} +% +% We have numbered the lines for easy reference. The changes are in +% the red lines (\ref{line:apcommand}--\ref{line:startap} and \ref{line:callclr}). \\ +% \ref{line:apcommand}.~Here we define \cs{APcommand}.\\ +% \ref{line:set},~\ref{line:clr}.~These are commands to set en clear \cs{APcommand}, respectively.\\ +% \ref{line:setap}.~The \cs{afterpage} now uses \cs{APcommand} as argument.\\ +% \ref{line:startap}.~\cs{startAP} now checks if \cs{APcommand} is empty, and if it is, +% it first fills \cs{APcommand} with the required value and then starts a +% new \cs{afterpage} (with the \cs{setAP} command). +% When \cs{APcommand} is not empty this means that an \cs{afterpage} is +% already active.\\ +% \ref{line:callclr}.~In the right part of the marks we now call \cs{clearAPcommand} to +% clear our variable \cs{APcommand}. This effectively stops the +% \cs{afterpage} sequence. +% +% \textbf{Note 1.} We use \cs{gdef} to change \cs{APcommand} because +% these occur inside a \TeX{} group (\env{continued} environment and +% footer). With \cs{renewcommand} they would be local to these groups +% but we need them outside of these groups, therefore we use \cs{gdef} +% to make the change globally. +% +% \textbf{Note 2.} We define \cs{APcommand} with \cs{newcommand*} rather +% than \cs{newcommand} to make it compatible with \cs{gdef}. Without the +% \texttt{*} it would be compatible with \cs{long}\cs{gdef}, but then it +% would not compare equal to \cs{empty} in line \ref{line:startap}. For the other +% definitions it does not make a difference, but it looks nicer to also use +% it there. +% +% \textbf{Note 3.} In line \ref{line:callclr} we use \cs{protect} to +% delay the expansion of \cs{clearAPcommand}. The marks in +% \cs{extramarks} are expanded at the time they are given, so that they +% can pick up section numbers and titles and similar information at that +% point. However, \cs{clearAPcommand} should not be expanded at that +% moment, but when it is used in the footer. That is exactly what +% \cs{protect} does. +% +% \textbf{Note 4.} We test the value of \cs{APcommand} with \cs{ifx}, +% not with \cs{ifthenelse} from the \PKGindex{ifthen}\pkg{ifthen} package. The +% latter completely expands its parameters, and because \cs{APcommand} +% has a recursive definition when it is not empty, that would cause +% \TeX{} to fail. We only want to check the definition of +% \cs{APcommand}, not its expansion. +% +% \textbf{Note 5.} For debugging we can add some text in the +% \cs{afterpage} command in line \ref{line:setap}, to see the difference between an +% empty \cs{afterpage} and no \cs{afterpage} at all. +% Similarly we can add some text in the footer in line \ref{line:callclr}, to see where +% the \cs{clearAPcommand} is called. +% +% \subsubsection*{Another use} +% +% If you would need the information further on in the page you must +% remember the state of the marks in your own variable. You can set this +% in one of the \pkg{fancyhdr} header or footer fields, like in +% example 29a. For example +% if you want to add something \emph{after} the broken block of text you +% can use the following: +% +% \Example{29c} +% \begin{example} +% \newcommand{\ContiText}{} +% \fancyhead[L]{Example 29c} +% \fancyhead[R]{\rightmark} +% \fancyfoot[R]{\lastrightxmark} +% \fancyfoot[L]{\xdef\ContiText{\lastleftxmark}} +% \fancypagestyle{plain}{\fancyhead{}\renewcommand{\headrule}{}} +% +% \newenvironment{continued}{% +% \par +% \extramarks{}{}% +% \noindent\rule{\textwidth}{1pt}% +% \extramarks{\\[1ex]\noindent\textbf{[Continued +% from previous page]}}{Continued on next page\ldots}% +% \\*\ignorespaces +% }{% +% \unskip\noindent\rule{\textwidth}{1pt}% +% \extramarks{}{}% +% \ContiText\par +% } +% \end{example} +% +% Now if the block crosses a page boundary, the \cs{lastleftxmark} has +% the text that should be put under the block. +% In the \texttt{[L]} footer field we put +% this information in the macro \cs{ContiText}, and this is +% typeset after the block ends. If the block doesn't cross the page +% boundary, this text is empty. +% +% \textbf{NOTE:} This example is not completely safe; there can still be timing +% issues. For example, when the end of the block has already been typeset, +% including an empty value of \cs{ContiText}, but then is pushed to the +% next page. So you have to be very careful in using this kind of mechanism. % % If you want to include one of the marks or other varying information in the % saved text, you must use \cs{xdef} rather than \cs{gdef}. % +% \section{Page styles for Table of Content, List of Figures, Bibliography, etc.} +% \label{sec:tocstyle} +% +% Some special sections of a documents, such as the Table of Contents, +% List of Figures/Tables, Bibliography, Index, and similar ones +% sometimes cause difficulties if you want them to have special page +% styles, especially if you also want the first page of these to have +% a special page style. +% +% Supose you have defined a special page style \texttt{tocstyle} for the +% Table of contents. The Table of contents is generated by the command +% \cs{tableofcontents} and it can be several pages long, all generated +% by this simple command. So if you want this to have the page style +% \texttt{tocstyle}, you must give the command \Cmd{pagestyle\{tocstyle\}} +% before the \cs{tableofcontents}. But then you have to make sure that +% the previous page (for example a title page) doesn't get this page +% style too. As we have seen before we can do this by inserting a +% \cs{newpage} first. Like +% \begin{code} +% \newpage +% \pagestyle{tocstyle} +% \tableofcontents +% \end{code} +% +% If we use a chapter based documentclass, like the standard classes +% \pkg{report} and \pkg{book}, with this setup the first page of the Table +% of Contents, and similar parts of the document will stil use the +% \texttt{plain} page style. Usually this is the best choice, but there +% may be cases where you want these also to use the \texttt{tocstyle} +% page style (or another special page style). The \texttt{plain} page +% style is set by a \Cmd{thispagestyle\{plain\}} command embedded +% in a \cs{chapter*} command that is used in \cs{tableofcontents}. So +% it is not easy to overwrite. It can be overwritten by a +% \Cmd{thispagestyle\{tocstyle\}} command, but that must be given after +% the \cs{chapter*} command, but before the first page of the Table of +% Contents is finished. So in fact we must break in into the +% \cs{tableofcontents} command. The other special parts have similar challenges. +% In this section we give a number of solutions. +% +% The first solution applies to the Table of Contents and List of Figures/Tables. +% We can add additional code in these lists with the \cs{addtocontents} +% command. We can use this to insert a \cs{thispagestyle} as the first +% entry, +% \NoExample{tocpagestyle\\(a)} +% \begin{example} +% \newpage +% \pagestyle{tocstyle} +% \addtocontents{toc}{\protect\thispagestyle{tocstyle}} +% \tableofcontents +% \end{example} +% and similar for the List of Figures (use \texttt{lof}) and List of +% Tables (use \texttt{lot} instead of \texttt{toc}). The \cs{protect} is +% necessary to prevent the \cs{thispagestyle} to be executed too early. +% +% \textbf{NOTE:} If you are using the package +% \pkg{tocloft}\PKGindex{tocloft}, some of the solutions given here for +% the Table of Contents and List of Figures/Tables may not work (but +% others may). This is because this package changes the layout of these. +% In particular, the first page of these will by default have page style +% \texttt{plain}, even in a documentclass that has no chapters, like +% \cls{article}. However, the package has a command to set the page +% style for these first pages. This will set it for all three. +%\begin{code} +% \tocloftpagestyle{tocstyle} +% \end{code} +% +% Alternatively, you can use \Cmd{usepackage[titles]\{tocloft\}} which +% will keep the original \LaTeX{} code, so then the solutions mentioned +% in this section will apply. +% +% \medskip +% +% For the Bibliography and Index the above solutions cannot be used. So +% we need a different solution for these. +% +% For the Bibliography we can use the \LaTeX{} hook system (available since the +% 2020/10/01 \LaTeX{} release). The command \cs{bibliography} reads the +% file \texttt{\meta{jobname}.bbl}, which contains a +% \env{thebibliography} environment, that contains a \cs{bibitem} for +% each reference. The \Cmd{begin\{bibliography\}} sets up the chapter +% header and starts a \env{list} environment. Unfortunately, the +% \LaTeX{} hook system doesn't have a hook that is executed just after +% this point (i.e., before any bibliography items are added). +% +% However, we can add a hook at the first \cs{bibitem} as follows: +% \NoExample{tocpagestyle\\(c)} +% \begin{example} +% \AddToHookNext{cmd/bibitem/before}{\thispagestyle{tocstyle}} +% \end{example} +% +% An alternative would be to use an `\texttt{after}' hook on the +% \cs{thebibliography} command. This command is internally used to do +% the setup work for the \env{thebibliography} environment, but this +% is an implementation detail, so theoretically this could change in a +% future implementation, or an implementation in a different +% documentclass. But this is the hook that is executed at the right +% moment: after the setup, and before any bibliography items are added. +% +% \NoExample{tocpagestyle\\(c)} +% \begin{example} +% \AddToHook{cmd/thebibliography/after}{\thispagestyle{tocstyle}} +% \end{example} +% +% For the Index there is no hook that can be used in a similar manner. +% Maybe we could use a hook in the \cs{item} command that is used for +% the index items, but this is just a too general command that is not +% exclusively used in the Index. However, we can use a hook on the +% \cs{thispagestyle} command that is used in the internal +% \cs{chapter*} command in the \cs{printindex} command (the +% \cs{thispagestyle} that gives us these problems). We just use an +% `\texttt{after}' hook to insert another \cs{thispagestyle} that +% replaces the built-in one. In fact we could have used this same +% solution for each of the cases mentioned in this document. +% +% \NoExample{tocpagestyle\\(d)} +% \begin{example} +% \newpage +% \pagestyle{tocstyle} +% \AddToHookNext{cmd/thispagestyle/after}{\thispagestyle{tocstyle}} +% \printindex +% \end{example} +% +% Finally, we can use the solution from +% section~\ref{sec:pagestyle-plain} (redefining page style +% \texttt{plain}). For example: +% \begin{code} +% \fancypagestyle{plain}[tocstyle]{} +% \end{code} +% But this would also change the \texttt{plain} page style for the +% chapters in the normal text, which we don't want. So the page style +% \texttt{plain} should be reset in the main text. We can do this with +% the new (\pkg{fancyhdr} version 5) command \cs{fancypagestyleassign}. +% We can use this to `save' the original \texttt{plain} page style and +% set it equal to \texttt{tocstyle}. And later we can reset +% \texttt{plain} to the saved page style. +% +% \NoExample{tocpagestyle\\(b)} +% \begin{example} +% \fancypagestyleassign{origplain}{plain} +% \fancypagestyleassign{plain}{tocstyle} +% \listoftables % \tableofcontents / \listoffigures, etc. +% +% % Here the main document text starts +% +% \clearpage +% \fancypagestyleassign{plain}{origplain} +% \end{example} +% All definitions for the page style (including the +% \cs{fancypagestyleassign} commands above) are local to the \TeX{} +% group in which they are defined (see section~\ref{sec:change-group}). +% So we could eliminate the saving and restoring to \texttt{origplain} +% if we do the change in a group. For example: +% +% \begin{code} +% { +% \fancypagestyleassign{plain}{tocstyle} +% % or use the older method \fancypagestyle{plain}[tocstyle]{} +% \listoftables +% } +% \end{code} +% After the group, page style \texttt{plain} has its original value. +% However, it is not advised to place large parts of your document +% inside a group. % % \section{A movie} % \label{sec:movie} @@ -2557,31 +4248,32 @@ % \TTindex{picture} % If you put at each page on the same place a picture that slightly changes % from page to page you can get a movie-like effect by flipping through the -% pages. You can create such a movie easily with fancyhdr. For +% pages. You can create such a movie easily with \pkg{fancyhdr}. For % simplicity we assume that we use a PDF-producing \LaTeX{} (such as % \texttt{pdflatex}) and each picture is in a PNG file called -% \texttt{pic}$\langle n\rangle$.\texttt{png}% -% \footnote{With \texttt{pdflatex} we could also use PDF or JPG +% \texttt{pic}$\langle n\rangle$.\texttt{png}\footnote{With +% \texttt{pdflatex} we could also use PDF or JPG % pictures. With a DVI based \texttt{latex} we could use PS or EPS % pictures. Or any other supported image format.} % where $\langle n\rangle$ is -% the page number and that we use the \Package{graphics} or \Package{graphicx} package. -% \TTindex{graphics} -% \TTindex{graphicx} +% the page number and that we use the \pkg{graphics} or \pkg{graphicx} package. +% \PKGindex{graphics} +% \PKGindex{graphicx} % To put the movie in the righthandside bottom corner the following will work: % -% \begin{verbatim} +% \Example{30} +% \begin{example} % \fancyfoot[R]{\setlength{\unitlength}{1mm} % \begin{picture}(0,0) % \put(5,-20){\includegraphics[width=1cm]{pic\thepage}} % \end{picture}} -% \end{verbatim} +% \end{example} % % If the document is two-sided, it would be better to put them only on % the odd pages, by specifying \verb|\fancyfoot[RO]|. % % Notice that the \cs{unitlength} parameter should -% be set locally in the fancyhdr field in order to avoid unwanted +% be set locally in the \pkg{fancyhdr} field in order to avoid unwanted % interference with its value in the text. % % \section{Thumb-indexes} @@ -2590,7 +4282,7 @@ % \index{bible} % Some railroad guides and expensive bibles have so called % \index{thumb-index} -% \emph{thumb-indexes}, i.e.\ there are marks on the sides of the pages that +% \emph{thumb-indexes}, i.e., there are marks on the sides of the pages that % indicate where the chapters are. You can create these by printing black % blobs in the margin of the pages. The vertical position should be % determined by the chapter number or some other counter. As the position is @@ -2607,25 +4299,26 @@ % calculations they are set in a \texttt{picture} environment with the % \cs{unitlength} set to 18~mm. Page numbers are set in the headers at the % outer sides, and the blobs are attached to these. In this example the -% section numbers are used to position the blobs, but you can replace this +% chapter numbers are used to position the blobs, but you can replace this % with any numeric value. -% See figure~\ref{fig:overview} for the resulting -% overview page and figure~\ref{fig:thumb} for the code. +% See figure~\ref{fig:overview} for the resulting overview page. % -% \begin{figure}[htbp] +% ^^A Picture with thumb index overview +% +% \begin{figure}[!htbp] % \setlength{\unitlength}{9mm} % \newcommand{\blob}{\rule[-.2\unitlength]{1\unitlength}{.5\unitlength}} % \newcounter{line} -% \newcommand{\secname}[1]{\addtocounter{line}{1}% +% \newcommand{\chapname}[1]{\addtocounter{line}{1}% % \put(1,-\value{line}){\blob} % \put(-7.5,-\value{line}){\arabic{line}} % \put(-7,-\value{line}){#1}} % % \newcommand{\overview}{1 % \begin{picture}(0,0) -% \secname{Introduction} -% \secname{The first year} -% \secname{Specialisation} +% \chapname{Introduction} +% \chapname{Another chapter} +% \chapname{Third case} % \end{picture}} % % \begin{center} @@ -2638,62 +4331,93 @@ % \caption{Thumb-index overview page} % \label{fig:overview} % \end{figure} -% \begin{figure}[hp]\small -% \begin{verbatim} +% +% ^^A The code +% \Example{31} +% \begin{example} % \setlength{\unitlength}{18mm} -% \newcommand{\blob}{\rule[-.2\unitlength]{2\unitlength}{.5\unitlength}} +% \newcommand{\blob}{% +% \rule[-.2\unitlength]{2\unitlength}{.5\unitlength}} % % \newcommand\rblob{\thepage % \begin{picture}(0,0) -% \put(1,-\value{section}){\blob} +% \put(1,-\value{chapter}){\blob} % \end{picture}} % % \newcommand\lblob{% % \begin{picture}(0,0) -% \put(-3,-\value{section}){\blob} +% \put(-3,-\value{chapter}){\blob} % \end{picture}% % \thepage} % % \pagestyle{fancy} -% \fancyfoot[C]{} +% \fancyfoot{} % % \newcounter{line} -% \newcommand{\secname}[1]{\addtocounter{line}{1}% +% \newcommand{\chapname}[1]{\addtocounter{line}{1}% % \put(1,-\value{line}){\blob} -% \put(-7.5,-\value{line}){\Large \arabic{line}} -% \put(-7,-\value{line}){\Large #1}} +% % Adjust these numbers for the proper indentation +% \put(-5.5,-\value{line}){\Large \arabic{line}} +% \put(-5,-\value{line}){\Large #1}} % -% \newcommand{\overview}{\thepage +% \newcommand{\overview}{% % \begin{picture}(0,0) -% \secname{Introduction} -% \secname{The first year} -% \secname{Specialisation} -% ...etc... -% \end{picture}} +% \chapname{Introduction} +% \chapname{Another chapter} +% \chapname{Third case} +% . . . +% \end{picture} +% } +% \end{example} +% The overview page:\\ +% The page doesn't have `contents' -- +% all the visual contents is generated +% by the \verb|\overview| command in the header +% \Example{31}[(continued)] +% \begin{example} +% \fancyhead[L]{Overview} +% \fancyhead[R]{\overview} +% \mbox{}\newpage % This produces the overview page +% +% % Front matter -- doesn't have blobs. % -% \begin{document} -% \fancyhead[R]{\overview}\mbox{}\newpage % This produces the overview page -% \fancyhead[R]{} % Front matter may follow here -% \clearpage % \fancyhead[RE]{\rightmark} +% \fancyhead[RO,LE]{} +% \fancyhead[LO]{\leftmark} +% +% \pagenumbering{roman} +% \thispagestyle{plain} +% \tableofcontents +% . . . +% \newpage +% +% % Here the document begins +% +% \pagenumbering{arabic} +% +% % Now activate the blobs +% % \fancyhead[RO]{\rblob} % \fancyhead[LE]{\lblob} -% \fancyhead[LO]{{\leftmark} -% ... -% \end{verbatim} -% \caption{Thumb-index code} -% \label{fig:thumb} -% \end{figure} +% +% % Page style 'plain' does not have the usual header, +% % but it does have the blobs. +% +% \fancypagestyle{plain}{% +% \fancyhead[RE,LO]{} +% \renewcommand{\headrule}{}% +% } +% \end{example} % % \section{Float placement} % -% \textbf{Note: This section is not about \Package{fancyhdr}, but about +% \textbf{Note: This section is not about \pkg{fancyhdr}, but about % page layout, especially about the placement of floats.} % % Floats are page elements that float with respect to the rest of the % document. Standard floats are tables and figures, but with the -% \TTindex{float}% -% \Package{float} package you can easily make new ones, like algorithms. Most +% \PKGindex{float}% +% \pkg{float} package you can easily make new ones, like algorithms. Most % of the time floats work satisfactory, but sometimes \LaTeX{} seems too % stubborn to do what you want. This section describes how you can influence % \LaTeX{} so that it will do most of the time what you want. There might, @@ -2712,7 +4436,7 @@ % \end{enumerate} % % In the first two cases you must first check if you have given the correct -% ``placement'' parameter to you float, e.g.\ \Cmd{begin\{figure\}[htp]} +% ``placement'' parameter to you float, e.g., \Cmd{begin\{figure\}[htp]} % specifies that your figure may be placed either: Here (i.e., in the text % position where the command is given), on the Top of a page (which may be % the page where you put the command), or on a separate Page of floats. You @@ -2725,16 +4449,17 @@ % \begin{enumerate} % \item The float didn't fit on the page. In this case it has to move to the % next page or even further. If you didn't specify either \texttt{[t]} or -% \texttt{[b]} in the position parameter, \latex/ must save it until it has +% \texttt{[b]} in the position parameter, \LaTeX{} must save it until it has % enough for a page of floats. So don't specify only \texttt{[h]}. If you -% want to give \latex/ a chance to put the float on a page of floats, you +% want to give \LaTeX{} a chance to put the float on a page of floats, you % must also specify ``\texttt{p}''. -% \item The placement would violate the constraints imposed by \latex/'s +% \item The placement would violate the constraints imposed by \LaTeX's % float placement parameters. This is one of the most occurring causes and % it can easily be corrected by changing the parameters. Here is a list of % them with their default values: % \end{enumerate} % \begin{center} +% \small % \CmdIndex{topfraction} % \CmdIndex{bottomfraction} % \CmdIndex{textfraction} @@ -2763,88 +4488,92 @@ % % There are also some others for double column floats in two-column documents. % -% The values in the righthand column are the defaults for the standard -% \latex/ classes. Other classes could use different defaults. As you see +% The default values are for the standard +% \LaTeX{} classes. Other classes could use different defaults. As you see % with the default values a float will not be put in the bottom of a page if % its height is more than 30\% of the page height. So if you specify \texttt{[hb]} for % a float which is taller it has to move to a float page. But if it is less % than 50\% of the page height it will have to wait until some more floats % are given before a float page can be filled to satisfy the +% \phantomsection\label{page:floatpagefraction}^^A % \cs{floatpagefraction} parameter. If you have this kind of behaviour you -% can easily adapt the parameters, e.g.\ with: -% \begin{verbatim} +% can easily adapt the parameters, e.g., with: +% \begin{code} % \renewcommand{\textfraction}{0.05} % \renewcommand{\topfraction}{0.95} % \renewcommand{\bottomfraction}{0.95} % \renewcommand{\floatpagefraction}{0.35} % \setcounter{totalnumber}{5} -% \end{verbatim} +% \end{code} % You may want to be careful not to make \cs{floatpagefraction} too small, % otherwise you may get too many small floatpages. % -% You can force \latex/ to ignore most of the parameters for one specific float +% You can force \LaTeX{} to ignore most of the parameters for one specific float % occurrence by -% including an exclamation mark (!) in the placement parameters, e.g., -% \begin{verbatim} +% including an exclamation mark (\texttt{!}) in the placement parameters, e.g., +% \begin{code} % \begin{figure}[!htb] -% \end{verbatim} +% \end{code} % % Floats which contain a ``\texttt{t}'' in the position parameter could be % placed before the place where they are referenced (but on the same page). -% This is normal behaviour for \latex/ but some people just don't like it. +% This is normal behaviour for \LaTeX{} but some people just don't like it. % There are a number of ways to prevent this: % \begin{enumerate} % \item Of course deleting the ``\texttt{t}'' will help, but in general this is % undesirable, as you may want the float to be placed at the top of the % next page. -% \item use the \Package{flafter} package which causes floats never to be +% \item \PKGindex{flafter}% +% use the \pkg{flafter} package which causes floats never to be % placed ``backwards''. % \item use the command \cs{suppressfloats[t]}. This +% \CmdIndex{suppressfloats}% % command will cause floats for the top position \emph{on this page} to be % moved to the next page. This can also be done with \texttt{[b]} or % without parameter for all floats on this page. % \end{enumerate} % -% If in spite of all your attempts \latex/ still moves your floats to the end +% If in spite of all your attempts \LaTeX{} still moves your floats to the end % of the document or the end of a chapter, you can insert a \cs{clearpage} % command. This will start a new page and insert all pending floats before % continuing. If it is undesirable to have a pagebreak you can use the -% \Package{afterpage} package and the following command: -% \TTindex{afterpage}\CmdIndex{afterpage}\CmdIndex{clearpage}% -% \begin{verbatim} +% \pkg{afterpage} package and the following command: +% \PKGindex{afterpage}\CmdIndex{afterpage}\CmdIndex{clearpage}% +% \begin{code} % \afterpage{\clearpage} -% \end{verbatim} +% \end{code} % % This will wait until the current page is finished and then flush all -% outstanding floats. In some pathological circumstances \Package{afterpage} +% outstanding floats. In some pathological circumstances \pkg{afterpage} % may give strange results, however. % % Finally, if you want a float only at the place where you define it, without -% \latex/ moving it whatsoever, you can use the \Package{float} package and +% \LaTeX{} moving it whatsoever, you can use the \pkg{float} package and % give the command: -% \TTindex{float}\CmdIndex{restylefloat}% -% \begin{verbatim} +% \PKGindex{float}\CmdIndex{restylefloat}% +% \begin{code} % \restylefloat{figure} -% \end{verbatim} +% \end{code} % in the preamble. Now you will be able to % specify \texttt{[H]} as the position parameter, which will mean ``HERE % and only HERE''. This may cause an unwanted page break however. % If you want to avoid the unwanted pagebreak, i.e., let % \LaTeX{} move the float only if it doesn't fit on the page, then use the -% \Package{afterpage} package with: -% \TTindex{afterpage}\CmdIndex{afterpage}\CmdIndex{clearpage}% -% \begin{verbatim} +% \pkg{afterpage} package with: +% \PKGindex{afterpage}\CmdIndex{afterpage}\CmdIndex{clearpage}% +% \begin{code} % \afterpage{\clearpage \begin{figure}[H] ... \end{figure}} -% \end{verbatim} +% \end{code} % -% Complaints from \latex/ about ``Too many floats'' are usually caused by one -% of the above problems: floats not being able to be placed and \latex/ +% \index{Too many floats}% +% Complaints from \LaTeX{} about ``Too many floats'' are usually caused by one +% of the above problems: floats not being able to be placed and \LaTeX{} % collecting too many of them. The solutions given above, especially those % with \cs{clearpage} in them will usually help. In some cases there -% really are too many floats, as \latex/ has a limited number of ``boxes'' to +% really are too many floats, as \LaTeX{} has a limited number of ``boxes'' to % store the floats. The package -% \TTindex{morefloats}% -% \Package{morefloats} can be used to increase +% \PKGindex{morefloats}% +% \pkg{morefloats} can be used to increase % this number. If you need still more then you must edit a private copy of % this file, but even then there will be some limit that you cannot pass. % Then your only resort will be to change your document. @@ -2876,12 +4605,12 @@ % % \subsection{Tables} % -% For tables longer than a page you can use the \Package{longtable} package. -% \TTindex{longtable} +% For tables longer than a page you can use the \pkg{longtable} package. +% \PKGindex{longtable} % This package defines a \texttt{longtable} environment that is a kind of -% amalgamation of \texttt{table} and \texttt{tabular}. It has approximately -% the same syntax as the \texttt{tabular} environment, but it adds some -% features of \texttt{table}, like captions. Longtables will be automatically +% amalgamation of \env{table} and \env{tabular}. It has approximately +% the same syntax as the \env{tabular} environment, but it adds some +% features of \env{table}, like captions. Longtables will be automatically % split when they don't fit on the page. And they will be entered in the list % of tables when a caption is given. They will not float, however, and cannot % be used inside a float environment. This could mean that another @@ -2890,20 +4619,20 @@ % out of order. Another problem could be that the \texttt{longtable} starts % rather far down the page, which isn't a pleasant sight. If you want the % \texttt{longtable} to start at the top of the page, the best thing to do is -% to include it in an \cs{afterpage} command (using the \Package{afterpage} -% package). As a \texttt{longtable} is by definition large, it is best to put +% to include it in an \cs{afterpage} command (using the \PKGindex{afterpage}\pkg{afterpage} +% package). As a \env{longtable} is by definition large, it is best to put % it in a separate file, and \cs{input} it in the \cs{afterpage} command: -% \CmdIndex{afterpage}\TTindex{afterpage}\CmdIndex{clearpage}% -% \begin{verbatim} +% \CmdIndex{afterpage}\PKGindex{afterpage}\CmdIndex{clearpage}% +% \begin{code} % \afterpage{\input{mytable}} -% \end{verbatim} -% \begin{verbatim} +% \end{code} +% or +% \begin{code} % \afterpage{\clearpage\input{mytable}} -% \end{verbatim} +% \end{code} % The last form has the additional advantage that most of the outstanding % floats will be printed first. % -% % \subsection{Figures} % % There isn't an equivalent ``\texttt{longfigure}'' solution, so for figures you @@ -2913,58 +4642,245 @@ % entry in the list of figures. % % You will have to split the figure into pieces and put each part -% in a separate \texttt{figure} environment. To keep them together it is best -% to use only the \texttt{[p]} placement, so that they will be put on -% floatpages. As they are bigger than a page this is appropriate. The first +% in a separate \texttt{figure} environment. The first % part would then get a \cs{caption}, the subsequent parts would be used % without a caption, or a caption that will not go to the list of figures. % If you want to add a caption-like text, enter it as % normal text rather than a \cs{caption}, so that it will not be entered in % the list of figures. It may also be desirable to issue a \cs{clearpage} -% first, just like we did for the \texttt{longtable}, and to encapsulate this -% in the \cs{afterpage} command. E.g., -% \begin{verbatim} -% \afterpage{\clearpage\input{myfigure}} -% \end{verbatim} -% where \texttt{myfigure.tex} contains: -% \begin{verbatim} -% \begin{figure}[p] -% \includegraphics{myfig1.eps} -% \caption{This is a multipage figure} -% \label{fig:xxx} +% first, just like we did for the \texttt{longtable}. +% +% We give a series of possible solutions here, which can be found in +% Example 33. +% +% First we include the \texttt{figure}s with the \texttt{[!htbp]} +% position option to give \LaTeX{} maximum freedom to place them. This +% way we hope they keep them together, although there is no guarantee. +% +% \Example{33}[(A)] +% \begin{example} +% \newcommand{\fakecaption}[2]{% #1 = figure label #2 = caption +% \par Figure~\ref{#1}: #2 +% } +% \begin{figure}[!htbp] +% \centering +% \includegraphics[scale=0.5]{example-image-a} +% \caption[This is a multipart figure] % For the list of figures +% {This is a multipart figure (a)} +% \label{fig:first} % \end{figure} -% \begin{figure}[p] -% \includegraphics{myfig2.eps} -% \begin{center} -% Figure~\ref{fig:xxx} (continued) -% \end{center} +% \begin{figure}[!htbp] +% \centering +% \includegraphics[scale=0.5]{example-image-b} +% \fakecaption{fig:first}{This is a multipart figure (b)} % \end{figure} -% \end{verbatim} -% -% You have to make sure that the last part is big enough, otherwise \LaTeX{} -% could decide to postpone it until it has collected some more floats. This -% can be done either by making the figure big enough (e.g.\ by adding some -% \cs{vspace}), or by tweaking the \cs{floatpagefraction} -% \CmdIndex{floatpagefraction} parameter. +% . . . +% \end{example} +% +% There will probably be some of the normal text between the figure +% parts, unless they happen to fit perfectly on the page, which isn't +% very probable. But, what also can come between them is other floats, +% such as a \env{table}. We can prevent that previous floats intrude +% here by issuing a \cs{clearpage} command, but this will abruptly end +% the current page. As we have seen before, we can do better by +% \CmdIndex{afterpage}\CmdIndex{clearpage}% +% including the \cs{clearpage} command in \cs{afterpage}, and we would +% also put the figures in the \cs{afterpage}. To keep the \cs{afterpage} +% command more tidy, it is advised to put the code for the figures in a +% macro, or in a file that is included with \cs{input}. For example: +% +% \Example{33}[(B)] +% \begin{example} +% \newcommand{\myfigures}{% +% \begin{figure}[!htbp] +% \centering +% \includegraphics[scale=0.5]{example-image-a} +% \caption[This is a multipart figure] % For the list of figures +% {This is a multipart figure (a)} +% \label{fig:second} +% \end{figure} +% \begin{figure}[!htbp] +% \centering +% \includegraphics[scale=0.5]{example-image-b} +% \fakecaption{fig:second}{This is a multipart figure (b)} +% . . . +% } +% . . . +% \afterpage{\clearpage\myfigures} +% \end{example} +% \CmdIndex{afterpage} % % If you want your multipage figure to start at a lefthand-side % (even-numbered) page you can use a test in the \cs{afterpage} command -% (using the \Package{ifthen} package): +% (using the \PKGindex{ifthen}\pkg{ifthen} package): % \CmdIndex{afterpage} % \CmdIndex{ifthenelse} -% \begin{verbatim} +% \begin{code} % \afterpage{\clearpage -% \ifthenelse{\isodd{\value{page}}{\afterpage{\input{myfigure}}} % odd page -% {\input{myfigure}}}} % even page -% \end{verbatim} +% \ifthenelse{\isodd{\value{page}} +% {\afterpage{\myfigures}} % odd page +% {\myfigures}}} % even page +% \end{code} +% % If there are too many floats on the skipped page, this may still fail to % start your multipage figure on an even page, however. % +% But if there is enough space left on a page, some of the text will go +% between the figures. Also, if there is still some figure part of a +% previous sequence that has not yet found a place, it will be forced out +% because of the \cs{clearpage} and the a new page will start, with the +% previous page not optimally filled. +% +% So using \cs{clearpage} may also not be optimal. We could also try +% to put the figure parts only on float pages, so that no intervening +% text will come between them. This can be done by using the position +% parameter \texttt{[p]}. This could cause them to be pushed towards +% the back of the document. This is because float pages need to be +% reasonably full before they are generated. You could try to cure this +% for example by adding some \cs{vspace} to the last part, or by +% tweaking the \cs{floatpagefraction} +% \CmdIndex{floatpagefraction} parameter (see +% section~\ref{page:floatpagefraction} on page~\pageref{page:floatpagefraction}). +% To prevent previous floats to intrude in the float page, we also +% combine this with the \cs{afterpage} and \cs{clearpage}, as in the +% previous example, but this will probably push the figures even further +% towards the back. +% +% \Example{33}[(C)] +% \begin{example} +% \newcommand{\myfigures}{% +% \begin{figure}[p] +% \centering +% \includegraphics[scale=0.5]{example-image-a} +% \caption[This is a multipart figure] % For the list of figures +% {This is a multipart figure (a)} +% \label{fig:third} +% \end{figure} +% \begin{figure}[p] +% \centering +% \includegraphics[scale=0.5]{example-image-b} +% \fakecaption{fig:third}{This is a multipart figure (b)} +% . . . +% } +% . . . +% \afterpage{\clearpage\myfigures} +% \end{example} +% +% So maybe just use the previous example without \cs{afterpage} and +% \cs{clearpage}. +% +% \Example{33}[(D)] +% \begin{example} +% \myfigures % (with the [p] placement) +% \end{example} +% +% The defects of the above approach are +% \begin{enumerate} +% \item It is clumsy to make the captions of all but the first part of the figure +% \item It is hard to refer to the parts separately +% \end{enumerate} +% \PKGindex{subcaption}% +% For this the \pkg{subcaption} package comes to the rescue. First it +% \CmdIndex{ContinuedFloat}% +% has a \cs{ContinuedFloat} command to indicate that a figure is a +% continuation of a previous one, and therefore will not get a new +% number, and if you wish, neither a separate entry in the list of figures. +% +% \CmdIndex{subcaptionbox}\TTindex{subfigure}% +% Second, it has a \cs{subcaptionbox} command and a \env{subfigure} +% environment for the parts, where a subcaption can be given, that can +% also have a \cs{label} to refer to in the document. The +% \cs{subcaptionbox} is a specialized \cs{parbox} but its \emph{width} +% parameter is optional. The \env{subfigure} environment is a +% specialized \env{minipage}, so it has the same parameters. +% +% These should be used inside a \env{figure} environment, so all the +% placement methods of the previous part (Examples 33 A–D) should still apply. +% +% The \env{subfigure} environment has a \cs{subcaption} command for +% the subcaption; the \cs{subcaptionbox} has the subcaption (with its +% \cs{label} if desired) as its first argument. When more than one +% \cs{subcaptionbox} is horizontally next to each other, the subcaptions +% will be aligned. +% +% In the following example (figure~\ref{fig:subfigures}) +% we use a \cs{subcaptionbox} for the first two +% parts, which are together in a single \env{figure} environment. We +% use a \env{subfigure} environments for the other two, each one in +% its own \env{figure} environment. These use a +% \cs{caption}\texttt{[]\{\ldots\}}. The empty optional argument +% \texttt{[]} causes the caption not to appear in the list of figures. +% The last subfigure (\ref{subfig:last} on page~\pageref{subfig:last}) +% has a label on the \cs{subcaption} that we refer to in this sentence. +% +% \Example{33}[(E)] +% \begin{example} +% \begin{figure}[p] +% \centering +% \subcaptionbox{a subfigure in a \cs{subcaptionbox}} +% {\includegraphics[scale=0.3]{example-image-a}} +% \quad +% \subcaptionbox{another subfigure, also in a \cs{subcaptionbox}} +% {\includegraphics[scale=0.4]{example-image-b}} +% \caption{A figure with subfigures} +% \label{fig:subfigures} +% \end{figure} +% +% \begin{figure}[p]\ContinuedFloat +% \begin{subfigure}{\textwidth} +% \centering +% \includegraphics[scale=0.5]{example-image-c} +% \subcaption{subfigure} +% \end{subfigure} +% \caption[]{A figure with subfigures} +% \end{figure} +% +% \begin{figure}[p]\ContinuedFloat +% \begin{subfigure}{\textwidth} +% \centering +% \includegraphics[scale=0.5]{example-image} +% \subcaption{last subfigure} +% \label{subfig:last} +% \end{subfigure} +% \caption[]{A fake caption just for demo} +% \end{figure} +% \end{example} +% +% \begin{figure}[p] +% \centering +% \subcaptionbox{a subfigure in a \cs{subcaptionbox}} +% {\includegraphics[scale=0.3]{example-image-a}} +% \quad +% \subcaptionbox{another subfigure, also in a \cs{subcaptionbox}} +% {\includegraphics[scale=0.4]{example-image-b}} +% \caption{A figure with subfigures} +% \label{fig:subfigures} +% \end{figure} +% +% \begin{figure}[p]\ContinuedFloat +% \begin{subfigure}{\textwidth} +% \centering +% \includegraphics[scale=0.5]{example-image-c} +% \subcaption{subfigure} +% \end{subfigure} +% \caption[]{A figure with subfigures (cont.)} +% \end{figure} +% +% \begin{figure}[p]\ContinuedFloat +% \begin{subfigure}{\textwidth} +% \centering +% \includegraphics[scale=0.5]{example-image} +% \subcaption{last subfigure} +% \label{subfig:last} +% \end{subfigure} +% \caption[]{A fake caption just for demo} +% \end{figure} +% % \section{Deprecated commands} % \label{sec:depr} % % This section contains the description of deprecated commands. These -% were parts of the original implementation of \Package{fancyheadings}. +% were parts of the original implementation of \pkg{fancyheadings}. % They continue to work for compatibility reasons, % but it is recommended not to use them anymore. This description is % given so that you know what they mean and how to convert them to the @@ -2975,12 +4891,7 @@ % the modern commands are given in table~\ref{tab:depr}. % % \begin{table}[h!t] -% \CmdIndex{lhead} -% \CmdIndex{chead} -% \CmdIndex{rhead} -% \CmdIndex{lfoot} -% \CmdIndex{cfoot} -% \CmdIndex{rfoot} +% \begin{function}{\lhead, \chead, \rhead, \lfoot, \cfoot, \rfoot} % \begin{tabular}{ll} % \toprule % \Cmd{lhead\{xx\}} & \Cmd{fancyhead[L]\{xx\}} \\ @@ -2999,6 +4910,7 @@ % \bottomrule % \end{tabular} % \caption{Deprecated commands and their translation\label{tab:depr}} +% \end{function} % \end{table} % % As you see, if there is an optional parameter, this one applies to the @@ -3007,32 +4919,37 @@ % documentclass. If there is no optional parameter, the required % parameter applies to both even and odd pages. % -% \CmdIndex{fancyplain} +% \begin{function}{\fancyplain} % \PSindex{fancyplain} -% There was also a special pagestyle \texttt{fancyplain} that could be -% used to define both the pagestyle \texttt{fancy} and to redefine the -% pagestyle \texttt{plain} at the same time. In order to use that you say -% \begin{verbatim} -% \pagestyle{fancyplain}} -% \end{verbatim} +% There was also a special page style \texttt{fancyplain} that could be +% used to define both the page style \texttt{fancy} and to redefine the +% page style \texttt{plain} at the same time. In order to use that you say +% \begin{code} +% \pagestyle{fancyplain} +% \end{code} % and then in the headers/footers you use for example: -% \begin{verbatim} -% \fancyhead[L]{\fancyplain{value for `plain' page}{value for other pages}}} -% \end{verbatim} +% \begin{code} +% \fancyhead[L]{\fancyplain{value for `plain' page} +% {value for other pages}}} +% \end{code} % -% The \cs{fancyplain} command is only useful within the pagestyle \texttt{fancyplain}. -% Nowadays you would just redefine pagestyle \texttt{plain} with the +% The \cs{fancyplain} command is only useful within the page style \texttt{fancyplain}. +% Nowadays you would just redefine page style \texttt{plain} with the % \Cmd{fancypagestyle\{plain\}\{xxxx\}} command (see section~\ref{sec:pagestyle-plain}). +% \end{function} % -% \CmdIndex{plainheadrulewidth} -% \CmdIndex{plainfootrulewidth} +% \begin{variable}{\plainheadrulewidth, \plainfootrulewidth} % There are also \cs{plainheadrulewidth} and \cs{plainfootrulewidth} % commands to define the values of \cs{headrulewidth} and % \cs{footrulewidth} to be used on `\texttt{plain}' pages. This also -% only works with the pagestyle \texttt{fancyplain}, not when you -% redefine pagestyle \texttt{plain} with the \cs{fancypagestyle} command. +% only works with the page style \texttt{fancyplain}, not when you +% redefine page style \texttt{plain} with the \cs{fancypagestyle} command. +% \end{variable} +% +% \end{documentation} % % \section{Contact information} +% \label{sec:contact} % % Pieter van Oostrum\\ % E-mail: pieter@vanoostrum.org \\ @@ -3053,10 +4970,10 @@ % \begin{itemize} % \item Removed references to fixmarks.sty as that is no longer used. % \item References to older \LaTeX{} versions removed. -% \item Removed obsolete source code of \Package{extramarks.sty} +% \item Removed obsolete source code of \pkg{extramarks.sty} % \item Changed font commands to \cs{textbf} and \cs{textsl}. % \item Added description of the \Cmd{fancy\ldots offset} commands. -% \item Added various \Cmd{\ldots xmark} commands from \Package{extramarks.sty}. +% \item Added various \Cmd{\ldots xmark} commands from \pkg{extramarks.sty}. % \item Various corrections applied. % \item Updated contact information. % \item Added Version information. :) @@ -3072,8 +4989,8 @@ % \end{itemize} % \item Version 3.9, October 13, 2016. % \begin{itemize} -% \item Documentation integrated in \texttt{fancyhdr.dtx}. -% \item Version number unified with \Package{fancyhdr.sty}. +% \item Documentation integrated in \pkg{fancyhdr.dtx}. +% \item Version number unified with \pkg{fancyhdr.sty}. % \item All deprecated commands moved to a separate section (\ref{sec:depr}). % \item Documentation expanded. % \end{itemize} @@ -3121,7 +5038,7 @@ % \item The \cs{fancyheadinit}, \cs{fancyfootinit}, and % \cs{fancyhfinit} commands. % \item[] \textbf{Note:} The following changes were mostly copied from the -% \texttt{nccfancyhdr} package by Alexander I. Rozhenko. +% \PKGindex{nccfancyhdr}\pkg{nccfancyhdr} package by Alexander I. Rozhenko. % \item The \cs{fancycenter} command (section~\ref{sec:fancycenter}). % \item The \texttt{headings} and \texttt{myheadings} package options % (see section~\ref{sec:options}). @@ -3143,23 +5060,20 @@ % compatibility. However, there are some rare cases where spurious % spaces can still show up in the header/footer fields. In that case % the user will have to eliminate these. -% \item Cleanup the documentation of the \cs{fancycenter} command. -% \item Miscellaneous small documentation changes. -% \item Make \cs{fancyhead} etc. \cs{long}. % \end{itemize} % \item Version 4.0.3, May 18, 2022 % \begin{itemize} -% \item Initialize \cs{@mkboth} in \texttt{extramarks.sty} so that +% \item Initialize \cs{@mkboth} in \pkg{extramarks.sty} so that % it will pick up changes to \cs{markboth}. % \end{itemize} % \item Version 4.1, Sept 6-Nov 9, 2022 % \begin{itemize} % \item Implement \texttt{twoside} package option to allow two-sided headers -% and footers in one-sided documents. -% \item Make \Package{fancyhdr} compatible with the document class \Package{newlfm}. +% and footers in one-sided documents. +% \item Make \pkg{fancyhdr} compatible with the document class \pkg{newlfm}. % \item Make \cs{nouppercase} compatible with newer definitions of \cs{MakeUppercase}. % \end{itemize} -% \item Version 4.2, April 19-23, 2024 +% \item Version 4.2, April 19, 2024 % \begin{itemize} % \item Reset catcodes to their default values in order to facilitate % \cs{input} in headers/footers when \texttt{verbatim} is active. @@ -3170,36 +5084,63 @@ % \item Changed \cs{f@nch@everypar}. If the LaTeX kernel has % \texttt{expl3}, use \cs{tex\_everypar:D}, and reset \cs{par}, % \cs{@@par} and \cs{endgraf} to their original \TeX{} definitions, so that -% no paragraph hooks will intrude in \Package{fancyhdr} code\footnote +% no paragraph hooks will intrude in \pkg{fancyhdr} code\footnote % {See \url{https://tex.stackexchange.com/q/691262/113546}}. -% Therefore paragraph hooks will not work inside \Package{fancyhdr} headers and +% Therefore paragraph hooks will not work inside \pkg{fancyhdr} headers and % footers to avoid unwanted interactions with the main text. % \end{itemize} % \item Version 4.3.1, July 23, 2024 % \begin{itemize} % \item Also reset \cs{everypar} to its original \TeX{} value % \cs{tex\_everypar:D} in \cs{f@nch@resetpar}, otherwise environments -% based on \cs{trivlist} will not work properly in \Package{fancyhdr} +% based on \cs{trivlist} will not work properly in \pkg{fancyhdr} % headers and footers. % \end{itemize} % \item Version 4.4, Nov 20, 2024 % \begin{itemize} % \item Add setting the new style marks for \cs{leftmark} % (\texttt{2e-left}) and \cs{rightmark} (\texttt{2e-right} and -% \texttt{2e-right-nonempty}) in \Package{extramarks.sty}. +% \texttt{2e-right-nonempty}) in \pkg{extramarks.sty}. % \end{itemize} -% \item Version 4.5, Nov 21-Dec 5, 2024 +% \item Version 4.5, Nov 21-30, 2024 % \begin{itemize} -% \item \Package{extramarks}: Don't redefine \cs{leftmark} and \cs{rightmark} in +% \item \pkg{extramarks}: Don't redefine \cs{leftmark} and \cs{rightmark} in % \LaTeX{} kernel 2025-06-01 and later. -% \item \Package{fancyhdr}: use a better method to disable paragraph +% \item \pkg{fancyhdr}: use a better method to disable paragraph % hooks than the v4.3 code. -% \item \Package{extramarks}: add commands \cs{extramarksleft} and -% \cs{extramarksright}. +% \item \pkg{extramarks-v4} (legacy version): add commands +% \cs{extramarksleft} and \cs{extramarksright}. % \item \pkg{fancyhdr}: added hooks. % \end{itemize} % \end{itemize} % +% \subsection{Changes in version 5} +% \label{sec:version-5} +% Version 5 adds several new features. Most notable is a new +% implementation of the \pkg{extramarks} package, which now has +% independent marks. +% +% \begin{itemize} +% \item Version 5.0, Feb 11, 2021-Jan 1, 2025 +% \begin{itemize} +% \item Shorten Warning message about \cs{headheight}/\cs{footskip} too large. +% \item If the option \texttt{[nocheck]} is given, just keep quiet and +% don't change the \cs{headheight}/\cs{footskip} even if the +% \texttt{[compatV3]} option is given. +% \item Added \cs{fancypagestyle*} variant. +% \item Added command \cs{fancyhdrsettoheight}. +% \item New implementation of package \pkg{extramarks} with +% fallback to \pkg{extramarks-v4}. +% \item Mark the \texttt{compatV3} option deprecated. +% \item Added command \cs{fancyfootalign}. +% \item Added command \cs{fancyhdrbox} (section~\ref{sec:fancyhdrbox}). +% \item Added command \cs{fancypagestyleassign} (section~\ref{sec:fancypagestyleassign}). +% \item Added commands \cs{fancyheadwidth}, \cs{fancyfootwidth} and +% \cs{fancyhfwidth} (section~\ref{sec:field-width}). +% \item Many documentation improvements. +% \end{itemize} +% \end{itemize} +% % % % \StopEventually{% @@ -3224,7 +5165,7 @@ % header/footer without changing the actual title? % % Here is an example: -% \begin{verbatim} +% \begin{code} % \fancyhead[LE,RO]{\nouppercase{\rightmark}} % Section title % \fancyhead[LO,RE]{\nouppercase{\leftmark}} % Chapter title % \fancyfoot[C]{\thepage} @@ -3233,7 +5174,7 @@ % . . . % \section{This is a very long section title that will not fit in the header} % . . . -% \end{verbatim} +% \end{code} % With these settings the header will come out as: % % \medskip @@ -3242,7 +5183,7 @@ % \hfill % \llap{\parbox[b]{\textwidth}{\raggedleft 1.2. This is a very long % section title that will not fit in the header}}^^A -% } +% }\strut % \hrule height\headrulewidth width\textwidth} % \bigskip % \noindent which isn't very nice. @@ -3257,12 +5198,16 @@ % least in the \texttt{book} and \texttt{report} documentclasses. In the % \texttt{article} class this would be the \cs{section} and % \cs{subsection} commands.} -% \begin{verbatim} -% \chapter[Short chapter title]{This is a very long chapter title} -% . . . +% \Example{34a} +% \begin{example} +% \chapter[This is a not so long chapter title] +% {This is a very long chapter title to see if we can give +% fancyhdr a shorter one that fits in the header} +% . . . % \section[Short section title] -% {This is a very long section title that will not fit in the header} -% \end{verbatim} +% {This is a very long section title that will not fit in +% the header} +% \end{example} % The short titles will now appear in the header. However, these will % also appear in the table of contents. If that is what you want then % you are ready. But if you want to use the long titles in the table of @@ -3279,10 +5224,11 @@ % value that is supplied by the \cs{chapter} command, by supplying an % additional \cs{chaptermark} command after the \cs{chapter} command, % like this: -% \begin{verbatim} -% \chapter{This is a very long chapter title that does not fit in the header} +% \Example{34b} +% \begin{example} +% \chapter{This is a long chapter title that does not fit in the header} % \chaptermark{This is a not so long chapter title} -% \end{verbatim} +% \end{example} % For the section titles the situation is more complicated. Here we use % the \cs{rightmark}, which uses the first mark of its kind on the page. % So you might think putting a \cs{sectionmark}\CmdIndex{sectionmark} before the \cs{section} @@ -3311,41 +5257,51 @@ % our included \cs{sectionmark} commands % % So the complete code would be: -% \begin{verbatim} +% \begin{code} % \section[Long title]{Long title\sectionmark{Short title}} % \sectionmark{Short title} -% \end{verbatim} +% \end{code} % To avoid all the repetitions, it is better to make a macro: -% \begin{verbatim} -% \newcommand{\Section}[2]{\section[#1]{#1\sectionmark{#2}}\sectionmark{#2}} +% \Example{34b}[(continued)] +% \begin{example} +% \newcommand{\Section}[2]{% +% \section[#1]{#1\sectionmark{#2}}\sectionmark{#2}} % . . . -% \Section{Text title}{Header title} -% \end{verbatim} +% \Section{This is a long section title that will not fit in +% the header}{Shortened section title} +% \end{example} % And if you want to use yet a different text in the table of contents, % you can make a macro with three parameters. The third parameter is the % text to be put in the table of contents. We use this parameter as the % optional argument for the \cs{section} command. -% \begin{verbatim} -% \newcommand{\Sectioniii}[3]{\section[#3]{#1\sectionmark{#2}}\sectionmark{#2}} +% \Example{34b}[(continued)] +% \begin{example} +% \newcommand{\Sectionx}[3]{% +% \section[#3]{#1\sectionmark{#2}}\sectionmark{#2}} % . . . -% \Sectioniii{Text title}{Header title}{TOC title} -% \end{verbatim} +% \Sectionx{This is another long section title that will not +% fit in the header}{Short section title 3} +% {This is the section title in the table of contents} +% \end{example} % Please note that if you use the \texttt{article} class, instead of % \cs{chaptermark} and \cs{sectionmark}, you would probably use % \cs{sectionmark} and \cs{subsectionmark}. % % \subsection{Using automatic truncation} % -% For this solution we use the \Package{truncate} package by Donald +% For this solution we use the \PKGindex{truncate}\pkg{truncate} package by Donald % Arseneau. This has a \cs{truncate}\CmdIndex{truncate} command that % truncates a text to a maximum size, when it exceeds that size. We put % both headers in \cs{truncate} to limit it to half the \cs{headwidth}. % Of course it is also possible to make asymmetric arrangements. -% \begin{verbatim} +% \Example{34c} +% \begin{example} % \usepackage[fit]{truncate} -% \fancyhead[LE,RO]{\nouppercase{\truncate{0.5\headwidth}{\rightmark}}} -% \fancyhead[LO,RE]{\nouppercase{\truncate{0.5\headwidth}{\leftmark}}} -% \end{verbatim} +% \fancyhead[LE,RO]{\nouppercase{% +% \truncate{0.5\headwidth}{\rightmark}}} % Section title +% \fancyhead[LO,RE]{\nouppercase{% +% \truncate{0.5\headwidth}{\leftmark}}} % Chapter title +% \end{example} % We don't have to make any changes to the chaper and section titles % because \cs{truncate} will take care of this. % This arrangement gives the following header when both titles are too @@ -3356,12 +5312,12 @@ % \truncate{0.5\textwidth}{Chapter 1. This is a very long chapter title that does not fit in the header}^^A % \hfill % \truncate{0.5\textwidth}{1.2. This is a very long section title that will not fit in the header}^^A -% } +% }\strut % \hrule height\headrulewidth width\textwidth} % \bigskip % % Note that we have used the \texttt{[fit]} option of the -% \Package{truncate} package. Otherwise the right header will not be +% \pkg{truncate} package. Otherwise the right header will not be % right aligned, but it will start at halfway the header. % Note also that, as each part can occupy half of the available width, % they could theoretically touch each other. This can be prevented by @@ -3387,15 +5343,15 @@ % What can I do in order to reestablish the right behavior of the % \texttt{fancy} style?'' % -% The solution to this problem is actually very simple. The pagestyle +% The solution to this problem is actually very simple. The page style % \texttt{myheadings} (as well as \texttt{headings}\PSindex{headings}) redefines the -% \cs{chaptermark} and \cs{sectionmark}, so when you return to pagestyle +% \cs{chaptermark} and \cs{sectionmark}, so when you return to page style % \texttt{fancy}, the definitions you had given before (or the ones that -% \Package{fancyhdr} provided) are lost. You +% \pkg{fancyhdr} provided) are lost. You % just have to repeat them at the point where you switch back to -% pagestyle \texttt{fancy}. +% page style \texttt{fancy}. % -% \begin{verbatim} +% \begin{code} % \begin{document} % \frontmatter % \pagestyle{myheadings} @@ -3403,13 +5359,449 @@ % \mainmatter % \pagestyle{fancy} % \renewcommand{\chaptermark}[1]{....} -% \end{verbatim} +% \end{code} +% +% +% \section{Can I use \pkg{fancyhdr} with the \pkg{beamer} class?} +% \label{sec:beamer} +% +% \TTindex{beamer}% +% The \pkg{beamer} class has its own provisions for headers and +% footers with the \texttt{headline} and \texttt{footline} templates. +% The advantage of these is that they blend well with the +% \pkg{beamer} theme in use. +% +% Still people sometimes ask if \pkg{fancyhdr} can be used for +% header and footers because they are more familiar with this. I would +% advice to use the standard \pkg{beamer} features if possible, but +% actually it isn't difficult to use \pkg{fancyhdr} if you take +% provisions that the header and the footer don't +% interfere with the \pkg{beamer} layout. This can be done with +% \begin{code}[commandchars={+[]}] +% \setbeamertemplate{headline}{\vspace{+meta[headheight]}} +% \setbeamertemplate{footline}{\vspace{+meta[footskip]}} +% \end{code} +% \CmdIndex{headheight}\CmdIndex{footskip}% +% Note that \pkg{beamer} sets \cs{headheight} and \cs{footskip} to +% its own vales, so it doesn't make sense to set these in your document. +% Instead you supply the desired values with \cs{setbeamertemplate} as above. +% Also it is advised to add \cs{fancyfootalign}\texttt{\{0pt\}} to +% prevent the footer to be too close to the bottom edge; see section~\ref{sec:fancyfootalign} +% on page~\pageref{sec:fancyfootalign}.\\ +% Here is a complete example: +% \NoExample{with-beamer} +% \begin{example} +% \documentclass{beamer} +% \usepackage{graphicx} +% \usepackage{fancyhdr} +% \pagestyle{fancy} +% \fancyhead[L]{\includegraphics[width=0.1\textwidth]{example-image}} +% \fancyhead[R]{Course Name} +% \fancyhead[C]{\textbf{Subject}\\Author} +% \fancyfoot[L]{LEFT page footer} +% \fancyfoot[R]{RIGHT page footer} +% \fancyfoot[C]{{\thepage}} +% \fancyfootinit{\tiny} +% \renewcommand{\footrulewidth}{0.4pt} +% +% \setbeamertemplate{headline}{\vspace{30pt}} +% \setbeamertemplate{footline}{\vspace{14pt}} +% \fancyfootalign{0pt} +% +% \begin{document} +% +% \begin{frame}{Subject Title} +% Text of the slide +% \end{frame} +% +% \end{document} +% \end{example} +% +% \section{I want the first section and the first subsection in my headers} +% \label{sec:firstsubsection} +% +% A question that is regularly asked (e.g., on +% \texttt{tex.stackexchange.com}\footnote{See for example +% \url{https://tex.stackexchange.com/q/586066/113546}}) is how to get +% both the first section title and the first subsection title in the +% headers in the \pkg{article} documentclass. Unfortunately, +% traditional \LaTeX{} (releases before November 2022) can't give you +% the first subsection on the page. There are two problems: +% \begin{itemize} +% \item Traditional \LaTeX{} uses left marks for the section title and +% right marks for the subsection title. But it only has commands to +% extract the last left mark (\cs{leftmark}) and the first right mark +% (\cs{rightmark}). This means that if there are two or more sections on +% the page you get the last one, which can be counter-intuitive. +% The newer \LaTeX{} releases (November 2022 or newer) have a command to +% get the first of the left marks, however. \textbf{We assume in the +% following code that your \LaTeX{} is recent enough.} +% \item \LaTeX{} uses \cs{markboth} at a section title in the +% \pkg{article} class. This also sets an empty right mark. So in +% some cases you would get an empty subsection title in the header. To +% avoid this, \LaTeX{} now also has a mark that saves the non-empty +% right mark in a separate mark \texttt{2e-right-nonempty} +% \end{itemize} +% +% If there is no \cs{section} command on the page, it `inherits' the +% last section title of a previous page. Similarly for subsections. +% This gives us the following code: +% +% \Example{35}[(basic)] +% \begin{example} +% \usepackage{fancyhdr} +% \pagestyle{fancy} +% \fancyhead[L]{\FirstMark{2e-left}} +% \fancyhead[R]{\FirstMark{2e-right-nonempty}} +% \fancyfoot[C]{\thepage} +% +% \begin{document} +% \section{Section One} +% \subsection{Subsection One} +% . . . +% \end{example} +% This effectively solves the problem, but it has some undesirable +% properties, see below. Therefore, some refinement is +% possible. But we need an extra mark for this. So we are going +% to use the \LaTeX{} marks directly, instead of using the standard +% marks. This gives us a bit more control. We need two marks for this, +% one for the section title, and one for the subsection title. We call +% these \texttt{section} and \texttt{subsection} respectively. We +% replace the marking code above with the following, which gives +% the same result: +% \Example{35}[(new marks)] +% \begin{example} +% \usepackage{fancyhdr} +% \pagestyle{fancy} +% \NewMarkClass{section} +% \NewMarkClass{subsection} +% \fancyhead[L]{\FirstMark{section}} +% \fancyhead[R]{\FirstMark{subsection}} +% \renewcommand{\sectionmark}[1]{% +% \InsertMark{section}{\thesection. #1}} +% \renewcommand{\subsectionmark}[1]{% +% \InsertMark{subsection}{\thesubsection. #1}} +% \end{example} +% +% When you have a \cs{section} command on a page, but it doesn't have a +% subsection for an extended length, then, the +% previous subsection title is `inherited'. This may be sub-optimal, +% because it combines the title of section $n$ with a subsection title +% that belongs to a previous section, so the subsection isn't even +% present on the page, which looks unnatural. You may want to +% suppress the subsection title in the right header in this case. With the new +% \LaTeX{} marks this is possible. +% +% What we want is essentially the following: +% \begin{enumerate} +% \item If there is at least one subsection on the page, use the first one. +% \item Otherwise, if the previous page ended in a subsection (i.e., the page +% break was inside a subsection), use that subsection title. +% \item Otherwise (the page break was inside a section that had no +% subsections thus far), leave the right header empty. +% \end{enumerate} +% +% The first test can be done by comparing the subsection `topmark' and +% `firstmark'. The topmark is the last mark from the previous page +% (which might even have been inherited from an earlier page). If there +% is no subsection mark on the current page, firstmark is made equal to +% topmark. If there is a subsection mark on the page, firstmark will be +% a different mark. \LaTeX{} now has a command to compare the +% marks, like this:\\ +% \hspace*{\parindent}\cs{IfMarksEqualTF}\marg{mark}\marg{pos1}\marg{pos2}\marg{true +% code}\marg{false code}\\ +% where the \emph{pos} arguments are \texttt{top}, \texttt{first} or \texttt{last}. +% Please note that this test makes only sense in a header or +% footer\footnote{Or more generally, when \LaTeX's page building is active.}. +% So if we use\\ +% \hspace*{\parindent}\cs{IfMarksEqualTF}\texttt{\{subsection\}\{top\}\{first\}}\ldots\\ +% the \meta{true code} is executed when there is no subsection title on the +% current page, and the \meta{false code} when there is at least one. +% +% However, there is no command to see if the pagebreak is at the section +% or subsection level, because the two are independent. And we +% cannot use \LaTeX{} variables for this, because of the asynchronous +% processing of the page breaking. But we can do this if we introduce a +% new mark `\texttt{which}', that is used by both \cs{section} and +% \cs{subsection}. We let \cs{sectionmark} put ``0'' in it, and +% \cs{subsectionmark} ``1''. The lastmark of `\texttt{which}' on a page then +% indicates if the page ends within a subsection or not. And as the +% topmark on the following page is the same as lastmark on the previous +% page, we can use this topmark to see whether the text at the beginning +% of the page comes from a subsection (topmark = 1 means yes). +% +% There is one caveat, however. If the page begins immediately with a +% section title, the topmark may indicate that the previous page ended +% with a subsection, but that subsection did not extend past the +% pagebreak. It is tricky to detect this situation, but we will propose +% a solution at the end of the current section. +% So the new code for the right header becomes the following. We use the +% package \PKGindex{ifthen}\pkg{ifthen} for the test. +% +% \Example{35}[(continued)] +% \begin{example} +% \NewMarkClass{which} % Preamble +% \InsertMark{which}{0} % Initialize so there is always a valid value +% +% \fancyhead[R]{% +% \IfMarksEqualTF{subsection}{top}{first} +% {% no subsection mark on this page +% \ifthenelse{\TopMark{which}=1} % previous page ended in a subsection +% % then use that subsection +% {\TopMark{subsection}}% = \FirstMark{subsection} +% {}% otherwise empty right header +% } +% {% there is a subsectionmark on the page, use it +% \FirstMark{subsection}% +% }% +% } +% \renewcommand{\sectionmark}[1]{% +% \InsertMark{section}{\thesection. #1}% +% \InsertMark{which}{0}% +% } +% \renewcommand{\subsectionmark}[1]{% +% \InsertMark{subsection}{\thesubsection. #1}% +% \InsertMark{which}{1}% +% } +% \end{example} +% +% Now we want to suppress the `inheritance' of the subsection if there +% is a section title at the top of the page and the page contains no +% subsection title. The information whether a section title is at the +% top of the page is not available in the marks, so we need some other +% way to detect this. +% +% \TeX{} has two variables that can help us, \cs{pagegoal} is the vertical size +% that is still available on the page, and \cs{pagetotal} is the amount we +% have used so far\footnote{This doesn't include floats and footnotes.}. +% So if \cs{pagetotal}=\texttt{0pt} we are at the top of +% the page, otherwise somewhat further down. We can use this information to +% communicate to the header that no inheritance should take place. In +% reality, sometimes there is already a small amount of whitespace on +% the page, so the test should be less strict than +% \cs{pagetotal}=\texttt{0pt}. We might even choose to not inherit the +% subsection title if only a few lines of the previous subsection are +% present at the top of the page. Or maybe your design asks for no +% inheritance if the subsection at the top of the page before the +% section header is smaller than 1/3 of the page. The test would then be +% \cs{pagetotal}$<$0.33\cs{pagegoal}. In the code below we choose a few +% lines as the limit. +% +% We have to do the test just before the \cs{section} command is +% processed. This can be done with a \LaTeX{} \emph{hook}. +% +% The next question is how to communicate the fact that the section +% starts at (or near) to top of the page to the header. A simple way to +% do this is to set the `\texttt{which}' mark to $-1$ instead of 0. +% (Another way could be to define a special page style that does not do +% the inheritance, and activate that with \cs{thispagestyle}.) +% +% \begin{code} +% \AddToHook{cmd/section/before}{% +% % use whatever test your design requires +% \ifthenelse{\lengthtest{\pagetotal<4\baselineskip}} +% {\InsertMark{which}{-1}} +% {\InsertMark{which}{0}} +% } +% \end{code} +% +% It appears, however that this is the wrong place to set the mark. A +% pagebreak could occur between this code and the actual section title, +% so that the mark is put on the wrong page. The proper place for setting the +% mark is in the \cs{sectionmark} command, as that is guaranteed to +% always be together with the section title. So we must put the required +% value for the mark in a variable. +% +% There is another situation where a section title could end up at the +% top of the page: when it is processed at the bottom of the page, but +% there isn't enough space left to place it there. It will then be +% pushed to the next page. In that case the \cs{pagetotal} will be in +% the neighbourhood of \cs{pagegoal}. In the code below we test for +% \cs{pagetotal}$>$0.9\cs{pagegoal}, but some experimentation may be +% necessary to find a proper value. +% In the example 35 file you can see this in section~6. +% +% \emph{(Another way could be to put the current page number in a mark +% and then check in the header if this is the same as the page number +% where the header is put on the page. If different, don't +% inherit. This is left as an exercice for the reader.)} +% +% \Example{35}[(continued)] +% \begin{example} +% \newcommand{\which}{} +% \AddToHook{cmd/section/before}{% +% \ifthenelse{\lengthtest{\pagetotal<4\baselineskip}\or +% \lengthtest{\pagetotal>0.9\pagegoal}}{% +% {\renewcommand\which{-1}}% +% {\renewcommand\which{0}}% +% } +% \renewcommand{\sectionmark}[1]{% +% \InsertMark{section}{\thesection\ #1}% +% \InsertMark{which}{\which}% +% }% +% \end{example} +% +% The final code for the right header will now be: +% \Example{35}[(continued)] +% \begin{example} +% \fancyhead[R]{% +% \IfMarksEqualTF{subsection}{top}{first} +% {% no subsection mark on this page +% \ifthenelse{\TopMark{which}=1}{% +% % use previous subsection unless suppressed by which = -1 +% \ifthenelse{\FirstMark{which}<0} % -1 +% {\FirstMark{subsection}}% = \TopMark{subsection} +% } +% } +% {% if there is a subsectionmark on the page, use it +% \FirstMark{subsection}% +% }% +% } +% \end{example} +% In the actual code in the Example 35 file there is also some debugging +% code added. +% +% \section{How to change shapes and traits of horizontal lines in headers/footers?} +% \label{sec:headrules} +% +% Sometimes one wants a decorative line in the header or footer that is +% a bit more sophisticated than a straight line\footnote{See \url{https://tex.stackexchange.com/q/717266/113546}}. +% +% If you just want to change the thickness, redefine \cs{headrulewidth}. For example: +% \begin{code} +% \renewcommand{\headrulewidth}{0.1pt} +% \end{code} +% For more complicated forms you have to redefine \cs{headrule}. One +% example has already been given in section~\ref{sec:fancy}, and we will +% repeat it here: +% \PKGindex{fourier-orns} +% \begin{code} +% \usepackage{fourier-orns} +% ... +% \renewcommand\headrule{% +% \vspace{-6pt} +% \hrulefill +% \raisebox{-2.1pt} +% {\quad\decofourleft\decotwo\decofourright\quad}% +% \hrulefill} +% \end{code} +% This gives us the following headrule: +% +% \noindent\makebox[\textwidth]{\hrulefill +% \raisebox{-2.1pt}[10pt][10pt]{\quad\decofourleft\decotwo\decofourright\quad}\hrulefill} +% +% Here a simple \cs{headrule}, but with color, and a bit thicker. +% \PKGindex{xcolor} +% \begin{code} +% \usepackage{xcolor} +% . . . +% \renewcommand\headrule{% +% \nointerlineskip +% \smash{\color{blue}\rule{\headwidth}{2.5pt}}% +% } +% \end{code} +% The \cs{interlineskip} is to prevent \LaTeX{} to insert the normal +% vertical space between lines, and the \cs{smash} to let the +% \cs{headrule} not occupy any vertical space. Whether you want that is +% up to you, but if it occupies vertical space it may distort the page layout.\\ +% This gives us the following headrule: +% +% \noindent\makebox[\textwidth]{\smash{\color{blue}\rule{\textwidth}{2.5pt}}}\\ +% +% Now some dotted and dashed headrules: +% +% With spaced dashes: +% \begin{code} +% \newbox\dashbox\setbox\dashbox\hbox{-\,} +% \renewcommand{\headrule}{% +% \smash{\makebox[\headwidth][c]{\xleaders\copy\dashbox\hfill-}}% +% } +% \end{code} +% This gives: +% +% \newbox\dashbox\setbox\dashbox\hbox{-\,} +% \noindent\makebox[\textwidth][c]{\xleaders\copy\dashbox\hfill-}\\ +% +% With longer dashes: +% \begin{code} +% \newbox\dashbox\setbox\dashbox\hbox{---\,} +% \renewcommand{\headrule}{% +% \smash{\makebox[\headwidth][c]{\xleaders\copy\dashbox\hfill---}}% +% } +% \end{code} +% This gives: +% +% \newbox\dashbox\setbox\dashbox\hbox{---\,} +% \noindent\makebox[\textwidth][c]{\xleaders\copy\dashbox\hfill---}\\ % +% With spaced dots: +% \begin{code} +% \newbox\dashbox\setbox\dashbox\hbox{.\,} +% \renewcommand{\headrule}{% +% \smash{\makebox[\headwidth][c]{\xleaders\copy\dashbox\hfill.}}% +% } +% \end{code} +% This gives: +% +% \setbox\dashbox\hbox{.\,} +% \noindent\makebox[\textwidth][c]{\xleaders\copy\dashbox\hfill.}\\ +% +% With unspaced dots: +% \begin{code} +% \newbox\dashbox\setbox\dashbox\hbox{.} +% \renewcommand{\headrule}{% +% \smash{\makebox[\headwidth][c]{\xleaders\copy\dashbox\hfill.}}% +% } +% \end{code} +% This gives: +% +% \setbox\dashbox\hbox{.} +% \noindent\makebox[\textwidth][c]{\xleaders\copy\dashbox\hfill.}\\ +% +% Here is an example with a color gradient, using \PKGindex{tikz}\pkg{tikz}: +% \CmdIndex{tikz} +% \begin{code} +% \usepackage{tikz} +% \renewcommand{\headrule}{% +% \tikz \fill [left color=green,right color=yellow] +% (0,0) rectangle (\headwidth,2.5pt); +% } +% \end{code} +% This gives: +% +% \noindent\makebox[\textwidth][c]{% +% \tikz \fill [left color=green,right color=yellow] (0,0) rectangle (\textwidth,2.5pt);}\\ +% +% Here is a particularly interesting one. It draws a Koch Snowflake at +% the end of the headrule\footnote{From Logan Weinert, +% \url{https://tex.stackexchange.com/q/529474/113546}}. +% \PKGindex{tikz} +% \CmdIndex{tikz} +% \begin{code} +% \usepackage{tikz} +% \usetikzlibrary{decorations.fractals} +% . . . +% \renewcommand\headrule{% +% \vspace{-0.75in} +% \hrulefill +% {\tikz[decoration=Koch snowflake]{% +% \draw decorate{ decorate{ decorate{ (0,-2) -- (3,-2) }}};}} +% } +% \end{code} +% This gives: +% +% \noindent\makebox[\textwidth][c]{^^A +% \hrulefill +% {\tikz[decoration=Koch snowflake]{\draw decorate{ decorate{ decorate{ (0,-2) -- (3,-2) }}};}} +% }\\ +% Of course you would have to make sure not to place anything in the +% right part of the header. % % \newpage % \part{Implementation} % -% \section{fancyhdr.sty} +% \begin{implementation} +% \section{\pkg{fancyhdr.st}y} % %<*fancyhdr> % \changes{fancyhdr v1.4}{1994/09/16}{Correction for use with \cs{reversemarginpar}} @@ -3418,13 +5810,13 @@ % \cs{ifbotfloat} and \cs{iffloatpage} commands} % % \changes{fancyhdr v1.6}{1994/10/04}{Reset single spacing in headers/footers for use with -% \Package{setspace.sty} or \Package{doublespace.sty}} +% \pkg{setspace.sty} or \pkg{doublespace.sty}} % % \changes{fancyhdr v1.7}{1994/10/04}{Changed \cs{let}\cs{@mkboth}\cs{markboth} to % \texttt{\cs{def}\cs{@mkboth}\{\cs{protect}\cs{markboth}\}} to make it more robust.} % % \changes{fancyhdr v1.8}{1994/12/05}{corrections for -% \Package{amsbook}/\Package{amsart}: define \cs{@chapapp} and (more +% \pkg{amsbook}/\pkg{amsart}: define \cs{@chapapp} and (more % importantly) use the \cs{chapter/sectionmark} definitions from \texttt{ps@headings} if % they exist (which should be true for all standard classes).} % @@ -3448,7 +5840,7 @@ % % \changes{fancyhdr v1.95}{1996/01/31}{call \cs{@normalsize} in the reset code if that is defined, % otherwise \cs{normalsize}. This is to solve a problem with -% \Package{ucthesis.cls}, as this doesn't define \cs{@currsize}. +% \pkg{ucthesis.cls}, as this doesn't define \cs{@currsize}. % Unfortunately for latex209 calling \cs{normalsize} doesn't % work as this is optimized to do very little, so there \cs{@normalsize} should % be called. Hopefully this code works for all versions of LaTeX known to @@ -3561,22 +5953,22 @@ % \changes{fancyhdr v3.8}{2016/09/06}{Reset \bsbs, \cs{raggedleft}, % \cs{raggedright} and \cs{centering} to their default values to avoid a % clash with the tabu package.\\ -% Move the redefinition of \cs{@makecol} to \texttt{\cs{begin}\{document\}} to -% avoid a clash with the \Package{footmisc} package (and maybe others).\\ +% Move the redefinition of \cs{@makecol} to \Cmd{begin\{document\}} to +% avoid a clash with the \pkg{footmisc} package (and maybe others).\\ % Define a working \cs{iffootnote} command.} % % \changes{fancyhdr v3.9}{2016/10/11}{Put everything in a \texttt{.dtx} file.} % \changes{fancyhdr v3.9}{2016/10/12}{Rename some macros to have 'f@nch@' % in their names, to get a more uniform naming scheme for internal macros.} % -% \begin{macro}{\if@nch@mpty} +% \begin{macro}[internal]{\if@nch@mpty} % This macro tests if its argument is empty. % \begin{macrocode} \newcommand\if@nch@mpty[1]{\def\temp@a{#1}\ifx\temp@a\@empty} % \end{macrocode} % \end{macro} % -% \begin{macro}{\iff@nch@check} +% \begin{macro}[internal]{\iff@nch@check} % Boolean for the \texttt{nocheck} option. % \changes{fancyhdr v4.0}{2019/03/15}{Implement the \texttt{nocheck} option} % \OPTindex{nocheck} @@ -3589,27 +5981,36 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\iff@nch@compatViii} -% Define \cs{iff@nch@compatViii} to track the \texttt{compatV3} option. -% \begin{macrocode} -\newif\iff@nch@compatViii -% \end{macrocode} -% \begin{macro}{\f@nch@gbl} +% \begin{macro}[internal]{\f@nch@gbl} % Initialise \cs{f@nch@gbl} to do nothing (except with the \texttt{compatV3} % option). % \changes{fancyhdr v4.0}{2019/03/19}{Remove the \cs{global} in definitions} -% \changes{fancyhdr v4.0}{2019/03/16}{Implement the \texttt{compatV3} option} +% \changes{fancyhdr v4.0.2}{2021/02/24}{Untangle the code +% for\cs{f@nch@gbl} and the \texttt{compatV3} option} % \begin{macrocode} \let\f@nch@gbl\relax +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[internal]{\iff@nch@compatViii} +% Define \cs{iff@nch@compatViii} to track the \texttt{compatV3} option. +% \changes{fancyhdr v4.0}{2019/03/16}{Implement the \texttt{compatV3} option} +% \changes{fancyhdr v5.0}{2024/05/08}{Add warning that the +% \texttt{compatV3} option is deprecated} +% \begin{macrocode} +\newif\iff@nch@compatViii \DeclareOption{compatV3}{% + \PackageWarningNoLine{fancyhdr}{The `compatV3' option is deprecated.\MessageBreak + It will disappear in one of the following releases.\MessageBreak + Please change your document to work\MessageBreak + without this option} \let\f@nch@gbl\global \f@nch@compatViiitrue } % \end{macrocode} % \end{macro} -% \end{macro} % -% \begin{macro}{\iff@nch@twoside} +% \begin{macro}[internal]{\iff@nch@twoside} % Boolean for the \texttt{twoside} option. % \changes{fancyhdr v4.1}{2022/09/06}{Implement \texttt{twoside} option.} % \OPTindex{twoside} @@ -3623,7 +6024,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\f@nch@def} +% \begin{macro}[internal]{\f@nch@def} % This macro defines another macro (usually a header or footer field). % Depending on the value of \cs{f@nch@gbl} the definition will be % global or local. @@ -3640,7 +6041,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\f@nch@ifundefined} +% \begin{macro}[internal]{\f@nch@ifundefined} % This macro tests if a command is undefined. Older versions of % fancyhdr used \cs{@ifundefined}, but this had an undesired side effect % in the original \LaTeX{} (the command was made equal to \cs{relax} if @@ -3651,7 +6052,7 @@ % \cs{@ifundefined} that avoids these problems, but not everybody may % have such a version installed. Therefore we define our own version % \cs{f@nch@ifundefined}. -% This definition is copied from the \Package{tocloft} package by Peter +% This definition is copied from the \PKGindex{tocloft}\pkg{tocloft} package by Peter % Wilson and Will Robertson. % \begin{macrocode} \newcommand{\f@nch@ifundefined}[1]{% @@ -3667,9 +6068,10 @@ % \changes{fancyhdr v4.0}{2019/03/17}{Added \texttt{headings} and % \texttt{myheadings} options.} % Standard styles are redefined optionally. These definitions are -% borrowed from the \Package{nccfancyhdr} package by by Alexander I. Rozhenko. +% borrowed from the \PKGindex{nccfancyhdr}\pkg{nccfancyhdr} package +% by by Alexander I. Rozhenko. % -% \begin{macro}{\ps@myheadings} +% \begin{macro}[internal]{\ps@myheadings} % The redefinition of the \texttt{myheadings} style is conditional. % We test the existence of the \cs{chapter} command and redefine the % style accordingly. @@ -3706,7 +6108,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\ps@headings} +% \begin{macro}[internal]{\ps@headings} % The redefinition of the \texttt{headings} style also differs for % book-like and article-like classes. It also differs for % one-side and two-side modes. @@ -3793,23 +6195,23 @@ \ProcessOptions* % \end{macrocode} % -% \changes{fancyhdr v4.3}{2024/05/08}{Removed \cs{f@nch@errmsg} and +% \changes{fancyhdr v5.0}{2024/05/08}{Removed \cs{f@nch@errmsg} and % \cs{f@nch@warning} and used \cs{PackageError} and \cs{PackageWarning} directly.} -% \begin{macro}{\f@nch@forc} +% \begin{macro}[internal]{\f@nch@forc} % Usage: \cs{f@nch@forc} \cs{var} \texttt{\{charstring\}\{body\}}.\\ % Execute the body for each character in \texttt{charstring} bound % to \cs{var}. % This is similar to \LaTeX's \cs{@tfor}, but it expands the \texttt{charstring}. % \begin{macrocode} % \changes{fancyhdr v3.10}{2019/01/25}{Use \cs{newcommand} instead of \cs{def}.} -% \changes{fancyhdr v4.0.2}{2022/05/10}{Make \cs{f@nch@rc} \cs{long}.} +% \changes{fancyhdr v4.0.2}{2021/05/29}{Make \cs{f@nch@rc} \cs{long}.} \newcommand{\f@nch@forc}[3]{\expandafter\f@nchf@rc\expandafter#1\expandafter{#2}{#3}} \newcommand{\f@nchf@rc}[3]{\def\temp@ty{#2}\ifx\@empty\temp@ty\else \f@nch@rc#1#2\f@nch@rc{#3}\fi} \long\def\f@nch@rc#1#2#3\f@nch@rc#4{\def#1{#2}#4\f@nchf@rc#1{#3}{#4}} % \end{macrocode} % \end{macro} -% \begin{macro}{\f@nch@for} +% \begin{macro}[internal]{\f@nch@for} % Usage: \cs{f@nch@for}\cs{var}\texttt{\{list\}}\texttt{\{body\}} \\ % Execute the body for each element of the list, bound to \cs{var}. % List elements are separated by commas. This is like \LaTeX's \cs{@for} but an empty @@ -3820,7 +6222,7 @@ \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}} % \end{macrocode} % \end{macro} -% \begin{macro}{\f@nch@default} +% \begin{macro}[internal]{\f@nch@default} % Usage: \cs{f@nch@default} \cs{var}\texttt{\{defaults\}\{argument\}} \\ % Sets \cs{var} to the characters % from \texttt{defaults} appearing in \texttt{argument}, or to \texttt{defaults} if it would be @@ -3835,7 +6237,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\f@nch@ifin} +% \begin{macro}[internal]{\f@nch@ifin} % Usage: \cs{f@nch@ifin} \meta{char} \meta{set} \meta{truecase} \meta{falsecase} \\ % If \meta{char} is in \meta{set}, then \meta{truecase} else \meta{falsecase}. % \begin{macrocode} @@ -3885,7 +6287,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\f@nch@fancyhf@Echeck} +% \begin{macro}[internal]{\f@nch@fancyhf@Echeck} % \changes{fancyhdr v4.1}{2022/09/06}{Implement \texttt{twoside} option.} % Macro for warning if `E' is used without `twoside' option. % \begin{macrocode} @@ -3897,7 +6299,10 @@ Please consider using the `twoside' option}% \fi\fi\fi } -% \begin{macro}{\f@nch@fancyhf} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[internal]{\f@nch@fancyhf} % \changes{fancyhdr v4.0.2}{2022/05/10}{Make \cs{f@nch@fancyhf} \cs{long}.} % \changes{fancyhdr v4.1}{2022/09/06}{Implement \texttt{twoside} option.} % This macro interprets the parameters for the headers and footers.\\ @@ -3933,7 +6338,9 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\f@nch@fancyhfoffs} +% \begin{macro}[internal]{\f@nch@fancyhfoffs} +% \changes{fancyhdr v4.0.2}{2021/03/27}{Change the offset length variables +% \cs{f@nch@O@xyz} to \cs{f@nch@offset@xyz}} % \changes{fancyhdr v4.1}{2022/09/06}{Implement \texttt{twoside} option.} % This macro interprets the parameters for the header and footer % offsets.\\ @@ -3945,7 +6352,7 @@ % (3) The optional parameter that was given to these commands (default \texttt{[]}).\\ % (4) The required parameter that was given to these commands.\\ % The header and footer offsets are stored in command sequences with -% names of the form: \cs{f@nch@O@}\meta{x}\meta{y}\meta{z} with \meta{x} from +% names of the form: \cs{f@nch@offset@}\meta{x}\meta{y}\meta{z} with \meta{x} from % \texttt{[eo]}, \meta{y} from \texttt{[lr]} and \meta{z} from \texttt{[hf]}. % % \begin{macrocode} @@ -3965,11 +6372,106 @@ {\f@nch@forc\f@nch@lcr\f@nch@@lcr {\f@nch@forc\f@nch@hf\f@nch@@hf {\expandafter\setlength\csname - f@nch@O@\f@nch@eo\f@nch@lcr\f@nch@hf\endcsname {#4}}}}}% + f@nch@offset@\f@nch@eo\f@nch@lcr\f@nch@hf\endcsname {#4}}}}}% \f@nch@setoffs} % \end{macrocode} % \end{macro} % +% \begin{macro}{\fancyheadwidth, \fancyfootwidth, \fancyhfwidth} +% The commands for field widths. +% \changes{fancyhdr v5.0}{2025/01/01}{New commands \cs{fancyheadwidth}, +% \cs{fancyfootwidth} and \cs{fancyhfwidth}.} +% Pick up the parameters, +% and supply an 'h' (\cs{fancyheadwidth}) or 'f' (\cs{fancyfootwidth}). +% \begin{macrocode} +\newcommand{\fancyheadwidth}[2][]{\f@nch@fancyhfwidth\fancyheadwidth h[#1]{#2}}% +\newcommand{\fancyfootwidth}[2][]{\f@nch@fancyhfwidth\fancyfootwidth f[#1]{#2}}% +\newcommand{\fancyhfwidth}[2][]{\f@nch@fancyhfwidth\fancyhfwidth {}[#1]{#2}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[internal]{\f@nch@fancyhfwidth} +% This macro interprets the parameters for the header and footer field +% widths.\\ +% Parameters:\\ +% (1) The user command that was used (like \cs{fancyheadwidth}). This is used +% for errors/warnings.\\ +% (2) \texttt{h} (for \cs{fancyheadwidth}), \texttt{f} (for \cs{fancyfootwidth}), +% or \texttt{\{\}} (for \cs{fancyhfwidth}).\\ +% (3) The optional parameter that was given to these commands (default \texttt{[]}).\\ +% (4) The required parameter that was given to these commands.\\ +% The header and footer field widths are stored in command sequences with +% names of the form: \cs{f@nch@width@}\meta{x}\meta{y}\meta{z} with \meta{x} from +% \texttt{[eo]}, \meta{y} from \texttt{[lcr]} and \meta{z} from \texttt{[hf]}. +% +% First we assign the \meta{width} argument to a temporary length +% variable, to check if it is a legal \meta{length}. Then we store the +% \meta{width} in variables for all the specified places. +% +% \begin{macrocode} +\def\f@nch@fancyhfwidth#1#2[#3]#4{% + \setlength\@tempdima{#4}% + \def\temp@c{}% + \f@nch@forc\tmpf@ra{#3}% + {\expandafter\f@nch@ifin\tmpf@ra{eolcrhf,EOLCRHF}% + {}{\edef\temp@c{\temp@c\tmpf@ra}}}% + \ifx\@empty\temp@c\else \PackageError{fancyhdr}{Illegal char `\temp@c' in + \string#1 argument: [#3]}{}% + \fi \f@nch@for\temp@c{#3}% + {\f@nch@default\f@nch@@eo{eo}\temp@c + \f@nch@fancyhf@Echeck{#1}% + \f@nch@default\f@nch@@lcr{lcr}\temp@c + \f@nch@default\f@nch@@hf{hf}{#2\temp@c}% + \f@nch@forc\f@nch@eo\f@nch@@eo + {\f@nch@forc\f@nch@lcr\f@nch@@lcr + {\f@nch@forc\f@nch@hf\f@nch@@hf + {\expandafter\def\csname + f@nch@width@\f@nch@eo\f@nch@lcr\f@nch@hf\endcsname {#4}}}}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[internal]{\f@nch@width@elh} +% \begin{macro}[internal]{\f@nch@width@ech} +% \begin{macro}[internal]{\f@nch@width@erh} +% \begin{macro}[internal]{\f@nch@width@olh} +% \begin{macro}[internal]{\f@nch@width@och} +% \begin{macro}[internal]{\f@nch@width@orh} +% \begin{macro}[internal]{\f@nch@width@elf} +% \begin{macro}[internal]{\f@nch@width@ecf} +% \begin{macro}[internal]{\f@nch@width@erf} +% \begin{macro}[internal]{\f@nch@width@olf} +% \begin{macro}[internal]{\f@nch@width@ocf} +% \begin{macro}[internal]{\f@nch@width@orf} +% Length parameters for the widths. These are stored as macros. They are +% calculated as lengths when the header/footer is built. +% +% \begin{macrocode} +\def\f@nch@width@elh{\headwidth} +\def\f@nch@width@ech{\headwidth} +\def\f@nch@width@erh{\headwidth} +\def\f@nch@width@olh{\headwidth} +\def\f@nch@width@och{\headwidth} +\def\f@nch@width@orh{\headwidth} +\def\f@nch@width@elf{\headwidth} +\def\f@nch@width@ecf{\headwidth} +\def\f@nch@width@erf{\headwidth} +\def\f@nch@width@olf{\headwidth} +\def\f@nch@width@ocf{\headwidth} +\def\f@nch@width@orf{\headwidth} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% % \begin{macro}{\lhead} % \changes{fancyhdr v3.9}{2016/10/12}{Let \cs{newcommand} do the % handling of the optional parameter.} @@ -4026,7 +6528,9 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\f@nch@headwidth} +% \begin{macro}[internal]{\f@nch@headwidth} +% \changes{fancyhdr v4.0.2}{2021/03/27}{Change the offset length variables +% \cs{f@nch@O@xyz} to \cs{f@nch@offset@xyz}} % Length parameter to be used for \cs{headwidth}. We use this rather % than defining \cs{headwidth} as a length paramater directly to protect % ourself to someone saying: \verb+\let\headwidth\textwidth+. @@ -4034,24 +6538,24 @@ \newlength{\f@nch@headwidth} \let\headwidth\f@nch@headwidth % \end{macrocode} % \end{macro} -% \begin{macro}{\f@nch@O@elh} -% \begin{macro}{\f@nch@O@erh} -% \begin{macro}{\f@nch@O@olh} -% \begin{macro}{\f@nch@O@orh} -% \begin{macro}{\f@nch@O@elf} -% \begin{macro}{\f@nch@O@erf} -% \begin{macro}{\f@nch@O@olf} -% \begin{macro}{\f@nch@O@orf} +% \begin{macro}[internal]{\f@nch@offset@elh} +% \begin{macro}[internal]{\f@nch@offset@erh} +% \begin{macro}[internal]{\f@nch@offset@olh} +% \begin{macro}[internal]{\f@nch@offset@orh} +% \begin{macro}[internal]{\f@nch@offset@elf} +% \begin{macro}[internal]{\f@nch@offset@erf} +% \begin{macro}[internal]{\f@nch@offset@olf} +% \begin{macro}[internal]{\f@nch@offset@orf} % Length parameters for the offsets. % \begin{macrocode} -\newlength{\f@nch@O@elh} -\newlength{\f@nch@O@erh} -\newlength{\f@nch@O@olh} -\newlength{\f@nch@O@orh} -\newlength{\f@nch@O@elf} -\newlength{\f@nch@O@erf} -\newlength{\f@nch@O@olf} -\newlength{\f@nch@O@orf} +\newlength{\f@nch@offset@elh} +\newlength{\f@nch@offset@erh} +\newlength{\f@nch@offset@olh} +\newlength{\f@nch@offset@orh} +\newlength{\f@nch@offset@elf} +\newlength{\f@nch@offset@erf} +\newlength{\f@nch@offset@olf} +\newlength{\f@nch@offset@orf} % \end{macrocode} % \end{macro} % \end{macro} @@ -4071,7 +6575,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\headruleskip} +% \begin{macro}{\headruleskip} % Don't define \cs{headruleskip} if it is already defined. % \changes{fancyhdr v4.0}{2019/03/22}{Parameter \cs{headruleskip}.} % \begin{macrocode} @@ -4080,7 +6584,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\footruleskip} +% \begin{macro}{\footruleskip} % Memoir also defines \cs{footruleskip}. % Don't define \cs{footruleskip} if it is already defined. % \begin{macrocode} @@ -4089,8 +6593,8 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\plainheadrulewidth} -% \begin{macro}{\plainfootrulewidth} +% \begin{macro}{\plainheadrulewidth} +% \begin{macro}{\plainfootrulewidth} % Fancyplain stuff shouldn't be used anymore (rather % \texttt{\cs{fancypagestyle}\{plain\}} should be used), but we keep it for % compatibility reasons. @@ -4102,7 +6606,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\if@fancyplain} +% \begin{macro}[internal]{\if@fancyplain} % Boolean for the implementation of \cs{fancyplain} % \begin{macrocode} \newif\if@fancyplain \@fancyplainfalse @@ -4123,24 +6627,24 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\f@nch@raggedleft} -% \begin{macro}{\f@nch@raggedright} -% \begin{macro}{\f@nch@centering} -% \begin{macro}{\f@nch@everypar} +% \begin{macro}[internal]{\f@nch@raggedleft} +% \begin{macro}[internal]{\f@nch@raggedright} +% \begin{macro}[internal]{\f@nch@centering} +% \begin{macro}[internal]{\f@nch@everypar} % \changes{fancyhdr v4.3}{2024/07/17}{Changed \cs{f@nch@everypar}. If the % LaTeX kernel has expl3, use \cs{tex\_everypar:D}, and reset \cs{par}, % \cs{@@par} and \cs{endgraf} to their original \TeX{} definitions, so that -% no paragraph hooks will intrude in \Package{fancyhdr} code.} +% no paragraph hooks will intrude in \pkg{fancyhdr} code.} % \changes{fancyhdr v4.3.1}{2024/07/23}{Also reset \cs{everypar} to its % original \TeX{} value \cs{tex\_everypar:D} in \cs{f@nch@resetpar}, % otherwise environments based on \cs{trivlist} -% will not work properly in \Package{fancyhdr} headers and footers.} +% will not work properly in \pkg{fancyhdr} headers and footers.} % Save the standard definitions of \cs{raggedleft}, \cs{raggedright}, % \cs{centering} and \cs{everypar} so that we can reset them when we are % typesetting the headers and footers. Some packages change these to % incompatible values.\\ % We also disable paragraph hooks, so that no paragraph hooks will -% intrude in \Package{fancyhdr} code. \textbf{NOTE: This is a hack, and +% intrude in \pkg{fancyhdr} code. \textbf{NOTE: This is a hack, and % should be replaced by cleaner code as soon as the \LaTeX{} kernel % provides the necessary commands.} % \changes{fancyhdr v4.5}{2024/11/29}{We use a less fragile way to @@ -4190,7 +6694,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\f@nch@noUppercase} +% \begin{macro}[internal]{\f@nch@noUppercase} % We want \cs{nouppercase} to work with the various evolutionary stages of % \cs{MakeUppercase}. The current version (2022/11/09) accepts an optional % argument with a language specification. Therefore we define a dummy macro @@ -4200,7 +6704,7 @@ \newcommand\f@nch@noUppercase[2][]{#2} % \end{macrocode} % -% \begin{macro}{\f@nch@reset} +% \begin{macro}[internal]{\f@nch@reset} % Command to reset various things in the headers: a.o. single spacing % (taken from setspace.sty) and the catcode of ^^M and % \cs{endlinechar} (so that epsf files @@ -4247,23 +6751,23 @@ % % \begin{macro}{\fancycenter} % \changes{fancyhdr v4.0}{2019/03/15}{Macro \cs{fancycenter} added} -% \cs{fancycenter}\oarg{dist}\oarg{stretch}\marg{left-mark}\marg{center-mark}\marg{right-mark} +% \cs{fancycenter}\oarg{dist}\oarg{stretch}\marg{left-field}\marg{center-field}\marg{right-field} % \begin{macrocode} \newcommand*{\fancycenter}[1][1em]{% \@ifnextchar[{\f@nch@center{#1}}{\f@nch@center{#1}[3]}% } \def\f@nch@center#1[#2]#3#4#5{% % \end{macrocode} -% At first, we execute the case when the \meta{center-mark} is empty\footnote{% -% This code is reused from the \Package{nccfancyhdr} by Alexander I. Rozhenko}: +% At first, we execute the case when the \meta{center-field} is empty\footnote{% +% This code is reused from the \PKGindex{nccfancyhdr}\pkg{nccfancyhdr} package by Alexander I. Rozhenko}: % \begin{macrocode} \def\@tempa{#4}\ifx\@tempa\@empty \hbox to\linewidth{\color@begingroup{#3}\hfil {#5}\color@endgroup}% \else % \end{macrocode} % All we need to do is to calculate skips inserted before and after -% \meta{center-mark}. We will calculate them in the |\@tempskipa| -% and |\@tempskipb|. At first: +% \meta{center-field}. We will calculate them in the \verb|\@tempskipa| +% and \verb|\@tempskipb| registers. At first: % \begin{quote} % \verb|\@tempdima:=|\meta{dist};\\ % \verb|\@tempdimb:=|\meta{dist}\verb|*|\meta{stretch};\\ @@ -4281,22 +6785,22 @@ % have the natural size \meta{dist}\verb|*|\meta{stretch}, % unlimited stretchability, and the minimum size \meta{dist}. % Now we decrease the minimum size of \cs{@tempskipa} to zero if -% the \meta{left-mark} is empty: +% the \meta{left-field} is empty: % \begin{macrocode} \def\@tempa{#3}\ifx\@tempa\@empty \addtolength\@tempskipa{\z@ \@minus \@tempdima}% \fi % \end{macrocode} % Do the same things with the \cs{@tempskipb} register if the -% \meta{right-mark} is empty: +% \meta{right-field} is empty: % \begin{macrocode} \def\@tempa{#5}\ifx\@tempa\@empty % empty right \addtolength\@tempskipb{\z@ \@minus \@tempdima}% \fi % \end{macrocode} % Finally, we correct the left and right glues taking into -% account the difference between lengths of \meta{left-mark} -% and \meta{right-mark}. We calculate which mark is shorter +% account the difference between lengths of \meta{left-field} +% and \meta{right-field}. We calculate which mark is shorter % and increase the natural size of the corresponding register % by the difference between their lengths. % \begin{macrocode} @@ -4325,7 +6829,7 @@ % before the construction of the header. It can for example set the % color or the font, or change \cs{headrulewidth} or \cs{headruleskip}. % It cannot make global changes, just changes for the header. -% \begin{macro}{\f@nch@headinit} +% \begin{macro}[internal]{\f@nch@headinit} % Storage for the header initialisation code. % \begin{macrocode} \newcommand{\f@nch@headinit}{} @@ -4341,7 +6845,7 @@ % before the construction of the footer. It can for example set the % color or the font, or change \cs{footrulewidth} or \cs{footruleskip}. % It cannot make global changes, just changes for the footer. -% \begin{macro}{\f@nch@footinit} +% \begin{macro}[internal]{\f@nch@footinit} % Storage for the footer initialisation code. % \begin{macrocode} \newcommand{\f@nch@footinit}{} @@ -4366,7 +6870,7 @@ % \begin{hookdecl}{fancyhdr/before, fancyhdr/after, fancyhdr/head/begin, % fancyhdr/head/end, fancyhdr/foot/begin, fancyhdr/foot/end} % \changes{fancyhdr v4.5}{2024/12/05}{Hooks added} -% Here we define the \Package{fancyhdr} hooks. It will be conditional on +% Here we define the \pkg{fancyhdr} hooks. It will be conditional on % the presence of hook support in the \LaTeX{} kernel. % \begin{macrocode} \ifdefined\NewMirroredHookPair @@ -4377,7 +6881,69 @@ % \end{macrocode} % \end{hookdecl} % -% \begin{macro}{\f@nch@vbox} +% \begin{macro}[internal]{\f@nch@height} +% \changes{fancyhdr v5.0}{2021/02/20}{Length variable \cs{f@nch@height} added} +% Length variable to store heigth of header/footer for use in \cs{fancyhdrsettoheight} +% \begin{macrocode} +\newlength\f@nch@height +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[internal]{\f@nch@footalignment} +% Length variable to store alignment length of \cs{fancyfootalign} +% \begin{macrocode} +\newlength\f@nch@footalignment +% \end{macrocode} +% \end{macro} +% \begin{macro}[internal]{\iff@nch@footalign} +% Boolean variable to store if a \meta{length} parameter was given to \cs{fancyfootalign} +% \begin{macrocode} +\newif\iff@nch@footalign\f@nch@footalignfalse +% \end{macrocode} +% \end{macro} +% \begin{macro}{\fancyfootalign} +% \changes{fancyhdr v5.0}{2024/05/13}{Macro \cs{fancyfootalign}, +% \cs{iff@nch@footalign} and length variable \cs{f@nch@footalignment} added} +% This macro sets the distance between the bottom of the footer and the +% bottom margin. The argument can be empty, or a \meta{length}. +% \begin{macrocode} +\newcommand{\fancyfootalign}[1]{% + \def\temp@a{#1}% + \ifx\temp@a\@empty + \f@nch@footalignfalse + \else + \f@nch@footaligntrue + \setlength\f@nch@footalignment{#1}% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fancyhdrsettoheight} +% \changes{fancyhdr v5.0}{2021/02/20}{Macro \cs{fancyhdrsettoheight} added} +% Macro to store the height of a header/footer in a length variable.\\ +% \cs{fancyhdrsettoheight}\marg{lengthvar}\marg{header/footer}\\ +% The second parameter can be \texttt{oddhead}, \texttt{evenhead}, +% \texttt{oddfoot}, or \texttt{evenfoot}. +% \begin{macrocode} +\newcommand\fancyhdrsettoheight[2]{% + \expandafter\ifx\csname f@nch@#2\endcsname\fancyhdrsettoheight + \else\PackageError{fancyhdr}{Unknown parameter #2 in \string\fancyhdrsettoheight}{}\fi + \setbox\@tempboxa\hbox{{\f@nch@checkfalse\csname @#2\endcsname}}% + \setlength{#1}\f@nch@height + \setbox\@tempboxa\box\voidb@x +} +% \end{macrocode} +% Define commands that specify the valid arguments for the second parameter. +% \begin{macrocode} +\let\f@nch@oddhead\fancyhdrsettoheight +\let\f@nch@evenhead\fancyhdrsettoheight +\let\f@nch@oddfoot\fancyhdrsettoheight +\let\f@nch@evenfoot\fancyhdrsettoheight +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[internal]{\f@nch@vbox} % Make a \cs{vbox} with the header or footer. Check whether there is % enough space and give a warning if not. % Use box 0 as a temp box and dimen 0 as temp dimen. This can be done, @@ -4391,9 +6957,16 @@ % \changes{fancyhdr v4.0}{2019/03/15}{Don't adjust the % \cs{headheight}/\cs{footskip}, except when the \texttt{compatV3} option is given.} % \changes{fancyhdr v4.0}{2019/03/15}{Don't check when the \texttt{nocheck} option is given.} +% \changes{fancyhdr v4.0.2}{2021/02/11}{Shorten one sentence in the warning message.} +% \changes{fancyhdr v4.0.2}{2021/02/11}{If the option \texttt{[nocheck]} +% is given, just keep quiet and don't change the +% \cs{headheight}/\cs{footskip} even if the \texttt{[compatV3]} option +% is given.} +% \changes{fancyhdr v5.0}{2021/02/20}{Set \cs{f@nch@height} to height of box} % \begin{macrocode} \newcommand\f@nch@vbox[2]{% \setbox0\vbox{#2}% + \global\f@nch@height=\ht0 \ifdim\ht0>#1\relax % \end{macrocode} % This is the part where the the header/footer is too tall for the vertical space. @@ -4407,7 +6980,7 @@ Make it at least \the\ht0, for example:\MessageBreak \string\setlength{\string#1}{\the\ht0}% % \end{macrocode} -% If the \texttt{[compatV3} option was given (and not +% If the \texttt{[compatV3]} option was given (and not % \texttt{[nocheck]}), we will also change the % \cs{headheight}/\cs{footskip} globally below, and announce this in the warning message. % \begin{macrocode} @@ -4416,25 +6989,37 @@ This may cause the page layout to be inconsistent, however \fi \ifx#1\headheight .\MessageBreak - You might also make \topmargin smaller to compensate:\MessageBreak + You might also make \topmargin smaller:\MessageBreak \string\addtolength{\string\topmargin}{\the\dimen0}% \fi \@gobble }% - \fi - \iff@nch@compatViii - \dimen0=#1\relax - \global#1=\ht0\relax - \ht0=\dimen0 % +% \end{macrocode} +% Here we do the actual global changing of the \cs{headheight}/\cs{footskip}. +% \begin{macrocode} + \iff@nch@compatViii + \dimen0=#1\relax + \global#1=\ht0\relax + \ht0=\dimen0 % + \else + \ht0=#1\relax + \fi +% \end{macrocode} +% However, if the \texttt{[nocheck]} options is given, we just make the +% height of the header/footer equal to the reserved space, so that no +% warning about ``Overfull vbox'' will be given. So we pretend that it +% fits, and it is the users's responsibility to make sure no unwanted +% effects take place. +% \begin{macrocode} \else - \ht0=#1% + \ht0=#1\relax \fi \fi \box0} % \end{macrocode} % \end{macro} % -% \begin{macro}{\f@nch@head} +% \begin{macro}[internal]{\f@nch@head} % \changes{fancyhdr v4.0}{2019/03/22}{Parameter \cs{headruleskip}.} % \changes{fancyhdr v4.0}{2019/03/25}{\cs{fancyheadinit} initialisation % code added and \cs{f@nch@reset} moved up.} @@ -4444,10 +7029,13 @@ % \cs{color} command. The \cs{ignorespaces} skips initial spaces in % the parameter, as is usual in a \cs{parbox}, for backwards compatibility.} % \changes{fancyhdr v4.5}{2024/12/05}{Hooks added} -% Put together a header or footer given the left, center and right -% text, fillers at left and right and a rule. The \cs{xlap} commands put +% \changes{fancyhdr v5.0}{2025/01/01}{Support for \cs{fancyheadwidth}, +% \cs{fancyfootwidth} and \cs{fancyhfwidth}.} +% Put together a header (\cs{f@nch@head}) or footer (\cs{f@nch@foot}) +% given the left, center and right text and their widths, +% fillers at left and right and a rule. The \cs{xlap} commands put % the text into an hbox of zero size, so overlapping text does not -% generate an errormessage.\\ These macros have 5 parameters:\\ +% generate an errormessage.\\ These macros have 8 parameters:\\ % 1. LEFTSIDE BEARING. This determines at which side the header will stick % out. When \cs{fancyhfoffset} is used this calculates \cs{headwidth}, % otherwise it is \cs{hss} or \cs{relax} (after expansion). \\ @@ -4459,33 +7047,29 @@ % This is the right component. \\ % 5. RIGHTSIDE BEARING. This is always \cs{relax} or \cs{hss} % (after expansion).\\ +% 6-8. The specified widths for the left, center and right fields. +% % Before constructing the header or footer, the environment is reset to % a known state, the appropriate hooks (\texttt{fancyhdr/before} and -% \TTindex{fancyhdr/before} -% \TTindex{fancyhdr/head/begin}\TTindex{fancyhdr/foot/begin} +% \TTindex{fancyhdr/before}% +% \TTindex{fancyhdr/head/begin}\TTindex{fancyhdr/foot/begin}% % \texttt{fancyhdr/head/begin} or \texttt{fancyhdr/foot/begin}) are -% executed, and then the corresponding initialisation code as given in +% run, and then the corresponding initialisation code as given in % \cs{fancyheadinit} or \cs{fancyfootinit}, respectively, is run.\\ % After constructing the header or footer, the hooks for the end % (\texttt{fancyhdr/head/end} or \texttt{fancyhdr/foot/end} and -% \TTindex{fancyhdr/head/end}\TTindex{fancyhdr/foot/end} -% \TTindex{fancyhdr/after} +% \TTindex{fancyhdr/head/end}\TTindex{fancyhdr/foot/end}% +% \TTindex{fancyhdr/after}% % \texttt{fancyhdr/after}) are run. % \begin{macrocode} -\newcommand\f@nch@head[5]{% +\newcommand\f@nch@head[8]{% \f@nch@reset \ifdefined\UseHook\UseHook{fancyhdr/before}\UseHook{fancyhdr/head/begin}\fi \f@nch@headinit\relax #1% \hbox to\headwidth{% \f@nch@vbox\headheight{% - \hbox{% - \rlap{\parbox[b]{\headwidth}{\raggedright\leavevmode\ignorespaces#2}}% - \hfill - \parbox[b]{\headwidth}{\centering\leavevmode\ignorespaces#3}% - \hfill - \llap{\parbox[b]{\headwidth}{\raggedleft\leavevmode\ignorespaces#4}}% - }% + \f@nch@hfbox{#2}{#3}{#4}{b}{#6}{#7}{#8}% \vskip\headruleskip\relax \headrule }% @@ -4495,7 +7079,7 @@ } % \end{macrocode} % -% \begin{macro}{\f@nch@foot} +% \begin{macro}[internal]{\f@nch@foot} % \changes{fancyhdr v3.10}{2019/01/26}{Put \cs{footrule} in a \cs{vbox} % to accommodate for flexible footrules.} % \changes{fancyhdr v3.10}{2019/01/28}{Use \cs{unvbox} on the footrule \cs{vbox} @@ -4510,13 +7094,15 @@ % \cs{color} command. The \cs{ignorespaces} skips initial spaces in % the parameter, as is usual in a \cs{parbox}, for backwards compatibility.} % \changes{fancyhdr v4.5}{2024/12/05}{Hooks added} +% \changes{fancyhdr v5.0}{2025/01/01}{Support for \cs{fancyheadwidth}, +% \cs{fancyfootwidth} and \cs{fancyhfwidth}.} % We put the \cs{footrule} in a \cs{vbox} to accommodate for flexible -% footrules (e.g.\ using \cs{hrulefill}), so that the \cs{headwidth} will +% footrules (e.g., using \cs{hrulefill}), so that the \cs{headwidth} will % be used as the line width. But to preserve the vertical spacing we % then \cs{unvbox} this box. % % \begin{macrocode} -\newcommand\f@nch@foot[5]{% +\newcommand\f@nch@foot[8]{% \f@nch@reset \ifdefined\UseHook\UseHook{fancyhdr/before}\UseHook{fancyhdr/foot/begin}\fi \f@nch@footinit\relax @@ -4525,13 +7111,13 @@ \f@nch@vbox\footskip{% \setbox0=\vbox{\footrule}\unvbox0 \vskip\footruleskip - \hbox{% - \rlap{\parbox[t]{\headwidth}{\raggedright\leavevmode\ignorespaces#2}}% - \hfill - \parbox[t]{\headwidth}{\centering\leavevmode\ignorespaces#3}% - \hfill - \llap{\parbox[t]{\headwidth}{\raggedleft\leavevmode\ignorespaces#4}}% - }% + \f@nch@hfbox{#2}{#3}{#4}{t}{#6}{#7}{#8}% +% \end{macrocode} +% \changes{fancyhdr v5.0}{2024/05/13}{\cs{vskip}\meta{length} +% added if \cs{fancyfootalign}\protect\marg{length} was given.} +% Add vertical space if \cs{fancyfootalign}\marg{length} has been given. +% \begin{macrocode} + \iff@nch@footalign \vskip\f@nch@footalignment \fi }% }% #5% @@ -4541,7 +7127,99 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\MakeUppercase} +% \begin{macro}[internal]{\f@nch@widthL, \f@nch@widthC, \f@nch@widthR} +% Length variables to store the field widths during construction of the +% header/footer. +% \begin{macrocode} +\newlength\f@nch@widthL +\newlength\f@nch@widthC +\newlength\f@nch@widthR +% \end{macrocode} +% +% \end{macro} +% \begin{macro}[internal]{\f@nch@hfbox} +% This macro constructs the box with the header or footer. It has 7 parameters:\\ +% 1. Left field\\ +% 2. Center field\\ +% 3. Right field\\ +% 4. Vertical alignment: \texttt{b} for the header or \texttt{t} for the footer\\ +% 5-7. Widths for the left, center and right fields. +% +% Algorithm:\\ +% First we store the field widths in length variables.\\ +% If the sum of the field widths > \cs{headwidth}: the center field is +% centered in the header/footer, and the left and right fields are put +% in an \cs{\meta{x}lap} to prevent error messages about overlapping.\\ +% Otherwise, if there is no overlap between the fields, also put the +% center field centered in the header/footer. This is done by the macro +% \cs{f@nch@hfbox@center}\\ +% Otherwise (there is enough space, but centering would cause overlap):\\ +% put the center field centered between the left and right field, i.e., +% with equal gaps on both sides. This is done by the macro +% \cs{f@nch@hfbox@fit}. +% +% \begin{macrocode} +\newcommand\f@nch@hfbox[7]{% + \setlength\f@nch@widthL{#5}% + \setlength\f@nch@widthC{#6}% + \setlength\f@nch@widthR{#7}% + \let\@tempa\f@nch@hfbox@center + \ifdim \dimexpr \f@nch@widthL+\f@nch@widthC+\f@nch@widthR>\headwidth + \else + \ifdim \dimexpr \f@nch@widthL+0.5\f@nch@widthC>0.5\headwidth + \let \@tempa\f@nch@hfbox@fit + \fi + \ifdim \dimexpr \f@nch@widthR+0.5\f@nch@widthC>0.5\headwidth + \let \@tempa\f@nch@hfbox@fit + \fi + \fi + \@tempa{#1}{#2}{#3}{#4}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[internal]{\f@nch@hfbox@center} +% This macro constructs the box with the header or footer. This is the +% version that centers the center field in the total header/footer. +% It has 4 parameters:\\ +% 1. Left field\\ +% 2. Center field\\ +% 3. Right field\\ +% 4. Vertical alignment: \texttt{b} for the header or \texttt{t} for the footer\\ +% \begin{macrocode} +\newcommand\f@nch@hfbox@center[4]{% + \hbox to \headwidth{% + \rlap{\parbox[#4]{\f@nch@widthL}{\raggedright\leavevmode\ignorespaces#1}}% + \hfill + \parbox[#4]{\f@nch@widthC}{\centering\leavevmode\ignorespaces#2}% + \hfill + \llap{\parbox[#4]{\f@nch@widthR}{\raggedleft\leavevmode\ignorespaces#3}}% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}[internal]{\f@nch@hfbox@fit} +% This macro constructs the box with the header or footer. This is the +% version that centers the center field between the left and right fields. +% It has 4 parameters:\\ +% 1. Left field\\ +% 2. Center field\\ +% 3. Right field\\ +% 4. Vertical alignment: \texttt{b} for the header or \texttt{t} for the footer\\ +% \begin{macrocode} +\newcommand\f@nch@hfbox@fit[4]{% + \hbox to \headwidth{% + \parbox[#4]{\f@nch@widthL}{\raggedright\leavevmode\ignorespaces#1}% + \hfill + \parbox[#4]{\f@nch@widthC}{\centering\leavevmode\ignorespaces#2}% + \hfill + \parbox[#4]{\f@nch@widthR}{\raggedleft\leavevmode\ignorespaces#3}% + }% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[internal]{\MakeUppercase} % Define \MakeUppercase for old \LaTeX{}en. Note: we used \cs{def} rather % than \cs{let}, so that \verb+\let\uppercase\relax+ (from the version 1 % documentation) will still work. @@ -4551,17 +7229,17 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\@chapapp} -% Define \cs{@chapapp} for classes that don't have it, e.g.\ amsbook +% \begin{macro}[internal]{\@chapapp} +% Define \cs{@chapapp} for classes that don't have it, e.g., amsbook % \begin{macrocode} \f@nch@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}% % \end{macrocode} % \end{macro} -% \begin{macro}{\f@nch@initialise} +% \begin{macro}[internal]{\f@nch@initialise} % \changes{fancyhdr v4.0}{2019/03/21}{Put all the initialisation code in % \cs{f@nch@initialise}} % This macro initialises the headers and footers and \cs{chaptermark} -% and/or \Cmd{[sub]sectionmark} for pagestyle \texttt{fancy} +% and/or \Cmd{[sub]sectionmark} for page style \texttt{fancy} % \begin{macrocode} \def\f@nch@initialise{% % \end{macrocode} @@ -4636,9 +7314,9 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\ps@f@nch@fancyproto} +% \begin{macro}[internal]{\ps@f@nch@fancyproto} % \cs{ps@f@nch@fancyproto} is the -% initial value for pagestyle \texttt{fancy}. The real page style +% initial value for page style \texttt{fancy}. The real page style % is \cs{ps@f@nch@fancycore} but \cs{ps@f@nch@fancyproto} for the first use % of \Cmd{pagestyle\{fancy\}} or any of its derivatives. It % initialises \cs{headwidth}, and then resets itself to @@ -4671,12 +7349,12 @@ \@fancyplainfalse\ps@f@nch@fancycore }% % \end{macrocode} -% Let the system know this is a \texttt{fancyhdr} pagestyle. +% Let the system know this is a \pkg{fancyhdr} page style. % \begin{macrocode} \@namedef{f@nch@ps@f@nch@fancyproto-is-fancyhdr}{} % \end{macrocode} % \end{macro} -% \begin{macro}{ps@fancy} +% \begin{macro}[internal]{\ps@fancy} % Define \cs{ps@fancy} just to call \cs{ps@f@nch@fancyproto}. % \begin{macrocode} \def\ps@fancy{\ps@f@nch@fancyproto} @@ -4684,8 +7362,8 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\ps@fancyplain} -% The pagestyle \texttt{fancyplain} (deprecated). +% \begin{macro}[internal]{\ps@fancyplain} +% The page style \texttt{fancyplain} (deprecated). % After initializing by calling \cs{ps@f@nch@fancyproto} it sets page style % \texttt{plain} to our version \cs{ps@plain@fancy}, which just sets % \cs{@fancyplaintrue} and then calls the page style fancy implementation. @@ -4696,8 +7374,8 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\f@nch@ps@empty} -% Save the definition of \cs{ps@empty} (pagestyle \texttt{empty}). +% \begin{macro}[internal]{\f@nch@ps@empty} +% Save the definition of \cs{ps@empty} (page style \texttt{empty}). % \changes{fancyhdr v4.0}{2019/03/21}{Rename \cs{ps@@empty} to \cs{f@nch@ps@empty}} % % \begin{macrocode} @@ -4705,10 +7383,12 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\ps@f@nch@fancycore} +% \begin{macro}[internal]{\ps@f@nch@fancycore} % \changes{fancyhdr v4.0}{2019/03/21}{Rename \cs{ps@@fancy} to \cs{ps@f@nch@fancycore}} % \changes{fancyhdr v4.1}{2022/09/06}{Implement \texttt{twoside} option.} -% The actual implementation of pagestyle \texttt{fancy}. For amsbook/amsart, which do +% \changes{fancyhdr v5.0}{2025/01/01}{Support for \cs{fancyheadwidth}, +% \cs{fancyfootwidth} and \cs{fancyhfwidth}.} +% The actual implementation of page style \texttt{fancy}. For amsbook/amsart, which do % strange things with \cs{topskip}, we start with \cs{f@nch@ps@empty}. We % construct the even and odd headers and footers from all the parts that % we have collected. @@ -4716,7 +7396,8 @@ \def\ps@f@nch@fancycore{% \f@nch@ps@empty \def\@mkboth{\protect\markboth}% - \def\f@nch@oddhead{\f@nch@head\f@nch@Oolh\f@nch@olh\f@nch@och\f@nch@orh\f@nch@Oorh}% + \def\f@nch@oddhead{\f@nch@head\f@nch@Oolh\f@nch@olh\f@nch@och\f@nch@orh\f@nch@Oorh + \f@nch@width@olh\f@nch@width@och\f@nch@width@orh}% \def\@oddhead{% \iff@nch@twoside \ifodd\c@page @@ -4728,7 +7409,8 @@ \f@nch@oddhead \fi } - \def\f@nch@oddfoot{\f@nch@foot\f@nch@Oolf\f@nch@olf\f@nch@ocf\f@nch@orf\f@nch@Oorf}% + \def\f@nch@oddfoot{\f@nch@foot\f@nch@Oolf\f@nch@olf\f@nch@ocf\f@nch@orf\f@nch@Oorf + \f@nch@width@olf\f@nch@width@ocf\f@nch@width@orf}% \def\@oddfoot{% \iff@nch@twoside \ifodd\c@page @@ -4740,35 +7422,22 @@ \f@nch@oddfoot \fi } - \def\@evenhead{\f@nch@head\f@nch@Oelh\f@nch@elh\f@nch@ech\f@nch@erh\f@nch@Oerh}% - \def\@evenfoot{\f@nch@foot\f@nch@Oelf\f@nch@elf\f@nch@ecf\f@nch@erf\f@nch@Oerf}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{ps@fancydefault} -% \changes{fancyhdr v4.0}{2019/03/21}{Added \cs{ps@fancydefault}} -% This is page style \texttt{fancydefault}. It is in fact page style -% \texttt{fancy} with all the defaults embedded. In contrast with page -% style \texttt{fancy} that gets all its settings from the environment. -% It reruns all initialisations and then calls \cs{ps@f@nch@fancyproto}. -% \begin{macrocode} -\def\ps@fancydefault{% - \f@nch@initialise - \ps@f@nch@fancyproto + \def\@evenhead{\f@nch@head\f@nch@Oelh\f@nch@elh\f@nch@ech\f@nch@erh\f@nch@Oerh + \f@nch@width@elh\f@nch@width@ech\f@nch@width@erh}% + \def\@evenfoot{\f@nch@foot\f@nch@Oelf\f@nch@elf\f@nch@ecf\f@nch@erf\f@nch@Oerf + \f@nch@width@elf\f@nch@width@ecf\f@nch@width@erf}% } -\@namedef{f@nch@ps@fancydefault-is-fancyhdr}{} % \end{macrocode} -% % \end{macro} % -% \begin{macro}{\f@nch@Oolh} -% \begin{macro}{\f@nch@Oorh} -% \begin{macro}{\f@nch@Oelh} -% \begin{macro}{\f@nch@Oerh} -% \begin{macro}{\f@nch@Oolf} -% \begin{macro}{\f@nch@Oorf} -% \begin{macro}{\f@nch@Oelf} -% \begin{macro}{\f@nch@Oerf} +% \begin{macro}[internal]{\f@nch@Oolh} +% \begin{macro}[internal]{\f@nch@Oorh} +% \begin{macro}[internal]{\f@nch@Oelh} +% \begin{macro}[internal]{\f@nch@Oerh} +% \begin{macro}[internal]{\f@nch@Oolf} +% \begin{macro}[internal]{\f@nch@Oorf} +% \begin{macro}[internal]{\f@nch@Oelf} +% \begin{macro}[internal]{\f@nch@Oerf} % Default definitions for compatibility mode: These cause the % header/footer to take the defined \cs{headwidth} as its width and if % required to shift it in the direction of the marginpar area. @@ -4792,58 +7461,73 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\f@nch@offsolh} -% \begin{macro}{\f@nch@offselh} +% \begin{macro}[internal]{\f@nch@offsolh} +% \begin{macro}[internal]{\f@nch@offselh} +% \changes{fancyhdr v5.0}{2021/03/27}{Change the offset length variables +% \cs{f@nch@O@xyz} to \cs{f@nch@offset@xyz}} % New definitions for the use of \cs{fancyhfoffset}, % \cs{fancyheadoffset}, \cs{fancyfootoffset}. These calculate the % \cs{headwidth} from \cs{textwidth} and the specified offsets.\\ % First for the header. % % \begin{macrocode} -\def\f@nch@offsolh{\headwidth=\textwidth\advance\headwidth\f@nch@O@olh - \advance\headwidth\f@nch@O@orh\hskip-\f@nch@O@olh} -\def\f@nch@offselh{\headwidth=\textwidth\advance\headwidth\f@nch@O@elh - \advance\headwidth\f@nch@O@erh\hskip-\f@nch@O@elh} +\def\f@nch@offsolh{\headwidth=\textwidth\advance\headwidth\f@nch@offset@olh + \advance\headwidth\f@nch@offset@orh\hskip-\f@nch@offset@olh} +\def\f@nch@offselh{\headwidth=\textwidth\advance\headwidth\f@nch@offset@elh + \advance\headwidth\f@nch@offset@erh\hskip-\f@nch@offset@elh} % \end{macrocode} % \end{macro} % \end{macro} % -% \begin{macro}{\f@nch@offsolh} -% \begin{macro}{\f@nch@offselh} +% \begin{macro}[internal]{\f@nch@offsolf} +% \begin{macro}[internal]{\f@nch@offself} % The same for the footer. % % \begin{macrocode} -\def\f@nch@offsolf{\headwidth=\textwidth\advance\headwidth\f@nch@O@olf - \advance\headwidth\f@nch@O@orf\hskip-\f@nch@O@olf} -\def\f@nch@offself{\headwidth=\textwidth\advance\headwidth\f@nch@O@elf - \advance\headwidth\f@nch@O@erf\hskip-\f@nch@O@elf} +\def\f@nch@offsolf{\headwidth=\textwidth\advance\headwidth\f@nch@offset@olf + \advance\headwidth\f@nch@offset@orf\hskip-\f@nch@offset@olf} +\def\f@nch@offself{\headwidth=\textwidth\advance\headwidth\f@nch@offset@elf + \advance\headwidth\f@nch@offset@erf\hskip-\f@nch@offset@elf} % \end{macrocode} % \end{macro} % \end{macro} % -% \begin{macro}{\f@nch@setoffs} +% \begin{macro}[internal]{\f@nch@setoffs} +% \changes{fancyhdr v5.0}{2021/03/27}{Use \cs{def} instead of \cs{let} +% to make it easier to pick up these macros for \cs{fancypagestyle*}} % Set the offset parts to be used in the construction of the headers and % footers. Depending on \cs{f@nch@gbl} it will be done globally (for -% pagestyle \texttt{fancy}) or locally (for \cs{fancypagestyle}). +% page style \texttt{fancy}) in \texttt{compatV3} mode) +% or locally (for \cs{fancypagestyle}). +% The macros \Cmd{f@nch@Oxyz} tell what should be done at the various +% ends of the headers/footers. They are done with \cs{def} rather than +% \cs{let} so they are easier to pick up for \cs{fancypagestyle*}. +% % Just in case \verb+\let\headwidth\textwidth+ was used, we reset % \cs{headwidth} to the length parameter that it should be. % \begin{macrocode} \def\f@nch@setoffs{% \f@nch@gbl\let\headwidth\f@nch@headwidth - \f@nch@gbl\let\f@nch@Oolh\f@nch@offsolh - \f@nch@gbl\let\f@nch@Oelh\f@nch@offselh \f@nch@gbl\let\f@nch@Oorh\hss - \f@nch@gbl\let\f@nch@Oerh\hss \f@nch@gbl\let\f@nch@Oolf\f@nch@offsolf - \f@nch@gbl\let\f@nch@Oelf\f@nch@offself \f@nch@gbl\let\f@nch@Oorf\hss - \f@nch@gbl\let\f@nch@Oerf\hss + \f@nch@gbl\def\f@nch@Oolh{\f@nch@offsolh}% + \f@nch@gbl\def\f@nch@Oelh{\f@nch@offselh}% + \f@nch@gbl\def\f@nch@Oorh{\hss}% + \f@nch@gbl\def\f@nch@Oerh{\hss}% + \f@nch@gbl\def\f@nch@Oolf{\f@nch@offsolf}% + \f@nch@gbl\def\f@nch@Oelf{\f@nch@offself}% + \f@nch@gbl\def\f@nch@Oorf{\hss}% + \f@nch@gbl\def\f@nch@Oerf{\hss}% } % \end{macrocode} % \end{macro} % -% \begin{macro}{\iff@nch@footnote} -% \begin{macro}{\@makecol} +% \begin{macro}[internal]{\iff@nch@footnote} +% \begin{macro}[internal]{\@makecol} +% \changes{fancyhdr v5.0}{2021/03/27}{Change the internal variables +% \cs{topfloat} and \cs{botfloat} to localised ones \cs{f@nch@topfloat} +% and \cs{f@nch@botfloat}.} % Redefine \cs{@makecol} so that we can capture if there are % top/bottom floats, footnotes or if we are on a float page. Because -% of a clash with the footmisc package we do this at +% of a clash with the \PKGindex{footmisc}\pkg{footmisc} package we do this at % \verb+\begin{document}+.\\ % We need a boolean \cs{iff@nch@footnote} to capture if there was a footnote. % @@ -4852,7 +7536,7 @@ \AtBeginDocument{% \let\latex@makecol\@makecol \def\@makecol{\ifvoid\footins\f@nch@footnotefalse\else\f@nch@footnotetrue\fi - \let\topfloat\@toplist\let\botfloat\@botlist\latex@makecol}% + \let\f@nch@topfloat\@toplist\let\f@nch@botfloat\@botlist\latex@makecol}% } % \end{macrocode} % \end{macro} @@ -4864,10 +7548,10 @@ % \begin{macro}{\iffootnote} % These can be used in a header/footer field to make them conditional on % the presence of floats and/or footnotes. -% \changes{fancyhdr v4.3}{2024/05/08}{Replace \cs{empty} with \cs{@empty}} +% \changes{fancyhdr v5.0}{2024/05/08}{Replace \cs{empty} with \cs{@empty}} % \begin{macrocode} -\newcommand\iftopfloat[2]{\ifx\topfloat\@empty #2\else #1\fi}% -\newcommand\ifbotfloat[2]{\ifx\botfloat\@empty #2\else #1\fi}% +\newcommand\iftopfloat[2]{\ifx\f@nch@topfloat\@empty #2\else #1\fi}% +\newcommand\ifbotfloat[2]{\ifx\f@nch@botfloat\@empty #2\else #1\fi}% \newcommand\iffloatpage[2]{\if@fcolmade #1\else #2\fi}% \newcommand\iffootnote[2]{\iff@nch@footnote #1\else #2\fi}% % \end{macrocode} @@ -4876,22 +7560,52 @@ % \end{macro} % \end{macro} % +% \changes{fancyhdr v5.0}{2021/02/16}{Define \cs{newtoks}\cs{@temptokenb}} +% \begin{macro}[internal]{\@temptokenb} +% A token register to collect information for \cs{fancypagestyle*}. The +% definition is conditional on the non-existence of it. +% \begin{macrocode} +\ifx\@temptokenb\undefined \csname newtoks\endcsname\@temptokenb\fi +% \end{macrocode} +% \end{macro} +% +% \changes{fancyhdr v5.0}{2021/02/17}{Define \cs{iff@nch@pagestyle@star} +% to record if \cs{fancypagestyle*} is used.} +% \begin{macro}[internal]{\iff@nch@pagestyle@star} +% A conditional to record if \cs{fancypagestyle*} is used. +% \begin{macrocode} +\newif\iff@nch@pagestyle@star +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\fancypagestyle} -% Define a new page style. The optional second argument is the base page style. +% Define a new page style. With \texttt{*} define a ``closed'' page +% style, otherwise an ``open'' one. +% \changes{fancyhdr v5.0}{2021/02/17}{Add \cs{fancypagestyle*}} +% \begin{macrocode} +\newcommand\fancypagestyle{% + \@ifstar{\f@nch@pagestyle@startrue\f@nch@pagestyle}% + {\f@nch@pagestyle@starfalse\f@nch@pagestyle}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}[internal]{\f@nch@pagestyle} +% Internal macro for \cs{fancypagestyle}. The optional second argument is the base page style. % It defaults to \cs{ps@f@nch@fancyproto}. % \changes{fancyhdr v4.0}{2019/03/21}{Added optional base style argument.} % \begin{macrocode} -\newcommand{\fancypagestyle}[1]{% - \@ifnextchar[{\f@nch@pagestyle{#1}}{\f@nch@pagestyle{#1}[f@nch@fancyproto]}% +\newcommand\f@nch@pagestyle[1]{% + \@ifnextchar[{\f@nch@@pagestyle{#1}}{\f@nch@@pagestyle{#1}[f@nch@fancyproto]}% } % \end{macrocode} % \end{macro} -% \begin{macro}{\f@nch@pagestyle} +% \begin{macro}[internal]{\f@nch@@pagestyle} % The actual code for \cs{fancypagestyle}. Build the page style body. % Declare it as a fancyhdr-based page style. % \changes{fancyhdr v4.0}{2019/09/05}{Make the definition of \cs{f@nch@pagestyle} \cs{long}.} +% \changes{fancyhdr v5.0}{2021/02/17}{Add \cs{fancypagestyle*}} % \begin{macrocode} -\long\def\f@nch@pagestyle#1[#2]#3{% +\long\def\f@nch@@pagestyle#1[#2]#3{% \f@nch@ifundefined{ps@#2}{% \PackageError{fancyhdr}{\string\fancypagestyle: Unknown base page style `#2'}{}% }{% @@ -4899,19 +7613,381 @@ \PackageError{fancyhdr}{\string\fancypagestyle: Base page style `#2' is not fancyhdr-based}{}% }% {% - \@namedef{ps@#1}{\let\f@nch@gbl\relax\@nameuse{ps@#2}#3\relax}% +% \end{macrocode} +% First put necessary definitions in \cs{@temptokenb}, if required +% (\cs{fancypagestyle*}) by calling \cs{f@nch@pagestyle@setup}. +% Then define the page style by expanding \cs{the}\cs{@temptokenb} and +% adding the base style and our definitions. +% \begin{macrocode} + \f@nch@pagestyle@setup + \def\temp@b{\@namedef{ps@#1}}% + \expandafter\temp@b\expandafter{\the\@temptokenb + \let\f@nch@gbl\relax\@nameuse{ps@#2}#3\relax}% \@namedef{f@nch@ps@#1-is-fancyhdr}{}% }% }% -}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[internal]{\f@nch@pagestyle@setup} +% Internal macro for \cs{fancypagestyle}. Setup \cs{@temptokenb}:\\ +% For \cs{fancypagestyle*} collect relevant macro definitions in \cs{@temptokenb}.\\ +% For \cs{fancypagestyle} make \cs{@temptokenb} empty. +% \changes{fancyhdr v5.0}{2021/02/17}{Add \cs{f@nch@pagestyle@setup} +% macro for \cs{fancypagestyle*}} +% \changes{fancyhdr v5.0}{2021/03/27}{Also save the offset length variables +% \cs{f@nch@offset@xyz} with \cs{setlength}} +% \changes{fancyhdr v5.0}{2022/01/24}{Replace \cs{myname} with \cs{temp@a}} +% \begin{macrocode} +\newcommand\f@nch@pagestyle@setup{% + \iff@nch@pagestyle@star +% \end{macrocode} +% For \cs{fancypagestyle*}, first save value of \cs{iff@nch@check} +% (the \texttt{[nocheck]} option). +% \begin{macrocode} + \iff@nch@check\@temptokenb={\f@nch@checktrue}\else\@temptokenb={\f@nch@checkfalse}\fi +% \end{macrocode} +% Save values of all relevant macros (26 in total):\\ +% headers and footers (12), header and footer widths (12), +% header and footer offsets (8), header and footer inits (2), +% \cs{headrule} and \cs{footrule} and \texttt{...width} (4) +% \begin{macrocode} + \@tfor\temp@a:= + \f@nch@olh\f@nch@och\f@nch@orh\f@nch@elh\f@nch@ech\f@nch@erh + \f@nch@olf\f@nch@ocf\f@nch@orf\f@nch@elf\f@nch@ecf\f@nch@erf + \f@nch@width@elh\f@nch@width@ech\f@nch@width@erh\f@nch@width@olh + \f@nch@width@och\f@nch@width@orh\f@nch@width@elf\f@nch@width@ecf + \f@nch@width@erf\f@nch@width@olf\f@nch@width@ocf\f@nch@width@orf + \f@nch@Oolh\f@nch@Oorh\f@nch@Oelh\f@nch@Oerh + \f@nch@Oolf\f@nch@Oorf\f@nch@Oelf\f@nch@Oerf + \f@nch@headinit\f@nch@footinit + \headrule\headrulewidth\footrule\footrulewidth + \do {% +% \end{macrocode} +% First get the body of the macro. +% Next put it in a \cs{def}\meta{\cs{macro}}\texttt{\{}\meta{body of \cs{macro}}\texttt{\}}. +% \begin{macrocode} + \toks@=\expandafter\expandafter\expandafter{\temp@a}% + \toks@=\expandafter\expandafter\expandafter{% + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\temp@a\expandafter{\the\toks@}}% +% \end{macrocode} +% Set up a macro to append \cs{toks@} to \cs{@temptokenb} and then execute it. +% \begin{macrocode} + \edef\temp@b{\@temptokenb={\the\@temptokenb\the\toks@}}% + \temp@b + }% +% \end{macrocode} +% Now pick up the offset length variables in a similar way, but with +% \cs{setlength} rather than \cs{def}. +% \begin{macrocode} + \@tfor\temp@a:= + \f@nch@offset@olh\f@nch@offset@orh\f@nch@offset@elh\f@nch@offset@erh + \f@nch@offset@olf\f@nch@offset@orf\f@nch@offset@elf\f@nch@offset@erf + \do {% + \toks@=\expandafter\expandafter\expandafter{\expandafter\the\temp@a}% + \toks@=\expandafter\expandafter\expandafter{% + \expandafter\expandafter\expandafter\setlength + \expandafter\expandafter\temp@a\expandafter{\the\toks@}}% +% \end{macrocode} +% Set up a macro to append \cs{toks@} to \cs{@temptokenb} and then execute it. +% \begin{macrocode} + \edef\temp@b{\@temptokenb={\the\@temptokenb\the\toks@}}% + \temp@b + }% + \else +% \end{macrocode} +% For \cs{fancypagestyle} without \texttt{*}, set \cs{@temptokenb} empty. +% \begin{macrocode} + \@temptokenb={}% + \fi +} % \end{macrocode} % \end{macro} -% \changes{fancyhdr v4.1}{202/09/16}{Support for class \Package{newlfm}.} -% The (really outdated) document class \Package{newlfm} uses some internal -% \Package{fancyhdr} commands that have gotten new names. So here we check if -% that class is loaded and then we redefine the affected \Package{newlfm} macros. +% \begin{macro}{\fancypagestyleassign} +% \changes{fancyhdr v5.0}{2024/12/25}{Macro \cs{fancypagestyleassign} added} +% \begin{syntax} +% \cs{fancypagestyleassign}\marg{ps1}\marg{ps2} +% \end{syntax} +% Assigns page style \meta{ps2} to \meta{ps1}. This causes +% \meta{ps1} to be an exact copy of \meta{ps2}, but completely +% independent of \meta{ps2}. We do the equivalent of a \cs{let} +% command, like \cs{let}\cs{ps@\meta{ps1}}\cs{ps@\meta{ps2}}. +% \begin{macrocode} +\newcommand\fancypagestyleassign[2]{% + \f@nch@ifundefined{ps@#2}{% + \PackageError{fancyhdr}{\string\fancypagestyleassign: Unknown page style `#2'}{}% + }{% + \expandafter\let + \csname ps@#1\expandafter\endcsname + \csname ps@#2\endcsname +% \end{macrocode} +% If \meta{ps2} is not fancyhdr-based, \meta{ps1} will also be +% fancyhdr-based, otherwise it will not. If \meta{ps2} is not +% fancyhdr-based, but \meta{ps1} is, give a warning that it is +% overwritten, which could give unexpected problems. +% \begin{macrocode} + \f@nch@ifundefined{f@nch@ps@#2-is-fancyhdr}{% + \f@nch@ifundefined{f@nch@ps@#1-is-fancyhdr}{}{% + \PackageNote{fancyhdr}{% + \string\fancypagestyleassign: You overwrite the\MessageBreak + fancyhdr-based page style `#1' with the\MessageBreak + non-fancyhdr-based page style `#2'.\MessageBreak + This could cause unexpected problems if you\MessageBreak + use `#1' as the base style in \string\fancypagestyle}}% + \expandafter\let\csname f@nch@ps@#1-is-fancyhdr\endcsname\@undefined + }{% + \@namedef{f@nch@ps@#1-is-fancyhdr}{}% + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[internal]{\ps@fancydefault} +% \changes{fancyhdr v4.0}{2019/03/21}{Added \cs{ps@fancydefault}} +% \changes{fancyhdr v5.0}{2021/04/11}{Defined \cs{ps@fancydefault} with +% \cs{fancypagestyle*}} +% This is page style \texttt{fancydefault}. It is in fact page style +% \texttt{fancy} with all the defaults embedded, including the relevant +% definitions of \cs{chaptermark} and \Cmd{[sub]sectionmark}. This is in +% contrast with page style \texttt{fancy} that gets all its settings +% from the environment. It is defined with \cs{fancypagestyle*}. +% \begin{macrocode} +\fancypagestyle*{fancydefault}{\f@nch@initialise} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fancyhdrbox} +% \changes{fancyhdr v5.0}{2024/12/16}{Macro \cs{fancyhdrbox} added} +% \cs{fancyhdrbox}\oarg{alignment}\oarg{width}\marg{lines separated by \cmd{\\}}\\[1ex] +% This command creates a \cs{halign} inside a vertical box (\cs{vbox} or \cs{vtop}). +% +% We need some variables, but these don't have to be declared. They are +% characterised by \texttt{@@} in their name. +% \begin{description}[leftmargin=4cm] +% \item[\cs{f@nchdrbox@@v}] -- vertical alignment (\texttt{T}, +% \texttt{t}, \texttt{c}, \texttt{b}, \texttt{B}) +% \item[\cs{f@nchdrbox@@h}] -- horizontal alignment (\texttt{l}, \texttt{c}, \texttt{r}) +% \item[\cs{f@nchdrbox@@pre}] -- code to be inserted before the +% first row, a `topstrut' or \Cmd{vspace\{0pt\}} +% \item[\cs{f@nchdrbox@@postx}] -- code to be executed at the end of the +% last row, possibly a `botstrut' +% \item[\cs{f@nchdrbox@@posty}] -- code to be executed after the +% \cs{halign}, possibly a \Cmd{vspace\{0pt\}} +% \item[\cs{f@nchdrbox@@crstrut}] -- a `strut' to be inserted at +% each \cmd{\\} in the \cs{halign} +% \item[\cs{f@nchdrbox@@halignto}] -- This is either empty, if no +% \meta{width} argument is given, +% or `\texttt{to~\meta{width}}' if +% it is given. +% \end{description} +% A `strut' is a \TeX{} construct to keep the baselines of the lines in +% a text on a fixed distance. It normally is an invisible rule of \texttt{width} +% \texttt{0pt}, \texttt{height} \texttt{0.7\cs{baselineskip}} and \texttt{depth} +% \texttt{0.3\cs{baselineskip}}. Therefore the struts are +% dependent of the font of the text. But for the \cs{fancyhdrbox} alignments +% \texttt{T} and \texttt{B} we need special `topstrut' (which only has +% the \texttt{height}) part, or a `botstrut' (which only has the +% \texttt{depth}) part. For example with the \texttt{T} alignment, there +% should be no strut on the first line, because then we don't want the extra +% space above this line. We use instead a \cmd{vspace\{0pt\}}. +% But we need the \texttt{depth} part +% because we want the extra space below the line. Similar for the +% \texttt{B} alignment, but then in the opposite direction. +% \begin{macro}[internal]{\f@nchdrbox@topstrut, \f@nchdrbox@botstrut} +% \begin{macrocode} +\def\f@nchdrbox@topstrut{\vrule height\ht\strutbox width\z@} +\def\f@nchdrbox@botstrut{\vrule depth\dp\strutbox width\z@} +% \end{macrocode} +% \end{macro} +% \begin{macro}[internal]{\f@nchdrbox@nostrut} +% At each \cmd{\\} \cs{f@nchdrbox@@crstrut} will be inserted. It will be a normal \cs{strut}, except +% in the first row when the alignment is \texttt{T}; then it will be a +% `botstrut', and moreover, we will insert a \Cmd{vspace\{0pt\}} at the +% top of the box. The macro \cs{f@nchdrbox@nostrut} will set this up. +% The assignment to \cs{f@nchdrbox@@crstrut} will be local to the +% \cs{halign} cell, so after the \cmd{\\} it will be reset to the default. +% \begin{macrocode} +\def\f@nchdrbox@nostrut{\noalign{\vspace{0pt}}\let\f@nchdrbox@@crstrut\f@nchdrbox@botstrut} +% \end{macrocode} +% \end{macro} +% ^^A\begin{macro}{\fancyhdrbox} +% Now we start the only user command in the part: \cs{fancyhdrbox}. +% The code is run in a group so that changes to variables are local. +% This is necessary in case we use nested \cs{fancyhdrbox}es. +% +% First we set the variables \cs{f@nchdrbox@@pre}, +% \cs{f@nchdrbox@topstrut}, \cs{f@nchdrbox@@posty}, and +% \cs{f@nchdrbox@@crstrut} to their default values. Then we test if +% the second optional argument (\meta{width}) was given, and if so, +% record this in \cs{f@nchdrbox@@halignto}. We put the \meta{width} +% value in a length variable with \cs{setlength} so that we can +% support \pkg{calc}-style values. +% +% And then we check if the first optional argument \meta{alignment} is +% empty. In that case we use \texttt{cl} instead. +% \begin{macrocode} +\NewDocumentCommand{\fancyhdrbox}{ O{cl} o m }{% +\begingroup + \let\f@nchdrbox@@pre\f@nchdrbox@topstrut + \let\f@nchdrbox@@postx\f@nchdrbox@botstrut + \let\f@nchdrbox@@posty\relax + \let\f@nchdrbox@@crstrut\strut + \IfNoValueTF{#2}% + {\let\f@nchdrbox@@halignto\@empty}% + {\setlength\@tempdima{#2}% + \def\f@nchdrbox@@halignto{to\@tempdima}}% + \def\@tempa{#1}% + \ifx\@tempa\@empty + \f@nchdrbox@align cl\@nil{#3}% + \else + \f@nchdrbox@align #1\@nil{#3}% + \fi +\endgroup +} +% \end{macrocode} +% ^^A\end{macro} +% +% \begin{macro}[internal]{\f@nchdrbox@cr, \@f@nchdrbox@xcr, +% \@f@nchdrbox@argc, \@f@nchdrbox@xargc, \@f@nchdrbox@yargc} +% This is the definition for \cmd{\\} inside \cs{fancyhdrbox}, +% \cmd{\\*} does nothing special here, but we acccept it anyway. +% The code is mostly copied from the \env{tabular} code from the +% \LaTeX{} kernel, but simplified, and the names of the macros are +% changed so that we don't rely on internals in the \LaTeX{} kernel that +% may change. The trick with the \verb|\ifnum0=`| +% allows to get unbalanced braces in a macro. +% \begin{macrocode} +\protected\def\f@nchdrbox@cr{% + {\ifnum0=`}\fi\@ifstar\@f@nchdrbox@xcr\@f@nchdrbox@xcr} + +\def\@f@nchdrbox@xcr{% + \unskip\f@nchdrbox@@crstrut + \@ifnextchar[\@f@nchdrbox@argc{\ifnum0=`{\fi}\cr}% +} + +\def\@f@nchdrbox@argc[#1]{% + \ifnum0=`{\fi}% + \ifdim #1>\z@ + \unskip\@f@nchdrbox@xargc{#1}% + \else + \@f@nchdrbox@yargc{#1}% + \fi} + +\def\@f@nchdrbox@xargc#1{\@tempdima #1\advance\@tempdima \dp \strutbox + \vrule \@height\z@ \@depth\@tempdima \@width\z@ \cr} + +\def\@f@nchdrbox@yargc#1{\cr\noalign{\setlength\@tempdima{#1}\vskip\@tempdima}} +% \end{macrocode} +% \end{macro} +% \begin{macro}[internal]{\f@nchdrbox@T, \f@nchdrbox@t, \f@nchdrbox@c, \f@nchdrbox@b, \f@nchdrbox@B} +% Processing for the vertical alignment options \texttt{T}, +% \texttt{t}, \texttt{c}, \texttt{b}, \texttt{B}. +% +% \begin{description} +% \item[\texttt{T}] set \cs{f@nchdrbox@@pre} to `nostrut' and execute +% the \texttt{t} code +% \item[\texttt{t}] set vertical alignment to \texttt{t} and +% horizontal to \texttt{l} +% \item[\texttt{c}] set both vertical and horizontal alignment to \texttt{c} +% \item[\texttt{b}] set vertical alignment to \texttt{b} and +% horizontal to \texttt{l} +% \item[\texttt{B}] set \cs{f@nchdrbox@@postx} to do nothing and +% \cs{f@nchdrbox@@posty} to \Cmd{vspace\{0pt\}} and +% execute the \texttt{b} code +% \end{description} +% The horizontal alignments are defaults, they may be changed by +% processing the horizontal argument, if present. +% \begin{macrocode} +\def\f@nchdrbox@T{\let\f@nchdrbox@@pre\f@nchdrbox@nostrut + \f@nchdrbox@t} +\def\f@nchdrbox@t{\def\f@nchdrbox@@v{t}\def\f@nchdrbox@@h{l}} +\def\f@nchdrbox@c{\def\f@nchdrbox@@v{c}\def\f@nchdrbox@@h{c}} +\def\f@nchdrbox@b{\def\f@nchdrbox@@v{b}\def\f@nchdrbox@@h{l}} +\def\f@nchdrbox@B{\let\f@nchdrbox@@postx\relax + \def\f@nchdrbox@@posty{\vspace{0pt}}% + \f@nchdrbox@b} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[internal]{\f@nchdrbox@align} +% \cs{f@nchdrbox@align}\marg{vert}\marg{hor}\texttt{\cs{@nil}}\marg{lines}\\[1ex] +% The internal processing for the \cs{halign} in a vertical box.\\ +% ALGORITHM \cs{f@nchdrbox@align}:\\ +% (v = vertical position; h = horizontal position)\\ +% \textbf{IF} \texttt{\#1} in \texttt{\{T,t,c,b,B\}} \\ +% \textbf{THEN} v := \texttt{\#1}; h := (\textbf{if} \texttt{\#1} == \texttt{c} \textbf{then} \texttt{c} \textbf{else} \texttt{l} \textbf{fi}) (coded in \cs{f@nchdrbox@\meta{\#1}})\\ +% \hspace*{1em} (The h value is the default in case \texttt{\#2} is empty)\\ +% \hspace*{1em} \textbf{if} \texttt{\#2} is not empty \textbf{then} h := \texttt{\#2} \textbf{fi}\\ +% \textbf{ELSE} (\texttt{\#1} not in \texttt{\{T,t,c,b,B\}} -- it must be +% a horizontal alignment)\\ +% \hspace*{1em} v := \texttt{c}\\ +% \hspace*{1em} h := \texttt{\#1}\\ +% \textbf{FI}\\ +% Set the \cs{halign} in a \cs{vtop} (for \texttt{T/t} alignment) or +% \cs{vbox} (for others). This box is put into \cs{box0} because we have +% to change it for the vertical alignment \texttt{c}. For the others it +% isn't necesary, but it just makes the code easier to do it anyway. +% We also insert the \cs{f@nchdrbox@@pre}, +% \cs{f@nchdrbox@@postx} and \cs{f@nchdrbox@@posty} variables in the +% proper places. The rest of the code is roughly based on the +% \env{tabular} code in the \LaTeX{} kernel. +% \begin{macrocode} +\long\def\f@nchdrbox@align#1#2\@nil#3{% + \f@nch@ifin{#1}{TtcbB}{% + \@nameuse{f@nchdrbox@#1}% + \def\@tempa{#2}% + \ifx\@tempa\@empty\else \def\f@nchdrbox@@h{#2}\fi + }% + {\def\f@nchdrbox@@v{c}\def\f@nchdrbox@@h{#1}}% + \let\\\f@nchdrbox@cr + \setbox0=\if \f@nchdrbox@@v t\vtop + \else \vbox + \fi + {% + \ialign \f@nchdrbox@@halignto + \bgroup \relax + {\if \f@nchdrbox@@h l\hskip 1sp\else \hfil \fi + \ignorespaces ##\unskip + \if\f@nchdrbox@@h r\else \hfil \fi + }% + \tabskip\z@skip \cr + \f@nchdrbox@@pre + #3\unskip \f@nchdrbox@@postx + \crcr + \egroup + \f@nchdrbox@@posty + }% +% \end{macrocode} +% If the vertical alignment is \texttt{c}, we calculate the +% total height + depth of the resulting \cs{box0} and then set +% the depth and height of this box each to half of this value. This way +% the box will be vertically centered. We don't use \cs{vcenter} for +% this, because it centers the box on the \emph{math axis}, which +% doesn't make sense here, and sometimes gives a different vertical +% positioning (not exactly centered). +% \begin{macrocode} + \if\f@nchdrbox@@v c\@tempdima=\ht0\advance\@tempdima\dp0% + \ht0=0.5\@tempdima\dp0=0.5\@tempdima\fi +% \end{macrocode} +% Finally we put the box in horizontal mode in the running text. +% \begin{macrocode} + \leavevmode \box0 +} +% \end{macrocode} +% \end{macro} +% +% \end{macro} +% +% \smallskip +% \changes{fancyhdr v4.1}{202/09/16}{Support for class \pkg{newlfm}.} +% The (really outdated) document class \pkg{newlfm} uses some internal +% \pkg{fancyhdr} commands that have gotten new names. So here we check if +% that class is loaded and then we redefine the affected \pkg{newlfm} macros. % We have to do some of the redefinitions in \cs{AtBeginDocument}, as -% \Package{fancyhdr} is loaded before the affected macros are defined. Also +% \pkg{fancyhdr} is loaded before the affected macros are defined. Also % the macro \cs{@zfancyhead} is only called once, with wrong (outdated) % parameters, so instead of changing the call of the macro, we substitute the % right parameters inline. @@ -4932,9 +8008,59 @@ % \end{macrocode} %</fancyhdr> % -% \section{extramarks.sty} -% +% \section{\pkg{extramarks.sty}} +% \setlength\parindent{0pt} %<*extramarks> +% +% This package gives you extra marks, that you can define, set and use +% in your page headers and footers. It is based on the new \LaTeX{} +% marks mechanism as introduced in the 2022/06/01 \LaTeX{} release. If +% your \LaTeX{} implementation is older it will fallback to +% \pkg{extramarks} version 4. +% +% \changes{extramarks v5.0}{2024/05/14}{New implementation with +% independent marks, and fallback option to earlier version 4.} +% Provide a rollback to earlier version +% \begin{macrocode} +\providecommand\DeclareRelease[3]{} +\providecommand\DeclareCurrentRelease[2]{} +\DeclareRelease{v4}{2024/11/30}{extramarks-v4.sty} +\DeclareCurrentRelease{}{2025/01/01} +\@ifundefined{NewMarkClass} + {\PackageWarningNoLine{extramarks}{% +**************************************************\MessageBreak +Your LaTeX installation is too old for extramarks version 5.\MessageBreak +We will fallback to extramarks version 4 now.\MessageBreak +Please note that some commands will not be available,\MessageBreak +and that the functionality may be slightly different.\MessageBreak +You are advised to update your LaTeX installation.\MessageBreak +**************************************************} + \RequirePackage{extramarks-v4}\endinput}{} +% \end{macrocode} +% \changes{extramarks v5.0}{2024/11/30}{Check if \pkg{extramarks} +% version 5 is not used with a too old version of \pkg{multicol}.} +% We also do a sanity check for the package \PKGindex{multicol}\pkg{multicol}. If it is +% too old it will not work correctly with the new \pkg{extramarks}. In that +% case \pkg{extramarks-v4} should be used instead. So in that case +% we give a warning and then load package \pkg{extramarks-v4}. +% First \cs{extramarks} must be made undefined, otherwise loading +% \pkg{extramarks-v4} will give an error. +% \begin{macrocode} +\AtBeginDocument{% + \@ifpackageloaded{multicol}% + {\IfPackageAtLeastF{multicol}{2024-11-21}{% + \PackageWarningNoLine{extramarks}{% + You are using package `extramarks' with a version\MessageBreak + of `multicol' that is too old. The new version\MessageBreak + of `multicol' will be released on June 1, 2025.\MessageBreak + We will fallback to extramarks version 4 now.}% + \let\extramarks\undefined + \RequirePackage{extramarks-v4} + }% + }% +} +% \end{macrocode} +% % \changes{extramarks v1.99e}{2000/10/11}{Added a few \% marks to get rid % of unwanted spaces, and \cs{endinput}. \\ % Added LPPL license clause.} @@ -4946,17 +8072,141 @@ % \changes{extramarks v2.0x=fancyhdr v 2.0}{2004/03/03}{version 2.0 Release.} % \changes{extramarks v2.1}{2016/08/27}{Added a \cs{ProvidesPackage} line.\\ % Updated contact information.} -% \changes{extramarks v3.9}{2016/10/12}{Unify version number with \Package{fancyhdr.sty}.} +% \changes{extramarks v3.9}{2016/10/12}{Unify version number with \pkg{fancyhdr.sty}.} +% +% \begin{macro}[internal]{\@mkboth} +% Initialization of \cs{@mkboth}, so that it will pick up changes to +% \cs{markboth} +% \changes{extramarks v4.0.3}{2022/05/18}{Initialize definition of +% \cs{@mkboth} to \cs{def}\Cmd{@mkboth\{\cs{protect}\cs{markboth}\}} +% if it wasn't equal to \cs{@gobbletwo} so that it will pick up +% changes to \cs{markboth}} +% \begin{macrocode} +\ifx\@mkboth\@gobbletwo\else\def\@mkboth{\protect\markboth}\fi +% \end{macrocode} +% \end{macro} +% +% \begin{variable}{extramarks-left, extramarks-right} +% \begin{syntax} +% \texttt{extramarks-left}\\ +% \texttt{extramarks-right} +% \end{syntax} +% We need two mark classes. We call them \texttt{extramarks-left} and \texttt{extramarks-right}. +% \begin{macrocode} +\NewMarkClass{extramarks-left} +\NewMarkClass{extramarks-right} +% \end{macrocode} +% \end{variable} +% +% \begin{macro}{\extramarks} +% This command is used to define the extra marks. +% \begin{macrocode} +\newcommand\extramarks[2]{% + \InsertMark{extramarks-left}{#1}% + \InsertMark{extramarks-right}{#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extramarksleft,\extramarksright} +% These commands can be used to set the two marks independently. These +% are only available in \pkg{extramarks} version 4.5 or later. +% \begin{macrocode} +\newcommand\extramarksleft[1]{% + \InsertMark{extramarks-left}{#1}} +\newcommand\extramarksright[1]{% + \InsertMark{extramarks-right}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\firstleftmark} +% \begin{macro}{\lastrightmark} +% \begin{macro}{\firstrightmark} +% \begin{macro}{\lastleftmark} +% The new marks to be used in the headers and/or footers (based on the standard marks info). +% \begin{macrocode} +\newcommand\firstleftmark{\FirstMark{2e-left}} +\newcommand\lastrightmark{\LastMark{2e-right}} +% \end{macrocode} +% We first define the following commands with \cs{newcommand} to detect +% possible name clashes; then we redefine them with \cs{let}. +% \begin{macrocode} +\newcommand\firstrightmark{\rightmark} +\let\firstrightmark \rightmark +\newcommand\lastleftmark{\leftmark} +\let\lastleftmark \leftmark +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\firstleftxmark} +% \begin{macro}{\firstrightxmark} +% \begin{macro}{\topleftxmark} +% \begin{macro}{\toprightxmark} +% \begin{macro}{\lastleftxmark} +% \begin{macro}{\lastrightxmark} +% \begin{macro}{\firstxmark} +% \begin{macro}{\lastxmark} +% \begin{macro}{\topxmark} +% The new extra marks. +% \begin{macrocode} +\newcommand\firstleftxmark{\FirstMark{extramarks-left}} +\newcommand\lastrightxmark{\LastMark{extramarks-right}} +\newcommand\firstrightxmark{\FirstMark{extramarks-right}} +\newcommand\topleftxmark{\TopMark{extramarks-left}} +\newcommand\toprightxmark{\TopMark{extramarks-right}} +\newcommand\lastleftxmark{\LastMark{extramarks-left}} +% \end{macrocode} +% We first define the following commands with \cs{newcommand} to detect +% possible name clashes; then we redefine them with \cs{let}. +% \begin{macrocode} +\newcommand\firstxmark{\firstleftxmark} +\let\firstxmark\firstleftxmark +\newcommand\lastxmark{\lastrightxmark} +\let\lastxmark\lastrightxmark +\newcommand\topxmark{\topleftxmark} +\let\topxmark\topleftxmark +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +%</extramarks> +% +% \section{\pkg{extramarks-v4.sty}} +% +%<*extramarks-v4> +% +% \changes{extramarks v1.99e}{2000/10/11}{Added a few \% marks to get rid +% of unwanted spaces, and \cs{endinput}. \\ +% Added LPPL license clause.} +% \changes{extramarks v2.0beta}{2002/03/12}{Adapted for the new +% implementation of marks in \LaTeX{} to solve bug latex/3203. \\ +% Added symmetric commands \cs{firstrightmark}, \cs{lastleftmark}, \cs{firstleftxmark}, +% \cs{firstrightxmark}, \cs{lastrightxmark}, \cs{lastleftxmark}, \cs{topleftxmark} and +% \cs{toprightxmark}.} +% \changes{extramarks v2.0x=fancyhdr v 2.0}{2004/03/03}{version 2.0 Release.} +% \changes{extramarks v2.1}{2016/08/27}{Added a \cs{ProvidesPackage} line.\\ +% Updated contact information.} +% \changes{extramarks v3.9}{2016/10/12}{Unify version number with \pkg{fancyhdr.sty}.} % % \changes{extramarks v3.9a}{2017/06/30}{Restore \cs{newtoks}\cs{@temptokenb}} -% \begin{macro}{\@temptokenb} +% \changes{extramarks v5.0}{2021/02/16}{Make \cs{newtoks}\cs{@temptokenb} conditional} +% \begin{variable}[internal]{\@temptokenb} % A token register to store some marks information % \begin{macrocode} -\newtoks\@temptokenb +\ifx\@temptokenb\undefined \csname newtoks\endcsname\@temptokenb\fi % \end{macrocode} -% \end{macro} +% \end{variable} % -% \begin{macro}{\unrestored@protected@xdef} +% \begin{macro}[internal]{\unrestored@protected@xdef} % Define this macro just in case it isn't defined (should be part of \LaTeX). % \begin{macrocode} \providecommand\unrestored@protected@xdef{% @@ -4964,7 +8214,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\markboth} +% \begin{macro}[internal]{\markboth} % Our own definition of \cs{markboth}, mainly because \cs{@markboth} % gets more parameters. % \changes{extramarks v4.4}{2024/11/20}{Add setting the new style marks @@ -4992,7 +8242,7 @@ \ExplSyntaxOff % \end{macrocode} % If we are with a pre-\LaTeX3 kernel, we use the definition from an -% older version of \Package{extramarks}. +% older version of \pkg{extramarks}. % \begin{macrocode} \else \def\markboth#1#2{% @@ -5006,7 +8256,7 @@ \fi % \end{macrocode} % \end{macro} -% \begin{macro}{\@mkboth} +% \begin{macro}[internal]{\@mkboth} % Initialization of \cs{@mkboth}, so that it will pick up changes to % \cs{markboth} % \changes{extramarks v4.0.3}{2022/05/18}{Initialize definition of @@ -5017,11 +8267,11 @@ \ifx\@mkboth\@gobbletwo\else\def\@mkboth{\protect\markboth}\fi % \end{macrocode} % \end{macro} -% \begin{macro}{\markright} +% \begin{macro}[internal]{\markright} % We use the standard definition of \cs{markright}. No use to duplicate here. % \end{macro} % -% \begin{macro}{\@markboth} +% \begin{macro}[internal]{\@markboth} % Note: put \texttt{\#3\#4} in toks register. % \begin{macrocode} \def\@markboth#1#2#3#4#5#6{\@temptokena{{#3}{#4}}% @@ -5029,7 +8279,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\@markright} +% \begin{macro}[internal]{\@markright} % Note: put \texttt{\#1} and \texttt{\#3\#4} in toks registers. % Maybe I can get rid of the extra \cs{@temptokenb} by doing the expansion % of \texttt{\#5} to a temp separately. But then, nowadays registers @@ -5040,8 +8290,8 @@ % \end{macrocode} % \end{macro} -% \begin{macro}{\@leftmark} -% \begin{macro}{\@rightmark} +% \begin{macro}[internal]{\@leftmark} +% \begin{macro}[internal]{\@rightmark} % Internal macros to get the standard marks. % \begin{macrocode} \def\@leftmark#1#2#3#4{#1} @@ -5049,11 +8299,11 @@ % \end{macrocode} % \end{macro} % \end{macro} -% \changes{extramarks v4.5}{2024/11/28}{Don't redefine \cs{leftmark} +% \changes{extramarks-v4 v4.5}{2024/11/28}{Don't redefine \cs{leftmark} % and \cs{rightmark} in \LaTeX{} kernel 2025-06-01 and later.} % -% \begin{macro}{\leftmark} -% \begin{macro}{\rightmark} +% \begin{macro}[internal]{\leftmark} +% \begin{macro}[internal]{\rightmark} % \begin{macro}{\firstleftmark} % \begin{macro}{\lastrightmark} % \begin{macro}{\firstrightmark} @@ -5063,7 +8313,7 @@ % format (in which case the test will always be false). % If the \LaTeX{} format is 2025-06-01 or later, \cs{leftmark} and % \cs{rightmark} have definitions based upon the new marks, so we should -% not redefine these in \Package{extramarks}. +% not redefine these even in the \pkg{extramarks-v4} mode. % \begin{macrocode} \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} \IfFormatAtLeastTF{2025-06-01}{}{% @@ -5086,7 +8336,7 @@ % \end{macro} % \end{macro} -% \begin{macro}{\@themark} +% \begin{macro}[internal]{\@themark} % This is where the marks information is stored. % \begin{macrocode} \def\@themark{{}{}{}{}} @@ -5107,7 +8357,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\@markextra} +% \begin{macro}[internal]{\@markextra} % Internal macro to store the extra marks in the marks storage.\\ % Note: Put \texttt{\#1\#2} in toks register. % \begin{macrocode} @@ -5115,9 +8365,9 @@ \unrestored@protected@xdef\@themark{\the\@temptokena{#5}{#6}}} % \end{macrocode} % \end{macro} -% \changes{extramarks v4.5}{2024/11/30}{Add commands +% \changes{extramarks-v4 v4.5}{2024/11/30}{Add commands % \cs{extramarksleft} and \cs{extramarksright} for compatibility with -% \Package{extramarks} version 5.} +% \pkg{extramarks} version 5.} % \begin{macro}{\extramarksleft} % This command is used to define the left extra mark. % As this is not independent from the other marks, it is not perfect. @@ -5132,7 +8382,7 @@ \if@nobreak\ifvmode\nobreak\fi\fi} % \end{macrocode} % \end{macro} -% \begin{macro}{\@extramarksleft} +% \begin{macro}[internal]{\@extramarksleft} % Internal macro to store the left mark in the marks storage.\\ % Note: Put \texttt{\#1\#2} and \texttt{\#4}in toks registers. % \begin{macrocode} @@ -5155,7 +8405,7 @@ \if@nobreak\ifvmode\nobreak\fi\fi} % \end{macrocode} % \end{macro} -% \begin{macro}{\@extramarksright} +% \begin{macro}[internal]{\@extramarksright} % Internal macro to store the right mark in the marks storage.\\ % Note: Put \texttt{\#1\#2\#3} in toks register. % \begin{macrocode} @@ -5201,8 +8451,8 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\@tleftxmark} -% \begin{macro}{\@rightxmark} +% \begin{macro}[internal]{\@tleftxmark} +% \begin{macro}[internal]{\@rightxmark} % Internal macros to extract the extra marks out of the marks storage. % \begin{macrocode} \def\@leftxmark#1#2#3#4{#3} @@ -5211,25 +8461,25 @@ % \end{macro} % \end{macro} % -%</extramarks> +%</extramarks-v4> % -% \section{fancyheadings.sty} +% \section{\pkg{fancyheadings.sty}} % % Fancyheadings.sty was the original style file (as they were called % then) to implement fancy headers and footers in \LaTeX. This was in the time % when MSDOS was stil quite a dominant ``Operating System''. It had a % nasty property (amongst others): filenames consisted of at most 8 % characters + a 3 character extension. This meant that the name -% '\texttt{fancyheadings.sty}' was internally truncated in MSDOS to -% '\texttt{fancyhea.sty}', although it was perfectly OK to say -% 'fancyheadings' in \LaTeX. However, some people started to write also -% 'fancyhea' in \LaTeX{} documents, which made them unportable to for +% '\pkg{fancyheadings.sty}' was internally truncated in MSDOS to +% '\pkg{fancyhea.sty}', although it was perfectly OK to say +% '\pkg{fancyheadings}' in \LaTeX. However, some people started to write also +% '\pkg{fancyhea}' in \LaTeX{} documents, which made them unportable to for % example Unix systems, unless there a copy or link was made to -% 'fancyhea.sty'. I found this so annoying that I decided to rename the -% package to 'fancyhdr.sty'. This package has evolved to a version that -% is incompatible with the original 'fancyheadings'. Fancyheadings +% '\pkg{fancyhea.sty}'. I found this so annoying that I decided to rename the +% package to '\pkg{fancyhdr.sty}'. This package has evolved to a version that +% is incompatible with the original '\pkg{fancyheadings}'. \pkg{Fancyheadings} % should no longer be used, therefore this package is provided that -% issues a clear warning and then switches to fancyhdr. +% issues a clear warning and then switches to \pkg{fancyhdr}. % % %<*fancyheadings> @@ -5250,7 +8500,7 @@ \RequirePackage{fancyhdr} % \end{macrocode} %</fancyheadings> -% +% \end{implementation} % % \Finale \endinput diff --git a/Master/texmf-dist/source/latex/fancyhdr/fancyhdr.ins b/Master/texmf-dist/source/latex/fancyhdr/fancyhdr.ins index c6013955926..e0c1e07ae1d 100644 --- a/Master/texmf-dist/source/latex/fancyhdr/fancyhdr.ins +++ b/Master/texmf-dist/source/latex/fancyhdr/fancyhdr.ins @@ -12,7 +12,7 @@ %% 2005/12/01 or later. %% -\input docstrip.tex +\input l3docstrip.tex \keepsilent \usedir{tex/latex/fancyhdr} @@ -37,6 +37,7 @@ and version 1.3 or later is part of all distributions of LaTeX version \generate{\file{fancyhdr.sty}{\from{\jobname.dtx}{fancyhdr}}} \generate{\file{fancyheadings.sty}{\from{\jobname.dtx}{fancyheadings}}} \generate{\file{extramarks.sty}{\from{\jobname.dtx}{extramarks}}} +\generate{\file{extramarks-v4.sty}{\from{\jobname.dtx}{extramarks-v4}}} \obeyspaces \Msg{*************************************************************} diff --git a/Master/texmf-dist/source/latex/ffcode/ffcode.dtx b/Master/texmf-dist/source/latex/ffcode/ffcode.dtx index 6580579335c..04763c436e1 100644 --- a/Master/texmf-dist/source/latex/ffcode/ffcode.dtx +++ b/Master/texmf-dist/source/latex/ffcode/ffcode.dtx @@ -1,7 +1,7 @@ % \iffalse meta-comment % (The MIT License) % -% Copyright (c) 2021-2024 Yegor Bugayenko +% Copyright (c) 2021-2025 Yegor Bugayenko % % Permission is hereby granted, free of charge, to any person obtaining a copy % of this software and associated documentation files (the 'Software'), to deal @@ -50,7 +50,7 @@ %<package>\NeedsTeXFormat{LaTeX2e} %<package>\ProvidesPackage{ffcode} %<*package> -[2024-03-23 0.9.3 Fixed Font Code] +[2025/01/05 0.10.1 Fixed Font Code] %</package> %<*driver> \documentclass{ltxdoc} @@ -107,8 +107,17 @@ % \end{document} % \end{docshot} +% \DescribeMacro{\ffinput} +% There is also |\ffinput| command that reads the content from a file +% and places it into the document, formatted exactly the same way as +% it would be, if the |ffcode| environment would be used. + % \section{Package Options} +% \DescribeMacro{samepage} +% If you want to avoid page breaks inside |ffcode| blocks, use the |samepage| +% package option. + % \DescribeMacro{noframes} % If you want to omit the light gray frames around |\ff| % texts, use the package option |noframes|. @@ -226,12 +235,14 @@ % \changes{v0.7.0}{2021/11/28}{Package option \texttt{bold} added, to make all \texttt{\char`\\ff} pieces look bolder than usual.} % \changes{v0.7.0}{2021/11/28}{Package option \texttt{sf} added, to make all \texttt{\char`\\ff} pieces be printed as \texttt{\char`\\sffamily}.} % \changes{v0.9.2}{2024/02/04}{All lengths and sizes are in "em" instead of "pt".} +% \changes{v0.10.0}{2025/01/02}{Package option \texttt{samepage} added, to keep all \texttt{ffcode} blocks on the same page.} % \begin{macrocode} \RequirePackage{pgfopts} \pgfkeys{ /ff/.cd, bold/.store in=\ff@bold, sf/.store in=\ff@sf, + samepage/.store in=\ff@samepage, noframes/.store in=\ff@noframes, nonumbers/.store in=\ff@nonumbers, nobars/.store in=\ff@nobars, @@ -241,10 +252,14 @@ \ProcessPgfPackageOptions{/ff} % \end{macrocode} +% Then, we include the \href{https://ctan.org/pkg/xcolor}{xcolor} package: +% \begin{macrocode} +\RequirePackage{xcolor} +% \end{macrocode} + % Then, we configure the \href{https://ctan.org/pkg/listings}{listings} package: % \changes{v0.9.0}{2024/01/09}{The \texttt{minted} package is replaced by the \texttt{listings} package.} % \begin{macrocode} -\RequirePackage{xcolor} \RequirePackage{listings} \makeatletter % See \href{https://tex.stackexchange.com/questions/706858}{the explanation}: @@ -252,28 +267,50 @@ \makeatother % \end{macrocode} +% Then, we define a supplementary command \texttt{\char`\\ff@set}: +% \begin{macrocode} +\makeatletter +\newcommand\ff@set[1]{ + \lstset{breaklines} + \lstset{escapeinside={(*@}{@*)}} + \lstset{basicstyle={\ttfamily}} + \lstset{columns=fullflexible} + \ifdefined\ff@nonumbers\else + \lstset{numbers=left,numbersep=.8em,numberstyle={\tiny\sffamily\color{gray}}} + \fi + \ifdefined\ff@nobars\else + \lstset{frame=leftline,framerule=.05em,rulecolor={\color{gray}}} + \fi + \ifdefined\ff@nocn\else + \lstset{firstnumber=last} + \fi + \lstset{#1} +} +\makeatother +% \end{macrocode} + % \begin{macro}{ffcode} % Then, we define the |ffcode| environment and its supplementary |ffcode*| counterpart: % \begin{macrocode} \makeatletter \lstnewenvironment{ffcode}[1][] - { - \lstset{breaklines} - \lstset{escapeinside={(*@}{@*)}} - \lstset{basicstyle={\ttfamily}} - \lstset{columns=fullflexible} - \ifdefined\ff@nonumbers\else - \lstset{numbers=left,numbersep=.8em,numberstyle={\tiny\sffamily\color{gray}}} - \fi - \ifdefined\ff@nobars\else - \lstset{frame=leftline,framerule=.05em,rulecolor={\color{gray}}} - \fi - \ifdefined\ff@nocn\else - \lstset{firstnumber=last} - \fi - \lstset{#1} - } - {} + {\ff@set{#1}\ifdefined\ff@samepage\noindent\minipage{\linewidth}\fi} + {\ifdefined\ff@samepage\endminipage\fi} +\makeatother +% \end{macrocode} +% \end{macro} + +% \begin{macro}{ffcode} +% Then, we define the \texttt{\char`\\ffinput} command: +% \changes{v0.10.0}{2024/12/29}{The \texttt{\char`\\ffinput} command added.} +% \begin{macrocode} +\makeatletter +\newcommand\ffinput[2][]{% + \ff@set{#1}% + \ifdefined\ff@samepage\noindent\minipage{\linewidth}\fi% + \lstinputlisting[#1]{#2}% + \ifdefined\ff@samepage\endminipage\fi% +} \makeatother % \end{macrocode} % \end{macro} diff --git a/Master/texmf-dist/source/latex/ffcode/ffcode.ins b/Master/texmf-dist/source/latex/ffcode/ffcode.ins index 4e64b55d739..286683c1213 100644 --- a/Master/texmf-dist/source/latex/ffcode/ffcode.ins +++ b/Master/texmf-dist/source/latex/ffcode/ffcode.ins @@ -1,6 +1,6 @@ %% (The MIT License) %% -%% Copyright (c) 2021-2024 Yegor Bugayenko +%% Copyright (c) 2021-2025 Yegor Bugayenko %% %% Permission is hereby granted, free of charge, to any person obtaining a copy %% of this software and associated documentation files (the 'Software'), to deal @@ -26,7 +26,7 @@ \preamble (The MIT License) -Copyright (c) 2021-2024 Yegor Bugayenko +Copyright (c) 2021-2025 Yegor Bugayenko Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal diff --git a/Master/texmf-dist/source/latex/kdpcover/kdpcover.dtx b/Master/texmf-dist/source/latex/kdpcover/kdpcover.dtx index da1ab39d4d3..c8a668bb207 100644 --- a/Master/texmf-dist/source/latex/kdpcover/kdpcover.dtx +++ b/Master/texmf-dist/source/latex/kdpcover/kdpcover.dtx @@ -1,7 +1,7 @@ % \iffalse meta-comment % (The MIT License) % -% Copyright (c) 2021-2022 Yegor Bugayenko +% Copyright (c) 2021-2024 Yegor Bugayenko % % Permission is hereby granted, free of charge, to any person obtaining a copy % of this software and associated documentation files (the 'Software'), to deal @@ -50,7 +50,7 @@ %<class>\NeedsTeXFormat{LaTeX2e} %<class>\ProvidesClass{kdpcover} %<*class> -[2022.11.30 0.5.1 Cover for Kindle Direct Publishing books] +[2025/01/02 0.6.0 Cover for Kindle Direct Publishing books] %</class> %<*driver> \documentclass{ltxdoc} @@ -91,7 +91,7 @@ % \begin{document} % \putSpine{kdpcover, a LaTeX class for KDP books} % \putVolume{1} -% \putVersion{0.5.1} +% \putVersion{0.6.0} % \putPrice{\$0.00} % \putCopyright{\the\year}{Yegor Bugayenko} % \putTitle{kdpcover} @@ -245,41 +245,53 @@ % Then, we define a few internal commands: % \begin{macrocode} \makeatletter -\newcommand*\kdp@pages{100} +\newcount\kdp@pages + \kdp@pages=100 \newlength\kdp@xsize -\setlength\kdp@xsize{6in} + \setlength\kdp@xsize{6in} \newlength\kdp@ysize -\setlength\kdp@ysize{9in} + \setlength\kdp@ysize{9in} \makeatother % \end{macrocode} -% Then, we include |iexec| for being able to execute |qpdf|: +% Then, we include |iexec| for being able to execute |qpdf| and |git|: % \begin{macrocode} \RequirePackage{iexec} % \end{macrocode} -% Then, we parse class options: +% Then, we parse class options with the help of the |pgfopts| package: % \begin{macrocode} -\RequirePackage{xkeyval} +\RequirePackage{pgfopts} \makeatletter -\DeclareOptionX{6x9} - {\setlength\kdp@xsize{6in}\setlength\kdp@ysize{9in}} -\DeclareOptionX{7x10} - {\setlength\kdp@xsize{7in}\setlength\kdp@ysize{10in}} -\DeclareOptionX{8x10} - {\setlength\kdp@xsize{8in}\setlength\kdp@ysize{10in}} -\DeclareOptionX{pages} - {\renewcommand*\kdp@pages{#1}} -\newif\ifkdp@barless -\DeclareOptionX{barless}{\kdp@barlesstrue} -\DeclareOptionX{pdf}{% - \iexec[trace,quiet,stdout=kdpcover-pages-count.txt] - {qpdf --show-npages #1 | tr -d '[[:space:]]' | \{ cat; echo \%; \}}% - \newread\kdp@pagescount% - \openin\kdp@pagescount=kdpcover-pages-count.txt - \read\kdp@pagescount to \kdp@pages% +\pgfkeys{ + /kdp/.cd, + barless/.store in = \kdp@barless, + pdf/.code = { + \iexec[trace,quiet,stdout=kdpcover-pages-count.txt] + {qpdf --show-npages --no-warn #1 | tr -d '[[:space:]]'} + \openin1=kdpcover-pages-count.txt + \read1 to \temp + \closein1 + \kdp@pages=\temp + }, + 6x9/.code = { + \setlength\kdp@xsize{6in} + \setlength\kdp@ysize{9in} + }, + 7x10/.code = { + \setlength\kdp@xsize{7in} + \setlength\kdp@ysize{10in} + }, + 8x10/.code = { + \setlength\kdp@xsize{8in} + \setlength\kdp@ysize{10in} + }, + pages/.code = { + \kdp@pages=#1 + } } -\ProcessOptionsX\relax\makeatother +\ProcessPgfPackageOptions{/kdp} +\makeatother % \end{macrocode} % Then, we include a few useful packages: @@ -298,20 +310,20 @@ \setstretch{1.2} % \end{macrocode} -% Then, we set calculate size. +% Then, we calculate size. % The height of the page is 9 inches plus 0.125 "bleed" on top and % on the bottom, see \href{https://kdp.amazon.com/en_US/help/topic/G201953020}{this}. % The width is 6 inches plus 0.125 "bleed" on each side. The width of the % "spine" depends on the amount of pages in the book. % \begin{macrocode} \makeatletter - \newlength\kdp@height +\newlength\kdp@height \setlength\kdp@height{0.125in + \kdp@ysize + 0.125in} - \newlength\kdp@width +\newlength\kdp@width \setlength\kdp@width{ 0.125in + \kdp@xsize - + 0.0025in * \kdp@pages - + \kdp@xsize + 0.125in} + + 0.125in + \kdp@xsize + + 0.0025in * \kdp@pages} \makeatother % \end{macrocode} @@ -319,8 +331,14 @@ % \begin{macrocode} \RequirePackage{geometry} \makeatletter -\geometry{paperwidth=\kdp@width,paperheight=\kdp@height, - left=0pt,right=0pt,top=0pt,bottom=0pt} +\geometry{ + paperwidth=\kdp@width, + paperheight=\kdp@height, + left=0pt, + right=0pt, + top=0pt, + bottom=0pt +} \makeatother % \end{macrocode} @@ -333,8 +351,9 @@ % \begin{macro}{\putSpine} % Then, we define |\putSpine|: % \begin{macrocode} -\makeatletter\newcommand\putSpine[2][kdpcover-signature]{% - \ifkdp@barless\else +\makeatletter +\newcommand\putSpine[2][kdpcover-signature]{% + \ifdefined\kdp@barless\else% \begin{textblock}{2.4}[0.5,0](8,0)% \begin{tikzpicture}% \node [rectangle, inner sep=0em, fill=black, @@ -342,19 +361,20 @@ minimum height=16\TPVertModule] at (0,0) {}; \end{tikzpicture}% \end{textblock}% - \fi + \fi% \begin{textblock}{1}[0.5,0](8,2)% \begin{tikzpicture}% \node [color=white, inner sep=0cm, outer sep=0cm, rotate=270, minimum height=\TPHorizModule] at (0,0) { - \Large #2 - };% + \Large #2% + }; \end{tikzpicture}% \end{textblock}% \begin{textblock}{2.4}[0.5,1](8,14)% \centerline{\includegraphics[width=0.32in]{#1}}% \end{textblock}% -}\makeatother +} +\makeatother % \end{macrocode} % \end{macro} @@ -374,8 +394,8 @@ % \begin{macrocode} \newcommand\putVolume[1]{% \begin{textblock}{2}[1,1](15,14)% - \raggedleft - \includegraphics[height=0.4in]{kdpcover-vol-#1} + \raggedleft% + \includegraphics[height=0.4in]{kdpcover-vol-#1}% \end{textblock}% } % \end{macrocode} @@ -386,7 +406,7 @@ % \begin{macrocode} \newcommand\putPrice[1]{% \begin{textblock}{4}[0,1](1,2)% - \small #1 + \small #1% \end{textblock}% } % \end{macrocode} @@ -397,7 +417,7 @@ % \begin{macrocode} \newcommand\putBack[1]{% \begin{textblock}{5}[0,0](1,3)% - \small #1 + \small #1% \end{textblock}% } % \end{macrocode} @@ -408,7 +428,7 @@ % \begin{macrocode} \newcommand\putTitle[1]{% \begin{textblock}{5}(10,9)% - \fontsize{32}{32}\selectfont #1 + \fontsize{32}{32}\selectfont #1% \end{textblock}% } % \end{macrocode} @@ -419,7 +439,7 @@ % \begin{macrocode} \newcommand\putAuthor[1]{% \begin{textblock}{4}(10,10)% - \large by #1 + \large by #1% \end{textblock}% } % \end{macrocode} @@ -430,7 +450,7 @@ % \begin{macrocode} \newcommand\putTLDR[1]{% \begin{textblock}{5}(10,11)% - TL;DR #1 + TL;DR #1% \end{textblock}% } % \end{macrocode} @@ -441,10 +461,10 @@ % \begin{macrocode} \newcommand\putVersion[1]{% \begin{textblock}{4}[0,1](10,14)% - #1 + #1% \IfFileExists{.git} {\quad\iexec{git log -n 1 --pretty='format:\%ad' --date='format:\%e-\%b-\%Y'}} - {} + {}% \end{textblock}% } % \end{macrocode} @@ -455,8 +475,8 @@ % \begin{macrocode} \newcommand\putCopyright[2]{% \begin{textblock}{4}[0,1](1,14)% - \small (c) - #1 #2 + \small (c)% + #1 #2% \end{textblock}% } % \end{macrocode} @@ -471,6 +491,7 @@ \setlength\parskip{0pt}% \interfootnotelinepenalty=10000% } +\endinput % \end{macrocode} % \Finale diff --git a/Master/texmf-dist/source/latex/kdpcover/kdpcover.ins b/Master/texmf-dist/source/latex/kdpcover/kdpcover.ins index 64a5d011068..8fafd2220e8 100644 --- a/Master/texmf-dist/source/latex/kdpcover/kdpcover.ins +++ b/Master/texmf-dist/source/latex/kdpcover/kdpcover.ins @@ -1,6 +1,6 @@ %% (The MIT License) %% -%% Copyright (c) 2021-2022 Yegor Bugayenko +%% Copyright (c) 2021-2024 Yegor Bugayenko %% %% Permission is hereby granted, free of charge, to any person obtaining a copy %% of this software and associated documentation files (the 'Software'), to deal @@ -26,7 +26,7 @@ \preamble (The MIT License) -Copyright (c) 2021-2022 Yegor Bugayenko +Copyright (c) 2021-2024 Yegor Bugayenko Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal diff --git a/Master/texmf-dist/source/latex/scripture/scripture.dtx b/Master/texmf-dist/source/latex/scripture/scripture.dtx index f4a4f6c6a08..e30de58de4f 100644 --- a/Master/texmf-dist/source/latex/scripture/scripture.dtx +++ b/Master/texmf-dist/source/latex/scripture/scripture.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (c) 2022-2023 David Purton <dcpurton@marshwiggle.net> +% Copyright (c) 2022-2025 David Purton <dcpurton@marshwiggle.net> % % This work may be distributed and/or modified under the conditions of % the LaTeX Project Public License, either version 1.3c of this license @@ -11,8 +11,24 @@ % version 2005/12/01 or later. % %<*driver> -\DocumentMetadata{} +\DocumentMetadata{lang=en} \documentclass[a4paper]{l3doc} +\usepackage[bidi=basic, layout=lists]{babel} +\babelprovide[import, main]{australian} +\babelprovide[import, onchar=ids fonts]{ancientgreek} +\babelprovide[import, onchar=ids fonts]{japanese} +\babelprovide[import, mapdigits, onchar=ids fonts]{persian} +\babelfont[ancientgreek]{rm}[BoldFont=NewCM10-Bold]{NewCM10-Regular} +\babelfont[ancientgreek]{tt}{NewCMMono10-Regular} +\babelfont[japanese]{tt}[Scale=.9]{IPAMincho} +\babelfont[persian]{rm}[Renderer = Harfbuzz]{Amiri} +\babelfont[persian]{tt}[Renderer = Harfbuzz, Scale=.75]{Kawkab Mono Regular} +\usepackage{luatexja-fontspec} +\newcommand{\disablecjk}{% + \ltjsetparameter{jacharrange={-1, -2, -3, -4, -5, -6, -7, -8, -9}}} +\newcommand{\enablecjk}{% + \ltjsetparameter{jacharrange={-1, +2, +3, -4, -5, +6, +7, -8, +9}}} +\disablecjk \usepackage[parindent=1em]{scripture} \usepackage[skins]{tcolorbox} \newtcolorbox{scriptureexample}[1][]{% @@ -31,6 +47,12 @@ } \ExplSyntaxOn \makeatletter +\hook_gput_code:nnn + { env / scripture / begin } + { scripturedoc } + { + \cs_set_eq:NN \list \__codedoc_oldlist:nn + } \cs_new_protected:Npn \__dcp_codedoc_environment_index:n #1 { \@bsphack @@ -129,12 +151,20 @@ } \DeclareDocumentEnvironment { environment } { O{} +v } { + \clist_map_inline:nn { #2 } + { + \MakeLinkTarget*{environment##1} + } \cs_set_eq:NN \__codedoc_function_index:n \__dcp_codedoc_environment_index:n \__codedoc_function:nnw {#1} {#2} } { \__codedoc_function_end: } \DeclareDocumentEnvironment { hooks } { O{} +v } { + \clist_map_inline:nn { #2 } + { + \MakeLinkTarget*{hook##1} + } \bool_if:NTF \l__codedoc_in_implementation_bool { \cs_set_eq:NN \__codedoc_macro_index:nN \__dcp_codedoc_hookmacro_index:nN @@ -153,6 +183,10 @@ \DeclareDocumentEnvironment { option } { O{} +v } { \cs_set_eq:NN \__codedoc_function_index:n \SpecialOptionIndex + \clist_map_inline:nn { #2 } + { + \MakeLinkTarget*{option##1} + } \__codedoc_function:nnw {#1} {#2} } { \__codedoc_function_end: } @@ -162,17 +196,35 @@ \__codedoc_macro:nnw {#1} {#2} } { \__codedoc_macro_end: } +\DeclareDocumentEnvironment { function } { O{} +v } + { + \clist_map_inline:nn { #2 } + { + \MakeLinkTarget*{function##1} + } + \__codedoc_function:nnw {#1} {#2} + } + { \__codedoc_function_end: } +\DeclareDocumentCommand \env { m } + { + \hyperlink{environment#1}{\texttt{#1}} + } \DeclareDocumentCommand \opt { m } { - \SpecialOptionIndex {#1} - \texttt{#1} + \hyperlink{option#1}{\texttt{#1}} } \DeclareDocumentCommand \hook { m } { - \__dcp_codedoc_hook_index:n {#1} - \texttt {#1} + \hyperlink{hook#1}{\texttt{#1}} } \DeclareRobustCommand \val {\texttt} +\DeclareDocumentCommand \fn { O{} m } + { + \hyperlink{function \c_backslash_str #2}{ + \__codedoc_cmd:no + { module = scripture , replace = false , #1 } + { \c_backslash_str #2} } + } \makeatother \ExplSyntaxOff \begin{document} @@ -185,13 +237,14 @@ % \changes{v1.1}{2022/08/27}{Bug fixes} % \changes{v1.2}{2022/11/02}{Bug fixes} % \changes{v1.3}{2023/01/08}{Bug fixes} -% \changes{v2.0}{2023/12/26}{Switch \env{scripture} to a \LaTeX{} \env{list} +% \changes{v2.0}{2023/12/26}{Switch \env{scripture} to a \LaTeX{} \val{list} % based environment} % \changes{v2.0}{2023/12/27}{Bug fixes} +% \changes{v2.1}{2025/01/02}{Bug fixes} % % \title{The \pkg{scripture} package} % \author{David Purton\thanks{Email: \url{dcpurton@marshwiggle.net}}} -% \date{2023/12/27 v2.0} +% \date{2025/01/02 v2.1} % % \maketitle % @@ -231,19 +284,24 @@ % % \subsection{Limitations} % -% The \pkg{scripture} package makes extensive use of \LaTeX{} \env{list} +% The \pkg{scripture} package makes extensive use of \LaTeX{} \val{list} % environments and the \cs{parshape} command. This means there are some % limitations. In particular, you should not: % \begin{itemize} % \item Nest the \env{scripture} environment or any of its internal % environments. % \item Modify the \cs{parshape} within a \env{scripture} environment. -% \item Include any other \env{list} based environment within a +% \item Include any other \val{list} based environment within a % \env{scripture} environment. +% \item Include any \cs{section} (or similar) functions within the +% \env{scripture} environment. A simple \fn{heading} function is provided +% instead. % \end{itemize} % % The \env{poetry} environment uses \cs{obeylines}. This means that it can not -% be placed in the argument of a macro. +% be placed in the argument of a macro. If you want to use the \env{poetry} +% environment in a \pkg{beamer} slide, you must use the \texttt{fragile} option +% for the \pkg{beamer} \val{frame} environment. % % Some attempt is made to encourage appropriate page breaks, especially just % before a reference is added to a quotation, but this can still sometimes @@ -271,7 +329,7 @@ % for my salvation is close at hand % and my righteousness will soon be revealed. % -% \vs{2}Blessed is the one who does this--- +% \vs{2}Blessed is the one who does this~-- % the person who holds it fast, % % who keeps the Sabbath without desecrating it, @@ -291,7 +349,7 @@ % for my salvation is close at hand % and my righteousness will soon be revealed. % -% \vs{2}Blessed is the one who does this--- +% \vs{2}Blessed is the one who does this~-- % the person who holds it fast, % % who keeps the Sabbath without desecrating it, @@ -310,7 +368,7 @@ % |\added|\marg{words} % \end{syntax} % Some Bible translations mark out words added for clarity not found in the -% original language (e.g., in italics). This can be done using the \cs{added} +% original language (e.g., in italics). This can be done using the \fn{added} % function. The font and format can be set using the \opt{added/font} and % \opt{added/format} options. % \end{function} @@ -337,14 +395,16 @@ % % \begin{function}{\ch, \ch*} % \begin{syntax} -% |\ch|\marg{chapter number} -% |\ch*|\marg{chapter number} +% |\ch|\oarg{letter}\marg{chapter number} +% |\ch*|\oarg{letter}\marg{chapter number} % \end{syntax} % Format a chapter number. By default these are formatted using drop text % taking up two lines and the text is separated from the chapter number by a -% horizontal space of 0.5\,em. +% horizontal space of 0.5\,em. The drop text is aligned to the top of +% \meta{letter} which defaults to the value of \opt{chapter/xchar}, which in +% turn defaults to a capital \val{X} in the default font. % -% If the \opt{dropchap} option is \val{true} (default), then this function +% If the \opt{chapter/drop} option is \val{true} (default), then this function % attempts to add sufficient space for the dropped chapter when its % paragraph contains only one line. The starred version suppresses this % behaviour. @@ -443,6 +503,69 @@ % \end{scripture} % \end{scriptureexample} % +% \changes{v2.1}{2024/11/19}{Add feature to insert simple headings} +% \changes{v2.1}{2024/11/19}{Add \fn{heading} function} +% \begin{function}[added=2024-11-19]{\heading} +% \begin{syntax} +% |\heading|\marg{section heading} +% \end{syntax} +% The \fn{heading} function provides a simple section heading command for +% use within the \env{scripture} environment. Only one level is heading is +% provided. Further levels should be placed outside of the \env{scripture} +% environment. Additionally, the \fn{heading} function may not be used +% within a \env{scripture} inner environment. +% +% The settings of headings can be controlled using the following options: +% \begin{itemize} +% \item \opt{heading/aboveskip} +% \item \opt{heading/afterindent} +% \item \opt{heading/align} +% \item \opt{heading/belowskip} +% \item \opt{heading/font} +% \item \opt{heading/format} +% \item \opt{heading/hide} +% \item \opt{heading/show} +% \end{itemize} +% +% \noindent\textbf{Notes:} +% \begin{itemize} +% \item \cs{section} and related functions are not supported within the +% \env{scripture} environment. +% \item The \fn{heading} function is ignored when the \opt{inline} option +% is \val{true}. +% \end{itemize} +% \end{function} +% +% \begin{scriptureexample} +% \begin{verbatim} +% \begin{scripture}[Luke 21:5–6] +% \heading{Signs of the End of the Age} +% +% \vs{5}Some of his disciples were remarking +% about how the temple was adorned with beautiful +% stones and with gifts dedicated to God. But +% Jesus said, \vs{6}``As for what you see here, +% the time will come when not one stone will be +% left on another; every one of them will be +% thrown down.'' +% \end{scripture} +% \end{verbatim} +% +% \tcblower +% +% \begin{scripture}[Luke 21:5–6] +% \heading{Signs of the End of the Age} +% +% \vs{5}Some of his disciples were remarking +% about how the temple was adorned with beautiful +% stones and with gifts dedicated to God. But +% Jesus said, \vs{6}``As for what you see here, +% the time will come when not one stone will be +% left on another; every one of them will be +% thrown down.'' +% \end{scripture} +% \end{scriptureexample} +% % \changes{v1.2}{2022/09/01}{Add divine name feature} % \begin{function}[added=2022-09-01]{\name, \LORD, \GOD} % \begin{syntax} @@ -451,13 +574,13 @@ % |\GOD| % \end{syntax} % Modern Bible translations frequently represent God's personal divine name -% using a small capitals typeface. This can be done using the \cs{name} +% using a small capitals typeface. This can be done using the \fn{name} % function. The font and format can be set using the \opt{name/font} and -% \opt{name/format} options. The \cs{LORD} and \cs{GOD} macros equivalent to -% \cs{name}|{Lord}| and \cs{name}|{God}| respectively. +% \opt{name/format} options. The \fn{LORD} and \fn{GOD} macros equivalent to +% \fn{name}|{Lord}| and \fn{name}|{God}| respectively. % -% \textbf{Note:} Watch out that trailing spaces are not eaten by \cs{LORD} -% and \cs{GOD}. Using \cs{name} is safer and semantically better. +% \textbf{Note:} Watch out that trailing spaces are not eaten by \fn{LORD} +% and \fn{GOD}. Using \fn{name} is safer and semantically better. % \end{function} % % \begin{scriptureexample} @@ -486,12 +609,12 @@ % \end{scripture} % \end{scriptureexample} % -% \changes{v1.3}{2022/11/13}{Add \cs{nofirstverse} function} +% \changes{v1.3}{2022/11/13}{Add \fn{nofirstverse} function} % \begin{function}[added=2022-11-13]{\nofirstverse} % \begin{syntax} % |\nofirstverse| % \end{syntax} -% When \opt{verse/first} is |true|, this causes the next \cs{vs} to print +% When \opt{verse/first} is |true|, this causes the next \fn{vs} to print % normally, rather than using the format specified by % \opt{verse/firstformat}. You might do this if your quote begins half way % through a paragraph and the first verse should be printed normally. @@ -540,18 +663,29 @@ % \end{scripture} % \end{scriptureexample} % +% \changes{v2.1}{2024/01/18}{Add \fn{nopilcrow} function} +% \begin{function}[added=2024-01-18]{\nopilcrow} +% \begin{syntax} +% |\nopilcrow| +% \end{syntax} +% When \opt{pilcrow} is |true|, this causes the next pilcrow that would +% normally by printed to be suppressed. You might do this if your quote +% begins half way through a paragraph and so should not be marked with a +% pilcrow. +% \end{function} +% % \changes{v1.2}{2022/08/31}{Add red letter feature} % \begin{function}[added=2022-08-31]{\redletteron, \redletteroff} % \begin{syntax} % |\redletteron| % |\redletteroff| % \end{syntax} -% Use \cs{redletteron} and \cs{redletteroff} to mark the beginning and end +% Use \fn{redletteron} and \fn{redletteroff} to mark the beginning and end % of sections of text that should be attributed to Jesus speaking. Some % attempt is made to ensure that the correct colour continues after an inner -% environment if \cs{redletteron} or \cs{redletteroff} occurs inside the +% environment if \fn{redletteron} or \fn{redletteroff} occurs inside the % inner environment. If you experience problems with unexpected colour, try -% to ensure that matching \cs{redletteron} and \cs{redletteroff} marks occur +% to ensure that matching \fn{redletteron} and \fn{redletteroff} marks occur % at the same group level. The colour of the text can be set using the % \opt{redletter/colour} option. These commands only have an effect when the % \opt{redletter} option is \val{true}. @@ -595,16 +729,15 @@ % \end{scripture} % \end{scriptureexample} % -% \changes{v1.1}{2022/08/07}{Add \cs{scripturecurrentchapter} and -% \cs{scripturecurrentverse} variables} -% \begin{function}[added=2022-08-07]{\scripturecurrentchapter, -% \scripturecurrentverse} +% \changes{v1.1}{2022/08/07}{Add \fn{scripturecurrentchapter} and +% \fn{scripturecurrentverse} variables} +% \begin{function}[added=2022-08-07]{\scripturecurrentchapter, \scripturecurrentverse} % \begin{syntax} % |\scripturecurrentchapter| % |\scripturecurrentverse| % \end{syntax} -% \cs{scripturecurrentcapter} and \cs{scripturecurrentverse} globally hold -% the most recent values parsed to \cs{ch} and \cs{vs}. They can initialised +% \fn{scripturecurrentchapter} and \fn{scripturecurrentverse} globally hold +% the most recent values parsed to \fn{ch} and \fn{vs}. They can initialised % with \cs{renewcommand*} if required and could be used in hooks, for % example. % \end{function} @@ -617,7 +750,7 @@ % supported formatting \meta{|options|}. % \end{function} % -% \changes{v2.0}{2023/12/27}{Add \cs{scripturestyle} function} +% \changes{v2.0}{2023/12/27}{Add \fn{scripturestyle} function} % \begin{function}[added=2023/12/27]{\scripturestyle, \scripturestyle*} % \begin{syntax} % |\scripturestyle|\marg{name}\marg{options} @@ -628,7 +761,7 @@ % \meta{|options|} to an existing style rather than overwriting all options. % \end{function} % -% \changes{v1.1}{2022/07/29}{Add \cs{selah} function} +% \changes{v1.1}{2022/07/29}{Add \fn{selah} function} % \begin{function}[added=2022-07-29]{\selah} % \begin{syntax} % |\selah| @@ -659,7 +792,7 @@ % \end{scripture} % \end{scriptureexample} % -% \changes{v1.2}{2022/08/30}{Add \cs{textright} function} +% \changes{v1.2}{2022/08/30}{Add \fn{textright} function} % \begin{function}[added=2022-08-30]{\textright} % \begin{syntax} % |\textright|\marg{text} @@ -692,30 +825,31 @@ % \end{scripture} % \end{scriptureexample} % -% \changes{v1.3}{2023/01/07}{Add \cs{textscripture} function} +% \changes{v1.3}{2023/01/07}{Add \fn{textscripture} function} % \begin{function}[added=2023-01-07]{\textscripture} % \begin{syntax} % |\textscripture|\oarg{reference}\oarg{options}\marg{quotation} % \end{syntax} -% \cs{textscripture} sets an inline scripture quotation. The quotation is +% \fn{textscripture} sets an inline scripture quotation. The quotation is % surrounded be the values of \opt{inline/begin} and \opt{inline/end} which -% default to |``\,| and |\,''|, respectively. This function also sets the -% \opt{compact} option and places the \val{reference} inline. The reference -% format can be controlled using the following options: +% default to |``| and |''|, respectively. This function also sets the +% \opt{compact} option and places the \meta{\val{reference}} inline. The +% reference format can be controlled using the following options: % \begin{itemize} % \item \opt{inline/reference/format} % \item \opt{inline/reference/sep} % \item \opt{inline/version/delim} % \item \opt{inline/version/format} % \end{itemize} -% Other \val{reference} and \val{version} options are inherited. +% Other \meta{\val{reference}} and \meta{\opt{version}} options are +% inherited. % % This function is equivalent to using the \env{scripture} environment with % the \opt{inline} option. % % \textbf{Warning:} \cs{par} is redefined to \cs{relax} inside the -% \cs{textscripture} function. If you have anything other than expected -% macros and environments inside your \cs{textscripture} function \TeX{} +% \fn{textscripture} function. If you have anything other than expected +% macros and environments inside your \fn{textscripture} function \TeX{} % will likely get stuck in an infinite loop. % \end{function} % @@ -1058,18 +1192,17 @@ % % \changes{v1.1}{2022/08/07}{Add before and after hooks for verses and % chapters} -% \begin{hooks}[added=2022-08-07]{scripture/chap/before, scripture/chap/after, -% scripture/verse/before, scripture/verse/after} +% \begin{hooks}[added=2022-08-07]{scripture/chap/before, scripture/chap/after, scripture/verse/before, scripture/verse/after} % The following public hooks are available: % % \begin{description} % \item[\hook{scripture/chap/before}] This hook is executed immediately -% before the \opt{chap/font} is set for the chapter. +% before the \opt{chapter/font} is set for the chapter. % \item[\hook{scripture/chap/after}] This hook is executed immediately after -% the \opt{chap/sep} space is inserted. +% the \opt{chapter/sep} space is inserted. % \item[\hook{scripture/verse/before}] This hook is executed immediately % before the \opt{verse/font} is set for the verse. -% \item[\hook{scripture/chap/after}] This hook is executed immediately after +% \item[\hook{scripture/verse/after}] This hook is executed immediately after % the \opt{verse/sep} space is inserted. % \end{description} % \end{hooks} @@ -1140,11 +1273,11 @@ % \subsection{Options} % \label{options} % -% \changes{v1.3}{2023/01/08}{Remove \opt{reference/delim} option} +% \changes{v1.3}{2023/01/08}{Remove \texttt{reference/delim} option} % % Default formatting \meta{|options|} can be set using % \cs{usepackage}|[|\meta{|options|}|]{scripture}| or -% \cs{scripturesetup}|{|\meta{|options|}|}|. Local formatting \meta{|options|} +% \fn{scripturesetup}|{|\meta{|options|}|}|. Local formatting \meta{|options|} % can be set by passing them to the various environments described above. % % \begin{option}{aboveskip} @@ -1159,7 +1292,7 @@ % \begin{syntax} % added/font = \meta{font} \hfill Default: \emph{Empty} % \end{syntax} -% \meta{|font|} used for the \cs{added} function. +% \meta{|font|} used for the \fn{added} function. % \end{option} % % \changes{v1.3}{2022/11/15}{Add \opt{added/format} option} @@ -1168,8 +1301,25 @@ % added/format = \meta{macro} \hfill Default: \cs{emph}\{\#1\} % \end{syntax} % \meta{|macro|} used to format the words that should be highlighted as -% added by the translators using the \cs{added} function. |#1| contains the -% text of the argument to \cs{added}. +% added by the translators using the \fn{added} function. |#1| contains the +% text of the argument to \fn{added}. +% \end{option} +% +% \changes{v2.1}{2024/06/01}{Add \opt{after} option} +% \begin{option}[added=2024-06-01]{after} +% \begin{syntax} +% after = \meta{token list} \hfill Default: \emph{Empty} +% \end{syntax} +% Execute \meta{|token list|} at the end of the \env{scripture} environment. +% \end{option} +% +% \changes{v2.1}{2024/06/01}{Add \opt{before} option} +% \begin{option}[added=2024-06-01]{before} +% \begin{syntax} +% before = \meta{token list} \hfill Default: \emph{Empty} +% \end{syntax} +% Execute \meta{|token list|} at the beginning of the \env{scripture} +% environment. % \end{option} % % \begin{option}{belowskip} @@ -1179,6 +1329,17 @@ % \meta{|skip|} inserted below the \env{scripture} environment. % \end{option} % +% \changes{v2.1}{2024/12/30}{Add \opt{chapter/align} option} +% \begin{option}[added=2024-12-30]{chapter/align} +% \begin{syntax} +% chapter/align = left \textbar\ right\hfill Default: left +% \end{syntax} +% When \opt{chapter/align} is set to \val{right} a chapter will overlap to +% the left when \opt{chapter/nodrop} is set. +% +% See also \opt{chapter/valign}. +% \end{option} +% % \changes{v1.2}{2022/09/07}{Add \opt{chapter/colour} option} % \begin{option}[added=2022-09-07]{chapter/colour, chapter/color} % \begin{syntax} @@ -1203,7 +1364,7 @@ % \begin{syntax} % chapter/font = \meta{font} \hfill Default: \cs{bfseries} % \end{syntax} -% \meta{|font|} used for the \cs{ch} function. +% \meta{|font|} used for the \fn{ch} function. % \end{option} % % \changes{v1.1}{2022/07/28}{Add \opt{chapter/format} option} @@ -1283,11 +1444,74 @@ % \end{scripture} % \end{scriptureexample} % +% \changes{v2.1}{2024/01/05}{Add feature to set chapters in a paragraph of +% their own} +% \changes{v2.1}{2024/01/05}{Add \opt{chapter/para} option} +% \begin{option}[added=2024-01-05]{chapter/para} +% \begin{syntax} +% chapter/para = \meta{boolean} \hfill Default: false +% \end{syntax} +% Set chapters in their own paragraph. The spacing before and after the +% chapter heading can be set using the \opt{chapter/para/aboveskip} and +% \opt{chapter/para/belowskip} options. The value of \meta{|boolean|} is +% optional and assumed to be \val{true} if not present. +% \end{option} +% +% \begin{scriptureexample} +% \begin{verbatim} +% \begin{scripture}[John 1:1][chapter/para, +% chapter/format=CHAPTER~#1, version=KJV] +% \ch{1}In the beginning was the Word, and the +% Word was with God, and the Word was God. +% \end{scripture} +% \end{verbatim} +% +% \tcblower +% +% \begin{scripture}[John 1:1][chapter/para, +% chapter/format=CHAPTER~#1, version=KJV] +% \ch{1}In the beginning was the Word, and the +% Word was with God, and the Word was God. +% \end{scripture} +% \end{scriptureexample} +% +% \changes{v2.1}{2024/01/05}{Add \opt{chapter/para/aboveskip} option} +% \begin{option}[added=2024-01-05]{chapter/para/aboveskip} +% \begin{syntax} +% chapter/para/aboveskip = \meta{skip} \hfill Default: \cs{bigskipamount} +% \end{syntax} +% \meta{|skip|} added above \fn{ch} when \opt{chapter/para} is in effect. +% To be consistent with how the \pkg{parskip} package treats headings, no +% additional \cs{parskip} is inserted. +% \end{option} +% +% \changes{v2.1}{2024/01/05}{Add \opt{chapter/para/belowskip} option} +% \begin{option}[added=2024-01-05]{chapter/para/belowskip} +% \begin{syntax} +% chapter/para/belowskip = \meta{skip} \hfill Default: \cs{medskipamount} +% \end{syntax} +% \meta{|skip|} added below \fn{ch} when \opt{chapter/para} is in effect. +% To be consistent with how the \pkg{parskip} package treats headings, no +% additional \cs{parskip} is inserted. +% \end{option} +% +% \changes{v2.1}{2024/01/05}{Add \opt{chapter/para/indent} option} +% \begin{option}[added=2024-01-05]{chapter/para/indent} +% \begin{syntax} +% chapter/para/indent = \meta{boolean} \hfill Default: true +% \end{syntax} +% Whether to indent the line following a chapter heading when the +% \opt{chapter/para} option is set to \val{true}. This only has an effect in +% the \env{scripture}, \env{narrow} and \env{midparachap} environments. The +% value of \meta{|boolean|} is optional and assumed to be \val{true} if not +% present. +% \end{option} +% % \begin{option}{chapter/sep} % \begin{syntax} % chapter/sep = \meta{dimen} \hfill Default: 0.5em % \end{syntax} -% \meta{|dimen|} used to separate a \cs{ch} from the following text. +% \meta{|dimen|} used to separate a \fn{ch} from the following text. % \end{option} % % \changes{v1.1}{2022/08/15}{Add \opt{chapter/show} option} @@ -1305,7 +1529,7 @@ % \begin{syntax} % chapter/showverse = \meta{boolean} \hfill Default: false % \end{syntax} -% Whether \cs{vs}|\{1\}| should be automatically inserted after \cs{ch}. The +% Whether \fn{vs}|{1}| should be automatically inserted after \fn{ch}. The % value of \meta{|boolean|} is optional and assumed to be \val{true} if not % present. See also \opt{midparachap/showverse} and % \opt{midparachap/hideverse}. Note that \opt{chapter/showverse} take @@ -1328,6 +1552,94 @@ % \end{scripture} % \end{scriptureexample} % +% \changes{v2.1}{2024/12/30}{Add \opt{chapter/smash} option} +% \begin{option}[added=2024-12-30]{chapter/smash} +% \begin{syntax} +% chapter/smash = \meta{boolean} \hfill Default: false +% \end{syntax} +% Whether a chapter should be wrapped in \cs{smash} when +% \opt{chapter/nodrop} is set. This allows the chapter number to be larger +% than the line height without affecting line spacing. The value of +% \meta{|boolean|} is optional and assumed to be \val{true} if not present. +% \end{option} +% +% \changes{v2.1}{2024/12/30}{Add \opt{chapter/valign} option} +% \begin{option}[added=2024-12-30]{chapter/valign} +% \begin{syntax} +% chapter/align = bottom \textbar\ middle \textbar\ top\hfill Default: bottom +% \end{syntax} +% Sets how a chapter will align vertically when \opt{chapter/nodrop} is set. +% \begin{itemize} +% \item \val{bottom}: Chapter will align at the text base line. +% \item \val{middle}: Chapter will align at the center of text. +% \item \val{top}: Chapter will align at the top of text. +% \end{itemize} +% +% See also \opt{chapter/align}. +% \end{option} +% +% \begin{scriptureexample} +% \begin{verbatim} +% \documentclass{article} +% \usepackage{babel} +% \babelprovide[import, main]{english} +% \babelprovide[import, +% onchar=ids fonts]{ancientgreek} +% \babelfont[ancientgreek]{rm}[ +% BoldFont=NewCM10-Bold]{NewCM10-Regular} +% \usepackage{scripture} +% \begin{document} +% \begin{scripture}[Κατά Μάρκον 1:1--3][ +% chapter/font=\huge\bfseries, +% chapter/align=right, chapter/nodrop, +% chapter/smash, chapter/valign=top, +% hanging/hang=1em, hanging/leftmargin=2em, +% hanging/verse/sep=1em, language=ancientgreek, +% verse/font=\sffamily\bfseries, +% verse/sep=0.25em, version=THGNT] +% \begin{hanging} +% \ch{1}Ἀρχὴ τοῦ εὐαγγελίου Ἰησοῦ χριστοῦ υἱοῦ +% θεοῦ· \vs{2}καθὼς γέγραπται ἐν τῷ Ἡσαΐᾳ τῷ +% προφήτῃ· ἰδοὺ ἀποστέλλω τὸν ἄγγελόν μου πρὸ +% προσώπου σου, ὃς κατασκευάσει τὴν ὁδόν σου. +% \vs{3}φωνὴ βοῶντος ἐν τῇ ἐρήμῳ ἑτοιμάσατε τὴν +% ὁδὸν κυρίου, εὐθείας ποιεῖτε τὰς τρίβους αὐτοῦ. +% \end{hanging} +% \end{scripture} +% \end{document} +% \end{verbatim} +% +% \tcblower +% +% \begin{scripture}[Κατά Μάρκον 1:1--3][ +% chapter/font=\huge\bfseries, +% chapter/align=right, chapter/nodrop, +% chapter/smash, chapter/valign=top, +% hanging/hang=1em, hanging/leftmargin=2em, +% hanging/verse/sep=1em, language=ancientgreek, +% verse/font=\sffamily\bfseries, +% verse/sep=0.25em, version=THGNT] +% \begin{hanging} +% \ch{1}Ἀρχὴ τοῦ εὐαγγελίου Ἰησοῦ χριστοῦ υἱοῦ +% θεοῦ· \vs{2}καθὼς γέγραπται ἐν τῷ Ἡσαΐᾳ τῷ +% προφήτῃ· ἰδοὺ ἀποστέλλω τὸν ἄγγελόν μου πρὸ +% προσώπου σου, ὃς κατασκευάσει τὴν ὁδόν σου. +% \vs{3}φωνὴ βοῶντος ἐν τῇ ἐρήμῳ ἑτοιμάσατε τὴν +% ὁδὸν κυρίου, εὐθείας ποιεῖτε τὰς τρίβους αὐτοῦ. +% \end{hanging} +% \end{scripture} +% \end{scriptureexample} +% +% \changes{v2.1}{2025/01/01}{Add \opt{chapter/xchar} option} +% \begin{option}[added=2025-01-01]{chapter/xchar} +% \begin{syntax} +% chapter/xchar = \meta{character}\hfill Default: X +% \end{syntax} +% Sets the character to which drop chapters and vertically aligned non-drop +% chapters are aligned. This can also be set for individual chapters using +% an optional argument to \fn{ch}. +% \end{option} +% % \changes{v1.2}{2022/08/31}{Add \opt{colour} option} % \begin{option}[added=2022-08-31]{colour, color} % \begin{syntax} @@ -1343,7 +1655,7 @@ % \begin{syntax} % compact = \meta{boolean} \hfill Default: false % \end{syntax} -% This option removes all paragraph breaks along with any \cs{extraskip} in +% This option removes all paragraph breaks along with any \fn{extraskip} in % the quotation so the whole quotation is a single paragraph of running % prose. This option implies \opt{chapter/nodrop} and all options relating % to inner environments are ignored. @@ -1369,7 +1681,7 @@ % said: % \end{midparachap} % \begin{poetry} -% `In my distress I called to the Lord, +% `In my distress I called to the \name{Lord}, % and he answered me. % \end{poetry} % \end{scripture} @@ -1387,17 +1699,25 @@ % said: % \end{midparachap} % \begin{poetry} -% `In my distress I called to the Lord, +% `In my distress I called to the \name{Lord}, % and he answered me. % \end{poetry} % \end{scripture} % \end{scriptureexample} % +% \changes{v2.1}{2025/01/01}{Add \opt{defaults} option} +% \begin{option}[added=2025-01-01]{defaults} +% \begin{syntax} +% defaults +% \end{syntax} +% Resets options to defaults. +% \end{option} +% % \begin{option}{extraskip} % \begin{syntax} % extraskip = \meta{skip} \hfill Default: \cs{medskipamount} % \end{syntax} -% \meta{|skip|} used for the \cs{extraskip} function. +% \meta{|skip|} used for the \fn{extraskip} function. % \end{option} % % \begin{option}{font} @@ -1407,15 +1727,96 @@ % \meta{|font|} used for the \env{scripture} environment. % \end{option} % +% \changes{v2.1}{2024/11/19}{Add \opt{heading/aboveskip} option} +% \begin{option}[added=2024-11-19]{heading/aboveskip} +% \begin{syntax} +% heading/aboveskip = \meta{skip} \hfill Default: \cs{bigskipamount} +% \end{syntax} +% \meta{|skip|} inserted above a \fn{heading}. +% \end{option} +% +% \changes{v2.1}{2024/11/19}{Add \opt{heading/afterindent} option} +% \begin{option}[added=2024-11-19]{heading/afterindent} +% \begin{syntax} +% heading/afterindent = \meta{boolean} \hfill Default: false +% \end{syntax} +% Whether to indent the first paragraph following a \fn{heading}. The value +% of \meta{|boolean|} is optional and assumed to be \val{true} if not +% present. +% \end{option} +% +% \changes{v2.1}{2024/11/19}{Add \opt{heading/align} option} +% \begin{option}[added=2024-11-19]{heading/align} +% \begin{syntax} +% heading/align = left \textbar\ right \textbar\ center \hfill Default: left +% \end{syntax} +% Set the alignment of a \fn{heading}. +% \end{option} +% +% \changes{v2.1}{2024/11/19}{Add \opt{heading/belowskip} option} +% \begin{option}[added=2024-11-19]{heading/belowskip} +% \begin{syntax} +% heading/belowskip = \meta{skip} \hfill Default: \cs{medskipamount} +% \end{syntax} +% \meta{|skip|} inserted below a \fn{heading}. +% \end{option} +% +% \changes{v2.1}{2024/11/19}{Add \opt{heading/font} option} +% \begin{option}[added=2024-11-19]{heading/font} +% \begin{syntax} +% heading/font = \meta{font} \hfill Default: \cs{small}\cs{itshape} +% \end{syntax} +% \meta{|font|} used for a \fn{heading}. +% \end{option} +% +% \changes{v2.1}{2024/11/19}{Add \opt{heading/format} option} +% \begin{option}[added=2024-11-19]{heading/format} +% \begin{syntax} +% heading/format = \meta{macro} \hfill Default: \#1 +% \end{syntax} +% \meta{|macro|} used to format a \fn{heading}. |#1| contains the text of +% the \val{heading}. +% \end{option} +% +% \changes{v2.1}{2024/11/19}{Add \opt{heading/hide} option} +% \begin{option}[added=2024-11-19]{heading/hide} +% \begin{syntax} +% heading/hide = \meta{boolean} \hfill Default: false +% \end{syntax} +% Whether to hide \fn{heading} functions. The value of \meta{|boolean|} is +% optional and assumed to be \val{true} if not present. This option is the +% opposite of \opt{heading/show}. +% \end{option} +% +% \changes{v2.1}{2024/11/19}{Add \opt{heading/show} option} +% \begin{option}[added=2024-11-19]{heading/show} +% \begin{syntax} +% heading/show = \meta{boolean} \hfill Default: true +% \end{syntax} +% Whether to show \fn{heading} functions. The value of \meta{|boolean|} is +% optional and assumed to be \val{true} if not present. This option is the +% opposite of \opt{heading/hide}. +% \end{option} +% +% \begin{option}{indent} +% \begin{syntax} +% indent = \meta{boolean} \hfill Default: true +% \end{syntax} +% Whether to indent the first line of a \env{scripture} environment or not +% by \opt{parindent}. The value of \meta{|boolean|} is optional and assumed +% to be \val{true} if not present. This option is the opposite of +% \opt{noindent}. +% \end{option} +% % \changes{v1.3}{2023/01/07}{Add \opt{inline} option} % \begin{option}[added=2023-01-07]{inline} % \begin{syntax} % inline = \meta{boolean} \hfill Default: false % \end{syntax} % Set the scripture quotation inline. The quotation is surrounded be the -% values of \opt{inline/begin} and \opt{inline/end} which default to |``\,| -% and |\,''|, respectively. This option also sets the \opt{compact} option -% set sets the \val{reference} inline. The reference format can be +% values of \opt{inline/begin} and \opt{inline/end} which default to |``| +% and |''|, respectively. This option also sets the \opt{compact} option and +% sets the \meta{\val{reference}} inline. The reference format can be % controlled using the following options: % \begin{itemize} % \item \opt{inline/reference/format} @@ -1423,7 +1824,7 @@ % \item \opt{inline/version/delim} % \item \opt{inline/version/format} % \end{itemize} -% Other \val{reference} and \val{version} options are inherited. +% Other \meta{\val{reference}} and \meta{\opt{version}} options are inherited. % % \textbf{Warning:} \cs{par} is redefined to \cs{relax} when the % \opt{inline} option is set. If you have anything other than expected @@ -1434,18 +1835,18 @@ % \changes{v1.3}{2023/01/07}{Add \opt{inline/begin} option} % \begin{option}[added=2023-01-07]{inline/begin} % \begin{syntax} -% inline/begin = \meta{text} \hfill Default: |``\,| +% inline/begin = \meta{text} \hfill Default: |``| % \end{syntax} -% Text inserted at the beginning of \cs{textscripture} or a \env{scripture} +% Text inserted at the beginning of \fn{textscripture} or a \env{scripture} % environment with the \opt{inline} option set. % \end{option} % % \changes{v1.3}{2023/01/07}{Add \opt{inline/end} option} % \begin{option}[added=2023-01-07]{inline/end} % \begin{syntax} -% inline/end = \meta{text} \hfill Default: |\,''| +% inline/end = \meta{text} \hfill Default: |''| % \end{syntax} -% Text inserted between the end of \cs{textscripture} or a \env{scripture} +% Text inserted between the end of \fn{textscripture} or a \env{scripture} % environment with the \opt{inline} option set and the \meta{|reference|} % (if specified). % \end{option} @@ -1455,9 +1856,9 @@ % \begin{syntax} % inline/reference/format = \meta{macro} \hfill Default: (\#1) % \end{syntax} -% \meta{|macro|} used to format the \val{reference} for an inline -% \env{scripture} quotation. |#1| contains the text of the \val{reference} -% and \val{version} (if specified). +% \meta{|macro|} used to format the \meta{\val{reference}} for an inline +% \env{scripture} quotation. |#1| contains the text of the +% \meta{\val{reference}} and \meta{\opt{version}} (if specified). % \end{option} % % \changes{v2.0}{2023/12/27}{Add \opt{inline/reference/sep} option} @@ -1466,7 +1867,7 @@ % inline/reference/sep = \meta{dimen} \hfill Default: 0.5em % \end{syntax} % The \meta{|dimen|} between the end of an inline \env{scripture} quotation -% and its \val{reference}. +% and its \meta{\val{reference}}. % \end{option} % % \changes{v2.0}{2023/12/27}{Add \opt{inline/version/delim} option} @@ -1474,8 +1875,8 @@ % \begin{syntax} % inline/version/delim = \meta{delim} \hfill Default: \{\ \} % \end{syntax} -% \meta{|delim|} to use between the \val{reference} and the \val{version} of -% an inline \env{scripture} quotation. +% \meta{|delim|} to use between the \meta{\val{reference}} and the +% \meta{\opt{version}} of an inline \env{scripture} quotation. % \end{option} % % \changes{v2.0}{2023/12/27}{Add \opt{inline/version/format} option} @@ -1483,18 +1884,9 @@ % \begin{syntax} % inline/version/format = \meta{macro} \hfill Default: \#1 % \end{syntax} -% \meta{|macro|} used to format the \val{version} for an inline -% \env{scripture} quotation. |#1| contains the text of the \val{version}. -% \end{option} -% -% \begin{option}{indent} -% \begin{syntax} -% indent = \meta{boolean} \hfill Default: true -% \end{syntax} -% Whether to indent the first line of a \env{scripture} environment or not -% by \opt{parindent}. The value of \meta{|boolean|} is optional and assumed -% to be \val{true} if not present. This option is the opposite of -% \opt{noindent}. +% \meta{|macro|} used to format the \meta{\opt{version}} for an inline +% \env{scripture} quotation. |#1| contains the text of the +% \meta{\opt{version}}. % \end{option} % % \changes{v1.2}{2022/11/02}{Add \opt{language} option} @@ -1508,8 +1900,126 @@ % environment. Make sure you have \pkg{babel} or \pkg{polyglossia} loaded % and correctly set up for your specified language. If unset the current % active language is used. +% +% Right-to-left languages are only supported with \pkg{babel} and Lua\LaTeX. +% You will need to pass \texttt{bidi=basic, layout=lists} as options to +% \pkg{babel} to ensure everything is laid out correctly. % \end{option} % +% \begin{scriptureexample} +% \begingroup +% \catcode`@=13 +% \def@#1{\ifcase#1\relax \egroup \or \bgroup\textdir TLT \else +% \bgroup\textdir TRT \fi} +% \begin{verbatim} +% \documentclass{article} +% \usepackage[bidi=basic, layout=lists]{babel} +% \babelprovide[import, main]{english} +% \babelprovide[import, mapdigits]{persian} +% \babelfont[persian]{rm}[ +% Renderer=Harfbuzz]{Amiri} +% \usepackage{scripture} +% \begin{document} +% \begin{scripture}[اِشعیا 56:1--2][version=NMV, +% language=persian] +% @9@1\ch{56}@0خداوند چنین میفرماید:@0 +% \begin{poetry} +% @9»انصاف را نگاه داشته،@0 +% @9عدالت را به عمل آورید،@0 +% +% @9زیرا نجات من نزدیک شده،@0 +% @9و عدالت من بهزودی منکشف خواهد شد.@0 +% +% @9@1\vs{2}@0خوشا به حال آن که چنین کند،@0 +% @9و کسی که بدین متمسک گردد؛@0 +% +% @9که شَبّات را نگاه داشته، آن را بیحرمت نسازد،@0 +% @9و دست خویش از هر عمل بد باز دارد.«@0 +% \end{poetry} +% \end{scripture} +% \end{document} +% \end{verbatim} +% \endgroup +% +% \tcblower +% +% \shapemode 2 +% \begin{scripture}[اِشعیا 56:1--2][version=NMV, +% language=persian] +% \ch{56}خداوند چنین میفرماید: +% \begin{poetry} +% «انصاف را نگاه داشته، +% عدالت را به عمل آورید، +% +% زیرا نجات من نزدیک شده، +% و عدالت من بهزودی منکشف خواهد شد. +% +% \vs{2}خوشا به حال آن که چنین کند، +% و کسی که بدین متمسک گردد؛ +% +% که شَبّات را نگاه داشته، آن را بیحرمت نسازد، +% و دست خویش از هر عمل بد باز دارد.» +% \end{poetry} +% \end{scripture} +% \end{scriptureexample} +% +% \textbf{Note} that for CJK scripts the \pkg{scripture} package is compatible +% with specialist packages like \pkg{luatexja} and \pkg{ctex}. These packages +% can give nicer kerning and protrusion out of the box. Although with some +% effort you can set up \pkg{babel} along with \pkg{microtype} to give +% comparable output. +% +% \begin{scriptureexample} +% \begin{verbatim} +% \documentclass{article} +% \usepackage{luatexja} +% \usepackage{scripture} +% \begin{document} +% \begin{scripture}[マルコの福音書 9:33--37][ +% version=NJB] +% \vs{33}一行はカペナウムに着いた。イエスは家に入ってか +% ら、弟子たちにお尋ねになった。「来る途中、何を +% 論じ合っていたのですか。」 +% \vs{34}彼らは黙っていた。来る途中、だれが一番偉いか論 +% じ合っていたからである。 +% \vs{35}イエスは腰を下ろすと、十二人を呼んで言われた。 +% 「だれでも先頭に立ちたいと思う者は、皆の後にな +% り、皆に仕える者になりなさい。」 +% \vs{36}それから、イエスは一人の子どもの手を取って、彼 +% らの真ん中に立たせ、腕に抱いて彼らに言われた。 +% \vs{37}「だれでも、このような子どもたちの一人を、わた +% しの名のゆえに受け入れる人は、わたしを受け入れ +% るのです。また、だれでもわたしを受け入れる人は +% 、わたしではなく、わたしを遣わされた方を受け入 +% れるのです。」 +% \end{scripture} +% \end{document} +% \end{verbatim} +% +% \tcblower +% +% \enablecjk +% +% \begin{scripture}[マルコの福音書 9:33--37][ +% version=NJB] +% \vs{33}一行はカペナウムに着いた。イエスは家に入ってか +% ら、弟子たちにお尋ねになった。「来る途中、何を +% 論じ合っていたのですか。」 +% \vs{34}彼らは黙っていた。来る途中、だれが一番偉いか論 +% じ合っていたからである。 +% \vs{35}イエスは腰を下ろすと、十二人を呼んで言われた。 +% 「だれでも先頭に立ちたいと思う者は、皆の後にな +% り、皆に仕える者になりなさい。」 +% \vs{36}それから、イエスは一人の子どもの手を取って、彼 +% らの真ん中に立たせ、腕に抱いて彼らに言われた。 +% \vs{37}「だれでも、このような子どもたちの一人を、わた +% しの名のゆえに受け入れる人は、わたしを受け入れ +% るのです。また、だれでもわたしを受け入れる人は +% 、わたしではなく、わたしを遣わされた方を受け入 +% れるのです。」 +% \end{scripture} +% \end{scriptureexample} +% % \changes{v1.2}{2022/11/02}{Add \opt{language/variant} option} % \begin{option}[added=2022-11-02]{language/variant} % \begin{syntax} @@ -1535,7 +2045,7 @@ % \begin{syntax} % name/font = \meta{font} \hfill Default: \cs{scshape} % \end{syntax} -% \meta{|font|} used for the \cs{name} function. +% \meta{|font|} used for the \fn{name} function. % \end{option} % % \changes{v1.2}{2022/09/01}{Add \opt{name/format} option} @@ -1543,8 +2053,8 @@ % \begin{syntax} % name/format = \meta{macro} \hfill Default: \#1 % \end{syntax} -% \meta{|macro|} used to format the \val{divine name} using the \cs{name} -% function. |#1| contains the text of the argument to \cs{name}. +% \meta{|macro|} used to format the \val{divine name} using the \fn{name} +% function. |#1| contains the text of the argument to \fn{name}. % \end{option} % % \begin{option}{noindent} @@ -1592,14 +2102,72 @@ % \meta{|skip|} to use between paragraphs in the \env{scripture} environment. % \end{option} % +% \changes{v2.1}{2024/01/18}{Add feature to add pilcrows at the start of +% paragraphs.} +% \changes{v2.1}{2024/01/18}{Add \opt{pilcrow} option} +% \begin{option}[added=2024-01-18]{pilcrow} +% \begin{syntax} +% pilcrow = \meta{boolean} \hfill Default: false +% \end{syntax} +% Whether to insert a pilcrow (\P) at the beginning of each paragraph. This +% option only has an effect when using the \opt{compact} and/or +% \opt{verse/para} options. The value of \meta{|boolean|} is optional and +% assumed to be \val{true} if not present. +% +% A subsequent pilcrow can be suppressed with the \fn{nopilcrow} macro. +% Inner environments start a new paragraph only if there is a blank line +% before them and similarly, there is only a new paragraph after an inner +% environment if it is followed by a blank line. New paragraphs are not +% inserted within a poetry environment, so to obtain a paragraph break +% within a block of poetry, use two \env{poetry} environments separated by a +% blank line. The exception to this is the \env{midparachap} environment +% which always starts and ends a paragraph. +% \end{option} +% +% \begin{scriptureexample} +% \begin{verbatim} +% \begin{scripture}[Deuteronomy 5:1][chapter/para, +% chapter/format=CHAPTER~#1, verse/para, +% verse/font=\bfseries, verse/format=#1, +% verse/sep=0.5em, pilcrow] +% \ch{5}Moses summoned all Israel and said: +% +% Hear, Israel, the decrees and the laws I declare +% in your hearing today. Learn them and be sure to +% follow them. +% \end{scripture} +% \end{verbatim} +% +% \tcblower +% +% \begin{scripture}[Deuteronomy 5:1][chapter/para, +% chapter/format=CHAPTER~#1, verse/para, +% verse/font=\bfseries, verse/format=#1, +% verse/sep=0.5em, pilcrow] +% \ch{5}Moses summoned all Israel and said: +% +% Hear, Israel, the decrees and the laws I declare +% in your hearing today. Learn them and be sure to +% follow them. +% \end{scripture} +% \end{scriptureexample} +% +% \changes{v2.1}{2024/01/18}{Add \opt{pilcrow/sep} option} +% \begin{option}[added=2024-01-18]{pilcrow/sep} +% \begin{syntax} +% pilcrow/sep = \meta{dimen} \hfill Default: 0.25em +% \end{syntax} +% \meta{|dimen|} used to separate a pilcrow (\P) from the following text. +% \end{option} +% % \changes{v1.2}{2022/08/31}{Add \opt{redletter} option} % \begin{option}[added=2022-08-31]{redletter} % \begin{syntax} % redletter = \meta{boolean} \hfill Default: false % \end{syntax} % Whether to enable highlighting of Jesus' words in red. The value of -% \meta{|boolean|} is option and assumed to be \val{true} if not present. -% The text needs to be marked up with \cs{redletteron} and \cs{redletteroff} +% \meta{|boolean|} is optional and assumed to be \val{true} if not present. +% The text needs to be marked up with \fn{redletteron} and \fn{redletteroff} % for this option to have any effect. % \end{option} % @@ -1609,8 +2177,8 @@ % redletter/colour = \meta{colour expression} \hfill Default: red!80!black % \end{syntax} % The \pkg{l3color} \meta{|colour expression|} to be used for the words of -% Jesus when the \opt{redletter} option is \val{true}. \cs{redletteron} and -% \cs{redletteroff} must be used to mark up the text. \opt{redletter/color} +% Jesus when the \opt{redletter} option is \val{true}. \fn{redletteron} and +% \fn{redletteroff} must be used to mark up the text. \opt{redletter/color} % is an alias for \opt{redletter/colour}. % \end{option} % @@ -1637,17 +2205,18 @@ % \begin{syntax} % reference/font = \meta{font} \hfill Default: \cs{bfseries} % \end{syntax} -% \meta{|font|} used when printing the \val{reference} for a \env{scripture} -% quotation. +% \meta{|font|} used when printing the \meta{\val{reference}} for a +% \env{scripture} quotation. % \end{option} % % \begin{option}{reference/format} % \begin{syntax} % reference/format = \meta{macro} \hfill Default: \#1 % \end{syntax} -% \meta{|macro|} used to format the \val{reference} for a \env{scripture} -% quotation. |#1| contains the text of the \val{reference} and \val{version} -% (if specified). +% \meta{|macro|} used to format the \meta{\val{reference}} for a +% \env{scripture} quotation. |#1| contains the text of the +% \meta{\val{reference}} and +% \meta{\opt{version}} (if specified). % \end{option} % % \changes{v1.3}{2023/01/08}{Add \opt{reference/newline} option} @@ -1655,19 +2224,119 @@ % \begin{syntax} % reference/newline % \end{syntax} -% Always push the \val{reference} to a newline even if there is space for it -% to fit on the last line of the quotation. The option sets +% Always push the \meta{\val{reference}} to a newline even if there is space +% for it to fit on the last line of the quotation. The option sets % \opt{reference/sep} to \cs{linewidth} so there is never room for the % reference on the final line of the quotation. % \end{option} % +% \changes{v2.1}{2024/01/10}{Add feature to place the reference at the start +% of the quotation.} +% \changes{v2.1}{2024/01/10}{Add \opt{reference/position} option} +% \begin{option}[added=2024-01-10]{reference/position} +% \begin{syntax} +% reference/position = start \textbar\ end \hfill Default: end +% \end{syntax} +% Set the position of the reference at either the start or end of the +% quotation. If \val{start} is specified, then the reference will be set +% inline unless the quotation begins with an inner environment. Any \fn{vs} +% or \fn{ch} is suppressed at the start of the quotation in the main +% \env{scripture} environment. +% \end{option} +% +% \begin{scriptureexample} +% \begin{verbatim} +% \begin{scripture}[John 1:1][version=NIV, +% reference/position=start] +% \ch{1}In the beginning was the Word, and the +% Word was with God, and the Word was God. +% \end{scripture} +% \end{verbatim} +% +% \tcblower +% +% \begin{scripture}[John 1:1][version=NIV, +% reference/position=start] +% \ch{1}In the beginning was the Word, and the +% Word was with God, and the Word was God. +% \end{scripture} +% \end{scriptureexample} +% % \begin{option}{reference/sep} % \begin{syntax} % reference/sep = \meta{dimen} \hfill Default: 2em % \end{syntax} % The minimum \meta{|dimen|} allowed between the end of a \env{scripture} -% quotation and its \val{reference} before the \val{reference} is pushed to -% the following line. +% quotation and its \meta{\val{reference}} before the \meta{\val{reference}} +% is pushed to the following line. +% \end{option} +% +% \changes{v2.1}{2024/01/10}{Add \opt{reference/start/inline} option} +% \begin{option}[added=2024-01-10]{reference/start/inline} +% \begin{syntax} +% reference/start/inline = \meta{boolean} \hfill Default: true +% \end{syntax} +% When \opt{reference/position} is set to \val{start}, this option controls +% whether the reference is set inline or on a line of its own before the +% quotation. Note that if the quotation begins with an inner environment the +% reference will always be on a new line unless the \opt{compact} option is +% also set. The value of \meta{|boolean|} is optional and assumed to be +% \val{true} if not present. This option is the opposite of +% \opt{reference/start/newline}. +% \end{option} +% +% \changes{v2.1}{2024/01/10}{Add \opt{reference/start/newline} option} +% \begin{option}[added=2024-01-10]{reference/start/newline} +% \begin{syntax} +% reference/start/newline = \meta{boolean} \hfill Default: false +% \end{syntax} +% When \opt{reference/position} is set to \val{start}, this option controls +% whether the reference is set inline or on a line of its own before the +% quotation. Note that if the quotation begins with an inner environment the +% reference will always be on a new line unless the \opt{compact} option is +% also set. The value of \meta{|boolean|} is optional and assumed to be +% \val{true} if not present. This option is the opposite of +% \opt{reference/start/inline}. +% \end{option} +% +% \begin{scriptureexample} +% \begin{verbatim} +% \begin{scripture}[John 1:1]% +% [reference/position=start, +% reference/start/newline] +% \ch{1}In the beginning was the Word, and the +% Word was with God, and the Word was God. +% \end{scripture} +% \end{verbatim} +% +% \tcblower +% +% \begin{scripture}[John 1:1]% +% [reference/position=start, +% reference/start/newline] +% \ch{1}In the beginning was the Word, and the +% Word was with God, and the Word was God. +% \end{scripture} +% \end{scriptureexample} +% +% \changes{v2.1}{2024/01/10}{Add \opt{reference/start/sep} option} +% \begin{option}[added=2024-01-10]{reference/start/sep} +% \begin{syntax} +% reference/start/sep = \meta{dimen} \hfill Default: 1em +% \end{syntax} +% The space inserted between the reference and the quotation when +% \opt{reference/position} is set to \val{start}. This only applies when the +% reference is inline and not on a line of its own. +% \end{option} +% +% \changes{v2.1}{2024/01/10}{Add \opt{reference/start/vsep} option} +% \begin{option}[added=2024-01-10]{reference/start/vsep} +% \begin{syntax} +% reference/start/vsep = \meta{skip} \hfill Default: 0pt +% \end{syntax} +% The vertical skip inserted between the reference and the quotation when +% \opt{reference/position} is set to \val{start}. This only applies when the +% reference is on a line of its own. % \end{option} % % \begin{option}{rightmargin} @@ -1682,14 +2351,14 @@ % \begin{syntax} % selah/font = \meta{font} \hfill Default: \cs{itshape} % \end{syntax} -% \meta{|font|} used when printing \cs{selah} in a \env{poetry} environment. +% \meta{|font|} used when printing \fn{selah} in a \env{poetry} environment. % \end{option} % % \begin{option}{selah/format} % \begin{syntax} % selah/format = \meta{macro} \hfill Default: \#1 % \end{syntax} -% \meta{|macro|} used to format the \cs{selah} in a \env{poetry} +% \meta{|macro|} used to format the \fn{selah} in a \env{poetry} % environment. |#1| contains the value of \opt{selah/text}. % \end{option} % @@ -1705,7 +2374,7 @@ % \begin{syntax} % selah/text = \meta{text} \hfill Default: Selah % \end{syntax} -% \meta{|text|} used to for \cs{selah} in a \env{poetry} environment. +% \meta{|text|} used to for \fn{selah} in a \env{poetry} environment. % \end{option} % % \changes{v2.0}{2023/12/27}{Add \opt{style} option} @@ -1713,7 +2382,7 @@ % \begin{syntax} % style = \meta{name} % \end{syntax} -% Set options previously saved with \cs{scripturestyle}. An error occurs if +% Set options previously saved with \fn{scripturestyle}. An error occurs if % the style isn't defined. % \end{option} % @@ -1723,7 +2392,7 @@ % textright/sep = \meta{dimen} \hfill Default: 1em % \end{syntax} % The minimum \meta{|dimen|} allowed between the end of a line and text -% aligned to the right with \cs{textright} before the right aligned text is +% aligned to the right with \fn{textright} before the right aligned text is % pushed to the following line. % \end{option} % @@ -1745,7 +2414,7 @@ % In prose sections, print the verse number in a different format if it is % at the start of the paragraph. The format and separation between verse and % text are controlled with the \opt{verse/firstformat} and -% \opt{verse/firstsep} options. Use \cs{noversefirst} to suppress this at +% \opt{verse/firstsep} options. Use \fn{nofirstverse} to suppress this at % the next verse (e.g., if your quote starts mid-way though a paragraph and % a normal verse should be printed). The value of \meta{|boolean|} is optional % and assumed to be true if not present. @@ -1792,8 +2461,8 @@ % \begin{syntax} % verse/firstformat = \meta{macro} \hfill Default: \#1 % \end{syntax} -% \meta{|macro|} used to format the first \cs{vs} in a paragraph. |#1| -% contains the argument of \cs{vs}. Only used if \opt{verse/first} is +% \meta{|macro|} used to format the first \fn{vs} in a paragraph. |#1| +% contains the argument of \fn{vs}. Only used if \opt{verse/first} is % |true|. % \end{option} % @@ -1802,7 +2471,7 @@ % \begin{syntax} % verse/firstsep = \meta{dimen} \hfill Default: 0.5em % \end{syntax} -% \meta{|dimen|} used to separate the first \cs{vs} in a paragraph from the +% \meta{|dimen|} used to separate the first \fn{vs} in a paragraph from the % following text. Only used if \opt{verse/first} is |true|. % \end{option} % @@ -1810,15 +2479,15 @@ % \begin{syntax} % verse/font = \meta{font} \hfill Default: \emph{Empty} % \end{syntax} -% \meta{|font|} used for the \cs{vs} function. +% \meta{|font|} used for the \fn{vs} function. % \end{option} % % \begin{option}{verse/format} % \begin{syntax} % verse/format = \meta{macro} \hfill Default: \cs{textsuperscript}\{\#1\} % \end{syntax} -% \meta{|macro|} used to format the \cs{vs} function. |#1| contains the -% argument of \cs{vs}. +% \meta{|macro|} used to format the \fn{vs} function. |#1| contains the +% argument of \fn{vs}. % \end{option} % % \changes{v1.1}{2022/08/15}{Add \opt{verse/hide} option} @@ -1859,12 +2528,110 @@ % \end{scripture} % \end{scriptureexample} % +% \changes{v2.1}{2024/01/13}{Add feature to set each verse on a new line.} +% \changes{v2.1}{2024/01/13}{Add \opt{verse/para} option} +% \begin{option}[added=2024-01-13]{verse/para} +% \begin{syntax} +% verse/para = \meta{boolean} \hfill Default: false +% \end{syntax} +% Whether to set each verse on its own line. The value of \meta{|boolean|} +% is optional and assumed to be \val{true} if not present. Drop chapters and +% the shape of inner environments is preserved with this option unless the +% \opt{compact} option is also set. +% \end{option} +% +% \begin{scriptureexample} +% \begin{verbatim} +% \begin{scripture}[Jonah 1:17--2:2a][verse/para, +% verse/sep=0.5em, pilcrow, chapter/para, +% chapter/format=CHAPTER~#1] +% \begin{midparachap} +% \vs{17}Now the \name{Lord} provided a huge +% fish to swallow Jonah, and Jonah was in the +% belly of the fish three days and three +% nights. \ch{2}From inside the fish Jonah +% prayed to the \name{Lord} his God. \vs{2}He +% said: +% \end{midparachap} +% +% \begin{poetry} +% `In my distress I called to the \name{Lord}, +% and he answered me. +% \end{poetry} +% \end{scripture} +% \end{verbatim} +% +% \tcblower +% +% \begin{scripture}[Jonah 1:17--2:2a][verse/para, +% verse/format=#1, verse/font=\bfseries, +% verse/sep=0.5em, pilcrow, chapter/para, +% chapter/format=CHAPTER~#1] +% \begin{midparachap} +% \vs{17}Now the \name{Lord} provided a huge +% fish to swallow Jonah, and Jonah was in the +% belly of the fish three days and three +% nights. \ch{2}From inside the fish Jonah +% prayed to the \name{Lord} his God. \vs{2}He +% said: +% \end{midparachap} +% +% \begin{poetry} +% `In my distress I called to the \name{Lord}, +% and he answered me. +% \end{poetry} +% \end{scripture} +% \end{scriptureexample} +% +% \begin{scriptureexample} +% \begin{verbatim} +% \begin{scripture}[Jonah 1:17--2:2a][verse/para, +% verse/sep=0.5em, pilcrow, chapter/para, +% chapter/format=CHAPTER~#1, compact] +% \begin{midparachap} +% \vs{17}Now the \name{Lord} provided a huge +% fish to swallow Jonah, and Jonah was in the +% belly of the fish three days and three +% nights. \ch{2}From inside the fish Jonah +% prayed to the \name{Lord} his God. \vs{2}He +% said: +% \end{midparachap} +% +% \begin{poetry} +% `In my distress I called to the \name{Lord}, +% and he answered me. +% \end{poetry} +% \end{scripture} +% \end{verbatim} +% +% \tcblower +% +% \begin{scripture}[Jonah 1:17--2:2a][verse/para, +% verse/format=#1, verse/font=\bfseries, +% verse/sep=0.5em, pilcrow, chapter/para, +% chapter/format=CHAPTER~#1, compact] +% \begin{midparachap} +% \vs{17}Now the \name{Lord} provided a huge +% fish to swallow Jonah, and Jonah was in the +% belly of the fish three days and three +% nights. \ch{2}From inside the fish Jonah +% prayed to the \name{Lord} his God. \vs{2}He +% said: +% \end{midparachap} +% +% \begin{poetry} +% `In my distress I called to the \name{Lord}, +% and he answered me. +% \end{poetry} +% \end{scripture} +% \end{scriptureexample} +% % \changes{v1.1}{2022/07/28}{Add \opt{verse/sep} option with small default} % \begin{option}[added=2022-07-28]{verse/sep} % \begin{syntax} % verse/sep = \meta{dimen} \hfill Default: 0.05em % \end{syntax} -% \meta{|dimen|} used to separate a \cs{vs} from the following text. +% \meta{|dimen|} used to separate a \fn{vs} from the following text. % \end{option} % % \changes{v1.1}{2022/08/15}{Add \opt{verse/show} option} @@ -1881,31 +2648,61 @@ % \begin{syntax} % version = \meta{version} \hfill Default: \emph{Empty} % \end{syntax} -% \meta{|version|} added to the \val{reference} for a \env{scripture} -% quotation. +% \meta{\opt{version}} added to the \meta{\val{reference}} for a +% \env{scripture} quotation. % \end{option} % % \begin{option}{version/delim} % \begin{syntax} % version/delim = \meta{delim} \hfill Default: \{\ \} % \end{syntax} -% \meta{|delim|} to use between the \val{reference} and the \val{version} of a -% \env{scripture} quotation. +% \meta{|delim|} to use between the \meta{\val{reference}} and the +% \meta{\opt{version}} of a \env{scripture} quotation. % \end{option} % % \begin{option}{version/format} % \begin{syntax} % version/format = \meta{macro} \hfill Default: (\#1) % \end{syntax} -% \meta{|macro|} used to format the \val{version} for a \env{scripture} -% quotation. |#1| contains the text of the \val{version}. +% \meta{|macro|} used to format the \meta{\opt{version}} for a +% \env{scripture} quotation. |#1| contains the text of the +% \meta{\opt{version}}. % \end{option} % +% \changes{v2.1}{2024/01/10}{Add \opt{version/position} option} +% \begin{option}[added=2024-01-10]{version/position} +% \begin{syntax} +% version/position = withref \textbar\ end \hfill Default: withref +% \end{syntax} +% Set the position of the version at either with the reference or at the end +% of the quotation if \opt{reference/position} is set to \val{start}. +% \end{option} +% +% \begin{scriptureexample} +% \begin{verbatim} +% \begin{scripture}[John 1:1][version=NIV, +% reference/position=start, +% version/position=end] +% \ch{1}In the beginning was the Word, and the +% Word was with God, and the Word was God. +% \end{scripture} +% \end{verbatim} +% +% \tcblower +% +% \begin{scripture}[John 1:1][version=NIV, +% reference/position=start, +% version/position=end] +% \ch{1}In the beginning was the Word, and the +% Word was with God, and the Word was God. +% \end{scripture} +% \end{scriptureexample} +% % \subsubsection{Options for the \env{center} environment} % \label{centeroptions} % % If these options are passed directly to the \env{center} environment rather -% than to the package, \cs{scripturesetup} or the \env{scripture} environment, +% than to the package, \fn{scripturesetup} or the \env{scripture} environment, % then the |center/| prefix should be dropped. % % \begin{option}{center/aboveskip} @@ -1940,7 +2737,7 @@ % \label{flushrightoptions} % % If these options are passed directly to the \env{flushright} environment rather -% than to the package, \cs{scripturesetup} or the \env{scripture} environment, +% than to the package, \fn{scripturesetup} or the \env{scripture} environment, % then the |flushright/| prefix should be dropped. % % \begin{option}{flushright/aboveskip} @@ -1975,7 +2772,7 @@ % \label{hangingoptions} % % If these options are passed directly to the \env{hanging} environment rather -% than to the package, \cs{scripturesetup} or the \env{scripture} environment, +% than to the package, \fn{scripturesetup} or the \env{scripture} environment, % then the |hanging/| prefix should be dropped. % % \begin{option}{hanging/aboveskip} @@ -1992,6 +2789,50 @@ % \meta{|skip|} inserted below the \env{hanging} environment. % \end{option} % +% \changes{v2.1}{2024/12/31}{Add \opt{hanging/chapter/indent} option} +% \begin{option}[added=2024-12-31]{hanging/chapter/indent} +% \begin{syntax} +% hanging/chapter/indent = \meta{boolean} \hfill Default: true +% \end{syntax} +% Indent the first line of chapters in \env{hanging} environments. If this +% is set to \val{false}, then the paragraph will be set has a normal hanging +% paragraph (if there is room). +% \end{option} +% +% \begin{scriptureexample} +% \begin{verbatim} +% \begin{scripture}[Genesis 1:1--3][% +% hanging/chapter/indent=false] +% \begin{hanging} +% \ch{1}In the beginning God created the heavens +% and the earth. \vs{2}Now the earth was +% formless and empty, darkness was over the +% surface of the deep, and the Spirit of God was +% hovering over the waters. +% +% \vs{3}And God said, ``Let there be light,'' +% and there was light. +% \end{hanging} +% \end{scripture} +% \end{verbatim} +% +% \tcblower +% +% \begin{scripture}[Genesis 1:1--3][% +% hanging/chapter/indent=false] +% \begin{hanging} +% \ch{1}In the beginning God created the heavens +% and the earth. \vs{2}Now the earth was +% formless and empty, darkness was over the +% surface of the deep, and the Spirit of God was +% hovering over the waters. +% +% \vs{3}And God said, ``Let there be light,'' +% and there was light. +% \end{hanging} +% \end{scripture} +% \end{scriptureexample} +% % \begin{option}{hanging/hang} % \begin{syntax} % hanging/hang = \meta{dimen} \hfill Default: 2em @@ -2014,21 +2855,101 @@ % \meta{|dimen|} used for the right margin of the \env{hanging} environment. % \end{option} % +% \changes{v2.1}{2024/12/17}{Add \opt{hanging/verse/left} option} +% \begin{option}[added=2024-12-17]{hanging/verse/left} +% \begin{syntax} +% hanging/verse/left = \meta{boolean} \hfill Default: false +% \end{syntax} +% Align verse numbers in \env{hanging} environments at the left margin of +% the \env{hanging} environment. This is only used for verses at the start +% of a paragraph. This option is the opposite of \opt{hanging/verse/right}. +% \end{option} +% +% \begin{scriptureexample} +% \begin{verbatim} +% \documentclass{article} +% \usepackage{babel} +% \babelprovide[import, main]{english} +% \babelprovide[import, +% onchar=ids fonts]{ancientgreek} +% \babelfont[ancientgreek]{rm}[ +% BoldFont=NewCM10-Bold]{NewCM10-Regular} +% \usepackage{scripture} +% \begin{document} +% \begin{scripture}[Κατά Μάρκον 1:28--30][ +% hanging/hang=1em, hanging/leftmargin=2em, +% hanging/verse/left, hanging/verse/sep=1em, +% language=ancientgreek, verse/sep=0.25em, +% verse/font=\sffamily\bfseries, version=THGNT] +% \begin{hanging} +% \vs{28}Καὶ ἐξῆλθεν ἡ ἀκοὴ αὐτοῦ εὐθὺς πανταχοῦ +% εἰς ὅλην τὴν περίχωρον τῆς Γαλιλαίας. +% +% \vs{29}Καὶ εὐθὺς ἐκ τῆς συναγωγῆς ἐξελθόντες +% ἦλθον εἰς τὴν οἰκίαν Σίμωνος καὶ Ἀνδρέου μετὰ +% Ἰακώβου καὶ Ἰωάννου. \vs{30}ἡ δὲ πενθερὰ +% Σίμωνος κατέκειτο πυρέσσουσα, καὶ εὐθὺς +% λέγουσιν αὐτῷ περὶ αὐτῆς. +% \end{hanging} +% \end{scripture} +% \end{document} +% \end{verbatim} +% +% \tcblower +% +% \begin{scripture}[Κατά Μάρκον 1:28--30][ +% hanging/hang=1em, hanging/leftmargin=2em, +% hanging/verse/left, hanging/verse/sep=1em, +% language=ancientgreek, verse/sep=0.25em, +% verse/font=\sffamily\bfseries, version=THGNT] +% \begin{hanging} +% \vs{28}Καὶ ἐξῆλθεν ἡ ἀκοὴ αὐτοῦ εὐθὺς πανταχοῦ +% εἰς ὅλην τὴν περίχωρον τῆς Γαλιλαίας. +% +% \vs{29}Καὶ εὐθὺς ἐκ τῆς συναγωγῆς ἐξελθόντες +% ἦλθον εἰς τὴν οἰκίαν Σίμωνος καὶ Ἀνδρέου μετὰ +% Ἰακώβου καὶ Ἰωάννου. \vs{30}ἡ δὲ πενθερὰ +% Σίμωνος κατέκειτο πυρέσσουσα, καὶ εὐθὺς +% λέγουσιν αὐτῷ περὶ αὐτῆς. +% \end{hanging} +% \end{scripture} +% \end{scriptureexample} +% +% \changes{v2.1}{2024/12/17}{Add \opt{hanging/verse/right} option} +% \begin{option}[added=2024-12-17]{hanging/verse/right} +% \begin{syntax} +% hanging/verse/right = \meta{boolean} \hfill Default: true +% \end{syntax} +% Align verse numbers in \env{hanging} environments at the left margin of +% the \env{hanging} environment. The verse numbers overlap to the left. This +% is only used for verses at the start of a paragraph. This option is the +% opposite of \opt{hanging/verse/left}. +% \end{option} +% +% \changes{v2.1}{2024/12/17}{Add \opt{hanging/verse/sep} option} +% \begin{option}[added=2024-12-17]{hanging/verse/sep} +% \begin{syntax} +% hanging/verse/sep = \meta{dimen} \hfill Default: 0.05em +% \end{syntax} +% \meta{|dimen|} used to separate a \fn{vs} from the following text in a +% \env{hanging} environment. This is only used for verses at the start of a +% paragraph. +% \end{option} +% % \subsubsection{Options for the \env{midparachap} environment} % \label{midparachapoptions} % % If these options are passed directly to the \env{midparachap} environment -% rather than to the package, \cs{scripturesetup} or the \env{scripture} +% rather than to the package, \fn{scripturesetup} or the \env{scripture} % environment, then the |midparachap/| prefix should be dropped. % % \begin{option}{midparachap/hideverse} % \begin{syntax} % midparachap/hideverse = \meta{boolean} \hfill Default: false % \end{syntax} -% Whether a \cs{vs}|{1}| should automatically be inserted after a \cs{ch} -% when the \cs{ch} occurs mid-paragraph. This also affects \cs{ch} in -% \env{poetry} environments. \cs{extraskip} begins a new paragraph in a -% \env{poetry} environment. The value of \meta{|boolean|} is optional and +% Whether a \fn{vs}|{1}| should automatically be inserted after a \fn{ch} +% when the \fn{ch} occurs mid-paragraph. This also affects \fn{ch} in +% \env{poetry} environments. The value of \meta{|boolean|} is optional and % assumed to be \val{true} if not present. This option is the opposite of % \opt{midparachap/showverse}. See also \opt{chapter/showverse}. % \end{option} @@ -2079,10 +3000,9 @@ % \begin{syntax} % midparachap/showverse = \meta{boolean} \hfill Default: true % \end{syntax} -% Whether a \cs{vs}|{1}| should automatically be inserted after a \cs{ch} -% when the \cs{ch} occurs mid-paragraph. This also affects \cs{ch} in -% \env{poetry} environments. \cs{extraskip} begins a new paragraph in a -% \env{poetry} environment. The value of \meta{|boolean|} is optional and +% Whether a \fn{vs}|{1}| should automatically be inserted after a \fn{ch} +% when the \fn{ch} occurs mid-paragraph. This also affects \fn{ch} in +% \env{poetry} environments. The value of \meta{|boolean|} is optional and % assumed to be \val{true} if not present. This option is the opposite of % \opt{midparachap/hideverse}. See also \opt{chapter/showverse}. % \end{option} @@ -2091,7 +3011,7 @@ % \label{narrowoptions} % % If these options are passed directly to the \env{narrow} environment rather -% than to the package, \cs{scripturesetup} or the \env{scripture} environment, +% than to the package, \fn{scripturesetup} or the \env{scripture} environment, % then the |narrow/| prefix should be dropped. % % \begin{option}{narrow/aboveskip} @@ -2126,7 +3046,7 @@ % \label{poetryoptions} % % If these options are passed directly to the \env{poetry} environment rather -% than to the package, \cs{scripturesetup} or the \env{scripture} environment, +% than to the package, \fn{scripturesetup} or the \env{scripture} environment, % then the |poetry/| prefix should be dropped. % % \begin{option}{poetry/aboveskip} @@ -2185,7 +3105,7 @@ % % \begin{scriptureexample}[lefthand ratio=0.65] % \begin{verbatim} -% \begin{scripture}[Atcs 15:15--18]% +% \begin{scripture}[Acts 15:15--18]% % [poetry/leftmargin=2em, poetry/verse/left] % \vs{15}The words of the prophets are in % agreement with this, as it is written: @@ -2207,7 +3127,7 @@ % % \tcblower % -% \begin{scripture}[Atcs 15:15--18]% +% \begin{scripture}[Acts 15:15--18]% % [poetry/leftmargin=2em, poetry/verse/left] % \vs{15}The words of the prophets are in % agreement with this, as it is written: @@ -2240,9 +3160,9 @@ % \changes{v1.1}{2022/07/31}{Add \opt{poetry/verse/sep} option} % \begin{option}[added=2022-07-31]{poetry/verse/sep} % \begin{syntax} -% poetry/verse/sep = \meta{dimen} \hfill Default: 0.05 em +% poetry/verse/sep = \meta{dimen} \hfill Default: 0.05em % \end{syntax} -% \meta{|dimen|} used to separate a \cs{vs} from the following text in a +% \meta{|dimen|} used to separate a \fn{vs} from the following text in a % \env{poetry} environment. This is only used for verses at the start of a % line. % \end{option} @@ -2260,10 +3180,27 @@ % % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}[2022-11-01] -\ProvidesExplPackage{scripture}{2023/12/27}{2.0} +\ProvidesExplPackage{scripture}{2025/01/02}{2.1} {Format Scripture Quotations (DCP)} % \end{macrocode} % +% \subsection{Hacks and workarounds} +% +% Work around odd interaction between \cs{textdir} and display math. See +% \url{https://tex.stackexchange.com/q/716621/87678}. +% +% \begin{macrocode} +\bool_new:N \l_@@_textdir_change_in_group_bool +\cs_new_protected:Nn \@@_set_textdirection: + { + \sys_if_engine_luatex:T + { + \textdirection \int_use:N \textdirection + \bool_set_true:N \l_@@_textdir_change_in_group_bool + } + } +% \end{macrocode} +% % \subsection{Messages} % % \env{scripture} environments along with all internal environments can not be @@ -2295,6 +3232,18 @@ have~been~loaded~and~set~up.~Ignoring~option~language=#1. } % \end{macrocode} % +% Error if an \fn{heading} is not used in the main \env{scripture} +% environment. +% +% \begin{macrocode} +\msg_new:nnnn { scripture } { heading-error } + { \token_to_str:N \heading \c_space_tl not~support~within~inner~ + environments. } + { You~have~tried~to~use~\token_to_str:N \heading \c_space_tl within~the~ + `#1'~environment,~but~this~macro~is~only~supported~in~the~main~ + `scripture'~environment. } +% \end{macrocode} +% % Error if an unknown \opt{style} is requested. % % \begin{macrocode} @@ -2321,6 +3270,12 @@ , added / format .cs_set:Np = \@@_added_format:n #1 , added / format .value_required:n = true , added / format .initial:n = \emph { #1 } + , after .tl_set:N = \l_@@_after_tl + , after .value_required:n = true + , after .initial:n = + , before .tl_set:N = \l_@@_before_tl + , before .value_required:n = true + , before .initial:n = , belowskip .tl_set:N = \l_@@_belowskip_tl , belowskip .value_required:n = true , belowskip .initial:n = \c_zero_skip @@ -2331,6 +3286,26 @@ , compact .bool_set:N = \l_@@_compact_bool , compact .default:n = true , compact .initial:n = false + , chapter / align .choices:nn = { left, right } + { + \tl_if_exist:NF \l_@@_chapter_align_tl + { \tl_new:N \l_@@_chapter_align_tl } + \str_case:Vn \l_keys_choice_tl + { + { left } + { + \tl_set:Nn \l_@@_chapter_align_tl + { l } + } + { right } + { + \tl_set:Nn \l_@@_chapter_align_tl + { r } + } + } + } + , chapter / align .value_required:n = true + , chapter / align .initial:n = left , chapter / font .tl_set:N = \l_@@_chap_font_tl , chapter / font .value_required:n = true , chapter / font .initial:n = \bfseries @@ -2348,21 +3323,115 @@ , chapter / hide .default:n = true , chapter / nodrop .bool_set_inverse:N = \l_@@_chap_drop_bool , chapter / nodrop .default:n = true + , chapter / para .bool_set:N = \l_@@_chap_para_bool + , chapter / para .default:n = true + , chapter / para .initial:n = false + , chapter / para / aboveskip .tl_set:N = \l_@@_chap_para_aboveskip_tl + , chapter / para / aboveskip .value_required:n = true + , chapter / para / aboveskip .initial:n = \bigskipamount + , chapter / para / belowskip .tl_set:N = \l_@@_chap_para_belowskip_tl + , chapter / para / belowskip .value_required:n = true + , chapter / para / belowskip .initial:n = \medskipamount + , chapter / para / indent .code:n = { + \bool_set:Nn + \l_@@_chap_para_afterindent_bool + { \str_if_eq_p:nn { #1 } { true } } + } + , chapter / para / indent .default:n = true + , chapter / para / indent .initial:n = true , chapter / sep .tl_set:N = \l_@@_chap_sep_tl , chapter / sep .value_required:n = true - , chapter / sep .initial:n = 0.5 em + , chapter / sep .initial:n = 0.5em , chapter / show .bool_set:N = \l_@@_chap_show_bool , chapter / show .default:n = true , chapter / show .initial:n = true , chapter / showverse .bool_set:N = \l_@@_chap_show_verse_bool , chapter / showverse .default:n = true , chapter / showverse .initial:n = false + , chapter / smash .bool_set:N = \l_@@_chap_smash_bool + , chapter / smash .default:n = true + , chapter / smash .initial:n = false + , chapter / valign .choices:nn = { bottom, middle, top } + { + \tl_if_exist:NF \l_@@_chapter_valign_tl + { \tl_new:N \l_@@_chapter_valign_tl } + \str_case:Vn \l_keys_choice_tl + { + { bottom } + { + \tl_set:Nn \l_@@_chapter_valign_tl + { b } + } + { middle } + { + \tl_set:Nn \l_@@_chapter_valign_tl + { vc } + } + { top } + { + \tl_set:Nn \l_@@_chapter_valign_tl + { t } + } + } + } + , chapter / valign .value_required:n = true + , chapter / valign .initial:n = bottom + , chapter / xchar .tl_set:N = \l_@@_X_char_tl + , chapter / xchar .value_required:n = true + , chapter / xchar .initial:n = X + , defaults .code:n = \cs_if_exist_use:N \@@_setup_reset_defaults: + , defaults .value_forbidden:n = true , extraskip .tl_set:N = \l_@@_extraskip_tl , extraskip .value_required:n = true , extraskip .initial:n = \medskipamount , font .tl_set:N = \l_@@_font_tl , font .value_required:n = true , font .initial:n = + , heading / aboveskip .tl_set:N = \l_@@_heading_aboveskip_tl + , heading / aboveskip .value_required:n = true + , heading / aboveskip .initial:n = \bigskipamount + , heading / afterindent .bool_set:N = \l_@@_heading_afterindent_bool + , heading / afterindent .default:n = true + , heading / afterindent .initial:n = false + , heading / align .choices:nn = { left, right, center } + { + \tl_if_exist:NF \l_@@_heading_align_tl + { \tl_new:N \l_@@_heading_align_tl } + \str_case:Vn \l_keys_choice_tl + { + { left } + { + \tl_set:Nn \l_@@_heading_align_tl + { \raggedright } + } + { right } + { + \tl_set:Nn \l_@@_heading_align_tl + { \raggedleft } + } + { center } + { + \tl_set:Nn \l_@@_heading_align_tl + { \centering } + } + } + } + , heading / align .value_required:n = true + , heading / align .initial:n = left + , heading / belowskip .tl_set:N = \l_@@_heading_belowskip_tl + , heading / belowskip .value_required:n = true + , heading / belowskip .initial:n = \medskipamount + , heading / font .tl_set:N = \l_@@_heading_font_tl + , heading / font .value_required:n = true + , heading / font .initial:n = \small\itshape + , heading / format .cs_set:Np = \@@_heading_format:n #1 + , heading / format .value_required:n = true + , heading / format .initial:n = #1 + , heading / hide .bool_set_inverse:N = \l_@@_heading_show_bool + , heading / hide .default:n = true + , heading / show .bool_set:N = \l_@@_heading_show_bool + , heading / show .default:n = true + , heading / show .initial:n = true , indent .bool_set:N = \l_@@_indent_bool , indent .default:n = true , indent .initial:n = true @@ -2371,16 +3440,16 @@ , inline .initial:n = false , inline / begin .tl_set:N = \l_@@_inline_begin_tl , inline / begin .value_required:n = true - , inline / begin .initial:n = ``\, + , inline / begin .initial:n = `` , inline / end .tl_set:N = \l_@@_inline_end_tl , inline / end .value_required:n = true - , inline / end .initial:n = \,'' + , inline / end .initial:n = '' , inline / reference / format .cs_set:Np = \@@_inline_ref_format:n #1 , inline / reference / format .value_required:n = true , inline / reference / format .initial:n = (#1) , inline / reference / sep .tl_set:N = \l_@@_inline_ref_sep_tl , inline / reference / sep .value_required:n = true - , inline / reference / sep .initial:n = 0.5 em + , inline / reference / sep .initial:n = 0.5em , inline / version / delim .tl_set:N = \l_@@_inline_version_delim_tl , inline / version / delim .value_required:n = true , inline / version / delim .initial:n = \c_space_tl @@ -2410,6 +3479,12 @@ , parskip .tl_set:N = \l_@@_parskip_tl , parskip .value_required:n = true , parskip .initial:n = \parskip + , pilcrow .bool_set:N = \l_@@_pilcrow_bool + , pilcrow .default:n = true + , pilcrow .initial:n = false + , pilcrow / sep .tl_set:N = \l_@@_pilcrow_sep_tl + , pilcrow / sep .value_required:n = true + , pilcrow / sep .initial:n = 0.25em , redletter .bool_set:N = \l_@@_red_letter_bool , redletter .default:n = true , redletter .initial:n = false @@ -2437,9 +3512,28 @@ , reference / format .initial:n = #1 , reference / newline .meta:n = { reference / sep = \linewidth } , reference / newline .value_forbidden:n = true + , reference / position .choices:nn = { start, end } + { + \tl_if_exist:NF \l_@@_ref_position_tl + { \tl_new:N \l_@@_ref_position_tl } + \tl_set_eq:NN \l_@@_ref_position_tl \l_keys_choice_tl + } + , reference / position .value_required:n = true + , reference / position .initial:n = end , reference / sep .tl_set:N = \l_@@_ref_sep_tl , reference / sep .value_required:n = true - , reference / sep .initial:n = 2 em + , reference / sep .initial:n = 2em + , reference / start / inline .bool_set_inverse:N = \l_@@_ref_start_newline_bool + , reference / start / inline .default:n = true + , reference / start / newline .bool_set:N = \l_@@_ref_start_newline_bool + , reference / start / newline .default:n = true + , reference / start / newline .initial:n = false + , reference / start / sep .tl_set:N = \l_@@_ref_start_sep_tl + , reference / start / sep .value_required:n = true + , reference / start / sep .initial:n = 1em + , reference / start / vsep .tl_set:N = \l_@@_ref_vertical_sep_tl + , reference / start / vsep .value_required:n = true + , reference / start / vsep .initial:n = 0pt , rightmargin .tl_set:N = \l_@@_rightmargin_tl , rightmargin .value_required:n = true , rightmargin .initial:n = \c_zero_dim @@ -2454,7 +3548,7 @@ , selah / format .initial:n = #1 , selah / sep .tl_set:N = \l_@@_selah_sep_tl , selah / sep .value_required:n = true - , selah / sep .initial:n = 1 em + , selah / sep .initial:n = 1em , style .choice: , style / unknown .code:n = \msg_error:nnx { scripture } @@ -2462,7 +3556,7 @@ { \exp_not:n {#1} } , textright / sep .tl_set:N = \l_@@_text_right_sep_tl , textright / sep .value_required:n = true - , textright / sep .initial:n = 1 em + , textright / sep .initial:n = 1em , verse / colour .tl_set:N = \l_@@_verse_colour_tl , verse / colour .value_required:n = true , verse / colour .initial:n = . @@ -2484,9 +3578,15 @@ , verse / format .initial:n = \textsuperscript{#1} , verse / hide .bool_set_inverse:N = \l_@@_verse_show_bool , verse / hide .default:n = true + , verse / para .bool_set:N = \l_@@_verse_para_bool + , verse / para .default:n = true + , verse / para .initial:n = false + , verse / para / indent .tl_set:N = \l_@@_para_indent_tl + , verse / para / indent .value_required:n = true + , verse / para / indent .initial:n = \l_@@_parindent_tl , verse / sep .tl_set:N = \l_@@_verse_sep_tl , verse / sep .value_required:n = true - , verse / sep .initial:n = 0.05 em + , verse / sep .initial:n = 0.05em , verse / show .bool_set:N = \l_@@_verse_show_bool , verse / show .default:n = true , verse / show .initial:n = true @@ -2499,6 +3599,14 @@ , version / format .cs_set:Np = \@@_version_format:n #1 , version / format .value_required:n = true , version / format .initial:n = (#1) + , version / position .choices:nn = { withref, end } + { + \tl_if_exist:NF \l_@@_version_position_tl + { \tl_new:N \l_@@_version_position_tl } + \tl_set_eq:NN \l_@@_version_position_tl \l_keys_choice_tl + } + , version / position .value_required:n = true + , version / position .initial:n = withref % \end{macrocode} % Options for the \env{center} environment. % \begin{macrocode} @@ -2538,15 +3646,26 @@ , hanging / belowskip .tl_set:N = \l_@@_hanging_belowskip_tl , hanging / belowskip .value_required:n = true , hanging / belowskip .initial:n = \medskipamount + , hanging / chapter / indent .bool_set:N = \l_@@_hanging_chapter_indent_bool + , hanging / chapter / indent .default:n = true + , hanging / chapter / indent .initial:n = true , hanging / hang .tl_set:N = \l_@@_hanging_hang_tl , hanging / hang .value_required:n = true - , hanging / hang .initial:n = 2 em + , hanging / hang .initial:n = 2em , hanging / leftmargin .tl_set:N = \l_@@_hanging_leftmargin_tl , hanging / leftmargin .value_required:n = true - , hanging / leftmargin .initial:n = 1 em + , hanging / leftmargin .initial:n = 1em , hanging / rightmargin .tl_set:N = \l_@@_hanging_rightmargin_tl , hanging / rightmargin .value_required:n = true , hanging / rightmargin .initial:n = \c_zero_dim + , hanging / verse / left .bool_set_inverse:N = \l_@@_hanging_verse_right_bool + , hanging / verse / left .default:n = true + , hanging / verse / right .bool_set:N = \l_@@_hanging_verse_right_bool + , hanging / verse / right .default:n = true + , hanging / verse / right .initial:n = true + , hanging / verse / sep .tl_set:N = \l_@@_hanging_verse_sep_tl + , hanging / verse / sep .value_required:n = true + , hanging / verse / sep .initial:n = 0.05em % \end{macrocode} % Options for the mid-paragraph chapters (including the \env{midparachap} environment). % \begin{macrocode} @@ -2566,10 +3685,10 @@ , narrow / belowskip .initial:n = \medskipamount , narrow / leftmargin .tl_set:N = \l_@@_narrow_leftmargin_tl , narrow / leftmargin .value_required:n = true - , narrow / leftmargin .initial:n = 1 em + , narrow / leftmargin .initial:n = 1em , narrow / rightmargin .tl_set:N = \l_@@_narrow_rightmargin_tl , narrow / rightmargin .value_required:n = true - , narrow / rightmargin .initial:n = 1 em + , narrow / rightmargin .initial:n = 1em % \end{macrocode} % Options for the \env{poetry} environment. % \begin{macrocode} @@ -2581,13 +3700,13 @@ , poetry / belowskip .initial:n = \medskipamount , poetry / bigindent .tl_set:N = \l_@@_poetry_big_indent_tl , poetry / bigindent .value_required:n = true - , poetry / bigindent .initial:n = 4 em + , poetry / bigindent .initial:n = 4em , poetry / indent .tl_set:N = \l_@@_poetry_indent_tl , poetry / indent .value_required:n = true - , poetry / indent .initial:n = 1 em + , poetry / indent .initial:n = 1em , poetry / leftmargin .tl_set:N = \l_@@_poetry_leftmargin_tl , poetry / leftmargin .value_required:n = true - , poetry / leftmargin .initial:n = 1 em + , poetry / leftmargin .initial:n = 1em , poetry / rightmargin .tl_set:N = \l_@@_poetry_rightmargin_tl , poetry / rightmargin .value_required:n = true , poetry / rightmargin .initial:n = \c_zero_dim @@ -2598,7 +3717,7 @@ , poetry / verse / right .initial:n = true , poetry / verse / sep .tl_set:N = \l_@@_poetry_verse_sep_tl , poetry / verse / sep .value_required:n = true - , poetry / verse / sep .initial:n = 0.05 em + , poetry / verse / sep .initial:n = 0.05em } % \end{macrocode} % Process package options. @@ -2606,6 +3725,128 @@ \ProcessKeyOptions % \end{macrocode} % +% Create interface to reset all keys to defaults. +% \begin{macrocode} +\tl_new:N \l_@@_default_options_tl +\keys_precompile:nnN { scripture } + { + , aboveskip = \c_zero_skip + , added / font = + , added / format = \emph { #1 } + , after = + , before = + , belowskip = \c_zero_skip + , colour = . + , compact = false + , chapter / align = left + , chapter / font = \bfseries + , chapter / colour = . + , chapter / drop = true + , chapter / format = #1 + , chapter / para = false + , chapter / para / aboveskip = \bigskipamount + , chapter / para / belowskip = \medskipamount + , chapter / para / indent = true + , chapter / sep = 0.5em + , chapter / show = true + , chapter / showverse = false + , chapter / smash = false + , chapter / valign = bottom + , chapter / xchar = X + , extraskip = \medskipamount + , font = + , heading / aboveskip = \bigskipamount + , heading / afterindent = false + , heading / align = left + , heading / belowskip = \medskipamount + , heading / font = \small\itshape + , heading / format = #1 + , heading / show = true + , indent = true + , inline = false + , inline / begin = `` + , inline / end = '' + , inline / reference / format = (#1) + , inline / reference / sep = 0.5em + , inline / version / delim = \c_space_tl + , inline / version / format = #1 + , language = + , language / variant = + , leftmargin = \c_zero_dim + , name / font = \scshape + , name / format = #1 + , parindent = \parindent + , parskip = \parskip + , pilcrow = false + , pilcrow / sep = 0.25em + , redletter = false + , redletter / colour = red!80!black + , reference / align = right + , reference / colour = . + , reference / font = \bfseries + , reference / format = #1 + , reference / position = end + , reference / sep = 2em + , reference / start / newline = false + , reference / start / sep = 1em + , reference / start / vsep = 0pt + , rightmargin = \c_zero_dim + , selah / text = Selah + , selah / font = \itshape + , selah / format = #1 + , selah / sep = 1em + , textright / sep = 1em + , verse / colour = . + , verse / first = false + , verse / firstformat = #1 + , verse / firstsep = 0.5em + , verse / font = + , verse / format = \textsuperscript{#1} + , verse / para = false + , verse / para / indent = \l_@@_parindent_tl + , verse / sep = 0.05em + , verse / show = true + , version = + , version / delim = \c_space_tl + , version / format = (#1) + , version / position = withref + , center / aboveskip = \medskipamount + , center / belowskip = \medskipamount + , center / leftmargin = \c_zero_dim + , center / rightmargin = \c_zero_dim + , flushright / aboveskip = \medskipamount + , flushright / belowskip = \medskipamount + , flushright / leftmargin = \c_zero_dim + , flushright / rightmargin = \c_zero_dim + , hanging / aboveskip = \medskipamount + , hanging / belowskip = \medskipamount + , hanging / chapter / indent = true + , hanging / hang = 2em + , hanging / leftmargin = 1em + , hanging / rightmargin = \c_zero_dim + , hanging / verse / right = true + , hanging / verse / sep = 0.05em + , midparachap / showverse = true + , narrow / aboveskip = \medskipamount + , narrow / belowskip = \medskipamount + , narrow / leftmargin = 1em + , narrow / rightmargin = 1em + , poetry / aboveskip = \medskipamount + , poetry / belowskip = \medskipamount + , poetry / bigindent = 4em + , poetry / indent = 1em + , poetry / leftmargin = 1em + , poetry / rightmargin = \c_zero_dim + , poetry / verse / right = true + , poetry / verse / sep = 0.05em + } + \l_@@_default_options_tl +\cs_new_protected:Nn \@@_setup_reset_defaults: + { + \l_@@_default_options_tl + } +% \end{macrocode} +% % \begin{macro}{\@@_setup_style:nnn} % Specify options which can later be activated using the \opt{style} option. % If the first argument is \val{true}, then the options are appended rather @@ -2635,14 +3876,25 @@ % \begin{hooks}{scripture/chap/before, scripture/chap/after, % scripture/verse/before, scripture/verse/after} % Hooks for before and after chapters and verses. The current chapter and -% verse is available in the hooks as \cs{scripturecurrentchapter} and -% \cs{scripturecurrentverse} respectively. These are global. +% verse is available in the hooks as \fn{scripturecurrentchapter} and +% \fn{scripturecurrentverse} respectively. These are global. % \begin{macrocode} \hook_new_pair:nn { scripture / chap / before } { scripture / chap / after } \hook_new_pair:nn { scripture / verse / before } { scripture / verse / after } % \end{macrocode} % \end{hooks} % +% \begin{hooks}{scripture/pilcrow, scripture/poetry/pilcrow} +% These are internal hooks used to insert a pilcrow at the beginning of a +% paragraph. Pilcrows are activated using the \opt{pilcrow} option and are +% only in effect when the \opt{verse/para} and/or \opt{compact} options are in +% use. +% \begin{macrocode} +\hook_new:n { scripture / pilcrow } +\hook_new:n { scripture / poetry / pilcrow } +% \end{macrocode} +% \end{hooks} +% % \subsection{The main \env{scripture} environment} % % \begin{macro}{\l_@@_active_bool, \l_@@_active_inner_bool} @@ -2653,6 +3905,14 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\g_@@_mode_vertical_inner_bool} +% Whether an inner environment is starting in vertical mode. This flag is +% only used with the \opt{compact} and \opt{verse/para} options. +% \begin{macrocode} +\bool_new:N \g_@@_mode_vertical_inner_bool +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\l_@@_clubpenalty_saved_int} % Holds saved club penalty so we can change and restore it around chapter % breaks. @@ -2686,15 +3946,33 @@ % \begin{macrocode} \cs_new_protected_nopar:Nn \@@_setup_list_noindent:n { - \legacy_if:nT {@newlist} + \legacy_if:nT { @newlist } { \cs_set_protected_nopar:Npn \noindent { \skip_horizontal:n { -#1 } + \bool_if:NT \l_@@_verse_para_bool + { + \peek_meaning:NTF \vs + { + \bool_gset_true:N \g_@@_suppress_next_verse_para_bool + \@@_set_pilcrow_hook: + } + { + \str_if_eq:VnF \l_@@_currenvir_str { poetry } + { \@@_pilcrow_output: } + } + } } \hook_gput_next_code:nn { para / end } { - \cs_gset_eq:NN \noindent \tex_noindent:D + \bool_if:NTF \l_@@_verse_para_bool + { + \str_if_eq:VnTF \l_@@_currenvir_str { poetry } + { \cs_set_eq:NN \noindent \tex_noindent:D } + { \cs_set_eq:NN \noindent \@@_para_noindent: } + } + { \cs_set_eq:NN \noindent \tex_noindent:D } } } } @@ -2722,12 +4000,13 @@ % \begin{macro}{\@@_extra_skip:} % Insert a little extra vertical space between two paragraphs. This function % tests if the previous paragraph is only one line in length and began -% with a \cs{ch} function. If this condition is met, more space is added +% with a \fn{ch} function. If this condition is met, more space is added % if necessary to avoid the following paragraph clashing with the drop % chapter. % \begin{macrocode} \cs_new_protected:Nn \@@_extra_skip: { + \mode_if_vertical:F \para_end: \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1 { @@ -2788,10 +4067,10 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_format_full_ref:n} +% \begin{macro}{\@@_format_full_ref:nn} % Format a scripture quotation with its reference. % \begin{macrocode} -\cs_new_protected:Nn \@@_format_full_ref:n +\cs_new_protected:Nn \@@_format_full_ref:nn { \group_begin: \l_@@_ref_font_tl @@ -2803,11 +4082,11 @@ % \end{macrocode} % Append a Bible version if it has been specified. % \begin{macrocode} - \tl_if_empty:NF \l_@@_version_tl + \tl_if_empty:oF { #2 } { - \tl_if_empty:nF { #1 } + \tl_if_empty:oF { #1 } { \l_@@_version_delim_tl } - \@@_version_format:n { \l_@@_version_tl } + \@@_version_format:n { #2 } } } \group_end: @@ -2822,7 +4101,7 @@ { \hbox_set:Nn \l_@@_ref_box { - \@@_format_full_ref:n { #1 } + \@@_format_full_ref:nn { #1 } \l_@@_version_tl } \dim_compare:nNnT { \box_wd:N \l_@@_ref_box + \g_@@_final_line_dim + \l_@@_ref_sep_tl } @@ -2850,6 +4129,404 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\@@_reference_start_inline:} +% Output the reference for the Scripture quotation when inline at the start. +% \begin{macrocode} +\cs_new_protected:Nn \@@_reference_start_inline: + { + \tl_if_empty:NF \l_@@_ref_tl + { + \tl_if_eq:NnTF \l_@@_version_position_tl { withref } + { \@@_format_full_ref:nn { \l_@@_ref_tl } { \l_@@_version_tl } } + { \@@_format_full_ref:nn { \l_@@_ref_tl } { } } + \skip_horizontal:N \l_@@_ref_start_sep_tl + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_reference_start_newline:} +% Output the reference for the Scripture quotation when on a new line at the +% start. +% \begin{macrocode} +\cs_new_protected:Nn \@@_reference_start_newline: + { + \tl_if_empty:NF \l_@@_ref_tl + { + \bool_gset_eq:NN \g_tmpa_bool \g_@@_suppress_next_pilcrow_bool + \bool_gset_true:N \g_@@_suppress_next_pilcrow_bool + \noindent + \bool_gset_eq:NN \g_@@_suppress_next_pilcrow_bool \g_tmpa_bool + \str_if_eq:VnF \l_@@_currenvir_str { scripture } + { \skip_horizontal:n { -\leftmargin } } + \tl_if_eq:NnTF \l_@@_version_position_tl { withref } + { \@@_format_full_ref:nn { \l_@@_ref_tl } { \l_@@_version_tl } } + { \@@_format_full_ref:nn { \l_@@_ref_tl } { } } + \bool_lazy_or:nnT + { \str_if_eq_p:Vn \l_@@_currenvir_str { flushright } } + { \str_if_eq_p:Vn \l_@@_currenvir_str { center } } + { + \hfill + \strut + } + \bool_if:NTF \l_@@_compact_bool + { \para_end: } + { + \bool_lazy_all:nTF + { + { \l_@@_verse_para_bool } + { \bool_not_p:n { \str_if_eq_p:Vn \l_@@_currenvir_str { hanging } } } + { \bool_not_p:n { \str_if_eq_p:Vn \l_@@_currenvir_str { poetry } } } + } + { \para_end: } + { \par } + } + \nobreak + \@afterheading + \addvspace { \l_@@_ref_vertical_sep_tl } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_reference_start_peek:} +% Peek ahead at the beginning of the \env{scripture} environment to control +% how references are inserted at the start of a quotation. +% \begin{macrocode} +\cs_new_protected:Nn \@@_reference_start_peek: + { + \peek_remove_spaces:n + { + \bool_lazy_and:nnTF + { \str_if_eq_p:Vn \l_@@_ref_position_tl { start } } + { \bool_not_p:n { \tl_if_empty_p:N \l_@@_ref_tl } } + { + \bool_lazy_or:nnF + { \str_if_eq_p:Vn \l_@@_currenvir_str { scripture } } + { \str_if_eq_p:Vn \l_@@_currenvir_str { midparachap } } + { + \bool_if:NF \l_@@_compact_bool + { \bool_set_true:N \l_@@_ref_start_newline_bool } + } + \peek_analysis_map_inline:n + { + \bool_case:nF + { + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \heading } + { \@@_reference_start_newline: } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \noindent } + { + \bool_if:NTF \l_@@_ref_start_newline_bool + { \@@_reference_start_newline: } + { \@@_reference_start_inline: } + } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \nohang } + { + \bool_if:NTF \l_@@_ref_start_newline_bool + { \@@_reference_start_newline: } + { \@@_reference_start_inline: } + } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \nopilcrow } + { + \bool_if:NTF \l_@@_ref_start_newline_bool + { \@@_reference_start_newline: } + { \@@_reference_start_inline: } + \peek_analysis_map_break:n + { + ##1 + \@@_fix_protrusion:n { } + } + } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \begin } + { + \bool_if:NF \l_@@_indent_bool + { + \hook_gput_next_code:nn { para / begin } + { + \bool_lazy_or:nnT + { \str_if_eq_p:Vn \l_@@_currenvir_str { midparachap } } + { \str_if_eq_p:Vn \l_@@_currenvir_str { scripture } } + { \para_omit_indent: } + } + } + } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \ch } + { + \bool_if:NTF \l_@@_ref_start_newline_bool + { \@@_reference_start_newline: } + { + \cs_set_eq:NN \@@_temp_ch \ch + \RenewDocumentCommand \ch { s o m } + { + \tl_if_novalue:nF { ##2 } + { + \tl_set:Nn \l_@@_X_char_tl { ##2 } + } + \cs_set_eq:NN \ch \@@_temp_ch + } + \@@_reference_start_inline: + } + } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \vs } + { + \bool_if:NTF \l_@@_ref_start_newline_bool + { \@@_reference_start_newline: } + { + \cs_set_eq:NN \@@_temp_vs \vs + \RenewDocumentCommand \vs { m } + { \cs_set_eq:NN \vs \@@_temp_vs } + \@@_reference_start_inline: + } + } + } + { + \bool_if:NTF \l_@@_ref_start_newline_bool + { + \@@_reference_start_newline: + \bool_if:NTF \l_@@_compact_bool + { + \bool_if:NT \g_@@_mode_vertical_inner_bool + { \@@_pilcrow_output: } + } + { + \str_if_eq:VnF \l_@@_currenvir_str { poetry } + { \@@_pilcrow_output: } + } + } + { \@@_reference_start_inline: } + } + \exp_args:No \token_if_eq_meaning:NNF { ##1 } \begin + { + \tl_clear:N \l_@@_ref_tl + \tl_if_eq:NnF \l_@@_version_position_tl { end } + { \tl_clear:N \l_@@_version_tl } + } + \peek_analysis_map_break:n + { \@@_fix_protrusion:o { ##1 } } + } + } + { + \peek_analysis_map_inline:n + { + \bool_case:nF + { + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \heading } + { } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \noindent } + { } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \nohang } + { } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \nopilcrow } + { + \peek_analysis_map_break:n + { + ##1 + \@@_fix_protrusion:n { } + } + } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \begin } + { + \bool_if:NF \l_@@_indent_bool + { + \hook_gput_next_code:nn { para / begin } + { + \bool_lazy_or:nnT + { \str_if_eq_p:Vn \l_@@_currenvir_str { midparachap } } + { \str_if_eq_p:Vn \l_@@_currenvir_str { scripture } } + { \para_omit_indent: } + } + } + } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \ch } + { } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \vs } + { + \mode_if_vertical:F + { \@@_set_pilcrow_hook: } + } + } + { + \bool_if:NTF \l_@@_compact_bool + { + \bool_if:NT \g_@@_mode_vertical_inner_bool + { \@@_pilcrow_output: } + } + { + \str_if_eq:VnF \l_@@_currenvir_str { poetry } + { \@@_pilcrow_output: } + } + } + \peek_analysis_map_break:n + { + \@@_fix_protrusion:o { ##1 } + } + } + } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_compact_par:} +% \cs{par} macro used when the \opt{compact} option is in use. +% \begin{macrocode} +\cs_new_protected:Nn \@@_compact_par: + { + \bool_gset_false:N \g_@@_mode_vertical_inner_bool + \dim_set:Nn \parindent { \l_@@_parindent_tl } + \peek_remove_spaces:n + { + \peek_analysis_map_inline:n + { + \bool_case:n + { + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \begin } + { \bool_gset_true:N \g_@@_mode_vertical_inner_bool } + { \str_if_eq_p:Vn \l_@@_currenvir_str { poetry } } + { } + { \exp_args:No \token_if_letter_p:N { ##1 } } + { \@@_pilcrow_output: } + { \exp_args:No \token_if_active_p:N { ##1 } } + { \@@_pilcrow_output: } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \vs } + { \@@_set_pilcrow_hook: } + } + \peek_analysis_map_break:n { ##1 } + } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_para_noindent:} +% \cs{noindent} macro used when the \opt{verse/para} option is in use. +% \begin{macrocode} +\cs_new_protected:Nn \@@_para_noindent: + { + \legacy_if:nTF { @newlist } + { + \tex_noindent:D + \peek_meaning:NTF \vs + { + \bool_gset_true:N \g_@@_suppress_next_verse_para_bool + \@@_set_pilcrow_hook: + } + { \@@_pilcrow_output: } + } + { + \peek_meaning:NTF \vs + { + \bool_if:NT \l_@@_verse_para_bool + { \para_end: } + \tex_noindent:D + \bool_gset_true:N \g_@@_suppress_next_verse_para_bool + \@@_set_pilcrow_hook: + } + { \@@_pilcrow_output: } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\g_@@_para_mode_vertical_bool} +% Flag that \cs{@@_para_par:} has been encountered and pilcrow not yet +% printed. +% \begin{macrocode} +\bool_new:N \g_@@_para_mode_vertical_bool +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\g_@@_post_env_indent_box} +% Box to store the indent after an inner environment in the case where it is +% dropped by \cs{@@_dopeend:}. This box is then inserted if the next thing +% is a \fn{vs}. Only used when the \opt{verse/para} option is active. +% \begin{macrocode} +\box_new:N \g_@@_post_env_indent_box +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_para_par:} +% \cs{par} macro used when the \opt{verse/para} option is in use. +% \begin{macrocode} +\cs_new_protected:Nn \@@_para_par: + { + \bool_gset_true:N \g_@@_para_mode_vertical_bool + \dim_set:Nn \parindent { \l_@@_parindent_tl } + \peek_remove_spaces:n + { + \peek_analysis_map_inline:n + { + \bool_case:n + { + { \exp_args:No \token_if_letter_p:N { ##1 } } + { \@@_pilcrow_output: } + { \exp_args:No \token_if_active_p:N { ##1 } } + { \@@_pilcrow_output: } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \vs } + { \@@_set_pilcrow_hook: } + } + \peek_analysis_map_break:n { ##1 } + } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_doendpe:} +% Custom version of \cs{@doendpe} macro used when the \opt{verse/para} +% option is in use. This handles pilcrows after inner environments. +% \begin{macrocode} +\cs_new_protected:Nn \@@_doendpe: + { + \box_gclear:N \g_@@_post_env_indent_box + \legacy_if_set_true:n { @endpe } + \cs_set_nopar:Npn \par + { + \@restorepar + \clubpenalty \@clubpenalty + \everypar { } + \par + \legacy_if_set_false:n { @endpe } + \bool_gset_false:N \g_@@_suppress_next_pilcrow_bool + \@@_para_par: + } + \everypar + { + \box_gset_to_last:N \g_@@_post_env_indent_box + \hook_gput_next_code:nn { para / after } + { \box_gclear:N \g_@@_post_env_indent_box } + \everypar { } + \legacy_if_set_false:n { @endpe } + \bool_gset_true:N \g_@@_suppress_next_pilcrow_bool + \bool_if:NT \l_@@_verse_para_bool + { + \box_set_wd:Nn + \g_@@_post_env_indent_box + { \l_@@_para_indent_tl } + } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_fix_protrusion:n, \@@_fix_protrusion:o} +% The use of \cs{peek} macros breaks protrusion at the beginning of list +% environments. This function checks conditions and add \cs{leftprotrusion}. +% \begin{macrocode} +\cs_new_protected:Nn \@@_fix_protrusion:n + { + \bool_if:NTF \l_@@_compact_bool + { + \str_if_eq:VnT \l_@@_currenvir_str { scripture } + { \cs_if_exist_use:N \leftprotrusion } + } + { \cs_if_exist_use:N \leftprotrusion } + #1 + } +\cs_generate_variant:Nn \@@_fix_protrusion:n { o } +% \end{macrocode} +% \end{macro} +% % \subsubsection{Red lettering} % % \begin{macro}{\g_@@_red_letter_active_bool} @@ -2912,6 +4589,7 @@ { \@ifpackageloaded { babel } { + \@@_set_textdirection: \selectlanguage { \l_@@_language_tl } } { @@ -2972,10 +4650,10 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\l_@@_chap_width_dim} +% \begin{macro}{\g_@@_chap_width_dim} % Calculated width of drop chapter number. % \begin{macrocode} -\dim_new:N \l_@@_chap_width_dim +\dim_new:N \g_@@_chap_width_dim % \end{macrocode} % \end{macro} % @@ -2994,6 +4672,40 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\l_@@_para_chap_indent_dim} +% Indent used to center chapters when placed in their own paragraph. +% \begin{macrocode} +\dim_new:N \l_@@_para_chap_indent_dim +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l_@@_nodrop_chap_coffin} +% Coffin to place non-drop chapters inside. +% \begin{macrocode} +\coffin_new:N \l_@@_nodrop_chap_coffin +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l_@@_nodrop_chap_voffset_dim} +% Vertical offset to use when setting non-drop chapters. +% \begin{macrocode} +\dim_new:N \l_@@_nodrop_chap_voffset_dim +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_get_X_height:} +% Calculate the height of \cs{l_@@_X_char_tl} for vertical alignment of +% non-drop chapters. +% \begin{macrocode} +\cs_new_protected:Nn \@@_get_X_height: + { + \hbox_set:Nn \l_@@_chap_tmp_box { \l_@@_X_char_tl } + \dim_set:Nn \l_@@_chap_X_height_dim + { \box_ht:N \l_@@_chap_tmp_box } + } +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\@@_drop_chap_set_up:n} % Set up chapter drop cap and calculate its various dimensions. % \begin{macrocode} @@ -3001,9 +4713,7 @@ { \cs_gset_nopar:Npn \scripturecurrentchapter { #1 } \cs_gset_nopar:Npn \scripturecurrentverse { 1 } - \hbox_set:Nn \l_@@_chap_tmp_box { X } - \dim_set:Nn \l_@@_chap_X_height_dim - { \box_ht:N \l_@@_chap_tmp_box } + \@@_get_X_height: \dim_set:Nn \l_@@_chap_height_dim { \baselineskip + \l_@@_chap_X_height_dim } \dim_set:Nn \l_@@_chap_fontsize_dim @@ -3024,21 +4734,24 @@ { \exp_args:NV \color_select:n \l_@@_chapter_colour_tl } \@@_chap_format:n { #1 } } - \dim_set:Nn \l_@@_chap_width_dim + \dim_gset:Nn \g_@@_chap_width_dim { \box_wd:N \l_@@_chap_tmp_box } % \end{macrocode} % Avoid breaks in the middle of drop chapters. % \begin{macrocode} \int_set_eq:NN \l_@@_clubpenalty_saved_int \clubpenalty \clubpenalty 10000 - \hook_gput_next_code:nn { para / after } - { - \int_gset_eq:NN \g_@@_chap_par_prevgraf_int \prevgraf - \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1 - { \penalty 10000 } - \hook_gput_next_code:nn { para / before } - { \int_set_eq:NN \clubpenalty \l_@@_clubpenalty_saved_int } - } + \bool_if:NF \l_@@_verse_para_bool + { + \hook_gput_next_code:nn { para / after } + { + \int_gset_eq:NN \g_@@_chap_par_prevgraf_int \prevgraf + \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1 + { \penalty 10000 } + \hook_gput_next_code:nn { para / before } + { \int_set_eq:NN \clubpenalty \l_@@_clubpenalty_saved_int } + } + } } % \end{macrocode} % \end{macro} @@ -3048,16 +4761,26 @@ % \begin{macrocode} \cs_new_protected:Nn \@@_drop_chap_output: { - \noindent + \bool_gset_true:N \g_@@_suppress_next_pilcrow_bool + \cs_if_eq:NNTF \noindent \@@_para_noindent: + { + \legacy_if:nTF { @newlist } + { + \skip_horizontal:n { -\l_@@_parindent_tl } + } + { \tex_noindent:D } + \@@_pilcrow_output: + } + { \noindent } \parshape 3 ~ \dim_eval:n - { \@totalleftmargin + \l_@@_chap_width_dim + \l_@@_chap_sep_tl } ~ + { \@totalleftmargin + \g_@@_chap_width_dim + \l_@@_chap_sep_tl } ~ \dim_eval:n - { \linewidth - \l_@@_chap_width_dim - \l_@@_chap_sep_tl } ~ + { \linewidth - \g_@@_chap_width_dim - \l_@@_chap_sep_tl } ~ \dim_eval:n - { \@totalleftmargin + \l_@@_chap_width_dim + \l_@@_chap_sep_tl } ~ + { \@totalleftmargin + \g_@@_chap_width_dim + \l_@@_chap_sep_tl } ~ \dim_eval:n - { \linewidth - \l_@@_chap_width_dim - \l_@@_chap_sep_tl } ~ + { \linewidth - \g_@@_chap_width_dim - \l_@@_chap_sep_tl } ~ \@totalleftmargin ~ \linewidth \group_begin: @@ -3067,6 +4790,18 @@ \group_end: \bool_if:NT \l_@@_chap_show_verse_bool { \@@_verse_output:n { 1 } } + \bool_if:NT \l_@@_verse_para_bool + { + \hook_gput_next_code:nn { para / after } + { + \int_gset_eq:NN \g_@@_chap_par_prevgraf_int \prevgraf + \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1 + { \penalty 10000 } + \hook_gput_next_code:nn { para / before } + { \int_set_eq:NN \clubpenalty \l_@@_clubpenalty_saved_int } + } + } + \hook_gclear_next_code:n { scripture / pilcrow } } % \end{macrocode} % \end{macro} @@ -3079,21 +4814,58 @@ \cs_gset_nopar:Npn \scripturecurrentchapter { #1 } \cs_gset_nopar:Npn \scripturecurrentverse { 1 } \group_begin: + \bool_if:NT \l_@@_verse_para_bool + { + \legacy_if:nF { @newlist } + { \mode_if_vertical:F \para_end: } + } \bool_if:NTF \l_@@_chap_show_bool { + \@@_get_X_height: + \hcoffin_set:Nn \l_@@_nodrop_chap_coffin + { + \str_if_eq:VnF \l_@@_chapter_colour_tl { . } + { \exp_args:NV \color_select:n \l_@@_chapter_colour_tl } + \l_@@_chap_font_tl + \@@_chap_format:n { #1 } + \kern \l_@@_chap_sep_tl + } + \dim_zero:N \l_@@_nodrop_chap_voffset_dim + \tl_if_eq:NnT \l_@@_chapter_valign_tl { t } + { \dim_set_eq:NN \l_@@_nodrop_chap_voffset_dim \l_@@_chap_X_height_dim } + \tl_if_eq:NnT \l_@@_chapter_valign_tl { vc } + { \dim_set:Nn \l_@@_nodrop_chap_voffset_dim { 0.5 \l_@@_chap_X_height_dim } } \hook_use:n { scripture / chap / before } - \group_begin: - \str_if_eq:VnF \l_@@_chapter_colour_tl { . } - { \exp_args:NV \color_select:n \l_@@_chapter_colour_tl } - \l_@@_chap_font_tl - \@@_chap_format:n { #1 } - \group_end: - \skip_horizontal:N \l_@@_chap_sep_tl + \bool_if:NTF \l_@@_chap_smash_bool + { + \mode_leave_vertical: + \smash + { + \exp_args:NNoo + \coffin_typeset:Nnnnn \l_@@_nodrop_chap_coffin + { \l_@@_chapter_align_tl } + { \l_@@_chapter_valign_tl } + { 0pt } + { \l_@@_nodrop_chap_voffset_dim } + } + } + { + \exp_args:NNoo + \coffin_typeset:Nnnnn \l_@@_nodrop_chap_coffin + { \l_@@_chapter_align_tl } + { \l_@@_chapter_valign_tl } + { 0pt } + { \l_@@_nodrop_chap_voffset_dim } + } + \nobreak + \skip_horizontal:N \c_zero_skip \hook_use:n { scripture / chap / after } \bool_if:NT \l_@@_chap_show_verse_bool { \@@_verse_output:n { 1 } } + \str_if_eq:VnF \l_@@_currenvir_str { midparachap } + { \@@_pilcrow_output: } } { \hook_use:n { scripture / chap / before } @@ -3101,6 +4873,93 @@ \vs { 1 } } \group_end: + \parshape 1 ~ \@totalleftmargin ~ \linewidth + \hook_gclear_next_code:n { scripture / pilcrow } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_para_chap:n} +% Format a chapter in its own paragraph. +% \begin{macrocode} +\cs_new_protected:Nn \@@_para_chap:n + { + \cs_gset_nopar:Npn \scripturecurrentchapter { #1 } + \cs_gset_nopar:Npn \scripturecurrentverse { 1 } + \group_begin: + \skip_zero:N \parskip + \bool_if:NTF \l_@@_chap_show_bool + { + \dim_set_eq:NN \l_@@_para_chap_indent_dim \linewidth + \str_if_eq:VnTF \l_@@_currenvir_str { scripture } + { + \dim_set:Nn \l_@@_para_chap_indent_dim { 0.5 \l_@@_para_chap_indent_dim } + } + { + \dim_add:Nn \l_@@_para_chap_indent_dim { \leftmargin + \rightmargin } + \dim_set:Nn \l_@@_para_chap_indent_dim { 0.5 \l_@@_para_chap_indent_dim } + \dim_sub:Nn \l_@@_para_chap_indent_dim \leftmargin + } + \mode_if_vertical:F \para_end: + \addvspace { \l_@@_chap_para_aboveskip_tl } + \bool_gset_eq:NN \g_tmpa_bool \g_@@_suppress_next_pilcrow_bool + \bool_gset_true:N \g_@@_suppress_next_pilcrow_bool + \str_if_eq:VnTF \l_@@_currenvir_str { midparachap } + { \tex_noindent:D } + { \noindent } + \bool_gset_eq:NN \g_@@_suppress_next_pilcrow_bool \g_tmpa_bool + \skip_horizontal:N \l_@@_para_chap_indent_dim + \hbox_overlap_center:n + { + \hook_use:n { scripture / chap / before } + \group_begin: + \str_if_eq:VnF \l_@@_chapter_colour_tl { . } + { \exp_args:NV \color_select:n \l_@@_chapter_colour_tl } + \l_@@_chap_font_tl + \@@_chap_format:n { #1 } + \group_end: + \hook_use:n { scripture / chap / after } + } + \para_end: + \nobreak + \bool_lazy_any:nTF + { + { \str_if_eq_p:Vn \l_@@_currenvir_str { scripture } } + { \str_if_eq_p:Vn \l_@@_currenvir_str { midparachap } } + { \str_if_eq_p:Vn \l_@@_currenvir_str { narrow } } + } + { \legacy_if_set:nn { @afterindent } { \l_@@_chap_para_afterindent_bool } } + { \legacy_if_set_true:n { @afterindent } } + \@afterheading + } + { + \hook_use:n { scripture / chap / before } + \hook_use:n { scripture / chap / after } + } + \peek_meaning:NTF \c_space_token + { + \addvspace { \l_@@_chap_para_belowskip_tl } + \group_end: + \hook_use:n { scripture / poetry / pilcrow } + } + { + \addvspace { \l_@@_chap_para_belowskip_tl } + \cs_if_eq:NNTF \vs \@@_poetry_mode_vertical_verse:n + { + \bool_gset_eq:NN \g_tmpa_bool \g_@@_suppress_next_pilcrow_bool + \bool_gset_true:N \g_@@_suppress_next_pilcrow_bool + \noindent + \vs { 1 } + \bool_gset_eq:NN \g_@@_suppress_next_pilcrow_bool \g_tmpa_bool + } + { + \str_if_eq:VnT \l_@@_currenvir_str { midparachap } + { \bool_gset_true:N \g_@@_suppress_next_pilcrow_bool } + \vs { 1 } + } + \group_end: + \hook_use:n { scripture / poetry / pilcrow } + } } % \end{macrocode} % \end{macro} @@ -3128,15 +4987,29 @@ \bool_if:NTF \l_@@_mid_para_chap_bool { \@@_mid_para_drop_chap_output: } { - \par + \para_end: \@@_drop_chap_output: + \str_if_eq:VnF \l_@@_currenvir_str { midparachap } + { \@@_pilcrow_output: } } \hook_gput_next_code:nn { para / before } { \legacy_if:nF { @newlist } { \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1 - { \extraskip } + { + \dim_compare:nNnT \parskip < \baselineskip + { + \dim_compare:nNnT { \g_@@_chap_width_dim + \l_@@_chap_sep_tl } > \parindent + { + \hook_gput_next_code:nn { para / begin } + { + \para_omit_indent: + \skip_horizontal:n {\g_@@_chap_width_dim + \l_@@_chap_sep_tl } + } + } + } + } \int_gzero:N \g_@@_chap_par_prevgraf_int } \parshape 1 ~ \@totalleftmargin ~ \linewidth @@ -3162,6 +5035,14 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\g_@@_suppress_next_verse_para_bool} +% Suppress the next verse from starting a new paragraph when +% \opt{verse/para} is in use. +% \begin{macrocode} +\bool_new:N \g_@@_suppress_next_verse_para_bool +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\@@_verse_output:n} % Output a formatted verse. % \begin{macrocode} @@ -3180,6 +5061,11 @@ \bool_set_false:N \l_@@_no_verse_first_bool } \group_begin: + \bool_if:NT \l_@@_verse_para_bool + { + \box_if_empty:NF \g_@@_post_env_indent_box + { \box_use_drop:N \g_@@_post_env_indent_box } + } \hook_use:n { scripture / verse / before } \bool_if:NT \l_@@_verse_show_bool { @@ -3203,13 +5089,132 @@ \group_end: \kern \l_@@_verse_sep_tl } + \nobreak + \skip_horizontal:N \c_zero_skip } \hook_use:n { scripture / verse / after } + \hook_use:n { scripture / pilcrow } \group_end: } % \end{macrocode} % \end{macro} % +% \begin{macro}{\@@_verse_compact_output:n} +% Output a formatted verse. +% \begin{macrocode} +\cs_new_protected:Nn \@@_verse_compact_output:n + { + \mode_if_vertical:T + { \@@_set_pilcrow_hook: } + \@@_verse_output:n { #1 } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_verse_para_output:n} +% Output a formatted verse when \opt{verse/para} is set. +% \begin{macrocode} +\cs_new_protected:Nn \@@_verse_para_output:n + { + \mode_if_vertical:T + { \@@_set_pilcrow_hook: } + \hook_if_empty:nT { scripture / pilcrow } + { \dim_set:Nn \parindent \l_@@_para_indent_tl } + \bool_if:NTF \g_@@_suppress_next_verse_para_bool + { \bool_gset_false:N \g_@@_suppress_next_verse_para_bool } + { + \legacy_if:nF { @newlist } + { + \mode_if_vertical:F + { + \para_end: + \parshape 1 ~ \@totalleftmargin ~ \linewidth + } + } + } + \@@_verse_output:n { #1 } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_hanging_verse_para:n} +% Output a formatted verse when \opt{verse/para} is set and in a hanging +% environment. +% \begin{macrocode} +\cs_new_protected:Nn \@@_hanging_verse_para:n + { + \mode_if_vertical:T + { \@@_set_pilcrow_hook: } + \bool_if:NF \g_@@_suppress_next_verse_para_bool + { + \legacy_if:nF { @newlist } + { + \mode_if_vertical:F + { + \bool_gset_true:N \g_@@_suppress_next_pilcrow_bool + \hook_gput_next_code:nn { para / begin } + { \parshape 1 ~ \@totalleftmargin ~ \linewidth } + \par + \tex_noindent:D + } + } + } + \bool_gset_false:N \g_@@_suppress_next_verse_para_bool + \@@_hanging_verse:n { #1 } + } +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Printing pilcrows} +% +% \begin{macro}{\g_@@_suppress_next_pilcrow_bool} +% Flag to suppress the next pilcrow. +% \begin{macrocode} +\bool_new:N \g_@@_suppress_next_pilcrow_bool +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_set_pilcrow_hook:} +% Set the next \hook{scripture/pilcrow} hook to output a pilcrow providing +% the hook is currently empty. +% \opt{verse/para} or \opt{compact} options are set. +% \begin{macrocode} +\cs_new_protected:Nn \@@_set_pilcrow_hook: + { + \hook_if_empty:nT { scripture / pilcrow } + { + \hook_gput_next_code:nn { scripture / pilcrow } { \@@_pilcrow_output: } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_pilcrow_output:} +% Output a pilcrow (\P). Pilrows only display when either the +% \opt{verse/para} or \opt{compact} options are set. +% \begin{macrocode} +\cs_new_protected:Nn \@@_pilcrow_output: + { + \bool_gset_false:N \g_@@_para_mode_vertical_bool + \bool_gset_false:N \g_@@_mode_vertical_inner_bool + \bool_if:NT \l_@@_pilcrow_bool + { + \bool_lazy_or:nnT \l_@@_verse_para_bool \l_@@_compact_bool + { + \bool_if:NTF \g_@@_suppress_next_pilcrow_bool + { \bool_gset_false:N \g_@@_suppress_next_pilcrow_bool } + { + \P + \kern \l_@@_pilcrow_sep_tl + \nobreak + \skip_horizontal:N \c_zero_skip + } + } + } + } +% \end{macrocode} +% \end{macro} +% % \subsubsection{Calculating the length of the final line in a paragraph} % % \begin{macro}{\g_@@_final_line_dim} @@ -3229,21 +5234,30 @@ \skip_zero:N \belowdisplayshortskip \skip_zero:N \belowdisplayskip $$ - \dim_compare:nNnT \predisplaysize > \c_zero_dim + \hook_use:n { para / after } + \dim_compare:nNnTF \predisplaysize > \c_zero_dim { \dim_gset:Nn \g_@@_final_line_dim - { \predisplaysize - 2 em } + { \predisplaysize - 2em } + } + { + \bool_if:NT \l_@@_textdir_change_in_group_bool + { + \str_if_eq:VnT \l_@@_currenvir_str { scripture } + { \int_set:Nn \prevgraf { \int_use:N \prevgraf - 1 } } + } } \cs_gset_nopar:Nx \@@_reset_spacing: { \dim_set:Nn \predisplaysize { \dim_use:N \predisplaysize } \int_set:Nn \prevgraf { \int_use:N \prevgraf } + \int_gset:Nn \g_@@_chap_par_prevgraf_int { \int_use:N \g_@@_chap_par_prevgraf_int } } $$ \@@_reset_spacing: \dim_compare:nNnT \g_@@_final_line_dim > \paperwidth { \dim_gset:Nn \g_@@_final_line_dim { \@totalleftmargin + \linewidth } } - \dim_compare:nNnT \g_@@_final_line_dim > { \c_zero_dim - 1 sp } + \dim_compare:nNnT \g_@@_final_line_dim > { \c_zero_dim - 1sp } { \skip_vertical:n { -\baselineskip - \parskip } } } % \end{macrocode} @@ -3252,7 +5266,7 @@ % \subsubsection{The \env{scripture} environment} % % \begin{macro}{\l_@@_currenvir_str} -% Store the current \pkg{scripture} environment. +% Store the current \env{scripture} environment. % \begin{macrocode} \str_new:N \l_@@_currenvir_str % \end{macrocode} @@ -3266,6 +5280,13 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\l_@@_ref_tl} +% Store the reference passed to the \env{scripture} environment. +% \begin{macrocode} +\tl_new:N \l_@@_ref_tl +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\@@_added:n} % Mark text as added. % \begin{macrocode} @@ -3279,6 +5300,58 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\@@_heading:n} +% Output a non-canonical heading. +% \begin{macrocode} +\cs_new_protected_nopar:Nn \@@_heading:n + { + \str_if_eq:VnTF \l_@@_currenvir_str { scripture } + { + \bool_if:NTF \l_@@_heading_show_bool + { + \parshape 1 ~ \@totalleftmargin ~ \linewidth + \group_begin: + \bool_set_false:N \l_@@_pilcrow_bool + \legacy_if:nTF { @newlist } + { + \skip_horizontal:n { -\parindent } + } + { + \@@_list_para_end: + \addvspace { \l_@@_heading_aboveskip_tl } + \tex_noindent:D + } + \l_@@_heading_align_tl + \l_@@_heading_font_tl + \@@_heading_format:n { #1 } + \@@_list_para_end: + \group_end: + \bool_if:NTF \l_@@_verse_para_bool + { + \cs_set_eq:NN \noindent \_@@_para_noindent: + } + { + \cs_set_eq:NN \noindent \tex_noindent:D + } + \legacy_if_set:nn { @afterindent } \l_@@_heading_afterindent_bool + \bool_if:NF \l_@@_heading_afterindent_bool + { + \hook_gput_next_code:nn { para / before } + { \para_omit_indent: } + } + \nobreak + \@afterheading + \addvspace { \l_@@_heading_belowskip_tl } + } + { \ignorespaces } + } + { + \msg_error:nnx { scripture } { heading-error } { \l_@@_currenvir_str } + } + } +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\@@_name:n} % Output divine name. % \begin{macrocode} @@ -3302,7 +5375,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_ch:nn} +% \begin{macro}{\@@_ch_output:nn} % Print a chapter number in the main scripture environment. % \begin{macrocode} \cs_new_protected:Nn \@@_ch_output:nn @@ -3312,7 +5385,9 @@ \bool_if:NTF \l_@@_chap_drop_bool { \@@_chap:n { #2 } - \bool_if:nTF { #1 } + \bool_lazy_and:nnTF + { #1 } + { \bool_not_p:n { \l_@@_compact_bool } } { \hook_gput_next_code:nn { para / after } { @@ -3325,17 +5400,25 @@ { \int_gset_eq:NN \g_@@_mid_para_chap_prevgraf_int \prevgraf } } } + { + \bool_if:NTF \l_@@_chap_para_bool + { \@@_para_chap:n { #2 } } + { \@@_nodrop_chap:n { #2 } } + } + } + { + \bool_if:NTF \l_@@_chap_para_bool + { \@@_para_chap:n { #2 } } { \@@_nodrop_chap:n { #2 } } } - { \@@_nodrop_chap:n { #2 } } } % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_begin:n} +% \begin{macro}{\@@_begin:nn} % Begin a scripture quotation. % \begin{macrocode} -\cs_new_protected:Nn \@@_begin:n +\cs_new_protected:Nn \@@_begin:nn { \cs_set_eq:NN \@@_noindent_saved: \noindent \bool_if:NT \l_@@_active_bool @@ -3343,11 +5426,14 @@ \msg_error:nn { scripture } { nested-environment } } \bool_set_true:N \l_@@_active_bool - \tl_set:Nn \l_@@_currenvir_str { scripture } \tl_if_novalue:nF { #1 } + { \tl_set:Nn \l_@@_ref_tl { #1 } } + \str_set:Nn \l_@@_currenvir_str { scripture } + \tl_if_novalue:nF { #2 } { - \keys_set:nn { scripture } { #1 } + \keys_set:nn { scripture } { #2 } } + \l_@@_before_tl \@@_select_language: \int_gzero:N \g_@@_chap_par_prevgraf_int % \end{macrocode} @@ -3362,10 +5448,25 @@ \cs_set_eq:NN \extraskip \@@_extra_skip: \cs_set_eq:NN \redletteron \@@_red_letter_on: \cs_set_eq:NN \redletteroff \@@_red_letter_off: - \DeclareDocumentCommand { \ch } { sm } - { \@@_ch_output:nn { ##1 } { ##2 } } + \cs_set:Npn \nopilcrow { \bool_gset_true:N \g_@@_suppress_next_pilcrow_bool } + \bool_gset_false:N \g_@@_suppress_next_pilcrow_bool + \bool_gset_false:N \g_@@_suppress_next_verse_para_bool + \bool_gset_false:N \g_@@_mode_vertical_inner_bool + \box_gclear:N \g_@@_post_env_indent_box + \skip_gzero:N \g_@@_prev_inner_below_skip + \bool_if:NT \l_@@_chap_para_bool + { \bool_set_false:N \l_@@_chap_drop_bool } + \DeclareDocumentCommand { \ch } { s o m } + { + \tl_if_novalue:nF { ##2 } + { + \tl_set:Nn \l_@@_X_char_tl { ##2 } + } + \@@_ch_output:nn { ##1 } { ##3 } + } \cs_set_eq:NN \vs \@@_verse_output:n \cs_set_eq:NN \added \@@_added:n + \cs_set_eq:NN \heading \@@_heading:n \cs_set_eq:NN \name \@@_name:n \cs_set_protected_nopar:Npn \LORD { \name { Lord } } \cs_set_protected_nopar:Npn \GOD { \name { God } } @@ -3373,7 +5474,10 @@ \cs_set_protected_nopar:Npn \textright ##1 { \@@_text_right:nn { \l_@@_text_right_sep_tl } { ##1 } } \hook_gclear_next_code:n { para / before } + \hook_gclear_next_code:n { scripture / pilcow } + \hook_gclear_next_code:n { scripture / poetry / pilcow } \l_@@_font_tl + \tl_set:Ne \l_@@_parindent_tl { \dim_eval:n { \l_@@_parindent_tl } } \exp_args:NnV \color_set:nn { scripture default colour } \l_@@_colour_tl \str_if_eq:VnF \l_@@_colour_tl { . } { \color_select:n { scripture default colour } } @@ -3399,21 +5503,30 @@ { \hook_gput_next_code:nn { para / begin } { - \bool_lazy_any:nT + \bool_if:NTF \l_@@_compact_bool + { \para_omit_indent: } { - { \str_if_eq_p:Vn \l_@@_currenvir_str { midparachap } } - { \str_if_eq_p:Vn \l_@@_currenvir_str { narrow } } - { \str_if_eq_p:Vn \l_@@_currenvir_str { scripture } } - } - { - \legacy_if:nTF { @noparlist } - { \noindent } - { \para_omit_indent: } + \bool_lazy_any:nT + { + { \str_if_eq_p:Vn \l_@@_currenvir_str { midparachap } } + { \str_if_eq_p:Vn \l_@@_currenvir_str { narrow } } + { \str_if_eq_p:Vn \l_@@_currenvir_str { scripture } } + } + { + \legacy_if:nTF { @noparlist } + { + \bool_lazy_and:nnF + { \str_if_eq_p:Vn \l_@@_currenvir_str { narrow } } + { \str_if_eq_p:Vn \l_@@_ref_position_tl { start } } + { \noindent } + } + { \para_omit_indent: } + } } } } } - \dim_set_eq:NN \parindent \l_@@_parindent_tl + \cs_set_eq:NN \@@_list_para_end: \@par \item \relax } @@ -3421,29 +5534,36 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_end:n} +% \begin{macro}{\@@_end:} % End a scripture quotation with a reference. % \begin{macrocode} -\cs_new_protected:Nn \@@_end:n +\cs_new_protected:Nn \@@_end: { + \tl_if_eq:NnT \l_@@_ref_position_tl { start } + { + \tl_clear:N \l_@@_ref_tl + \tl_if_eq:NnT \l_@@_version_position_tl { withref } + { \tl_clear:N \l_@@_version_tl } + } + \cs_set_eq:NN \noindent \tex_noindent:D \bool_if:NTF \l_@@_inline_bool { \unskip \@@_red_letter_off: \l_@@_inline_end_tl \bool_lazy_or:nnTF - { \tl_if_novalue_p:n { #1 } } - { \tl_if_empty_p:n { #1 } } + { \tl_if_novalue_p:n \l_@@_ref_tl } + { \tl_if_empty_p:N \l_@@_ref_tl } { \tl_if_empty:NF \l_@@_version_tl { \skip_horizontal:N \l_@@_ref_sep_tl - \@@_format_full_ref:n { } + \@@_format_full_ref:nn { } \l_@@_version_tl } } { \skip_horizontal:N \l_@@_ref_sep_tl - \@@_format_full_ref:n { #1 } + \@@_format_full_ref:nn \l_@@_ref_tl \l_@@_version_tl } } { @@ -3457,36 +5577,106 @@ { \skip_set:Nn \@topsepadd { \@@_skip_diff:NN \l_@@_belowskip_tl \@outerparskip } } % \end{macrocode} % If a \env{scripture} quotation ends with an inner environment, remove the -% below skip of the inner environment. +% below skip of the inner environment. Also correct for \cs{textdir} quirk. % \begin{macrocode} \int_compare:nNnT \prevgraf = \c_zero_int - { \skip_vertical:n { -\g_@@_prev_inner_below_skip } } + { + \bool_if:NT \l_@@_textdir_change_in_group_bool + { \skip_vertical:n { -\baselineskip } } + \skip_vertical:n { -\g_@@_prev_inner_below_skip } + } \hook_gclear_next_code:n { para / before } - \parshape 1 ~ \@totalleftmargin ~ \linewidth \noindent \bool_lazy_or:nnTF - { \tl_if_novalue_p:n { #1 } } - { \tl_if_empty_p:n { #1 } } + { \tl_if_novalue_p:n \l_@@_ref_tl } + { \tl_if_empty_p:N \l_@@_ref_tl } { \tl_if_empty:NTF \l_@@_version_tl { \hbox:n { } } { \@@_reference:n { } } } - { \@@_reference:n { #1 } } + { \@@_reference:n \l_@@_ref_tl } + \parshape 1 ~ \@totalleftmargin ~ \linewidth % \end{macrocode} % Set \val{@noparlist} to \val{false} to ensure \cs{topsep} is always added % \env{scripture} environment % \begin{macrocode} - \@noparlistfalse + \legacy_if_set_false:n { @noparlist } \endlist } \cs_set_eq:NN \noindent \@@_noindent_saved: + \l_@@_after_tl } % \end{macrocode} % \end{macro} % % \subsection{Scripture internal environments} % +% \begin{macro}{\@@_compact_end_inner:} +% End a compact inner environment +% \begin{macrocode} +\cs_new_protected:Nn \@@_compact_end_inner: + { + \bool_gset_false:N \g_@@_mode_vertical_inner_bool + \str_if_eq:VnT \l_@@_ref_position_tl { start } + { + \tl_gclear:N \l_@@_ref_tl + } + \bool_lazy_and:nnT \l_@@_verse_para_bool \l_@@_chap_drop_bool + { + \cs_set_eq:NN \par \para_end: + \@@_calc_final_line_length: + \int_gset_eq:NN \g_@@_mid_para_chap_prevgraf_int \g_@@_chap_par_prevgraf_int + \tex_noindent:D + \bool_lazy_and:nnTF + { \bool_if_p:N \l_@@_compact_bool } + { \int_compare_p:nNn \g_@@_mid_para_chap_prevgraf_int = 1 } + { + \hook_gput_next_code:nn { env / \l_@@_currenvir_str / after } + { + \parshape 3 ~ + \@totalleftmargin ~ \linewidth ~ + \dim_eval:n + { \@totalleftmargin + \g_@@_chap_width_dim + \l_@@_chap_sep_tl } ~ + \dim_eval:n + { \linewidth - \g_@@_chap_width_dim - \l_@@_chap_sep_tl } ~ + \@totalleftmargin ~ \linewidth + } + \hbox_to_wd:nn { \g_@@_final_line_dim - \g_@@_chap_width_dim - \l_@@_chap_sep_tl } { } + } + { + \hbox_to_wd:nn \g_@@_final_line_dim { } + } + \c_space_token + \kern 0pt + \cs_set_eq:NN \par \relax + \hook_gput_next_code:nn { para / before } + { + \int_compare:nNnT \g_@@_mid_para_chap_prevgraf_int = 1 + { + \dim_compare:nNnT \parskip < \baselineskip + { + \dim_compare:nNnT { \g_@@_chap_width_dim + \l_@@_chap_sep_tl } > \parindent + { + \hook_gput_next_code:nn { para / begin } + { + \para_omit_indent: + \skip_horizontal:n {\g_@@_chap_width_dim + \l_@@_chap_sep_tl } + } + } + } + } + \int_gzero:N \g_@@_chap_par_prevgraf_int + \parshape 1 ~ \@totalleftmargin ~ \linewidth + } + } + \unskip + } +% \end{macrocode} +% \end{macro} +% +% +% % \subsubsection{The \env{center} environment} % % \begin{macro}{\@@_center_begin:n} @@ -3499,7 +5689,7 @@ \msg_error:nn { scripture } { nested-environment } } \bool_set_true:N \l_@@_active_inner_bool - \tl_set:Nn \l_@@_currenvir_str { center } + \str_set:Nn \l_@@_currenvir_str { center } \tl_if_novalue:nF { #1 } { \keys_set:nn @@ -3509,11 +5699,13 @@ \legacy_if:nTF { @newlist } { \dim_add:Nn \l_@@_outer_itemindent_dim \itemindent } { \dim_zero:N \l_@@_outer_itemindent_dim } + \cs_set_eq:NN \par \para_end: \list { } { -% \end{macrocode} -% Ignore \opt{aboveskip} if at the beginning of a \env{scripture} environment. -% \begin{macrocode} + \bool_lazy_or:nnF + { \mode_if_vertical_p: } + { \g_@@_para_mode_vertical_bool } + { \bool_gset_true:N \g_@@_suppress_next_pilcrow_bool } \dim_zero:N \labelsep \dim_set_eq:NN \leftmargin \l_@@_center_leftmargin_tl \dim_set_eq:NN \rightmargin \l_@@_center_rightmargin_tl @@ -3530,6 +5722,16 @@ { \addvspace { \baselineskip } } \int_gzero:N \g_@@_chap_par_prevgraf_int \centering + \bool_if:NT \l_@@_verse_para_bool + { + \cs_set_eq:NN \par \@@_para_par: + \cs_set_protected:Npn \\ + { + \mode_if_horizontal:TF + { \unskip } + { \@nolnerr } + } + } \item \relax } @@ -3541,6 +5743,7 @@ % \begin{macrocode} \cs_new_protected:Nn \@@_center_end: { + \cs_set_eq:NN \par \para_end: \dim_gset:Nn \g_@@_final_line_dim { \@totalleftmargin + \linewidth } \dim_compare:nNnTF \@outerparskip > \l_@@_center_belowskip_tl { \skip_zero:N \@topsepadd } @@ -3548,6 +5751,7 @@ \skip_gset_eq:NN \g_@@_prev_inner_below_skip \@topsepadd \legacy_if_set_false:n { @noparlist } \endlist + \bool_gset_true:N \g_@@_suppress_next_pilcrow_bool } % \end{macrocode} % \end{macro} @@ -3564,7 +5768,7 @@ \msg_error:nn { scripture } { nested-environment } } \bool_set_true:N \l_@@_active_inner_bool - \tl_set:Nn \l_@@_currenvir_str { flushright } + \str_set:Nn \l_@@_currenvir_str { flushright } \tl_if_novalue:nF { #1 } { \keys_set:nn @@ -3574,11 +5778,13 @@ \legacy_if:nTF { @newlist } { \dim_add:Nn \l_@@_outer_itemindent_dim \itemindent } { \dim_zero:N \l_@@_outer_itemindent_dim } + \cs_set_eq:NN \par \para_end: \list { } { -% \end{macrocode} -% Ignore \opt{aboveskip} if at the beginning of a \env{scripture} environment. -% \begin{macrocode} + \bool_lazy_or:nnF + { \mode_if_vertical_p: } + { \g_@@_para_mode_vertical_bool } + { \bool_gset_true:N \g_@@_suppress_next_pilcrow_bool } \dim_zero:N \labelsep \dim_set_eq:NN \leftmargin \l_@@_flushright_leftmargin_tl \dim_set_eq:NN \rightmargin \l_@@_flushright_rightmargin_tl @@ -3595,6 +5801,16 @@ { \addvspace { \baselineskip } } \int_gzero:N \g_@@_chap_par_prevgraf_int \raggedleft + \bool_if:NT \l_@@_verse_para_bool + { + \cs_set_eq:NN \par \@@_para_par: + \cs_set_protected:Npn \\ + { + \mode_if_horizontal:TF + { \unskip } + { \@nolnerr } + } + } \item \relax } @@ -3606,6 +5822,7 @@ % \begin{macrocode} \cs_new_protected:Nn \@@_flushright_end: { + \cs_set_eq:NN \par \para_end: \dim_gset:Nn \g_@@_final_line_dim { \@totalleftmargin + \linewidth } \dim_compare:nNnTF \@outerparskip > \l_@@_flushright_belowskip_tl { \skip_zero:N \@topsepadd } @@ -3613,6 +5830,7 @@ \skip_gset_eq:NN \g_@@_prev_inner_below_skip \@topsepadd \legacy_if_set_false:n { @noparlist } \endlist + \bool_gset_true:N \g_@@_suppress_next_pilcrow_bool } % \end{macrocode} % \end{macro} @@ -3631,13 +5849,22 @@ % \begin{macrocode} \cs_new_protected:Nn \@@_hanging_ch:n { + \bool_gset_false:N \g_@@_suppress_next_pilcrow_bool \bool_if:NTF \l_@@_chap_show_bool { \bool_if:NTF \l_@@_chap_drop_bool { \@@_hanging_chap:n { #1 } } + { + \bool_if:NTF \l_@@_chap_para_bool + { \@@_para_chap:n { #1 } } + { \@@_nodrop_chap:n { #1 } } + } + } + { + \bool_if:NTF \l_@@_chap_para_bool + { \@@_para_chap:n { #1 } } { \@@_nodrop_chap:n { #1 } } } - { \@@_nodrop_chap:n { #1 } } } % \end{macrocode} % \end{macro} @@ -3649,46 +5876,79 @@ { \@@_drop_chap_set_up:n { #1 } \dim_compare:nNnTF - \l_@@_chap_width_dim < \leftmargin + { \g_@@_chap_width_dim + \l_@@_chap_sep_tl } < \leftmargin { - \tl_set:Nx \l_@@_chap_sep_tl + \bool_if:NT \l_@@_hanging_chapter_indent_bool { - \dim_eval:n { \leftmargin - \l_@@_chap_width_dim } + \tl_set:Nx \l_@@_chap_sep_tl + { + \dim_eval:n { \leftmargin - \g_@@_chap_width_dim } + } } } { \parshape 3 ~ \dim_eval:n { - \@totalleftmargin - \leftmargin + \l_@@_chap_width_dim + + \@totalleftmargin - \leftmargin + \g_@@_chap_width_dim + \l_@@_chap_sep_tl } ~ \dim_eval:n { - \linewidth + \leftmargin - \l_@@_chap_width_dim - + \linewidth + \leftmargin - \g_@@_chap_width_dim - \l_@@_chap_sep_tl } ~ \dim_eval:n { - \@totalleftmargin - \leftmargin + \l_@@_chap_width_dim + + \@totalleftmargin - \leftmargin + \g_@@_chap_width_dim + \l_@@_chap_sep_tl } ~ \dim_eval:n { - \linewidth + \leftmargin - \l_@@_chap_width_dim - + \linewidth + \leftmargin - \g_@@_chap_width_dim - \l_@@_chap_sep_tl } ~ \@totalleftmargin ~ \linewidth } - \tl_set:Nx \l_@@_chap_sep_tl + \par + \bool_if:NTF \l_@@_hanging_chapter_indent_bool { - \dim_eval:n + \tl_set:Nx \l_@@_chap_sep_tl { - \l_@@_chap_sep_tl + \l_@@_hanging_parindent_saved_dim + \dim_eval:n + { + \l_@@_chap_sep_tl + \l_@@_hanging_parindent_saved_dim + } + } + \@@_nohang: + } + { + \mode_leave_vertical: + \dim_compare:nNnTF + { \g_@@_chap_width_dim + \l_@@_chap_sep_tl } > \l_@@_hanging_leftmargin_tl + { + \dim_compare:nNnTF + { \g_@@_chap_width_dim + \l_@@_chap_sep_tl } > \leftmargin + { + \skip_horizontal:n { \l_@@_hanging_hang_tl } + } + { + \skip_horizontal:n + { + \l_@@_chap_sep_tl + + \g_@@_chap_width_dim - + \l_@@_hanging_leftmargin_tl + } + } + } + { + \tl_set:Nx \l_@@_chap_sep_tl + { + \dim_eval:n + { \l_@@_hanging_leftmargin_tl - \g_@@_chap_width_dim } + } } } - \par - \@@_nohang: \hbox_set:Nn \l_@@_chap_box { \box_move_down:nn @@ -3712,25 +5972,107 @@ { \@@_verse_output:n { 1 } } + \@@_pilcrow_output: + \bool_if:NT \l_@@_verse_para_bool + { + \hook_gput_next_code:nn { para / after } + { + \int_gset_eq:NN \g_@@_chap_par_prevgraf_int \prevgraf + \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1 + { \penalty 10000 } + \hook_gput_next_code:nn { para / before } + { + \int_set_eq:NN \clubpenalty \l_@@_clubpenalty_saved_int + } + } + } \hook_gput_next_code:nn { para / begin } - { \parshape 1 ~ \@totalleftmargin ~ \linewidth } + { + \int_compare:nNnTF \g_@@_chap_par_prevgraf_int = \c_one_int + { + \dim_compare:nNnTF + { \l_@@_hanging_leftmargin_tl } < { \g_@@_chap_width_dim + \l_@@_chap_sep_tl } + { + \parshape 2 ~ + \dim_eval:n + { + \@totalleftmargin - \leftmargin + \g_@@_chap_width_dim + + \l_@@_chap_sep_tl + } ~ + \dim_eval:n + { + \linewidth + \leftmargin - \g_@@_chap_width_dim - + \l_@@_chap_sep_tl + } ~ + \@totalleftmargin ~ \linewidth + } + { \parshape 1 ~ \@totalleftmargin ~ \linewidth } + \hook_gput_next_code:nn { para / begin } + { \parshape 1 ~ \@totalleftmargin ~ \linewidth } + } + { \parshape 1 ~ \@totalleftmargin ~ \linewidth } + \int_gzero:N \g_@@_chap_par_prevgraf_int + } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_hanging_verse:n} -% Position a \cs{vs} in a \env{hanging} environment. The verse is set to +% Position a \fn{vs} in a \env{hanging} environment. The verse is set to % overlap to the left if at the beginning of a hanging paragraph. % \begin{macrocode} \cs_new_protected:Nn \@@_hanging_verse:n { \mode_if_vertical:TF { - \strut - \hbox_overlap_left:n + \tl_set_eq:NN \l_tmpa_tl \l_@@_verse_sep_tl + \tl_set_eq:NN \l_@@_verse_sep_tl \l_@@_hanging_verse_sep_tl + \bool_lazy_and:nnTF + { \legacy_if_p:n { @newlist } } + { \g_@@_suppress_next_pilcrow_bool } { - \@@_verse_output:n { #1 } + \strut + \bool_if:NTF \l_@@_hanging_verse_right_bool + { + \hbox_overlap_left:n + { + \@@_verse_output:n { #1 } + } + } + { + \hbox_overlap_left:n + { + \hbox_overlap_right:n + { + \@@_verse_output:n { #1 } + } + \skip_horizontal:N \l_@@_hanging_leftmargin_tl + } + } + } + { + \bool_gset_true:N \g_@@_suppress_next_pilcrow_bool + \strut + \bool_if:NTF \l_@@_hanging_verse_right_bool + { + \hbox_overlap_left:n + { + \@@_verse_output:n { #1 } + } + } + { + \hbox_overlap_left:n + { + \hbox_overlap_right:n + { + \@@_verse_output:n { #1 } + } + \skip_horizontal:N \l_@@_hanging_leftmargin_tl + } + } + \@@_pilcrow_output: } + \tl_set_eq:NN \l_@@_verse_sep_tl \l_tmpa_tl } { \@@_verse_output:n { #1 } } } @@ -3743,8 +6085,15 @@ % \begin{macrocode} \cs_new_protected_nopar:Nn \@@_nohang: { - \noindent + \legacy_if:nTF {@newlist} + { \skip_horizontal:n { \l_@@_hanging_hang_tl } } + { \tex_noindent:D } \hbox_to_wd:nn { \l_@@_hanging_parindent_saved_dim } { } + \peek_meaning:NT \vs + { + \bool_gset_true:N \g_@@_suppress_next_verse_para_bool + \@@_set_pilcrow_hook: + } } % \end{macrocode} % \end{macro} @@ -3759,25 +6108,37 @@ \msg_error:nn { scripture } { nested-environment } } \bool_set_true:N \l_@@_active_inner_bool - \tl_set:Nn \l_@@_currenvir_str { hanging } + \str_set:Nn \l_@@_currenvir_str { hanging } \tl_if_novalue:nF { #1 } { \keys_set:nn { scripture / hanging } { #1 } } - \DeclareDocumentCommand { \ch } { sm } { \@@_hanging_ch:n { ##2 } } - \cs_set_eq:NN \vs \@@_hanging_verse:n + \DeclareDocumentCommand { \ch } { s o m } + { + \tl_if_novalue:nF { ##2 } + { + \tl_set:Nn \l_@@_X_char_tl { ##2 } + } + \@@_hanging_ch:n { ##3 } + } + \bool_if:NTF \l_@@_verse_para_bool + { \cs_set_eq:NN \vs \@@_hanging_verse_para:n } + { \cs_set_eq:NN \vs \@@_hanging_verse:n } \cs_set_eq:NN \nohang \@@_nohang: \dim_set_eq:NN \l_@@_hanging_parindent_saved_dim \parindent \legacy_if:nTF { @newlist } { \dim_add:Nn \l_@@_outer_itemindent_dim \itemindent } { \dim_zero:N \l_@@_outer_itemindent_dim } + \cs_set_eq:NN \par \para_end: + \hook_gclear_next_code:n { para/ before } \list { } { -% \end{macrocode} -% Ignore \opt{aboveskip} if at the beginning of a \env{scripture} environment. -% \begin{macrocode} + \bool_lazy_or:nnF + { \mode_if_vertical_p: } + { \g_@@_para_mode_vertical_bool } + { \bool_gset_true:N \g_@@_suppress_next_pilcrow_bool } \dim_zero:N \labelsep \dim_set:Nn \leftmargin { \l_@@_hanging_leftmargin_tl + \l_@@_hanging_hang_tl } \dim_set_eq:NN \rightmargin \l_@@_hanging_rightmargin_tl @@ -3811,6 +6172,7 @@ \skip_gset_eq:NN \g_@@_prev_inner_below_skip \@topsepadd \legacy_if_set_false:n { @noparlist } \endlist + \bool_gset_true:N \g_@@_suppress_next_pilcrow_bool } % \end{macrocode} % \end{macro} @@ -3881,6 +6243,35 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\@@_mid_para_chap_end_orig:n, +% \@@_mid_para_chap_end:n} +% Custom \cs{end} macro for the \env{midparachap} environment. This is only +% used when the \opt{verse/para} and/or \opt{compact} options are in use. +% \begin{macrocode} +\cs_set_eq:Nc \@@_mid_para_chap_end_orig:n { end ~ } +\cs_new_nopar:Nn \@@_mid_para_chap_end:n + { + \@@_mid_para_chap_end_orig:n { #1 } + \bool_if:NT \l_@@_compact_bool + { \c_space_token } + \peek_remove_spaces:n + { + \peek_analysis_map_inline:n + { + \bool_case:n + { + { \exp_args:No \token_if_letter_p:N { ##1 } } + { \@@_pilcrow_output: } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \vs } + { \@@_set_pilcrow_hook: } + } + \peek_analysis_map_break:n { ##1 } + } + } + } +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\l_@@_mid_para_chap_box, % \l_@@_mid_para_chap_split_box, % \l_@@_mid_para_chap_split_top_box} @@ -3913,11 +6304,11 @@ \dim_compare:nNnTF { \box_wd:N \l_@@_mid_para_chap_snap_box + - \l_@@_chap_width_dim + + \g_@@_chap_width_dim + \l_@@_chap_sep_tl } < - { \linewidth - \leftskip - \rightskip - 3 em } + { \linewidth - \leftskip - \rightskip - 3em } { \@@_drop_chap_output: \hbox_unpack_drop:N \l_@@_mid_para_chap_snap_box @@ -3948,16 +6339,14 @@ % \begin{macrocode} \cs_new_protected:Nn \@@_mid_para_chap_begin:n { - \tl_set:Nn \l_@@_currenvir_str { midparachap } + \str_set:Nn \l_@@_currenvir_str { midparachap } \tl_if_novalue:nF { #1 } { \keys_set:nn { scripture / midparachap } { #1 } } - \bool_lazy_and:nnT - { \bool_if_p:n \l_@@_chap_show_verse_bool } - { \bool_if_p:n \l_@@_chap_drop_bool } + \bool_lazy_and:nnT \l_@@_chap_show_verse_bool \l_@@_chap_drop_bool { \bool_set_true:N \l_@@_midparachap_show_verse_bool \bool_set_false:N \l_@@_chap_show_verse_bool @@ -3998,8 +6387,8 @@ \prevgraf < 3 { \noindent - \skip_horizontal:n { \l_@@_chap_width_dim + \l_@@_chap_sep_tl } - \dim_gadd:Nn \g_@@_final_line_dim { \l_@@_chap_width_dim + \l_@@_chap_sep_tl } + \skip_horizontal:n { \g_@@_chap_width_dim + \l_@@_chap_sep_tl } + \dim_gadd:Nn \g_@@_final_line_dim { \g_@@_chap_width_dim + \l_@@_chap_sep_tl } } \box_use_drop:N \l_@@_mid_para_chap_line_box \vbox_set_end: @@ -4042,7 +6431,24 @@ \int_gset_eq:NN \g_@@_chap_par_prevgraf_int \g_@@_mid_para_chap_prevgraf_int \hook_gput_next_code:nn { para / before } { - \int_gzero:N \g_@@_chap_par_prevgraf_int + \legacy_if:nF { @newlist } + { + \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1 + { + \dim_compare:nNnT \parskip < \baselineskip + { + \dim_compare:nNnT { \g_@@_chap_width_dim + \l_@@_chap_sep_tl } > \parindent + { + \hook_gput_next_code:nn { para / begin } + { + \para_omit_indent: + \skip_horizontal:n {\g_@@_chap_width_dim + \l_@@_chap_sep_tl } + } + } + } + } + \int_gzero:N \g_@@_chap_par_prevgraf_int + } \parshape 1 ~ \@totalleftmargin ~ \linewidth } } @@ -4061,7 +6467,7 @@ \msg_error:nn { scripture } { nested-environment } } \bool_set_true:N \l_@@_active_inner_bool - \tl_set:Nn \l_@@_currenvir_str { narrow } + \str_set:Nn \l_@@_currenvir_str { narrow } \tl_if_novalue:nF { #1 } { \keys_set:nn @@ -4071,24 +6477,22 @@ \legacy_if:nTF { @newlist } { \dim_add:Nn \l_@@_outer_itemindent_dim \itemindent } { \dim_zero:N \l_@@_outer_itemindent_dim } + \cs_set_eq:NN \par \para_end: \list { } { -% \end{macrocode} -% Ignore \opt{aboveskip} if at the beginning of a \env{scripture} environment. -% \begin{macrocode} - %\int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1 - % { \addvspace { \baselineskip } } - %\int_gzero:N \g_@@_chap_par_prevgraf_int \dim_zero:N \labelsep \dim_set_eq:NN \leftmargin \l_@@_narrow_leftmargin_tl \dim_set_eq:NN \rightmargin \l_@@_narrow_rightmargin_tl \dim_set_eq:NN \listparindent \parindent - \mode_if_vertical:TF + \bool_lazy_or:nnTF + { \mode_if_vertical_p: } + { \g_@@_para_mode_vertical_bool } { \dim_set:Nn \itemindent { \parindent - \l_@@_outer_itemindent_dim } \@@_setup_list_noindent:n { \parindent } } { + \bool_gset_true:N \g_@@_suppress_next_pilcrow_bool \dim_set:Nn \itemindent { -\l_@@_outer_itemindent_dim } \@@_setup_list_noindent:n { \c_zero_dim } } @@ -4101,6 +6505,8 @@ \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1 { \addvspace { \baselineskip } } \int_gzero:N \g_@@_chap_par_prevgraf_int + \bool_if:NT \l_@@_verse_para_bool + { \cs_set_eq:NN \par \@@_para_par: } \item \relax } @@ -4112,6 +6518,7 @@ % \begin{macrocode} \cs_new_protected:Nn \@@_narrow_end: { + \cs_set_eq:NN \par \para_end: \@@_calc_final_line_length: \dim_compare:nNnTF \@outerparskip > \l_@@_narrow_belowskip_tl { \skip_zero:N \@topsepadd } @@ -4119,6 +6526,7 @@ \skip_gset_eq:NN \g_@@_prev_inner_below_skip \@topsepadd \legacy_if_set_false:n { @noparlist } \endlist + \bool_gset_true:N \g_@@_suppress_next_pilcrow_bool } % \end{macrocode} % \end{macro} @@ -4140,11 +6548,11 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\g_@@_poetry_midparachap_show_verse_bool} +% \begin{macro}{\l_@@_poetry_midparachap_show_verse_bool} % Flag indicating whether the verse number should be printed immediately -% after a \cs{ch} or not in a \env{poetry} environment. +% after a \fn{ch} or not in a \env{poetry} environment. % \begin{macrocode} -\bool_new:N \g_@@_poetry_midparachap_show_verse_bool +\bool_new:N \l_@@_poetry_midparachap_show_verse_bool % \end{macrocode} % \end{macro} % @@ -4172,28 +6580,6 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_poetry_extra_skip:} -% Insert a little extra vertical space between two lines in a \env{poetry} -% environment. -% \begin{macrocode} -\cs_new_protected:Nn \@@_poetry_extra_skip: - { - \skip_vertical:n { \l_@@_extraskip_tl - \baselineskip - \parskip } - \bool_gset_false:N \g_@@_poetry_midparachap_show_verse_bool - \strut - \hook_gput_next_code:nn { para / after } - { - \hook_gput_next_code:nn { para / after } - { - \bool_gset_eq:NN - \g_@@_poetry_midparachap_show_verse_bool - \l_@@_midparachap_show_verse_bool - } - } - } -% \end{macrocode} -% \end{macro} -% % \begin{macro}{\@@_poetry_text_right:nn} % Align a word to the right and finish a paragraph, pushing to the next line % if there is not space for the word. @@ -4240,9 +6626,17 @@ { \bool_if:NTF \l_@@_chap_drop_bool { \@@_poetry_chap:n { #1 } } + { + \bool_if:NTF \l_@@_chap_para_bool + { \@@_para_chap:n { #1 } } + { \@@_poetry_nodrop_chap:n { #1 } } + } + } + { + \bool_if:NTF \l_@@_chap_para_bool + { \@@_para_chap:n { #1 } } { \@@_poetry_nodrop_chap:n { #1 } } } - { \@@_poetry_nodrop_chap:n { #1 } } } % \end{macrocode} % \end{macro} @@ -4253,22 +6647,30 @@ \cs_new_protected:Nn \@@_poetry_chap:n { \@@_drop_chap_set_up:n { #1 } - \mode_if_vertical:TF + \hook_gput_next_code:nn { para / after } + { + \hook_gput_next_code:nn { para / after } + { \int_gzero:N \g_@@_chap_par_prevgraf_int } + } + \cs_if_eq:NNTF \vs \@@_poetry_mode_vertical_verse:n + { + \dim_zero:N \l_@@_poetry_chap_indent_dim + \noindent + } { \dim_set_eq:NN \l_@@_poetry_chap_indent_dim \l_@@_poetry_indent_tl \mode_leave_vertical: } - { \dim_zero:N \l_@@_poetry_chap_indent_dim } \dim_set_eq:NN \l_@@_poetry_chap_sep_dim \l_@@_chap_sep_tl \dim_compare:nNnT - { \l_@@_chap_width_dim + \l_@@_chap_sep_tl } + { \g_@@_chap_width_dim + \l_@@_chap_sep_tl } < { \l_@@_poetry_leftmargin_tl + \l_@@_poetry_chap_indent_dim } { \dim_set:Nn \l_@@_poetry_chap_sep_dim { \l_@@_poetry_leftmargin_tl + \l_@@_poetry_chap_indent_dim - - \l_@@_chap_width_dim + \g_@@_chap_width_dim } } \hbox_set:Nn \l_@@_chap_box @@ -4287,7 +6689,7 @@ \box_set_dp:Nn \l_@@_chap_box { \c_zero_dim } \dim_set:Nn \l_@@_poetry_chap_parshape_correction_dim { - \l_@@_chap_width_dim + \l_@@_poetry_chap_sep_dim - + \g_@@_chap_width_dim + \l_@@_poetry_chap_sep_dim - \l_@@_poetry_leftmargin_tl - \l_@@_poetry_chap_indent_dim } \parshape 2 ~ @@ -4300,13 +6702,10 @@ \dim_eval:n { \linewidth - \l_@@_poetry_big_indent_tl } % \end{macrocode} -% Because of interactions with \LaTeX{} \env{list} environments and -% \cs{@@_obeylines:}, \cs{@@_poetry_par:} setting the \cs{parshape} for the -% second line after a drop chapter number is more difficult than it should -% be. There's probably a better way. +% Set the \cs{parshape} for the second line after a drop chapter number. % \begin{macrocode} \dim_compare:nNnT - { \l_@@_chap_width_dim + \l_@@_poetry_chap_sep_dim } + { \g_@@_chap_width_dim + \l_@@_poetry_chap_sep_dim } > \l_@@_poetry_leftmargin_tl { @@ -4314,51 +6713,52 @@ { \int_compare:nNnT \l_@@_poetry_prevgraf_int = 1 { + \cs_if_eq:NNTF \vs \@@_poetry_mode_vertical_verse:n % \end{macrocode} -% This \cs{parshape} is in effect when the next line is the second half of a +% This \cs{parshape} is in effect when the next line is the first half of a % poetry verse. % \begin{macrocode} - \dim_compare:nNnTF - { \l_@@_chap_width_dim + \l_@@_chap_sep_tl } - < - { \l_@@_poetry_leftmargin_tl + \l_@@_poetry_indent_tl } - { \dim_zero:N \l_@@_poetry_chap_parshape_correction_dim } { - \dim_set:Nn \l_@@_poetry_chap_parshape_correction_dim + \dim_compare:nNnTF + { \g_@@_chap_width_dim + \l_@@_chap_sep_tl } + < + \l_@@_poetry_leftmargin_tl + { \dim_zero:N \l_@@_poetry_chap_parshape_correction_dim } { - \l_@@_chap_width_dim + \l_@@_chap_sep_tl - - \l_@@_poetry_leftmargin_tl - \l_@@_poetry_indent_tl + \dim_set:Nn \l_@@_poetry_chap_parshape_correction_dim + { + \g_@@_chap_width_dim + \l_@@_chap_sep_tl - + \l_@@_poetry_leftmargin_tl + } + } + \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1 + { + \parshape 2 ~ + \dim_eval:n + { \@totalleftmargin + \l_@@_poetry_chap_parshape_correction_dim } ~ + \dim_eval:n + { \linewidth - \l_@@_poetry_chap_parshape_correction_dim } ~ + \dim_eval:n + { \@totalleftmargin + \l_@@_poetry_big_indent_tl } ~ + \dim_eval:n + { \linewidth - \l_@@_poetry_big_indent_tl } } } - \parshape 2 ~ - \dim_eval:n - { \@totalleftmargin + \l_@@_poetry_chap_parshape_correction_dim } ~ - \dim_eval:n - { \linewidth - \l_@@_poetry_chap_parshape_correction_dim } ~ - \dim_eval:n - { \@totalleftmargin + \l_@@_poetry_big_indent_tl } ~ - \dim_eval:n - { \linewidth - \l_@@_poetry_big_indent_tl } - \hook_gput_next_code:nn { para / after } - { - \hook_gclear_next_code:n { scripture / poetry / para / after } - } - \hook_gput_next_code:nn { scripture / poetry / para / after } - { % \end{macrocode} -% This \cs{parshape} is in effect when the next line is the first half of a +% This \cs{parshape} is in effect when the next line is the second half of a % poetry verse. % \begin{macrocode} + { \dim_compare:nNnTF - { \l_@@_chap_width_dim + \l_@@_chap_sep_tl } + { \g_@@_chap_width_dim + \l_@@_chap_sep_tl } < - \l_@@_poetry_leftmargin_tl + { \l_@@_poetry_leftmargin_tl + \l_@@_poetry_indent_tl } { \dim_zero:N \l_@@_poetry_chap_parshape_correction_dim } { \dim_set:Nn \l_@@_poetry_chap_parshape_correction_dim { - \l_@@_chap_width_dim + \l_@@_chap_sep_tl - - \l_@@_poetry_leftmargin_tl + \g_@@_chap_width_dim + \l_@@_chap_sep_tl - + \l_@@_poetry_leftmargin_tl - \l_@@_poetry_indent_tl } } \parshape 2 ~ @@ -4379,12 +6779,9 @@ \box_use:N \l_@@_chap_box \hook_use:n { scripture / chap / after } \group_end: - \bool_lazy_or:nnT - { \bool_if_p:n \l_@@_chap_show_verse_bool } - { \bool_if_p:n \g_@@_poetry_midparachap_show_verse_bool } - { - \@@_verse_output:n { 1 } - } + \bool_lazy_or:nnT \l_@@_chap_show_verse_bool \l_@@_poetry_midparachap_show_verse_bool + { \@@_verse_output:n { 1 } } + \hook_use:n { scripture / poetry / pilcrow } } % \end{macrocode} % \end{macro} @@ -4398,6 +6795,8 @@ \cs_gset_nopar:Npn \scripturecurrentchapter { #1 } \cs_gset_nopar:Npn \scripturecurrentverse { 1 } \group_begin: + \cs_if_eq:NNT \vs \@@_poetry_mode_vertical_verse:n + { \noindent } \bool_if:NTF \l_@@_chap_show_bool { \hbox_overlap_left:n @@ -4412,12 +6811,8 @@ \skip_horizontal:N \l_@@_chap_sep_tl \hook_use:n { scripture / chap / after } } - \bool_lazy_or:nnT - { \bool_if_p:n \l_@@_chap_show_verse_bool } - { \bool_if_p:n \g_@@_poetry_midparachap_show_verse_bool } - { - \@@_verse_output:n { 1 } - } + \bool_lazy_or:nnT \l_@@_chap_show_verse_bool \l_@@_poetry_midparachap_show_verse_bool + { \@@_verse_output:n { 1 } } } { \hook_use:n { scripture / chap / before } @@ -4425,46 +6820,66 @@ \vs { 1 } } \group_end: + \hook_use:n { scripture / poetry / pilcrow } } % \end{macrocode} % \end{macro} % -% % \begin{macro}{\@@_poetry_mode_vertical_verse:n} -% Format a verse for poetry scripture quotations in vertical and horizontal -% mode. +% Format a verse for poetry scripture quotations in vertical mode. % \begin{macrocode} \cs_new_protected:Nn \@@_poetry_mode_vertical_verse:n { \group_begin: \tl_set_eq:NN \l_@@_verse_sep_tl \l_@@_poetry_verse_sep_tl + \hook_gclear_next_code:n { scripture / pilcrow } \strut - \bool_if:NTF \l_@@_poetry_verse_right_bool + \int_compare:nNnTF \g_@@_chap_par_prevgraf_int = 1 { - \hbox_overlap_left:n - { - \@@_verse_output:n { #1 } - } + \@@_verse_output:n { #1 } } { - \hbox_overlap_left:n + \bool_if:NTF \l_@@_poetry_verse_right_bool { - \hbox_overlap_right:n + \hbox_overlap_left:n { \@@_verse_output:n { #1 } } - \skip_horizontal:N \l_@@_poetry_leftmargin_tl + } + { + \hbox_overlap_left:n + { + \hbox_overlap_right:n + { + \@@_verse_output:n { #1 } + } + \skip_horizontal:N \l_@@_poetry_leftmargin_tl + } } } \group_end: + \bool_if:NF \g_@@_suppress_next_pilcrow_bool + { \hook_use:n { scripture / poetry / pilcrow } } } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_poetry_mode_horizontal_verse:n} +% Format a verse for poetry scripture quotations in horizontal mode. +% \begin{macrocode} \cs_new_protected:Nn \@@_poetry_mode_horizontal_verse:n { \group_begin: \tl_set_eq:NN \l_@@_verse_sep_tl \l_@@_poetry_verse_sep_tl - \skip_horizontal:n { -\listparindent } - \@@_poetry_mode_vertical_verse:n { #1 } - \skip_horizontal:N \listparindent + \int_compare:nNnTF \g_@@_chap_par_prevgraf_int = 1 + { + \@@_poetry_mode_vertical_verse:n { #1 } + } + { + \skip_horizontal:n { -\listparindent } + \@@_poetry_mode_vertical_verse:n { #1 } + \skip_horizontal:N \listparindent + } \group_end: } % \end{macrocode} @@ -4475,16 +6890,8 @@ % \begin{macrocode} \cs_new_protected:Nn \@@_poetry_par: { - \mode_if_vertical:TF - { - \cs_set_eq:NN \vs \@@_poetry_mode_vertical_verse:n - \noindent - } - { - \cs_set_eq:NN \vs \@@_poetry_mode_horizontal_verse:n - \@@_tmp_para_end: - \int_set_eq:NN \l_@@_poetry_prevgraf_int \prevgraf - } + \para_end: + \int_set:Nn \l_@@_poetry_prevgraf_int { \int_use:N \prevgraf } \parshape 2 ~ \@totalleftmargin ~ \linewidth ~ @@ -4506,15 +6913,67 @@ \cs_gset_protected_nopar:Nn \@@_obeylines: % {% \char_set_catcode_active:N \^^M% - \cs_set_eq:NN ^^M \@@_obeylines_end:% + \cs_set_eq:NN ^^M \@@_obeylines_eol:% }% \group_end: -\cs_new_protected:Nn \@@_obeylines_end: +\cs_new_protected:Nn \@@_obeylines_eol: { - \peek_meaning:NF \end + \mode_if_vertical:TF { - \par - \int_set:Nn \l_@@_poetry_prevgraf_int { \int_use:N \prevgraf } + \cs_set_eq:NN \vs \@@_poetry_mode_vertical_verse:n + \hook_gput_next_code:nn { scripture / poetry / para / after } + { \bool_set_false:N \l_@@_poetry_midparachap_show_verse_bool } + } + { \cs_set_eq:NN \vs \@@_poetry_mode_horizontal_verse:n } + \peek_analysis_map_inline:n + { + \bool_case:nF + { + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \ch } + { + \bool_set_eq:NN \l_@@_poetry_midparachap_show_verse_bool \l_@@_midparachap_show_verse_bool + \@@_poetry_par: + \peek_analysis_map_break:n { ##1 } + } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \end } + { \peek_analysis_map_break:n { ##1 } } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \extraskip } + { \peek_analysis_map_break:n { ##1 } } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \nopilcrow } + { + \@@_poetry_par: + \cs_if_eq:NNT \vs \@@_poetry_mode_vertical_verse:n + { \noindent } + \peek_analysis_map_break:n + { + \@@_fix_protrusion:o { ##1 } + } + } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \vs } + { + \@@_poetry_par: + \cs_if_eq:NNT \vs \@@_poetry_mode_vertical_verse:n + { \noindent } + \peek_analysis_map_break:n { ##1 } + } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \@@_obeylines_eol: } + { \cs_set_eq:NN \vs \@@_poetry_mode_vertical_verse:n } + } + { + \@@_poetry_par: + \cs_if_eq:NNT \vs \@@_poetry_mode_vertical_verse:n + { \noindent } + \bool_if:NT \l_@@_verse_para_bool + { + \@@_pilcrow_output: + \bool_set_false:N \l_@@_verse_para_bool + \bool_set_false:N \l_@@_pilcrow_bool + } + \peek_analysis_map_break:n + { + \@@_fix_protrusion:o { ##1 } + } + } } } % \end{macrocode} @@ -4530,19 +6989,37 @@ \msg_error:nn { scripture } { nested-environment } } \bool_set_true:N \l_@@_active_inner_bool - \tl_set:Nn \l_@@_currenvir_str { poetry } + \str_set:Nn \l_@@_currenvir_str { poetry } \bool_gset_false:N \g_@@_poetry_midparachap_show_verse_bool - \DeclareDocumentCommand { \ch } { sm } { \@@_poetry_ch:n { ##2 } } + \DeclareDocumentCommand { \ch } { s o m } + { + \tl_if_novalue:nF { ##2 } + { + \tl_set:Nn \l_@@_X_char_tl { ##2 } + } + \@@_poetry_ch:n { ##3 } + } \cs_set_eq:NN \vs \@@_poetry_mode_vertical_verse:n - \cs_set_eq:NN \extraskip \@@_poetry_extra_skip: \cs_set_eq:NN \selah \@@_selah_output: \cs_set_protected_nopar:Npn \textright ##1 { \@@_poetry_text_right:nn { \l_@@_text_right_sep_tl } { ##1 } } \legacy_if:nTF { @newlist } { \dim_add:Nn \l_@@_outer_itemindent_dim \itemindent } { \dim_zero:N \l_@@_outer_itemindent_dim } + \cs_set_eq:NN \par \para_end: + \cs_set_eq:NN \noindent \tex_noindent:D + \hook_gput_next_code:nn { scripture / poetry / pilcrow } + { + \@@_pilcrow_output: + \bool_set_false:N \l_@@_pilcrow_bool + \bool_set_false:N \l_@@_verse_para_bool + } \list { } { + \bool_lazy_or:nnF + { \mode_if_vertical_p: } + { \g_@@_para_mode_vertical_bool } + { \bool_gset_true:N \g_@@_suppress_next_pilcrow_bool } \dim_zero:N \labelsep \dim_set_eq:NN \leftmargin \l_@@_poetry_leftmargin_tl \dim_set_eq:NN \rightmargin \l_@@_poetry_rightmargin_tl @@ -4562,10 +7039,6 @@ \dim_set_eq:NN \parindent \l_@@_poetry_indent_tl \item \relax - \cs_set_eq:NN \@@_tmp_para_end: \par - \cs_set_eq:NN \par \@@_poetry_par: - \hook_gput_next_code:nn { para / after } - { \bool_gset_eq:NN \g_@@_poetry_midparachap_show_verse_bool \l_@@_midparachap_show_verse_bool } } % \end{macrocode} % \end{macro} @@ -4582,6 +7055,8 @@ \skip_gset_eq:NN \g_@@_prev_inner_below_skip \@topsepadd \legacy_if_set_false:n { @noparlist } \endlist + \bool_gset_true:N \g_@@_suppress_next_pilcrow_bool + \hook_gclear_next_code:n { scripture / poetry / pilcrow } \bool_gset_true:N \g_@@_poetry_end_bool \hook_gput_next_code:nn { para / begin } { \bool_gset_false:N \g_@@_poetry_end_bool } @@ -4593,7 +7068,7 @@ % \subsection{Public \LaTeX{} Interface} % % \begin{macro}{\scripturecurrentchapter, \scripturecurrentverse} -% Globally stores the most recent argument of \cs{ch} and \cs{vs}. These +% Globally stores the most recent argument of \fn{ch} and \fn{vs}. These % could be used in hooks, for example. % \begin{macrocode} \cs_set_nopar:Npn \scripturecurrentchapter { } @@ -4620,8 +7095,9 @@ % \item \meta{|options|} to set for the style. % \end{arguments} % Set key-value settings to be applied when using the \opt{style} option -% with value \val{name}. The starred version appends the \val{options} to -% any existing ones. +% with value \val{name}. You may want to pass \opt{defaults} as the first +% option to ensure any unset options in your style are expected defaults. +% The starred version appends the \val{options} to any existing ones. % \begin{macrocode} \NewDocumentCommand { \scripturestyle } { s m m } { @@ -4663,7 +7139,7 @@ % \begin{macrocode} \NewDocumentEnvironment { scripture } { o o } { - \@@_begin:n { #2 } + \@@_begin:nn { #1 } { #2 } % \end{macrocode} % \begin{envmacro}{center} % \begin{arguments} @@ -4673,7 +7149,7 @@ \DeclareDocumentEnvironment { center } { o } { \@@_center_begin:n { ##1 } - \ignorespaces + \@@_reference_start_peek: } { \@@_center_end: } % \end{macrocode} @@ -4686,7 +7162,7 @@ \DeclareDocumentEnvironment { flushright } { o } { \@@_flushright_begin:n { ##1 } - \ignorespaces + \@@_reference_start_peek: } { \@@_flushright_end: } % \end{macrocode} @@ -4699,7 +7175,7 @@ \DeclareDocumentEnvironment { hanging } { o } { \@@_hanging_begin:n { ##1 } - \ignorespaces + \@@_reference_start_peek: } { \@@_hanging_end: } % \end{macrocode} @@ -4710,7 +7186,7 @@ \DeclareDocumentEnvironment { midparachap } { o } { \@@_mid_para_chap_begin:n { ##1 } - \ignorespaces + \@@_reference_start_peek: } { \@@_mid_para_chap_end: } % \end{macrocode} @@ -4723,7 +7199,7 @@ \DeclareDocumentEnvironment { narrow } { o } { \@@_narrow_begin:n { ##1 } - \ignorespaces + \@@_reference_start_peek: } { \@@_narrow_end: } % \end{macrocode} @@ -4732,19 +7208,19 @@ % \begin{arguments} % \item \meta{|options|} to set. % \end{arguments} -% The \env{poetryaux} environment is required because \cs{@@_obeylines:} +% The \val{poetryaux} environment is required because \cs{@@_obeylines:} % breaks the reading of optional arguments. % \begin{macrocode} \DeclareDocumentEnvironment { poetryaux } { o } { \tl_if_novalue:nF { ##1 } - { - \keys_set:nn - { scripture / poetry } - { ##1 } - } + { + \keys_set:nn + { scripture / poetry } + { ##1 } + } \@@_poetry_begin: - \ignorespaces + \@@_reference_start_peek: } { \@@_poetry_end: } \DeclareDocumentEnvironment { poetry } { } @@ -4766,19 +7242,91 @@ \tl_set_eq:NN \l_@@_ref_sep_tl \l_@@_inline_ref_sep_tl \cs_set_eq:NN \@@_version_format:n \@@_inline_version_format:n \tl_set_eq:NN \l_@@_version_delim_tl \l_@@_inline_version_delim_tl + \bool_set_false:N \l_@@_chap_para_bool \bool_set_true:N \l_@@_compact_bool + \bool_set_false:N \l_@@_heading_show_bool } - \bool_if:NT \l_@@_compact_bool + \bool_if:NT \l_@@_chap_para_bool { - \scripturesetup { chapter / nodrop } - \RenewDocumentEnvironment { center } { o } { \ignorespaces } { \unskip } - \RenewDocumentEnvironment { flushright } { o } { \ignorespaces } { \unskip } - \RenewDocumentEnvironment { hanging } { o } { \ignorespaces } { \unskip } \RenewDocumentEnvironment { midparachap } { o } { \ignorespaces } { \unskip } - \RenewDocumentEnvironment { narrow } { o } { \ignorespaces } { \unskip } - \RenewDocumentEnvironment { poetry } { o } { \ignorespaces } { \unskip } + } + \bool_if:NT \l_@@_verse_para_bool + { + \cs_set_eq:NN \vs \@@_verse_para_output:n + \cs_set_eq:NN \par \@@_para_par: + \cs_set_eq:NN \@par \@@_para_par: + \cs_set_eq:NN \@doendpe \@@_doendpe: + \cs_set_eq:NN \noindent \@@_para_noindent: + \cs_set_protected:Npn \\ + { + \mode_if_horizontal:TF + { \unskip } + { \@nolnerr } + } + \RenewDocumentEnvironment { midparachap } { o } + { + \str_set:Nn \l_@@_currenvir_str { midparachap } + \cs_set_eq:NN \noindent \tex_noindent:D + \cs_set_eq:cN { end ~ } \@@_mid_para_chap_end:n + \@@_reference_start_peek: + } + { + \para_end: + \bool_gset_false:N \g_@@_suppress_next_pilcrow_bool + } + } + \bool_if:NT \l_@@_compact_bool + { + \cs_set_eq:NN \noindent \@@_para_noindent: + \bool_if:NF \l_@@_verse_para_bool + { + \bool_set_false:N \l_@@_chap_drop_bool + \bool_set_false:N \l_@@_chap_drop_llap_bool + \bool_set_false:N \l_@@_chap_drop_smash_bool + \bool_set_false:N \l_@@_chap_para_bool + \cs_set_eq:NN \vs \@@_verse_compact_output:n + } + \bool_gset:Nn \g_@@_mode_vertical_inner_bool + { \mode_if_vertical_p: } + \RenewDocumentEnvironment { center } { o } + { + \str_set:Nn \l_@@_currenvir_str { center } + \@@_reference_start_peek: + } + { \@@_compact_end_inner: } + \RenewDocumentEnvironment { flushright } { o } + { + \str_set:Nn \l_@@_currenvir_str { flushright } + \@@_reference_start_peek: + } + { \@@_compact_end_inner: } + \RenewDocumentEnvironment { hanging } { o } + { + \str_set:Nn \l_@@_currenvir_str { hanging } + \@@_reference_start_peek: + } + { \@@_compact_end_inner: } + \RenewDocumentEnvironment { midparachap } { o } + { + \str_set:Nn \l_@@_currenvir_str { midparachap } + \cs_set_eq:cN { end ~ } \@@_mid_para_chap_end:n + \@@_reference_start_peek: + } + { \@@_compact_end_inner: } + \RenewDocumentEnvironment { narrow } { o } + { + \str_set:Nn \l_@@_currenvir_str { narrow } + \@@_reference_start_peek: + } + { \@@_compact_end_inner: } + \RenewDocumentEnvironment { poetry } { o } + { + \str_set:Nn \l_@@_currenvir_str { poetry } + \@@_reference_start_peek: + } + { \@@_compact_end_inner: } \cs_set_eq:NN \\ \unskip - \cs_set_eq:NN \par \relax + \cs_set_eq:NN \par \@@_compact_par: \cs_set_eq:NN \extraskip \relax \cs_set_eq:NN \nohang \relax \cs_set:Npn \selah @@ -4796,14 +7344,13 @@ \c_space_tl ##1 } - \mode_leave_vertical: } - \ignorespaces + \@@_reference_start_peek: } { - \bool_if:NT \l_@@_compact_bool - { \cs_set_eq:NN \par \endgraf } - \@@_end:n { #1 } + \bool_lazy_or:nnT \l_@@_compact_bool \l_@@_verse_para_bool + { \cs_set_eq:NN \par \para_end: } + \@@_end: } % \end{macrocode} % \end{envmacro} diff --git a/Master/texmf-dist/source/latex/scripture/scripture.ins b/Master/texmf-dist/source/latex/scripture/scripture.ins index c61f1dab650..888f62e4e8a 100644 --- a/Master/texmf-dist/source/latex/scripture/scripture.ins +++ b/Master/texmf-dist/source/latex/scripture/scripture.ins @@ -1,6 +1,6 @@ \iffalse meta-comment -Copyright (c) 2022-2023 David Purton <dcpurton@marshwiggle.net> +Copyright (c) 2022-2025 David Purton <dcpurton@marshwiggle.net> This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c of this license diff --git a/Master/texmf-dist/source/latex/yb-book/yb-book.dtx b/Master/texmf-dist/source/latex/yb-book/yb-book.dtx index 1c69ae61bbc..b8fcea6bdc6 100644 --- a/Master/texmf-dist/source/latex/yb-book/yb-book.dtx +++ b/Master/texmf-dist/source/latex/yb-book/yb-book.dtx @@ -1,7 +1,7 @@ % \iffalse meta-comment % (The MIT License) % -% Copyright (c) 2021-2024 Yegor Bugayenko +% Copyright (c) 2021-2025 Yegor Bugayenko % % Permission is hereby granted, free of charge, to any person obtaining a copy % of this software and associated documentation files (the 'Software'), to deal @@ -50,7 +50,7 @@ %<class>\NeedsTeXFormat{LaTeX2e} %<class>\ProvidesClass{yb-book} %<*class> -[23.03.2024 0.4.1 YB Branded Book Style] +[2025/01/05 0.5.1 YB Branded Book Style] %</class> %<*driver> \documentclass{ltxdoc} @@ -120,6 +120,10 @@ Hello, world! % I use this option to render \href{https://www.yegor256.com/code-ahead.html}{Code Ahead} book. % \end{macro} +% \begin{macro}{sparse} +% With this package option every section will start from a new page. +% \end{macro} + % \begin{macro}{manuscript} % When the format is not for Amazon printing, % but for some other purposes (the page size is A4), this option may be @@ -248,6 +252,7 @@ Hello, world! % First, we parse package options: % \changes{v0.3.0}{2023/05/22}{The \texttt{pgfopts} package is now used to parse package options.} +% \changes{v0.5.0}{2024/01/02}{The \texttt{sparse} package option added, to place every section in a new page.} % \begin{macrocode} \RequirePackage{pgfopts} \pgfkeys{ @@ -255,6 +260,7 @@ Hello, world! authordraft/.store in=\yb@authordraft, compact/.store in=\yb@compact, manuscript/.store in=\yb@manuscript, + sparse/.store in=\yb@sparse, } \ProcessPgfPackageOptions{/yb} % \end{macrocode} @@ -262,7 +268,8 @@ Hello, world! % Then, depending on the options like |authordraft| and |manuscript|, we preset % options of the class |book| and then load it: % \begin{macrocode} -\makeatletter\ifdefined\yb@authordraft +\makeatletter +\ifdefined\yb@authordraft \PassOptionsToClass{11pt}{book} \PassOptionsToClass{oneside}{book} \else @@ -273,33 +280,37 @@ Hello, world! \PassOptionsToClass{11pt}{book} \PassOptionsToClass{twoside}{book} \fi -\fi\makeatother +\fi +\makeatother \LoadClass{book} % \end{macrocode} +% Then, we load \href{https://ctan.org/pkg/inputenc}{inputenc} for UTF-8 encoding of the sources: +% \changes{v0.5.1}{2025/01/05}{Added the usage of \texttt{inputenc} in order to ensure UTF-8 encoding for the sources.} +% \begin{macrocode} +\RequirePackage[utf8]{inputenc} +% \end{macrocode} + % \begin{macro}{geometry} % Then, using |geometry|, we setup page layout: % \begin{macrocode} \RequirePackage{geometry} -\geometry{paperwidth=6in, paperheight=9in, bindingoffset=0.25in, +\geometry{ + paperwidth=6in, paperheight=9in, + bindingoffset=0.25in, left=0.75in, right=0.75in, top=0.75in, bottom=1.25in} -\makeatletter\ifdefined\yb@authordraft +\makeatletter +\ifdefined\yb@authordraft \geometry{a4paper, margin=1in, left=1.5in} \else \ifdefined\yb@manuscript \geometry{a4paper, margin=1.2in} \fi -\fi\makeatother +\fi +\makeatother % \end{macrocode} % \end{macro} -% Then, we configure input encoding for UTF-8: -% \begin{macrocode} -\RequirePackage[T1]{fontenc} -\RequirePackage[utf8]{inputenc} -\RequirePackage{lmodern} -% \end{macrocode} - % Then, we load \href{https://ctan.org/pkg/anyfontsize}{anyfontsize} to enable all sizes of fonts: % \begin{macrocode} \RequirePackage{anyfontsize} @@ -345,13 +356,30 @@ Hello, world! \setlist{nosep} % \end{macrocode} -% Then, we load more packages: +% Then, we load \href{https://ctan.org/pkg/float}{float} for floating figures: % \begin{macrocode} \RequirePackage{float} +% \end{macrocode} + +% Then, we load \href{https://ctan.org/pkg/ulem}{ulem} for inline lists: +% \begin{macrocode} \RequirePackage[normalem]{ulem} +% \end{macrocode} + +% Then, we load \href{https://ctan.org/pkg/xfp}{xfp} and +% \href{https://ctan.org/pkg/xifthen}{xifthen} for if-then-else: +% \begin{macrocode} \RequirePackage{xfp} -\RequirePackage{soul} \RequirePackage{xifthen} +% \end{macrocode} + +% Then, we load \href{https://ctan.org/pkg/soul}{soul} for highlighting: +% \begin{macrocode} +\RequirePackage{soul} +% \end{macrocode} + +% Then, we load \href{https://ctan.org/pkg/csquotes}{csquotes} for better rendering: +% \begin{macrocode} \RequirePackage[autostyle=try]{csquotes} % \end{macrocode} @@ -368,9 +396,11 @@ Hello, world! % \begin{macrocode} \RequirePackage{setspace} \setstretch{1.2} - \makeatletter\ifdefined\yb@authordraft\setstretch{1.1}\fi\makeatother - \makeatletter\ifdefined\yb@compact\setstretch{1.0}\fi\makeatother - \makeatletter\ifdefined\yb@manuscript\setstretch{1.1}\fi\makeatother + \makeatletter + \ifdefined\yb@authordraft\setstretch{1.1}\fi + \ifdefined\yb@compact\setstretch{1.0}\fi + \ifdefined\yb@manuscript\setstretch{1.1}\fi + \makeatother % \end{macrocode} % \end{macro} @@ -416,18 +446,22 @@ Hello, world! % \begin{macro}{microtype} % Then, we include |microtype| for better rendering: % \begin{macrocode} -\makeatletter\ifdefined\yb@authordraft\else +\makeatletter +\ifdefined\yb@authordraft\else \RequirePackage[letterspace=-50]{microtype} -\fi\makeatother +\fi +\makeatother % \end{macrocode} % \end{macro} % \begin{macro}{libertine} % Then, we include |libertine|, for a good looking font: % \begin{macrocode} -\makeatletter\ifdefined\yb@manuscript +\makeatletter +\ifdefined\yb@manuscript \RequirePackage[tt=false,type1=true]{libertine} -\fi\makeatother +\fi +\makeatother % \end{macrocode} % \end{macro} @@ -436,15 +470,16 @@ Hello, world! % \begin{macrocode} \makeatletter \let\yb@oldsection\section +\def\yb@secstart{\ifdefined\yb@sparse\newpage\fi} \ifdefined\yb@authordraft \RequirePackage[medium]{titlesec} \else \RequirePackage[raggedright]{titlesec} \titlespacing{\section}{0in}{6pt}{6pt}[1in] - \renewcommand\section{\newpage\yb@oldsection} + \renewcommand\section{\yb@secstart\newpage\yb@oldsection} \fi \ifdefined\yb@compact - \renewcommand\section{\vspace{2em}\yb@oldsection} + \renewcommand\section{\yb@secstart\vspace{2em}\yb@oldsection} \fi \makeatother % \end{macrocode} @@ -452,7 +487,8 @@ Hello, world! % Then, if it's a |authordraft|, we put a watermark comment: % \begin{macrocode} -\makeatletter\ifdefined\yb@authordraft +\makeatletter +\ifdefined\yb@authordraft \RequirePackage[absolute]{textpos} \TPGrid{16}{16} \RequirePackage{fancyhdr} @@ -463,9 +499,9 @@ Hello, world! \fancyhf{} \fancyhead[L,C,LO,CO]{} \fancyhead[R,RO]{ - \begin{textblock}{4}(11.5,1) + \begin{textblock}{4}(11.5,1)% \tikz \node [color=gray, rotate=270, - font=\ttfamily\scriptsize, text width=5in] at (0,0) { + font=\ttfamily\scriptsize, text width=5in] at (0,0) {% Copyright \textcopyright{} \the\year{} by \theauthor{}. All rights reserved. No part of the contents of this book may be reproduced or transmitted in any @@ -473,13 +509,14 @@ Hello, world! of the publisher. This particular manuscript is printed for \textbf{\thereviewer{}} and may be used only for one-time review. The manuscript has to be destroyed - after the review. + after the review.% }; \end{textblock} } - \fancyfoot[C,CO,CE]{\small\ttfamily + \fancyfoot[C,CO,CE]{\small\ttfamily% page \#\thepage{} of \pageref{LastPage}} -\fi\makeatother +\fi +\makeatother % \end{macrocode} % \begin{macro}{\maketitle} @@ -507,13 +544,14 @@ Hello, world! % \begin{macro}{\ybPrintTitlePage} % Then, we define |\ybPrintTitlePage| command: % \begin{macrocode} -\makeatletter\newcommand\ybPrintTitlePage{ +\makeatletter +\newcommand\ybPrintTitlePage{ \ifdefined\yb@authordraft\else \begin{titlepage} \ttfamily \vspace*{\fill} \noindent - {\Huge\textbf{\thetitle}} + {\Huge\thetitle} \\[1em] by \theauthor{} \\[4em] @@ -530,19 +568,22 @@ Hello, world! \vspace*{\fill} \end{titlepage} \fi -}\makeatother +} +\makeatother % \end{macrocode} % \end{macro} % \begin{macro}{\ybPrintTOC} % Then, we define |ybPrintTOC| command to print table of contents: % \begin{macrocode} -\makeatletter\newcommand\ybPrintTOC{ +\makeatletter +\newcommand\ybPrintTOC{ \ifdefined\yb@authordraft\else \ifdefined\yb@compact\else\cleardoublepage\fi {\setstretch{0.7}\tableofcontents} \fi -}\makeatother +} +\makeatother % \end{macrocode} % \end{macro} @@ -553,17 +594,19 @@ Hello, world! \renewbibmacro*{citeindex}{\indexnames{labelname}{}} \makeindex \indexsetup{othercode={\hyphenpenalty=10000}} -\makeatletter\newcommand\ybPrintIndex[1][Index]{ +\makeatletter +\newcommand\ybPrintIndex[1][Index]{% \ifdefined\yb@authordraft\else - \cleardoublepage - { - \setstretch{1.0} - \small - \addcontentsline{toc}{chapter}{#1} - \printindex - } - \fi -}\makeatother + \cleardoublepage% + {% + \setstretch{1.0}% + \small% + \addcontentsline{toc}{chapter}{#1}% + \printindex% + }% + \fi% +} +\makeatother % \end{macrocode} % \end{macro} @@ -588,7 +631,8 @@ Hello, world! skipabove=0pt,skipbelow=0pt, linewidth=2pt, topline=false,bottomline=false,leftline=false} -\makeatletter\newcommand\ybQuote[3]{% +\makeatletter +\newcommand\ybQuote[3]{% \ifthenelse{\isempty{#3}}{}{ \ifx\hfuzz#2\hfuzz% \index{#3}% @@ -621,7 +665,8 @@ Hello, world! \vspace{-12pt} \end{wrapfigure}% \fi% -}\makeatother +} +\makeatother % \end{macrocode} % \end{macro} @@ -643,7 +688,8 @@ Hello, world! % \begin{macro}{\ybPrintBibliography} % Then, we define |\ybPrintBibliography|, to print a list of references: % \begin{macrocode} -\makeatletter\newcommand\ybPrintBibliography{% +\makeatletter +\newcommand\ybPrintBibliography{% \AtNextBibliography{\small}% \raggedright% \ifdefined\yb@manuscript% @@ -655,7 +701,8 @@ Hello, world! \else \printbibliography \fi -}\makeatother +} +\makeatother % \end{macrocode} % \end{macro} @@ -679,6 +726,8 @@ Hello, world! \newcommand*\theversion{\textbackslash{}theversion} \newcommand*\theauthor{\textbackslash{}theauthor} \newcommand*\thereviewer{\textbackslash{}thereviewer} + +\endinput % \end{macrocode} % \Finale diff --git a/Master/texmf-dist/source/latex/yb-book/yb-book.ins b/Master/texmf-dist/source/latex/yb-book/yb-book.ins index 28537392a3e..d316cf1bb1c 100644 --- a/Master/texmf-dist/source/latex/yb-book/yb-book.ins +++ b/Master/texmf-dist/source/latex/yb-book/yb-book.ins @@ -1,6 +1,6 @@ %% (The MIT License) %% -%% Copyright (c) 2021-2024 Yegor Bugayenko +%% Copyright (c) 2021-2025 Yegor Bugayenko %% %% Permission is hereby granted, free of charge, to any person obtaining a copy %% of this software and associated documentation files (the 'Software'), to deal @@ -26,7 +26,7 @@ \preamble (The MIT License) -Copyright (c) 2021-2024 Yegor Bugayenko +Copyright (c) 2021-2025 Yegor Bugayenko Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal diff --git a/Master/texmf-dist/source/latex/zugferd/zugferd.dtx b/Master/texmf-dist/source/latex/zugferd/zugferd.dtx index 83b080e77c6..53ad030fad0 100644 --- a/Master/texmf-dist/source/latex/zugferd/zugferd.dtx +++ b/Master/texmf-dist/source/latex/zugferd/zugferd.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2021–2024 Marei Peischl <marei@peitex.de> +% Copyright (C) 2021–2025 Marei Peischl <marei@peitex.de> % --------------------------------------------------------- % % This file may be distributed and/or modified under the @@ -16,14 +16,14 @@ % \fi % \iffalse %<*driver> -\ProvidesFile{zugferd.dtx}[2024-12-08 v0.9c ZUGFerd Invoice and Faktur-X] +\ProvidesFile{zugferd.dtx}[2025-01-02 v0.9d ZUGFerd Invoice and Faktur-X] %</driver> %<package>\NeedsTeXFormat{LaTeX2e}[2023-11-01] -%<package>\ProvidesExplPackage{zugferd}{2024-12-08}{0.9c}{Create ZUGFerd invoices using LaTeX} +%<package>\ProvidesExplPackage{zugferd}{2025-01-02}{0.9d}{Create ZUGFerd invoices using LaTeX} %<*driver> \DocumentMetadata{pdfstandard=a-3b,lang=en} \documentclass[lm-default=false,cs-break-nohyphen]{l3doc} -\usepackage{zugferd}[2024-12-08] +\usepackage{zugferd}[2025-01-02] \EnableCrossrefs %\CodelineIndex \RecordChanges @@ -220,6 +220,15 @@ author={Peischl, Marei}, url={https://github.com/TeXhackse/LaTeX-ZUGFeRD} } +@online{hyperref, + title = {CTAN: Package hyperref}, + urldate = {2025-01-02}, + language = {english}, + author={Rahtz, Sebastian and Oberdiek, Heiko and {The \LaTeX{} Project}}, + date={2024-11-05}, + url = {https://ctan.org/pkg/hyperref}, + documentation = {ctan://macros/latex/contrib/hyperref/doc/hyperref-doc.pdf} +} \end{filecontents} \addbibresource{zugferd.bib} \nocite{cl-recommendations} @@ -384,16 +393,10 @@ % % The option \option{xrechnung} is only used internally to set the global parameters for all |xrechnung| variants. % -% \DescribeKeyOption{auto-exemption=\meta{boolean}}{true} -% \pkg{zugferd} tries to automatically add an exemption-reason for the most common VAT categories. -% In case a more specific reason is required this setting can be disabled and everything should be configured manually. -% See \autoref{sec:tax-category} for more explanation of this feature and the categories this applies to. -% % \end{documentation} % \begin{implementation} -% \begin{optionenv}{format,xrechnung,write-xml,zugferd,xml-file,auto-exemption} +% \begin{optionenv}{format,xrechnung,write-xml,zugferd,xml-file} % \changes{v0.9a}{2024-11-07}{Add support for format=minimum} -% \changes{v0.7}{2024-09-10}{Added auto-exemption option} % \begin{macrocode} \char_set_catcode_other:N \#% \keys_define:nn {zugferd} { @@ -452,25 +455,59 @@ xml-file .tl_gset:N = \g_@@_xml_file_tl, xml-file .initial:n = \jobname _zugferd.xml, xml-file .usage:n = load, +% \end{macrocode} +% \end{optionenv} +% \end{implementation} +% \begin{documentation} +% \DescribeKeyOption{auto-exemption=\meta{boolean}}{true} +% \pkg{zugferd} tries to automatically add an exemption-reason for the most common VAT categories. +% In case a more specific reason is required this setting can be disabled and everything should be configured manually. +% See \autoref{sec:tax-category} for more explanation of this feature and the categories this applies to. +% +% \end{documentation} +% \begin{implementation} +% \changes{v0.7}{2024-09-10}{Added auto-exemption option} +% \begin{optionenv}{auto-exemption} +% \begin{macrocode} auto-exemption .bool_gset:N = \g_@@_auto_exemption_bool, auto-exemption .initial:n = true, auto-exemption .default:n = true, - auto-exemption .usage:n =load, + auto-exemption .usage:n = load, +% \end{macrocode} +% \end{optionenv} +% \end{implementation} +% \begin{documentation} +% \DescribeKeyOption{unknown-value-warning=\meta{boolean}}{true} +% There are predefined values for units, tax categories and payment-means. +% Since there are a lot of options \pkg{zugferd} does not define all of them. +% In case you want to use another one as the predefined options you there will a warning to make you aware of the fact, that the package does not know if that's a valid selection. +% This is to help you avoiding typos. +% In case you are sure about your selection and don't want to define an own value for this you can also disable the warning by setting \option{unknown-value-warning} to false. +% +% \end{documentation} +% \begin{implementation} +% \changes{v0.9d}{2025-01-02}{Added unknown-value-warning option} +% \begin{optionenv}{unknown-value-warning} +% \begin{macrocode} + unknown-value-warning .bool_gset:N = \g_@@_unknown_value_warning_bool, + unknown-value-warning .initial:n = true, +% \end{macrocode} +% \end{optionenv} +% \begin{macrocode} } \char_set_catcode_parameter:N \#% \ProcessKeyOptions[zugferd] % \end{macrocode} -% \end{optionenv} % \subsection{Preparation to write the \file{.xml} file} % \begin{variable}{\_@@_xml_writer_iow} % \begin{macrocode} \iow_new:N \_@@_xml_writer_iow % \end{macrocode} % \end{variable} -% To adjust the metadata it is necessary to use the \pkg{pdfmanagement-testphase} by \citeauthor{pdfmanagement-testphase}. +% To adjust the metadata it is necessary to use the \pkg{pdfmanagement-testphase} by Ulrike Fischer from the \LaTeX{} Project Team. % She had prepared some experiment files for the PDF attachment in the experiments of the repository. -% We use these to embed the \XML file. +% We use these to embed the \XML file \issue{7}. % % This part prepares the XMP metadata according to the required scheme. % \changes{v0.8a}{2024-09-17}{Use the new public interface for l3pdfmeta.} @@ -558,8 +595,9 @@ % \end{syntax} % \DescribeMacro{\SetZUGFeRDData} % \DescribeMacro[noindex]{\SetZugferdData} -% The two modes of \cs[no-index]{SetZUGFeRDData} control if the argument is expanded before the fields are set. +% The two modes of \cs[no-index]{SetZUGFeRDData} control if the argument is expanded before the data is processed. % Depending on the source of the data this might be necessary. +% In that case activate the expansion by using the star argument. % Fields which are involved in the calculation will be expanded anyway, but the text fields will not, to support special characters. % % \end{documentation} @@ -613,12 +651,15 @@ % To simplify the usage in letters we also add fields to be able to use the zugferd data within \LaTeX{} output. % Country is still missing. % \begin{macrocode} +\NewExpandableDocumentCommand{\UseZUGFeRDElement}{m}{ + \tl_use:c {l_@@_#1_tl} +} \NewDocumentCommand{\InsertZUGFeRDData}{om}{ \str_case:nnF {#1} { % \end{macrocode} % \begin{macrocode} {AddressData} { - \clist_map_inline:nn {name, lineone, linetwo} { + \clist_map_inline:nn {name, lineone, linetwo,linethree} { \prop_if_in:cnT {g_@@_#2_AddressData_prop } {##1} { \prop_item:cn {g_@@_#2_AddressData_prop } {##1}\\ } @@ -820,7 +861,7 @@ % \DescribeMacro{\zugferd_write_Item:ennnnnn} % This is grouping the command and adding an argument in front to add additional options. % \begin{syntax} -% \cs[no-index]{zugferd_write_Item:nnnnn} +% \cs[no-index]{zugferd_write_Item:nnnnnnn} % \marg{additional local options} % \marg{LineID}\marg{optional: item id (\enquote{SellerAssignedID})}\marg{item name} % \marg{NetPriceProductTradePrice} @@ -1396,7 +1437,9 @@ } {\keys_set:nx { zugferd } {unit= {\str_uppercase:f {#1}}}} { - \msg_warning:nnn { zugferd } {unknown-value} {currency} {#1} + \bool_if:NT \g_@@_unknown_value_warning_bool { + \msg_warning:nnn { zugferd } {unknown-value} {currency} {#1} + } \tl_set:Ne \l_@@_currency_tl {\str_uppercase:f {#1}} } }, @@ -1467,6 +1510,8 @@ % \DescribeKeyOption{add-note=\meta{Tokenlist}}{}* % The ZUGFeRD example files\cite{zugferd-download} use all visible data to add them to the \XML as a note. % \option{subject} and \option{fromaddress} are used to support this. +% \changes{v0.9d}{2025-01-02}{Add note on subject not being the same as subject-code \issue{35}.}% +% Please be aware that \option{subject-code} is not the same as \option{subject} even if some viewers might display it like that, \issue{35}. % The data should not be too relevant but \pkg{zugferd} want's to support adding additional data to the \XML using the note element. % So these fields can be left out but in case they are not empty, they will also be written to the \XML. % @@ -1620,25 +1665,25 @@ \seq_set_split:Nnn \l_tmpa_seq {\\} {##1} %TODO error if more than 2 lines or only 1 \keys_set:nx {zugferd / #1} { - lineone=\seq_item:Nn \l_tmpa_seq {1}, - linetwo=\seq_item:Nn \l_tmpa_seq {2}, - linethree=\seq_item:Nn \l_tmpa_seq {3} + lineone={\seq_item:Nn \l_tmpa_seq {1}}, + linetwo={\seq_item:Nn \l_tmpa_seq {2}}, + linethree={\seq_item:Nn \l_tmpa_seq {3}} } }, contact .code:n = { \seq_set_split:Nnn \l_tmpa_seq {\\} {##1} \int_compare:nNnTF {\seq_count:N \l_tmpa_seq} > {3} { \keys_set:ne {zugferd/#1} { - contact-name = \seq_item:Nn \l_tmpa_seq {1}, - contact-department = \seq_item:Nn \l_tmpa_seq {2}, - contact-phone = \seq_item:Nn \l_tmpa_seq {3}, - contact-email= \seq_item:Nn \l_tmpa_seq {4} + contact-name = {\seq_item:Nn \l_tmpa_seq {1}}, + contact-department = {\seq_item:Nn \l_tmpa_seq {2}}, + contact-phone = {\seq_item:Nn \l_tmpa_seq {3}}, + contact-email= {\seq_item:Nn \l_tmpa_seq {4}}, } }{ \keys_set:ne {zugferd/#1} { - contact-name = \seq_item:Nn \l_tmpa_seq {1}, - contact-phone = \seq_item:Nn \l_tmpa_seq {2}, - contact-email= \seq_item:Nn \l_tmpa_seq {3} + contact-name = {\seq_item:Nn \l_tmpa_seq {1}}, + contact-phone = {\seq_item:Nn \l_tmpa_seq {2}}, + contact-email= {\seq_item:Nn \l_tmpa_seq {3}}, } } }, @@ -1727,23 +1772,15 @@ \_@@_define_xml_content:Nn \_@@_PostalTradeAddress:nnnnnnn {% <ram:PostalTradeAddress> \bool_if:NF \g_@@_minimum_bool {% - \_@@_indent: <ram:PostcodeCode>#1</ram:PostcodeCode> - \tl_if_blank:nF {#2} {% - \_@@_indent: <ram:LineOne>#2</ram:LineOne> - }% - \tl_if_blank:nF {#3} {% - \_@@_indent: <ram:LineTwo>#3</ram:LineTwo> - }% - \tl_if_blank:nF {#4} {% - \_@@_indent: <ram:LineThree>#4</ram:LineThree> - }% - \_@@_indent: <ram:CityName>#5</ram:CityName> + \_@@_write_inline_i:nn {ram:PostcodeCode} {#1} + \_@@_write_inline_i:nn {ram:LineOne} {#2} + \_@@_write_inline_i:nn {ram:LineTwo} {#3} + \_@@_write_inline_i:nn {ram:LineThree} {#4} + \_@@_write_inline_i:nn {ram:CityName} {#5} }% \_@@_indent: <ram:CountryID>#6</ram:CountryID> \bool_if:NF \g_@@_minimum_bool {% - \tl_if_blank:nF {#7} {% - \_@@_indent: <ram:CountrySubDivisionName>#7</ram:CountrySubDivisionName> - }% + \_@@_write_inline_i:nn {ram:CountrySubDivisionName} {#7} }% </ram:PostalTradeAddress>% }% @@ -1780,19 +1817,9 @@ \bool_if:NT \g_@@_writeTradeContact_bool {% <ram:DefinedTradeContact> \_@@_indent: <ram:PersonName>#1</ram:PersonName> - \tl_if_blank:nF {#2} {% - \_@@_indent: <ram:DepartmentName>#2</ram:DepartmentName> - }% - \tl_if_blank:nF {#3} {% - \_@@_indent: <ram:TelephoneUniversalCommunication> - \_@@_indent:n {2} <ram:CompleteNumber>#3</ram:CompleteNumber> - \_@@_indent: </ram:TelephoneUniversalCommunication> - }% - \tl_if_blank:nF {#4} {% - \_@@_indent: <ram:EmailURIUniversalCommunication> - \_@@_indent:n {2} <ram:URIID>#4</ram:URIID> - \_@@_indent: </ram:EmailURIUniversalCommunication> - }% + \_@@_write_inline_i:nn {ram:DepartmentName} {#2} + \_@@_write_inline_wrapped_i:nnn {ram:TelephoneUniversalCommunication} {ram:CompleteNumber} {#3} + \_@@_write_inline_wrapped_i:nnn {ram:EmailURIUniversalCommunication} {ram:URIID} {#4} </ram:DefinedTradeContact>% }% }% @@ -1917,10 +1944,10 @@ \clist_new:N \g_@@_buyer_document_references_clist \keys_define:nn {zugferd} { contract-reference .prop_gput:N = \g_@@_document_references_prop, - purchaseorder-reference .prop_gput:N = \g_@@_document_references_prop, - purchase-order-reference .meta:n = {purchaseorder-reference=#1}, - salesorder-reference .prop_gput:N = \g_@@_document_references_prop, - sales-order-reference .meta:n = {salesorder-reference=#1}, + buyerorder-reference .prop_gput:N = \g_@@_document_references_prop, + purchase-order-reference .meta:n = {buyerorder-reference=#1}, + sellerorder-reference .prop_gput:N = \g_@@_document_references_prop, + sales-order-reference .meta:n = {sellerorder-reference=#1}, } \cctab_begin:N \g_@@_xml_cctab% \_@@_define_xml_writer:Nn \_@@_write_ReferencedDocument:n {% @@ -1999,7 +2026,9 @@ \tl_gset_eq:NN \g_@@_payment_means_tl \l_keys_choice_tl }, payment-means / unknown .code:n = { - \msg_warning:nnn { zugferd } {unknown-value} {payment-means} {#1} + \bool_if:NT \g_@@_unknown_value_warning_bool { + \msg_warning:nnn { zugferd } {unknown-value} {payment-means} {#1} + } \tl_gset:Nn \g_@@_payment_means_tl {\int_eval:n {#1}} } } @@ -2073,7 +2102,9 @@ { \keys_set:ne { zugferd } {unit= {\l_tmpa_tl}} } { - \msg_warning:nnn { zugferd } {unknown-unit} {#1} + \bool_if:NT \g_@@_unknown_value_warning_bool { + \msg_warning:nnn { zugferd } {unknown-unit} {#1} + } \tl_set_eq:NN \l_@@_unit_code_tl \l_tmpa_tl } }, @@ -2223,7 +2254,10 @@ { \keys_set:nx { zugferd } {category= {\str_uppercase:f {#1}}} } { - \msg_warning:nnn { zugferd } {unknown-tax-category} {#1} + \tl_set:Ne \l_@@_tax_category_code_tl {\str_uppercase:f {#1}} + \bool_if:NT \g_@@_unknown_value_warning_bool { + \msg_warning:nnn { zugferd } {unknown-tax-category} {#1} + } } }, category .initial:n = S, @@ -2279,6 +2313,15 @@ <#1#2>#3</#1> } } +\_@@_define_xml_content:Nn \_@@_write_inline_wrapped:nnnn { + \_@@_indent:n {#1} <#2>\_@@_xml_newline_indent: + \_@@_indent:n {#1+1} <#3>#4</#3>\_@@_xml_newline_indent: + \_@@_indent:n {#1} </#2> +} +\_@@_define_xml_content:Nn \_@@_write_inline_wrapped_i:nnn { + \_@@_write_inline_wrapped:nnnn {1} {#1} {#2} {#3} +} + \cs_generate_variant:Nn \_@@_write_inline:nn {ne} \_@@_define_xml_content:Nn \_@@_write_inline_i:nnn { \_@@_indent: \_@@_write_inline:nnn {#1} {#2} {#3} diff --git a/Master/texmf-dist/source/support/bib2gls/src/bib2gls-begin.tex b/Master/texmf-dist/source/support/bib2gls/bib2gls-begin.tex index b0c002641e9..b0c002641e9 100644 --- a/Master/texmf-dist/source/support/bib2gls/src/bib2gls-begin.tex +++ b/Master/texmf-dist/source/support/bib2gls/bib2gls-begin.tex diff --git a/Master/texmf-dist/source/support/bib2gls/src/bib2gls-cite.bib b/Master/texmf-dist/source/support/bib2gls/bib2gls-cite.bib index 17a36f7d255..17a36f7d255 100644 --- a/Master/texmf-dist/source/support/bib2gls/src/bib2gls-cite.bib +++ b/Master/texmf-dist/source/support/bib2gls/bib2gls-cite.bib diff --git a/Master/texmf-dist/source/support/bib2gls/bib2gls-src.zip b/Master/texmf-dist/source/support/bib2gls/bib2gls-src.zip Binary files differnew file mode 100644 index 00000000000..9048c562740 --- /dev/null +++ b/Master/texmf-dist/source/support/bib2gls/bib2gls-src.zip diff --git a/Master/texmf-dist/source/support/bib2gls/src/bib2gls-terms.bib b/Master/texmf-dist/source/support/bib2gls/bib2gls-terms.bib index 602e07d4d57..602e07d4d57 100644 --- a/Master/texmf-dist/source/support/bib2gls/src/bib2gls-terms.bib +++ b/Master/texmf-dist/source/support/bib2gls/bib2gls-terms.bib diff --git a/Master/texmf-dist/source/support/bib2gls/src/bib2gls.bib b/Master/texmf-dist/source/support/bib2gls/bib2gls.bib index b8f98bf7f06..fc8713663ce 100644 --- a/Master/texmf-dist/source/support/bib2gls/src/bib2gls.bib +++ b/Master/texmf-dist/source/support/bib2gls/bib2gls.bib @@ -1987,6 +1987,18 @@ name}, category={command} } +@bibglscommand{BibGlsNoCaseChange, + name={\csfmt{Bib\-Gls\-No\-Case\-Change}}, + user1={\margm{text}}, + description={behaves as \cs{NoCaseChange} within \bibgls, but + the definition provided in the \ext{glstex} file simply expands + to \meta{text} in the document without adding the command to the + case-changing exclusion list}, + topics={formattingcommands,casecommands}, + note={\bibgls\texparserdefnote}, + category={command} +} + @bibglscommand{bibglsuppercase, name={\csfmt{bib\-gls\-upper\-case}}, user1={\margm{text}}, @@ -2769,6 +2781,27 @@ starred version \csref{glsxtrfmt*}}, parent={resourceoptions} } +@resourceoption{opt.omit-fields, + name={\csoptfmt{omit\dhyphen fields}}, + user1={\meta{list}}, + category={resourceoption}, + parent={resourceoptions} +} + +@resourceoption{opt.omit-fields-missing-field-action, + name={\csoptfmt{omit\dhyphen fields\dhyphen missing\dhyphen field\dhyphen action}}, + user1={\margm{value}}, + category={resourceoption}, + parent={resourceoptions} +} + +@resourceoption{opt.gather-parsed-dependencies, + name={\csoptfmt{gather\dhyphen parsed\dhyphen dependencies}}, + user1={\meta{value}}, + category={resourceoption}, + parent={resourceoptions} +} + @resourceoption{opt.date-time-fields, name={\csoptfmt{date\dhyphen time\dhyphen fields}}, user1={\meta{list}}, @@ -3367,7 +3400,7 @@ field\dhyphen locale}}, } @resourceoption{opt.prune-seealso-op, - name={\csoptfmt{prune\dhyphen see\dhyphen op}}, + name={\csoptfmt{prune\dhyphen seealso\dhyphen op}}, user1={\meta{value}}, category={resourceoption}, parent={resourceoptions} @@ -19524,7 +19557,7 @@ first argument}, } @command{datatoolctrlboundary, - name={\csfmt{data\-tool\-ctrl\-boundary}}, + name={\csfmt{data\-tool\-ctrl\-bound\-ary}}, description={marker used with \cs{DTLsortwordlist}}, note={\styfmt{datatool-base}\texparserdefnote\ v3.0+}, category={command} diff --git a/Master/texmf-dist/source/support/bib2gls/src/bib2gls.pod b/Master/texmf-dist/source/support/bib2gls/bib2gls.pod index a6c36b9d8d6..a6c36b9d8d6 100644 --- a/Master/texmf-dist/source/support/bib2gls/src/bib2gls.pod +++ b/Master/texmf-dist/source/support/bib2gls/bib2gls.pod diff --git a/Master/texmf-dist/source/support/bib2gls/src/bib2gls.tex b/Master/texmf-dist/source/support/bib2gls/bib2gls.tex index 8d78c9d1986..81cd0a4de74 100644 --- a/Master/texmf-dist/source/support/bib2gls/src/bib2gls.tex +++ b/Master/texmf-dist/source/support/bib2gls/bib2gls.tex @@ -2214,7 +2214,7 @@ the corresponding set of \ext{bib} files: don't have a corresponding key for use with \gls!{newglossaryentry} aren't set until the \ext{glstex} file is written); - \item ignored fields (identified by \csopt{ignore-fields}) are + \item ignored fields (identified by \csopt{ignore-fields}, not by \csopt{omit-fields}) are removed; \item case-changes (for example, \csopt{short-case-change}) are @@ -2334,6 +2334,11 @@ Processing master \meta{resource-name} \end{alltt} at this point. +Options such as \csopt{copy-to-glossary} and \csopt{omit-fields} are +implemented when each entry has its definition written to the \ext{glstex} +file. This means that the omitted fields will still be available for actions +such as sorting, establishing dependencies, or field assignments. + \end{description} Parent entries must always be in the same \igls{resourceset} as their @@ -3341,7 +3346,7 @@ This is equivalent to: \end{codeenv} The \meta{options} list should be a \keyvallist\ where the \meta{key} is the same as the long switch without the preceding -\code{\longswitch}. Any \code{\longswitch no-\meta{option}} should +\code{\longswitch} and any \code{\longswitch no-\meta{option}} should be specified as \code{\meta{option}=false} within \gls{BibGlsOptions}. For example, to set global options via the command line: @@ -3432,12 +3437,11 @@ from the normal messages. If you report an issue, you may be asked to switch on debugging mode to help identify a non-reproducible error and provide the transcript file. -The \longargfmt{debug} option can be used to switch on debugging mode. -If \meta{n} is present, it must be a non-negative integer indicating -the debugging mode. If omitted, 1 is assumed. This option also -switches on the verbose mode. A value of 0 is equivalent to -\commonlongarg{no-debug}. -This option cannot be set in \gls{BibGlsOptions}. +The \commonlongarg{debug} optional value can be used to adjust the level of +debugging information. If \meta{n} is present, it must be a non-negative +integer indicating the debugging mode. If omitted, 1 is assumed. This option +also switches on the verbose mode. A value of 0 is equivalent to +\commonlongarg{no-debug}. This option cannot be set in \gls{BibGlsOptions}. The value of \meta{n} determines how much extra information is provided. If \meta{n} is greater than 0 then all \bibgls\ debugging @@ -3458,7 +3462,7 @@ an exception with a stack trace in debug mode. \commonarg{debug-mode} -This option is an alternative to \longargfmt{debug} where the value +This option is an alternative to \commonlongarg{debug} where the value of \meta{n} needs to be calculated. This option cannot be set in \gls{BibGlsOptions}. Debugging mode requires a @@ -3518,9 +3522,9 @@ typically just be data read from recognised \iext{aux} commands. \end{itemize} For example: -\begin{alltt} -bib2gls \longargfmt{debug-mode} catcode,sty-data \meta{filename} -\end{alltt} +\begin{codeenv} +bib2gls \commonlongarg{debug-mode} catcode,sty-data \meta{filename} +\end{codeenv} \commonarg{no-debug} @@ -3681,7 +3685,7 @@ switch is used, the interpreter can recognise \ics{ProvidesPackage}, \ics{ProcessOptions}, \ics{PackageError} and \ics{RequirePackage}, but it can't deal with complicated code. In the case of \ics{RequirePackage}, support will also be governed by -\longargfmt{custom-packages}. This option has a cumulative action. +\longarg{custom-packages}. This option has a cumulative action. Multiple instances of this switch can occur on the command line. If used in \gls{BibGlsOptions}, the nature of the \keyvallist\ @@ -3704,25 +3708,23 @@ Alternatively, within the document: \argsection{datatool-sort-markers} The \sty{datatool-base} package provides some marker commands -designed for use with \ics{DTLsortwordlist}. These commands by -default will be defined to match their normal \sty{datatool-base} -behaviour. - -The \longswitch{datatool-sort-markers} switch will instead define those -marker commands to match their localised definitions within -\cs{DTLsortwordlist}. Additionally, \ics{dtltexorsort} will be -redefined to expand to its second argument. +designed for use with \ics{DTLsortwordlist}: \ics{datatoolasciistart}, +\ics{datatoolpersoncomma}, \ics{datatoolplacecomma}, +\ics{datatoolsubjectcomma}, \ics{datatoolparenstart}, +\ics{datatoolctrlboundary}, \ics{datatoolasciiend}, and +\ics{datatoolparen}. These commands by default will be defined by the +interpreter to match their normal \sty{datatool-base} behaviour (see the +\sty{datatool} documentation for further details). Additionally, +\ics{dtltexorsort} will be redefined to expand to its \emph{first} argument. Note that you don't need to request the \sty{datatool-base} package, unless you require support for other commands provided by that package. -The marker commands are: \ics{datatoolasciistart}, -\ics{datatoolpersoncomma}, \ics{datatoolplacecomma}, -\ics{datatoolsubjectcomma}, \ics{datatoolparenstart}, -\ics{datatoolctrlboundary}, \ics{datatoolasciiend}, and -\ics{datatoolparen} (see the \sty{datatool} documentation for -further details). With \longswitch{datatool-sort-markers}, these +The \longarg{datatool-sort-markers} switch will instead define these +commands to match their localised definitions within +\cs{DTLsortwordlist}. This means that \ics{dtltexorsort} will be +defined to expand to its \emph{second} argument and the marker commands will expand to content that includes special control codes. Note that language-sensitive sort methods typically ignore control codes, so these would either need to be used with a character-code @@ -3744,6 +3746,9 @@ For example: ]{sort-rule} \end{codeenv} +Instead of \ics{dtltexorsort} (which varies according to this setting), you may +prefer to use \ics{IfTeXParserLib} or \ics{IfNotBibGls}. + \argsection{no-datatool-sort-markers} Define the \sty{datatool-base} marker commands @@ -3757,7 +3762,7 @@ listed in \meta{list}. Note that this option simply instructs \bibgls\ to ignore the package information in the log file. Any packages that are identified with \longarg{packages} will be passed to the interpreter if support is available, even if the package is also -listed in \longargfmt{ignore-packages}. Note that +listed in \longarg{ignore-packages}. Note that unknown packages can't be included in the ignored \meta{list}. This option cannot be set in \gls{BibGlsOptions}. @@ -3996,7 +4001,7 @@ entry given by \code{gls.sample}.) \item The second \gls{record} (\encap{hypersf}) conflicts with the existing \gls{record} (\encap{emph}). Neither has the format \encap{glsnumberformat} or \encap{glsignore} so \bibgls\ consults -the mappings provided by \longargfmt{map-format}. +the mappings provided by \longarg{map-format}. \begin{itemize} \item The \encap{hypersf} format (from the new record) is mapped to \encap{hyperit}, @@ -4017,7 +4022,7 @@ records for other entries also used on page~3 interspersed between these records \item The third \gls{record} (\encap{hyperbf}) conflicts with the existing \gls{record} (\encap{emph}). Neither has the format \encap{glsnumberformat} or \encap{glsignore} so \bibgls\ again consults -the mappings provided by \longargfmt{map-format}. +the mappings provided by \longarg{map-format}. \begin{itemize} \item The new \gls{record}['s] \encap{hyperbf} format has no mapping provided, so \bibgls\ moves on to the next test: @@ -4501,7 +4506,7 @@ For example: } \end{codeenv} Here the \csopt{type} is set and \bibgls\ can detect that -\isty{hyperref} has been loaded, so if the \longargfmt{group} switch +\isty{hyperref} has been loaded, so if the \longarg{group} switch is used, then the group hyperlinks can be set (using \gls!{bibglshypergroup}). This means that the build process is just: @@ -4515,7 +4520,7 @@ Note that this requires \isty{glossaries} v4.53+ and or \sty{glossaries-extra} is too old, an extra \LaTeX\ run is required. -If \isty{hyperref} isn't loaded or the \longargfmt{group} switch +If \isty{hyperref} isn't loaded or the \longarg{group} switch isn't used or the \field{type} isn't set or your version of \sty{glossaries} is too old, then the information can't be saved in the \ext{glstex} file. @@ -5992,7 +5997,7 @@ The \LaTeX\ code written to the \iext{glstex} file is essentially \gls{newabbreviation}\marg{dual.html}\marg{HTML}\marg{hypertext markup language} \strut \comment{from \atentry{index}\marg{mouse}:} -\gls{newglossaryentry}\marg{mouse}{\marg{name}=\marg{mouse},\field{description}=\marg{}} +\gls{newglossaryentry}\marg{mouse}\marg{\marg{name}=\marg{mouse},\field{description}=\marg{}} \strut \comment{\dual\ of \atentry{dualabbreviationentry}\marg{ssi,\ldots}:} \gls{newglossaryentry}\marg{dual.ssi}\marg{\field{name}=\marg{server-side includes},\field{text}=\marg{SSI}, @@ -10774,7 +10779,7 @@ as \field{group}). These labels must not contain special characters or commands, but it's possible to convert a field value into a valid label using options such as \csopt{labelify}. -\subsection{Label Options} +\subsection{Entry Labels} \label{sec:labelopts} \optsection[\subsubsection]{interpret-label-fields} @@ -11282,82 +11287,6 @@ matches the prefixed label. If this option is set then the prefix won't be added if there's no matching entry. The default setting is \csopt[false]{prefix-only-existing}. -\optsection[\subsubsection]{save-original-id} - -The \meta{value} may be the keywords \code{false} or \code{true} or -the name of a field in which to store the entry's original -label (as given in the \ext{bib} file). The default setting is -\csopt[false]{save-original-id}. If \meta{value} is omitted or is the -keyword \code{true}, then \field{originalid} is assumed. - -If \meta{value} has an associated key in \gls!{newglossaryentry} -(for example, one provided with \cs{glsaddstoragekey}) it will be -set after the field aliases, otherwise (for example, -\field{originalid}) it will simply be added to the \ext{glstex} file -using \ics{GlsXtrSetField} after the entry definition (which means -the field can't be referenced in other resource options). This -setting is governed by \csopt{save-original-id-action}. - -\optsection[\subsubsection]{save-original-id-action} - -This option determines whether or not \csopt{save-original-id} -should save the original entry label. No action is performed when -\csopt[false]{save-original-id} otherwise the action is determined -by \meta{value} which may be one of the following keywords: -\begin{itemize} -\item \code{always}: always save the original label (default); -\item \code{no override}: don't override a field that's already been -set; -\item \code{changed override} or \code{changed} or \code{diff}: -only save the original label if it's different from the final label; -\item \code{changed no override}: -only save the original label if it's different from the final label -and the specified field hasn't been set. -\end{itemize} -The \qt{no override} options make no difference if the given field -has no associated key in \gls!{newglossaryentry} (such as -\field{originalid}). For known fields, bear in mind that the field -will be set after field aliasing but before other options, such as -\csopt{ignore-fields}. - -\optsection[\subsubsection]{save-definition-index} - -This is a boolean option. If the value is omitted \code{true} is -assumed. The default setting is \csopt[false]{save-definition-index}. - -This setting will save the \gls{definitionindex} that's used by -\csopt[def]{identical-sort-action} to determine the order of -definition in the special internal field \field{definitionindex}. -This field is assigned when the entry is first created -and can be referenced with \gls{bibglsdefinitionindex}. -You can reference this field with certain resource options, such as -\csopt{format-integer-fields}, but you must place the -\csopt{save-definition-index} resource option first. - -Note that (unless you need to maintain \hierarchy) if you want to -order all entries by definition, it's better to use -\csopt[none]{sort}, which doesn't perform any sorting, so the order -will be by definition. - -\optsection[\subsubsection]{save-use-index} - -This is a boolean option. If the value is omitted \code{true} is -assumed. The default setting is \csopt[false]{save-use-index}. - -This setting will save the \gls{orderofuseindex} that's used by -\csopt[use]{identical-sort-action} in the special internal field -\field{useindex}. This field is assigned when the entry picks up -its first record and can be referenced with \gls{bibglsuseindex}. -You can't reference this field in resource options such as -\csopt{format-integer-fields}. - -Entries that don't have records won't have this field set. The order -of use corresponds to the first time the entry is recorded in the document. - -Note that (unless you need to maintain \hierarchy) if you want to -order all entries by use, it's better to use \csopt[use]{sort}, -which doesn't perform any sorting. - \optsection[\subsubsection]{dependency-fields} The \meta{list} should be a comma-separated list of fields that @@ -11492,6 +11421,237 @@ O \cs{gls}\marg{gato} sentou-se no \cs{gls}\marg{tapete}. \cmd{end}\marg{document} \end{codeenv} +\subsection{Special Fields} +\label{sec:specialfieldopts} + +\optsection[\subsubsection]{save-original-id} + +The \meta{value} may be the keywords \code{false} or \code{true} or +the name of a field in which to store the entry's original +label (as given in the \ext{bib} file). The default setting is +\csopt[false]{save-original-id}. If \meta{value} is omitted or is the +keyword \code{true}, then \field{originalid} is assumed. + +If \meta{value} has an associated key in \gls!{newglossaryentry} +(for example, one provided with \cs{glsaddstoragekey}) it will be +set after the field aliases, otherwise (for example, +\field{originalid}) it will simply be added to the \ext{glstex} file +using \ics{GlsXtrSetField} after the entry definition (which means +the field can't be referenced in other resource options). This +setting is governed by \csopt{save-original-id-action}. + +\optsection[\subsubsection]{save-original-id-action} + +This option determines whether or not \csopt{save-original-id} +should save the original entry label. No action is performed when +\csopt[false]{save-original-id} otherwise the action is determined +by \meta{value} which may be one of the following keywords: +\begin{itemize} +\item \code{always}: always save the original label (default); +\item \code{no override}: don't override a field that's already been +set; +\item \code{changed override} or \code{changed} or \code{diff}: +only save the original label if it's different from the final label; +\item \code{changed no override}: +only save the original label if it's different from the final label +and the specified field hasn't been set. +\end{itemize} +The \qt{no override} options make no difference if the given field +has no associated key in \gls!{newglossaryentry} (such as +\field{originalid}). For known fields, bear in mind that the field +will be set after field aliasing but before other options, such as +\csopt{ignore-fields}. + +\optsection[\subsubsection]{save-definition-index} + +This is a boolean option. If the value is omitted \code{true} is +assumed. The default setting is \csopt[false]{save-definition-index}. + +This setting will save the \gls{definitionindex} that's used by +\csopt[def]{identical-sort-action} to determine the order of +definition in the special internal field \field{definitionindex}. +This field is assigned when the entry is first created +and can be referenced with \gls{bibglsdefinitionindex}. +You can reference this field with certain resource options, such as +\csopt{format-integer-fields}, but you must place the +\csopt{save-definition-index} resource option first. + +Note that (unless you need to maintain \hierarchy) if you want to +order all entries by definition, it's better to use +\csopt[none]{sort}, which doesn't perform any sorting, so the order +will be by definition. + +\optsection[\subsubsection]{save-use-index} + +This is a boolean option. If the value is omitted \code{true} is +assumed. The default setting is \csopt[false]{save-use-index}. + +This setting will save the \gls{orderofuseindex} that's used by +\csopt[use]{identical-sort-action} in the special internal field +\field{useindex}. This field is assigned when the entry picks up +its first record and can be referenced with \gls{bibglsuseindex}. +You can't reference this field in resource options such as +\csopt{format-integer-fields}. + +Entries that don't have records won't have this field set. The order +of use corresponds to the first time the entry is recorded in the document. + +Note that (unless you need to maintain \hierarchy) if you want to +order all entries by use, it's better to use \csopt[use]{sort}, +which doesn't perform any sorting. + +\optsection[\subsubsection]{save-from-see} + +This option allows you to save a comma-separated list of entry +labels in a designated internal field of the target entry identified +by their \field{see} field. If the \meta{value} is omitted, +\csopt[from-see]{save-from-see} is assumed. The value may be the +keyword \code{false}, which switches off this setting, otherwise the +value should be the desired name of the internal field. +The default setting is \csopt[false]{save-from-see}. + +For example, if the \ext{bib} file contains: +\begin{codeenv} +\atentry{index}\marg{gourd} +\atentry{index}\marg{cucumber,\field{see}=\marg{gourd}} +\atentry{index}\marg{pumpkin,\field{see}=\marg{gourd}} +\end{codeenv} +then the resource option \csopt[from-see]{save-from-see} will create +an internal field called \fieldfmt{from-see} for the \code{gourd} entry +that contains the comma-separated list \code{cucumber,pumpkin}. + +Note that the given internal field isn't actually assigned within \bibgls, so it +can't be accessed via any resource options. Each item in this list is added using +\ics{glsxtrapptocsvfield} after the source entry (that is, the entry +containing the \field{see} field) is defined in the \ext{glstex} +file. This means that the list will be in the same order as the +entries. You can then pass the field value to \ics{glsseelist}. +For example: +\begin{codeenv} +\cs{glsdefpostdesc}\marg{\comment{} + \cs{glsxtrifhasfield}\marg{from-see}\marg{\cs{glscurrententrylabel}} + \marg{, related: \cs{glsseelist}\marg{\cs{glscurrentfieldvalue}}}\marg{}\% +} +\end{codeenv} + +This option has no effect with the \qt{no dependency} selection +criteria (such as \csopt[recorded no deps]{selection}). + +\optsection[\subsubsection]{save-from-seealso} + +As \csopt{save-from-see} but for the \field{seealso} field. If the +value is omitted, \csopt[from-seealso]{save-from-seealso} is assumed. + +\optsection[\subsubsection]{save-from-alias} + +As \csopt{save-from-see} but for the \field{alias} field. If the +value is omitted, \csopt[from-alias]{save-from-alias} is assumed. + +\optsection[\subsubsection]{save-crossref-tail} + +If you have a cross-reference trail where one entry references +another entry using \field{see}, \field{seealso} or \field{alias} +and the referenced entry also references another, and so on, then +you can save the tail end of the trail with this option. Note that +the trail only follows single-label lists (in \field{see} or +\field{seealso}). The trail is terminated if an entry doesn't have +one of those three fields set or if it cross-references multiple +entries or if the trail loops back on itself. + +If you have a loop, the tail for some entries may end prematurely +since the algorithm to obtain the tail saves the tail for each +sub-trail to avoid recalculating it. It's best to avoid +this setting if you have cross-reference loops. (Aside from two-way +cross-references, it's best to avoid loops in general.) + +The tail label is stored in the field identified by +the \meta{value} of this option. If the value is omitted, +\csopt[crossref-tail]{save-crossref-tail} is assumed. +The field won't be set if there's no tail. The tails are calculated +when writing the entry definitions to the \ext{glstex} file so the +value can't be referenced or otherwise accessed by \bibgls. + +Example: +\begin{codeenv} +\atentry{index}\marg{sample1,\field{see}=\marg{sample2}} +\atentry{index}\marg{sample2,\field{see}=\marg{sample3}} +\atentry{index}\marg{sample3,\field{see}=\marg{sample4}} +\atentry{index}\marg{sample4} +\end{codeenv} +The tail for \code{sample1} is \code{sample4}. As a by-product of +the recursion used in calculating the tail for \code{sample1}, the +tail for each element in the trail (\code{sample2} and +\code{sample3}) is also calculated. The tail is the same for each +entry in the trail. The final entry \code{sample4} doesn't have a +tail. + +If \code{sample4} is modified to cross-reference \code{sample1}: +\begin{codeenv} +\atentry{index}\marg{sample4,\field{see}=\marg{sample1}} +\end{codeenv} +then when the tail for \code{sample4} is calculated the tail for its +cross-reference (\code{sample1}) is consulted. This has already been +set to \code{sample4}. An entry can't have itself as a tail so the +tail for \code{sample4} is set to \code{sample3}. All the other +entries still have \code{sample4} as their tail because their tail +was determined while traversing the trail for \code{sample1}, which +had to stop when it wrapped round to its starting point. + +\optsection[\subsubsection]{save-original-entrytype} + +The \meta{value} may be the keywords \code{false} or \code{true} or +the name of a field in which to store the original \gls{entrytype} (as +given in the \ext{bib} file but without the leading \idx{atchar} and +converted to \idx!{lowercase}). The setting is +\csopt[false]{save-original-entrytype}. If \meta{value} is omitted or the +keyword \code{true}, then \csopt[originalentrytype]{save-original-entrytype} +If \meta{value} has an associated key in \gls!{newglossaryentry} +(for example, one provided with \cs{glsaddstoragekey}) it will be +set after the field aliases, otherwise (for example, +\field{originalentrytype}) it will simply be added to the \ext{glstex} file +using \ics{GlsXtrSetField} after the entry definition (which means +the field can't be referenced in other resource options). This +setting is governed by \csopt{save-original-entrytype-action}. + +\optsection[\subsubsection]{save-original-entrytype-action} + +This option determines whether or not \csopt{save-original-entrytype} +should save the original \gls{entrytype}. No action is performed when +\csopt[false]{save-original-entrytype} otherwise the action is determined +by \meta{value} which may be one of the following keywords: +\begin{itemize} +\item \code{always}: always save the original \gls{entrytype} (default); +\item \code{no override}: don't override a field that's already been +set; +\item \code{changed override} or \code{changed} or \code{diff}: +only save the original \gls{entrytype} if it's different from the final +\gls{entrytype}; +\item \code{changed no override}: +only save the original \gls{entrytype} if it's different from the final +\gls{entrytype} and the specified field hasn't been set. +\end{itemize} +The \qt{no override} options make no difference if the given field +is unknown (such as \field{originalentrytype}). For known fields, bear in +mind that the field will be set after field aliasing but before +other options, such as \csopt{ignore-fields}. + +The \qt{changed} options ignore case. For example, if the \ext{bib} +file defined an entry with \atentryfmt{INDEX} then both the original +and final \gls{entrytype} will be \code{index}. + +\optsection[\subsubsection]{gather-parsed-dependencies} + +Dependencies that are found by parsing field values may be gathered into a +comma-separated list saved in a field for later use. +The \meta{value} is the name of the desired field. If the \meta{value} is omitted +\csopt[seealso]{gather-parsed-dependencies} is assumed. +If the designated field is already set, the list will be appended to the existing value. + +Note that other dependencies, such as those obtained by examining the +cross-reference fields (\field{see}, \field{seealso} or \field{alias}) +or ancestors or dual entries, are not automatically added. +The \meta{value} may be the keyword \code{false} to switch off this option (which is the default). + \subsection{Assignments} \label{sec:fieldassignments} @@ -11787,6 +11947,11 @@ The default is \field{parent}. \optsection[\subsubsection]{ignore-fields} +\begin{important} +Take care not to confuse \csopt{ignore-fields} with \csopt{omit-fields}. +The argument of \csopt{ignore-fields} is a simple list of field names. +\end{important} + The \csopt{ignore-fields} key indicates that you want \bibgls\ to skip the fields listed in the supplied comma-separated \meta{list} of field labels. Remember that unrecognised fields will always be skipped. @@ -11822,6 +11987,134 @@ label in the \field{parent} field. If you want to maintain the dependency and \gls{ancestor} relationship but omit the \field{parent} field when writing the entries to the \ext{glstex} file, you need to use \csopt{flatten} instead. +Alternatively, you can use \csopt{omit-fields}, however the hierarchical structure +will continue to be maintained. + +The \csopt{ignore-fields} instruction removes the unwanted fields +early in the Stage~3 process (see \sectionref{sec:resourcesets}). +This means that those field values won't be available if they are referenced +nor can they be used to establish dependencies. +If fields should be omitted from the \ext{glstex} file but the field values should +still be available to \bibgls, then use \csopt{omit-fields} instead. + +\optsection[\subsubsection]{omit-fields} + +\begin{important} +Take care not to confuse \csopt{omit-fields} with \csopt{ignore-fields}. +The argument of \csopt{omit-fields} is a complex list of string \glspl{concatenation}. +\end{important} + +The \csopt{omit-fields} action takes place in the final stage, at the point where +each entry is written to the \ext{glstex} file. Unlike \csopt{ignore-fields}, +the fields aren't removed from \bibgls's own internal data structure. This means that the fields +can be referenced in other options and will be parsed as usual for dependencies. + +If set, the \meta{list} argument is a list of string \glspl{concatenation} with +optional conditionals. Take care that constant strings are correctly delimited +to ensure that they are not mistaken for references to field values. +Note that this is different from \csopt{ignore-fields}, which simply requires +a list of field names. +For example, to omit the \field{description} field for all entries: +\begin{codeenv} +\csopt[\qtdelim{description}]{omit-fields} +\end{codeenv} + +Each identified field is simply omitted when writing the field list in the \ext{glstex} file. +However, this may trigger a fallback if the field is required. This option only +applies to fields that have a corresponding key that may be used in commands such +as \gls{newglossaryentry}. The option does not apply to special internal fields. +Any fields identified in the given list that are not recognised will be ignored. + +When each entry definition is being written to the \ext{glstex} file, the supplied +\meta{list} is evaluated for the current entry. Each non-empty non-null result +will be added to a temporary set of exclusion field names. Then each \keyval\ for the current +entry will be written to the \ext{glstex} for each known \meta{key} that has the +corresponding field set where the \meta{key} is not included in the exclusion set. + +Suppose the file \filefmt{abbrv.bib} contains: +\begin{codeenv} +\atentry{abbreviation}\marg{ssi, + \field{short}=\marg{SSI}, + \field{long}=\marg{server-side includes}, + \field{description}=\marg{a simple interpreted server-side +scripting language} +} +\atentry{abbreviation}\marg{html, + \field{short}=\marg{HTML}, + \field{long}=\marg{hypertext markup language}, + \field{description}=\marg{a markup language for creating web +pages} +} +\atentry{abbreviation}\marg{shtml, + \field{short}=\marg{SHTML}, + \field{long}=\marg{server-side includes enabled hypertext markup language}, + \field{description}=\marg{a combination of \cs{gls}\marg{html} and +\cs{gls}\marg{ssi}} +} +\end{codeenv} +With \csopt[description]{ignore-fields}, the \field{description} field will +be removed when the entry is first processed. This means that the +dependencies in the SHTML description field won't be detected. +Whereas with \csopt[\qtdelim{description}]{omit-fields}, the \field{description} +field won't be removed, so it will still be parsed and the dependent entries will +be detected, however the \field{description} field won't be written in the +\ext{glstex} file. In this case, you may want to also use +\csopt{gather-parsed-dependencies} to save a list of the dependent entries. + +Remember that literal strings must be quoted with string \glspl{concatenation}. +For example, suppose an entry has been defined as: +\begin{codeenv} +\atentry{index}\marg{nom-fr, + \field{name}=\marg{nom}, + \field{description}=\marg{name} +} +\end{codeenv} +In the case of \csopt[\qtdelim{description}]{omit-fields} then this will become: +\begin{codeenv} +\gls{newglossaryentry}\marg{name-fr}\marg{ + \field{name}=\marg{nom} +} +\end{codeenv} +Whereas \csopt[description]{omit-fields} returns \emph{the value of} the +\field{description} field. For the above example entry, the value of +the \field{description} field is \qt{name}, so \field{name} is added to the exclusion set +and so won't be written whilst \bibgls\ iterates over the \qt{name-fr} list of fields. + +This means that the \field{name} field will be flagged +as not written to the \ext{glstex} file. In the case of \atentry{index}, this +means that the fallback for the \field{name} field will be used, which is +the entry label. The result will therefore end up as: +\begin{codeenv} +\gls{newglossaryentry}\marg{name-fr}\marg{ + \field{description}=\marg{name}, + \field{name}=\marg{name-fr} +} +\end{codeenv} +In this case, the \field{description} field value just happens to be the name of +another recognised field. Mostly, this type of error would likely result +in a string that doesn't match any known field, which will trigger a warning. + +Conditions may also be applied. For example, to omit the \field{description} +field for any entries defined with \atentry{abbreviation}: +\begin{codeenv} +\csopt[ + \qtdelim{description} \oarg{entrytype \idx{follow} actual = \qtdelim{abbreviation}} +]{omit-fields} +\end{codeenv} + +\optsection{omit-fields-missing-field-action} + +This option indicates what to do if a source field identified in +\csopt{omit-fields} is missing. The value may be one of: +\begin{itemize} +\item \optfmt{skip}: return null; +\item \optfmt{fallback}: use the fallback for the missing field +(see \sectionref{sec:fallbacks}), if +one is available, otherwise return null (default); +\item \optfmt{empty}: treat the missing value as empty. +\end{itemize} +Returning null or empty skips the string \gls{concatenation} element from the +omision list. \optsection[\subsubsection]{field-aliases} @@ -12324,7 +12617,7 @@ Return null will result in the assignment instruction being omitted. The \csopt{counter} option assigns the default counter to use for the selected entries. (This can be overridden with the -\glsopt{counter} key when using commands like \csfmt{gls}.) +\glsopt{counter} key when using commands like \cs{gls}.) The value must be the name of a counter. Since \bibgls\ doesn't know which counters are defined within the document, there's no check to determine if the value is valid (except for ensuring that @@ -12376,145 +12669,6 @@ style. For example: If set, the value of the \field{alias} field is copied to the \field{see} field. The default setting is \csopt[false]{copy-alias-to-see}. -\optsection[\subsubsection]{save-from-see} - -This option allows you to save a comma-separated list of entry -labels in a designated internal field of the target entry identified -by their \field{see} field. If the \meta{value} is omitted, -\csopt[from-see]{save-from-see} is assumed. The value may be the -keyword \code{false}, which switches off this setting, otherwise the -value should be the desired name of the internal field. -The default setting is \csopt[false]{save-from-see}. - -For example, if the \ext{bib} file contains: -\begin{codeenv} -\atentry{index}\marg{gourd} -\atentry{index}{cucumber,\field{see}=\marg{gourd}} -\atentry{index}{pumpkin,\field{see}=\marg{gourd}} -\end{codeenv} -then the resource option \csopt[from-see]{save-from-see} will create -an internal field called \code{from-see} for the \code{gourd} entry -that contains the comma-separated list \code{cucumber,pumpkin}. - -Note that the given internal field isn't actually assigned within \bibgls, so it -can't be accessed via any resource options. Each item in this list is added using -\ics{glsxtrapptocsvfield} after the source entry (that is, the entry -containing the \field{see} field) is defined in the \ext{glstex} -file. This means that the list will be in the same order as the -entries. You can then pass the field value to \ics{glsseelist}. -For example: -\begin{codeenv} -\cs{glsdefpostdesc}\marg{\comment{} - \cs{glsxtrifhasfield}\marg{from-see}\marg{\cs{glscurrententrylabel}} - {, related: \cs{glsseelist}\marg{\cs{glscurrentfieldvalue}}}{}% -} -\end{codeenv} - -This option has no effect with the \qt{no dependency} selection -criteria (such as \csopt[recorded no deps]{selection}). - -\optsection[\subsubsection]{save-from-seealso} - -As \csopt{save-from-see} but for the \field{seealso} field. If the -value is omitted, \csopt[from-seealso]{save-from-seealso} is assumed. - -\optsection[\subsubsection]{save-from-alias} - -As \csopt{save-from-see} but for the \field{alias} field. If the -value is omitted, \csopt[from-alias]{save-from-alias} is assumed. - -\optsection[\subsubsection]{save-crossref-tail} - -If you have a cross-reference trail where one entry references -another entry using \field{see}, \field{seealso} or \field{alias} -and the referenced entry also references another, and so on, then -you can save the tail end of the trail with this option. Note that -the trail only follows single-label lists (in \field{see} or -\field{seealso}). The trail is terminated if an entry doesn't have -one of those three fields set or if it cross-references multiple -entries or if the trail loops back on itself. - -If you have a loop, the tail for some entries may end prematurely -since the algorithm to obtain the tail saves the tail for each -sub-trail to avoid recalculating it. It's best to avoid -this setting if you have cross-reference loops. (Aside from two-way -cross-references, it's best to avoid loops in general.) - -The tail label is stored in the field identified by -the \meta{value} of this option. If the value is omitted, -\csopt[crossref-tail]{save-crossref-tail} is assumed. -The field won't be set if there's no tail. The tails are calculated -when writing the entry definitions to the \ext{glstex} file so the -value can't be referenced or otherwise accessed by \bibgls. - -Example: -\begin{codeenv} -\atentry{index}\marg{sample1,\field{see}=\marg{sample2}} -\atentry{index}\marg{sample2,\field{see}=\marg{sample3}} -\atentry{index}\marg{sample3,\field{see}=\marg{sample4}} -\atentry{index}\marg{sample4} -\end{codeenv} -The tail for \code{sample1} is \code{sample4}. As a by-product of -the recursion used in calculating the tail for \code{sample1}, the -tail for each element in the trail (\code{sample2} and -\code{sample3}) is also calculated. The tail is the same for each -entry in the trail. The final entry \code{sample4} doesn't have a -tail. - -If \code{sample4} is modified to cross-reference \code{sample1}: -\begin{codeenv} -\atentry{index}\marg{sample4,\field{see}=\marg{sample1}} -\end{codeenv} -then when the tail for \code{sample4} is calculated the tail for its -cross-reference (\code{sample1}) is consulted. This has already been -set to \code{sample4}. An entry can't have itself as a tail so the -tail for \code{sample4} is set to \code{sample3}. All the other -entries still have \code{sample4} as their tail because their tail -was determined while traversing the trail for \code{sample1}, which -had to stop when it wrapped round to its starting point. - -\optsection[\subsubsection]{save-original-entrytype} - -The \meta{value} may be the keywords \code{false} or \code{true} or -the name of a field in which to store the original \gls{entrytype} (as -given in the \ext{bib} file but without the leading \idx{atchar} and -converted to \idx!{lowercase}). The setting is -\csopt[false]{save-original-entrytype}. If \meta{value} is omitted or the -keyword \code{true}, then \csopt[originalentrytype]{save-original-entrytype} -If \meta{value} has an associated key in \gls!{newglossaryentry} -(for example, one provided with \cs{glsaddstoragekey}) it will be -set after the field aliases, otherwise (for example, -\field{originalentrytype}) it will simply be added to the \ext{glstex} file -using \ics{GlsXtrSetField} after the entry definition (which means -the field can't be referenced in other resource options). This -setting is governed by \csopt{save-original-entrytype-action}. - -\optsection[\subsubsection]{save-original-entrytype-action} - -This option determines whether or not \csopt{save-original-entrytype} -should save the original \gls{entrytype}. No action is performed when -\csopt[false]{save-original-entrytype} otherwise the action is determined -by \meta{value} which may be one of the following keywords: -\begin{itemize} -\item \code{always}: always save the original \gls{entrytype} (default); -\item \code{no override}: don't override a field that's already been -set; -\item \code{changed override} or \code{changed} or \code{diff}: -only save the original \gls{entrytype} if it's different from the final -\gls{entrytype}; -\item \code{changed no override}: -only save the original \gls{entrytype} if it's different from the final -\gls{entrytype} and the specified field hasn't been set. -\end{itemize} -The \qt{no override} options make no difference if the given field -is unknown (such as \field{originalentrytype}). For known fields, bear in -mind that the field will be set after field aliasing but before -other options, such as \csopt{ignore-fields}. - -The \qt{changed} options ignore case. For example, if the \ext{bib} -file defined an entry with \atentryfmt{INDEX} then both the original -and final \gls{entrytype} will be \code{index}. - \subsection{Field Adjustments} \label{sec:fieldmods} @@ -12702,8 +12856,9 @@ recognised by \bibgls' interpreter (such as those listed in \tableref{tab:bibglsdefs}). \end{itemize} The final \code{:\meta{csname}} part may be omitted if no command -need be applied. (That is, sort by label.) The value is required for this key but -may be empty, which indicates the setting is switched off. +need be applied. (That is, sort by label.) The \meta{list} value +is required for this option but may be empty, which indicates the setting is +switched off. The sorting options are as those for the \gls{mainlist}. For example, for entries in the \glsdisp{mainlist}{primary list} the @@ -13214,7 +13369,8 @@ trail that long is excessive for an index. \optsection[\subsubsection]{bibtex-contributor-fields} This option indicates that the listed fields all use \BibTeX's name -syntax (as used in \BibTeX's \code{author} and \code{editor} fields). The value is required for this key but +syntax (as used in \BibTeX's \code{author} and \code{editor} fields). +The \meta{list} value is required for this key but may be empty, which indicates an empty set of fields (that is, the setting is switched off). @@ -13370,6 +13526,7 @@ same field is listed in both settings, its value will end up as: \begin{codeenv} \cmd{\meta{cs-name-2arg}}\marg{\cmd{\meta{cs-name-1arg}}\margm{value}}\margm{label} \end{codeenv} +An alternative is to use the more complex \csopt{assign-fields} option. \optsection[\subsubsection]{format-integer-fields} @@ -13780,6 +13937,14 @@ functions will use the \gls{resource-locale}, but whether or not whether or not the locale is correctly supported by the Java locale provider. The \langxml\ may provide assistance with case-conversion. +\begin{important} +Note the difference between \ics{NoCaseChange} (which prevents case-changing +for both \bibgls\ and in the \LaTeX\ document) and \ics{BibGlsNoCaseChange} +(which only prevents case-changing in \bibgls). The options that defer +the case-change action to \LaTeX, such as \optfmt{uc-cs}, will treat +\ics{NoCaseChange} as an exclusion but not \ics{BibGlsNoCaseChange}. +\end{important} + Each of the case-changing resource options may take one of the following values: \begin{itemize} @@ -15472,7 +15637,7 @@ usual \igls{locationlist}; \item \optfmt{remove}: save \glspl{principallocation} in the \field{primarylocations} field and remove from the usual \igls{locationlist}. You may want to consider using the -\longswitch{retain-formats} switch with this setting if you don't +\longarg{retain-formats} switch with this setting if you don't want to lose a partial \gls{location} match (for example, if the \gls{principallocation} coincides with the start of an \idx{explicit-range}). @@ -23297,6 +23462,16 @@ Converts \meta{text} to \idx{titlecase}. This just uses Converts the first letter of \meta{text} to \idx{uppercase}. This just uses \ics{makefirstuc} by default. +\cssection{BibGlsNoCaseChange} + +Behaves as \cs{NoCaseChange} within \bibgls, so it will prevent its argument +from being altered by options such as \csopt{short-case-change} or if the +interpreter encounters this command within a case-changing command such as +\cs{glsuppercase}. However, the definition provided in the \ext{glstex} file +simply expands to \meta{text} in the document without adding the command to the +case-changing exclusion list so it won't prevent any case-change within +the \LaTeX\ document. + \cssection{bibglsdefinitionindex} \formatdef{bibglsdefinitionindex} @@ -23831,7 +24006,7 @@ to: \atentry{index}\marg{\meta{label}} \end{codeenv} -If \longargfmt{space-sub} is used and \meta{label} contains one or +If \converterlongarg{space-sub} is used and \meta{label} contains one or more spaces, then \field{name} will be set if not included in \meta{\keyvallist}. For example, if \filefmt{entries.bib} contains: @@ -24367,7 +24542,7 @@ file could define \meta{field} and reference it in The \meta{field} will have any invalid content stripped and will be adjusted to match the \converterlongarg{field-case} setting. If the \meta{field} ends up as an empty string, it will behave as -\datatoolbibarg{no-dependency-field}. +\datatoolbiblongarg{no-dependency-field}. \datatoolbibarg{no-dependency-field} diff --git a/Master/texmf-dist/source/support/bib2gls/src/convertgls2bib.pod b/Master/texmf-dist/source/support/bib2gls/convertgls2bib.pod index f011e252661..f011e252661 100644 --- a/Master/texmf-dist/source/support/bib2gls/src/convertgls2bib.pod +++ b/Master/texmf-dist/source/support/bib2gls/convertgls2bib.pod diff --git a/Master/texmf-dist/source/support/bib2gls/src/datatool2bib.pod b/Master/texmf-dist/source/support/bib2gls/datatool2bib.pod index 230afc13053..230afc13053 100644 --- a/Master/texmf-dist/source/support/bib2gls/src/datatool2bib.pod +++ b/Master/texmf-dist/source/support/bib2gls/datatool2bib.pod diff --git a/Master/texmf-dist/source/support/bib2gls/src/bib2gls-src.zip b/Master/texmf-dist/source/support/bib2gls/src/bib2gls-src.zip Binary files differdeleted file mode 100644 index 16b1db53ef1..00000000000 --- a/Master/texmf-dist/source/support/bib2gls/src/bib2gls-src.zip +++ /dev/null diff --git a/Master/texmf-dist/source/support/bib2gls/src/gls2bib-src.zip b/Master/texmf-dist/source/support/bib2gls/src/gls2bib-src.zip Binary files differdeleted file mode 100644 index 55cc0ed95f8..00000000000 --- a/Master/texmf-dist/source/support/bib2gls/src/gls2bib-src.zip +++ /dev/null diff --git a/Master/texmf-dist/source/support/bib2gls/src/texparser-src.zip b/Master/texmf-dist/source/support/bib2gls/texparser-src.zip Binary files differindex 1880c516067..9651574eb85 100644 --- a/Master/texmf-dist/source/support/bib2gls/src/texparser-src.zip +++ b/Master/texmf-dist/source/support/bib2gls/texparser-src.zip diff --git a/Master/texmf-dist/source/support/bib2gls/version.tex b/Master/texmf-dist/source/support/bib2gls/version.tex new file mode 100644 index 00000000000..707da414c1c --- /dev/null +++ b/Master/texmf-dist/source/support/bib2gls/version.tex @@ -0,0 +1,4 @@ +\date{Version +4.1 +2025-01-03 +}% diff --git a/Master/texmf-dist/source/xelatex/bidi/bidi-doc-intro.ltx b/Master/texmf-dist/source/xelatex/bidi/bidi-doc-intro.ltx index 71950a49c1a..47de8ec4405 100644 --- a/Master/texmf-dist/source/xelatex/bidi/bidi-doc-intro.ltx +++ b/Master/texmf-dist/source/xelatex/bidi/bidi-doc-intro.ltx @@ -20,7 +20,7 @@ If you use \textsf{bidi} package to write any input \TeX\ document, and then run * Copyright (c) 2007--2025 Vafa Khalighi * Copyright (c) 2018--2020 bidi-tex GitHub Organization * -* v40.8 (Release William Paul Thurston), 2024/12/28 +* v41.3 (Release Maryam Mirzakhani), 2025/01/06 * * License: LaTeX Project Public License, version * 1.3c or higher (your choice) diff --git a/Master/texmf-dist/source/xelatex/bidi/bidi-doc-title.ltx b/Master/texmf-dist/source/xelatex/bidi/bidi-doc-title.ltx index bcf2d3fe5b2..8bab11982ea 100644 --- a/Master/texmf-dist/source/xelatex/bidi/bidi-doc-title.ltx +++ b/Master/texmf-dist/source/xelatex/bidi/bidi-doc-title.ltx @@ -3,7 +3,7 @@ \begin{document} \title{\textcolor{bidiblue}{\Huge The \textsf{bidi} \textit{Package}}\\ \LARGE Bidirectional typesetting in plain \TeX{} and \LaTeX, using \XeTeX{} engine\\[5pt] -\large User documentation for \textcolor{bidiblue}{version 40.8}} +\large User documentation for \textcolor{bidiblue}{version 41.3}} \author{Vafa Khalighi\thanks{Thanks to the bidi-tex GitHub organization consisted of David Carlisle and other members of the {\LaTeX} team for maintaining the package in the period 2018--2020.}} \setcounter{page}{0} \thispagestyle{empty} @@ -13,7 +13,7 @@ \textcolor{bidiblue}{\Huge The \textsf{bidi} \textit{Package}} \Large -User documentation for \textcolor{bidiblue}{version 40.8}} +User documentation for \textcolor{bidiblue}{version 41.3}} \vskip 0pt plus 3fill \textit{\large to my Master, \textbf{Ferdowsi The Great}} diff --git a/Master/texmf-dist/source/xelatex/bidi/bidi-doc.ltx b/Master/texmf-dist/source/xelatex/bidi/bidi-doc.ltx index 5529f006f2f..b7bdc3a00c8 100644 --- a/Master/texmf-dist/source/xelatex/bidi/bidi-doc.ltx +++ b/Master/texmf-dist/source/xelatex/bidi/bidi-doc.ltx @@ -1,7 +1,7 @@ \documentclass{ltxdoc} \input{bidi-doc-preamble.ltx} \hypersetup{% - pdftitle={User documentation for version 40.8 of the bidi + pdftitle={User documentation for version 41.3 of the bidi package}% } \begin{document} diff --git a/Master/texmf-dist/source/xelatex/bidi/bidi.dtx b/Master/texmf-dist/source/xelatex/bidi/bidi.dtx index 40087a54282..373a5033a87 100644 --- a/Master/texmf-dist/source/xelatex/bidi/bidi.dtx +++ b/Master/texmf-dist/source/xelatex/bidi/bidi.dtx @@ -5,7 +5,7 @@ %<*readme> ___________________ The bidi package -v40.8 +v41.3 This package provides a convenient interface for typesetting bidirectional texts in Plain TeX and LaTeX, using XeTeX engine. @@ -30,7 +30,7 @@ The announcements for the new releases of the package will also appear in the Discussions space under the Announcements category. -Current version release date: 2024/12/28 +Current version release date: 2025/01/06 ___________________________________________ Vafa Khalighi @@ -178,11 +178,11 @@ by Vafa Khalighi. \generate{\file{lettrine-xetex-bidi.def}{\from{\jobname.dtx}{table,lettrine-xetex-bidi.def}}} \generate{\file{lineno-xetex-bidi.def}{\from{\jobname.dtx}{table,lineno-xetex-bidi.def}}} \generate{\file{listings-xetex-bidi.def}{\from{\jobname.dtx}{table,listings-xetex-bidi.def}}} -\generate{\file{loadingorder-xetex-bidi.def}{\from{\jobname.dtx}{table,loadingorder-xetex-bidi.def}}} \generate{\file{longtable-xetex-bidi.def}{\from{\jobname.dtx}{table,longtable-xetex-bidi.def}}} \generate{\file{lscape-xetex-bidi.def}{\from{\jobname.dtx}{table,lscape-xetex-bidi.def}}} \generate{\file{mathtools-xetex-bidi.def}{\from{\jobname.dtx}{table,mathtools-xetex-bidi.def}}} \generate{\file{mdframed-xetex-bidi.def}{\from{\jobname.dtx}{table,mdframed-xetex-bidi.def}}} +\generate{\file{media9-xetex-bidi.def}{\from{\jobname.dtx}{table,media9-xetex-bidi.def}}} \generate{\file{bidi-media9.sty}{\from{\jobname.dtx}{table,bidi-media9.sty}}} \generate{\file{memoir-xetex-bidi.def}{\from{\jobname.dtx}{table,memoir-xetex-bidi.def}}} \generate{\file{midfloat-xetex-bidi.def}{\from{\jobname.dtx}{table,midfloat-xetex-bidi.def}}} @@ -199,7 +199,7 @@ by Vafa Khalighi. \generate{\file{pdflscape-xetex-bidi.def}{\from{\jobname.dtx}{table,pdflscape-xetex-bidi.def}}} \generate{\file{pdfpages-xetex-bidi.def}{\from{\jobname.dtx}{table,pdfpages-xetex-bidi.def}}} \generate{\file{pgfcorescopes.code-xetex-bidi.def}{\from{\jobname.dtx}{table,pgfcorescopes.code-xetex-bidi.def}}} -\generate{\file{pgfsys.code-xetex-bidi.def}{\from{\jobname.dtx}{table,pgfsys.code-xetex-bidi.def}}} +\generate{\file{pgfsys-xetex-bidi.def}{\from{\jobname.dtx}{table,pgfsys-xetex-bidi.def}}} \generate{\file{picinpar-xetex-bidi.def}{\from{\jobname.dtx}{table,picinpar-xetex-bidi.def}}} \generate{\file{plain-xetex-bidi.def}{\from{\jobname.dtx}{table,plain-xetex-bidi.def}}} \generate{\file{pstricks-xetex-bidi.def}{\from{\jobname.dtx}{table,pstricks-xetex-bidi.def}}} @@ -267,7 +267,7 @@ by Vafa Khalighi. \documentclass{ltxdoc} \input{bidi-doc-preamble.ltx} \hypersetup{% - pdftitle={Source documentation for version 40.8 of the bidi + pdftitle={Source documentation for version 41.3 of the bidi package}% } \EnableCrossrefs @@ -286,7 +286,7 @@ by Vafa Khalighi. % \GetFileInfo{\jobname.dtx} % \title{\textcolor{bidiblue}{\Huge The \textsf{bidi} \textit{Package}}\\ %\LARGE Bidirectional typesetting in plain \TeX{} and \LaTeX, using \XeTeX{} engine\\[5pt] -%\large Source documentation for \textcolor{bidiblue}{version 40.8}} +%\large Source documentation for \textcolor{bidiblue}{version 41.3}} % \author{Vafa Khalighi\thanks{Thanks to the bidi-tex GitHub organization consisted of David Carlisle and other members of the {\LaTeX} team for maintaining the package in the period 2018--2020.}} %\setcounter{page}{0} %\thispagestyle{empty} @@ -296,7 +296,7 @@ by Vafa Khalighi. %\textcolor{bidiblue}{\Huge The \textsf{bidi} \textit{Package}} % %\Large -%Source documentation for \textcolor{bidiblue}{version 40.8}} +%Source documentation for \textcolor{bidiblue}{version 41.3}} % %\vskip 0pt plus 3fill %\textit{\large to my Master, \textbf{Ferdowsi The Great}} @@ -345,7 +345,7 @@ by Vafa Khalighi. %\iffalse %<*table> %\fi -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -550,12 +550,12 @@ by Vafa Khalighi. %\fi % \section{File \texttt{algorithm2e-xetex-bidi.def}} % \begin{macrocode} -\ProvidesFile{algorithm2e-xetex-bidi.def}[2018/09/23 v0.2 bidi adaptations for algorithm2e package for XeTeX engine] +\ProvidesFile{algorithm2e-xetex-bidi.def}[2025/01/03 v0.3 bidi adaptations for algorithm2e package for XeTeX engine] \expandafter\ifx\csname algocf@within\endcsname\relax% if \algocf@within doesn't exist \else% else \renewcommand\thealgocf{\csname the\algocf@within\endcsname\@SepMark\@arabic\c@algocf}% \fi -\@ifpackageloaded{color}{}{% +\ApplyPatchIfPackageLoadedF{color}{% \bidi@patchcmd{\@algocf@start}{\bgroup}{% \bgroup \if@RTL @@ -581,6 +581,16 @@ by Vafa Khalighi. \fi }{}{} } + +\@ifpackagewith{algorithm2e}{algonl}{% +\renewcommand{\theAlgoLine}{\expandafter\csname the\algocf@float\endcsname\@SepMark\arabic{AlgoLine}}% +}{} + +\@ifpackagewith{algorithm2e}{algopart}{\renewcommand{\algocf@within}{part}}{} + +\@ifpackagewith{algorithm2e}{algochapter}{\renewcommand{\algocf@within}{chapter}}{} + +\@ifpackagewith{algorithm2e}{algosection}{\renewcommand{\algocf@within}{section}}{} % \end{macrocode} % %\iffalse @@ -865,7 +875,8 @@ by Vafa Khalighi. %\fi % \section{File \texttt{article-xetex-bidi.def}} % \begin{macrocode} -\ProvidesFile{article-xetex-bidi.def}[2024/12/07 v0.7 bidi adaptations for standard article class for XeTeX engine] +\ProvidesFile{article-xetex-bidi.def}[2025/01/05 v0.9 bidi adaptations for standard article class for XeTeX engine] +\IfClassLoadedT{svmult}{\endinput} \if@titlepage \renewcommand\maketitle{\begin{titlepage}% \let\footnotesize\small @@ -1024,9 +1035,15 @@ by Vafa Khalighi. \nobreak \vskip 3ex \@afterheading} -\bidi@patchcmd\@spart\raggedright{% - \if@RTL\raggedleft\else\raggedright\fi -}{}{\bidi@warningnoline{Oops! patching `\string\@spart' failed}} +\ApplyPatchIfPackageLoaded{nameref}{% + \bidi@patchcmd\NR@spart\raggedright{% + \if@RTL\raggedleft\else\raggedright\fi + }{}{\bidi@warningnoline{Oops! patching `\string\NR@spart' failed}}% +}{% + \bidi@patchcmd\@spart\raggedright{% + \if@RTL\raggedleft\else\raggedright\fi + }{}{\bidi@warningnoline{Oops! patching `\string\@spart' failed}}% +} \renewenvironment{thebibliography}[1] {\section*{\refname}% \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}% @@ -1852,7 +1869,7 @@ by Vafa Khalighi. %\fi % \section{File \texttt{arydshln-xetex-bidi.def}} % \begin{macrocode} -\ProvidesFile{arydshln-xetex-bidi.def}[2010/08/01 v0.2 bidi adaptations for arydshln package for XeTeX engine] +\ProvidesFile{arydshln-xetex-bidi.def}[2025/01/03 v0.3 bidi adaptations for arydshln package for XeTeX engine] \def\endarray{\adl@endarray \egroup \adl@arrayrestore \if@RTLtab\egroup\endR\egroup\fi\egroup} \def\endtabular{\endarray $\if@RTLtab\endR\fi\egroup} \expandafter\let\csname endtabular*\endcsname\endtabular @@ -1940,7 +1957,7 @@ by Vafa Khalighi. \def\adl@class@start{6} \def\adl@class@iiiorvii{3} \fi -\@ifpackageloaded{colortbl}{% +\ApplyPatchCodeToPackage{colortbl}{% \def\adl@inactivate{\adl@org@inactivate \let\CT@setup\adl@CT@setup} \def\adl@activate{\adl@org@activate \let\CT@setup\adl@act@CT@setup \let\@endpbox\adl@org@endpbox} @@ -1986,7 +2003,7 @@ by Vafa Khalighi. \prepnext@tok} \let\adl@act@classz\@classz \let\adl@org@classz\@classz -}{} +} % \end{macrocode} % \iffalse %</arydshln-xetex-bidi.def> @@ -2019,7 +2036,7 @@ by Vafa Khalighi. %\fi % \section{File \texttt{beamerbaseauxtemplates-xetex-bidi.def}} % \begin{macrocode} -\ProvidesFile{beamerbaseauxtemplates-xetex-bidi.def}[2024/12/20 v0.4 bidi adaptations for beamerbaseauxtemplates package for XeTeX engine] +\ProvidesFile{beamerbaseauxtemplates-xetex-bidi.def}[2025/01/03 v0.5 bidi adaptations for beamerbaseauxtemplates package for XeTeX engine] \bidi@csundef{beamer@@tmpop@subsection in toc@sections numbered} \bidi@csundef{beamer@@tmpop@subsubsection in toc@sections numbered} @@ -2329,7 +2346,7 @@ by Vafa Khalighi. \end{minipage} } -\@ifpackageloaded{caption}{% +\ApplyPatchCodeToPackage{caption}{% \DeclareCaptionFont{beamer@font}{% \usebeamerfont*{caption}% % \usebeamercolor[fg]{caption}% @@ -2337,7 +2354,7 @@ by Vafa Khalighi. \SetCaptionDefault{font}{beamer@font} \DeclareCaptionJustification{bidi@beamer@ragged}{\bidi@beamer@ragged} \SetCaptionDefault{justification}{bidi@beamer@ragged} -}{} +} % \end{macrocode} % \iffalse @@ -2612,7 +2629,7 @@ by Vafa Khalighi. \usebeamertemplate***{sidebar left}% \vfil% }}% - \@ifpackageloaded{beamerinnerthemeinmargin}{}{% + \ApplyPatchIfPackageLoadedF{beamerinnerthemeinmargin}{% \hskip-\textwidth }% \fi @@ -4719,9 +4736,9 @@ by Vafa Khalighi. % \section{File \texttt{bidi.sty}} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\def\bididate{2024/12/28} -\def\bidi@version{40.8} -\def\bidi@releasename{William Paul Thurston} +\def\bididate{2025/01/06} +\def\bidi@version{41.3} +\def\bidi@releasename{Maryam Mirzakhani} \newcommand*{\bidireleasename}{\bidi@releasename} \ProvidesPackage{bidi}[\bididate\space v\bidi@version\space (Release \bidi@releasename)\space Bidirectional typesetting in plain TeX and LaTeX] @@ -4938,7 +4955,7 @@ Bidirectional typesetting in plain TeX and LaTeX] } \newcommand*{\@bidi@pdfcustomproperties}{% This is the bidi package, Version \bidi@version\space (Release \bidi@releasename), - Released December 28, 2024. + Released January 6, 2025. } \newcommand*{\bidi@beamer@ragged}{} \@RTLmainfalse @@ -5031,7 +5048,6 @@ Bidirectional typesetting in plain TeX and LaTeX] \ExplSyntaxOff \@onlypreamble\pdfencryptsetup \input{latex-xetex-bidi.def} -\input{loadingorder-xetex-bidi.def} \pdfencryptsetup{% userpassword,% @@ -5122,10 +5138,10 @@ Bidirectional typesetting in plain TeX and LaTeX] %\fi % \section{File \texttt{bidi.tex}} % \begin{macrocode} -\def\bididate{2024/12/28} +\def\bididate{2025/01/06} \catcode`@=11 -\def\bidi@version{40.8} -\def\bidi@releasename{William Paul Thurston} +\def\bidi@version{41.3} +\def\bidi@releasename{Maryam Mirzakhani} \def\bidireleasename{\bidi@releasename} \let \protect \relax \newlinechar`\^^J @@ -5239,7 +5255,7 @@ Bidirectional typesetting in plain TeX and LaTeX] } \def\@bidi@pdfcustomproperties{% This is the bidi package, Version \bidi@version\space (Release \bidi@releasename), - Released December 28, 2024. + Released January 6, 2025. } \def\bidi@pdfm@mark{% \special{pdf:% @@ -6046,7 +6062,7 @@ Bidirectional typesetting in plain TeX and LaTeX] % \section{File \texttt{biditools.sty}} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{biditools}[2024/12/07 v2.4 Programming tools for bidi package] +\ProvidesPackage{biditools}[2025/01/03 v2.6 Programming tools for bidi package] \providecommand{\@bidi@saveprimitive}[2]{\begingroup\escapechar`\\\relax \edef\@tempa{\string#1}\edef\@tempb{\meaning#1}% \ifx\@tempa\@tempb \global\let#2#1% @@ -6132,12 +6148,6 @@ Old form `\string#1' should be \string\begin{\expandafter\@gobble\string#1}% ill-advised in the old versions of bidi package.% }% } -\def\@tagsextension{clo} -\def\@definitionfileextension{def} -\def\@texfileextension{tex} -\def\@iftagsloaded{\@ifl@aded\@tagsextension} -\def\@ifdefinitionfileloaded{\@ifl@aded\@definitionfileextension} -\def\@iftexfileloaded{\@ifl@aded\@texfileextension} \def\eqnewif#1#2{% \count@\escapechar \escapechar\m@ne \let#1\iffalse @@ -6782,14 +6792,6 @@ ill-advised in the old versions of bidi package.% \catcode\number`\@=\the\catcode`\@\relax}% \bidi@resrvda} -\newcommand\bidi@isloaded[2][]{ - \expandafter\ifx\csname if@bidi@#2loaded@\endcsname\relax - \expandafter\newif\csname if@bidi@#2loaded@\endcsname - \fi - \@ifpackageloaded{#2} - {\csname @bidi@#2loaded@true\endcsname #1} - {\csname @bidi@#2loaded@false\endcsname}} - \protected\def\bidi@ifscanable#1{% \begingroup \edef\bidi@resrvda{% @@ -7546,439 +7548,271 @@ ill-advised in the old versions of bidi package.% % infinite loop %\looprepeat \doloopbody {} - -\renewcommand{\InputIfFileExists}[2]{% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname #1-@bidi@alias\endcsname\relax - \expandafter\@secondoftwo - \else - \bidi@replacefile@msg{\csname #1-@bidi@alias\endcsname}{#1}% - \expandafter\@firstoftwo - \fi - {% - \expandafter\InputIfFileExists\expandafter{\csname - #1-@bidi@alias\endcsname}{#2}% - }% - {\IfFileExists{#1}{% - \bidi@load@hook{before}{#1}% - #2\@addtofilelist{#1}% - \@@input \@filef@und - \bidi@load@hook{after}{#1}% - }}% -} - -\newcommand*{\bidi@@loadwithoptions}{} -\newcommand*{\bidi@loadwithoptions}{} -\let\bidi@loadwithoptions\@loadwithoptions - -\renewcommand*{\@loadwithoptions}[3]{% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname #3.#1-@bidi@aliasname\endcsname\relax - \def\bidi@@loadwithoptions{\bidi@loadwithoptions{#1}{#2}{#3}}% - \else - \bidi@replacefile@msg{\csname #3.#1-@bidi@aliasname\endcsname.#1}{#3.#1}% - \def\bidi@@loadwithoptions{% - \@loadwithoptions{#1}{#2}{\csname #3.#1-@bidi@aliasname\endcsname}% - }% - \fi - \bidi@@loadwithoptions -} - -\newcommand*{\bidi@onefilewithoptions}{} -\let\bidi@onefilewithoptions\@onefilewithoptions -\def\@onefilewithoptions#1[#2][#3]#4{% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname #1.#4-@bidi@aliasname\endcsname\relax - \def\bidi@@onefilewithoptions{\bidi@onefilewithoptions{#1}}% - \else - \bidi@replacefile@msg{\csname #1.#4-@bidi@aliasname\endcsname.#4}{#1.#4}% - \edef\bidi@@onefilewithoptions{% - \noexpand\@onefilewithoptions{\csname #1.#4-@bidi@aliasname\endcsname}}% - \fi - \bidi@@onefilewithoptions[{#2}][{#3}]{#4}% - \bidi@load@hook{lateafter}{#1.#4}% -} - -\newcommand*{\bidi@ReplaceInput}[2]{% - \expandafter\edef\csname #1-@bidi@alias\endcsname{#2}% -} -\newcommand*{\bidi@UnReplaceInput}[1]{% - \ifcsname #1-@bidi@alias\endcsname - \expandafter\let\csname #1-@bidi@alias\endcsname\relax - \fi -} - -\newcommand*{\@bidi@replacefilewithext}[3]{% - \expandafter\edef\csname #1.#3-@bidi@aliasname\endcsname{#2}% - } -\newcommand*{\bidi@ReplacePackage}[2]{% - \@bidi@replacefilewithext{#1}{#2}\@pkgextension -} -\newcommand*{\bidi@ReplaceClass}[2]{% - \@bidi@replacefilewithext{#1}{#2}\@clsextension -} -\newcommand*{\@bidi@unreplacefilewithext}[2]{% - \ifcsname #1.#2-@bidi@aliasname\endcsname - \expandafter\let\csname #1.#2-@bidi@aliasname\endcsname\relax - \fi -} -\newcommand*{\bidi@UnReplacePackage}[1]{% - \@bidi@unreplacefilewithext{#1}\@pkgextension -} -\newcommand*{\bidi@UnReplaceClass}[1]{% - \@bidi@unreplacefilewithext{#1}\@clsextension -} -\newcommand*{\bidi@replacefile@msg}[2]{% - \PackageInfo{biditools}{inputing `#1' instead of `#2'}% -} +\ExplSyntaxOn +\NewDocumentCommand \bidi@AfterClass { s m o +m } + { + \IfBooleanTF { #1 } + { + \@ifclassloaded{ #2 } + { #4 } + { + \hook_gput_code:nnn + { file / #2.\@clsextension / after } + { #3 } + { #4 } + } + } + { + \hook_gput_code:nnn { file / #2.\@clsextension / after } { #3 } { #4 } + } + } + +\seq_new:N \g__biditools_input_file_seq -\newcommand*{\bidi@load@hook}[2]{% - \@ifundefined{#2-@#1}{}{% - \@nameuse{#2-@#1}% - \expandafter\let\csname #2-@#1\endcsname=\relax}} -\newcommand*{\bidi@set@load@hook}[2]{% - \@ifundefined{#2-@#1}{\@namedef{#2-@#1}{}}{}% - \expandafter\g@addto@macro\csname #2-@#1\endcsname} -\newcommand*{\bidi@BeforeFile}{\bidi@set@load@hook{before}} -\newcommand*{\bidi@AfterFile}{\bidi@set@load@hook{after}} -\newcommand*{\bidi@BeforeClass}[1]{% - \bidi@set@load@hook{before}{#1.\@clsextension}} -\newcommand*{\bidi@AfterClass}{% - \@ifstar {\@s@bidi@AfterClass}{% - \@ifnextchar +\@@bidi@AfterClass{% - \@ifnextchar !\@@@bidi@AfterClass\@bidi@AfterClass - }% - }% -} +\prg_new_protected_conditional:Npnn \__bidi_if_loading:n #1 { T, F, TF } + { + \str_set:Nx \l_tmpa_str { #1 } + \seq_if_in:NxTF \g__biditools_input_file_seq { \str_use:N \l_tmpa_str } + { \prg_return_true: } + { \prg_return_false: } + } -\newcommand*{\@@@bidi@AfterClass}[2]{% - \begingroup\ifx\csname #2.\@clsextension-h@@k\endcsname\relax - \aftergroup\@s@bidi@AfterClass - \else - \aftergroup\bidi@AfterAtEndOfClass - \fi - \endgroup{#2}% -} +\prg_new_protected_conditional:Npnn \bidi_if_class_loaded:n #1 { T, F, TF } + { + \@ifclassloaded { #1 } + { + \__bidi_if_loading:nTF { #1.\@clsextension } + { \prg_return_false: } + { \prg_return_true: } + } + { + \prg_return_false: + } + } + +\prg_new_protected_conditional:Npnn \bidi_if_package_loaded:n #1 { T, F, TF } + { + \@ifpackageloaded { #1 } + { + \__bidi_if_loading:nTF { #1.\@pkgextension } + { \prg_return_false: } + { \prg_return_true: } + } + { + \prg_return_false: + } + } -\newcommand*{\bidi@AfterAtEndOfClass}[1]{% - \bidi@set@load@hook{lateafter}{#1.\@clsextension}} -\newcommand*{\@@bidi@AfterClass}[2]{% - \begingroup - \expandafter\ifx\csname #2.\@clsextension-h@@k\endcsname\relax - \aftergroup\@s@bidi@AfterClass - \else - \aftergroup\@bidi@AfterClass - \fi - \endgroup{#2}% -} +\NewDocumentCommand \bidi@AfterAtEndOfClass { s m o +m } + { + \IfBooleanTF { #1 } + { + \bidi_if_class_loaded:nTF { #2 } + { #4 } + { \hook_gput_code:nnn { class / #2 / after } { #3 } { #4 } } + } + { + \bidi_if_class_loaded:nF + { #2 } + { \hook_gput_code:nnn { class / #2 / after } { #3 } { #4 } } + } + } + +\NewDocumentCommand \bidi@AfterPackage { s m o +m } + { + \IfBooleanTF { #1 } + { + \@ifpackageloaded{ #2 } + { #4 } + { + \hook_gput_code:nnn + { file / #2.\@pkgextension / after } + { #3 } + { #4 } + } + } + { + \hook_gput_code:nnn { file / #2.\@pkgextension / after } { #3 } { #4 } + } + } + +\NewDocumentCommand \bidi@AfterAtEndOfPackage { s m o +m } + { + \IfBooleanTF { #1 } + { + \bidi_if_package_loaded:nTF { #2 } + { #4 } + { \hook_gput_code:nnn { package / #2 / after } { #3 } { #4 } } + } + { + \bidi_if_package_loaded:nF + { #2 } + { \hook_gput_code:nnn { package / #2 / after } { #3 } { #4 } } + } + } + +\clist_new:N \l__biditools_package_clist +\msg_new:nnn { biditools } { cannot-prevent-for-already-loaded-package } + { + Can~not~prevent~package~`#1'~from~being~loaded,~ + since~it~has~been~loaded~already~before~line~\msg_line_number: + } +\clist_new:N \g__biditools_prevent_clist -\newcommand*{\@bidi@AfterClass}[1]{% - \bidi@set@load@hook{after}{#1.\@clsextension}} -\newcommand*{\@s@bidi@AfterClass}[1]{% - \begingroup - \@ifclassloaded{#1}{% - \aftergroup\@secondoftwo - }{% - \aftergroup\@bidi@AfterClass - }% - \endgroup - {#1}% -} +\NewDocumentCommand \bidi@PreventPackageFromLoading { s +o m } + { + \clist_set:Nx \l__biditools_package_clist { #3 } + \clist_map_inline:Nn \l__biditools_package_clist + { + \@ifpackageloaded { ##1 } + { + \IfBooleanTF { #1 } { \msg_info:nnn } { \msg_warning:nnn } + { biditools } { cannot-prevent-for-already-loaded-package } { ##1 } + } + { + \clist_if_in:NnF \g__biditools_prevent_clist { ##1 } + { \clist_gput_right:Nn \g__biditools_prevent_clist { ##1 } } + \tl_if_exist:cF { g__biditools_exclude_package_##1_tl } + { + \tl_new:c { g__biditools_exclude_package_##1_tl } + } + \IfValueT { #2 } + { + \tl_gput_right:cn { g__biditools_exclude_package_##1_tl } { #2 } + } + \disable@package@load { ##1 } + { \tl_use:c { g__biditools_exclude_package_##1_tl } } + } + } + \clist_clear:N \l__biditools_package_clist + } + +\NewDocumentCommand \bidi@ResetPreventPackageFromLoading {} + { + \clist_map_function:NN \g__biditools_prevent_clist \reenable@package@load + \clist_gclear:N \g__biditools_prevent_clist + } + +\NewDocumentCommand \bidi@StorePreventPackageFromLoading { m } + { \edef #1 { \clist_use:Nn \g__biditools_prevent_clist { , } } } +\NewDocumentCommand \bidi@UnPreventPackageFromLoading { s m } + { + \clist_set:Nx \l__biditools_package_clist { #2 } + \clist_map_inline:Nn \l__biditools_package_clist + { + \clist_if_in:NnT \g__biditools_prevent_clist { ##1 } + { + \clist_gremove_all:Nn \g__biditools_prevent_clist { ##1 } + \reenable@package@load { ##1 } + \IfBooleanT { #1 } + { \cs_undefine:c { g__biditools_exclude_package_##1_tl } } + } + } + } -\newcommand*{\bidi@BeforePackage}[1]{% - \bidi@set@load@hook{before}{#1.\@pkgextension}} -\newcommand*{\bidi@AfterPackage}{% - \@ifstar {\@s@bidi@AfterPackage}{% - \@ifnextchar +\@@bidi@AfterPackage{% - \@ifnextchar !\@@@bidi@AfterPackage\@bidi@AfterPackage - }% - }% -} -\newcommand*{\@@@bidi@AfterPackage}[2]{% - \begingroup\ifx\csname #2.\@pkgextension-h@@k\endcsname\relax - \aftergroup\@s@bidi@AfterPackage - \else - \aftergroup\bidi@AfterAtEndOfPackage - \fi - \endgroup{#2}% -} -\newcommand*{\bidi@AfterAtEndOfPackage}[1]{% - \bidi@set@load@hook{lateafter}{#1.\@pkgextension}} -\newcommand*{\@@bidi@AfterPackage}[2]{% - \begingroup - \expandafter\ifx\csname #2.\@pkgextension-h@@k\endcsname\relax - \aftergroup\@s@bidi@AfterPackage - \else - \aftergroup\@bidi@AfterPackage - \fi - \endgroup{#2}% -} -\newcommand*{\@bidi@AfterPackage}[1]{% - \bidi@set@load@hook{after}{#1.\@pkgextension}} -\newcommand*{\@s@bidi@AfterPackage}[1]{% - \begingroup - \@ifpackageloaded{#1}{% - \aftergroup\@secondoftwo - }{% - \aftergroup\@bidi@AfterPackage - }% - \endgroup - {#1}% -} +\NewDocumentCommand \bidi@BeforeClosingMainAux { o m } + { + \hook_gput_code:nnn { enddocument / afterlastpage } { #1 } + { + \debug_suspend: + \RenewDocumentCommand \bidi@BeforeClosingMainAux { m } { ##1 } + \cs_set_eq:NN \__biditools_protected@write:Nnn \protected@write + \cs_set_eq:NN \protected@write \bidi@protected@immediate@write + #2 + \cs_set_eq:NN \protected@write \__biditools_protected@write:Nnn + \debug_resume: + } + } -\newcommand*{\bidi@excludedpackages}{} -\let\bidi@excludedpackages\@empty -\newcommand*{\bidi@saved@RequirePackage}{} -\newcommand*{\bidi@PreventPackageFromLoading}{% - \@ifstar{\@bidi@PreventPackageFromLoading\PackageInfo}% - {\@bidi@PreventPackageFromLoading\PackageWarning}% -} -\newcommand*{\@bidi@PreventPackageFromLoading}[1]{% - \@ifnextchar [%] - {\@@bidi@PreventPackageFromLoading#1}{\@@bidi@PreventPackageFromLoading#1[]}% -} -\newcommand*{\@@bidi@PreventPackageFromLoading}{} +\NewDocumentCommand \bidi@AfterReadingMainAux { o m } + { + \hook_gput_code:nnn { enddocument / afteraux } { #1 } + { + \debug_suspend: + \RenewDocumentCommand \bidi@AfterReadingMainAux { m } { ##1 } + \cs_set_eq:NN \__biditools_protected@write:Nnn \protected@write + \cs_set_eq:NN \protected@write \bidi@protected@immediate@write + #2 + \cs_set_eq:NN \protected@write \__biditools_protected@write:Nnn + \debug_resume: + } + } + +\clist_new:N \l__biditools_file_patch_clist + +\NewDocumentCommand \ApplyPatchToFiles { m O{def} O{bidi} } + { + \clist_set:Nx \l__biditools_file_patch_clist { #1 } + \clist_map_inline:Nn \l__biditools_file_patch_clist + { + \ApplyPatchToFile { ##1 } [ #2 ] [ #3 ] + } + \clist_clear:N \l__biditools_file_patch_clist + } -\def\@@bidi@PreventPackageFromLoading#1[#2]#3{% - \edef\reserved@b{\zap@space#3 \@empty}% - \ifx \reserved@b\@empty - #1{biditools}{% - \string\bidi@PreventPackageFromLoading\space with empty packages\MessageBreak - argument ignored% - }% - \else - \ifx\bidi@excludedpackages\@empty - \let\bidi@saved@RequirePackage\RequirePackage - \let\RequirePackage\bidi@RequirePackage - \def\reserved@a##1##{% - \@latex@error - {\noexpand \usepackage before \string\documentclass}% - {\noexpand \usepackage may only appear in the document - preamble, i.e.,\MessageBreak - between \noexpand\documentclass and - \string\begin{document}.}% - \@gobble}% - \ifx\reserved@a\usepackage\else - \ifx\usepackage\bidi@saved@RequirePackage\else - \PackageWarning{biditools}{% - Maybe serious problem: unexpected definition of\MessageBreak - \string\usepackage - }% - \fi - \let\usepackage\RequirePackage - \fi - \fi - \expandafter\@for \expandafter\reserved@a\expandafter:\expandafter=% - \reserved@b\do {% - \ifx\reserved@a\@empty - #1{biditools}{% - empty package argument for - \string\bidi@PreventPackageFromLoading\MessageBreak - ignored% - }% - \else - \expandafter\@ifpackageloaded\expandafter{\reserved@a}{% - #1{biditools}{% - package `\reserved@a' already loaded.\MessageBreak - Cannot prevent it from beeing loaded% - }% - }{% - \edef\bidi@excludedpackages{\bidi@excludedpackages,% - \reserved@a}% - \if\relax\detokenize{#2}\relax\else - \@ifundefined{bidi@exclude@package@\reserved@a @do}{% - \@namedef{bidi@exclude@package@\reserved@a @do}{}% - }{}% - \expandafter\def - \csname bidi@exclude@package@\reserved@a - @do\expandafter\expandafter\expandafter\endcsname - \expandafter\expandafter\expandafter{% - \csname bidi@exclude@package@\reserved@a @do\endcsname - #2% - }% - \fi - }% - \fi - }% - \ifx\bidi@excludedpackages\@empty - \bidi@ResetPreventPackageFromLoading - \fi - \fi -} +\clist_new:N \l__biditools_package_patch_clist + +\NewDocumentCommand \ApplyPatchToPackages { m O{bidi} } + { + \clist_set:Nx \l__biditools_package_patch_clist { #1 } + \clist_map_inline:Nn \l__biditools_package_patch_clist + { + \ApplyPatchToPackage { ##1 } [ #2 ] + } + \clist_clear:N \l__biditools_package_patch_clist + } + +\clist_new:N \l__biditools_class_patch_clist + +\NewDocumentCommand \ApplyPatchToClasses { m O{bidi} } + { + \clist_set:Nx \l__biditools_class_patch_clist { #1 } + \clist_map_inline:Nn \l__biditools_class_patch_clist + { + \ApplyPatchToClass { ##1 } [ #2 ] + } + \clist_clear:N \l__biditools_class_patch_clist + } + +\NewDocumentCommand \ApplyPatchToClassesIfPackageLoadedF { m m O{bidi} } + { + \clist_set:Nx \l__biditools_class_patch_clist { #1 } + \clist_map_inline:Nn \l__biditools_class_patch_clist + { + \ApplyPatchToClassIfPackageLoadedF { ##1 } { #2 } [ #3 ] + } + \clist_clear:N \l__biditools_class_patch_clist + } +\ExplSyntaxOff -\@onlypreamble\bidi@PreventPackageFromLoading -\newcommand*{\bidi@ResetPreventPackageFromLoading}{% - \let\bidi@excludedpackages\@empty - \ifx\RequirePackage\bidi@RequirePackage - \ifx\usepackage\RequirePackage - \let\usepackage\bidi@saved@RequirePackage - \fi - \let\RequirePackage\bidi@saved@RequirePackage - \fi +\newcommand*{\bidi@ReplaceInput}{\declare@file@substitution} +\newcommand*{\bidi@UnReplaceInput} +{\undeclare@file@substitution} +\newcommand*{\bidi@ReplacePackage}[2]{% + \declare@file@substitution{#1.\@pkgextension}{#2.\@pkgextension}% } -\@onlypreamble\bidi@ResetPreventPackageFromLoading -\newcommand*{\bidi@StorePreventPackageFromLoading}[1]{% - \let#1\bidi@excludedpackages +\newcommand*{\bidi@UnReplacePackage}[1]{% + \undeclare@file@substitution{#1.\@pkgextension}% } -\@onlypreamble\bidi@StorePreventPackageFromLoading -\newcommand*{\bidi@UnPreventPackageFromLoading}{% - \@ifstar {\@tempswatrue\@bidi@UnPreventPackageFromLoading}% - {\@tempswafalse\@bidi@UnPreventPackageFromLoading}% +\newcommand*{\bidi@ReplaceClass}[2]{% + \declare@file@substitution{#1.\@clsextension}{#2.\@clsextension}% } - -\newcommand*{\@bidi@UnPreventPackageFromLoading}[1]{% - \edef\reserved@b{\zap@space#1 \@empty}% - \if@tempswa - \@for\reserved@a:=\reserved@b\do {% - \ifx\reserved@a\@empty \else - \ifcsname bidi@exclude@package@\reserved@a @do\endcsname - \expandafter\let - \csname bidi@exclude@package@\reserved@a @do\endcsname - \undefined - \fi - \fi - }% - \fi - \ifcsname bidi@excludedpackages\endcsname - \let\reserved@a\bidi@excludedpackages - \let\bidi@excludedpackages\@empty - \expandafter\@for\expandafter\reserved@c - \expandafter:\expandafter=\reserved@a - \do{% - \ifx\reserved@c\@empty\else - \@expandtwoargs\in@{,\reserved@c,}{,\reserved@b,}% - \ifin@ - \else - \edef\bidi@excludedpackages{% - \bidi@excludedpackages,\reserved@c - }% - \fi - \fi - }% - \ifx\bidi@excludedpackages\@empty\bidi@ResetPreventPackageFromLoading\fi - \fi +\newcommand*{\bidi@UnReplaceClass}[1]{% + \undeclare@file@substitution{#1.\@clsextension}% } - - -\newcommand*{\bidi@RequirePackage}[2][]{% - \let\reserved@c\@empty - \let\reserved@d\@empty - \edef\reserved@b{\zap@space#2 \@empty}% - \expandafter\@for\expandafter\reserved@b\expandafter:\expandafter=\reserved@b - \do {% - \begingroup - \@tempswatrue - \@for\reserved@a:=\bidi@excludedpackages\do {% - \ifx\reserved@a\reserved@b - \@tempswafalse - \fi - }% - \if@tempswa - \xdef\reserved@c{\reserved@c,\reserved@b}% - \else - \ifx\reserved@b\@empty\else - \PackageInfo{biditools}{Excluding package `\reserved@b'\MessageBreak - from loading}% - \@ifundefined{bidi@exclude@package@\reserved@b @do}{% - }{% - \expandafter\g@addto@macro\expandafter\reserved@d - \csname bidi@exclude@package@\reserved@b @do\endcsname - }% - \fi - \fi - \endgroup - }% - \ifx\reserved@c\@empty - \let\reserved@a\bidi@gobbleopt - \else - \edef\reserved@a{\noexpand\bidi@saved@RequirePackage[#1]{% - \expandafter\@gobble\reserved@c\@empty}}% - \fi - \expandafter\reserved@d - \reserved@a -} - -\newcommand{\bidi@gobbleopt}[1][]{} -\AtEndDocument{% - \let\bidi@saved@checkend=\@checkend - \renewcommand*{\@checkend}[1]{% - \def\reserved@a{#1}\def\reserved@b{document}% - \bidi@saved@checkend{#1}% - \ifx\reserved@a\reserved@b - \let\bidi@saved@clearpage=\clearpage - \renewcommand*{\clearpage}{\bidi@saved@clearpage - \bidi@hook@bcma - \bidi@restore@newpage - \let\clearpage=\bidi@saved@clearpage}% - \fi% - \let\bidi@saved@dofilelist\@dofilelist - \def\@dofilelist{% - \bidi@hook@acma - \let\@dofilelist\bidi@saved@dofilelist - \bidi@saved@dofilelist - }% - }% +\newcommand*{\bidi@BeforeFile}[1]{% + \AddToHook{file/#1/before}% } - - -\newcommand*{\bidi@saved@checkend}{} -\newcommand*{\bidi@saved@dofilelist}{} -\newcommand*{\bidi@redefine@newpage}{% - \let\bidi@saved@newpage\newpage - \def\bidi@restore@newpage{% - \renewcommand*{\newpage}{% - \PackageWarningNoLine{% - biditools% - }{% - \string\newpage\space at main aux file!\MessageBreak - You have output material at the main aux file.\MessageBreak - Note, that the \string\bidi@BeforeClosingMainAux\space commands\MessageBreak - are processed before the output from aux file% - }% - \let\newpage\bidi@saved@newpage - \newpage - }% - }% - \renewcommand*{\newpage}{% - \PackageError{% - biditools% - }{% - \string\newpage\space at \string\bidi@BeforeClosingMainAux - }{% - You should never use \string\newpage\space or - \string\clear(double)page or other output material at the\MessageBreak - argument of \string\bidi@BeforeClosingMainAux!\MessageBreak - If you'll continue, the \string\newpage\space will be ignored to - avoid corruption of\MessageBreak - every prior use of \string\bidi@BeforeClosingMainAux. - }% - }% +\newcommand*{\bidi@AfterFile}[1]{% + \AddToHook{file/#1/after}% } - -\newcommand*{\bidi@restore@newpage}{} -\newcommand*{\bidi@hook@bcma}{} -\newcommand*{\bidi@hook@acma}{} -\newcommand*{\bidi@BeforeClosingMainAux}{% - \ifx\bidi@hook@bcma\@empty - \gdef\bidi@hook@bcma{% - \renewcommand*{\bidi@BeforeClosingMainAux}[1]{####1}% - \let\protected@write\bidi@protected@immediate@write - \bidi@redefine@newpage - }% - \fi - \g@addto@macro\bidi@hook@bcma% +\newcommand*{\bidi@BeforeClass}[1]{% + \bidi@BeforeFile{#1.\@clsextension}% } - -\newcommand*{\bidi@AfterReadingMainAux}{% - \ifx\bidi@hook@acma\@empty - \gdef\bidi@hook@acma{% - \renewcommand*{\bidi@AfterReadingMainAux}[1]{####1}% - \let\protected@write\bidi@protected@immediate@write - }% - \fi - \g@addto@macro\bidi@hook@acma% +\newcommand*{\bidi@BeforePackage}[1]{% + \bidi@BeforeFile{#1.\@pkgextension}% } \long\def\bidi@protected@immediate@write#1#2#3{% @@ -7991,79 +7825,126 @@ ill-advised in the old versions of bidi package.% \if@nobreak\ifvmode\nobreak\fi\fi } -\def\bidi@patch@counter{0}% -\if@bidi@csundef{numexpr}{% - \def\bidi@patch@stepcounter{% - \begingroup - \count@\bidi@patch@counter\relax - \advance\count@\@ne\relax - \edef\x{\endgroup - \noexpand\def\noexpand\bidi@patch@counter{\the\count@}% - }% - \x - }% -}{% - \def\bidi@patch@stepcounter{% - \edef\bidi@patch@counter{% - \the\numexpr\bidi@patch@counter+\@ne\relax - }% - }% -} -\def\bidi@patch@list{} -\def\bidi@patch@Add{% - \bidi@appto\bidi@patch@list -} \def\bidi@patch@AfterPackage#1{% \@ifpackageloaded{#1}{% \@firstofone }{% - \@bidi@patch@AfterPackage{#1}% + \AddToHook{package/#1/after}% }% } -\def\@bidi@patch@AfterPackage#1{% - \edef\bidi@patch@temp{#1}% - \bidi@patch@stepcounter - \expandafter\bidi@patch@@AfterPackage - \csname @bidi@patch@\bidi@patch@counter\expandafter\endcsname{% - \bidi@patch@temp - }% -} -\def\bidi@patch@@AfterPackage#1#2#3{% - \begingroup - \toks@{#3}% - \xdef\bidi@patch@gtemp{% - \noexpand\@ifpackageloaded{#2}{% - \noexpand\let\noexpand#1\noexpand\relax - \the\toks@ - }{}% - }% - \endgroup - \let#1\bidi@patch@gtemp - \bidi@patch@Add#1% - \bidi@patch@try{bidi@AfterPackage}{#2}#1% -} -\def\bidi@patch@try#1#2#3{% - \if@bidi@csundef{#1}{}{% - \csname #1\endcsname{#2}{#3}% +\def\bidi@patch@AfterFile#1{% + \IfFileLoadedTF{#1}{% + \@firstofone + }{% + \AddToHook{file/#1/after}% }% } -\AtBeginDocument{\bidi@patch@list} +\NewDocumentCommand \ApplyPatchToFile { m O{def} O{bidi} } + { + \bidi@patch@AfterFile{#1.#2}{% + \ifnum\catcode`\@=11 + \input{#1-xetex-#3.def}% + \else + \bidi@storecatcode\@ + \makeatletter + \input{#1-xetex-#3.def}% + \bidi@restorecatcode\@ + \fi + }% + } + +\NewDocumentCommand \ApplyPatchCodeToFile { m +m O{def} } + { + \bidi@patch@AfterFile{#1.#3}{#2}% + } + +\NewDocumentCommand \ApplyPatchToFilesIfPackageLoadedF { m m O{def} O{bidi} } + { + \AddToHook{begindocument/before}{% + \IfPackageLoadedF{#1}{% + \ApplyPatchToFiles{#2}[#3][#4]% + }% + } + } + +\NewDocumentCommand \ApplyPatchToClassIfPackageLoadedF { m m O{bidi} } + { + \AddToHook{begindocument/before}{% + \IfPackageLoadedF{#2}{% + \ifnum\catcode`\@=11 + \@ifclassloaded{#1}{% + \input{#1-xetex-#3.def}% + }{}% + \else + \bidi@storecatcode\@ + \makeatletter + \@ifclassloaded{#1}{% + \input{#1-xetex-#3.def}% + }{}% + \bidi@restorecatcode\@ + \fi + }% + } + } + +\NewDocumentCommand \ApplyPatchToPackageIfPackageLoadedF { m m O{bidi} } + { + \AddToHook{begindocument/before}{% + \IfPackageLoadedF{#2}{% + \IfPackageLoadedT{#1}{% + \ifnum\catcode`\@=11 + \input{#1-xetex-#3.def}% + \else + \bidi@storecatcode\@ + \makeatletter + \input{#1-xetex-#3.def}% + \bidi@restorecatcode\@ + \fi + }% + }% + } + } + +\NewDocumentCommand \ApplyPatchIfPackageLoaded { m +m +m } + { + \AddToHook{begindocument/before}{% + \ifnum\catcode`\@=11 + \@ifpackageloaded{#1}{#2}{#3}% + \else + \bidi@storecatcode\@ + \makeatletter + \@ifpackageloaded{#1}{#2}{#3}% + \bidi@restorecatcode\@ + \fi + } + } + +\NewDocumentCommand \ApplyPatchIfPackageLoadedT { m +m } + { + \ApplyPatchIfPackageLoaded{#1}{#2}{}% + } + +\NewDocumentCommand \ApplyPatchIfPackageLoadedF { m +m } + { + \ApplyPatchIfPackageLoaded{#1}{}{#2}% + } -\bidi@AtEndPreamble{\bidi@patch@list}% +\NewDocumentCommand \ApplyPatchToPackage { m O{bidi} } + { + \bidi@patch@AfterPackage{#1}{\input{#1-xetex-#2.def}}% + } -\bidi@AfterEndPreamble{% - \let\bidi@patch@OrgIfPackageLoaded\@ifpackageloaded - \let\bidi@patch@OrgIfPackageLater\@ifpackagelater - \let\bidi@patch@OrgIfClassLoaded\@ifclassloaded - \let\bidi@patch@OrgIfClassLater\@ifclasslater - \bidi@patch@list - \let\@ifpackageloaded\bidi@patch@OrgIfPackageLoaded - \let\@ifpackagelater\bidi@patch@OrgIfPackageLater - \let\@ifclassloaded\bidi@patch@OrgIfClassLoaded - \let\@ifclasslater\bidi@patch@OrgIfClassLater -}% +\NewDocumentCommand \ApplyPatchCodeToPackage { m +m } + { + \bidi@patch@AfterPackage{#1}{#2}% + } + +\NewDocumentCommand \ApplyPatchToClass { m O{bidi} } + { + \@ifclassloaded{#1}{\input{#1-xetex-#2.def}}{}% + } % \end{macrocode} % \iffalse %</biditools.sty> @@ -8072,7 +7953,7 @@ ill-advised in the old versions of bidi package.% % \section{File \texttt{bidituftefloat.sty}} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{bidituftefloat}[2017/05/19 v0.2 +\ProvidesPackage{bidituftefloat}[2025/01/03 v0.3 bidi implementation of tufte float] \RequirePackage{xifthen} \newcommand{\@bidituftefloat@pkgname}{bidituftefloat} @@ -8098,7 +7979,7 @@ bidi implementation of tufte float] \setboolean{@bidituftefloat@twoside}{false}% \setboolean{@bidituftefloat@symmetric}{false}% } -\@ifclassloaded{book}{\ExecuteOptions{twoside}}{} +\IfClassLoadedT{book}{\ExecuteOptions{twoside}} \newboolean{@bidituftefloat@debug} \newcommand*{\@bidituftefloat@caption@justification}{\@bidituftefloat@justification@autodetect} \ProcessOptions @@ -10530,7 +10411,7 @@ bidi implementation of tufte title] %\fi % \section{File \texttt{book-xetex-bidi.def}} % \begin{macrocode} -\ProvidesFile{book-xetex-bidi.def}[2017/06/09 v1.0 bidi adaptations for standard book class for XeTeX engine] +\ProvidesFile{book-xetex-bidi.def}[2025/01/03 v1.1 bidi adaptations for standard book class for XeTeX engine] \renewenvironment{theindex} {\if@twocolumn \@restonecolfalse @@ -10546,7 +10427,7 @@ bidi implementation of tufte title] \parskip\z@ \@plus .3\p@\relax \let\item\@idxitem} {\if@restonecol\onecolumn\else\clearpage\fi} -\@ifclassloaded{bookest}{}{% +\IfClassLoadedF{bookest}{% \if@titlepage \renewcommand\maketitle{\begin{titlepage}% \let\footnotesize\small @@ -10997,7 +10878,9 @@ bidi implementation of tufte title] %\fi % \section{File \texttt{crop-xetex-bidi.def}} % \begin{macrocode} -\ProvidesFile{crop-xetex-bidi.def}[2013/04/10 v0.2 bidi adaptations for crop package for XeTeX engine] +\ProvidesFile{crop-xetex-bidi.def}[2025/01/03 v0.3 bidi adaptations for crop package for XeTeX engine] +\IfClassLoadedT{memoir}{\endinput} +\RequirePackage{graphicx} \renewcommand*\CROP@@ulc{% \if@RTLmain% \begin{picture}(0,0) @@ -12355,7 +12238,7 @@ bidi implementation of tufte title] %\fi % \section{File \texttt{extarticle-xetex-bidi.def}} % \begin{macrocode} -\ProvidesFile{extarticle-xetex-bidi.def}[2017/06/09 v0.4 bidi adaptations for extarticle class for XeTeX engine] +\ProvidesFile{extarticle-xetex-bidi.def}[2025/01/05 v0.5 bidi adaptations for extarticle class for XeTeX engine] \renewcommand*\l@section[2]{% \ifnum \c@tocdepth >\z@ \addpenalty\@secpenalty @@ -12402,14 +12285,15 @@ bidi implementation of tufte title] \nobreak \vskip 3ex \@afterheading} - \def\@spart#1{% - {\parindent \z@ \if@RTL\raggedleft\else\raggedright\fi - \interlinepenalty \@M - \normalfont - \huge \bfseries #1\par}% - \nobreak - \vskip 3ex - \@afterheading} +\ApplyPatchIfPackageLoaded{nameref}{% + \bidi@patchcmd\NR@spart\raggedright{% + \if@RTL\raggedleft\else\raggedright\fi + }{}{\bidi@warningnoline{Oops! patching `\string\NR@spart' failed}}% +}{% + \bidi@patchcmd\@spart\raggedright{% + \if@RTL\raggedleft\else\raggedright\fi + }{}{\bidi@warningnoline{Oops! patching `\string\@spart' failed}}% +} \renewenvironment{thebibliography}[1] {\section*{\refname \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}% @@ -12756,7 +12640,7 @@ bidi implementation of tufte title] %\fi % \section{File \texttt{extrafootnotefeatures-xetex-bidi.def}} % \begin{macrocode} -\ProvidesFile{extrafootnotefeatures-xetex-bidi.def}[2023/08/02 v2.6 bidi extra footnote features for XeTeX engine] +\ProvidesFile{extrafootnotefeatures-xetex-bidi.def}[2025/01/03 v2.7 bidi extra footnote features for XeTeX engine] \newdimen\bidi@columnwidth \def\bidi@floathook{% \bidi@columnwidth\columnwidth @@ -12979,7 +12863,7 @@ bidi implementation of tufte title] \@bidi@after@Hy@hyperfootnotes \@ifstar\bidi@star@footmarkwidth\bidi@normal@footmarkwidth } -\@ifclassloaded{memoir}{\let\plainfootnotes\normalfootnotes}{} +\IfClassLoadedT{memoir}{\let\plainfootnotes\normalfootnotes} \bidi@ensure@newcommand*{\setSingleSpace}[1]{% \def\m@m@singlespace{#1}% \def\m@m@footnote@spacing{#1}% @@ -16931,7 +16815,8 @@ bidi implementation of tufte title] %\fi % \section{File \texttt{floatrow-xetex-bidi.def}} % \begin{macrocode} -\ProvidesFile{floatrow-xetex-bidi.def}[2013/04/08 v0.1 bidi adaptations for floatrow package for XeTeX engine] +\ProvidesFile{floatrow-xetex-bidi.def}[2025/01/03 v0.2 bidi adaptations for floatrow package for XeTeX engine] +\RequirePackage{color} \renewcommand\flnew@within[1]{\@addtoreset{\FB@captype}{#1}% \expandafter\edef\csname the\FB@captype\endcsname{% \expandafter\noexpand\csname @@ -16943,7 +16828,7 @@ bidi implementation of tufte title] %\fi % \section{File \texttt{flowfram-xetex-bidi.def}} % \begin{macrocode} -\ProvidesFile{flowfram-xetex-bidi.def}[2018/09/29 v0.5 bidi adaptations for flowfram package for XeTeX engine] +\ProvidesFile{flowfram-xetex-bidi.def}[2025/01/03 v0.6 bidi adaptations for flowfram package for XeTeX engine] \def\@outputdblcol{% \@nxtcol=\c@thisframe \c@curpg=\c@page @@ -17062,7 +16947,7 @@ bidi implementation of tufte title] {\csname colheight\romannumeral#1\endcsname}{% \expandafter\box\csname column\romannumeral#1\endcsname}% }}} -\@ifclassloaded{book}{% +\IfClassLoadedT{book}{% \renewcommand\theequation {\ifnum \c@chapter>\z@ \thechapter\@SepMark\fi \@arabic\c@equation} \renewcommand \thefigure @@ -17074,8 +16959,8 @@ bidi implementation of tufte title] \renewcommand\thesubsection {\thesection\@SepMark\@arabic\c@subsection} \renewcommand\thesubsubsection{\thesubsection \@SepMark\@arabic\c@subsubsection} \renewcommand\theparagraph {\thesubsubsection\@SepMark\@arabic\c@paragraph} -\renewcommand\thesubparagraph {\theparagraph\@SepMark\@arabic\c@subparagraph}}{} -\@ifclassloaded{report}{% +\renewcommand\thesubparagraph {\theparagraph\@SepMark\@arabic\c@subparagraph}} +\IfClassLoadedT{report}{% \renewcommand\theequation {\ifnum \c@chapter>\z@ \thechapter\@SepMark\fi \@arabic\c@equation} \renewcommand \thefigure @@ -17087,7 +16972,7 @@ bidi implementation of tufte title] \renewcommand\thesubsection {\thesection\@SepMark\@arabic\c@subsection} \renewcommand\thesubsubsection{\thesubsection \@SepMark\@arabic\c@subsubsection} \renewcommand\theparagraph {\thesubsubsection\@SepMark\@arabic\c@paragraph} -\renewcommand\thesubparagraph {\theparagraph\@SepMark\@arabic\c@subparagraph}}{} +\renewcommand\thesubparagraph {\theparagraph\@SepMark\@arabic\c@subparagraph}} \renewcommand{\rotateframe}[2]{\if@ttb@rotate \rotatebox{#1}{\if@RTL\beginL\fi#2\if@RTL\endL\fi}% \else @@ -18448,7 +18333,7 @@ bidi implementation of tufte title] %\fi % \section{File \texttt{hyperref-xetex-bidi.def}} % \begin{macrocode} -\ProvidesFile{hyperref-xetex-bidi.def}[2018/11/11 v1.1 bidi adaptations for hyperref package for XeTeX engine] +\ProvidesFile{hyperref-xetex-bidi.def}[2025/01/05 v1.4 bidi adaptations for hyperref package for XeTeX engine] \AtBeginDocument{% \def\contentsline#1#2#3#4{% \ifx\\#4\\% @@ -18598,7 +18483,7 @@ bidi implementation of tufte title] \fi }% }% - \@ifpackageloaded{tabularx}{% + \ApplyPatchCodeToPackage{tabularx}{% \let\HyOrg@TX@endtabularx\TX@endtabularx \def\Hy@tabularx@hook{% \let\@footnotetext\H@@footnotetext @@ -18617,9 +18502,9 @@ bidi implementation of tufte title] }% \endgroup \let\TX@endtabularx\Hy@gtemp - }{}% - \@ifpackageloaded{longtable}{% - \CheckCommand*{\LT@p@LTRftntext}[1]{% + }% + \ApplyPatchCodeToPackage{longtable}{% + \CheckCommand{\LT@p@LTRftntext}[1]{% \edef\@tempa{% \the\LT@p@ftn \noexpand\LTRfootnotetext[\the\c@footnote]% @@ -18657,7 +18542,7 @@ bidi implementation of tufte title] \fi }% }% - \CheckCommand*{\LT@p@RTLftntext}[1]{% + \CheckCommand{\LT@p@RTLftntext}[1]{% \edef\@tempa{% \the\LT@p@ftn \noexpand\RTLfootnotetext[\the\c@footnote]% @@ -18695,8 +18580,8 @@ bidi implementation of tufte title] \fi }% }% - }{}% - \@ifpackageloaded{bidipoem}{% + }% + \ApplyPatchCodeToPackage{bidipoem}{% \long\def\bidipoem@p@ftntext#1{% \edef\@tempx{% \the\bidipoem@p@ftn @@ -18790,7 +18675,7 @@ bidi implementation of tufte title] \fi }% }% - }{}% + }% \let\HyOrg@maketitle\maketitle \def\maketitle{% \let\Hy@saved@footnotemark\@footnotemark @@ -18995,37 +18880,6 @@ bidi implementation of tufte title] \def\XeTeX{Xe\TeX}% \def\XeLaTeX{Xe\LaTeX}% } -\@ifpackageloaded{longtable}{% - \begingroup - \def\y{\LT@array}% - \@ifundefined{scr@LT@array}{% - \@ifundefined{adl@LT@array}{}{\def\y{\adl@LT@array}}% - }{\def\y{\scr@LT@array}}% - \long\def\x\refstepcounter#1#2\@sharp#3#4\@nil{% - \expandafter\endgroup - \expandafter\def\y[##1]##2{% - \H@refstepcounter{#1}% - \hyper@makecurrent{table}% - \let\Hy@LT@currentHref\@currentHref - #2\@sharp#####4% - }% - }% - \expandafter\expandafter\expandafter\x\y[{#1}]{#2}\@nil - \begingroup - \def\x#1\ifvoid\LT@foot#2\fi#3\@nil{% - \endgroup - \def\LT@start{% - #1% - \ifvoid\LT@foot#2\fi - \let\@currentHref\Hy@LT@currentHref - \Hy@raisedlink{% - \hyper@anchorstart{\@currentHref}\hyper@anchorend - }% - #3% - }% - }% - \expandafter\x\LT@start\@nil -}{} \bidi@patchcmd\@TextField{% \@pdfm@mark }{% @@ -19312,7 +19166,7 @@ bidi implementation of tufte title] %\fi % \section{File \texttt{listings-xetex-bidi.def}} % \begin{macrocode} -\ProvidesFile{listings-xetex-bidi.def}[2018/09/15 v1.5 bidi adaptations for listings package for XeTeX engine] +\ProvidesFile{listings-xetex-bidi.def}[2025/01/03 v1.6 bidi adaptations for listings package for XeTeX engine] \lst@Key{captiondirection}{textdirection}{% \lstKV@SwitchCases{#1}% {textdirection:\\% @@ -19392,7 +19246,7 @@ bidi implementation of tufte title] \endgroup% }{}{}% } -\@ifpackageloaded{caption}{% +\ApplyPatchIfPackageLoaded{caption}{% \AtBeginCaption{% \bidi@lst@ensure@caption@script{\@nonlatintrue}{\@nonlatinfalse}% \bidi@lst@ensure@caption@direction{\@RTLfalse}{\@RTLtrue}% @@ -19419,314 +19273,24 @@ bidi implementation of tufte title] % \end{macrocode} % \iffalse %</listings-xetex-bidi.def> -%<*loadingorder-xetex-bidi.def> -%\fi -% \section{File \texttt{loadingorder-xetex-bidi.def}} -% \begin{macrocode} -\ProvidesFile{loadingorder-xetex-bidi.def}[2024/12/08 v0.99 making sure that bidi is the last package loaded] -\bidi@isloaded{amsmath} -\bidi@isloaded{amstext} -\bidi@isloaded{amsthm} -\bidi@isloaded{animate} -\bidi@isloaded{breqn} -\bidi@isloaded{cals} -\bidi@isloaded{caption} -\bidi@isloaded{crop} -\bidi@isloaded{cuted} -\bidi@isloaded{cutwin} -\bidi@isloaded{color} -\bidi@isloaded{dblfnote} -\bidi@isloaded{diagbox} -\bidi@isloaded{xcolor} -\bidi@isloaded{colortbl} -\bidi@isloaded{float} -\bidi@isloaded{floatrow} -\bidi@isloaded{flowfram} -\bidi@isloaded{framed} -\bidi@isloaded{ftnright} -\bidi@isloaded{xltxtra} -\bidi@isloaded{xunicode} -\bidi@isloaded{wrapfig} -\bidi@isloaded{graphicx} -\bidi@isloaded{geometry} -\bidi@isloaded{hvfloat} -\bidi@isloaded{mdframed} -\bidi@isloaded{midfloat} -\bidi@isloaded{ntheorem} -\bidi@isloaded{ntheorem-hyper} -\bidi@isloaded{hyperref} -\bidi@isloaded{fancybox} -\bidi@isloaded{fancyhdr} -\bidi@isloaded{fix2col} -\bidi@isloaded{draftwatermark} -\bidi@isloaded{empheq} -\bidi@isloaded{overpic} -\bidi@isloaded{pdfpages} -\bidi@isloaded{listings} -\bidi@isloaded{lettrine} -\bidi@isloaded{lineno} -\bidi@isloaded{media9} -\bidi@isloaded{pstricks} -\bidi@isloaded{pgf} -\bidi@isloaded{picinpar} -\bidi@isloaded{quotchap} -\bidi@isloaded{tikz} -\bidi@isloaded{titlesec} -\bidi@isloaded{titletoc} -\bidi@isloaded{array} -\bidi@isloaded{soul} -\bidi@isloaded{stabular} -\bidi@isloaded{subfig} -\bidi@isloaded{subfigure} -\bidi@isloaded{supertabular} -\bidi@isloaded{xtab} -\bidi@isloaded{longtable} -\bidi@isloaded{arydshln} -\bidi@isloaded{multicol} -\bidi@isloaded{multienum} -\bidi@isloaded{minitoc} -\bidi@isloaded{natbib} -\bidi@isloaded{newfloat} -\bidi@isloaded{ragged2e} -\bidi@isloaded{rotating} -\bidi@isloaded{tabls} -\bidi@isloaded{tabulary} -\bidi@isloaded{tocbasic} -\bidi@isloaded{tocstyle} -\bidi@isloaded{tocbibind} -\bidi@isloaded{fontspec} -\bidi@isloaded{arabxetex} -\bidi@isloaded{polyglossia} -\bidi@isloaded{fancyvrb} -\AtBeginDocument{ - \if@bidi@amsmathloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package amsmath after bidi package. Please load package amsmath before bidi package, and then try to run xelatex on your document again}{}]{amsmath} - \fi% - \if@bidi@amstextloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package amstext after bidi package. Please load package amstext before bidi package, and then try to run xelatex on your document again}{}]{amstext} - \fi% - \if@bidi@amsthmloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package amsthm after bidi package. Please load package amsthm before bidi package, and then try to run xelatex on your document again}{}]{amsthm} - \fi% - \if@bidi@animateloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package animate after bidi package. Please load package animate before bidi package, and then try to run xelatex on your document again}{}]{animate} - \fi% - \if@bidi@breqnloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package breqn after bidi package. Please load package breqn before bidi package, and then try to run xelatex on your document again}{}]{breqn} - \fi% - \if@bidi@calsloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package cals after bidi package. Please load package cals before bidi package, and then try to run xelatex on your document again}{}]{cals} - \fi% - \if@bidi@captionloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package caption after bidi package. Please load package caption before bidi package, and then try to run xelatex on your document again}{}]{caption} - \fi% - \if@bidi@croploaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package crop after bidi package. Please load package crop before bidi package, and then try to run xelatex on your document again}{}]{crop} - \fi% - \if@bidi@colorloaded@\else - \@ifpackageloaded{hyperref}{}{% - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package color after bidi package. Please load package color before bidi package, and then try to run xelatex on your document again}{}]{color}} - \fi% - \if@bidi@cutwinloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package cutwin after bidi package. Please load package cutwin before bidi package, and then try to run xelatex on your document again}{}]{cutwin} - \fi% - \if@bidi@cutedloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package cuted after bidi package. Please load package cuted before bidi package, and then try to run xelatex on your document again}{}]{cuted} - \fi% - \if@bidi@dblfnoteloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package dblfnote after bidi package. Please load package dblfnote before bidi package, and then try to run xelatex on your document again}{}]{dblfnote} - \fi% - \if@bidi@diagboxloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package diagbox after bidi package. Please load package diagbox before bidi package, and then try to run xelatex on your document again}{}]{diagbox} - \fi% - \if@bidi@xcolorloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package xcolor after bidi package. Please load package xcolor before bidi package, and then try to run xelatex on your document again}{}]{xcolor} - \fi% - \if@bidi@colortblloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package colortbl after bidi package. Please load package colortbl before bidi package, and then try to run xelatex on your document again}{}]{colortbl} - \fi% - \if@bidi@floatloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package float after bidi package. Please load package float before bidi package, and then try to run xelatex on your document again}{}]{float} - \fi% - \if@bidi@floatrowloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package floatrow after bidi package. Please load package floatrow before bidi package, and then try to run xelatex on your document again}{}]{floatrow} - \fi% - \if@bidi@flowframloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package flowfram after bidi package. Please load package flowfram before bidi package, and then try to run xelatex on your document again}{}]{flowfram} - \fi% - \if@bidi@framedloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package framed after bidi package. Please load package framed before bidi package, and then try to run xelatex on your document again}{}]{framed} - \fi% - \if@bidi@ftnrightloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package ftnright after bidi package. Please load package ftnright before bidi package, and then try to run xelatex on your document again}{}]{ftnright} - \fi% - \if@bidi@xltxtraloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package xltxtra after bidi package. Please load package xltxtra before bidi package, and then try to run xelatex on your document again}{}]{xltxtra} - \fi% - \if@bidi@xunicodeloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package xunicode after bidi package. Please load package xunicode before bidi package, and then try to run xelatex on your document again}{}]{xunicode} - \fi% - \if@bidi@wrapfigloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package wrapfig after bidi package. Please load package wrapfig before bidi package, and then try to run xelatex on your document again}{}]{wrapfig} - \fi% - \if@bidi@graphicxloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package graphicx after bidi package. Please load package graphicx before bidi package, and then try to run xelatex on your document again}{}]{graphicx} - \fi% - \if@bidi@geometryloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package geometry after bidi package. Please load package geometry before bidi package, and then try to run xelatex on your document again}{}]{geometry} - \fi% - \if@bidi@hvfloatloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package hvfloat after bidi package. Please load package hvfloat before bidi package, and then try to run xelatex on your document again}{}]{hvfloat} - \fi% - \if@bidi@mdframedloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package mdframed after bidi package. Please load package mdframed before bidi package, and then try to run xelatex on your document again}{}]{mdframed} - \fi% - \if@bidi@midfloatloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package midfloat after bidi package. Please load package midfloat before bidi package, and then try to run xelatex on your document again}{}]{midfloat} - \fi% - \if@bidi@ntheoremloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package ntheorem after bidi package. Please load package ntheorem before bidi package, and then try to run xelatex on your document again}{}]{ntheorem} - \fi% - \if@bidi@hyperrefloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package hyperref after bidi package. Please load package hyperref before bidi package, and then try to run xelatex on your document again}{}]{hyperref} - \fi% - \if@bidi@fancyboxloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package fancybox after bidi package. Please load package fancybox before bidi package, and then try to run xelatex on your document again}{}]{fancybox} - \fi% - \if@bidi@fancyhdrloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package fancyhdr after bidi package. Please load package fancyhdr before bidi package, and then try to run xelatex on your document again}{}]{fancyhdr} - \fi% - \if@bidi@draftwatermarkloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package draftwatermark after bidi package. Please load package draftwatermark before bidi package, and then try to run xelatex on your document again}{}]{draftwatermark} - \fi% - \if@bidi@empheqloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package empheq after bidi package. Please load package empheq before bidi package, and then try to run xelatex on your document again}{}]{empheq} - \fi% - \if@bidi@overpicloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package overpic after bidi package. Please load package overpic before bidi package, and then try to run xelatex on your document again}{}]{overpic} - \fi% - \if@bidi@pdfpagesloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package pdfpages after bidi package. Please load package pdfpages before bidi package, and then try to run xelatex on your document again}{}]{pdfpages} - \fi% - \if@bidi@lettrineloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package lettrine after bidi package. Please load package lettrine before bidi package, and then try to run xelatex on your document again}{}]{lettrine} - \fi - \if@bidi@linenoloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package lineno after bidi package. Please load package lineno before bidi package, and then try to run xelatex on your document again}{}]{lineno} - \fi% - \if@bidi@listingsloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package listings after bidi package. Please load package listings before bidi package, and then try to run xelatex on your document again}{}]{listings} - \fi% - \csname if@bidi@media9loaded@\endcsname\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package media9 after bidi package. Please load package media9 before bidi package, and then try to run xelatex on your document again}{}]{media9} - \fi% - \if@bidi@pstricksloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package pstricks after bidi package. Please load package pstricks before bidi package, and then try to run xelatex on your document again}{}]{pstricks} - \fi% - \if@bidi@pgfloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package pgf after bidi package. Please load package pgf before bidi package, and then try to run xelatex on your document again}{}]{pgf} - \fi% - \if@bidi@picinparloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package picinpar after bidi package. Please load package picinpar before bidi package, and then try to run xelatex on your document again}{}]{picinpar} - \fi% - \if@bidi@quotchaploaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package quotchap after bidi package. Please load package quotchap before bidi package, and then try to run xelatex on your document again}{}]{quotchap} - \fi% - \if@bidi@tikzloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package tikz after bidi package. Please load package tikz before bidi package, and then try to run xelatex on your document again}{}]{tikz} - \fi% - \if@bidi@titlesecloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package titlesec after bidi package. Please load package titlesec before bidi package, and then try to run xelatex on your document again}{}]{titlesec} - \fi% - \if@bidi@titletocloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package titletoc after bidi package. Please load package titletoc before bidi package, and then try to run xelatex on your document again}{}]{titletoc} - \fi% - \if@bidi@arrayloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package array after bidi package. Please load package array before bidi package, and then try to run xelatex on your document again}{}]{array} - \fi% - \if@bidi@stabularloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package stabular after bidi package. Please load package stabular before bidi package, and then try to run xelatex on your document again}{}]{stabular} - \fi% - \if@bidi@soulloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package soul after bidi package. Please load package soul before bidi package, and then try to run xelatex on your document again}{}]{soul} - \fi% - \if@bidi@subfigloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package subfig after bidi package. Please load package subfig before bidi package, and then try to run xelatex on your document again}{}]{subfig} - \fi% - \if@bidi@subfigureloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package subfigure after bidi package. Please load package subfigure before bidi package, and then try to run xelatex on your document again}{}]{subfigure} - \fi% - \if@bidi@supertabularloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package supertabular after bidi package. Please load package supertabular before bidi package, and then try to run xelatex on your document again}{}]{supertabular} - \fi% - \if@bidi@xtabloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package xtab after bidi package. Please load package xtab before bidi package, and then try to run xelatex on your document again}{}]{xtab} - \fi% - \if@bidi@longtableloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package longtable after bidi package. Please load package longtable before bidi package, and then try to run xelatex on your document again}{}]{longtable} - \fi% - \if@bidi@arydshlnloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package arydshln after bidi package. Please load package arydshln before bidi package, and then try to run xelatex on your document again}{}]{arydshln} - \fi% - \if@bidi@multicolloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package multicol after bidi package. Please load package multicol before bidi package, and then try to run xelatex on your document again}{}]{multicol} - \fi% - \if@bidi@multienumloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package multienum after bidi package. Please load package multienum before bidi package, and then try to run xelatex on your document again}{}]{multienum} - \fi% - \if@bidi@minitocloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package minitoc after bidi package. Please load package minitoc before bidi package, and then try to run xelatex on your document again}{}]{minitoc} - \fi% - \if@bidi@natbibloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package natbib after bidi package. Please load package natbib before bidi package, and then try to run xelatex on your document again}{}]{natbib} - \fi% - \if@bidi@newfloatloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package newfloat after bidi package. Please load package newfloat before bidi package, and then try to run xelatex on your document again}{}]{newfloat} - \fi% - \csname if@bidi@ragged2eloaded@\endcsname\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package ragged2e after bidi package. Please load package ragged2e before bidi package, and then try to run xelatex on your document again}{}]{ragged2e} - \fi% - \if@bidi@rotatingloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package rotating after bidi package. Please load package rotating before bidi package, and then try to run xelatex on your document again}{}]{rotating} - \fi% - \if@bidi@tablsloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package tabls after bidi package. Please load package tabls before bidi package, and then try to run xelatex on your document again}{}]{tabls} - \fi% - \if@bidi@tabularyloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package tabulary after bidi package. Please load package tabulary before bidi package, and then try to run xelatex on your document again}{}]{tabulary} - \fi% - \if@bidi@tocbasicloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package tocbasic after bidi package. Please load package tocbasic before bidi package, and then try to run xelatex on your document again}{}]{tocbasic} - \fi% - \if@bidi@tocstyleloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package tocstyle after bidi package. Please load package tocstyle before bidi package, and then try to run xelatex on your document again}{}]{tocstyle} - \fi% - \if@bidi@tocbibindloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package tocbibind after bidi package. Please load package tocbibind before bidi package, and then try to run xelatex on your document again}{}]{tocbibind} - \fi% - \if@bidi@fontspecloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package fontspec after bidi package. Please load package fontspec before bidi package, and then try to run xelatex on your document again}{}]{fontspec} - \fi% - \if@bidi@arabxetexloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package arabxetex after bidi package. Please load package arabxetex before bidi package, and then try to run xelatex on your document again}{}]{arabxetex} - \fi% - \if@bidi@polyglossialoaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package polyglossia after bidi package. Please load package polyglossia before bidi package, and then try to run xelatex on your document again}{}]{polyglossia} - \fi% - \if@bidi@fancyvrbloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package fancyvrb after bidi package. Please load package fancyvrb before bidi package, and then try to run xelatex on your document again}{}]{fancyvrb} - \fi% -} -% \end{macrocode} -% \iffalse -%</loadingorder-xetex-bidi.def> %<*longtable-xetex-bidi.def> %\fi % \section{File \texttt{longtable-xetex-bidi.def}} % \begin{macrocode} -\ProvidesFile{longtable-xetex-bidi.def}[2022/05/20 v0.6 bidi adaptations for longtable package for XeTeX engine] +\ProvidesFile{longtable-xetex-bidi.def}[2025/01/05 v0.8 bidi adaptations for longtable package for XeTeX engine] +\ExplSyntaxOn \def\LT@array[#1]#2{% - \refstepcounter{table}\stepcounter{LT@tables}% + \UseTaggingSocket{tbl/init} + \tl_if_empty:eTF { \LTcaptype } + { + \tl_gset:Ne \@currentHref {LT@tables.\theHLT@tables} + } + { + \@kernel@refstepcounter{\LTcaptype}\stepcounter{LT@tables} + \tl_gset:Ne \@currentHref {\LTcaptype.\cs_if_exist_use:c {theH\LTcaptype}} + } + \tbl_gzero_row_count: + \UseTaggingSocket{tbl/longtable/init} \if l#1% \if@RTLtab\LTleft\fill \LTright\z@\else\LTleft\z@ \LTright\fill\fi \else\if r#1% @@ -19740,7 +19304,8 @@ bidi implementation of tufte title] \def\@tabarray{% \let\hline\LT@@hl \LT@@tabarray}% - \let\\\LT@tabularcr\let\tabularnewline\\% + \let\\\LT@tabularcr + \let\tabularnewline\\% \def\newpage{\noalign{\break}}% \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}% \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}% @@ -19766,20 +19331,42 @@ bidi implementation of tufte title] \let\@sharp##\let\protect\relax \begingroup \@mkpream{#2}% + \tbl_count_table_cols: \xdef\LT@bchunk{% + \tbl_inbetween_rows: \global\advance\c@LT@chunks\@ne \global\LT@rows\z@\setbox\z@\vbox\bgroup \LT@setprevdepth \tabskip\LTleft \noexpand\halign to\hsize\bgroup - \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}% + \tabskip\z@ \@arstrut + \UseTaggingSocket{tbl/row/begin}% + \tbl_init_cell_data_for_row: + \@preamble \tabskip\LTright \cr}% \endgroup \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols \LT@make@row \m@th\let\par\@empty - \everycr{}\lineskip\z@\baselineskip\z@ + \everycr{% + \noalign{% + \__tbl_trace:n {--longtable-->~chunk~row:~ \the\LT@rows \space + row:~ \the\g__tbl_row_int \space + column:~ \the\g__tbl_col_int + } + \tbl_if_row_was_started:T + { + \UseTaggingSocket{tbl/row/end} + \tbl_inbetween_rows: + } + \int_compare:nNnT \LT@rows < \LTchunksize + { \tbl_gincr_row_count: } % next is row about to start + }% + }% + \lineskip\z@\baselineskip\z@ \LT@bchunk} +\ExplSyntaxOff \def\LT@makecaption#1#2#3{% \LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{% + \reset@font \sbox\@tempboxa{\if@RTL\beginR\fi#1{#2: }#3\if@RTL\endR\fi}% \ifdim\wd\@tempboxa>\hsize #1{#2: }#3% @@ -19788,7 +19375,7 @@ bidi implementation of tufte title] \fi \endgraf\vskip\baselineskip}% \hss}}} -\@ifpackageloaded{caption}{% +\ApplyPatchCodeToPackage{caption}{% \renewcommand\LT@makecaption[3]{% \caption@LT@make{% \caption@LT@settype\LTcaptype @@ -19805,23 +19392,25 @@ bidi implementation of tufte title] \caption@@make{#2}{#3}\endgraf \caption@make@below \caption@end}}% -}{} +} \def\LT@startpbox#1{% - \bgroup\color@begingroup + \bgroup + \color@begingroup \let\@footnotetext\LT@p@ftntext \let\@LTRfootnotetext\LT@p@LTRftntext \let\@RTLfootnotetext\LT@p@RTLftntext \setlength\hsize{#1}% \@arrayparboxrestore - \vrule \@height \ht\@arstrutbox \@width \z@} -\def\LT@p@LTRftntext#1{% + \everypar{% + \vrule \@height \ht\@arstrutbox \@width \z@ + \everypar{}}% + } +\long\def\LT@p@LTRftntext#1{% \edef\@tempa{\the\LT@p@ftn\noexpand\LTRfootnotetext[\the\c@footnote]}% \global\LT@p@ftn\expandafter{\@tempa{#1}}}% -\def\LT@p@RTLftntext#1{% +\long\def\LT@p@RTLftntext#1{% \edef\@tempa{\the\LT@p@ftn\noexpand\RTLfootnotetext[\the\c@footnote]}% \global\LT@p@ftn\expandafter{\@tempa{#1}}}% - - \def\LT@output{% \ifnum\outputpenalty <-\@Mi \ifnum\outputpenalty > -\LT@end@pen @@ -19830,21 +19419,28 @@ bidi implementation of tufte title] \setbox\z@\vbox{\unvbox\@cclv}% \ifdim \ht\LT@lastfoot>\ht\LT@foot \dimen@\pagegoal + \advance\dimen@\ht\LT@foot \advance\dimen@-\ht\LT@lastfoot \ifdim\dimen@<\ht\z@ \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}% \@makecol \@outputpage + \global\vsize\@colroom \setbox\z@\vbox{\box\LT@head}% \fi \fi - \global\@colroom\@colht - \global\vsize\@colht - \vbox - {\if@RTLtab\hbox\bgroup\beginR\vbox\bgroup\fi\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi\if@RTLtab\egroup\endR\egroup\fi}% + \if@RTLtab\hbox\bgroup\beginR\vbox\bgroup\fi + \unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi + \UseTaggingSocket{tbl/longtable/foot} + \if@RTLtab\egroup\endR\egroup\fi \fi \else - \setbox\@cclv\vbox{\if@RTLtab\hbox\bgroup\beginR\vbox\bgroup\fi\unvbox\@cclv\copy\LT@foot\vss\if@RTLtab\egroup\endR\egroup\fi}% + \setbox\@cclv\vbox{% + \if@RTLtab\hbox\bgroup\beginR\vbox\bgroup\fi + \unvbox\@cclv\copy\LT@foot\vss + \if@RTLtab\egroup\endR\egroup\fi + }% + \UseTaggingSocket{tbl/longtable/foot} \@makecol \@outputpage \global\vsize\@colroom @@ -19857,7 +19453,8 @@ bidi implementation of tufte title] %\fi % \section{File \texttt{lscape-xetex-bidi.def}} % \begin{macrocode} -\ProvidesFile{lscape-xetex-bidi.def}[2022/07/14 v0.2 bidi adaptations for lscape package for XeTeX engine] +\ProvidesFile{lscape-xetex-bidi.def}[2025/01/03 v0.3 bidi adaptations for lscape package for XeTeX engine] +\RequirePackage{graphicx} \bidi@patchcmd{\LS@rot}{\rotatebox{90}{\box\@outputbox}}{% \if@RTL \rotatebox[origin=br]{-90}{\box\@outputbox}% @@ -19894,7 +19491,8 @@ bidi implementation of tufte title] %\fi % \section{File \texttt{mathtools-xetex-bidi.def}} % \begin{macrocode} -\ProvidesFile{mathtools-xetex-bidi.def}[2018/01/07 v0.1 bidi adaptations for mathtools package for XeTeX engine] +\ProvidesFile{mathtools-xetex-bidi.def}[2025/01/03 v0.2 bidi adaptations for mathtools package for XeTeX engine] +\RequirePackage{graphicx} \MHInternalSyntaxOn \def\MT_define_tagform:nwnn #1[#2]#3#4{ \@namedef{MT_tagform_#1:n}##1 @@ -19987,6 +19585,15 @@ bidi implementation of tufte title] % \end{macrocode} % \iffalse %</mdframed-xetex-bidi.def> +%<*media9-xetex-bidi.def> +%\fi +% \section{File \texttt{media9-xetex-bidi.def}} +% \begin{macrocode} +\ProvidesFile{media9-xetex-bidi.def}[2025/01/03 v0.1 bidi adaptations for media9 package for XeTeX engine] +\RequirePackage{bidi-media9} +% \end{macrocode} +% \iffalse +%</media9-xetex-bidi.def> %<*bidi-media9.sty> %\fi % \section{File \texttt{bidi-media9.sty}} @@ -20580,7 +20187,7 @@ bidi implementation of tufte title] %\fi % \section{File \texttt{memoir-xetex-bidi.def}} % \begin{macrocode} -\ProvidesFile{memoir-xetex-bidi.def}[2017/06/09 v0.6 bidi adaptations for memoir class for XeTeX engine] +\ProvidesFile{memoir-xetex-bidi.def}[2025/01/03 v0.7 bidi adaptations for memoir class for XeTeX engine] \renewcommand{\keepthetitle}{% \@bsmtitlempty \global\let\thanks\relax @@ -20690,7 +20297,7 @@ bidi implementation of tufte title] } % end of the \parbox \fi \vskip\belowcaptionskip} -\@ifpackageloaded{caption}{% +\ApplyPatchCodeToPackage{caption}{% \AtBeginPackage{caption}{ \ClassWarningNoLine{memoir}{% You are using the caption package with the memoir \MessageBreak @@ -20731,7 +20338,7 @@ bidi implementation of tufte title] \normalsize \@makecaption{\csname fnum@##1\endcsname}{\ignorespaces ##3}\par \endgroup} -}}{} +}} \renewenvironment{thebibliography}[1]{% \bibsection \if@RTL\if@LTRbibitems\@RTLfalse\else\fi\else\if@RTLbibitems\@RTLtrue\else\fi\fi @@ -21628,11 +21235,11 @@ bidi implementation of tufte title] % \end{macrocode} % \iffalse %</pgfcorescopes.code-xetex-bidi.def> -%<*pgfsys.code-xetex-bidi.def> +%<*pgfsys-xetex-bidi.def> %\fi -% \section{File \texttt{pgfsys.code-xetex-bidi.def}} +% \section{File \texttt{pgfsys-xetex-bidi.def}} % \begin{macrocode} -\ProvidesFile{pgfsys.code-xetex-bidi.def}[2022/06/01 v0.1 bidi adaptations for pgfsys.code.tex file for XeTeX engine] +\ProvidesFile{pgfsys-xetex-bidi.def}[2025/01/05 v0.1 bidi adaptations for pgfsys package for XeTeX engine] \def\pgfsys@shadingoutsidepgfpicture#1{% \beginL#1\endL% } @@ -21640,7 +21247,7 @@ bidi implementation of tufte title] % \end{macrocode} % \iffalse -%</pgfsys.code-xetex-bidi.def> +%</pgfsys-xetex-bidi.def> %<*picinpar-xetex-bidi.def> %\fi % \section{File \texttt{picinpar-xetex-bidi.def}} @@ -25464,13 +25071,39 @@ to\rtside{\box\bslice\hfil}} %\fi % \section{File \texttt{sidecap-xetex-bidi.def}} % \begin{macrocode} -\ProvidesFile{sidecap-xetex-bidi.def}[2010/08/01 v0.1 bidi adaptations for sidecap package for XeTeX engine] +\ProvidesFile{sidecap-xetex-bidi.def}[2025/01/03 v0.2 bidi adaptations for sidecap package for XeTeX engine] +\RequirePackage{ragged2e} \renewcommand*{\SC@FLOAT}[2]{\if@RTL% \isSC@ODD{{#1}\hspace{\sidecaptionsep}{#2}} {{#2}\hspace{\sidecaptionsep}{#1}}\else% \isSC@ODD{{#2}\hspace{\sidecaptionsep}{#1}} {{#1}\hspace{\sidecaptionsep}{#2}}\fi} \renewcommand*\SC@justify@caption{\if@RTL% \isSC@ODD{\RaggedLeft}{\RaggedRight}\else% \isSC@ODD{\RaggedRight}{\RaggedLeft}\fi} + +\@ifpackagewith{sidecap}{innercaption}{% +\if@RTL \renewcommand*{\SC@FLOAT}[2]{% + \isSC@ODD{{#2}\hspace{\sidecaptionsep}{#1}} {{#1}\hspace{\sidecaptionsep}{#2}}} + \renewcommand*\SC@justify@caption{% + \isSC@ODD{\RaggedRight}{\RaggedLeft}}\else + \renewcommand*{\SC@FLOAT}[2]{% + \isSC@ODD{{#1}\hspace{\sidecaptionsep}{#2}} {{#2}\hspace{\sidecaptionsep}{#1}}} + \renewcommand*\SC@justify@caption{% + \isSC@ODD{\RaggedLeft}{\RaggedRight}}\fi +}{} + +\@ifpackagewith{sidecap}{rightcaption}{% + \if@RTL\renewcommand*{\SC@FLOAT}[2]{{#1}\hspace{\sidecaptionsep}{#2}} + \def\SC@justify@caption{\RaggedLeft}\else% + \renewcommand*{\SC@FLOAT}[2]{{#2}\hspace{\sidecaptionsep}{#1}} + \def\SC@justify@caption{\RaggedRight}\fi% +}{} + +\@ifpackagewith{sidecap}{leftcaption}{% +\if@RTL \renewcommand*{\SC@FLOAT}[2]{{#2}\hspace{\sidecaptionsep}{#1}} + \def\SC@justify@caption{\RaggedRight}\else% + \renewcommand*{\SC@FLOAT}[2]{{#1}\hspace{\sidecaptionsep}{#2}} + \def\SC@justify@caption{\RaggedLeft}\fi% +}{} % \end{macrocode} % \iffalse %</sidecap-xetex-bidi.def> @@ -25895,9 +25528,10 @@ to\rtside{\box\bslice\hfil}} %\fi % \section{File \texttt{tocbibind-xetex-bidi.def}} % \begin{macrocode} -\ProvidesFile{tocbibind-xetex-bidi.def}[2017/06/09 v0.4 bidi adaptations for tocbibind package for XeTeX engine] +\ProvidesFile{tocbibind-xetex-bidi.def}[2025/01/03 v0.5 bidi adaptations for tocbibind package for XeTeX engine] +\IfClassLoadedT{memoir}{\endinput} \if@dotocbib - \@ifpackageloaded{natbib}{}{% natbib not loaded + \ApplyPatchIfPackageLoadedF{natbib}{% natbib not loaded \renewcommand{\bibsection}{\t@cb@bchapsec} \renewenvironment{thebibliography}[1]{% \bibsection @@ -25922,9 +25556,11 @@ to\rtside{\box\bslice\hfil}} {\@latex@warning{Empty `thebibliography' environment}}% \endlist} +\ApplyPatchCodeToPackage{chapterbib}{% \@ifpackagewith{chapterbib}{sectionbib}% {\renewcommand{\sectionbib}[2]{}}% - {} + {}% + } \fi \if@inltxdoc\else @@ -25983,7 +25619,8 @@ to\rtside{\box\bslice\hfil}} %\fi % \section{File \texttt{tocloft-xetex-bidi.def}} % \begin{macrocode} -\ProvidesFile{tocloft-xetex-bidi.def}[2023/08/02 v0.3 bidi adaptations for tocloft package for XeTeX engine] +\ProvidesFile{tocloft-xetex-bidi.def}[2025/01/03 v0.4 bidi adaptations for tocloft package for XeTeX engine] +\IfClassLoadedT{memoir}{\endinput} \renewcommand{\cftpnumalign}{\if@RTL l\else r\fi} \let\cftdot\@SepMark \if@cfthaspart @@ -27663,7 +27300,7 @@ to\rtside{\box\bslice\hfil}} %\fi % \section{File \texttt{latex-xetex-bidi.def}} % \begin{macrocode} -\ProvidesFile{latex-xetex-bidi.def}[2024/12/08 v1.5.1 bidi adaptations for `latex.ltx' for XeTeX engine] +\ProvidesFile{latex-xetex-bidi.def}[2025/01/03 v1.5.2 bidi adaptations for `latex.ltx' for XeTeX engine] \newcommand{\TeXXeTOn}{\TeXXeTstate\@ne} \newcommand{\TeXXeTOff}{\TeXXeTstate\z@} \TeXXeTOn @@ -27781,7 +27418,7 @@ to\rtside{\box\bslice\hfil}} \let\setLR=\setLTR \let\unsetRL=\setLTR \def\bidi@tabular@RTLcases{\let\@halignto\@empty\@bidi@tabular@RTLcases} -\@ifpackageloaded{array}{% +\ApplyPatchIfPackageLoaded{array}{% \def\@bidi@tabular@RTLcases{\@RTLtabtrue% \leavevmode \hbox \bgroup $\left.\col@sep\tabcolsep \let\d@llarbegin\begingroup @@ -28466,7 +28103,7 @@ $\@@underline{\hbox{#1}}\m@th$\relax\fi\fi} \let\bidi@saved@leqno=\leqno \def\eqno{\ifnum\predisplaydirection<\z@ \bidi@saved@leqno \else \bidi@saved@eqno \fi} \def\leqno{\ifnum\predisplaydirection<\z@ \bidi@saved@eqno \else \bidi@saved@leqno \fi} -\@ifpackageloaded{amsmath}{}{ +\ApplyPatchIfPackageLoadedF{amsmath}{ \def\@eqnnum{{\normalfont \normalcolor \if@RTL\beginR\fi(\theequation)\if@RTL\endR\fi}} } \input{footnote-xetex-bidi.def} @@ -28479,182 +28116,163 @@ $\@@underline{\hbox{#1}}\m@th$\relax\fi\fi} \if@bidi@csundef{@idxitem}{}{% \renewcommand\@idxitem{\par\hangindent \if@RTL-\fi40\p@}% } -\@ifpackageloaded{tocbasic}{\input{tocbasic-xetex-bidi.def}}{} -\@ifclassloaded{article}{\@ifclassloaded{svmult}{}{\input{article-xetex-bidi.def}}}{} -\@ifclassloaded{extarticle}{\input{extarticle-xetex-bidi.def}}{} -\@ifclassloaded{artikel1}{\input{artikel1-xetex-bidi.def}}{} -\@ifclassloaded{artikel2}{\input{artikel2-xetex-bidi.def}}{} -\@ifclassloaded{artikel3}{\input{artikel3-xetex-bidi.def}}{} -\@ifclassloaded{amsart}{\input{amsart-xetex-bidi.def}}{} -\@ifclassloaded{beamer}{\input{beamer-xetex-bidi.def}}{} -\@ifclassloaded{letter}{\input{letter-xetex-bidi.def}}{} -\@ifclassloaded{extletter}{\input{extletter-xetex-bidi.def}}{} -\@ifclassloaded{memoir}{\input{memoir-xetex-bidi.def}}{} -\@ifclassloaded{refrep}{\input{refrep-xetex-bidi.def}}{} -\@ifclassloaded{extreport}{\input{extreport-xetex-bidi.def}}{} -\@ifclassloaded{report}{\@ifpackageloaded{flowfram}{}{\input{report-xetex-bidi.def}}}{} -\@ifclassloaded{rapport1}{\input{rapport1-xetex-bidi.def}}{} -\@ifclassloaded{rapport3}{\input{rapport3-xetex-bidi.def}}{} -\@ifclassloaded{scrartcl}{\input{scrartcl-xetex-bidi.def}}{} -\@ifclassloaded{scrbook}{\input{scrbook-xetex-bidi.def}}{} -\@ifclassloaded{scrreprt}{\input{scrreprt-xetex-bidi.def}}{} -\@ifclassloaded{amsbook}{\input{amsbook-xetex-bidi.def}}{} -\@ifclassloaded{extbook}{\input{extbook-xetex-bidi.def}}{} -\@ifclassloaded{boek}{\input{boek-xetex-bidi.def}}{} -\@ifclassloaded{boek3}{\input{boek3-xetex-bidi.def}}{} -\@ifclassloaded{book}{\@ifpackageloaded{flowfram}{}{\input{book-xetex-bidi.def}}}{} -\@ifclassloaded{bookest}{\input{bookest-xetex-bidi.def}}{} -\@ifclassloaded{combine}{\input{combine-xetex-bidi.def}}{} -\@ifclassloaded{imsproc}{\input{imsproc-xetex-bidi.def}}{} -\@ifpackageloaded{amsmath}{}{% -\@iftagsloaded{leqno}{\input{leqno-xetex-bidi.def}}{} -\@iftagsloaded{fleqn}{\input{fleqn-xetex-bidi.def}}{} -} -\@ifpackageloaded{mathtools}{% - \RequirePackage{graphicx}% - \input{mathtools-xetex-bidi.def}% - }{} -\@ifpackageloaded{crop}{\RequirePackage{graphicx}}{} -\@ifpackageloaded{lscape}{\RequirePackage{graphicx}}{} -\@ifpackageloaded{sidecap}{\RequirePackage{ragged2e}}{} -\@ifpackageloaded{floatrow}{\RequirePackage{color}}{} -\@ifpackageloaded{algorithm2e}{\input{algorithm2e-xetex-bidi.def}}{} -\@ifpackagewith{algorithm2e}{algonl}{% -\renewcommand{\theAlgoLine}{\expandafter\csname the\algocf@float\endcsname\@SepMark\arabic{AlgoLine}}% -}{} -\@ifpackagewith{algorithm2e}{algopart}{\renewcommand{\algocf@within}{part}}{} -\@ifpackagewith{algorithm2e}{algochapter}{\renewcommand{\algocf@within}{chapter}}{} -\@ifpackagewith{algorithm2e}{algosection}{\renewcommand{\algocf@within}{section}}{} -\@ifpackageloaded{amsmath}{\input{amsmath-xetex-bidi.def}}{} -\@ifpackageloaded{amstext}{\input{amstext-xetex-bidi.def}}{} -\@ifpackageloaded{amsthm}{\input{amsthm-xetex-bidi.def}}{} -\@ifpackageloaded{breqn}{\input{breqn-xetex-bidi.def}}{} -\@ifpackageloaded{cals}{\input{cals-xetex-bidi.def}}{} -\@ifpackageloaded{caption}{\input{caption-xetex-bidi.def}}{} -\@ifpackageloaded{caption3}{\input{caption3-xetex-bidi.def}}{} -\@ifpackageloaded{floatrow}{\input{floatrow-xetex-bidi.def}}{} -\@ifpackageloaded{crop}{\@ifclassloaded{memoir}{}{\input{crop-xetex-bidi.def}}}{} -\@ifpackageloaded{color}{\input{color-xetex-bidi.def}}{} -\@ifpackageloaded{cutwin}{\input{cutwin-xetex-bidi.def}}{} -\@ifpackageloaded{cuted}{\input{cuted-xetex-bidi.def}}{} -\@ifpackageloaded{xcolor}{\input{xcolor-xetex-bidi.def}}{} -\@ifpackageloaded{colortbl}{\input{colortbl-xetex-bidi.def}}{} -\@ifpackageloaded{float}{\@ifpackageloaded{floatrow}{}{\input{float-xetex-bidi.def}}}{} -\@ifpackageloaded{flowfram}{\input{flowfram-xetex-bidi.def}}{} -\@ifpackageloaded{xltxtra}{\input{xltxtra-xetex-bidi.def}}{} -\@ifpackageloaded{wrapfig}{\input{wrapfig-xetex-bidi.def}}{} -\@ifpackageloaded{graphicx}{\input{graphicx-xetex-bidi.def}}{} -\@ifpackageloaded{geometry}{\input{geometry-xetex-bidi.def}}{} -\@ifpackageloaded{hvfloat}{\input{hvfloat-xetex-bidi.def}}{} -\@ifpackageloaded{ntheorem}{\input{ntheorem-xetex-bidi.def}}{} -\@ifpackageloaded{tabularx}{\input{tabularx-xetex-bidi.def}}{} -\@ifpackageloaded{longtable}{\input{longtable-xetex-bidi.def}}{} -\@ifpackageloaded{lscape}{\input{lscape-xetex-bidi.def}}{} -\@ifpackageloaded{hyperref}{\input{hyperref-xetex-bidi.def}}{} -\@ifpackageloaded{footnotebackref}{\input{footnotebackref-xetex-bidi.def}}{} -\@ifpackageloaded{ntheorem-hyper}{\input{ntheorem-hyper-xetex-bidi.def}}{} -\@ifpackageloaded{fancybox}{\input{fancybox-xetex-bidi.def}}{} -\@ifpackageloaded{fancyhdr}{\input{fancyhdr-xetex-bidi.def}}{} -\@ifpackageloaded{fix2col}{\input{fix2col-xetex-bidi.def}}{} -\@ifpackageloaded{ftnright}{\input{ftnright-xetex-bidi.def}}{} -\@ifpackageloaded{midfloat}{\input{midfloat-xetex-bidi.def}}{} -\@ifpackageloaded{draftwatermark}{\input{draftwatermark-xetex-bidi.def}}{} -\@ifpackageloaded{dblfnote}{\input{dblfnote-xetex-bidi.def}}{} -\@ifpackageloaded{diagbox}{\input{diagbox-xetex-bidi.def}}{} -\@ifpackageloaded{eso-pic}{\input{eso-pic-xetex-bidi.def}}{} -\@ifpackageloaded{empheq}{\input{empheq-xetex-bidi.def}}{} -\@ifpackageloaded{framed}{\input{framed-xetex-bidi.def}}{} -\@ifpackageloaded{overpic}{\input{overpic-xetex-bidi.def}}{} -\@ifpackageloaded{pdfbase}{\input{pdfbase-xetex-bidi.def}}{} -\@ifpackageloaded{pdflscape}{\input{pdflscape-xetex-bidi.def}}{} -\@ifpackageloaded{pdfpages}{\input{pdfpages-xetex-bidi.def}}{} -\@ifpackageloaded{lettrine}{\input{lettrine-xetex-bidi.def}}{} -\@ifpackageloaded{lineno}{\input{lineno-xetex-bidi.def}}{} -\@ifpackageloaded{listings}{\input{listings-xetex-bidi.def}}{} -\@ifpackageloaded{media9}{\RequirePackage{bidi-media9}}{} -\@iftexfileloaded{pstricks}{\input{pstricks-xetex-bidi.def}}{} -\@iftexfileloaded{pgfcorescopes.code}{\input{pgfcorescopes.code-xetex-bidi.def}}{} -\@ifpackageloaded{titlesec}{\input{titlesec-xetex-bidi.def}}{} -\@ifpackageloaded{titletoc}{\input{titletoc-xetex-bidi.def}}{} -\@ifpackageloaded{array}{\input{array-xetex-bidi.def}}{} -\@ifpackageloaded{sidecap}{\input{sidecap-xetex-bidi.def}}{} -\@ifpackagewith{sidecap}{innercaption}{% -\if@RTL \renewcommand*{\SC@FLOAT}[2]{% - \isSC@ODD{{#2}\hspace{\sidecaptionsep}{#1}} {{#1}\hspace{\sidecaptionsep}{#2}}} - \renewcommand*\SC@justify@caption{% - \isSC@ODD{\RaggedRight}{\RaggedLeft}}\else - \renewcommand*{\SC@FLOAT}[2]{% - \isSC@ODD{{#1}\hspace{\sidecaptionsep}{#2}} {{#2}\hspace{\sidecaptionsep}{#1}}} - \renewcommand*\SC@justify@caption{% - \isSC@ODD{\RaggedLeft}{\RaggedRight}}\fi -}{} -\@ifpackagewith{sidecap}{rightcaption}{% - \if@RTL\renewcommand*{\SC@FLOAT}[2]{{#1}\hspace{\sidecaptionsep}{#2}} - \def\SC@justify@caption{\RaggedLeft}\else% - \renewcommand*{\SC@FLOAT}[2]{{#2}\hspace{\sidecaptionsep}{#1}} - \def\SC@justify@caption{\RaggedRight}\fi% -}{} -\@ifpackagewith{sidecap}{leftcaption}{% -\if@RTL \renewcommand*{\SC@FLOAT}[2]{{#2}\hspace{\sidecaptionsep}{#1}} - \def\SC@justify@caption{\RaggedRight}\else% - \renewcommand*{\SC@FLOAT}[2]{{#1}\hspace{\sidecaptionsep}{#2}} - \def\SC@justify@caption{\RaggedLeft}\fi% -}{} -\@ifpackageloaded{soul}{\input{soul-xetex-bidi.def}}{} -\@ifpackageloaded{stabular}{\input{stabular-xetex-bidi.def}}{} -\@ifpackageloaded{subfigure}{\input{subfigure-xetex-bidi.def}}{} -\@ifpackageloaded{arydshln}{\input{arydshln-xetex-bidi.def}}{} -\@ifpackageloaded{mdframed}{\input{mdframed-xetex-bidi.def}}{} -\@ifpackageloaded{multicol}{\input{multicol-xetex-bidi.def}}{} -\@ifpackageloaded{adjmulticol}{\input{adjmulticol-xetex-bidi.def}}{} -\@ifpackageloaded{multienum}{\input{multienum-xetex-bidi.def}}{} -\@ifpackageloaded{natbib}{\input{natbib-xetex-bidi.def}}{} -\@ifpackageloaded{newfloat}{\input{newfloat-xetex-bidi.def}}{} -\@ifpackageloaded{nicematrix}{\input{nicematrix-xetex-bidi.def}}{} -\@ifpackageloaded{minitoc}{\input{minitoc-xetex-bidi.def}}{} -\@ifpackageloaded{pgfsys}{\input{pgfsys.code-xetex-bidi.def}}{} -\@ifpackageloaded{picinpar}{\input{picinpar-xetex-bidi.def}}{} -\@ifpackageloaded{quotchap}{\input{quotchap-xetex-bidi.def}}{} -\@ifpackageloaded{ragged2e}{\input{ragged2e-xetex-bidi.def}}{} -\@ifpackageloaded{rotating}{\input{rotating-xetex-bidi.def}}{} -\@ifpackageloaded{tabls}{\input{tabls-xetex-bidi.def}}{} -\@ifpackageloaded{tabulary}{\input{tabulary-xetex-bidi.def}}{} -\@ifpackageloaded{tcolorbox}{\input{tcolorbox-xetex-bidi.def}}{} -\@ifpackageloaded{tocstyle}{\input{tocstyle-xetex-bidi.def}}{} -\@ifpackageloaded{tocbibind}{\@ifclassloaded{memoir}{}{\input{tocbibind-xetex-bidi.def}}}{} -\@ifpackageloaded{tocloft}{\@ifclassloaded{memoir}{}{\input{tocloft-xetex-bidi.def}}}{} -\@ifdefinitionfileloaded{tc-xetex}{\input{tc-xetex-bidi.def}}{} -\@ifpackageloaded{todonotes}{\input{todonotes-xetex-bidi.def}}{} -\@ifpackageloaded{beamerbaseauxtemplates}{\input{beamerbaseauxtemplates-xetex-bidi.def}}{} -\@ifpackageloaded{beamerbaseboxes}{\input{beamerbaseboxes-xetex-bidi.def}}{} -\@ifpackageloaded{beamerbasecolor}{\input{beamerbasecolor-xetex-bidi.def}}{} -\@ifpackageloaded{beamerbasecompatibility}{\input{beamerbasecompatibility-xetex-bidi.def}}{} -\@ifpackageloaded{beamerbaseframecomponents}{\input{beamerbaseframecomponents-xetex-bidi.def}}{} -\@ifpackageloaded{beamerbaseframesize}{\input{beamerbaseframesize-xetex-bidi.def}}{} -\@ifpackageloaded{beamerbaselocalstructure}{\input{beamerbaselocalstructure-xetex-bidi.def}}{} -\@ifpackageloaded{beamerbasemisc}{\input{beamerbasemisc-xetex-bidi.def}}{} -\@ifpackageloaded{beamerbasenavigation}{\input{beamerbasenavigation-xetex-bidi.def}}{} -\@ifpackageloaded{beamerbaseoverlay}{\input{beamerbaseoverlay-xetex-bidi.def}}{} -\@ifpackageloaded{beamerinnerthemedefault}{\input{beamerinnerthemedefault-xetex-bidi.def}}{} -\@ifpackageloaded{beamerinnerthemecircles}{\input{beamerinnerthemecircles-xetex-bidi.def}}{} -\@ifpackageloaded{beamerinnerthemefocus}{\input{beamerinnerthemefocus-xetex-bidi.def}}{} -\@ifpackageloaded{beamerinnerthemeinmargin}{\input{beamerinnerthemeinmargin-xetex-bidi.def}}{} -\@ifpackageloaded{beamerinnerthememetropolis}{\input{beamerinnerthememetropolis-xetex-bidi.def}}{} -\@ifpackageloaded{beamerinnerthemerectangles}{\input{beamerinnerthemerectangles-xetex-bidi.def}}{} -\@ifpackageloaded{beamerinnerthemerounded}{\input{beamerinnerthemerounded-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthemedefault}{\input{beamerouterthemedefault-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthemefocus}{\input{beamerouterthemefocus-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthemeinfolines}{\input{beamerouterthemeinfolines-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthememetropolis}{\input{beamerouterthememetropolis-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthememiniframes}{\input{beamerouterthememiniframes-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthemesidebar}{\input{beamerouterthemesidebar-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthemesplit}{\input{beamerouterthemesplit-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthemeshadow}{\input{beamerouterthemeshadow-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthemesmoothbars}{\input{beamerouterthemesmoothbars-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthemesmoothtree}{\input{beamerouterthemesmoothtree-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthemetree}{\input{beamerouterthemetree-xetex-bidi.def}}{} -\@ifpackageloaded{beamerthemeHannover}{\input{beamerthemeHannover-xetex-bidi.def}}{} -\@ifpackageloaded{beamerthemeSingapore}{\input{beamerthemeSingapore-xetex-bidi.def}}{} + +\ApplyPatchToClassesIfPackageLoadedF{% + book, % + report % +}{flowfram} + +\ApplyPatchToPackageIfPackageLoadedF{float}{floatrow} + +\ApplyPatchToFilesIfPackageLoadedF{amsmath}{% + fleqn, % + leqno% +}[clo] + +\ApplyPatchToClasses{% + amsart, % + amsbook, % + article, % + artikel1, % + artikel2, % + artikel3, % + beamer, % + boek, % + boek3, % + bookest, % + combine, % + extbook, % + extletter, % + extarticle, % + extreport, % + imsproc, % + letter, % + memoir, % + rapport1, % + rapport3, % + refrep, % + scrartcl, % + scrbook, % + scrreprt % +} + +\ApplyPatchToPackages{% + adjmulticol, % + algorithm2e, % + amsmath, % + amstext, % + amsthm, % + arydshln, % + array, % + beamerbaseauxtemplates, % + beamerbaseboxes, % + beamerbasecolor, % + beamerbasecompatibility, % + beamerbaseframecomponents, % + beamerbaseframesize, % + beamerbaselocalstructure, % + beamerbasemisc, % + beamerbasenavigation, % + beamerbaseoverlay, % + beamerinnerthemecircles, % + beamerinnerthemedefault, % + beamerinnerthemefocus, % + beamerinnerthemeinmargin, % + beamerinnerthememetropolis, % + beamerinnerthemerectangles, % + beamerinnerthemerounded, % + beamerouterthemedefault, % + beamerouterthemefocus, % + beamerouterthemeinfolines, % + beamerouterthememetropolis, % + beamerouterthememiniframes, % + beamerouterthemesidebar, % + beamerouterthemesplit, % + beamerouterthemeshadow, % + beamerouterthemesmoothbars, % + beamerouterthemesmoothtree, % + beamerouterthemetree, % + beamerthemeHannover, % + beamerthemeSingapore, % + breqn, % + cals, % + caption, % + caption3, % + color, % + colortbl, % + crop, % + cuted, % + cutwin, % + dblfnote, % + diagbox, % + draftwatermark, % + eso-pic, % + empheq, % + fancybox, % + fancyhdr, % + fix2col, % + float, % + floatrow, % + flowfram, % + footnotebackref, % + framed, % + ftnright, % + geometry, % + graphicx, % + hvfloat, % + hyperref, % + lettrine, % + lineno, % + listings, % + longtable, % + lscape, % + mathtools, % + mdframed, % + media9, % + midfloat, % + minitoc, % + multicol, % + multienum, % + natbib, % + newfloat, % + nicematrix, % + ntheorem, % + ntheorem-hyper, % + overpic, % + pdfbase, % + pdflscape, % + pdfpages, % + pgfsys, % + picinpar, % + quotchap, % + ragged2e, % + rotating, % + sidecap, % + soul, % + stabular, % + subfigure, % + tabls, % + tabularx, % + tabulary, % + tcolorbox, % + titlesec, % + titletoc, % + tocbasic, % + tocbibind, % + tocloft, % + tocstyle, % + todonotes, % + wrapfig, % + xcolor, % + xltxtra % +} + +\ApplyPatchToFiles{% + pgfcorescopes.code, % + pstricks % +}[tex] + +\ApplyPatchToFile{tc-xetex} % \end{macrocode} % \iffalse %</latex-xetex-bidi.def> diff --git a/Master/texmf-dist/source/xelatex/bidi/bidi.ins b/Master/texmf-dist/source/xelatex/bidi/bidi.ins index 2cffc147059..29c5de9e3dd 100644 --- a/Master/texmf-dist/source/xelatex/bidi/bidi.ins +++ b/Master/texmf-dist/source/xelatex/bidi/bidi.ins @@ -147,11 +147,11 @@ \generate{\file{lettrine-xetex-bidi.def}{\from{\jobname.dtx}{table,lettrine-xetex-bidi.def}}} \generate{\file{lineno-xetex-bidi.def}{\from{\jobname.dtx}{table,lineno-xetex-bidi.def}}} \generate{\file{listings-xetex-bidi.def}{\from{\jobname.dtx}{table,listings-xetex-bidi.def}}} -\generate{\file{loadingorder-xetex-bidi.def}{\from{\jobname.dtx}{table,loadingorder-xetex-bidi.def}}} \generate{\file{longtable-xetex-bidi.def}{\from{\jobname.dtx}{table,longtable-xetex-bidi.def}}} \generate{\file{lscape-xetex-bidi.def}{\from{\jobname.dtx}{table,lscape-xetex-bidi.def}}} \generate{\file{mathtools-xetex-bidi.def}{\from{\jobname.dtx}{table,mathtools-xetex-bidi.def}}} \generate{\file{mdframed-xetex-bidi.def}{\from{\jobname.dtx}{table,mdframed-xetex-bidi.def}}} +\generate{\file{media9-xetex-bidi.def}{\from{\jobname.dtx}{table,media9-xetex-bidi.def}}} \generate{\file{bidi-media9.sty}{\from{\jobname.dtx}{table,bidi-media9.sty}}} \generate{\file{memoir-xetex-bidi.def}{\from{\jobname.dtx}{table,memoir-xetex-bidi.def}}} \generate{\file{midfloat-xetex-bidi.def}{\from{\jobname.dtx}{table,midfloat-xetex-bidi.def}}} @@ -168,7 +168,7 @@ \generate{\file{pdflscape-xetex-bidi.def}{\from{\jobname.dtx}{table,pdflscape-xetex-bidi.def}}} \generate{\file{pdfpages-xetex-bidi.def}{\from{\jobname.dtx}{table,pdfpages-xetex-bidi.def}}} \generate{\file{pgfcorescopes.code-xetex-bidi.def}{\from{\jobname.dtx}{table,pgfcorescopes.code-xetex-bidi.def}}} -\generate{\file{pgfsys.code-xetex-bidi.def}{\from{\jobname.dtx}{table,pgfsys.code-xetex-bidi.def}}} +\generate{\file{pgfsys-xetex-bidi.def}{\from{\jobname.dtx}{table,pgfsys-xetex-bidi.def}}} \generate{\file{picinpar-xetex-bidi.def}{\from{\jobname.dtx}{table,picinpar-xetex-bidi.def}}} \generate{\file{plain-xetex-bidi.def}{\from{\jobname.dtx}{table,plain-xetex-bidi.def}}} \generate{\file{pstricks-xetex-bidi.def}{\from{\jobname.dtx}{table,pstricks-xetex-bidi.def}}} diff --git a/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-intro.ltx b/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-intro.ltx index 9b1584c6611..9e04b25b64f 100644 --- a/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-intro.ltx +++ b/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-intro.ltx @@ -25,7 +25,7 @@ If you use \textsf{\XePersian} package to write any input \TeX\ document, and th * Copyright (c) 2008--2025 Vafa Khalighi * Copyright (c) 2018--2020 bidi-tex GitHub Organization * -* v25.8 (Release Mount Alvand), 2025/01/01 +* v26.0 (Release Persian Gate), 2025/01/06 * * License: LaTeX Project Public License, version * 1.3c or higher (your choice) diff --git a/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-title.ltx b/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-title.ltx index 91bde7d40d9..a7eaf59d8c8 100644 --- a/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-title.ltx +++ b/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-title.ltx @@ -3,7 +3,7 @@ \begin{document} \title{\textcolor{xepersianblue}{\Huge The \textsf{\XePersian} \textit{Package}}\\ \LARGE Persian for \LaTeXe, using {\XeTeX} engine\\[5pt] -\large User documentation for \textcolor{xepersianblue}{version 25.8}} +\large User documentation for \textcolor{xepersianblue}{version 26.0}} \author{Vafa Khalighi\thanks{Thanks to the bidi-tex GitHub organization consisted of David Carlisle and other members of the {\LaTeX} team for maintaining the package in the period 2018--2020.}} \setcounter{page}{0} \thispagestyle{empty} @@ -13,7 +13,7 @@ \textcolor{xepersianblue}{\Huge The \textsf{\XePersian} \textit{Package}} \Large -User documentation for \textcolor{xepersianblue}{version 25.8}} +User documentation for \textcolor{xepersianblue}{version 26.0}} \vskip 0pt plus 3fill \textit{\large to my Master, \textbf{Ferdowsi The Great}} diff --git a/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc.ltx b/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc.ltx index 25e953db29f..cb43b0b0e4a 100644 --- a/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc.ltx +++ b/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc.ltx @@ -1,7 +1,7 @@ \documentclass{ltxdoc} \input{xepersian-doc-preamble.ltx} \hypersetup{% - pdftitle={User documentation for version 25.8 of the XePersian + pdftitle={User documentation for version 26.0 of the XePersian package}% } \begin{document} diff --git a/Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx b/Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx index 5002a90c056..8171958ad5c 100644 --- a/Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx +++ b/Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx @@ -5,7 +5,7 @@ %<*readme> ____________________ The XePersian package -v25.8 +v26.0 The xepersian package provides a convenient interface for typesetting Persian and English texts in LaTeX, using XeTeX @@ -31,7 +31,7 @@ also appear in the Discussions space under the Announcements category. -Current version release date: 2025/01/01 +Current version release date: 2025/01/06 ___________________________________________ Vafa Khalighi @@ -73,53 +73,52 @@ by Vafa Khalighi. \endpreamble \askforoverwritefalse \let\MetaPrefix\DoubleperCent -\generate{\file{algorithmic-xepersian.def}{\from{\jobname.dtx}{table,algorithmic-xepersian.def}}} -\generate{\file{algorithm-xepersian.def}{\from{\jobname.dtx}{table,algorithm-xepersian.def}}} -\generate{\file{amsart-xepersian.def}{\from{\jobname.dtx}{table,amsart-xepersian.def}}} -\generate{\file{amsbook-xepersian.def}{\from{\jobname.dtx}{table,amsbook-xepersian.def}}} -\generate{\file{appendix-xepersian.def}{\from{\jobname.dtx}{table,appendix-xepersian.def}}} -\generate{\file{article-xepersian.def}{\from{\jobname.dtx}{table,article-xepersian.def}}} -\generate{\file{artikel1-xepersian.def}{\from{\jobname.dtx}{table,artikel1-xepersian.def}}} -\generate{\file{artikel2-xepersian.def}{\from{\jobname.dtx}{table,artikel2-xepersian.def}}} -\generate{\file{artikel3-xepersian.def}{\from{\jobname.dtx}{table,artikel3-xepersian.def}}} -\generate{\file{backref-xepersian.def}{\from{\jobname.dtx}{table,backref-xepersian.def}}} -\generate{\file{beamer-xepersian.def}{\from{\jobname.dtx}{table,beamer-xepersian.def}}} -\generate{\file{beamerbasetranslator-xepersian.def}{\from{\jobname.dtx}{table,beamerbasetranslator-xepersian.def}}} -\generate{\file{bidituftesidenote-xepersian.def}{\from{\jobname.dtx}{table,bidituftesidenote-xepersian.def}}} -\generate{\file{bidimoderncv-xepersian.def}{\from{\jobname.dtx}{table,bidimoderncv-xepersian.def}}} -\generate{\file{boek3-xepersian.def}{\from{\jobname.dtx}{table,boek3-xepersian.def}}} -\generate{\file{boek-xepersian.def}{\from{\jobname.dtx}{table,boek-xepersian.def}}} -\generate{\file{bookest-xepersian.def}{\from{\jobname.dtx}{table,bookest-xepersian.def}}} -\generate{\file{book-xepersian.def}{\from{\jobname.dtx}{table,book-xepersian.def}}} -\generate{\file{breqn-xepersian.def}{\from{\jobname.dtx}{table,breqn-xepersian.def}}} -\generate{\file{latex-localise-commands-xepersian.def}{\from{\jobname.dtx}{table,latex-localise-commands-xepersian.def}}} -\generate{\file{color-localise-xepersian.def}{\from{\jobname.dtx}{table,color-localise-xepersian.def}}} -\generate{\file{xepersian-localise-commands-xepersian.def}{\from{\jobname.dtx}{table,xepersian-localise-commands-xepersian.def}}} -\generate{\file{enumerate-xepersian.def}{\from{\jobname.dtx}{table,enumerate-xepersian.def}}} -\generate{\file{enumitem-xepersian.def}{\from{\jobname.dtx}{table,enumitem-xepersian.def}}} -\generate{\file{latex-localise-environments-xepersian.def}{\from{\jobname.dtx}{table,latex-localise-environments-xepersian.def}}} -\generate{\file{xepersian-localise-environments-xepersian.def}{\from{\jobname.dtx}{table,xepersian-localise-environments-xepersian.def}}} -\generate{\file{extarticle-xepersian.def}{\from{\jobname.dtx}{table,extarticle-xepersian.def}}} -\generate{\file{extbook-xepersian.def}{\from{\jobname.dtx}{table,extbook-xepersian.def}}} -\generate{\file{extrafootnotefeatures-xepersian.def}{\from{\jobname.dtx}{table,extrafootnotefeatures-xepersian.def}}} -\generate{\file{extreport-xepersian.def}{\from{\jobname.dtx}{table,extreport-xepersian.def}}} -\generate{\file{fancyref-xepersian.def}{\from{\jobname.dtx}{table,fancyref-xepersian.def}}} -\generate{\file{footnote-xepersian.def}{\from{\jobname.dtx}{table,footnote-xepersian.def}}} -\generate{\file{framed-xepersian.def}{\from{\jobname.dtx}{table,framed-xepersian.def}}} -\generate{\file{glossaries-xepersian.def}{\from{\jobname.dtx}{table,glossaries-xepersian.def}}} -\generate{\file{hyperref-xepersian.def}{\from{\jobname.dtx}{table,hyperref-xepersian.def}}} -\generate{\file{imsproc-xepersian.def}{\from{\jobname.dtx}{table,imsproc-xepersian.def}}} -\generate{\file{kashida-xepersian.def}{\from{\jobname.dtx}{table,kashida-xepersian.def}}} -\generate{\file{listings-xepersian.def}{\from{\jobname.dtx}{table,listings-xepersian.def}}} -\generate{\file{loadingorder-xepersian.def}{\from{\jobname.dtx}{table,loadingorder-xepersian.def}}} -\generate{\file{localise-xepersian.def}{\from{\jobname.dtx}{table,localise-xepersian.def}}} -\generate{\file{memoir-xepersian.def}{\from{\jobname.dtx}{table,memoir-xepersian.def}}} -\generate{\file{latex-localise-messages-xepersian.def}{\from{\jobname.dtx}{table,latex-localise-messages-xepersian.def}}} -\generate{\file{minitoc-xepersian.def}{\from{\jobname.dtx}{table,minitoc-xepersian.def}}} -\generate{\file{latex-localise-misc-xepersian.def}{\from{\jobname.dtx}{table,latex-localise-misc-xepersian.def}}} -\generate{\file{natbib-xepersian.def}{\from{\jobname.dtx}{table,natbib-xepersian.def}}} -\generate{\file{packages-localise-xepersian.def}{\from{\jobname.dtx}{table,packages-localise-xepersian.def}}} -\generate{\file{url-xepersian.def}{\from{\jobname.dtx}{table,url-xepersian.def}}} +\generate{\file{algorithmic-xetex-xepersian.def}{\from{\jobname.dtx}{table,algorithmic-xetex-xepersian.def}}} +\generate{\file{algorithm-xetex-xepersian.def}{\from{\jobname.dtx}{table,algorithm-xetex-xepersian.def}}} +\generate{\file{amsart-xetex-xepersian.def}{\from{\jobname.dtx}{table,amsart-xetex-xepersian.def}}} +\generate{\file{amsbook-xetex-xepersian.def}{\from{\jobname.dtx}{table,amsbook-xetex-xepersian.def}}} +\generate{\file{appendix-xetex-xepersian.def}{\from{\jobname.dtx}{table,appendix-xetex-xepersian.def}}} +\generate{\file{article-xetex-xepersian.def}{\from{\jobname.dtx}{table,article-xetex-xepersian.def}}} +\generate{\file{artikel1-xetex-xepersian.def}{\from{\jobname.dtx}{table,artikel1-xetex-xepersian.def}}} +\generate{\file{artikel2-xetex-xepersian.def}{\from{\jobname.dtx}{table,artikel2-xetex-xepersian.def}}} +\generate{\file{artikel3-xetex-xepersian.def}{\from{\jobname.dtx}{table,artikel3-xetex-xepersian.def}}} +\generate{\file{backref-xetex-xepersian.def}{\from{\jobname.dtx}{table,backref-xetex-xepersian.def}}} +\generate{\file{beamer-xetex-xepersian.def}{\from{\jobname.dtx}{table,beamer-xetex-xepersian.def}}} +\generate{\file{beamerbasetranslator-xetex-xepersian.def}{\from{\jobname.dtx}{table,beamerbasetranslator-xetex-xepersian.def}}} +\generate{\file{bidituftesidenote-xetex-xepersian.def}{\from{\jobname.dtx}{table,bidituftesidenote-xetex-xepersian.def}}} +\generate{\file{bidimoderncv-xetex-xepersian.def}{\from{\jobname.dtx}{table,bidimoderncv-xetex-xepersian.def}}} +\generate{\file{boek3-xetex-xepersian.def}{\from{\jobname.dtx}{table,boek3-xetex-xepersian.def}}} +\generate{\file{boek-xetex-xepersian.def}{\from{\jobname.dtx}{table,boek-xetex-xepersian.def}}} +\generate{\file{bookest-xetex-xepersian.def}{\from{\jobname.dtx}{table,bookest-xetex-xepersian.def}}} +\generate{\file{book-xetex-xepersian.def}{\from{\jobname.dtx}{table,book-xetex-xepersian.def}}} +\generate{\file{breqn-xetex-xepersian.def}{\from{\jobname.dtx}{table,breqn-xetex-xepersian.def}}} +\generate{\file{latex-localize-commands-xetex-xepersian.def}{\from{\jobname.dtx}{table,latex-localize-commands-xetex-xepersian.def}}} +\generate{\file{color-localize-xetex-xepersian.def}{\from{\jobname.dtx}{table,color-localize-xetex-xepersian.def}}} +\generate{\file{xepersian-localize-commands-xetex-xepersian.def}{\from{\jobname.dtx}{table,xepersian-localize-commands-xetex-xepersian.def}}} +\generate{\file{enumerate-xetex-xepersian.def}{\from{\jobname.dtx}{table,enumerate-xetex-xepersian.def}}} +\generate{\file{enumitem-xetex-xepersian.def}{\from{\jobname.dtx}{table,enumitem-xetex-xepersian.def}}} +\generate{\file{latex-localize-environments-xetex-xepersian.def}{\from{\jobname.dtx}{table,latex-localize-environments-xetex-xepersian.def}}} +\generate{\file{xepersian-localize-environments-xetex-xepersian.def}{\from{\jobname.dtx}{table,xepersian-localize-environments-xetex-xepersian.def}}} +\generate{\file{extarticle-xetex-xepersian.def}{\from{\jobname.dtx}{table,extarticle-xetex-xepersian.def}}} +\generate{\file{extbook-xetex-xepersian.def}{\from{\jobname.dtx}{table,extbook-xetex-xepersian.def}}} +\generate{\file{extrafootnotefeatures-xetex-bidi-xetex-xepersian.def}{\from{\jobname.dtx}{table,extrafootnotefeatures-xetex-bidi-xetex-xepersian.def}}} +\generate{\file{extreport-xetex-xepersian.def}{\from{\jobname.dtx}{table,extreport-xetex-xepersian.def}}} +\generate{\file{fancyref-xetex-xepersian.def}{\from{\jobname.dtx}{table,fancyref-xetex-xepersian.def}}} +\generate{\file{footnote-xetex-bidi-xetex-xepersian.def}{\from{\jobname.dtx}{table,footnote-xetex-bidi-xetex-xepersian.def}}} +\generate{\file{framed-xetex-xepersian.def}{\from{\jobname.dtx}{table,framed-xetex-xepersian.def}}} +\generate{\file{glossaries-xetex-xepersian.def}{\from{\jobname.dtx}{table,glossaries-xetex-xepersian.def}}} +\generate{\file{hyperref-xetex-xepersian.def}{\from{\jobname.dtx}{table,hyperref-xetex-xepersian.def}}} +\generate{\file{imsproc-xetex-xepersian.def}{\from{\jobname.dtx}{table,imsproc-xetex-xepersian.def}}} +\generate{\file{kashida-xetex-xepersian.def}{\from{\jobname.dtx}{table,kashida-xetex-xepersian.def}}} +\generate{\file{listings-xetex-xepersian.def}{\from{\jobname.dtx}{table,listings-xetex-xepersian.def}}} +\generate{\file{localize-xetex-xepersian.def}{\from{\jobname.dtx}{table,localize-xetex-xepersian.def}}} +\generate{\file{memoir-xetex-xepersian.def}{\from{\jobname.dtx}{table,memoir-xetex-xepersian.def}}} +\generate{\file{latex-localize-messages-xetex-xepersian.def}{\from{\jobname.dtx}{table,latex-localize-messages-xetex-xepersian.def}}} +\generate{\file{minitoc-xetex-xepersian.def}{\from{\jobname.dtx}{table,minitoc-xetex-xepersian.def}}} +\generate{\file{latex-localize-misc-xetex-xepersian.def}{\from{\jobname.dtx}{table,latex-localize-misc-xetex-xepersian.def}}} +\generate{\file{natbib-xetex-xepersian.def}{\from{\jobname.dtx}{table,natbib-xetex-xepersian.def}}} +\generate{\file{packages-localize-xetex-xepersian.def}{\from{\jobname.dtx}{table,packages-localize-xetex-xepersian.def}}} +\generate{\file{url-xetex-xepersian.def}{\from{\jobname.dtx}{table,url-xetex-xepersian.def}}} \def\MetaPrefix{;;} \def\mapping@postamble{% \MetaPrefix ^^J% @@ -130,17 +129,17 @@ by Vafa Khalighi. \generate{\file{persian-tex-text-nonumbers.map}{\from{\jobname.dtx}{persian-tex-text-nonumbers.map}}} \let\MetaPrefix\DoubleperCent \usepostamble\org@postamble -\generate{\file{rapport1-xepersian.def}{\from{\jobname.dtx}{table,rapport1-xepersian.def}}} -\generate{\file{rapport3-xepersian.def}{\from{\jobname.dtx}{table,rapport3-xepersian.def}}} -\generate{\file{refrep-xepersian.def}{\from{\jobname.dtx}{table,refrep-xepersian.def}}} -\generate{\file{report-xepersian.def}{\from{\jobname.dtx}{table,report-xepersian.def}}} -\generate{\file{scrartcl-xepersian.def}{\from{\jobname.dtx}{table,scrartcl-xepersian.def}}} -\generate{\file{scrbook-xepersian.def}{\from{\jobname.dtx}{table,scrbook-xepersian.def}}} -\generate{\file{scrreprt-xepersian.def}{\from{\jobname.dtx}{table,scrreprt-xepersian.def}}} -\generate{\file{soul-xepersian.def}{\from{\jobname.dtx}{table,soul-xepersian.def}}} -\generate{\file{tkz-linknodes-xepersian.def}{\from{\jobname.dtx}{table,tkz-linknodes-xepersian.def}}} -\generate{\file{tocloft-xepersian.def}{\from{\jobname.dtx}{table,tocloft-xepersian.def}}} -\generate{\file{varioref-xepersian.def}{\from{\jobname.dtx}{table,varioref-xepersian.def}}} +\generate{\file{rapport1-xetex-xepersian.def}{\from{\jobname.dtx}{table,rapport1-xetex-xepersian.def}}} +\generate{\file{rapport3-xetex-xepersian.def}{\from{\jobname.dtx}{table,rapport3-xetex-xepersian.def}}} +\generate{\file{refrep-xetex-xepersian.def}{\from{\jobname.dtx}{table,refrep-xetex-xepersian.def}}} +\generate{\file{report-xetex-xepersian.def}{\from{\jobname.dtx}{table,report-xetex-xepersian.def}}} +\generate{\file{scrartcl-xetex-xepersian.def}{\from{\jobname.dtx}{table,scrartcl-xetex-xepersian.def}}} +\generate{\file{scrbook-xetex-xepersian.def}{\from{\jobname.dtx}{table,scrbook-xetex-xepersian.def}}} +\generate{\file{scrreprt-xetex-xepersian.def}{\from{\jobname.dtx}{table,scrreprt-xetex-xepersian.def}}} +\generate{\file{soul-xetex-xepersian.def}{\from{\jobname.dtx}{table,soul-xetex-xepersian.def}}} +\generate{\file{tkz-linknodes-xetex-xepersian.def}{\from{\jobname.dtx}{table,tkz-linknodes-xetex-xepersian.def}}} +\generate{\file{tocloft-xetex-xepersian.def}{\from{\jobname.dtx}{table,tocloft-xetex-xepersian.def}}} +\generate{\file{varioref-xetex-xepersian.def}{\from{\jobname.dtx}{table,varioref-xetex-xepersian.def}}} \generate{\file{xepersian.sty}{\from{\jobname.dtx}{table,xepersian.sty}}} \generate{\file{xepersian-magazine.cls}{\from{\jobname.dtx}{table,xepersian-magazine.cls}}} \generate{\file{xepersian-mathdigitspec.sty}{\from{\jobname.dtx}{table,xepersian-mathdigitspec.sty}}} @@ -168,7 +167,7 @@ by Vafa Khalighi. \documentclass{ltxdoc} \input{xepersian-doc-preamble.ltx} \hypersetup{% - pdftitle={Source documentation for version 25.8 of the XePersian + pdftitle={Source documentation for version 26.0 of the XePersian package}% } \EnableCrossrefs @@ -187,7 +186,7 @@ by Vafa Khalighi. % \GetFileInfo{\jobname.dtx} % \title{\textcolor{xepersianblue}{\Huge The \textsf{\XePersian} \textit{Package}}\\ %\LARGE Persian for \LaTeXe, using {\XeTeX} engine\\[5pt] -%\large Source documentation for \textcolor{xepersianblue}{version 25.8}} +%\large Source documentation for \textcolor{xepersianblue}{version 26.0}} % \author{Vafa Khalighi\thanks{Thanks to the bidi-tex GitHub organization consisted of David Carlisle and other members of the {\LaTeX} team for maintaining the package in the period 2018--2020.}} %\setcounter{page}{0} %\thispagestyle{empty} @@ -197,7 +196,7 @@ by Vafa Khalighi. %\textcolor{xepersianblue}{\Huge The \textsf{\XePersian} \textit{Package}} % %\Large -%Source documentation for \textcolor{xepersianblue}{version 25.8}} +%Source documentation for \textcolor{xepersianblue}{version 26.0}} % %\vskip 0pt plus 3fill %\textit{\large to my Master, \textbf{Ferdowsi The Great}} @@ -241,11 +240,11 @@ by Vafa Khalighi. %\maketitle % \tableofcontents % \StopEventually{} -% \section{File \texttt{algorithmic-xepersian.def}} +% \section{File \texttt{algorithmic-xetex-xepersian.def}} %\iffalse %<*table> %\fi -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -264,35 +263,35 @@ by Vafa Khalighi. %% % \iffalse %</table> -%<*algorithmic-xepersian.def> +%<*algorithmic-xetex-xepersian.def> %\fi % % % % \begin{macrocode} -\ProvidesFile{algorithmic-xepersian.def}[2010/07/25 v0.2 adaptations for algorithmic package] +\ProvidesFile{algorithmic-xetex-xepersian.def}[2010/07/25 v0.2 xepersian adaptations for algorithmic package for XeTeX engine] \def\algorithmicrequire{\if@RTL\textbf{ورودی:}\else\textbf{Require:}\fi} \def\algorithmicensure{\if@RTL\textbf{خروجی:}\else\textbf{Ensure:}\fi} % \end{macrocode} % %\iffalse -%</algorithmic-xepersian.def> -%<*algorithm-xepersian.def> +%</algorithmic-xetex-xepersian.def> +%<*algorithm-xetex-xepersian.def> %\fi -% \section{File \texttt{algorithm-xepersian.def}} +% \section{File \texttt{algorithm-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{algorithm-xepersian.def}[2010/07/25 v0.2 adaptations for algorithm package] +\ProvidesFile{algorithm-xetex-xepersian.def}[2010/07/25 v0.2 xepersian adaptations for algorithm package for XeTeX engine] \def\ALG@name{\if@RTL الگوریتم\else Algorithm\fi} \def\ALGS@name{الگوریتمها} \def\listalgorithmname{\if@RTL فهرست \ALGS@name\else List of \ALG@name s\fi} % \end{macrocode} % \iffalse -%</algorithm-xepersian.def> -%<*amsart-xepersian.def> +%</algorithm-xetex-xepersian.def> +%<*amsart-xetex-xepersian.def> %\fi -% \section{File \texttt{amsart-xepersian.def}} +% \section{File \texttt{amsart-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{amsart-xepersian.def}[2017/02/04 v0.4 adaptations for amsart class] +\ProvidesFile{amsart-xetex-xepersian.def}[2017/02/04 v0.4 xepersian adaptations for amsart class for XeTeX engine] \renewcommand \thepart {\@tartibi\c@part} \def\appendix{\par\c@section\z@ \c@subsection\z@ \let\sectionname\appendixname @@ -300,12 +299,12 @@ by Vafa Khalighi. % \end{macrocode} % \iffalse -%</amsart-xepersian.def> -%<*amsbook-xepersian.def> +%</amsart-xetex-xepersian.def> +%<*amsbook-xetex-xepersian.def> %\fi -% \section{File \texttt{amsbook-xepersian.def}} +% \section{File \texttt{amsbook-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{amsbook-xepersian.def}[2017/02/04 v0.5 adaptations for amsbook class] +\ProvidesFile{amsbook-xetex-xepersian.def}[2017/02/04 v0.5 xepersian adaptations for amsbook class for XeTeX engine] \def\frontmatter{\cleardoublepage\pagenumbering{harfi}} \renewcommand \thepart {\@tartibi\c@part} \def\appendix{\par @@ -316,12 +315,12 @@ by Vafa Khalighi. % \end{macrocode} % \iffalse -%</amsbook-xepersian.def> -%<*appendix-xepersian.def> +%</amsbook-xetex-xepersian.def> +%<*appendix-xetex-xepersian.def> %\fi -% \section{File \texttt{appendix-xepersian.def}} +% \section{File \texttt{appendix-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{appendix-xepersian.def}[2015/02/01 v0.1 adaptations for appendix package] +\ProvidesFile{appendix-xetex-xepersian.def}[2015/02/01 v0.1 xepersian adaptations for appendix package for XeTeX engine] \renewcommand{\@resets@pp}{\par \@ppsavesec \stepcounter{@pps} @@ -338,12 +337,12 @@ by Vafa Khalighi. } % \end{macrocode} % \iffalse -%</appendix-xepersian.def> -%<*article-xepersian.def> +%</appendix-xetex-xepersian.def> +%<*article-xetex-xepersian.def> %\fi -% \section{File \texttt{article-xepersian.def}} +% \section{File \texttt{article-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{article-xepersian.def}[2010/07/25 v0.2 adaptations for standard article class] +\ProvidesFile{article-xetex-xepersian.def}[2010/07/25 v0.2 xepersian adaptations for standard article class for XeTeX engine] \renewcommand \thepart {\@tartibi\c@part} \renewcommand\appendix{\par \setcounter{section}{0}% @@ -351,12 +350,12 @@ by Vafa Khalighi. \gdef\thesection{\@harfi\c@section}} % \end{macrocode} % \iffalse -%</article-xepersian.def> -%<*artikel1-xepersian.def> +%</article-xetex-xepersian.def> +%<*artikel1-xetex-xepersian.def> %\fi -% \section{File \texttt{artikel1-xepersian.def}} +% \section{File \texttt{artikel1-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{artikel1-xepersian.def}[2010/07/25 v0.1 adaptations for artikel1 class] +\ProvidesFile{artikel1-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for artikel1 class for XeTeX engine] \renewcommand*\thepart{\@tartibi\c@part} \renewcommand*\appendix{\par \setcounter{section}{0}% @@ -364,12 +363,12 @@ by Vafa Khalighi. \gdef\thesection{\@harfi\c@section}} % \end{macrocode} % \iffalse -%</artikel1-xepersian.def> -%<*artikel2-xepersian.def> +%</artikel1-xetex-xepersian.def> +%<*artikel2-xetex-xepersian.def> %\fi -% \section{File \texttt{artikel2-xepersian.def}} +% \section{File \texttt{artikel2-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{artikel2-xepersian.def}[2010/07/25 v0.1 adaptations for artikel2 class] +\ProvidesFile{artikel2-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for artikel2 class for XeTeX engine] \renewcommand*\thepart{\@tartibi\c@part} \renewcommand*\appendix{\par \setcounter{section}{0}% @@ -377,12 +376,12 @@ by Vafa Khalighi. \gdef\thesection{\@harfi\c@section}} % \end{macrocode} % \iffalse -%</artikel2-xepersian.def> -%<*artikel3-xepersian.def> +%</artikel2-xetex-xepersian.def> +%<*artikel3-xetex-xepersian.def> %\fi -% \section{File \texttt{artikel3-xepersian.def}} +% \section{File \texttt{artikel3-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{artikel3-xepersian.def}[2010/07/25 v0.1 adaptations for artikel3 class] +\ProvidesFile{artikel3-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for artikel3 class for XeTeX engine] \renewcommand*\thepart{\@tartibi\c@part} \renewcommand*\appendix{\par \setcounter{section}{0}% @@ -390,12 +389,12 @@ by Vafa Khalighi. \gdef\thesection{\@harfi\c@section}} % \end{macrocode} % \iffalse -%</artikel3-xepersian.def> -%<*backref-xepersian.def> +%</artikel3-xetex-xepersian.def> +%<*backref-xetex-xepersian.def> %\fi -% \section{File \texttt{backref-xepersian.def}} +% \section{File \texttt{backref-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{backref-xepersian.def}[2010/07/25 v0.1 adaptations for backref package] +\ProvidesFile{backref-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for backref package for XeTeX engine] \def\backrefpagesname{\if@RTL صفحات\else pages\fi} \def\BR@Latincitex[#1]#2{% \BRorg@Latincitex[{#1}]{#2}% @@ -417,12 +416,12 @@ by Vafa Khalighi. }% % \end{macrocode} % \iffalse -%</backref-xepersian.def> -%<*beamer-xepersian.def> +%</backref-xetex-xepersian.def> +%<*beamer-xetex-xepersian.def> %\fi -% \section{File \texttt{beamer-xepersian.def}} +% \section{File \texttt{beamer-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{beamer-xepersian.def}[2022/06/27 v0.2 xepersian changes to beamer class] +\ProvidesFile{beamer-xetex-xepersian.def}[2022/06/27 v0.2 xepersian adaptations for beamer class for XeTeX engine] \usefonttheme[stillsansserifmath]{serif} \renewcommand*{\bidi@beamer@today}{% @@ -431,12 +430,12 @@ by Vafa Khalighi. % \end{macrocode} % \iffalse -%</beamer-xepersian.def> -%<*beamerbasetranslator-xepersian.def> +%</beamer-xetex-xepersian.def> +%<*beamerbasetranslator-xetex-xepersian.def> %\fi -% \section{File \texttt{beamerbasetranslator-xepersian.def}} +% \section{File \texttt{beamerbasetranslator-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{beamerbasetranslator-xepersian.def}[2022/06/27 v0.3 xepersian changes to beamerbasetranslator package] +\ProvidesFile{beamerbasetranslator-xetex-xepersian.def}[2022/06/27 v0.3 xepersian adaptations for beamerbasetranslator package for XeTeX engine] \newcommand*{\ProvidePersianTranslation}[2]{% \providetranslation{#1}{\ifRtoL{#2}{#1}}% } @@ -460,12 +459,12 @@ by Vafa Khalighi. % \end{macrocode} % \iffalse -%</beamerbasetranslator-xepersian.def> -%<*bidituftesidenote-xepersian.def> +%</beamerbasetranslator-xetex-xepersian.def> +%<*bidituftesidenote-xetex-xepersian.def> %\fi -% \section{File \texttt{bidituftesidenote-xepersian.def}} +% \section{File \texttt{bidituftesidenote-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{bidituftesidenote-xepersian.def}[2017/02/04 v0.3 xepersian changes to bidituftesidenote package] +\ProvidesFile{bidituftesidenote-xetex-xepersian.def}[2017/02/04 v0.3 xepersian adaptations for bidituftesidenote package for XeTeX engine] \setLTRcitationfont{\resetlatinfont\footnotesize} @@ -476,21 +475,21 @@ by Vafa Khalighi. % \end{macrocode} % \iffalse -%</bidituftesidenote-xepersian.def> -%<*bidimoderncv-xepersian.def> +%</bidituftesidenote-xetex-xepersian.def> +%<*bidimoderncv-xetex-xepersian.def> %\fi -% \section{File \texttt{bidimoderncv-xepersian.def}} +% \section{File \texttt{bidimoderncv-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{bidimoderncv-xepersian.def}[2010/07/25 v0.1 adaptations for bidimoderncv class] +\ProvidesFile{bidimoderncv-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for bidimoderncv class for XeTeX engine] \def\refname{\if@RTL تألیفات\else Publications\fi} % \end{macrocode} % \iffalse -%</bidimoderncv-xepersian.def> -%<*boek3-xepersian.def> +%</bidimoderncv-xetex-xepersian.def> +%<*boek3-xetex-xepersian.def> %\fi -% \section{File \texttt{boek3-xepersian.def}} +% \section{File \texttt{boek3-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{boek3-xepersian.def}[2010/07/25 v0.1 adaptations for boek3 class] +\ProvidesFile{boek3-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for boek3 class for XeTeX engine] \renewcommand*\thepart{\@tartibi\c@part} \renewcommand*\frontmatter{% \cleardoublepage @@ -503,12 +502,12 @@ by Vafa Khalighi. \gdef\thechapter{\@harfi\c@chapter}} % \end{macrocode} % \iffalse -%</boek3-xepersian.def> -%<*boek-xepersian.def> +%</boek3-xetex-xepersian.def> +%<*boek-xetex-xepersian.def> %\fi -% \section{File \texttt{boek-xepersian.def}} +% \section{File \texttt{boek-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{boek-xepersian.def}[2010/07/25 v0.1 adaptations for boek class] +\ProvidesFile{boek-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for boek class for XeTeX engine] \renewcommand*\thepart{\@tartibi\c@part} \renewcommand*\frontmatter{% \cleardoublepage @@ -521,12 +520,12 @@ by Vafa Khalighi. \gdef\thechapter{\@harfi\c@chapter}} % \end{macrocode} % \iffalse -%</boek-xepersian.def> -%<*bookest-xepersian.def> +%</boek-xetex-xepersian.def> +%<*bookest-xetex-xepersian.def> %\fi -% \section{File \texttt{bookest-xepersian.def}} +% \section{File \texttt{bookest-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{bookest-xepersian.def}[2010/07/25 v0.1 adaptations for bookest class] +\ProvidesFile{bookest-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for bookest class for XeTeX engine] \renewcommand \thepart {\@tartibi\c@part} \renewcommand\appendix{\par \setcounter{chapter}{0}% @@ -536,12 +535,12 @@ by Vafa Khalighi. }%end appendix % \end{macrocode} % \iffalse -%</bookest-xepersian.def> -%<*book-xepersian.def> +%</bookest-xetex-xepersian.def> +%<*book-xetex-xepersian.def> %\fi -% \section{File \texttt{book-xepersian.def}} +% \section{File \texttt{book-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{book-xepersian.def}[2010/07/25 v0.2 adaptations for standard book class] +\ProvidesFile{book-xetex-xepersian.def}[2010/07/25 v0.2 xepersian adaptations for book class for XeTeX engine] \renewcommand\frontmatter{% \cleardoublepage \@mainmatterfalse @@ -555,12 +554,12 @@ by Vafa Khalighi. }%end appendix % \end{macrocode} % \iffalse -%</book-xepersian.def> -%<*breqn-xepersian.def> +%</book-xetex-xepersian.def> +%<*breqn-xetex-xepersian.def> %\fi -% \section{File \texttt{breqn-xepersian.def}} +% \section{File \texttt{breqn-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{breqn-xepersian.def}[2010/07/25 v0.1 adaptations for breqn package] +\ProvidesFile{breqn-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for breqn package for XeTeX engine] \def\@dmath[#1]{\if@RTL\@RTLfalse\addfontfeatures{Mapping=farsidigits}\fi% \everydisplay\expandafter{\the\everydisplay \display@setup}% \if@noskipsec \leavevmode \fi @@ -602,12 +601,12 @@ by Vafa Khalighi. } % \end{macrocode} % \iffalse -%</breqn-xepersian.def> -%<*latex-localise-commands-xepersian.def> +%</breqn-xetex-xepersian.def> +%<*latex-localize-commands-xetex-xepersian.def> %\fi -% \section{File \texttt{latex-localise-commands-xepersian.def}} +% \section{File \texttt{latex-localize-commands-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{latex-localise-commands-xepersian.def}[2014/02/05 v0.3 Persian localisation of LaTeX2e commands] +\ProvidesFile{latex-localize-commands-xetex-xepersian.def}[2014/02/05 v0.3 Persian localization of LaTeX2e commands for XeTeX engine] \eqcommand{شمعجدول}{@arstrut} \eqcommand{فوق}{above} \eqcommand{فاصلهکوتاهبالاینمایش}{abovedisplayshortskip} @@ -1553,12 +1552,12 @@ by Vafa Khalighi. \eqcommand{@فرفاصله}{z@skip} % \end{macrocode} % \iffalse -%</latex-localise-commands-xepersian.def> -%<*color-localise-xepersian.def> +%</latex-localize-commands-xetex-xepersian.def> +%<*color-localize-xetex-xepersian.def> %\fi -% \section{File \texttt{color-localise-xepersian.def}} +% \section{File \texttt{color-localize-xetex-xepersian.def}} % \begin{macrocode} -\آمادهسازیپرونده{color-localise-xepersian.def}[2011/03/01 v0.1 localising color package] +\آمادهسازیپرونده{color-localize-xetex-xepersian.def}[2011/03/01 v0.1 localizing color package for XeTeX engine] \تعریفرنگ{سیاه}{rgb}{0,0,0} \تعریفرنگ{سفید}{rgb}{1,1,1} \تعریفرنگ{قرمز}{rgb}{1,0,0} @@ -1569,12 +1568,12 @@ by Vafa Khalighi. \تعریفرنگ{زرد}{cmyk}{0,0,1,0} % \end{macrocode} % \iffalse -%</color-localise-xepersian.def> -%<*xepersian-localise-commands-xepersian.def> +%</color-localize-xetex-xepersian.def> +%<*xepersian-localize-commands-xetex-xepersian.def> %\fi -% \section{File \texttt{xepersian-localise-commands-xepersian.def}} +% \section{File \texttt{xepersian-localize-commands-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{xepersian-localise-commands-xepersian.def}[2012/07/25 v0.2 Persian localisation of XePersian commands] +\ProvidesFile{xepersian-localize-commands-xetex-xepersian.def}[2012/07/25 v0.2 Persian localization of XePersian commands for XeTeX engine] \eqcommand{خطزیرنویسخودکار}{autofootnoterule} \eqcommand{اعدادفرمولهاخودکار}{AutoMathDigits} \eqcommand{اعدادفرمولهالاتین}{DefaultMathDigits} @@ -1636,12 +1635,12 @@ by Vafa Khalighi. \eqcommand{زیتک}{XeTeX} % \end{macrocode} % \iffalse -%</xepersian-localise-commands-xepersian.def> -%<*enumerate-xepersian.def> +%</xepersian-localize-commands-xetex-xepersian.def> +%<*enumerate-xetex-xepersian.def> %\fi -% \section{File \texttt{enumerate-xepersian.def}} +% \section{File \texttt{enumerate-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{enumerate-xepersian.def}[2010/07/25 v0.1 adaptations for enumerate package] +\ProvidesFile{enumerate-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for enumerate package for XeTeX engine] \def\@enloop@{% \ifx ا\@entemp \def\@tempa{\@enLabel\harfi }\else \ifx ی\@entemp \def\@tempa{\@enLabel\adadi }\else @@ -1660,12 +1659,12 @@ by Vafa Khalighi. \@tempa} % \end{macrocode} % \iffalse -%</enumerate-xepersian.def> -%<*enumitem-xepersian.def> +%</enumerate-xetex-xepersian.def> +%<*enumitem-xetex-xepersian.def> %\fi -% \section{File \texttt{enumitem-xepersian.def}} +% \section{File \texttt{enumitem-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{enumitem-xepersian.def}[2017/09/06 v0.1 adaptations for enumitem package] +\ProvidesFile{enumitem-xetex-xepersian.def}[2017/09/06 v0.1 xepersian adaptations for enumitem package for XeTeX engine] \AddEnumerateCounter*\tartibi\@tartibi{999999999} \AddEnumerateCounter*\adadi\@adadi{999999999} \AddEnumerateCounter\harfi\@harfi{گ} @@ -1678,12 +1677,12 @@ by Vafa Khalighi. \SetEnumerateShortLabel{ج}{\abjad*} % \end{macrocode} % \iffalse -%</enumitem-xepersian.def> -%<*latex-localise-environments-xepersian.def> +%</enumitem-xetex-xepersian.def> +%<*latex-localize-environments-xetex-xepersian.def> %\fi -% \section{File \texttt{latex-localise-environments-xepersian.def}} +% \section{File \texttt{latex-localize-environments-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{latex-localise-environments-xepersian.def}[2022/06/06 v0.3 Persian localisation of LaTeX2e environments] +\ProvidesFile{latex-localize-environments-xetex-xepersian.def}[2022/06/06 v0.3 Persian localization of LaTeX2e environments for XeTeX engine] \eqenvironment{چکیده}{abstract} \eqenvironment{پیوست}{appendix} \eqenvironment{آرایه}{array} @@ -1728,12 +1727,12 @@ by Vafa Khalighi. \eqenvironment{شعر}{verse} % \end{macrocode} % \iffalse -%</latex-localise-environments-xepersian.def> -%<*xepersian-localise-environments-xepersian.def> +%</latex-localize-environments-xetex-xepersian.def> +%<*xepersian-localize-environments-xetex-xepersian.def> %\fi -% \section{File \texttt{xepersian-localise-environments-xepersian.def}} +% \section{File \texttt{xepersian-localize-environments-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{xepersian-localise-environments-xepersian.def}[2010/07/25 v0.1 Persian localisation of XePersian and bidi environments] +\ProvidesFile{xepersian-localize-environments-xetex-xepersian.def}[2010/07/25 v0.1 Persian localization of XePersian and bidi environments for XeTeX engine] \eqenvironment{لاتین}{latin} \eqenvironment{متنچپ}{LTR} \eqenvironment{دستهبندیچپ}{LTRitems} @@ -1746,12 +1745,12 @@ by Vafa Khalighi. \eqenvironment{شعرسنتی*}{traditionalpoem*} % \end{macrocode} % \iffalse -%</xepersian-localise-environments-xepersian.def> -%<*extarticle-xepersian.def> +%</xepersian-localize-environments-xetex-xepersian.def> +%<*extarticle-xetex-xepersian.def> %\fi -% \section{File \texttt{extarticle-xepersian.def}} +% \section{File \texttt{extarticle-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{extarticle-xepersian.def}[2010/07/25 v0.1 adaptations for extarticle class] +\ProvidesFile{extarticle-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for extarticle class for XeTeX engine] \renewcommand\thepart {\@tartibi\c@part} \renewcommand\appendix{\par \setcounter{section}{0}% @@ -1759,12 +1758,12 @@ by Vafa Khalighi. \gdef\thesection{\@harfi\c@section}} % \end{macrocode} % \iffalse -%</extarticle-xepersian.def> -%<*extbook-xepersian.def> +%</extarticle-xetex-xepersian.def> +%<*extbook-xetex-xepersian.def> %\fi -% \section{File \texttt{extbook-xepersian.def}} +% \section{File \texttt{extbook-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{extbook-xepersian.def}[2010/07/25 v0.1 adaptations for extbook class] +\ProvidesFile{extbook-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for extbook class for XeTeX engine] \renewcommand\frontmatter{% \cleardoublepage \@mainmatterfalse @@ -1778,23 +1777,23 @@ by Vafa Khalighi. }%end appendix % \end{macrocode} % \iffalse -%</extbook-xepersian.def> -%<*extrafootnotefeatures-xepersian.def> +%</extbook-xetex-xepersian.def> +%<*extrafootnotefeatures-xetex-bidi-xetex-xepersian.def> %\fi -% \section{File \texttt{extrafootnotefeatures-xepersian.def}} +% \section{File \texttt{extrafootnotefeatures-xetex-bidi-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{extrafootnotefeatures-xepersian.def}[2012/01/01 v0.2 footnote macros for extrafootnotefeatures option of xepersian package] +\ProvidesFile{extrafootnotefeatures-xetex-bidi-xetex-xepersian.def}[2012/01/01 v0.2 xepersian adaptations for extrafootnotefeatures option for XeTeX engine] \renewcommand{\foottextfont}{\footnotesize\if@RTL@footnote\else\resetlatinfont\fi} \renewcommand{\LTRfoottextfont}{\footnotesize\resetlatinfont} \renewcommand{\RTLfoottextfont}{\footnotesize\setpersianfont} % \end{macrocode} % \iffalse -%</extrafootnotefeatures-xepersian.def> -%<*extreport-xepersian.def> +%</extrafootnotefeatures-xetex-bidi-xetex-xepersian.def> +%<*extreport-xetex-xepersian.def> %\fi -% \section{File \texttt{extreport-xepersian.def}} +% \section{File \texttt{extreport-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{extreport-xepersian.def}[2010/07/25 v0.1 adaptations for extreport class] +\ProvidesFile{extreport-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for extreport class for XeTeX engine] \renewcommand\thepart {\@tartibi\c@part} \renewcommand\appendix{\par \setcounter{chapter}{0}% @@ -1803,12 +1802,12 @@ by Vafa Khalighi. \gdef\thechapter{\@harfi\c@chapter}} % \end{macrocode} % \iffalse -%</extreport-xepersian.def> -%<*fancyref-xepersian.def> +%</extreport-xetex-xepersian.def> +%<*fancyref-xetex-xepersian.def> %\fi -% \section{File \texttt{fancyref-xepersian.def}} +% \section{File \texttt{fancyref-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{fancyref-xepersian.def}[2018/09/29 v0.1 bilingual captions for fancyref package] +\ProvidesFile{fancyref-xetex-xepersian.def}[2018/09/29 v0.1 xepersian adaptations for fancyref package for XeTeX engine] \renewcommand*{\Frefchapname}{\chaptername} \renewcommand*{\Frefenumname}{% \if@RTL @@ -1969,12 +1968,12 @@ by Vafa Khalighi. } % \end{macrocode} % \iffalse -%</fancyref-xepersian.def> -%<*footnote-xepersian.def> +%</fancyref-xetex-xepersian.def> +%<*footnote-xetex-bidi-xetex-xepersian.def> %\fi -% \section{File \texttt{footnote-xepersian.def}} +% \section{File \texttt{footnote-xetex-bidi-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{footnote-xepersian.def}[2017/08/09 v0.6 footnote macros for xepersian package] +\ProvidesFile{footnote-xetex-bidi-xetex-xepersian.def}[2017/08/09 v0.6 xepersian adaptations for footnotes for XeTeX engine] \renewcommand*{\bidi@@footnotetext@font}{\footnotesize\if@RTL@footnote\else\resetlatinfont\fi} @@ -1984,12 +1983,12 @@ by Vafa Khalighi. % \end{macrocode} % \iffalse -%</footnote-xepersian.def> -%<*framed-xepersian.def> +%</footnote-xetex-bidi-xetex-xepersian.def> +%<*framed-xetex-xepersian.def> %\fi -% \section{File \texttt{framed-xepersian.def}} +% \section{File \texttt{framed-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{framed-xepersian.def}[2012/06/05 v0.1 xepersian adaptations for framed package for XeTeX engine] +\ProvidesFile{framed-xetex-xepersian.def}[2012/06/05 v0.1 xepersian adaptations for framed package for XeTeX engine] \renewenvironment{titled-frame}[1]{% \def\FrameCommand{\fboxsep8pt\fboxrule2pt \TitleBarFrame{\textbf{#1}}}% @@ -2005,23 +2004,23 @@ by Vafa Khalighi. {\endMakeFramed} % \end{macrocode} % \iffalse -%</framed-xepersian.def> -%<*glossaries-xepersian.def> +%</framed-xetex-xepersian.def> +%<*glossaries-xetex-xepersian.def> %\fi -% \section{File \texttt{glossaries-xepersian.def}} +% \section{File \texttt{glossaries-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{glossaries-xepersian.def}[2014/09/04 v0.4 xepersian adaptations for glossaries package for XeTeX engine] +\ProvidesFile{glossaries-xetex-xepersian.def}[2014/09/04 v0.4 xepersian adaptations for glossaries package for XeTeX engine] \glsaddprotectedpagefmt{@harfi} \glsaddprotectedpagefmt{@tartibi} \glsaddprotectedpagefmt{@adadi} % \end{macrocode} % \iffalse -%</glossaries-xepersian.def> -%<*hyperref-xepersian.def> +%</glossaries-xetex-xepersian.def> +%<*hyperref-xetex-xepersian.def> %\fi -% \section{File \texttt{hyperref-xepersian.def}} +% \section{File \texttt{hyperref-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{hyperref-xepersian.def}[2022/10/30 v0.8 xepersian adaptations for hyperref package] +\ProvidesFile{hyperref-xetex-xepersian.def}[2022/10/30 v0.8 xepersian adaptations for hyperref package for XeTeX engine] \def\equationautorefname{\if@RTL معادله\else Equation\fi}% \def\footnoteautorefname{\if@RTL زیرنویس\else footnote\fi}% \def\itemautorefname{\if@RTL فقره\else item\fi}% @@ -2070,12 +2069,12 @@ by Vafa Khalighi. } % \end{macrocode} % \iffalse -%</hyperref-xepersian.def> -%<*imsproc-xepersian.def> +%</hyperref-xetex-xepersian.def> +%<*imsproc-xetex-xepersian.def> %\fi -% \section{File \texttt{imsproc-xepersian.def}} +% \section{File \texttt{imsproc-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{imsproc-xepersian.def}[2017/06/09 v0.5 xepersian adaptations for imsproc class for XeTeX engine] +\ProvidesFile{imsproc-xetex-xepersian.def}[2017/06/09 v0.5 xepersian adaptations for imsproc class for XeTeX engine] \renewcommand \thepart {\@tartibi\c@part} \def\appendix{\par\c@section\z@ \c@subsection\z@ @@ -2084,12 +2083,12 @@ by Vafa Khalighi. % \end{macrocode} % \iffalse -%</imsproc-xepersian.def> -%<*kashida-xepersian.def> +%</imsproc-xetex-xepersian.def> +%<*kashida-xetex-xepersian.def> %\fi -% \section{File \texttt{kashida-xepersian.def}} +% \section{File \texttt{kashida-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{kashida-xepersian.def}[2024/12/20 v1.0 implementation of Kashida for xepersian package] +\ProvidesFile{kashida-xetex-xepersian.def}[2024/12/20 v1.0 implementation of Kashida for XeTeX engine] \chardef\xepersian@zwj="200D % zero-width joiner \chardef\xepersian@kashidachar="0640 % kashida @@ -2146,68 +2145,22 @@ by Vafa Khalighi. \KashidaOn % \end{macrocode} % \iffalse -%</kashida-xepersian.def> -%<*listings-xepersian.def> +%</kashida-xetex-xepersian.def> +%<*listings-xetex-xepersian.def> %\fi -% \section{File \texttt{listings-xepersian.def}} +% \section{File \texttt{listings-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{listings-xepersian.def}[2014/07/17 v0.3 bilingual captions for listings package] +\ProvidesFile{listings-xetex-xepersian.def}[2014/07/17 v0.3 xepersian adaptations for listings package for XeTeX engine] \def\lstlistingname{\if@RTL برنامهٔ\else Listing\fi} \def\lstlistlistingname{\if@RTL فهرست برنامهها\else Listings\fi} % \end{macrocode} % \iffalse -%</listings-xepersian.def> -%<*loadingorder-xepersian.def> +%</listings-xetex-xepersian.def> +%<*localize-xetex-xepersian.def> %\fi -% \section{File \texttt{loadingorder-xepersian.def}} +% \section{File \texttt{localize-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{loadingorder-xepersian.def}[2018/09/29 v0.5 making sure that xepersian is the last package loaded] -\bidi@isloaded{algorithmic} -\bidi@isloaded{algorithm} -\bidi@isloaded{backref} -\bidi@isloaded{enumerate} -\bidi@isloaded{enumitem} -\bidi@isloaded{fancyref} -\bidi@isloaded{tocloft} -\bidi@isloaded{url} -\bidi@isloaded{varioref} -\AtBeginDocument{ - \if@bidi@algorithmicloaded@\else - \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package algorithmic after xepersian package. Please load package algorithmic before xepersian package, and then try to run xelatex on your document again}{}]{algorithmic} - \fi% - \if@bidi@algorithmloaded@\else - \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package algorithm after xepersian package. Please load package algorithm before xepersian package, and then try to run xelatex on your document again}{}]{algorithm} - \fi% - \if@bidi@backrefloaded@\else - \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package backref after xepersian package. Please load package backref before xepersian package, and then try to run xelatex on your document again}{}]{backref} - \fi% - \if@bidi@enumerateloaded@\else - \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package enumerate after xepersian package. Please load package enumerate before xepersian package, and then try to run xelatex on your document again}{}]{enumerate} - \fi% - \if@bidi@enumitemloaded@\else - \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package enumitem after xepersian package. Please load package enumitem before xepersian package, and then try to run xelatex on your document again}{}]{enumitem} - \fi% - \if@bidi@fancyrefloaded@\else - \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package fancyref after xepersian package. Please load package fancyref before xepersian package, and then try to run xelatex on your document again}{}]{fancyref} - \fi% - \if@bidi@tocloftloaded@\else - \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package tocloft after xepersian package. Please load package tocloft before xepersian package, and then try to run xelatex on your document again}{}]{tocloft} - \fi% - \if@bidi@urlloaded@\else - \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package url after xepersian package. Please load package url before xepersian package, and then try to run xelatex on your document again}{}]{url} - \fi% - \if@bidi@variorefloaded@\else - \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package varioref after xepersian package. Please load package varioref before xepersian package, and then try to run xelatex on your document again}{}]{varioref} - \fi% -} -% \end{macrocode} -% \iffalse -%</loadingorder-xepersian.def> -%<*localise-xepersian.def> -%\fi -% \section{File \texttt{localise-xepersian.def}} -% \begin{macrocode} -\ProvidesFile{localise-xepersian.def}[2022/06/06 v0.2c Persian localisation of LaTeX2e] +\ProvidesFile{localize-xetex-xepersian.def}[2025/01/06 v0.2e Persian localization of LaTeX2e for XeTeX engine] \newcommand{\makezwnjletter}{\catcode`=11\relax} \makezwnjletter \newcommand*{\eqcommand}[2]{\if@bidi@csprimitive{#2}{\bidi@csletcs{#1}{#2}}{\bidi@csdefcs{#1}{#2}}} @@ -2217,22 +2170,17 @@ by Vafa Khalighi. \expandafter\let\csname #1\expandafter\endcsname\csname #2\endcsname \expandafter\let\csname end#1\expandafter\endcsname\csname end#2\endcsname } -\@ifpackageloaded{keyval}{% -\newcommand*\keyval@eq@alias@key[4][KV]{% - \bidi@csletcs{#1@#2@#3}{#1@#2@#4}% - \bidi@csletcs{#1@#2@#3@default}{#1@#2@#4@default}}% -}{\@ifpackageloaded{xkeyval}{% \newcommand*\keyval@eq@alias@key[4][KV]{% \bidi@csletcs{#1@#2@#3}{#1@#2@#4}% - \bidi@csletcs{#1@#2@#3@default}{#1@#2@#4@default}}% -}{}} -\input{latex-localise-commands-xepersian.def} -\input{xepersian-localise-commands-xepersian.def} -\input{latex-localise-environments-xepersian.def} -\input{xepersian-localise-environments-xepersian.def} -\input{latex-localise-messages-xepersian.def} -\input{latex-localise-misc-xepersian.def} -\input{packages-localise-xepersian.def} + \bidi@csletcs{#1@#2@#3@default}{#1@#2@#4@default}% +} +\input{latex-localize-commands-xetex-xepersian.def} +\input{xepersian-localize-commands-xetex-xepersian.def} +\input{latex-localize-environments-xetex-xepersian.def} +\input{xepersian-localize-environments-xetex-xepersian.def} +\input{latex-localize-messages-xetex-xepersian.def} +\input{latex-localize-misc-xetex-xepersian.def} +\input{packages-localize-xetex-xepersian.def} \aliasfontfeature{ExternalLocation}{مکانخارجی} \aliasfontfeature{Path}{مسیر} \aliasfontfeature{Renderer}{تحویلدهنده} @@ -2294,12 +2242,12 @@ by Vafa Khalighi. \aliasfontfeatureoption{Style}{MathScriptScript}{اسکریپتاسکریپتریاضی} % \end{macrocode} % \iffalse -%</localise-xepersian.def> -%<*memoir-xepersian.def> +%</localize-xetex-xepersian.def> +%<*memoir-xetex-xepersian.def> %\fi -% \section{File \texttt{memoir-xepersian.def}} +% \section{File \texttt{memoir-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{memoir-xepersian.def}[2010/07/25 v0.1 adaptations for memoir class] +\ProvidesFile{memoir-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for memoir class for XeTeX engine] \renewcommand{\@memfront}{% \@smemfront\pagenumbering{harfi}} \renewcommand{\setthesection}{\thechapter\@SepMark\harfi{section}} @@ -2313,20 +2261,20 @@ by Vafa Khalighi. \anappendixtrue} % \end{macrocode} % \iffalse -%</memoir-xepersian.def> -%<*latex-localise-messages-xepersian.def> +%</memoir-xetex-xepersian.def> +%<*latex-localize-messages-xetex-xepersian.def> %\fi -% \section{File \texttt{latex-localise-messages-xepersian.def}} +% \section{File \texttt{latex-localize-messages-xetex-xepersian.def}} % \begin{macrocode} -\آمادهسازیپرونده{latex-localise-messages-xepersian.def}[2011/03/01 v0.1 localising LaTeX2e messages] +\آمادهسازیپرونده{latex-localize-messages-xetex-xepersian.def}[2011/03/01 v0.1 localizing LaTeX2e messages for XeTeX engine] % \end{macrocode} % \iffalse -%</latex-localise-messages-xepersian.def> -%<*minitoc-xepersian.def> +%</latex-localize-messages-xetex-xepersian.def> +%<*minitoc-xetex-xepersian.def> %\fi -% \section{File \texttt{minitoc-xepersian.def}} +% \section{File \texttt{minitoc-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{minitoc-xepersian.def}[2010/07/25 v0.1 bilingual captions for minitoc package] +\ProvidesFile{minitoc-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for minitoc package for XeTeX engine] \def\ptctitle{\if@RTL فهرست مطالب\else Table of Contents\fi}% \def\plftitle{\if@RTL فهرست تصاویر\else List of Figures\fi}% \def\plttitle{\if@RTL فهرست جداول\else List of Tables\fi}% @@ -2338,12 +2286,12 @@ by Vafa Khalighi. \def\slttitle{\if@RTL جداول\else Tables\fi}% % \end{macrocode} % \iffalse -%</minitoc-xepersian.def> -%<*latex-localise-misc-xepersian.def> +%</minitoc-xetex-xepersian.def> +%<*latex-localize-misc-xetex-xepersian.def> %\fi -% \section{File \texttt{latex-localise-misc-xepersian.def}} +% \section{File \texttt{latex-localize-misc-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{latex-localise-misc-xepersian.def}[2012/01/01 v0.2 miscellaneous Persian localisation of LaTeX2e] +\ProvidesFile{latex-localize-misc-xetex-xepersian.def}[2025/01/03 v0.3 miscellaneous Persian localization of LaTeX2e for XeTeX engine] \تر\گرجدید#1{% \شمار@\نویسهویژه \نویسهویژه\من@ا \بگذار#1\گرنادرست @@ -2371,7 +2319,7 @@ by Vafa Khalighi. \بگذار\ازنو=\رگ -\@ifdefinitionfileloaded{latex-xetex-bidi}{% +\ApplyPatchCodeToFile{latex-xetex-bidi}{% \def\@xfloat #1[#2]{% \@nodocument \def \@captype {#1}% @@ -2513,8 +2461,8 @@ by Vafa Khalighi. \if #1پ3 \else \z@ \@preamerr 0\fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi}% -}{} -\@ifdefinitionfileloaded{array-xetex-bidi}{% +} +\ApplyPatchCodeToFile{array-xetex-bidi}{% \def\@testpach{\@chclass \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else \ifnum \@lastchclass=7 5 \else @@ -2546,8 +2494,8 @@ by Vafa Khalighi. \if \@nextchar ز5 \else \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi}% -}{} -\@ifdefinitionfileloaded{arydshln-xetex-bidi}{ +} +\ApplyPatchCodeToFile{arydshln-xetex-bidi}{ \ifadl@usingarypkg \def\@testpach{\@chclass \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else @@ -2636,8 +2584,8 @@ by Vafa Khalighi. \def\adl@class@start{6} \def\adl@class@iiiorvii{3} \fi -}{} -\@ifdefinitionfileloaded{tabulary-xetex-bidi}{% +} +\ApplyPatchCodeToFile{tabulary-xetex-bidi}{% \def\@testpach{\@chclass \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else \ifnum \@lastchclass=7 5 \else @@ -2677,8 +2625,8 @@ by Vafa Khalighi. \if \@nextchar ز5 \else \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi\fi \fi \fi\fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi}% -}{} -\@ifdefinitionfileloaded{float-xetex-bidi}{% +} +\ApplyPatchCodeToFile{float-xetex-bidi}{% \let\@float@Hx\@xfloat \def\@xfloat#1[{\@ifnextchar{H}{\@float@HH{#1}[}{\@ifnextchar{آ}{\@float@آآ{#1}[}{\@float@Hx{#1}[}}} \def\@float@HH#1[H]{% @@ -2701,7 +2649,7 @@ by Vafa Khalighi. \vbox\bgroup \hsize\columnwidth \@parboxrestore \@floatboxreset \@setnobreak \ignorespaces} -}{} +} \begingroup \catcode `|=0 \catcode `[= 1 \catcode`]=2 \catcode `\{=12 \catcode `\}=12 \catcode`\\=12 |gdef|@x@xepersian@localize@verbatim#1\پایان{همانطورکههست}[#1|پایان[همانطورکههست]] @@ -2715,12 +2663,12 @@ by Vafa Khalighi. \expandafter\let\csname endهمانطورکههست*\endcsname =\endهمانطورکههست % \end{macrocode} % \iffalse -%</latex-localise-misc-xepersian.def> -%<*natbib-xepersian.def> +%</latex-localize-misc-xetex-xepersian.def> +%<*natbib-xetex-xepersian.def> %\fi -% \section{File \texttt{natbib-xepersian.def}} +% \section{File \texttt{natbib-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{natbib-xepersian.def}[2011/08/01 v0.1 adaptations for natbib package] +\ProvidesFile{natbib-xetex-xepersian.def}[2011/08/01 v0.1 xepersian adaptations for natbib package for XeTeX engine] \renewcommand\NAT@set@cites{% \ifNAT@numbers \ifNAT@super \let\@cite\NAT@citesuper @@ -2937,18 +2885,18 @@ by Vafa Khalighi. \def\NAT@@Latin@@citetp[#1]{\@ifnextchar[{\@Latincitex[#1]}{\@Latincitex[][#1]}} % \end{macrocode} % \iffalse -%</natbib-xepersian.def> -%<*packages-localise-xepersian.def> +%</natbib-xetex-xepersian.def> +%<*packages-localize-xetex-xepersian.def> %\fi -% \section{File \texttt{packages-localise-xepersian.def}} +% \section{File \texttt{packages-localize-xetex-xepersian.def}} % \begin{macrocode} -\آمادهسازیپرونده{packages-localise-xepersian.def}[2013/04/24 v0.2 localising LaTeX2e Packages] -\@گرسبکفراخوانیشده{color}{\ورودی{color-localise-xepersian.def}}{} -\@ifpackageloaded{multicol}{% +\آمادهسازیپرونده{packages-localize-xetex-xepersian.def}[2025/01/03 v0.3 localizing LaTeX2e Packages for XeTeX engine] +\@گرسبکفراخوانیشده{color}{\ورودی{color-localize-xetex-xepersian.def}}{} +\ApplyPatchCodeToPackage{multicol}{% \newenvironment{چندستونیها}{\begin{multicols}}{\end{multicols}}% \newenvironment{چندستونیها*}{\begin{multicols*}}{\end{multicols*}}% -}{} -\@ifpackageloaded{verbatim}{% +} +\ApplyPatchCodeToPackage{verbatim}{% \begingroup \vrb@catcodes \lccode`\!=`\\ \lccode`\[=`\{ \lccode`\]=`\} @@ -3034,21 +2982,20 @@ by Vafa Khalighi. \@namedef{همانطورکههست*}{\begingroup\@verbatim\xepersian@localize@verbatim@start} \def\endهمانطورکههست{\endtrivlist\endgroup\@doendpe} \expandafter\let\csname endهمانطورکههست*\endcsname =\endهمانطورکههست -}{} +} \ExplSyntaxOn \AtBeginDocument{ \xepersian_localize_patch_verbatim: } \cs_set:Npn \xepersian_localize_patch_verbatim: { - \@ifpackageloaded{verbatim}{ + \ApplyPatchCodeToPackage{verbatim}{ \cs_set:cpn {همانطورکههست*} { \group_begin: \@verbatim \fontspec_print_visible_spaces: \xepersian@localize@verbatim@start } - }{ } } \ExplSyntaxOff -\@ifpackageloaded{graphicx}{% +\ApplyPatchCodeToPackage{graphicx}{% \def\Gin@boolkey#1#2{% \expandafter\@ifdefinable \csname Gin@#2درست\endcsname{% \expandafter\let\csname Gin@#2درست\expandafter\endcsname\csname Gin@#2true\endcsname}% @@ -3089,15 +3036,15 @@ by Vafa Khalighi. \معادل@کلید{Grot}{طول}{x} \معادل@کلید{Grot}{عرض}{y} \معادل@کلید{Grot}{واحد}{units} -}{} +} % \end{macrocode} % \iffalse -%</packages-localise-xepersian.def> -%<*url-xepersian.def> +%</packages-localize-xetex-xepersian.def> +%<*url-xetex-xepersian.def> %\fi -% \section{File \texttt{url-xepersian.def}} +% \section{File \texttt{url-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{url-xepersian.def}[2022/02/18 v0.1 adaptations for url package] +\ProvidesFile{url-xetex-xepersian.def}[2022/02/18 v0.1 xepersian adaptations for url package for XeTeX engine] \begingroup \lccode`+=`\% \lccode`\~=`\% \lowercase {\long\gdef\Url@actpercent{\Url@Edit\Url@String{+}{~}% @@ -3105,7 +3052,7 @@ by Vafa Khalighi. \endgroup% % \end{macrocode} % \iffalse -%</url-xepersian.def> +%</url-xetex-xepersian.def> %<*persian-tex-text.map> %\fi % \section{File \texttt{persian-tex-text.map}} @@ -3184,11 +3131,11 @@ U+003E U+003E <> U+00BB ; >> -> RIGHT POINTING GUILLEMET % \end{macrocode} % \iffalse %</persian-tex-text-nonumbers.map> -%<*rapport1-xepersian.def> +%<*rapport1-xetex-xepersian.def> %\fi -% \section{File \texttt{rapport1-xepersian.def}} +% \section{File \texttt{rapport1-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{rapport1-xepersian.def}[2010/07/25 v0.1 adaptations for rapport1 class] +\ProvidesFile{rapport1-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for rapport1 class for XeTeX engine] \renewcommand*\thepart{\@tartibi\c@part} \renewcommand*\appendix{\par \setcounter{chapter}{0}% @@ -3197,12 +3144,12 @@ U+003E U+003E <> U+00BB ; >> -> RIGHT POINTING GUILLEMET \gdef\thechapter{\@harfi\c@chapter}} % \end{macrocode} % \iffalse -%</rapport1-xepersian.def> -%<*rapport3-xepersian.def> +%</rapport1-xetex-xepersian.def> +%<*rapport3-xetex-xepersian.def> %\fi -% \section{File \texttt{rapport3-xepersian.def}} +% \section{File \texttt{rapport3-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{rapport3-xepersian.def}[2010/07/25 v0.2 adaptations for rapport3 class] +\ProvidesFile{rapport3-xetex-xepersian.def}[2010/07/25 v0.2 xepersian adaptations for rapport3 class for XeTeX engine] \renewcommand*\thepart{\@tartibi\c@part} \renewcommand*\appendix{\par \setcounter{chapter}{0}% @@ -3211,12 +3158,12 @@ U+003E U+003E <> U+00BB ; >> -> RIGHT POINTING GUILLEMET \gdef\thechapter{\@harfi\c@chapter}} % \end{macrocode} % \iffalse -%</rapport3-xepersian.def> -%<*refrep-xepersian.def> +%</rapport3-xetex-xepersian.def> +%<*refrep-xetex-xepersian.def> %\fi -% \section{File \texttt{refrep-xepersian.def}} +% \section{File \texttt{refrep-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{refrep-xepersian.def}[2010/07/25 v0.2 adaptations for refrep class] +\ProvidesFile{refrep-xetex-xepersian.def}[2010/07/25 v0.2 xepersian adaptations for refrep class for XeTeX engine] \renewcommand \thepart {\@tartibi\c@part} \renewcommand\appendix{\par \setcounter{chapter}{0}% @@ -3226,12 +3173,12 @@ U+003E U+003E <> U+00BB ; >> -> RIGHT POINTING GUILLEMET }%end appendix % \end{macrocode} % \iffalse -%</refrep-xepersian.def> -%<*report-xepersian.def> +%</refrep-xetex-xepersian.def> +%<*report-xetex-xepersian.def> %\fi -% \section{File \texttt{report-xepersian.def}} +% \section{File \texttt{report-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{report-xepersian.def}[2010/07/25 v0.2 adaptations for standard report class] +\ProvidesFile{report-xetex-xepersian.def}[2010/07/25 v0.2 xepersian adaptations for report class for XeTeX engine] \renewcommand \thepart {\@tartibi\c@part} \renewcommand\appendix{\par \setcounter{chapter}{0}% @@ -3241,12 +3188,12 @@ U+003E U+003E <> U+00BB ; >> -> RIGHT POINTING GUILLEMET }%end appendix % \end{macrocode} % \iffalse -%</report-xepersian.def> -%<*scrartcl-xepersian.def> +%</report-xetex-xepersian.def> +%<*scrartcl-xetex-xepersian.def> %\fi -% \section{File \texttt{scrartcl-xepersian.def}} +% \section{File \texttt{scrartcl-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{scrartcl-xepersian.def}[2022/05/22 v0.3 adaptations for scrartcl class] +\ProvidesFile{scrartcl-xetex-xepersian.def}[2022/05/22 v0.3 xepersian adaptations for scrartcl class for XeTeX engine] \renewcommand*{\thepart}{\@tartibi\c@part} \renewcommand*\appendix{% \Ifstr{\@currenvir}{appendix}{% @@ -3299,12 +3246,12 @@ U+003E U+003E <> U+00BB ; >> -> RIGHT POINTING GUILLEMET } % \end{macrocode} % \iffalse -%</scrartcl-xepersian.def> -%<*scrbook-xepersian.def> +%</scrartcl-xetex-xepersian.def> +%<*scrbook-xetex-xepersian.def> %\fi -% \section{File \texttt{scrbook-xepersian.def}} +% \section{File \texttt{scrbook-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{scrbook-xepersian.def}[2022/05/22 v0.3 adaptations for scrbook class] +\ProvidesFile{scrbook-xetex-xepersian.def}[2022/05/22 v0.3 xepersian adaptations for scrbook class for XeTeX engine] \renewcommand*\frontmatter{% \if@twoside\cleardoubleoddpage\else\clearpage\fi \@mainmatterfalse\pagenumbering{harfi}% @@ -3362,12 +3309,12 @@ U+003E U+003E <> U+00BB ; >> -> RIGHT POINTING GUILLEMET } % \end{macrocode} % \iffalse -%</scrbook-xepersian.def> -%<*scrreprt-xepersian.def> +%</scrbook-xetex-xepersian.def> +%<*scrreprt-xetex-xepersian.def> %\fi -% \section{File \texttt{scrreprt-xepersian.def}} +% \section{File \texttt{scrreprt-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{scrreprt-xepersian.def}[2022/05/22 v0.3 adaptations for scrreprt class] +\ProvidesFile{scrreprt-xetex-xepersian.def}[2022/05/22 v0.3 xepersian adaptations for scrreprt class for XeTeX engine] \renewcommand*{\thepart}{\@tartibi\c@part} \renewcommand*\appendix{% \Ifstr{\@currenvir}{appendix}{% @@ -3421,12 +3368,12 @@ U+003E U+003E <> U+00BB ; >> -> RIGHT POINTING GUILLEMET } % \end{macrocode} % \iffalse -%</scrreprt-xepersian.def> -%<*soul-xepersian.def> +%</scrreprt-xetex-xepersian.def> +%<*soul-xetex-xepersian.def> %\fi -% \section{File \texttt{soul-xepersian.def}} +% \section{File \texttt{soul-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{soul-xepersian.def}[2018/12/12 v0.2 adaptations for soul package] +\ProvidesFile{soul-xetex-xepersian.def}[2018/12/12 v0.2 xepersian adaptations for soul package for XeTeX engine] \let\SOUL@tt@latin\SOUL@tt \newfontface{\SOUL@tt@nonlatin}{Times New Roman} \def\SOUL@tt{% @@ -3446,12 +3393,12 @@ U+003E U+003E <> U+00BB ; >> -> RIGHT POINTING GUILLEMET } % \end{macrocode} % \iffalse -%</soul-xepersian.def> -%<*tkz-linknodes-xepersian.def> +%</soul-xetex-xepersian.def> +%<*tkz-linknodes-xetex-xepersian.def> %\fi -% \section{File \texttt{tkz-linknodes-xepersian.def}} +% \section{File \texttt{tkz-linknodes-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{tkz-linknodes-xepersian.def}[2012/06/13 v0.1 adaptations for tkz-linknodes package] +\ProvidesFile{tkz-linknodes-xetex-xepersian.def}[2012/06/13 v0.1 xepersian adaptations for tkz-linknodes package for XeTeX engine] \renewcommand*{\@SetTab}{% \let\@alph\@latinalph% \ifnum \value{C@NumTab}>25\relax% @@ -3473,12 +3420,13 @@ U+003E U+003E <> U+00BB ; >> -> RIGHT POINTING GUILLEMET }% % \end{macrocode} % \iffalse -%</tkz-linknodes-xepersian.def> -%<*tocloft-xepersian.def> +%</tkz-linknodes-xetex-xepersian.def> +%<*tocloft-xetex-xepersian.def> %\fi -% \section{File \texttt{tocloft-xepersian.def}} +% \section{File \texttt{tocloft-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{tocloft-xepersian.def}[2010/07/25 v0.1 bilingual captions for tocloft package] +\ProvidesFile{tocloft-xetex-xepersian.def}[2025/01/03 v0.2 xepersian adaptations for tocloft package for XeTeX engine] +\IfClassLoadedT{memoir}{\endinput} \renewcommand*{\cftchapname}{\if@RTL فصل\else chapter\fi} \renewcommand*{\cftsecname}{\if@RTL قسمت\else section\fi} \renewcommand*{\cftsubsecname}{\if@RTL زیرقسمت\else subsection\fi} @@ -3491,12 +3439,12 @@ U+003E U+003E <> U+00BB ; >> -> RIGHT POINTING GUILLEMET \renewcommand*{\cftsubtabname}{\if@RTL زیرجدول\else subtable\fi} % \end{macrocode} % \iffalse -%</tocloft-xepersian.def> -%<*varioref-xepersian.def> +%</tocloft-xetex-xepersian.def> +%<*varioref-xetex-xepersian.def> %\fi -% \section{File \texttt{varioref-xepersian.def}} +% \section{File \texttt{varioref-xetex-xepersian.def}} % \begin{macrocode} -\ProvidesFile{varioref-xepersian.def}[2018/09/29 v0.1 bilingual captions for varioref package] +\ProvidesFile{varioref-xetex-xepersian.def}[2018/09/29 v0.1 xepersian adaptations for varioref package for XeTeX engine] \def\reftextfaceafter{% \if@RTL در صفحه @@ -3562,16 +3510,16 @@ U+003E U+003E <> U+00BB ; >> -> RIGHT POINTING GUILLEMET } % \end{macrocode} % \iffalse -%</varioref-xepersian.def> +%</varioref-xetex-xepersian.def> %<*xepersian.sty> %\fi % \section{File \texttt{xepersian.sty}} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\def\xepersian@version{25.8} -\def\xepersiandate{2025/01/01} -\def\xepersian@releasename{Mount Alvand} -\def\xepersian@persian@@releasename{کوه الوند} +\def\xepersian@version{26.0} +\def\xepersiandate{2025/01/06} +\def\xepersian@releasename{Persian Gate} +\def\xepersian@persian@@releasename{دربند پارس} \newcommand*{\xepersianreleasename}{\if@RTL\xepersian@persian@@releasename\else\xepersian@releasename\fi} \ProvidesPackage{xepersian}[\xepersiandate\space v\xepersian@version\space (Release \xepersian@releasename)\space Persian typesetting in XeLaTeX] @@ -3616,16 +3564,16 @@ Persian typesetting in XeLaTeX] \keys_define:nn { xepersian } { Kashida .choice: , - Kashida / on .code:n = \AtEndOfPackage{\input{kashida-xepersian.def}} , + Kashida / on .code:n = \AtEndOfPackage{\input{kashida-xetex-xepersian.def}} , Kashida / off .code:n = \relax , Kashida .default:n = on } \keys_define:nn { xepersian } { - localise .choice: , - localise / on .code:n = \AtEndOfPackage{\input{localise-xepersian.def}} , - localise / off .code:n = \relax , - localise .default:n = on + localize .choice: , + localize / on .code:n = \AtEndOfPackage{\input{localize-xetex-xepersian.def}} , + localize / off .code:n = \relax , + localize .default:n = on } \cs_new_protected:Npn \__xepersian_quickindex_variant:n #1 { @@ -4581,7 +4529,7 @@ Persian typesetting in XeLaTeX] \newcommand*{\@xepersian@pdfcustomproperties}{% This is the xepersian package, Version \xepersian@version\space (Release \xepersian@releasename), - Released January 1, 2025. + Released January 6, 2025. } \newcommand\twocolumnstableofcontents{% @@ -4895,54 +4843,62 @@ number is 999,999,999.}% \PackageError{xepersian}{You have not specified any font\MessageBreak for the main Persian text}{Use `\settextfont' to load a font.}% }{}} -\@ifdefinitionfileloaded{loadingorder-xetex-bidi}{\input{loadingorder-xepersian.def}}{} -\@ifdefinitionfileloaded{footnote-xetex-bidi}{\input{footnote-xepersian.def}}{} -\@ifpackageloaded{appendix}{\input{appendix-xepersian.def}}{} -\@ifpackageloaded{listings}{\input{listings-xepersian.def}}{} -\@ifpackageloaded{algorithmic}{\input{algorithmic-xepersian.def}}{} -\@ifpackageloaded{algorithm}{\input{algorithm-xepersian.def}}{} -\@ifpackageloaded{backref}{\input{backref-xepersian.def}}{} -\@ifpackageloaded{beamerbasetranslator}{\input{beamerbasetranslator-xepersian.def}}{} -\@ifpackageloaded{fancyref}{\input{fancyref-xepersian.def}}{} -\@ifpackageloaded{bidituftesidenote}{\input{bidituftesidenote-xepersian.def}}{} -\@ifpackageloaded{breqn}{\input{breqn-xepersian.def}}{} -\@ifpackageloaded{enumerate}{\input{enumerate-xepersian.def}}{} -\@ifpackageloaded{enumitem}{\input{enumitem-xepersian.def}}{} -\@ifpackageloaded{framed}{\input{framed-xepersian.def}}{} -\@ifpackageloaded{glossaries}{\input{glossaries-xepersian.def}}{} -\@ifpackageloaded{hyperref}{\input{hyperref-xepersian.def}}{} -\@ifpackageloaded{minitoc}{\input{minitoc-xepersian.def}}{} -\@ifpackageloaded{natbib}{\input{natbib-xepersian.def}}{} -\@ifpackageloaded{soul}{\input{soul-xepersian.def}}{} -\@ifpackageloaded{tkz-linknodes}{\input{tkz-linknodes-xepersian.def}}{} -\@ifpackageloaded{tocloft}{\@ifclassloaded{memoir}{}{\input{tocloft-xepersian.def}}}{} -\@ifpackageloaded{url}{\input{url-xepersian.def}}{} -\@ifpackageloaded{varioref}{\input{varioref-xepersian.def}}{} -\@ifclassloaded{article}{\input{article-xepersian.def}}{} -\@ifclassloaded{extarticle}{\input{extarticle-xepersian.def}}{} -\@ifclassloaded{artikel1}{\input{artikel1-xepersian.def}}{} -\@ifclassloaded{artikel2}{\input{artikel2-xepersian.def}}{} -\@ifclassloaded{artikel3}{\input{artikel3-xepersian.def}}{} -\@ifclassloaded{amsart}{\input{amsart-xepersian.def}}{} -\@ifclassloaded{beamer}{\input{beamer-xepersian.def}}{} -\@ifclassloaded{bidimoderncv}{\input{bidimoderncv-xepersian.def}}{} -\@ifclassloaded{report}{\input{report-xepersian.def}}{} -\@ifclassloaded{extreport}{\input{extreport-xepersian.def}}{} -\@ifclassloaded{rapport1}{\input{rapport1-xepersian.def}}{} -\@ifclassloaded{rapport3}{\input{rapport3-xepersian.def}}{} -\@ifclassloaded{scrartcl}{\input{scrartcl-xepersian.def}}{} -\@ifclassloaded{scrbook}{\input{scrbook-xepersian.def}}{} -\@ifclassloaded{scrreprt}{\input{scrreprt-xepersian.def}}{} -\@ifclassloaded{amsbook}{\input{amsbook-xepersian.def}}{} -\@ifclassloaded{boek3}{\input{boek3-xepersian.def}}{} -\@ifclassloaded{boek}{\input{boek-xepersian.def}}{} -\@ifclassloaded{bookest}{\input{bookest-xepersian.def}}{} -\@ifclassloaded{extbook}{\input{extbook-xepersian.def}}{} -\@ifclassloaded{book}{\input{book-xepersian.def}}{} -\@ifclassloaded{refrep}{\input{refrep-xepersian.def}}{} -\@ifclassloaded{memoir}{\input{memoir-xepersian.def}}{} -\@ifclassloaded{imsproc}{\input{imsproc-xepersian.def}}{} -\@ifdefinitionfileloaded{extrafootnotefeatures-xetex-bidi}{\input{extrafootnotefeatures-xepersian.def}}{} + +\ApplyPatchToFiles{% + footnote-xetex-bidi, % + extrafootnotefeatures-xetex-bidi % +}[def][xepersian] + +\ApplyPatchToClasses{% + article, % + amsart, % + amsbook, % + artikel1, % + artikel2, % + artikel3, % + beamer, % + bidimoderncv, % + boek, % + boek3, % + book, % + bookest, % + extbook, % + extarticle, % + extreport, % + imsproc, % + memoir, % + rapport1, % + rapport3, % + refrep, % + report, % + scrartcl, % + scrbook, % + scrreprt % +}[xepersian] + +\ApplyPatchToPackages{% + algorithm, % + algorithmic, % + appendix, % + backref, % + beamerbasetranslator, % + bidituftesidenote, % + breqn, % + enumerate, % + enumitem, % + fancyref, % + framed, % + glossaries, % + hyperref, % + listings, % + minitoc, % + natbib, % + soul, % + tkz-linknodes, % + tocloft, % + url, % + varioref % +}[xepersian] \newtoks\xepersian@toks \def\xepersian@tempa#1{% diff --git a/Master/texmf-dist/source/xelatex/xepersian/xepersian.ins b/Master/texmf-dist/source/xelatex/xepersian/xepersian.ins index 278f8699971..341ca8d55ea 100644 --- a/Master/texmf-dist/source/xelatex/xepersian/xepersian.ins +++ b/Master/texmf-dist/source/xelatex/xepersian/xepersian.ins @@ -41,53 +41,52 @@ \endpreamble \askforoverwritefalse \let\MetaPrefix\DoubleperCent -\generate{\file{algorithmic-xepersian.def}{\from{\jobname.dtx}{table,algorithmic-xepersian.def}}} -\generate{\file{algorithm-xepersian.def}{\from{\jobname.dtx}{table,algorithm-xepersian.def}}} -\generate{\file{amsart-xepersian.def}{\from{\jobname.dtx}{table,amsart-xepersian.def}}} -\generate{\file{amsbook-xepersian.def}{\from{\jobname.dtx}{table,amsbook-xepersian.def}}} -\generate{\file{appendix-xepersian.def}{\from{\jobname.dtx}{table,appendix-xepersian.def}}} -\generate{\file{article-xepersian.def}{\from{\jobname.dtx}{table,article-xepersian.def}}} -\generate{\file{artikel1-xepersian.def}{\from{\jobname.dtx}{table,artikel1-xepersian.def}}} -\generate{\file{artikel2-xepersian.def}{\from{\jobname.dtx}{table,artikel2-xepersian.def}}} -\generate{\file{artikel3-xepersian.def}{\from{\jobname.dtx}{table,artikel3-xepersian.def}}} -\generate{\file{backref-xepersian.def}{\from{\jobname.dtx}{table,backref-xepersian.def}}} -\generate{\file{beamer-xepersian.def}{\from{\jobname.dtx}{table,beamer-xepersian.def}}} -\generate{\file{beamerbasetranslator-xepersian.def}{\from{\jobname.dtx}{table,beamerbasetranslator-xepersian.def}}} -\generate{\file{bidituftesidenote-xepersian.def}{\from{\jobname.dtx}{table,bidituftesidenote-xepersian.def}}} -\generate{\file{bidimoderncv-xepersian.def}{\from{\jobname.dtx}{table,bidimoderncv-xepersian.def}}} -\generate{\file{boek3-xepersian.def}{\from{\jobname.dtx}{table,boek3-xepersian.def}}} -\generate{\file{boek-xepersian.def}{\from{\jobname.dtx}{table,boek-xepersian.def}}} -\generate{\file{bookest-xepersian.def}{\from{\jobname.dtx}{table,bookest-xepersian.def}}} -\generate{\file{book-xepersian.def}{\from{\jobname.dtx}{table,book-xepersian.def}}} -\generate{\file{breqn-xepersian.def}{\from{\jobname.dtx}{table,breqn-xepersian.def}}} -\generate{\file{latex-localise-commands-xepersian.def}{\from{\jobname.dtx}{table,latex-localise-commands-xepersian.def}}} -\generate{\file{color-localise-xepersian.def}{\from{\jobname.dtx}{table,color-localise-xepersian.def}}} -\generate{\file{xepersian-localise-commands-xepersian.def}{\from{\jobname.dtx}{table,xepersian-localise-commands-xepersian.def}}} -\generate{\file{enumerate-xepersian.def}{\from{\jobname.dtx}{table,enumerate-xepersian.def}}} -\generate{\file{enumitem-xepersian.def}{\from{\jobname.dtx}{table,enumitem-xepersian.def}}} -\generate{\file{latex-localise-environments-xepersian.def}{\from{\jobname.dtx}{table,latex-localise-environments-xepersian.def}}} -\generate{\file{xepersian-localise-environments-xepersian.def}{\from{\jobname.dtx}{table,xepersian-localise-environments-xepersian.def}}} -\generate{\file{extarticle-xepersian.def}{\from{\jobname.dtx}{table,extarticle-xepersian.def}}} -\generate{\file{extbook-xepersian.def}{\from{\jobname.dtx}{table,extbook-xepersian.def}}} -\generate{\file{extrafootnotefeatures-xepersian.def}{\from{\jobname.dtx}{table,extrafootnotefeatures-xepersian.def}}} -\generate{\file{extreport-xepersian.def}{\from{\jobname.dtx}{table,extreport-xepersian.def}}} -\generate{\file{fancyref-xepersian.def}{\from{\jobname.dtx}{table,fancyref-xepersian.def}}} -\generate{\file{footnote-xepersian.def}{\from{\jobname.dtx}{table,footnote-xepersian.def}}} -\generate{\file{framed-xepersian.def}{\from{\jobname.dtx}{table,framed-xepersian.def}}} -\generate{\file{glossaries-xepersian.def}{\from{\jobname.dtx}{table,glossaries-xepersian.def}}} -\generate{\file{hyperref-xepersian.def}{\from{\jobname.dtx}{table,hyperref-xepersian.def}}} -\generate{\file{imsproc-xepersian.def}{\from{\jobname.dtx}{table,imsproc-xepersian.def}}} -\generate{\file{kashida-xepersian.def}{\from{\jobname.dtx}{table,kashida-xepersian.def}}} -\generate{\file{listings-xepersian.def}{\from{\jobname.dtx}{table,listings-xepersian.def}}} -\generate{\file{loadingorder-xepersian.def}{\from{\jobname.dtx}{table,loadingorder-xepersian.def}}} -\generate{\file{localise-xepersian.def}{\from{\jobname.dtx}{table,localise-xepersian.def}}} -\generate{\file{memoir-xepersian.def}{\from{\jobname.dtx}{table,memoir-xepersian.def}}} -\generate{\file{latex-localise-messages-xepersian.def}{\from{\jobname.dtx}{table,latex-localise-messages-xepersian.def}}} -\generate{\file{minitoc-xepersian.def}{\from{\jobname.dtx}{table,minitoc-xepersian.def}}} -\generate{\file{latex-localise-misc-xepersian.def}{\from{\jobname.dtx}{table,latex-localise-misc-xepersian.def}}} -\generate{\file{natbib-xepersian.def}{\from{\jobname.dtx}{table,natbib-xepersian.def}}} -\generate{\file{packages-localise-xepersian.def}{\from{\jobname.dtx}{table,packages-localise-xepersian.def}}} -\generate{\file{url-xepersian.def}{\from{\jobname.dtx}{table,url-xepersian.def}}} +\generate{\file{algorithmic-xetex-xepersian.def}{\from{\jobname.dtx}{table,algorithmic-xetex-xepersian.def}}} +\generate{\file{algorithm-xetex-xepersian.def}{\from{\jobname.dtx}{table,algorithm-xetex-xepersian.def}}} +\generate{\file{amsart-xetex-xepersian.def}{\from{\jobname.dtx}{table,amsart-xetex-xepersian.def}}} +\generate{\file{amsbook-xetex-xepersian.def}{\from{\jobname.dtx}{table,amsbook-xetex-xepersian.def}}} +\generate{\file{appendix-xetex-xepersian.def}{\from{\jobname.dtx}{table,appendix-xetex-xepersian.def}}} +\generate{\file{article-xetex-xepersian.def}{\from{\jobname.dtx}{table,article-xetex-xepersian.def}}} +\generate{\file{artikel1-xetex-xepersian.def}{\from{\jobname.dtx}{table,artikel1-xetex-xepersian.def}}} +\generate{\file{artikel2-xetex-xepersian.def}{\from{\jobname.dtx}{table,artikel2-xetex-xepersian.def}}} +\generate{\file{artikel3-xetex-xepersian.def}{\from{\jobname.dtx}{table,artikel3-xetex-xepersian.def}}} +\generate{\file{backref-xetex-xepersian.def}{\from{\jobname.dtx}{table,backref-xetex-xepersian.def}}} +\generate{\file{beamer-xetex-xepersian.def}{\from{\jobname.dtx}{table,beamer-xetex-xepersian.def}}} +\generate{\file{beamerbasetranslator-xetex-xepersian.def}{\from{\jobname.dtx}{table,beamerbasetranslator-xetex-xepersian.def}}} +\generate{\file{bidituftesidenote-xetex-xepersian.def}{\from{\jobname.dtx}{table,bidituftesidenote-xetex-xepersian.def}}} +\generate{\file{bidimoderncv-xetex-xepersian.def}{\from{\jobname.dtx}{table,bidimoderncv-xetex-xepersian.def}}} +\generate{\file{boek3-xetex-xepersian.def}{\from{\jobname.dtx}{table,boek3-xetex-xepersian.def}}} +\generate{\file{boek-xetex-xepersian.def}{\from{\jobname.dtx}{table,boek-xetex-xepersian.def}}} +\generate{\file{bookest-xetex-xepersian.def}{\from{\jobname.dtx}{table,bookest-xetex-xepersian.def}}} +\generate{\file{book-xetex-xepersian.def}{\from{\jobname.dtx}{table,book-xetex-xepersian.def}}} +\generate{\file{breqn-xetex-xepersian.def}{\from{\jobname.dtx}{table,breqn-xetex-xepersian.def}}} +\generate{\file{latex-localize-commands-xetex-xepersian.def}{\from{\jobname.dtx}{table,latex-localize-commands-xetex-xepersian.def}}} +\generate{\file{color-localize-xetex-xepersian.def}{\from{\jobname.dtx}{table,color-localize-xetex-xepersian.def}}} +\generate{\file{xepersian-localize-commands-xetex-xepersian.def}{\from{\jobname.dtx}{table,xepersian-localize-commands-xetex-xepersian.def}}} +\generate{\file{enumerate-xetex-xepersian.def}{\from{\jobname.dtx}{table,enumerate-xetex-xepersian.def}}} +\generate{\file{enumitem-xetex-xepersian.def}{\from{\jobname.dtx}{table,enumitem-xetex-xepersian.def}}} +\generate{\file{latex-localize-environments-xetex-xepersian.def}{\from{\jobname.dtx}{table,latex-localize-environments-xetex-xepersian.def}}} +\generate{\file{xepersian-localize-environments-xetex-xepersian.def}{\from{\jobname.dtx}{table,xepersian-localize-environments-xetex-xepersian.def}}} +\generate{\file{extarticle-xetex-xepersian.def}{\from{\jobname.dtx}{table,extarticle-xetex-xepersian.def}}} +\generate{\file{extbook-xetex-xepersian.def}{\from{\jobname.dtx}{table,extbook-xetex-xepersian.def}}} +\generate{\file{extrafootnotefeatures-xetex-bidi-xetex-xepersian.def}{\from{\jobname.dtx}{table,extrafootnotefeatures-xetex-bidi-xetex-xepersian.def}}} +\generate{\file{extreport-xetex-xepersian.def}{\from{\jobname.dtx}{table,extreport-xetex-xepersian.def}}} +\generate{\file{fancyref-xetex-xepersian.def}{\from{\jobname.dtx}{table,fancyref-xetex-xepersian.def}}} +\generate{\file{footnote-xetex-bidi-xetex-xepersian.def}{\from{\jobname.dtx}{table,footnote-xetex-bidi-xetex-xepersian.def}}} +\generate{\file{framed-xetex-xepersian.def}{\from{\jobname.dtx}{table,framed-xetex-xepersian.def}}} +\generate{\file{glossaries-xetex-xepersian.def}{\from{\jobname.dtx}{table,glossaries-xetex-xepersian.def}}} +\generate{\file{hyperref-xetex-xepersian.def}{\from{\jobname.dtx}{table,hyperref-xetex-xepersian.def}}} +\generate{\file{imsproc-xetex-xepersian.def}{\from{\jobname.dtx}{table,imsproc-xetex-xepersian.def}}} +\generate{\file{kashida-xetex-xepersian.def}{\from{\jobname.dtx}{table,kashida-xetex-xepersian.def}}} +\generate{\file{listings-xetex-xepersian.def}{\from{\jobname.dtx}{table,listings-xetex-xepersian.def}}} +\generate{\file{localize-xetex-xepersian.def}{\from{\jobname.dtx}{table,localize-xetex-xepersian.def}}} +\generate{\file{memoir-xetex-xepersian.def}{\from{\jobname.dtx}{table,memoir-xetex-xepersian.def}}} +\generate{\file{latex-localize-messages-xetex-xepersian.def}{\from{\jobname.dtx}{table,latex-localize-messages-xetex-xepersian.def}}} +\generate{\file{minitoc-xetex-xepersian.def}{\from{\jobname.dtx}{table,minitoc-xetex-xepersian.def}}} +\generate{\file{latex-localize-misc-xetex-xepersian.def}{\from{\jobname.dtx}{table,latex-localize-misc-xetex-xepersian.def}}} +\generate{\file{natbib-xetex-xepersian.def}{\from{\jobname.dtx}{table,natbib-xetex-xepersian.def}}} +\generate{\file{packages-localize-xetex-xepersian.def}{\from{\jobname.dtx}{table,packages-localize-xetex-xepersian.def}}} +\generate{\file{url-xetex-xepersian.def}{\from{\jobname.dtx}{table,url-xetex-xepersian.def}}} \def\MetaPrefix{;;} \def\mapping@postamble{% \MetaPrefix ^^J% @@ -98,17 +97,17 @@ \generate{\file{persian-tex-text-nonumbers.map}{\from{\jobname.dtx}{persian-tex-text-nonumbers.map}}} \let\MetaPrefix\DoubleperCent \usepostamble\org@postamble -\generate{\file{rapport1-xepersian.def}{\from{\jobname.dtx}{table,rapport1-xepersian.def}}} -\generate{\file{rapport3-xepersian.def}{\from{\jobname.dtx}{table,rapport3-xepersian.def}}} -\generate{\file{refrep-xepersian.def}{\from{\jobname.dtx}{table,refrep-xepersian.def}}} -\generate{\file{report-xepersian.def}{\from{\jobname.dtx}{table,report-xepersian.def}}} -\generate{\file{scrartcl-xepersian.def}{\from{\jobname.dtx}{table,scrartcl-xepersian.def}}} -\generate{\file{scrbook-xepersian.def}{\from{\jobname.dtx}{table,scrbook-xepersian.def}}} -\generate{\file{scrreprt-xepersian.def}{\from{\jobname.dtx}{table,scrreprt-xepersian.def}}} -\generate{\file{soul-xepersian.def}{\from{\jobname.dtx}{table,soul-xepersian.def}}} -\generate{\file{tkz-linknodes-xepersian.def}{\from{\jobname.dtx}{table,tkz-linknodes-xepersian.def}}} -\generate{\file{tocloft-xepersian.def}{\from{\jobname.dtx}{table,tocloft-xepersian.def}}} -\generate{\file{varioref-xepersian.def}{\from{\jobname.dtx}{table,varioref-xepersian.def}}} +\generate{\file{rapport1-xetex-xepersian.def}{\from{\jobname.dtx}{table,rapport1-xetex-xepersian.def}}} +\generate{\file{rapport3-xetex-xepersian.def}{\from{\jobname.dtx}{table,rapport3-xetex-xepersian.def}}} +\generate{\file{refrep-xetex-xepersian.def}{\from{\jobname.dtx}{table,refrep-xetex-xepersian.def}}} +\generate{\file{report-xetex-xepersian.def}{\from{\jobname.dtx}{table,report-xetex-xepersian.def}}} +\generate{\file{scrartcl-xetex-xepersian.def}{\from{\jobname.dtx}{table,scrartcl-xetex-xepersian.def}}} +\generate{\file{scrbook-xetex-xepersian.def}{\from{\jobname.dtx}{table,scrbook-xetex-xepersian.def}}} +\generate{\file{scrreprt-xetex-xepersian.def}{\from{\jobname.dtx}{table,scrreprt-xetex-xepersian.def}}} +\generate{\file{soul-xetex-xepersian.def}{\from{\jobname.dtx}{table,soul-xetex-xepersian.def}}} +\generate{\file{tkz-linknodes-xetex-xepersian.def}{\from{\jobname.dtx}{table,tkz-linknodes-xetex-xepersian.def}}} +\generate{\file{tocloft-xetex-xepersian.def}{\from{\jobname.dtx}{table,tocloft-xetex-xepersian.def}}} +\generate{\file{varioref-xetex-xepersian.def}{\from{\jobname.dtx}{table,varioref-xetex-xepersian.def}}} \generate{\file{xepersian.sty}{\from{\jobname.dtx}{table,xepersian.sty}}} \generate{\file{xepersian-magazine.cls}{\from{\jobname.dtx}{table,xepersian-magazine.cls}}} \generate{\file{xepersian-mathdigitspec.sty}{\from{\jobname.dtx}{table,xepersian-mathdigitspec.sty}}} diff --git a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua index 370e1dbf635..371a4ce840c 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua +++ b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua @@ -7,7 +7,7 @@ -- babel.dtx (with options: `basic-r') -- -- --- Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +-- Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. -- Copyright (C) 1989-2012 Johannes L. Braams and -- any individual authors listed elsewhere in this file. -- All rights reserved. diff --git a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua index a6f6849e7c9..81f88aa84be 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua +++ b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua @@ -7,7 +7,7 @@ -- babel.dtx (with options: `basic') -- -- --- Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +-- Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. -- Copyright (C) 1989-2012 Johannes L. Braams and -- any individual authors listed elsewhere in this file. -- All rights reserved. @@ -444,9 +444,7 @@ function Babel.bidi(head, ispar, hdir) end head = node.prev(head) or head - - -------------- FIX HYPERLINKS ---------------- - + --- FIXES --- if has_hyperlink then local flag, linking = 0, 0 for item in node.traverse(head) do @@ -473,10 +471,23 @@ function Babel.bidi(head, ispar, hdir) end end + for item in node.traverse_id(10, head) do + local p = item + local flag = false + while p.prev and p.prev.id == 14 do + flag = true + p = p.prev + end + if flag then + node.insert_before(head, p, node.copy(item)) + node.remove(head,item) + end + end + return head end -- Make sure anything is marked as 'bidi done' (including nodes inserted --- after the babel algorithm). +-- after the babel algorithm). 128 = 1000 0000. function Babel.unset_atdir(head) local ATDIR = Babel.attr_dir for item in node.traverse(head) do diff --git a/Master/texmf-dist/tex/generic/babel/babel-ca-buddhist.tex b/Master/texmf-dist/tex/generic/babel/babel-ca-buddhist.tex index 837d83ff400..533ab3eee1c 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-ca-buddhist.tex +++ b/Master/texmf-dist/tex/generic/babel/babel-ca-buddhist.tex @@ -7,7 +7,7 @@ %% babel.dtx (with options: `ca-buddhist') %% %% -%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. %% Copyright (C) 1989-2012 Johannes L. Braams and %% any individual authors listed elsewhere in this file. %% All rights reserved. diff --git a/Master/texmf-dist/tex/generic/babel/babel-ca-chinese.tex b/Master/texmf-dist/tex/generic/babel/babel-ca-chinese.tex index cff847e02c4..be005c65e4d 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-ca-chinese.tex +++ b/Master/texmf-dist/tex/generic/babel/babel-ca-chinese.tex @@ -7,7 +7,7 @@ %% babel.dtx (with options: `ca-chinese') %% %% -%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. %% Copyright (C) 1989-2012 Johannes L. Braams and %% any individual authors listed elsewhere in this file. %% All rights reserved. diff --git a/Master/texmf-dist/tex/generic/babel/babel-ca-coptic.tex b/Master/texmf-dist/tex/generic/babel/babel-ca-coptic.tex index 43d23a1479e..df61580aeb9 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-ca-coptic.tex +++ b/Master/texmf-dist/tex/generic/babel/babel-ca-coptic.tex @@ -7,7 +7,7 @@ %% babel.dtx (with options: `ca-coptic') %% %% -%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. %% Copyright (C) 1989-2012 Johannes L. Braams and %% any individual authors listed elsewhere in this file. %% All rights reserved. diff --git a/Master/texmf-dist/tex/generic/babel/babel-ca-ethiopic.tex b/Master/texmf-dist/tex/generic/babel/babel-ca-ethiopic.tex index 95a8ef64656..4d1612ac82c 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-ca-ethiopic.tex +++ b/Master/texmf-dist/tex/generic/babel/babel-ca-ethiopic.tex @@ -7,7 +7,7 @@ %% babel.dtx (with options: `ca-ethiopic') %% %% -%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. %% Copyright (C) 1989-2012 Johannes L. Braams and %% any individual authors listed elsewhere in this file. %% All rights reserved. diff --git a/Master/texmf-dist/tex/generic/babel/babel-ca-hebrew.tex b/Master/texmf-dist/tex/generic/babel/babel-ca-hebrew.tex index 315180da5af..c0a2ad7ad86 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-ca-hebrew.tex +++ b/Master/texmf-dist/tex/generic/babel/babel-ca-hebrew.tex @@ -7,7 +7,7 @@ %% babel.dtx (with options: `ca-hebrew') %% %% -%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. %% Copyright (C) 1989-2012 Johannes L. Braams and %% any individual authors listed elsewhere in this file. %% All rights reserved. diff --git a/Master/texmf-dist/tex/generic/babel/babel-ca-islamic.tex b/Master/texmf-dist/tex/generic/babel/babel-ca-islamic.tex index 28c5dd9dc03..a2b0e493b33 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-ca-islamic.tex +++ b/Master/texmf-dist/tex/generic/babel/babel-ca-islamic.tex @@ -7,7 +7,7 @@ %% babel.dtx (with options: `ca-islamic') %% %% -%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. %% Copyright (C) 1989-2012 Johannes L. Braams and %% any individual authors listed elsewhere in this file. %% All rights reserved. diff --git a/Master/texmf-dist/tex/generic/babel/babel-ca-persian.tex b/Master/texmf-dist/tex/generic/babel/babel-ca-persian.tex index f896cbeba63..64c7ec3cb08 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-ca-persian.tex +++ b/Master/texmf-dist/tex/generic/babel/babel-ca-persian.tex @@ -7,7 +7,7 @@ %% babel.dtx (with options: `ca-persian') %% %% -%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. %% Copyright (C) 1989-2012 Johannes L. Braams and %% any individual authors listed elsewhere in this file. %% All rights reserved. diff --git a/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua b/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua index 80ec84ca1ae..f7aebcda5e8 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua +++ b/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua @@ -7,7 +7,7 @@ -- babel.dtx (with options: `bididata') -- -- --- Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +-- Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. -- Copyright (C) 1989-2012 Johannes L. Braams and -- any individual authors listed elsewhere in this file. -- All rights reserved. diff --git a/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua b/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua index 49623e9f9ce..7cf177f8d94 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua +++ b/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua @@ -7,7 +7,7 @@ -- babel.dtx (with options: `cjkdata') -- -- --- Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +-- Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. -- Copyright (C) 1989-2012 Johannes L. Braams and -- any individual authors listed elsewhere in this file. -- All rights reserved. diff --git a/Master/texmf-dist/tex/generic/babel/babel-transforms.lua b/Master/texmf-dist/tex/generic/babel/babel-transforms.lua index b5b50f10024..678f30ff2cf 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-transforms.lua +++ b/Master/texmf-dist/tex/generic/babel/babel-transforms.lua @@ -7,7 +7,7 @@ -- babel.dtx (with options: `transforms') -- -- --- Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +-- Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. -- Copyright (C) 1989-2012 Johannes L. Braams and -- any individual authors listed elsewhere in this file. -- All rights reserved. diff --git a/Master/texmf-dist/tex/generic/babel/babel.def b/Master/texmf-dist/tex/generic/babel/babel.def index 2c1c97120f4..c4eb33d3b58 100644 --- a/Master/texmf-dist/tex/generic/babel/babel.def +++ b/Master/texmf-dist/tex/generic/babel/babel.def @@ -7,7 +7,7 @@ %% babel.dtx (with options: `core') %% %% -%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. %% Copyright (C) 1989-2012 Johannes L. Braams and %% any individual authors listed elsewhere in this file. %% All rights reserved. @@ -39,7 +39,7 @@ \wlog{File: #1 #4 #3 <#2>}% \let\ProvidesFile\@undefined} \fi -\ProvidesFile{babel.def}[2024/12/21 v24.15 Babel common definitions] +\ProvidesFile{babel.def}[2025/01/01 v25.1 Babel common definitions] \ifx\AtBeginDocument\@undefined \def\@empty{} \def\loadlocalcfg#1{% @@ -595,8 +595,8 @@ \toks@\expandafter{\bbl@tempc#3}% \expandafter\edef\csname extras\languagename\endcsname{\the\toks@}% \fi} -\def\bbl@version{24.15} -\def\bbl@date{2024/12/21} +\def\bbl@version{25.1} +\def\bbl@date{2025/01/01} \ifx\language\@undefined \csname newcount\endcsname\language \fi @@ -717,7 +717,7 @@ \bbl@ifunset{bbl@id@@\languagename}% {\count@\bbl@id@last\relax \advance\count@\@ne - \bbl@csarg\chardef{id@@\languagename}\count@ + \global\bbl@csarg\chardef{id@@\languagename}\count@ \edef\bbl@id@last{\the\count@}% \ifcase\bbl@engine\or \directlua{ diff --git a/Master/texmf-dist/tex/generic/babel/babel.sty b/Master/texmf-dist/tex/generic/babel/babel.sty index 20dc15a55aa..ed9d26229e1 100644 --- a/Master/texmf-dist/tex/generic/babel/babel.sty +++ b/Master/texmf-dist/tex/generic/babel/babel.sty @@ -7,7 +7,7 @@ %% babel.dtx (with options: `package') %% %% -%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. %% Copyright (C) 1989-2012 Johannes L. Braams and %% any individual authors listed elsewhere in this file. %% All rights reserved. @@ -34,7 +34,7 @@ %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{babel}% - [2024/12/21 v24.15 + [2025/01/01 v25.1 The multilingual framework for pdfLaTeX, LuaLaTeX and XeLaTeX] \@ifpackagewith{babel}{debug} {\providecommand\bbl@trace[1]{\message{^^J[ #1 ]}}% @@ -466,8 +466,8 @@ \expandafter\@secondoftwo \fi} \fi -\def\bbl@version{24.15} -\def\bbl@date{2024/12/21} +\def\bbl@version{25.1} +\def\bbl@date{2025/01/01} \ifx\language\@undefined \csname newcount\endcsname\language \fi @@ -588,7 +588,7 @@ \bbl@ifunset{bbl@id@@\languagename}% {\count@\bbl@id@last\relax \advance\count@\@ne - \bbl@csarg\chardef{id@@\languagename}\count@ + \global\bbl@csarg\chardef{id@@\languagename}\count@ \edef\bbl@id@last{\the\count@}% \ifcase\bbl@engine\or \directlua{ diff --git a/Master/texmf-dist/tex/generic/babel/blplain.tex b/Master/texmf-dist/tex/generic/babel/blplain.tex index e6a4076d6d1..a2c33d76ef7 100644 --- a/Master/texmf-dist/tex/generic/babel/blplain.tex +++ b/Master/texmf-dist/tex/generic/babel/blplain.tex @@ -7,7 +7,7 @@ %% babel.dtx (with options: `blplain') %% %% -%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. %% Copyright (C) 1989-2012 Johannes L. Braams and %% any individual authors listed elsewhere in this file. %% All rights reserved. diff --git a/Master/texmf-dist/tex/generic/babel/bplain.tex b/Master/texmf-dist/tex/generic/babel/bplain.tex index 0483d7eb722..c9820aeaca9 100644 --- a/Master/texmf-dist/tex/generic/babel/bplain.tex +++ b/Master/texmf-dist/tex/generic/babel/bplain.tex @@ -7,7 +7,7 @@ %% babel.dtx (with options: `bplain') %% %% -%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. %% Copyright (C) 1989-2012 Johannes L. Braams and %% any individual authors listed elsewhere in this file. %% All rights reserved. diff --git a/Master/texmf-dist/tex/generic/babel/errbabel.def b/Master/texmf-dist/tex/generic/babel/errbabel.def index 9674a0fbf26..3d0106e31b1 100644 --- a/Master/texmf-dist/tex/generic/babel/errbabel.def +++ b/Master/texmf-dist/tex/generic/babel/errbabel.def @@ -7,7 +7,7 @@ %% babel.dtx (with options: `errors') %% %% -%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. %% Copyright (C) 1989-2012 Johannes L. Braams and %% any individual authors listed elsewhere in this file. %% All rights reserved. diff --git a/Master/texmf-dist/tex/generic/babel/hyphen.cfg b/Master/texmf-dist/tex/generic/babel/hyphen.cfg index b32948586c5..4eff4d560b7 100644 --- a/Master/texmf-dist/tex/generic/babel/hyphen.cfg +++ b/Master/texmf-dist/tex/generic/babel/hyphen.cfg @@ -7,7 +7,7 @@ %% babel.dtx (with options: `patterns') %% %% -%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. %% Copyright (C) 1989-2012 Johannes L. Braams and %% any individual authors listed elsewhere in this file. %% All rights reserved. @@ -37,10 +37,10 @@ \wlog{File: #1 #4 #3 <#2>}% \let\ProvidesFile\@undefined} \fi -\ProvidesFile{hyphen.cfg}[2024/12/21 v24.15 Babel hyphens] +\ProvidesFile{hyphen.cfg}[2025/01/01 v25.1 Babel hyphens] \xdef\bbl@format{\jobname} -\def\bbl@version{24.15} -\def\bbl@date{2024/12/21} +\def\bbl@version{25.1} +\def\bbl@date{2025/01/01} \ifx\AtBeginDocument\@undefined \def\@empty{} \fi diff --git a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-HK.ini b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-HK.ini index 33c381bbb67..03bb7fb075f 100644 --- a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-HK.ini +++ b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-HK.ini @@ -9,8 +9,8 @@ [identification] charset = utf8 -version = 1.12 -date = 2023-10-24 +version = 1.13 +date = 2024-12-28 name.local = 简体中文 name.english = Simplified Chinese name.opentype = Chinese Simplified @@ -237,3 +237,31 @@ fullwidth.lower.alpha = a b c d e f g h i j k l m n fullwidth.upper.alpha = A B C D E F G H I J K L M N O P Q R S T U V W X Y Z date.day = 初一 初二 初三 初四 初五 初六 初七 初八 初九 初十 十一 十二 十三 十四 十五 十六 十七 十八 十九 二十 廿一 廿二 廿三 廿四 廿五 廿六 廿七 廿八 廿九 三十 +[transforms.prehyphenation] +spacing.basic.1.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.1.1 = { insert, kern = -.5 } +spacing.basic.1.2 = { insert, penalty = 0 } +spacing.basic.1.3 = { insert, kern = .5 } +spacing.basic.1.4 = { insert, norule = -.5 0 0 } +spacing.basic.1.5 = {} +spacing.basic.2.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[、。,.・:!?)]}〉》」』】〕〗〙〛”〞]() } +spacing.basic.2.1 = { insert, kern= -.5, step = -1 } +spacing.basic.2.2 = {} +spacing.basic.3.0 = { [([{〈《「『【〔〖〘〚“〝] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.3.1 = { insert, kern = -.5, step =- 1 } +spacing.basic.3.2 = {} +; +spacing.basic.4.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[{a}]() } +spacing.basic.4.1 = { insert, kern = -.5, step = -1 } +spacing.basic.4.2 = { insert, penalty = 0 } +spacing.basic.4.3 = { insert, kern = .5 } +spacing.basic.4.4 = {} +spacing.basic.5.0 = { [{a}] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.5.1 = { insert, penalty = 0 } +spacing.basic.5.2 = { insert, kern = .5 } +spacing.basic.5.3 = { insert, norule = -.5 0 0 } +spacing.basic.5.4 = {} +spacing.basic.6.0 = { ^()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.6.1 = { insert, kern = -.5 } +spacing.basic.6.2 = {} + diff --git a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-MO.ini b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-MO.ini index 56067ebb86d..ecb56844074 100644 --- a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-MO.ini +++ b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-MO.ini @@ -9,8 +9,8 @@ [identification] charset = utf8 -version = 1.12 -date = 2023-10-24 +version = 1.13 +date = 2024-12-28 name.local = 简体中文 name.english = Simplified Chinese name.opentype = Chinese Simplified @@ -237,3 +237,31 @@ fullwidth.lower.alpha = a b c d e f g h i j k l m n fullwidth.upper.alpha = A B C D E F G H I J K L M N O P Q R S T U V W X Y Z date.day = 初一 初二 初三 初四 初五 初六 初七 初八 初九 初十 十一 十二 十三 十四 十五 十六 十七 十八 十九 二十 廿一 廿二 廿三 廿四 廿五 廿六 廿七 廿八 廿九 三十 +[transforms.prehyphenation] +spacing.basic.1.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.1.1 = { insert, kern = -.5 } +spacing.basic.1.2 = { insert, penalty = 0 } +spacing.basic.1.3 = { insert, kern = .5 } +spacing.basic.1.4 = { insert, norule = -.5 0 0 } +spacing.basic.1.5 = {} +spacing.basic.2.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[、。,.・:!?)]}〉》」』】〕〗〙〛”〞]() } +spacing.basic.2.1 = { insert, kern= -.5, step = -1 } +spacing.basic.2.2 = {} +spacing.basic.3.0 = { [([{〈《「『【〔〖〘〚“〝] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.3.1 = { insert, kern = -.5, step =- 1 } +spacing.basic.3.2 = {} +; +spacing.basic.4.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[{a}]() } +spacing.basic.4.1 = { insert, kern = -.5, step = -1 } +spacing.basic.4.2 = { insert, penalty = 0 } +spacing.basic.4.3 = { insert, kern = .5 } +spacing.basic.4.4 = {} +spacing.basic.5.0 = { [{a}] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.5.1 = { insert, penalty = 0 } +spacing.basic.5.2 = { insert, kern = .5 } +spacing.basic.5.3 = { insert, norule = -.5 0 0 } +spacing.basic.5.4 = {} +spacing.basic.6.0 = { ^()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.6.1 = { insert, kern = -.5 } +spacing.basic.6.2 = {} + diff --git a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-SG.ini b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-SG.ini index c2b08b3ee47..dc26e9f0118 100644 --- a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-SG.ini +++ b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans-SG.ini @@ -9,8 +9,8 @@ [identification] charset = utf8 -version = 1.12 -date = 2023-10-24 +version = 1.13 +date = 2024-12-28 name.local = 简体中文 name.english = Simplified Chinese name.opentype = Chinese Simplified @@ -237,4 +237,32 @@ fullwidth.lower.alpha = a b c d e f g h i j k l m n fullwidth.upper.alpha = A B C D E F G H I J K L M N O P Q R S T U V W X Y Z date.day = 初一 初二 初三 初四 初五 初六 初七 初八 初九 初十 十一 十二 十三 十四 十五 十六 十七 十八 十九 二十 廿一 廿二 廿三 廿四 廿五 廿六 廿七 廿八 廿九 三十 +[transforms.prehyphenation] +spacing.basic.1.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.1.1 = { insert, kern = -.5 } +spacing.basic.1.2 = { insert, penalty = 0 } +spacing.basic.1.3 = { insert, kern = .5 } +spacing.basic.1.4 = { insert, norule = -.5 0 0 } +spacing.basic.1.5 = {} +spacing.basic.2.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[、。,.・:!?)]}〉》」』】〕〗〙〛”〞]() } +spacing.basic.2.1 = { insert, kern= -.5, step = -1 } +spacing.basic.2.2 = {} +spacing.basic.3.0 = { [([{〈《「『【〔〖〘〚“〝] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.3.1 = { insert, kern = -.5, step =- 1 } +spacing.basic.3.2 = {} +; +spacing.basic.4.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[{a}]() } +spacing.basic.4.1 = { insert, kern = -.5, step = -1 } +spacing.basic.4.2 = { insert, penalty = 0 } +spacing.basic.4.3 = { insert, kern = .5 } +spacing.basic.4.4 = {} +spacing.basic.5.0 = { [{a}] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.5.1 = { insert, penalty = 0 } +spacing.basic.5.2 = { insert, kern = .5 } +spacing.basic.5.3 = { insert, norule = -.5 0 0 } +spacing.basic.5.4 = {} +spacing.basic.6.0 = { ^()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.6.1 = { insert, kern = -.5 } +spacing.basic.6.2 = {} + diff --git a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans.ini b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans.ini index 8c7437a953d..ee0252dd60f 100644 --- a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans.ini +++ b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hans.ini @@ -11,8 +11,8 @@ [identification] charset = utf8 -version = 1.14 -date = 2023-10-24 +version = 1.15 +date = 2024-12-28 name.local = 简体中文 name.english = Simplified Chinese name.opentype = Chinese Simplified @@ -240,3 +240,31 @@ fullwidth.lower.alpha = a b c d e f g h i j k l m n fullwidth.upper.alpha = A B C D E F G H I J K L M N O P Q R S T U V W X Y Z date.day = 初一 初二 初三 初四 初五 初六 初七 初八 初九 初十 十一 十二 十三 十四 十五 十六 十七 十八 十九 二十 廿一 廿二 廿三 廿四 廿五 廿六 廿七 廿八 廿九 三十 +[transforms.prehyphenation] +spacing.basic.1.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.1.1 = { insert, kern = -.5 } +spacing.basic.1.2 = { insert, penalty = 0 } +spacing.basic.1.3 = { insert, kern = .5 } +spacing.basic.1.4 = { insert, norule = -.5 0 0 } +spacing.basic.1.5 = {} +spacing.basic.2.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[、。,.・:!?)]}〉》」』】〕〗〙〛”〞]() } +spacing.basic.2.1 = { insert, kern= -.5, step = -1 } +spacing.basic.2.2 = {} +spacing.basic.3.0 = { [([{〈《「『【〔〖〘〚“〝] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.3.1 = { insert, kern = -.5, step =- 1 } +spacing.basic.3.2 = {} +; +spacing.basic.4.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[{a}]() } +spacing.basic.4.1 = { insert, kern = -.5, step = -1 } +spacing.basic.4.2 = { insert, penalty = 0 } +spacing.basic.4.3 = { insert, kern = .5 } +spacing.basic.4.4 = {} +spacing.basic.5.0 = { [{a}] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.5.1 = { insert, penalty = 0 } +spacing.basic.5.2 = { insert, kern = .5 } +spacing.basic.5.3 = { insert, norule = -.5 0 0 } +spacing.basic.5.4 = {} +spacing.basic.6.0 = { ^()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.6.1 = { insert, kern = -.5 } +spacing.basic.6.2 = {} + diff --git a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant-HK.ini b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant-HK.ini index 8fc0abab80a..4a531ac4e66 100644 --- a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant-HK.ini +++ b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant-HK.ini @@ -9,8 +9,8 @@ [identification] charset = utf8 -version = 1.12 -date = 2023-10-24 +version = 1.13 +date = 2024-12-28 name.local = 繁體中文 name.english = Traditional Chinese name.opentype = Chinese Traditional @@ -237,4 +237,32 @@ fullwidth.lower.alpha = a b c d e f g h i j k l m n fullwidth.upper.alpha = A B C D E F G H I J K L M N O P Q R S T U V W X Y Z date.day = 初一 初二 初三 初四 初五 初六 初七 初八 初九 初十 十一 十二 十三 十四 十五 十六 十七 十八 十九 二十 廿一 廿二 廿三 廿四 廿五 廿六 廿七 廿八 廿九 三十 +[transforms.prehyphenation] +spacing.basic.1.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.1.1 = { insert, kern = -.5 } +spacing.basic.1.2 = { insert, penalty = 0 } +spacing.basic.1.3 = { insert, kern = .5 } +spacing.basic.1.4 = { insert, norule = -.5 0 0 } +spacing.basic.1.5 = {} +spacing.basic.2.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[、。,.・:!?)]}〉》」』】〕〗〙〛”〞]() } +spacing.basic.2.1 = { insert, kern= -.5, step = -1 } +spacing.basic.2.2 = {} +spacing.basic.3.0 = { [([{〈《「『【〔〖〘〚“〝] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.3.1 = { insert, kern = -.5, step =- 1 } +spacing.basic.3.2 = {} +; +spacing.basic.4.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[{a}]() } +spacing.basic.4.1 = { insert, kern = -.5, step = -1 } +spacing.basic.4.2 = { insert, penalty = 0 } +spacing.basic.4.3 = { insert, kern = .5 } +spacing.basic.4.4 = {} +spacing.basic.5.0 = { [{a}] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.5.1 = { insert, penalty = 0 } +spacing.basic.5.2 = { insert, kern = .5 } +spacing.basic.5.3 = { insert, norule = -.5 0 0 } +spacing.basic.5.4 = {} +spacing.basic.6.0 = { ^()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.6.1 = { insert, kern = -.5 } +spacing.basic.6.2 = {} + diff --git a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant-MO.ini b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant-MO.ini index 382daf0da07..7a05703f5cf 100644 --- a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant-MO.ini +++ b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant-MO.ini @@ -9,8 +9,8 @@ [identification] charset = utf8 -version = 1.12 -date = 2023-10-24 +version = 1.13 +date = 2024-12-28 name.local = 繁體中文 name.english = Traditional Chinese name.opentype = Chinese Traditional @@ -237,4 +237,32 @@ fullwidth.lower.alpha = a b c d e f g h i j k l m n fullwidth.upper.alpha = A B C D E F G H I J K L M N O P Q R S T U V W X Y Z date.day = 初一 初二 初三 初四 初五 初六 初七 初八 初九 初十 十一 十二 十三 十四 十五 十六 十七 十八 十九 二十 廿一 廿二 廿三 廿四 廿五 廿六 廿七 廿八 廿九 三十 +[transforms.prehyphenation] +spacing.basic.1.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.1.1 = { insert, kern = -.5 } +spacing.basic.1.2 = { insert, penalty = 0 } +spacing.basic.1.3 = { insert, kern = .5 } +spacing.basic.1.4 = { insert, norule = -.5 0 0 } +spacing.basic.1.5 = {} +spacing.basic.2.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[、。,.・:!?)]}〉》」』】〕〗〙〛”〞]() } +spacing.basic.2.1 = { insert, kern= -.5, step = -1 } +spacing.basic.2.2 = {} +spacing.basic.3.0 = { [([{〈《「『【〔〖〘〚“〝] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.3.1 = { insert, kern = -.5, step =- 1 } +spacing.basic.3.2 = {} +; +spacing.basic.4.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[{a}]() } +spacing.basic.4.1 = { insert, kern = -.5, step = -1 } +spacing.basic.4.2 = { insert, penalty = 0 } +spacing.basic.4.3 = { insert, kern = .5 } +spacing.basic.4.4 = {} +spacing.basic.5.0 = { [{a}] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.5.1 = { insert, penalty = 0 } +spacing.basic.5.2 = { insert, kern = .5 } +spacing.basic.5.3 = { insert, norule = -.5 0 0 } +spacing.basic.5.4 = {} +spacing.basic.6.0 = { ^()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.6.1 = { insert, kern = -.5 } +spacing.basic.6.2 = {} + diff --git a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant.ini b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant.ini index 98eb7401c64..5b95fa08949 100644 --- a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant.ini +++ b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh-Hant.ini @@ -11,8 +11,8 @@ [identification] charset = utf8 -version = 1.13 -date = 2023-10-24 +version = 1.14 +date = 2024-12-28 name.local = 繁體中文 name.english = Traditional Chinese name.opentype = Chinese Traditional @@ -242,4 +242,32 @@ fullwidth.lower.alpha = a b c d e f g h i j k l m n fullwidth.upper.alpha = A B C D E F G H I J K L M N O P Q R S T U V W X Y Z date.day = 初一 初二 初三 初四 初五 初六 初七 初八 初九 初十 十一 十二 十三 十四 十五 十六 十七 十八 十九 二十 廿一 廿二 廿三 廿四 廿五 廿六 廿七 廿八 廿九 三十 +[transforms.prehyphenation] +spacing.basic.1.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.1.1 = { insert, kern = -.5 } +spacing.basic.1.2 = { insert, penalty = 0 } +spacing.basic.1.3 = { insert, kern = .5 } +spacing.basic.1.4 = { insert, norule = -.5 0 0 } +spacing.basic.1.5 = {} +spacing.basic.2.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[、。,.・:!?)]}〉》」』】〕〗〙〛”〞]() } +spacing.basic.2.1 = { insert, kern= -.5, step = -1 } +spacing.basic.2.2 = {} +spacing.basic.3.0 = { [([{〈《「『【〔〖〘〚“〝] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.3.1 = { insert, kern = -.5, step =- 1 } +spacing.basic.3.2 = {} +; +spacing.basic.4.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[{a}]() } +spacing.basic.4.1 = { insert, kern = -.5, step = -1 } +spacing.basic.4.2 = { insert, penalty = 0 } +spacing.basic.4.3 = { insert, kern = .5 } +spacing.basic.4.4 = {} +spacing.basic.5.0 = { [{a}] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.5.1 = { insert, penalty = 0 } +spacing.basic.5.2 = { insert, kern = .5 } +spacing.basic.5.3 = { insert, norule = -.5 0 0 } +spacing.basic.5.4 = {} +spacing.basic.6.0 = { ^()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.6.1 = { insert, kern = -.5 } +spacing.basic.6.2 = {} + diff --git a/Master/texmf-dist/tex/generic/babel/luababel.def b/Master/texmf-dist/tex/generic/babel/luababel.def index 2e538630e81..9e79ae4a6f9 100644 --- a/Master/texmf-dist/tex/generic/babel/luababel.def +++ b/Master/texmf-dist/tex/generic/babel/luababel.def @@ -7,7 +7,7 @@ %% babel.dtx (with options: `luatex') %% %% -%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. %% Copyright (C) 1989-2012 Johannes L. Braams and %% any individual authors listed elsewhere in this file. %% All rights reserved. diff --git a/Master/texmf-dist/tex/generic/babel/nil.ldf b/Master/texmf-dist/tex/generic/babel/nil.ldf index 03610c0d855..b8f15b9b568 100644 --- a/Master/texmf-dist/tex/generic/babel/nil.ldf +++ b/Master/texmf-dist/tex/generic/babel/nil.ldf @@ -7,7 +7,7 @@ %% babel.dtx (with options: `nil') %% %% -%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. %% Copyright (C) 1989-2012 Johannes L. Braams and %% any individual authors listed elsewhere in this file. %% All rights reserved. @@ -32,7 +32,7 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension |.ins|) which are part of the distribution. %% -\ProvidesLanguage{nil}[2024/12/21 v24.15 Nil language] +\ProvidesLanguage{nil}[2025/01/01 v25.1 Nil language] \LdfInit{nil}{datenil} \ifx\l@nil\@undefined \newlanguage\l@nil diff --git a/Master/texmf-dist/tex/generic/babel/plain.def b/Master/texmf-dist/tex/generic/babel/plain.def index 6624d517539..f278a21aaba 100644 --- a/Master/texmf-dist/tex/generic/babel/plain.def +++ b/Master/texmf-dist/tex/generic/babel/plain.def @@ -7,7 +7,7 @@ %% babel.dtx (with options: `plain') %% %% -%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. %% Copyright (C) 1989-2012 Johannes L. Braams and %% any individual authors listed elsewhere in this file. %% All rights reserved. diff --git a/Master/texmf-dist/tex/generic/babel/switch.def b/Master/texmf-dist/tex/generic/babel/switch.def index e991164458d..ec58318b70b 100644 --- a/Master/texmf-dist/tex/generic/babel/switch.def +++ b/Master/texmf-dist/tex/generic/babel/switch.def @@ -7,7 +7,7 @@ %% babel.dtx (with options: `kernel') %% %% -%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. %% Copyright (C) 1989-2012 Johannes L. Braams and %% any individual authors listed elsewhere in this file. %% All rights reserved. diff --git a/Master/texmf-dist/tex/generic/babel/txtbabel.def b/Master/texmf-dist/tex/generic/babel/txtbabel.def index 380fb2380c7..28f5fe332b0 100644 --- a/Master/texmf-dist/tex/generic/babel/txtbabel.def +++ b/Master/texmf-dist/tex/generic/babel/txtbabel.def @@ -7,7 +7,7 @@ %% babel.dtx (with options: `texxet') %% %% -%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. %% Copyright (C) 1989-2012 Johannes L. Braams and %% any individual authors listed elsewhere in this file. %% All rights reserved. diff --git a/Master/texmf-dist/tex/generic/babel/xebabel.def b/Master/texmf-dist/tex/generic/babel/xebabel.def index 1e8d4183cc0..24559221338 100644 --- a/Master/texmf-dist/tex/generic/babel/xebabel.def +++ b/Master/texmf-dist/tex/generic/babel/xebabel.def @@ -7,7 +7,7 @@ %% babel.dtx (with options: `xetex') %% %% -%% Copyright (C) 2012-2024 Javier Bezos and Johannes L. Braams. +%% Copyright (C) 2012-2025 Javier Bezos and Johannes L. Braams. %% Copyright (C) 1989-2012 Johannes L. Braams and %% any individual authors listed elsewhere in this file. %% All rights reserved. diff --git a/Master/texmf-dist/tex/generic/tex4ht/mathml.4ht b/Master/texmf-dist/tex/generic/tex4ht/mathml.4ht index a36a855147a..09adb9c4cf3 100644 --- a/Master/texmf-dist/tex/generic/tex4ht/mathml.4ht +++ b/Master/texmf-dist/tex/generic/tex4ht/mathml.4ht @@ -1,5 +1,5 @@ -% mathml.4ht (2024-10-11-14:13), generated from tex4ht-mathml.tex -% Copyright 2009-2024 TeX Users Group +% mathml.4ht (2025-01-05-13:36), generated from tex4ht-mathml.tex +% Copyright 2009-2025 TeX Users Group % Copyright 1999-2009 Eitan M. Gurari % % This work may be distributed and/or modified under the @@ -17,7 +17,7 @@ % % If you modify this program, changing the % version identification would be appreciated. -\immediate\write-1{version 2024-10-11-14:13} +\immediate\write-1{version 2025-01-05-13:36} \exit:ifnot{Preamble,% accents,% @@ -877,10 +877,12 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% {} {\HCode{<\a:mathml mover\Hnewline accent="true"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}% \:widetilde:over \HCode{</\a:mathml mover>}} - \Configure{accent}\tilde\tilde{{}{}} - {} - {\HCode{<\a:mathml mover\Hnewline accent="true"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}% - \:tilde:over \HCode{</\a:mathml mover>}} + % this configuration caused problems with text accents. + % we can use Unicode characters with tilde accents instead even in MathML + % \Configure{accent}\tilde\tilde{{}{}} + % {} + % {\HCode{<\a:mathml mover\Hnewline accent="true"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}% + % \:tilde:over \HCode{</\a:mathml mover>}} \Configure{accent}\widehat\widehat{{}{}} {} {\HCode{<\a:mathml mover\Hnewline accent="true"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}% @@ -1801,6 +1803,8 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ConfigureHinput{amsbsy} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1813,7 +1817,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% \endinput\empty\empty\empty\empty\empty\empty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ConfigureHinput{amsmath} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -2185,6 +2188,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% \endinput\empty\empty\empty\empty\empty\empty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ConfigureHinput{amsfonts} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -2196,7 +2200,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% \endinput\empty\empty\empty\empty\empty\empty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ConfigureHinput{amstext} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -2270,6 +2273,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% \endinput\empty\empty\empty\empty\empty\empty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ConfigureHinput{amstex} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -2753,10 +2757,12 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% {} {\HCode{<\a:mathml mover\Hnewline accent="true"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}% \:widetilde:over \HCode{</\a:mathml mover>}} - \Configure{accent}\tilde\tilde{{}{}} - {} - {\HCode{<\a:mathml mover\Hnewline accent="true"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}% - \:tilde:over \HCode{</\a:mathml mover>}} + % this configuration caused problems with text accents. + % we can use Unicode characters with tilde accents instead even in MathML + % \Configure{accent}\tilde\tilde{{}{}} + % {} + % {\HCode{<\a:mathml mover\Hnewline accent="true"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}% + % \:tilde:over \HCode{</\a:mathml mover>}} \Configure{accent}\widehat\widehat{{}{}} {} {\HCode{<\a:mathml mover\Hnewline accent="true"><\a:mathml mrow\Hnewline>}#2\HCode{</\a:mathml mrow>}% @@ -3340,6 +3346,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ConfigureHinput{array} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -3483,7 +3490,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ConfigureHinput{vanilla} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -3527,7 +3533,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ConfigureHinput{amssymb} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -3859,6 +3864,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ConfigureHinput{dcolumn} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -3942,6 +3948,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ConfigureHinput{mathtools} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -4096,6 +4103,13 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% + + + + + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ConfigureHinput{accents} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -4119,7 +4133,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ConfigureHinput{subeqnarray} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -4169,6 +4182,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ConfigureHinput{siunitx} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -4184,7 +4198,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% \endinput\empty\empty\empty\empty\empty\empty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ConfigureHinput{sistyle} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -4282,8 +4295,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% - - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ConfigureHinput{ulem} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -4314,6 +4325,7 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% \endinput\empty\empty\empty\empty\empty\empty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ConfigureHinput{cancel} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -4357,7 +4369,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ConfigureHinput{stmaryrd} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -4477,6 +4488,12 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% + + + + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ConfigureHinput{mhchem} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -4611,7 +4628,6 @@ accent="true">&\#x0332;</\a:mathml mo></\a:mathml munder>}% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ConfigureHinput{esvect} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/tex/generic/tex4ht/multind.4ht b/Master/texmf-dist/tex/generic/tex4ht/multind.4ht index 4c531c96f89..f50bf779fb3 100644 --- a/Master/texmf-dist/tex/generic/tex4ht/multind.4ht +++ b/Master/texmf-dist/tex/generic/tex4ht/multind.4ht @@ -1,7 +1,6 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% multind.4ht 2024-12-08-14:21 % -% Copyright (C) 1999-2009 Eitan M. Gurari % -% Copyright 2009-2024 TeX Users Group +% multind.4ht (2025-01-05-08:19), generated from tex4ht-4ht.tex +% Copyright 1999-2009 Eitan M. Gurari +% Copyright 2009-2025 TeX Users Group % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either @@ -18,6 +17,8 @@ % % If you modify this program, changing the % version identification would be appreciated. +\immediate\write-1{version 2025-01-05-08:19} + \pend:defII\@wrindex{\warn:idx{##1}\@ifundefined{##1@idxfile}{}{\html:addr \hbox{\Link-{}{\a:indexhaddr diff --git a/Master/texmf-dist/tex/generic/tex4ht/splitidx.4ht b/Master/texmf-dist/tex/generic/tex4ht/splitidx.4ht index 4fdaf6a4a71..e0f229fc9ea 100644 --- a/Master/texmf-dist/tex/generic/tex4ht/splitidx.4ht +++ b/Master/texmf-dist/tex/generic/tex4ht/splitidx.4ht @@ -1,7 +1,6 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% splitidx.4ht 2024-12-08-14:21 % -% Copyright (C) 2003-2009 Eitan M. Gurari % -% Copyright 2009-2024 TeX Users Group +% splitidx.4ht (2025-01-05-08:19), generated from tex4ht-4ht.tex +% Copyright 2003-2009 Eitan M. Gurari +% Copyright 2009-2025 TeX Users Group % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either @@ -18,6 +17,8 @@ % % If you modify this program, changing the % version identification would be appreciated. +\immediate\write-1{version 2025-01-05-08:19} + \def\warn:idx#1{% \expandafter\ifx \csname #1warn:idx\endcsname\relax \expandafter\global diff --git a/Master/texmf-dist/tex/generic/tex4ht/unicode.4ht b/Master/texmf-dist/tex/generic/tex4ht/unicode.4ht index b3dab45240a..506d0d78b51 100644 --- a/Master/texmf-dist/tex/generic/tex4ht/unicode.4ht +++ b/Master/texmf-dist/tex/generic/tex4ht/unicode.4ht @@ -1,5 +1,5 @@ -% unicode.4ht (2024-12-11-12:49), generated from tex4ht-unicode.tex -% Copyright 2009-2023 TeX Users Group +% unicode.4ht (2024-12-15-07:18), generated from tex4ht-unicode.tex +% Copyright 2009-2024 TeX Users Group % Copyright 1998-2009 Eitan M. Gurari % % This work may be distributed and/or modified under the @@ -17,7 +17,7 @@ % % If you modify this program, changing the % version identification would be appreciated. -\immediate\write-1{version 2024-12-11-12:49} +\immediate\write-1{version 2024-12-15-07:18} \exit:ifnot{8859-6,% SIunits,% diff --git a/Master/texmf-dist/tex/generic/tikzducks/t-tikzducks.mkiv b/Master/texmf-dist/tex/generic/tikzducks/t-tikzducks.mkiv index e76f507264d..21a44d4a7dd 100644 --- a/Master/texmf-dist/tex/generic/tikzducks/t-tikzducks.mkiv +++ b/Master/texmf-dist/tex/generic/tikzducks/t-tikzducks.mkiv @@ -14,7 +14,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Code for this ConTeXt User Module kindly provided by @JairoAdelRio https://github.com/samcarter/tikzducks/pull/25 -\writestatus{loading}{ConTeXt User Module / TikZDucks 2024/12/10 version v1.9 Draw rubber ducks in TikZ} +\writestatus{loading}{ConTeXt User Module / TikZDucks 2025/01/05 version v1.10 Draw rubber ducks in TikZ} \setupcolors[state=start] \usemodule[tikz] diff --git a/Master/texmf-dist/tex/generic/tikzducks/tikzducks-generic.tex b/Master/texmf-dist/tex/generic/tikzducks/tikzducks-generic.tex index c7c420f4e52..79a18967dcd 100644 --- a/Master/texmf-dist/tex/generic/tikzducks/tikzducks-generic.tex +++ b/Master/texmf-dist/tex/generic/tikzducks/tikzducks-generic.tex @@ -13,112 +13,130 @@ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newif\ifduck@name -\newif\ifduck@invisible +\def\duck@listhead{} +\def\duck@listacces{} +\def\duck@headtext{head} +\def\duck@accesstext{acess} + +\ExplSyntaxOn +\NewDocumentCommand{\duck@ini}{om}{ + \expandafter\newif\csname ifduck@#2\endcsname + \def\duck@tmp{#1} + \ifx\duck@headtext\duck@tmp + \tl_put_right:Nn \duck@listhead { {#2} } + \fi + \ifx\duck@accesstext\duck@tmp + \tl_put_right:Nn \duck@listacces { {#2} } + \fi +} +\ExplSyntaxOff + +\duck@ini{name} +\duck@ini{invisible} % Environment %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newif\ifduck@water +\duck@ini{water} % body parts %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newif\ifduck@grumpy -\newif\ifduck@laughing -\newif\ifduck@parrot +\duck@ini{grumpy} +\duck@ini{laughing} +\duck@ini{parrot} % hair styles %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newif\ifduck@shorthair -\newif\ifduck@longhair -\newif\ifduck@crazyhair -\newif\ifduck@recedinghair -\newif\ifduck@eyebrow -\newif\ifduck@beard -\newif\ifduck@mohican -\newif\ifduck@mullet -\newif\ifduck@parting +\duck@ini[head]{shorthair} +\duck@ini[head]{longhair} +\duck@ini[head]{crazyhair} +\duck@ini[head]{recedinghair} +\duck@ini{eyebrow} +\duck@ini[head]{beard} +\duck@ini[head]{mohican} +\duck@ini[head]{mullet} +\duck@ini[head]{parting} % clothing %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newif\ifduck@clothing -\newif\ifduck@tshirt -\newif\ifduck@jacket -\newif\ifduck@tie -\newif\ifduck@cape -\newif\ifduck@stripes -\newif\ifduck@bowtie -\newif\ifduck@lapel -\newif\ifduck@aodai -\newif\ifduck@scarf +\duck@ini{clothing} +\duck@ini{tshirt} +\duck@ini{jacket} +\duck@ini{tie} +\duck@ini[acess]{cape} +\duck@ini{stripes} +\duck@ini[acess]{bowtie} +\duck@ini{lapel} +\duck@ini{aodai} +\duck@ini[acess]{scarf} % Headgear %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newif\ifduck@alien -\newif\ifduck@hat -\newif\ifduck@cap -\newif\ifduck@santa -\newif\ifduck@unicorn -\newif\ifduck@magichat -\newif\ifduck@chef -\newif\ifduck@witch -\newif\ifduck@graduate -\newif\ifduck@beret -\newif\ifduck@crown -\newif\ifduck@queencrown -\newif\ifduck@kingcrown -\newif\ifduck@peakedcap -\newif\ifduck@bunny -\newif\ifduck@tophat -\newif\ifduck@darthvader -\newif\ifduck@harlequin -\newif\ifduck@strawhat -\newif\ifduck@helmet -\newif\ifduck@viking -\newif\ifduck@devil -\newif\ifduck@conicalhat -\newif\ifduck@sailor -\newif\ifduck@bobblehat -\newif\ifduck@sombrero +\duck@ini[head]{alien} +\duck@ini[head]{hat} +\duck@ini[head]{cap} +\duck@ini[head]{santa} +\duck@ini{unicorn} +\duck@ini[head]{magichat} +\duck@ini[head]{chef} +\duck@ini[head]{witch} +\duck@ini[head]{graduate} +\duck@ini[head]{beret} +\duck@ini[head]{crown} +\duck@ini[head]{queencrown} +\duck@ini[head]{kingcrown} +\duck@ini[head]{peakedcap} +\duck@ini[head]{bunny} +\duck@ini[head]{tophat} +\duck@ini[head]{darthvader} +\duck@ini[head]{harlequin} +\duck@ini[head]{strawhat} +\duck@ini[head]{helmet} +\duck@ini[head]{viking} +\duck@ini[head]{devil} +\duck@ini[head]{conicalhat} +\duck@ini[head]{sailor} +\duck@ini[head]{bobblehat} +\duck@ini[head]{sombrero} % Accessories %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newif\ifduck@glasses -\newif\ifduck@sunglasses -\newif\ifduck@squareglasses -\newif\ifduck@icecream -\newif\ifduck@book -\newif\ifduck@magicwand -\newif\ifduck@cricket -\newif\ifduck@rollingpin -\newif\ifduck@signpost -\newif\ifduck@lightsaber -\newif\ifduck@cake -\newif\ifduck@pizza -\newif\ifduck@hockey -\newif\ifduck@baguette -\newif\ifduck@football -\newif\ifduck@mask -\newif\ifduck@necklace -\newif\ifduck@milkshake -\newif\ifduck@wine -\newif\ifduck@prison -\newif\ifduck@speech -\newif\ifduck@think -\newif\ifduck@torch -\newif\ifduck@easter -\newif\ifduck@basket -\newif\ifduck@buttons -\newif\ifduck@sheep -\newif\ifduck@horsetail -\newif\ifduck@crozier -\newif\ifduck@davidlikespineapplepizza -\newif\ifduck@wing -\newif\ifduck@stethoscope -\newif\ifduck@neckerchief -\newif\ifduck@snowduck -\newif\ifduck@vampire -\newif\ifduck@crystalball -\newif\ifduck@cheese -\newif\ifduck@shovel -\newif\ifduck@pickaxe -\newif\ifduck@strawbroom -\newif\ifduck@broom -\newif\ifduck@umbrella -\newif\ifduck@umbrellaclosed -\newif\ifduck@handbag -\newif\ifduck@cocktail -\newif\ifduck@overleaf -\newif\ifduck@banana -\newif\ifduck@stick -\newif\ifduck@megaphone +\duck@ini[acess]{glasses} +\duck@ini[acess]{sunglasses} +\duck@ini[acess]{squareglasses} +\duck@ini[acess]{icecream} +\duck@ini[acess]{book} +\duck@ini[acess]{magicwand} +\duck@ini[acess]{cricket} +\duck@ini[acess]{rollingpin} +\duck@ini[acess]{signpost} +\duck@ini[acess]{lightsaber} +\duck@ini[acess]{cake} +\duck@ini[acess]{pizza} +\duck@ini[acess]{hockey} +\duck@ini[acess]{baguette} +\duck@ini[acess]{football} +\duck@ini[acess]{mask} +\duck@ini[acess]{necklace} +\duck@ini[acess]{milkshake} +\duck@ini[acess]{wine} +\duck@ini[acess]{prison} +\duck@ini{speech} +\duck@ini{think} +\duck@ini[acess]{torch} +\duck@ini[acess]{easter} +\duck@ini[acess]{basket} +\duck@ini{buttons} +\duck@ini{sheep} +\duck@ini{horsetail} +\duck@ini[acess]{crozier} +\duck@ini{davidlikespineapplepizza} +\duck@ini{wing} +\duck@ini[acess]{stethoscope} +\duck@ini[acess]{neckerchief} +\duck@ini{snowduck} +\duck@ini{vampire} +\duck@ini[acess]{crystalball} +\duck@ini[acess]{cheese} +\duck@ini[acess]{shovel} +\duck@ini[acess]{pickaxe} +\duck@ini[acess]{strawbroom} +\duck@ini[acess]{broom} +\duck@ini[acess]{umbrella} +\duck@ini[acess]{umbrellaclosed} +\duck@ini[acess]{handbag} +\duck@ini[acess]{cocktail} +\duck@ini{overleaf} +\duck@ini[acess]{banana} +\duck@ini[acess]{stick} +\duck@ini{megaphone} \tikzset{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -618,6 +636,7 @@ \ifduck@devil \fill[\duck@devil] (0.7723,2.3756) .. controls (0.6369,2.1184) and (0.7916,2.0228) .. (0.8360,1.9897) .. controls (0.8744,1.9675) and (0.8774,1.9511) .. (0.8853,1.9173) .. controls (0.8853,1.8595) and (0.8407,1.8127) .. (0.7856,1.8127) .. controls (0.7535,1.8178) and (0.7240,1.8231) .. (0.6965,1.8545) .. controls (0.6965,1.8545) and (0.4451,2.2259) .. (0.7723,2.3756) -- cycle; \fi +% % Conical Hat (background) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifduck@conicalhat \fill[\duck@conicalhat!50!black,rotate=-21] (0.265,1.915) ellipse[x radius=0.79, y radius=0.1]; @@ -1486,8 +1505,8 @@ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\pgfmathdeclarerandomlist{head}{{shorthair}{longhair}{crazyhair}{mohican}{mullet}{beard}{alien}{hat}{cap}{santa}{chef}{graduate}{beret}{magichat}{witch}{crown}{bunny}{peakedcap}{tophat}{queencrown}{kingcrown}{harlequin}{strawhat}{parting}} -\pgfmathdeclarerandomlist{accessories}{{glasses}{sunglasses}{icecream}{book}{signpost}{magicwand}{cricket}{rollingpin}{lightsaber}{cake}{pizza}{hockey}{baguette}{football}{mask}{necklace}{milkshake}{wine}{prison}{cape}{torch}{crozier}{easter}{stethoscope}{neckerchief}{cheese}{shovel}{pickaxe}{crystalball}} +\pgfmathdeclarerandomlist{head}{\duck@listhead} +\pgfmathdeclarerandomlist{accessories}{\duck@listacces} \def\shuffleducks{% \pgfmathrandomitem{\head}{head}% @@ -1499,7 +1518,7 @@ \newcommand*{\randuck}[1][]{% \shuffleducks% \duck[\randomhead, \randomaccessories, #1]% -} +} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % diff --git a/Master/texmf-dist/tex/generic/tikzducks/tikzducks.sty b/Master/texmf-dist/tex/generic/tikzducks/tikzducks.sty index 724cfc61421..6e0822a4a48 100644 --- a/Master/texmf-dist/tex/generic/tikzducks/tikzducks.sty +++ b/Master/texmf-dist/tex/generic/tikzducks/tikzducks.sty @@ -12,7 +12,7 @@ % See https://www.latex-project.org/lppl.txt % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzducks}[2024/12/10 version v1.9 Draw rubber ducks in TikZ] +\ProvidesPackage{tikzducks}[2025/01/05 version v1.10 Draw rubber ducks in TikZ] \RequirePackage{expl3} \RequirePackage{tikz} diff --git a/Master/texmf-dist/tex/latex/acmart/acmart-tagged.cls b/Master/texmf-dist/tex/latex/acmart/acmart-tagged.cls index 12aa43897f3..851d327f25b 100644 --- a/Master/texmf-dist/tex/latex/acmart/acmart-tagged.cls +++ b/Master/texmf-dist/tex/latex/acmart/acmart-tagged.cls @@ -38,7 +38,7 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesClass{acmart-tagged} -[2024/12/07 v2.11 Typesetting articles for the Association for Computing Machinery] +[2024/12/28 v2.12 Typesetting articles for the Association for Computing Machinery] \def\@classname{acmart-tagged} \InputIfFileExists{acmart-preload-hook.tex}{% \ClassWarning{\@classname}{% @@ -293,7 +293,6 @@ \RequirePackage{setspace} \onehalfspacing \fi -\RequirePackage{textcase} \if@ACM@acmcp \RequirePackage{framed} \RequirePackage{zref-savepos, zref-user} @@ -778,21 +777,23 @@ have the newtxmath package installed. Please upgrade your TeX}\@ACM@newfontsfalse} \if@ACM@newfonts - \RequirePackage[T1]{fontenc} % Note that the order in which packages are loaded matters, % and the correct order depends on the LaTeX engine used. % See https://github.com/borisveytsman/acmart/issues/402 % and https://github.com/borisveytsman/acmart/issues/410 \ifxetex - \RequirePackage[libertine]{newtxmath} + \RequirePackage{unicode-math} + \setmathfont[Scale=MatchUppercase]{libertinusmath-regular.otf} \RequirePackage[tt=false]{libertine} \setmonofont[StylisticSet=3]{inconsolata} \else \ifluatex - \RequirePackage[libertine]{newtxmath} + \RequirePackage{unicode-math} + \setmathfont[Scale=MatchUppercase]{libertinusmath-regular.otf} \RequirePackage[tt=false]{libertine} \setmonofont[StylisticSet=3]{inconsolata} \else + \RequirePackage[T1]{fontenc} \RequirePackage[tt=false, type1=true]{libertine} \RequirePackage[varqu]{zi4} \RequirePackage[libertine]{newtxmath} @@ -1555,7 +1556,7 @@ \def\position##1{\ignorespaces}% \def\institution##1{##1\ignorespaces}% \def\department{\@ifnextchar[{\@department}{\@department[]}}% - \def\@department[##1]##2{\unskip, ##2\ignorespaces}% + \def\@department[##1]##2{##2, \ignorespaces}% \let\city\position \let\state\position \let\country\position @@ -2166,7 +2167,9 @@ \if@printcopyright \copyright\ \@copyrightyear\ \@copyrightowner\\ \else - \@copyrightyear.\ + \ifx\@copyrightyear\@empty\else + \@copyrightyear.\ + \fi \fi \if@ACM@manuscript Manuscript submitted to ACM\\ @@ -2282,6 +2285,7 @@ \fi \ifx\@empty\@authorsaddresses\else\bigskip\@setauthorsaddresses\fi \zsaveposy{@ACM@acmcpbox@y}% + \par } \egroup} \def\@specialsection#1{% @@ -2599,9 +2603,9 @@ \global\let\and\@typeset@author@line \def\@author##1{% \ifx\@currentauthors\@empty - \gdef\@currentauthors{\@authorfont\MakeTextUppercase{##1}}% + \gdef\@currentauthors{\@authorfont\MakeUppercase{##1}}% \else - \g@addto@macro{\@currentauthors}{\and\MakeTextUppercase{##1}}% + \g@addto@macro{\@currentauthors}{\and\MakeUppercase{##1}}% \fi \gdef\and{}}% \def\email##1##2{}% diff --git a/Master/texmf-dist/tex/latex/acmart/acmart.cls b/Master/texmf-dist/tex/latex/acmart/acmart.cls index 65504d35432..5694f3083bc 100644 --- a/Master/texmf-dist/tex/latex/acmart/acmart.cls +++ b/Master/texmf-dist/tex/latex/acmart/acmart.cls @@ -38,7 +38,7 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesClass{acmart} -[2024/12/07 v2.11 Typesetting articles for the Association for Computing Machinery] +[2024/12/28 v2.12 Typesetting articles for the Association for Computing Machinery] \def\@classname{acmart} \InputIfFileExists{acmart-preload-hook.tex}{% \ClassWarning{\@classname}{% @@ -289,7 +289,6 @@ \RequirePackage{setspace} \onehalfspacing \fi -\RequirePackage{textcase} \if@ACM@acmcp \RequirePackage{framed} \RequirePackage{zref-savepos, zref-user} @@ -859,21 +858,23 @@ have the newtxmath package installed. Please upgrade your TeX}\@ACM@newfontsfalse} \if@ACM@newfonts - \RequirePackage[T1]{fontenc} % Note that the order in which packages are loaded matters, % and the correct order depends on the LaTeX engine used. % See https://github.com/borisveytsman/acmart/issues/402 % and https://github.com/borisveytsman/acmart/issues/410 \ifxetex - \RequirePackage[libertine]{newtxmath} + \RequirePackage{unicode-math} + \setmathfont[Scale=MatchUppercase]{libertinusmath-regular.otf} \RequirePackage[tt=false]{libertine} \setmonofont[StylisticSet=3]{inconsolata} \else \ifluatex - \RequirePackage[libertine]{newtxmath} + \RequirePackage{unicode-math} + \setmathfont[Scale=MatchUppercase]{libertinusmath-regular.otf} \RequirePackage[tt=false]{libertine} \setmonofont[StylisticSet=3]{inconsolata} \else + \RequirePackage[T1]{fontenc} \RequirePackage[tt=false, type1=true]{libertine} \RequirePackage[varqu]{zi4} \RequirePackage[libertine]{newtxmath} @@ -1636,7 +1637,7 @@ \def\position##1{\ignorespaces}% \def\institution##1{##1\ignorespaces}% \def\department{\@ifnextchar[{\@department}{\@department[]}}% - \def\@department[##1]##2{\unskip, ##2\ignorespaces}% + \def\@department[##1]##2{##2, \ignorespaces}% \let\city\position \let\state\position \let\country\position @@ -2247,7 +2248,9 @@ \if@printcopyright \copyright\ \@copyrightyear\ \@copyrightowner\\ \else - \@copyrightyear.\ + \ifx\@copyrightyear\@empty\else + \@copyrightyear.\ + \fi \fi \if@ACM@manuscript Manuscript submitted to ACM\\ @@ -2363,6 +2366,7 @@ \fi \ifx\@empty\@authorsaddresses\else\bigskip\@setauthorsaddresses\fi \zsaveposy{@ACM@acmcpbox@y}% + \par } \egroup} \def\@specialsection#1{% @@ -2680,9 +2684,9 @@ \global\let\and\@typeset@author@line \def\@author##1{% \ifx\@currentauthors\@empty - \gdef\@currentauthors{\@authorfont\MakeTextUppercase{##1}}% + \gdef\@currentauthors{\@authorfont\MakeUppercase{##1}}% \else - \g@addto@macro{\@currentauthors}{\and\MakeTextUppercase{##1}}% + \g@addto@macro{\@currentauthors}{\and\MakeUppercase{##1}}% \fi \gdef\and{}}% \def\email##1##2{}% diff --git a/Master/texmf-dist/doc/latex/aomart/aom_orcid_logo.eps b/Master/texmf-dist/tex/latex/aomart/aom_orcid_logo.eps index 067a8f185a0..067a8f185a0 100644 --- a/Master/texmf-dist/doc/latex/aomart/aom_orcid_logo.eps +++ b/Master/texmf-dist/tex/latex/aomart/aom_orcid_logo.eps diff --git a/Master/texmf-dist/doc/latex/aomart/aom_orcid_logo.pdf b/Master/texmf-dist/tex/latex/aomart/aom_orcid_logo.pdf Binary files differindex 97fb31c0380..97fb31c0380 100644 --- a/Master/texmf-dist/doc/latex/aomart/aom_orcid_logo.pdf +++ b/Master/texmf-dist/tex/latex/aomart/aom_orcid_logo.pdf diff --git a/Master/texmf-dist/tex/latex/biblatex-cse/biblatex-cse.bbx b/Master/texmf-dist/tex/latex/biblatex-cse/biblatex-cse.bbx new file mode 100644 index 00000000000..e71f783e061 --- /dev/null +++ b/Master/texmf-dist/tex/latex/biblatex-cse/biblatex-cse.bbx @@ -0,0 +1,135 @@ +%% This is file `biblatex-cse.bbx', +%% +%% Copyright (C) 2024 by João Lourenço <joao.lourenco@fct.unl.pt> +%% +%% This file may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License, either version 1.3c of this license +%% or (at your option) any later version. The latest version of this +%% license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2006/05/20 or later. +%% +\def\fileversion{1.1.0} +\def\filedate {2025/01/01} +\edef\filename {biblatex-cse} + +\ProvidesFile{\filename.cbx}[% + \filedate\ v\fileversion (João M. Lourenço) Council of Science Editors bibliography style] + +\RequireBibliographyStyle{authoryear} + +% From: https://tex.stackexchange.com/questions/12254/biblatex-how-to-remove-the-parentheses-around-the-year-in-authoryear-style +% By courtesy of Enrico Gregorio (egreg) +\def\act@on@bibmacro#1#2{% + \expandafter#1\csname abx@macro@\detokenize{#2}\endcsname +} +\def\patchbibmacro{\act@on@bibmacro\patchcmd} +\def\pretobibmacro{\act@on@bibmacro\pretocmd} +\def\apptobibmacro{\act@on@bibmacro\apptocmd} +\def\showbibmacro{\act@on@bibmacro\show} + +\ExecuteBibliographyOptions{ + maxcitenames=2, + minbibnames=10, + maxbibnames=10, + dashed=false, + uniquelist=false, + giveninits=true, + urldate=iso, + date=year, + seconds=true, +} + +% \usepackage{xpatch} + +% Remove commas between family and given names +\DeclareNameAlias{sortname}{family-given} +\renewrobustcmd*{\revsdnamepunct}{} +\renewrobustcmd*{\bibinitdelim}{} + +% Remove commas between family and given names +\renewrobustcmd*{\revsdnamepunct}{} +\renewrobustcmd*{\bibinitdelim}{} + +% Remove dot after initials +\renewrobustcmd*{\bibinitperiod}{} + +% Remove quotation marks from title +\DeclareFieldFormat*{title}{#1} + +% Remove emphasized from titles +\DeclareFieldFormat*{journaltitle}{#1\isdot} +\DeclareFieldFormat{postnote}{#1} +\DeclareFieldFormat{multipostnote}{#1} +\renewcommand*{\bibpagespunct}{\addcolon} +\renewcommand{\postnotedelim}{% + \iffieldpages{postnote} + {\addcolon\space} + {\addspace}} + +% Remove "and" before last author +\DefineBibliographyExtras{english}{% + \DeclareFieldFormat{pages}{#1} + \DeclareDelimFormat{finalnamedelim}{% + \ifnumgreater{\value{liststop}}{2}{% + \printdelim{multinamedelim}}{\addspace\bibstring{and}\space}}} + +% Add dot after list of authors (and before year) and remove parentheses in date +% \xpatchbibmacro{date+extradate}{% +\patchbibmacro{date+extradate}{% + \printtext[parens]% +}{% + \setunit*{\addperiod\space}% + \printtext% +}{}{} + +% Remove "in:" prefix in journal title +\renewbibmacro{in:}{} + +% Cite as "family initials" +\DeclareNameFormat{labelname}{% + \ifcase\value{uniquename}% + \usebibmacro{name:family} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}% + \or + \ifuseprefix + {\usebibmacro{name:family-given} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffixi}} + {\usebibmacro{name:family-given} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefixi} + {\namepartsuffixi}}% + \or + \usebibmacro{name:family-given} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}% + \fi + \usebibmacro{name:andothers}} + +% Always remove "and" before last author +\ifdefined\prebibhook% + \DeclareDelimFormat{finalnamedelim}{% + \printdelim{multinamedelim}% + }% +\else\ifdefined\bibliography% + \let\origbibliography=\bibliography% + \renewcommand{\bibliography}{% + \DeclareDelimFormat{finalnamedelim}{% + \printdelim{multinamedelim}% + }% + \origbibliography% + }% +\fi\fi + diff --git a/Master/texmf-dist/tex/latex/biblatex-cse/biblatex-cse.cbx b/Master/texmf-dist/tex/latex/biblatex-cse/biblatex-cse.cbx new file mode 100644 index 00000000000..45722ed88c5 --- /dev/null +++ b/Master/texmf-dist/tex/latex/biblatex-cse/biblatex-cse.cbx @@ -0,0 +1,23 @@ +%% This is file `biblatex-cse.cbx', +%% +%% Copyright (C) 2024 by João Lourenço <joao.lourenco@fct.unl.pt> +%% +%% This file may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License, either version 1.3c of this license +%% or (at your option) any later version. The latest version of this +%% license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2006/05/20 or later. +%% +\def\fileversion{1.1.0} +\def\filedate {2025/01/01} +\edef\filename {biblatex-cse} + +\ProvidesFile{\filename.cbx}[% + \filedate\ v\fileversion (João M. Lourenço) Council of Science Editors bibliography style] + +\RequireCitationStyle{authoryear} + diff --git a/Master/texmf-dist/tex/latex/biblatex-software/software.bbx b/Master/texmf-dist/tex/latex/biblatex-software/software.bbx index ad9edc60537..ec7570489bd 100644 --- a/Master/texmf-dist/tex/latex/biblatex-software/software.bbx +++ b/Master/texmf-dist/tex/latex/biblatex-software/software.bbx @@ -154,7 +154,7 @@ \DeclareFieldFormat{eprint:swmath}{% \mkbibacro{SWMATH}\addcolon\addspace% \ifhyperref - {\href{https://www.swmath.org/software/#1}{% + {\href{https://www.zbmath.org/software/#1}{% \(\langle\)swmath\addcolon\nolinkurl{#1}\(\rangle\)% \iffieldundef{eprintclass} {} diff --git a/Master/texmf-dist/tex/latex/bithesis/bitbeamer.cls b/Master/texmf-dist/tex/latex/bithesis/bitbeamer.cls index 481ff09cfa0..781bf749871 100644 --- a/Master/texmf-dist/tex/latex/bithesis/bitbeamer.cls +++ b/Master/texmf-dist/tex/latex/bithesis/bitbeamer.cls @@ -27,7 +27,7 @@ %% \RequirePackage{expl3,l3keys2e} \ProvidesExplClass{bitbeamer} -{2024-10-07}{3.8.0}{BIT Thesis Templates} +{2025-01-03}{3.8.1}{BIT Thesis Templates} \keys_define:nn { bitbeamer } { titlegraphic .tl_set:N = \l_bit_titlegraphic_tl, diff --git a/Master/texmf-dist/tex/latex/bithesis/bithesis.cls b/Master/texmf-dist/tex/latex/bithesis/bithesis.cls index 4cdb085a59c..09897198323 100644 --- a/Master/texmf-dist/tex/latex/bithesis/bithesis.cls +++ b/Master/texmf-dist/tex/latex/bithesis/bithesis.cls @@ -27,7 +27,7 @@ %% \RequirePackage{expl3,l3keys2e} \ProvidesExplClass{bithesis} -{2024-10-07}{3.8.0}{BIT Thesis Templates} +{2025-01-03}{3.8.1}{BIT Thesis Templates} \int_new:N \g__bithesis_thesis_type_int \int_new:N \g__bithesis_head_zihao_int \bool_new:N \g__bithesis_twoside_bool @@ -2410,15 +2410,18 @@ % apply a clist \clist_map_function:nN {#1} \addpub } -\NewDocumentCommand \pubsection {m} { +\NewDocumentCommand \pubsection {s m} { { - % 自增计数器 - \par\stepcounter{pub} + \par + \IfBooleanF {#1} { + % 自增计数器 + \stepcounter{pub} + } % 设置小标题,暂时没有考虑英文模式 \noindent \textbf{ \heiti{ - \zhnumber{\thepub}、#1 + \IfBooleanF {#1} {\zhnumber{\thepub}、}#2 } }\par } diff --git a/Master/texmf-dist/tex/latex/bithesis/bitreport.cls b/Master/texmf-dist/tex/latex/bithesis/bitreport.cls index c08602e6116..d97d313388d 100644 --- a/Master/texmf-dist/tex/latex/bithesis/bitreport.cls +++ b/Master/texmf-dist/tex/latex/bithesis/bitreport.cls @@ -27,7 +27,7 @@ %% \RequirePackage{expl3,l3keys2e} \ProvidesExplClass{bitreport} -{2024-10-07}{3.8.0}{BIT Thesis Templates} +{2025-01-03}{3.8.1}{BIT Thesis Templates} \int_new:N \g__bithesis_report_type_int \clist_const:Nn \c__bithesis_report_type_clist { common, undergraduate_proposal} diff --git a/Master/texmf-dist/tex/latex/chuushaku/chuushaku.sty b/Master/texmf-dist/tex/latex/chuushaku/chuushaku.sty new file mode 100644 index 00000000000..479ab063b1b --- /dev/null +++ b/Master/texmf-dist/tex/latex/chuushaku/chuushaku.sty @@ -0,0 +1,59 @@ +\NeedsTeXFormat{LaTeX2e}% +\ProvidesPackage{chuushaku}[2024/12/30,Ver1.0.1]% + +\RequirePackage{tikz,amsmath,framed,calc}% +\usetikzlibrary{positioning,quotes}% + +\newcommand{\段落下げ}{\parindent=1zw}% +\def\zw{\dimexpr1zw\relax}% + +\newcounter{chuubangou}% +\setcounter{chuubangou}{0}% +\newcommand{\chuukigouprintA}{$\dag$}% +\newcommand{\chuukigouprintB}{▶\ignorespaces}% +\newcommand{\chuuhabaprint}{.68}% +\newcommand{\chuuakiprint}{.7}% +\newcommand{\chuukigou}[2]{\renewcommand{\chuukigouprintA}{#1}\renewcommand{\chuukigouprintB}{#2}}% +\newcommand{\chuuhaba}[1]{\renewcommand{\chuuhabaprint}{#1}}% +\newcommand{\chuuaki}[1]{\renewcommand{\chuuakiprint}{#1}}% +\newcommand{\chuu}[1]% + {% + \stepcounter{chuubangou}% + \nolinebreak$\!^{\text{\chuukigouprintA}}$% + \tikz[remember picture]{\coordinate (A\thechuubangou);}% + \expandafter\gdef\csname chuunote\thechuubangou\endcsname{#1}% + }% +\newcommand{\chuuprint}% + {% + \begin{tikzpicture}[overlay, remember picture] + \foreach \n in {1,...,\thechuubangou}% + {% + \node[sidenote] at (A\n -| B) {\csname chuunote\n\endcsname};% + \node[pointer] at (A\n -| B) {\footnotesize\chuukigouprintB};% + }% + \end{tikzpicture}% + }% +\NewDocumentEnvironment{chuushaku}{ O{\chuuhabaprint} D<>{\chuuakiprint} }% + {% + %TikZのスタイル定義 + \tikzset{sidenote/.style={anchor=north west, inner sep=0pt, text width={\linewidth-#1\linewidth-#2\zw-1\zw}, font=\footnotesize, yshift=.8em}}% + \tikzset{pointer/.style={left, inner sep=3pt, yshift=.3em}} + \begin{minipage}[t]{#1\linewidth}\begin{右辺点線囲み}% + }% + {% + \end{右辺点線囲み}% + \end{minipage}\begin{minipage}[t]{#2zw+1zw}% + ~% + \end{minipage}\begin{minipage}[t]{\linewidth-#1\linewidth-#2\zw}% + \tikz[remember picture]{\coordinate (B);}% + \end{minipage}% + \chuuprint\setcounter{chuubangou}{0}% + }% + +\newenvironment{右辺点線囲み}% + {% + \def\FrameCommand##1{##1\hspace{10pt}\vrule width .3pt}% + \MakeFramed {\advance\hsize-\width \FrameRestore}% + \段落下げ% + }% + {\endMakeFramed}
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/codehigh/codehigh.sty b/Master/texmf-dist/tex/latex/codehigh/codehigh.sty index 7f7a4a8a9ae..36463c7ca61 100644 --- a/Master/texmf-dist/tex/latex/codehigh/codehigh.sty +++ b/Master/texmf-dist/tex/latex/codehigh/codehigh.sty @@ -12,7 +12,7 @@ \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3} -\ProvidesExplPackage{codehigh}{2024-11-20}{2024A} +\ProvidesExplPackage{codehigh}{2025-01-04}{2025A} {Highlight codes and demos with l3regex and lpeg} %\RequirePackage{xparse} @@ -274,6 +274,7 @@ \GetCodeHighStyle{code} \colorbox{codehigh@bg} {\box_use:N \g__codehigh_code_box} + \hfill } } } @@ -619,6 +620,7 @@ { \exp_after:wN \token_to_str:N ##1 } } { \exp_after:wN \token_to_str:N ##1 } + \/ % disable ligatures (#17) } \group_align_safe_end: \group_end: diff --git a/Master/texmf-dist/tex/latex/coloredtheorem/coloredtheorem.sty b/Master/texmf-dist/tex/latex/coloredtheorem/coloredtheorem.sty index 4d24f770564..20f23cc5900 100644 --- a/Master/texmf-dist/tex/latex/coloredtheorem/coloredtheorem.sty +++ b/Master/texmf-dist/tex/latex/coloredtheorem/coloredtheorem.sty @@ -12,29 +12,39 @@ %% and version 1.3c or later is part of all distributions of LaTeX %% version 2006/05/20 or later. %% -\NeedsTeXFormat{LaTeX2e}[2020/06/01] -\ProvidesPackage{coloredtheorem} - [2024/09/15 v1.0.4 - A colorful boxed theorem environment] +\def\cthfileversion{1.1.0} +\def\cthfiledate {2025/01/03} +\edef\cthfilename {\@currname} -\RequirePackage{tcolorbox} +\ProvidesPackage{coloredtheorem}[% + \cthfiledate\ v\cthfileversion (João M. Lourenço) - A colorful boxed theorem environment.] + +\RequirePackage[most]{tcolorbox} \tcbuselibrary{breakable} \gdef\tcbth{cth} -\expandafter\NewDocumentCommand\csname\tcbth newtheorem\endcsname { m m O{} }{% +\NewDocumentCommand{\TcbthNewDocumentCommand}{m}{% + \expandafter\NewDocumentCommand\csname\tcbth#1\endcsname} +\NewDocumentCommand{\TcbthNewDocumentEnvironment}{m}{% + \expandafter\NewDocumentEnvironment\expandafter{\tcbth#1}} +\NewDocumentCommand{\TcbthGdef}{O{\tcbth}mm}{% + \expandafter\gdef\csname#1#2\endcsname{#3}} + +\TcbthNewDocumentCommand{newtheorem} { m m O{} }{% \expandafter\newcounter\expandafter{\tcbth#1}% - \expandafter\gdef\csname\tcbth#1name\endcsname{#2}% - \expandafter\gdef\csname\tcbth list#1name\endcsname{List of #2s}% - \expandafter\gdef\csname#1autorefname\endcsname{#2}% + \TcbthGdef{#1name}{#2}% + \TcbthGdef{list#1name}{List of #2s}% + \TcbthGdef[]{#1autorefname}{#2}% \AtEndPreamble{% \ifdefined\crefname\expandafter\crefname\expandafter{\tcbth#1}{#2}{#2s}\fi}% - \expandafter\gdef\csname\tcbth listof#1s\endcsname + \TcbthGdef{listof#1s} {% \ifdefined\chapter\chapter*{\csname\tcbth list#1name\endcsname}% \else\section*{\csname\tcbth list#1name\endcsname}\fi% \expandafter\@starttoc\expandafter{lo#1}% } - \expandafter\NewDocumentEnvironment\expandafter{\tcbth#1} {O{} m O{}}% + \TcbthNewDocumentEnvironment{#1} {O{} m O{}}% {% \begin{tcb<SOMETHING>} \begin{center}% \ifx\relax##2\relax @@ -48,14 +58,28 @@ {\protect\numberline{\csname the\tcbth#1\endcsname}##1}% \fi \fi - \begin{tcolorbox}[breakable, + \begin{tcolorbox}[breakable,lowerbox=ignored,left=0mm,right=0mm,top=0mm,bottom=0mm, title={\textbf{\csname\tcbth#1name\endcsname \ifx\relax##2\relax\else ~\csname the\tcbth#1\endcsname\fi}~~##2}, #3, ##3, ]% - \let\origpar=\par% - \def\par{\origpar\medskip}% + % \let\origpar=\par% + % \def\par{\origpar\medskip}% + \ignorespaces% + }{% \end{tcb<SOMETHING>} + \end{tcolorbox}% + \end{center}% + }% + \TcbthNewDocumentEnvironment{#1*} {O{} m O{}}% + {% \begin{tcb<SOMETHING>} + \begin{center}% + \begin{tcolorbox}[breakable,lowerbox=ignored,left=0mm,right=0mm,top=0mm,bottom=0mm, + title={\textbf{\csname\tcbth#1name\endcsname}~~##2}, + #3, ##3, + ]% + % \let\origpar=\par% + % \def\par{\origpar\medskip}% \ignorespaces% }{% \end{tcb<SOMETHING>} \end{tcolorbox}% diff --git a/Master/texmf-dist/tex/latex/delimset/delimset.sty b/Master/texmf-dist/tex/latex/delimset/delimset.sty index 28ba8ba53e3..d5650adc0d6 100644 --- a/Master/texmf-dist/tex/latex/delimset/delimset.sty +++ b/Master/texmf-dist/tex/latex/delimset/delimset.sty @@ -6,18 +6,18 @@ %% %% delimset.dtx (with options: `package') %% -%% Copyright (C) 2016-2024 Niklas Beisert +%% Copyright (C) 2016-2025 Niklas Beisert %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 %% of this license or (at your option) any later version. %% The latest version of this license is in -%% http://www.latex-project.org/lppl.txt +%% https://www.latex-project.org/lppl.txt %% and version 1.3 or later is part of all distributions of LaTeX %% version 2005/12/01 or later. %% \NeedsTeXFormat{LaTeX2e}[1996/12/01] -\ProvidesPackage{delimset}[2024/07/17 v2.0 convenient size control for delimiter sets] +\ProvidesPackage{delimset}[2025/01/05 v2.1 convenient size control for delimiter sets] \RequirePackage{amsmath} \RequirePackage{keyval} @@ -126,14 +126,23 @@ \newcommand{\dlm@var@pl}[1]{\dlm@var@l.\mathopen{#1}} \newcommand{\dlm@var@pr}[1]{\mathclose{#1}\dlm@var@r.} +\newcount\dlm@reg@lvl +\dlm@reg@lvl\z@ +\def\dlm@reg@dot{.} +\newcommand{\dlm@reg@set}[1]{\edef\dlm@reg@cur{#1}\ifx\dlm@reg@cur\dlm@reg@dot% + \edef\dlm@reg@cur{\dlm@reg@dot\the\dlm@reg@lvl}\fi} +\newcommand{\dlm@reg@step}[1]{\global\advance\dlm@reg@lvl#1% + \ifnum\dlm@reg@lvl<\z@\PackageError{delimset}{register stack exhausted}{}% + \dlm@reg@lvl\z@\fi} \newcommand{\dlm@reg@save@init}[1]{% \xdef#1{\delimsize\the\delimsize}\ifx\dlm@inner\mathinner% \expandafter\gdef\expandafter#1\expandafter{#1\dlm@enclose@inner}\fi} -\newcommand{\dlm@reg@save}[2]{% - \expandafter\dlm@reg@save@init\csname dlm@reg@init@#1\endcsname% - \expandafter\gdef\csname dlm@reg@sel@#1\endcsname{#2}} -\newcommand{\dlm@reg@init}[1]{\csname dlm@reg@init@#1\endcsname} -\newcommand{\dlm@reg@sel}[1]{\csname dlm@reg@sel@#1\endcsname} +\newcommand{\dlm@reg@save}[2]{\dlm@reg@set{#1}% + \expandafter\dlm@reg@save@init\csname dlm@reg@init@\dlm@reg@cur\endcsname% + \expandafter\gdef\csname dlm@reg@sel@\dlm@reg@cur\endcsname{#2}} +\newcommand{\dlm@reg@init}[1]{\dlm@reg@set{#1}% + \csname dlm@reg@init@\dlm@reg@cur\endcsname} +\newcommand{\dlm@reg@sel}{\csname dlm@reg@sel@\dlm@reg@cur\endcsname} \newcommand{\parsedelimflags}{\dlm@setsize{0.6}\let\dlm@phantom\@firstofone% \dlm@enclose@openclose\dlm@enclose@inline\dlm@parseflags} @@ -165,11 +174,13 @@ \dlm@parsedef{)}{}{\def\selecteddelim{9}#2} \dlm@parsedef{?}{#3}{\def\selecteddelim{#3}#2} -\dlm@parsedef{[}{}{\dlm@reg@save{.}{#2}\def\selecteddelim{0}#2} -\dlm@parsedef{]}{}{\dlm@reg@init{.}\def\selecteddelim{9}\dlm@reg@sel{.}} +\dlm@parsedef{[}{}{\dlm@reg@step\@ne\dlm@reg@save\dlm@reg@dot{#2}% + \def\selecteddelim{0}#2} +\dlm@parsedef{]}{}{\dlm@reg@init\dlm@reg@dot\dlm@reg@step\m@ne% + \def\selecteddelim{9}\dlm@reg@sel} \dlm@parsedef{>}{#3}{\dlm@reg@save{#3}{#2}} \dlm@parsedef{<}{#3}{\dlm@reg@init{#3}\dlm@parseflags% - {\PackageError{delimset}{must select delimiter}{}}{\dlm@reg@sel{#3}}} + {\PackageError{delimset}{must select delimiter}{}}{\dlm@reg@sel}} \dlm@parsedef{.}{}{#1} \dlm@parsedef{:}{}{\dlm@enclose@block\dlm@parseflags{#1}{#2}} @@ -218,8 +229,14 @@ \newcommand{\dlm@sel@delimtriple}[4]{\ifcase\selecteddelim\selectdeliml#1% \or\selectdelim#2\or\selectdelim#3\else\selectdelimr#4\fi} -\newcommand{\usedelim}{\@ifnextchar]{\parsedelimflags{}{}}{\parsedelimflags% - {\PackageError{delimset}{must select delimiter}{}}{}<}} +\newcommand{\usedelim}{% + \@ifnextchar]{\parsedelimflags{}{}}{% + \@ifnextchar({\parsedelimflags{}{}<.}{% + \@ifnextchar|{\parsedelimflags{}{}<.}{% + \@ifnextchar,{\parsedelimflags{}{}<.}{% + \@ifnextchar){\parsedelimflags{}{}<.}{% + \@ifnextchar?{\parsedelimflags{}{}<.}{% + \parsedelimflags{}{}<}}}}}}} \ifdlm@std \providecommand{\brk}[1][r]{\begingroup\def\dlm@use{\delim()}% diff --git a/Master/texmf-dist/tex/latex/easybook/easybase.sty b/Master/texmf-dist/tex/latex/easybook/easybase.sty index ff5fefec1df..8ce53f9bbea 100644 --- a/Master/texmf-dist/tex/latex/easybook/easybase.sty +++ b/Master/texmf-dist/tex/latex/easybook/easybase.sty @@ -20,7 +20,7 @@ %% This work has the LPPL maintenance status `maintained'. \NeedsTeXFormat{LaTeX2e}[2021/11/15] \RequirePackage{etoolbox} -\ProvidesExplPackage{easybase}{2024/12/26}{2024last} +\ProvidesExplPackage{easybase}{2025/01/03}{2025b} {Easily typesetting Chinese theses or books} \cs_generate_variant:Nn \dim_set:Nn { NV } @@ -1767,7 +1767,7 @@ \group_begin: \tl_set_eq:NN \eb@toc@title \indexname \cs_set_eq:NN \imki@indexlevel \use_none:n - \IfValueT{#3}{\keys_set:nn { eb/tocouter } {#3}} + \eb_toc_kv_set:nn { idx } {#3} \cs_set_protected:Npn \imki@indexheaders { \eb_toc_title_level_cmd:n {#1} @@ -2353,7 +2353,7 @@ { \group_begin: \tl_set_eq:NN \eb@toc@title \bibname - \IfValueT{##3}{ \keys_set:nn { eb/tocouter } {##3} } + \eb_toc_kv_set:nn { bbl } {##3} \cs_set_protected:Npn \bibsection { \eb_toc_title_level_cmd:n {##1} diff --git a/Master/texmf-dist/tex/latex/easybook/easybook.cls b/Master/texmf-dist/tex/latex/easybook/easybook.cls index 50c963152d0..824792951e0 100644 --- a/Master/texmf-dist/tex/latex/easybook/easybook.cls +++ b/Master/texmf-dist/tex/latex/easybook/easybook.cls @@ -19,7 +19,7 @@ %% %% This work has the LPPL maintenance status `maintained'. \NeedsTeXFormat{LaTeX2e}[2021/11/15] -\ProvidesExplClass{easybook}{2024/12/26}{2024last} +\ProvidesExplClass{easybook}{2025/01/03}{2025b} {Easily typesetting Chinese theses or books} \bool_new:N \l__eb_compile_draft_bool diff --git a/Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg b/Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg index 381eefe5a07..7c68060d023 100644 --- a/Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg +++ b/Master/texmf-dist/tex/latex/easybook/eb-tcolorbox.cfg @@ -18,7 +18,7 @@ %% LaTeX version 2005/12/01 or later. %% %% This work has the LPPL maintenance status `maintained'. -\ProvidesExplFile{eb-tcolorbox.cfg}{2024/12/26}{2024last} +\ProvidesExplFile{eb-tcolorbox.cfg}{2025/01/03}{2025b} {Customization of tcolorbox for easybook} \cs_set_protected:Npn \addtotcbstyle #1#2 diff --git a/Master/texmf-dist/tex/latex/fancyhdr/extramarks-v4.sty b/Master/texmf-dist/tex/latex/fancyhdr/extramarks-v4.sty new file mode 100644 index 00000000000..fcac77f5ac8 --- /dev/null +++ b/Master/texmf-dist/tex/latex/fancyhdr/extramarks-v4.sty @@ -0,0 +1,135 @@ +%% +%% This is file `extramarks-v4.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% fancyhdr.dtx (with options: `extramarks-v4') +%% +%% This is a generated file. +%% +%% This file may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License, either version 1.3 of this license +%% or (at your option) any later version. The latest version of this +%% license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of LaTeX version +%% 2005/12/01 or later. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{extramarks} + [2024/11/30 v4.5 + Legacy version of extramarks for LaTeX] +% Copyright (C) 1994-2024 by Pieter van Oostrum <pieter@vanoostrum.org> +%% +%% This is a legacy version (v4) of extramarks.sty +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ifx\@temptokenb\undefined \csname newtoks\endcsname\@temptokenb\fi +\providecommand\unrestored@protected@xdef{% + \let\protect\@unexpandable@protect \xdef} +\ifdefined\ExplSyntaxOn +\ExplSyntaxOn +\DeclareRobustCommand*\markboth[2]{% + \begingroup + \let\label\relax \let\index\relax \let\glossary\relax + \expandafter\@markboth\@themark{#1}{#2}% + \@temptokena \expandafter{\@themark}% + \ifdefined\mark_insert:nn + % 3 new lines to set the new marks + \mark_insert:nn{2e-left}{#1} + \mark_insert:nn{2e-right}{#2} + \tl_if_empty:nF{#2}{ \mark_insert:nn{2e-right-nonempty}{#2} } + \fi + \mark{\the\@temptokena}% + \endgroup + \if@nobreak\ifvmode\nobreak\fi\fi} +\ExplSyntaxOff +\else +\def\markboth#1#2{% + \begingroup + \let\label\relax \let\index\relax \let\glossary\relax + \expandafter\@markboth\@themark{#1}{#2}% + \@temptokena \expandafter{\@themark}% + \mark{\the\@temptokena}% + \endgroup + \if@nobreak\ifvmode\nobreak\fi\fi} +\fi +\ifx\@mkboth\@gobbletwo\else\def\@mkboth{\protect\markboth}\fi +\def\@markboth#1#2#3#4#5#6{\@temptokena{{#3}{#4}}% + \unrestored@protected@xdef\@themark{{#5}{#6}\the\@temptokena}} +\def\@markright#1#2#3#4#5{\@temptokena{#1}\@temptokenb{{#3}{#4}}% + \unrestored@protected@xdef\@themark{{\the\@temptokena}{#5}\the\@temptokenb}} + +\def\@leftmark#1#2#3#4{#1} +\def\@rightmark#1#2#3#4{#2} +\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} +\IfFormatAtLeastTF{2025-06-01}{}{% + \def\leftmark{\expandafter\@leftmark + \botmark\@empty\@empty\@empty\@empty} + \def\rightmark{\expandafter\@rightmark + \firstmark\@empty\@empty\@empty\@empty} +} +\def\firstleftmark{\expandafter\@leftmark + \firstmark\@empty\@empty\@empty\@empty} +\def\lastrightmark{\expandafter\@rightmark + \botmark\@empty\@empty\@empty\@empty} +\let\firstrightmark \rightmark +\let\lastleftmark \leftmark + +\def\@themark{{}{}{}{}} + +\newcommand\extramarks[2]{% + \begingroup + \let\label\relax \let\index\relax \let\glossary\relax + \expandafter\@markextra\@themark{#1}{#2}% + \@temptokena \expandafter{\@themark}% + \mark{\the\@temptokena}% + \endgroup + \if@nobreak\ifvmode\nobreak\fi\fi} +\def\@markextra#1#2#3#4#5#6{\@temptokena {{#1}{#2}}% + \unrestored@protected@xdef\@themark{\the\@temptokena{#5}{#6}}} +\def\extramarksleft#1{% + \begingroup + \let\label\relax \let\index\relax \let\glossary\relax + \expandafter\@markextraleft\@themark{#1}% + \@temptokena \expandafter{\@themark}% + \mark{\the\@temptokena}% + \endgroup + \if@nobreak\ifvmode\nobreak\fi\fi} +\def\@markextraleft#1#2#3#4#5{\@temptokena {{#1}{#2}}% + \@temptokenb {{#4}}% + \unrestored@protected@xdef\@themark{\the\@temptokena{#5}\the\@temptokenb}} +\def\extramarksright#1{% + \begingroup + \let\label\relax \let\index\relax \let\glossary\relax + \expandafter\@markextraright\@themark{#1}% + \@temptokena \expandafter{\@themark}% + \mark{\the\@temptokena}% + \endgroup + \if@nobreak\ifvmode\nobreak\fi\fi} +\def\@markextraright#1#2#3#4#5{\@temptokena {{#1}{#2}{#3}}% + \unrestored@protected@xdef\@themark{\the\@temptokena{#5}}} +\def\firstleftxmark{\expandafter\@leftxmark + \firstmark\@empty\@empty\@empty\@empty} +\def\firstrightxmark{\expandafter\@rightxmark + \firstmark\@empty\@empty\@empty\@empty} +\def\topleftxmark{\expandafter\@leftxmark + \topmark\@empty\@empty\@empty\@empty} +\def\toprightxmark{\expandafter\@rightxmark + \topmark\@empty\@empty\@empty\@empty} +\def\lastleftxmark{\expandafter\@leftxmark + \botmark\@empty\@empty\@empty\@empty} +\def\lastrightxmark{\expandafter\@rightxmark + \botmark\@empty\@empty\@empty\@empty} +\let\firstxmark\firstleftxmark +\let\lastxmark\lastrightxmark +\let\topxmark\topleftxmark +\def\@leftxmark#1#2#3#4{#3} +\def\@rightxmark#1#2#3#4{#4} +\endinput +%% +%% End of file `extramarks-v4.sty'. diff --git a/Master/texmf-dist/tex/latex/fancyhdr/extramarks.sty b/Master/texmf-dist/tex/latex/fancyhdr/extramarks.sty index ea9c753c233..9f4cf8e57b1 100644 --- a/Master/texmf-dist/tex/latex/fancyhdr/extramarks.sty +++ b/Master/texmf-dist/tex/latex/fancyhdr/extramarks.sty @@ -21,112 +21,65 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{extramarks} - [2024/12/09 v4.5 + [2025/01/01 v5.0 Extra marks for LaTeX] -% Copyright (C) 1994-2024 by Pieter van Oostrum <pieter@vanoostrum.org> +% Copyright (C) 1994-2025 by Pieter van Oostrum <pieter@vanoostrum.org> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newtoks\@temptokenb -\providecommand\unrestored@protected@xdef{% - \let\protect\@unexpandable@protect \xdef} -\ifdefined\ExplSyntaxOn -\ExplSyntaxOn -\DeclareRobustCommand*\markboth[2]{% - \begingroup - \let\label\relax \let\index\relax \let\glossary\relax - \expandafter\@markboth\@themark{#1}{#2}% - \@temptokena \expandafter{\@themark}% - \ifdefined\mark_insert:nn - % 3 new lines to set the new marks - \mark_insert:nn{2e-left}{#1} - \mark_insert:nn{2e-right}{#2} - \tl_if_empty:nF{#2}{ \mark_insert:nn{2e-right-nonempty}{#2} } - \fi - \mark{\the\@temptokena}% - \endgroup - \if@nobreak\ifvmode\nobreak\fi\fi} -\ExplSyntaxOff -\else -\def\markboth#1#2{% - \begingroup - \let\label\relax \let\index\relax \let\glossary\relax - \expandafter\@markboth\@themark{#1}{#2}% - \@temptokena \expandafter{\@themark}% - \mark{\the\@temptokena}% - \endgroup - \if@nobreak\ifvmode\nobreak\fi\fi} -\fi -\ifx\@mkboth\@gobbletwo\else\def\@mkboth{\protect\markboth}\fi -\def\@markboth#1#2#3#4#5#6{\@temptokena{{#3}{#4}}% - \unrestored@protected@xdef\@themark{{#5}{#6}\the\@temptokena}} -\def\@markright#1#2#3#4#5{\@temptokena{#1}\@temptokenb{{#3}{#4}}% - \unrestored@protected@xdef\@themark{{\the\@temptokena}{#5}\the\@temptokenb}} - -\def\@leftmark#1#2#3#4{#1} -\def\@rightmark#1#2#3#4{#2} -\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} -\IfFormatAtLeastTF{2025-06-01}{}{% - \def\leftmark{\expandafter\@leftmark - \botmark\@empty\@empty\@empty\@empty} - \def\rightmark{\expandafter\@rightmark - \firstmark\@empty\@empty\@empty\@empty} +\providecommand\DeclareRelease[3]{} +\providecommand\DeclareCurrentRelease[2]{} +\DeclareRelease{v4}{2024/11/30}{extramarks-v4.sty} +\DeclareCurrentRelease{}{2025/01/01} +\@ifundefined{NewMarkClass} + {\PackageWarningNoLine{extramarks}{% +**************************************************\MessageBreak +Your LaTeX installation is too old for extramarks version 5.\MessageBreak +We will fallback to extramarks version 4 now.\MessageBreak +Please note that some commands will not be available,\MessageBreak +and that the functionality may be slightly different.\MessageBreak +You are advised to update your LaTeX installation.\MessageBreak +**************************************************} + \RequirePackage{extramarks-v4}\endinput}{} +\AtBeginDocument{% + \@ifpackageloaded{multicol}% + {\IfPackageAtLeastF{multicol}{2024-11-21}{% + \PackageWarningNoLine{extramarks}{% + You are using package `extramarks' with a version\MessageBreak + of `multicol' that is too old. The new version\MessageBreak + of `multicol' will be released on June 1, 2025.\MessageBreak + We will fallback to extramarks version 4 now.}% + \let\extramarks\undefined + \RequirePackage{extramarks-v4} + }% + }% } -\def\firstleftmark{\expandafter\@leftmark - \firstmark\@empty\@empty\@empty\@empty} -\def\lastrightmark{\expandafter\@rightmark - \botmark\@empty\@empty\@empty\@empty} +\ifx\@mkboth\@gobbletwo\else\def\@mkboth{\protect\markboth}\fi +\NewMarkClass{extramarks-left} +\NewMarkClass{extramarks-right} +\newcommand\extramarks[2]{% + \InsertMark{extramarks-left}{#1}% + \InsertMark{extramarks-right}{#2}} +\newcommand\extramarksleft[1]{% + \InsertMark{extramarks-left}{#1}} +\newcommand\extramarksright[1]{% + \InsertMark{extramarks-right}{#1}} +\newcommand\firstleftmark{\FirstMark{2e-left}} +\newcommand\lastrightmark{\LastMark{2e-right}} +\newcommand\firstrightmark{\rightmark} \let\firstrightmark \rightmark +\newcommand\lastleftmark{\leftmark} \let\lastleftmark \leftmark - -\def\@themark{{}{}{}{}} - -\newcommand\extramarks[2]{% - \begingroup - \let\label\relax \let\index\relax \let\glossary\relax - \expandafter\@markextra\@themark{#1}{#2}% - \@temptokena \expandafter{\@themark}% - \mark{\the\@temptokena}% - \endgroup - \if@nobreak\ifvmode\nobreak\fi\fi} -\def\@markextra#1#2#3#4#5#6{\@temptokena {{#1}{#2}}% - \unrestored@protected@xdef\@themark{\the\@temptokena{#5}{#6}}} -\def\extramarksleft#1{% - \begingroup - \let\label\relax \let\index\relax \let\glossary\relax - \expandafter\@markextraleft\@themark{#1}% - \@temptokena \expandafter{\@themark}% - \mark{\the\@temptokena}% - \endgroup - \if@nobreak\ifvmode\nobreak\fi\fi} -\def\@markextraleft#1#2#3#4#5{\@temptokena {{#1}{#2}}% - \@temptokenb {{#4}}% - \unrestored@protected@xdef\@themark{\the\@temptokena{#5}\the\@temptokenb}} -\def\extramarksright#1{% - \begingroup - \let\label\relax \let\index\relax \let\glossary\relax - \expandafter\@markextraright\@themark{#1}% - \@temptokena \expandafter{\@themark}% - \mark{\the\@temptokena}% - \endgroup - \if@nobreak\ifvmode\nobreak\fi\fi} -\def\@markextraright#1#2#3#4#5{\@temptokena {{#1}{#2}{#3}}% - \unrestored@protected@xdef\@themark{\the\@temptokena{#5}}} -\def\firstleftxmark{\expandafter\@leftxmark - \firstmark\@empty\@empty\@empty\@empty} -\def\firstrightxmark{\expandafter\@rightxmark - \firstmark\@empty\@empty\@empty\@empty} -\def\topleftxmark{\expandafter\@leftxmark - \topmark\@empty\@empty\@empty\@empty} -\def\toprightxmark{\expandafter\@rightxmark - \topmark\@empty\@empty\@empty\@empty} -\def\lastleftxmark{\expandafter\@leftxmark - \botmark\@empty\@empty\@empty\@empty} -\def\lastrightxmark{\expandafter\@rightxmark - \botmark\@empty\@empty\@empty\@empty} +\newcommand\firstleftxmark{\FirstMark{extramarks-left}} +\newcommand\lastrightxmark{\LastMark{extramarks-right}} +\newcommand\firstrightxmark{\FirstMark{extramarks-right}} +\newcommand\topleftxmark{\TopMark{extramarks-left}} +\newcommand\toprightxmark{\TopMark{extramarks-right}} +\newcommand\lastleftxmark{\LastMark{extramarks-left}} +\newcommand\firstxmark{\firstleftxmark} \let\firstxmark\firstleftxmark +\newcommand\lastxmark{\lastrightxmark} \let\lastxmark\lastrightxmark +\newcommand\topxmark{\topleftxmark} \let\topxmark\topleftxmark -\def\@leftxmark#1#2#3#4{#3} -\def\@rightxmark#1#2#3#4{#4} \endinput %% %% End of file `extramarks.sty'. diff --git a/Master/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty b/Master/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty index 977698a1694..4a8932b6db3 100644 --- a/Master/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +++ b/Master/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty @@ -21,9 +21,9 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{fancyhdr}% - [2024/12/09 v4.5 + [2025/01/01 v5.0 Extensive control of page headers and footers]% -% Copyright (C) 1994-2024 by Pieter van Oostrum <pieter@vanoostrum.org> +% Copyright (C) 1994-2025 by Pieter van Oostrum <pieter@vanoostrum.org> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand\if@nch@mpty[1]{\def\temp@a{#1}\ifx\temp@a\@empty} \newif\iff@nch@check @@ -31,9 +31,13 @@ \DeclareOption{nocheck}{% \f@nch@checkfalse } -\newif\iff@nch@compatViii \let\f@nch@gbl\relax +\newif\iff@nch@compatViii \DeclareOption{compatV3}{% + \PackageWarningNoLine{fancyhdr}{The `compatV3' option is deprecated.\MessageBreak + It will disappear in one of the following releases.\MessageBreak + Please change your document to work\MessageBreak + without this option} \let\f@nch@gbl\global \f@nch@compatViiitrue } @@ -190,8 +194,41 @@ {\f@nch@forc\f@nch@lcr\f@nch@@lcr {\f@nch@forc\f@nch@hf\f@nch@@hf {\expandafter\setlength\csname - f@nch@O@\f@nch@eo\f@nch@lcr\f@nch@hf\endcsname {#4}}}}}% + f@nch@offset@\f@nch@eo\f@nch@lcr\f@nch@hf\endcsname {#4}}}}}% \f@nch@setoffs} +\newcommand{\fancyheadwidth}[2][]{\f@nch@fancyhfwidth\fancyheadwidth h[#1]{#2}}% +\newcommand{\fancyfootwidth}[2][]{\f@nch@fancyhfwidth\fancyfootwidth f[#1]{#2}}% +\newcommand{\fancyhfwidth}[2][]{\f@nch@fancyhfwidth\fancyhfwidth {}[#1]{#2}}% +\def\f@nch@fancyhfwidth#1#2[#3]#4{% + \setlength\@tempdima{#4}% + \def\temp@c{}% + \f@nch@forc\tmpf@ra{#3}% + {\expandafter\f@nch@ifin\tmpf@ra{eolcrhf,EOLCRHF}% + {}{\edef\temp@c{\temp@c\tmpf@ra}}}% + \ifx\@empty\temp@c\else \PackageError{fancyhdr}{Illegal char `\temp@c' in + \string#1 argument: [#3]}{}% + \fi \f@nch@for\temp@c{#3}% + {\f@nch@default\f@nch@@eo{eo}\temp@c + \f@nch@fancyhf@Echeck{#1}% + \f@nch@default\f@nch@@lcr{lcr}\temp@c + \f@nch@default\f@nch@@hf{hf}{#2\temp@c}% + \f@nch@forc\f@nch@eo\f@nch@@eo + {\f@nch@forc\f@nch@lcr\f@nch@@lcr + {\f@nch@forc\f@nch@hf\f@nch@@hf + {\expandafter\def\csname + f@nch@width@\f@nch@eo\f@nch@lcr\f@nch@hf\endcsname {#4}}}}}} +\def\f@nch@width@elh{\headwidth} +\def\f@nch@width@ech{\headwidth} +\def\f@nch@width@erh{\headwidth} +\def\f@nch@width@olh{\headwidth} +\def\f@nch@width@och{\headwidth} +\def\f@nch@width@orh{\headwidth} +\def\f@nch@width@elf{\headwidth} +\def\f@nch@width@ecf{\headwidth} +\def\f@nch@width@erf{\headwidth} +\def\f@nch@width@olf{\headwidth} +\def\f@nch@width@ocf{\headwidth} +\def\f@nch@width@orf{\headwidth} \newcommand{\lhead}[2][\f@nch@olh]% {\f@nch@def\f@nch@olh{#2}\f@nch@def\f@nch@elh{#1}} \newcommand{\chead}[2][\f@nch@och]% @@ -205,14 +242,14 @@ \newcommand{\rfoot}[2][\f@nch@orf]% {\f@nch@def\f@nch@orf{#2}\f@nch@def\f@nch@erf{#1}} \newlength{\f@nch@headwidth} \let\headwidth\f@nch@headwidth -\newlength{\f@nch@O@elh} -\newlength{\f@nch@O@erh} -\newlength{\f@nch@O@olh} -\newlength{\f@nch@O@orh} -\newlength{\f@nch@O@elf} -\newlength{\f@nch@O@erf} -\newlength{\f@nch@O@olf} -\newlength{\f@nch@O@orf} +\newlength{\f@nch@offset@elh} +\newlength{\f@nch@offset@erh} +\newlength{\f@nch@offset@olh} +\newlength{\f@nch@offset@orh} +\newlength{\f@nch@offset@elf} +\newlength{\f@nch@offset@erf} +\newlength{\f@nch@offset@olf} +\newlength{\f@nch@offset@orf} \newcommand{\headrulewidth}{0.4pt} \newcommand{\footrulewidth}{0pt} \f@nch@ifundefined{headruleskip}% @@ -321,8 +358,32 @@ \NewMirroredHookPair{fancyhdr/head/begin}{fancyhdr/head/end} \NewMirroredHookPair{fancyhdr/foot/begin}{fancyhdr/foot/end} \fi +\newlength\f@nch@height +\newlength\f@nch@footalignment +\newif\iff@nch@footalign\f@nch@footalignfalse +\newcommand{\fancyfootalign}[1]{% + \def\temp@a{#1}% + \ifx\temp@a\@empty + \f@nch@footalignfalse + \else + \f@nch@footaligntrue + \setlength\f@nch@footalignment{#1}% + \fi +} +\newcommand\fancyhdrsettoheight[2]{% + \expandafter\ifx\csname f@nch@#2\endcsname\fancyhdrsettoheight + \else\PackageError{fancyhdr}{Unknown parameter #2 in \string\fancyhdrsettoheight}{}\fi + \setbox\@tempboxa\hbox{{\f@nch@checkfalse\csname @#2\endcsname}}% + \setlength{#1}\f@nch@height + \setbox\@tempboxa\box\voidb@x +} +\let\f@nch@oddhead\fancyhdrsettoheight +\let\f@nch@evenhead\fancyhdrsettoheight +\let\f@nch@oddfoot\fancyhdrsettoheight +\let\f@nch@evenfoot\fancyhdrsettoheight \newcommand\f@nch@vbox[2]{% \setbox0\vbox{#2}% + \global\f@nch@height=\ht0 \ifdim\ht0>#1\relax \iff@nch@check \dimen0=#1\advance\dimen0-\ht0 @@ -335,35 +396,31 @@ This may cause the page layout to be inconsistent, however \fi \ifx#1\headheight .\MessageBreak - You might also make \topmargin smaller to compensate:\MessageBreak + You might also make \topmargin smaller:\MessageBreak \string\addtolength{\string\topmargin}{\the\dimen0}% \fi \@gobble }% - \fi - \iff@nch@compatViii - \dimen0=#1\relax - \global#1=\ht0\relax - \ht0=\dimen0 % + \iff@nch@compatViii + \dimen0=#1\relax + \global#1=\ht0\relax + \ht0=\dimen0 % + \else + \ht0=#1\relax + \fi \else - \ht0=#1% + \ht0=#1\relax \fi \fi \box0} -\newcommand\f@nch@head[5]{% +\newcommand\f@nch@head[8]{% \f@nch@reset \ifdefined\UseHook\UseHook{fancyhdr/before}\UseHook{fancyhdr/head/begin}\fi \f@nch@headinit\relax #1% \hbox to\headwidth{% \f@nch@vbox\headheight{% - \hbox{% - \rlap{\parbox[b]{\headwidth}{\raggedright\leavevmode\ignorespaces#2}}% - \hfill - \parbox[b]{\headwidth}{\centering\leavevmode\ignorespaces#3}% - \hfill - \llap{\parbox[b]{\headwidth}{\raggedleft\leavevmode\ignorespaces#4}}% - }% + \f@nch@hfbox{#2}{#3}{#4}{b}{#6}{#7}{#8}% \vskip\headruleskip\relax \headrule }% @@ -371,7 +428,7 @@ #5% \ifdefined\UseHook\UseHook{fancyhdr/head/end}\UseHook{fancyhdr/after}\fi } -\newcommand\f@nch@foot[5]{% +\newcommand\f@nch@foot[8]{% \f@nch@reset \ifdefined\UseHook\UseHook{fancyhdr/before}\UseHook{fancyhdr/foot/begin}\fi \f@nch@footinit\relax @@ -380,18 +437,50 @@ \f@nch@vbox\footskip{% \setbox0=\vbox{\footrule}\unvbox0 \vskip\footruleskip - \hbox{% - \rlap{\parbox[t]{\headwidth}{\raggedright\leavevmode\ignorespaces#2}}% - \hfill - \parbox[t]{\headwidth}{\centering\leavevmode\ignorespaces#3}% - \hfill - \llap{\parbox[t]{\headwidth}{\raggedleft\leavevmode\ignorespaces#4}}% - }% + \f@nch@hfbox{#2}{#3}{#4}{t}{#6}{#7}{#8}% + \iff@nch@footalign \vskip\f@nch@footalignment \fi }% }% #5% \ifdefined\UseHook\UseHook{fancyhdr/foot/end}\UseHook{fancyhdr/after}\fi } +\newlength\f@nch@widthL +\newlength\f@nch@widthC +\newlength\f@nch@widthR +\newcommand\f@nch@hfbox[7]{% + \setlength\f@nch@widthL{#5}% + \setlength\f@nch@widthC{#6}% + \setlength\f@nch@widthR{#7}% + \let\@tempa\f@nch@hfbox@center + \ifdim \dimexpr \f@nch@widthL+\f@nch@widthC+\f@nch@widthR>\headwidth + \else + \ifdim \dimexpr \f@nch@widthL+0.5\f@nch@widthC>0.5\headwidth + \let \@tempa\f@nch@hfbox@fit + \fi + \ifdim \dimexpr \f@nch@widthR+0.5\f@nch@widthC>0.5\headwidth + \let \@tempa\f@nch@hfbox@fit + \fi + \fi + \@tempa{#1}{#2}{#3}{#4}% +} +\newcommand\f@nch@hfbox@center[4]{% + \hbox to \headwidth{% + \rlap{\parbox[#4]{\f@nch@widthL}{\raggedright\leavevmode\ignorespaces#1}}% + \hfill + \parbox[#4]{\f@nch@widthC}{\centering\leavevmode\ignorespaces#2}% + \hfill + \llap{\parbox[#4]{\f@nch@widthR}{\raggedleft\leavevmode\ignorespaces#3}}% + }% +} +\newcommand\f@nch@hfbox@fit[4]{% + \hbox to \headwidth{% + \parbox[#4]{\f@nch@widthL}{\raggedright\leavevmode\ignorespaces#1}% + \hfill + \parbox[#4]{\f@nch@widthC}{\centering\leavevmode\ignorespaces#2}% + \hfill + \parbox[#4]{\f@nch@widthR}{\raggedleft\leavevmode\ignorespaces#3}% + }% +}% \f@nch@ifundefined{MakeUppercase}{\def\MakeUppercase{\uppercase}}{}% \f@nch@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}% \def\f@nch@initialise{% @@ -442,7 +531,8 @@ \def\ps@f@nch@fancycore{% \f@nch@ps@empty \def\@mkboth{\protect\markboth}% - \def\f@nch@oddhead{\f@nch@head\f@nch@Oolh\f@nch@olh\f@nch@och\f@nch@orh\f@nch@Oorh}% + \def\f@nch@oddhead{\f@nch@head\f@nch@Oolh\f@nch@olh\f@nch@och\f@nch@orh\f@nch@Oorh + \f@nch@width@olh\f@nch@width@och\f@nch@width@orh}% \def\@oddhead{% \iff@nch@twoside \ifodd\c@page @@ -454,7 +544,8 @@ \f@nch@oddhead \fi } - \def\f@nch@oddfoot{\f@nch@foot\f@nch@Oolf\f@nch@olf\f@nch@ocf\f@nch@orf\f@nch@Oorf}% + \def\f@nch@oddfoot{\f@nch@foot\f@nch@Oolf\f@nch@olf\f@nch@ocf\f@nch@orf\f@nch@Oorf + \f@nch@width@olf\f@nch@width@ocf\f@nch@width@orf}% \def\@oddfoot{% \iff@nch@twoside \ifodd\c@page @@ -466,14 +557,11 @@ \f@nch@oddfoot \fi } - \def\@evenhead{\f@nch@head\f@nch@Oelh\f@nch@elh\f@nch@ech\f@nch@erh\f@nch@Oerh}% - \def\@evenfoot{\f@nch@foot\f@nch@Oelf\f@nch@elf\f@nch@ecf\f@nch@erf\f@nch@Oerf}% -} -\def\ps@fancydefault{% - \f@nch@initialise - \ps@f@nch@fancyproto + \def\@evenhead{\f@nch@head\f@nch@Oelh\f@nch@elh\f@nch@ech\f@nch@erh\f@nch@Oerh + \f@nch@width@elh\f@nch@width@ech\f@nch@width@erh}% + \def\@evenfoot{\f@nch@foot\f@nch@Oelf\f@nch@elf\f@nch@ecf\f@nch@erf\f@nch@Oerf + \f@nch@width@elf\f@nch@width@ecf\f@nch@width@erf}% } -\@namedef{f@nch@ps@fancydefault-is-fancyhdr}{} \def\f@nch@Oolh{\if@reversemargin\hss\else\relax\fi} \def\f@nch@Oorh{\if@reversemargin\relax\else\hss\fi} \let\f@nch@Oelh\f@nch@Oorh @@ -482,36 +570,45 @@ \let\f@nch@Oorf\f@nch@Oorh \let\f@nch@Oelf\f@nch@Oelh \let\f@nch@Oerf\f@nch@Oerh -\def\f@nch@offsolh{\headwidth=\textwidth\advance\headwidth\f@nch@O@olh - \advance\headwidth\f@nch@O@orh\hskip-\f@nch@O@olh} -\def\f@nch@offselh{\headwidth=\textwidth\advance\headwidth\f@nch@O@elh - \advance\headwidth\f@nch@O@erh\hskip-\f@nch@O@elh} -\def\f@nch@offsolf{\headwidth=\textwidth\advance\headwidth\f@nch@O@olf - \advance\headwidth\f@nch@O@orf\hskip-\f@nch@O@olf} -\def\f@nch@offself{\headwidth=\textwidth\advance\headwidth\f@nch@O@elf - \advance\headwidth\f@nch@O@erf\hskip-\f@nch@O@elf} +\def\f@nch@offsolh{\headwidth=\textwidth\advance\headwidth\f@nch@offset@olh + \advance\headwidth\f@nch@offset@orh\hskip-\f@nch@offset@olh} +\def\f@nch@offselh{\headwidth=\textwidth\advance\headwidth\f@nch@offset@elh + \advance\headwidth\f@nch@offset@erh\hskip-\f@nch@offset@elh} +\def\f@nch@offsolf{\headwidth=\textwidth\advance\headwidth\f@nch@offset@olf + \advance\headwidth\f@nch@offset@orf\hskip-\f@nch@offset@olf} +\def\f@nch@offself{\headwidth=\textwidth\advance\headwidth\f@nch@offset@elf + \advance\headwidth\f@nch@offset@erf\hskip-\f@nch@offset@elf} \def\f@nch@setoffs{% \f@nch@gbl\let\headwidth\f@nch@headwidth - \f@nch@gbl\let\f@nch@Oolh\f@nch@offsolh - \f@nch@gbl\let\f@nch@Oelh\f@nch@offselh \f@nch@gbl\let\f@nch@Oorh\hss - \f@nch@gbl\let\f@nch@Oerh\hss \f@nch@gbl\let\f@nch@Oolf\f@nch@offsolf - \f@nch@gbl\let\f@nch@Oelf\f@nch@offself \f@nch@gbl\let\f@nch@Oorf\hss - \f@nch@gbl\let\f@nch@Oerf\hss + \f@nch@gbl\def\f@nch@Oolh{\f@nch@offsolh}% + \f@nch@gbl\def\f@nch@Oelh{\f@nch@offselh}% + \f@nch@gbl\def\f@nch@Oorh{\hss}% + \f@nch@gbl\def\f@nch@Oerh{\hss}% + \f@nch@gbl\def\f@nch@Oolf{\f@nch@offsolf}% + \f@nch@gbl\def\f@nch@Oelf{\f@nch@offself}% + \f@nch@gbl\def\f@nch@Oorf{\hss}% + \f@nch@gbl\def\f@nch@Oerf{\hss}% } \newif\iff@nch@footnote \AtBeginDocument{% \let\latex@makecol\@makecol \def\@makecol{\ifvoid\footins\f@nch@footnotefalse\else\f@nch@footnotetrue\fi - \let\topfloat\@toplist\let\botfloat\@botlist\latex@makecol}% + \let\f@nch@topfloat\@toplist\let\f@nch@botfloat\@botlist\latex@makecol}% } -\newcommand\iftopfloat[2]{\ifx\topfloat\@empty #2\else #1\fi}% -\newcommand\ifbotfloat[2]{\ifx\botfloat\@empty #2\else #1\fi}% +\newcommand\iftopfloat[2]{\ifx\f@nch@topfloat\@empty #2\else #1\fi}% +\newcommand\ifbotfloat[2]{\ifx\f@nch@botfloat\@empty #2\else #1\fi}% \newcommand\iffloatpage[2]{\if@fcolmade #1\else #2\fi}% \newcommand\iffootnote[2]{\iff@nch@footnote #1\else #2\fi}% -\newcommand{\fancypagestyle}[1]{% - \@ifnextchar[{\f@nch@pagestyle{#1}}{\f@nch@pagestyle{#1}[f@nch@fancyproto]}% +\ifx\@temptokenb\undefined \csname newtoks\endcsname\@temptokenb\fi +\newif\iff@nch@pagestyle@star +\newcommand\fancypagestyle{% + \@ifstar{\f@nch@pagestyle@startrue\f@nch@pagestyle}% + {\f@nch@pagestyle@starfalse\f@nch@pagestyle}% } -\long\def\f@nch@pagestyle#1[#2]#3{% +\newcommand\f@nch@pagestyle[1]{% + \@ifnextchar[{\f@nch@@pagestyle{#1}}{\f@nch@@pagestyle{#1}[f@nch@fancyproto]}% +} +\long\def\f@nch@@pagestyle#1[#2]#3{% \f@nch@ifundefined{ps@#2}{% \PackageError{fancyhdr}{\string\fancypagestyle: Unknown base page style `#2'}{}% }{% @@ -519,11 +616,150 @@ \PackageError{fancyhdr}{\string\fancypagestyle: Base page style `#2' is not fancyhdr-based}{}% }% {% - \@namedef{ps@#1}{\let\f@nch@gbl\relax\@nameuse{ps@#2}#3\relax}% + \f@nch@pagestyle@setup + \def\temp@b{\@namedef{ps@#1}}% + \expandafter\temp@b\expandafter{\the\@temptokenb + \let\f@nch@gbl\relax\@nameuse{ps@#2}#3\relax}% \@namedef{f@nch@ps@#1-is-fancyhdr}{}% }% }% -}% +} +\newcommand\f@nch@pagestyle@setup{% + \iff@nch@pagestyle@star + \iff@nch@check\@temptokenb={\f@nch@checktrue}\else\@temptokenb={\f@nch@checkfalse}\fi + \@tfor\temp@a:= + \f@nch@olh\f@nch@och\f@nch@orh\f@nch@elh\f@nch@ech\f@nch@erh + \f@nch@olf\f@nch@ocf\f@nch@orf\f@nch@elf\f@nch@ecf\f@nch@erf + \f@nch@width@elh\f@nch@width@ech\f@nch@width@erh\f@nch@width@olh + \f@nch@width@och\f@nch@width@orh\f@nch@width@elf\f@nch@width@ecf + \f@nch@width@erf\f@nch@width@olf\f@nch@width@ocf\f@nch@width@orf + \f@nch@Oolh\f@nch@Oorh\f@nch@Oelh\f@nch@Oerh + \f@nch@Oolf\f@nch@Oorf\f@nch@Oelf\f@nch@Oerf + \f@nch@headinit\f@nch@footinit + \headrule\headrulewidth\footrule\footrulewidth + \do {% + \toks@=\expandafter\expandafter\expandafter{\temp@a}% + \toks@=\expandafter\expandafter\expandafter{% + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\temp@a\expandafter{\the\toks@}}% + \edef\temp@b{\@temptokenb={\the\@temptokenb\the\toks@}}% + \temp@b + }% + \@tfor\temp@a:= + \f@nch@offset@olh\f@nch@offset@orh\f@nch@offset@elh\f@nch@offset@erh + \f@nch@offset@olf\f@nch@offset@orf\f@nch@offset@elf\f@nch@offset@erf + \do {% + \toks@=\expandafter\expandafter\expandafter{\expandafter\the\temp@a}% + \toks@=\expandafter\expandafter\expandafter{% + \expandafter\expandafter\expandafter\setlength + \expandafter\expandafter\temp@a\expandafter{\the\toks@}}% + \edef\temp@b{\@temptokenb={\the\@temptokenb\the\toks@}}% + \temp@b + }% + \else + \@temptokenb={}% + \fi +} +\newcommand\fancypagestyleassign[2]{% + \f@nch@ifundefined{ps@#2}{% + \PackageError{fancyhdr}{\string\fancypagestyleassign: Unknown page style `#2'}{}% + }{% + \expandafter\let + \csname ps@#1\expandafter\endcsname + \csname ps@#2\endcsname + \f@nch@ifundefined{f@nch@ps@#2-is-fancyhdr}{% + \f@nch@ifundefined{f@nch@ps@#1-is-fancyhdr}{}{% + \PackageNote{fancyhdr}{% + \string\fancypagestyleassign: You overwrite the\MessageBreak + fancyhdr-based page style `#1' with the\MessageBreak + non-fancyhdr-based page style `#2'.\MessageBreak + This could cause unexpected problems if you\MessageBreak + use `#1' as the base style in \string\fancypagestyle}}% + \expandafter\let\csname f@nch@ps@#1-is-fancyhdr\endcsname\@undefined + }{% + \@namedef{f@nch@ps@#1-is-fancyhdr}{}% + }% + }% +} +\fancypagestyle*{fancydefault}{\f@nch@initialise} +\def\f@nchdrbox@topstrut{\vrule height\ht\strutbox width\z@} +\def\f@nchdrbox@botstrut{\vrule depth\dp\strutbox width\z@} +\def\f@nchdrbox@nostrut{\noalign{\vspace{0pt}}\let\f@nchdrbox@@crstrut\f@nchdrbox@botstrut} +\NewDocumentCommand{\fancyhdrbox}{ O{cl} o m }{% +\begingroup + \let\f@nchdrbox@@pre\f@nchdrbox@topstrut + \let\f@nchdrbox@@postx\f@nchdrbox@botstrut + \let\f@nchdrbox@@posty\relax + \let\f@nchdrbox@@crstrut\strut + \IfNoValueTF{#2}% + {\let\f@nchdrbox@@halignto\@empty}% + {\setlength\@tempdima{#2}% + \def\f@nchdrbox@@halignto{to\@tempdima}}% + \def\@tempa{#1}% + \ifx\@tempa\@empty + \f@nchdrbox@align cl\@nil{#3}% + \else + \f@nchdrbox@align #1\@nil{#3}% + \fi +\endgroup +} +\protected\def\f@nchdrbox@cr{% + {\ifnum0=`}\fi\@ifstar\@f@nchdrbox@xcr\@f@nchdrbox@xcr} + +\def\@f@nchdrbox@xcr{% + \unskip\f@nchdrbox@@crstrut + \@ifnextchar[\@f@nchdrbox@argc{\ifnum0=`{\fi}\cr}% +} + +\def\@f@nchdrbox@argc[#1]{% + \ifnum0=`{\fi}% + \ifdim #1>\z@ + \unskip\@f@nchdrbox@xargc{#1}% + \else + \@f@nchdrbox@yargc{#1}% + \fi} + +\def\@f@nchdrbox@xargc#1{\@tempdima #1\advance\@tempdima \dp \strutbox + \vrule \@height\z@ \@depth\@tempdima \@width\z@ \cr} + +\def\@f@nchdrbox@yargc#1{\cr\noalign{\setlength\@tempdima{#1}\vskip\@tempdima}} +\def\f@nchdrbox@T{\let\f@nchdrbox@@pre\f@nchdrbox@nostrut + \f@nchdrbox@t} +\def\f@nchdrbox@t{\def\f@nchdrbox@@v{t}\def\f@nchdrbox@@h{l}} +\def\f@nchdrbox@c{\def\f@nchdrbox@@v{c}\def\f@nchdrbox@@h{c}} +\def\f@nchdrbox@b{\def\f@nchdrbox@@v{b}\def\f@nchdrbox@@h{l}} +\def\f@nchdrbox@B{\let\f@nchdrbox@@postx\relax + \def\f@nchdrbox@@posty{\vspace{0pt}}% + \f@nchdrbox@b} +\long\def\f@nchdrbox@align#1#2\@nil#3{% + \f@nch@ifin{#1}{TtcbB}{% + \@nameuse{f@nchdrbox@#1}% + \def\@tempa{#2}% + \ifx\@tempa\@empty\else \def\f@nchdrbox@@h{#2}\fi + }% + {\def\f@nchdrbox@@v{c}\def\f@nchdrbox@@h{#1}}% + \let\\\f@nchdrbox@cr + \setbox0=\if \f@nchdrbox@@v t\vtop + \else \vbox + \fi + {% + \ialign \f@nchdrbox@@halignto + \bgroup \relax + {\if \f@nchdrbox@@h l\hskip 1sp\else \hfil \fi + \ignorespaces ##\unskip + \if\f@nchdrbox@@h r\else \hfil \fi + }% + \tabskip\z@skip \cr + \f@nchdrbox@@pre + #3\unskip \f@nchdrbox@@postx + \crcr + \egroup + \f@nchdrbox@@posty + }% + \if\f@nchdrbox@@v c\@tempdima=\ht0\advance\@tempdima\dp0% + \ht0=0.5\@tempdima\dp0=0.5\@tempdima\fi + \leavevmode \box0 +} \@ifclassloaded{newlfm} { \let\ps@@empty\f@nch@ps@empty diff --git a/Master/texmf-dist/tex/latex/ffcode/ffcode.sty b/Master/texmf-dist/tex/latex/ffcode/ffcode.sty index 9ecddd78e80..0e6c0d1e816 100644 --- a/Master/texmf-dist/tex/latex/ffcode/ffcode.sty +++ b/Master/texmf-dist/tex/latex/ffcode/ffcode.sty @@ -7,7 +7,7 @@ %% ffcode.dtx (with options: `package') %% (The MIT License) %% -%% Copyright (c) 2021-2024 Yegor Bugayenko +%% Copyright (c) 2021-2025 Yegor Bugayenko %% %% Permission is hereby granted, free of charge, to any person obtaining a copy %% of this software and associated documentation files (the 'Software'), to deal @@ -31,7 +31,9 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{ffcode} -[2024-03-23 0.9.3 Fixed Font Code] +[2025/01/05 0.10.1 Fixed Font Code] + + @@ -55,6 +57,7 @@ /ff/.cd, bold/.store in=\ff@bold, sf/.store in=\ff@sf, + samepage/.store in=\ff@samepage, noframes/.store in=\ff@noframes, nonumbers/.store in=\ff@nonumbers, nobars/.store in=\ff@nobars, @@ -64,30 +67,44 @@ \ProcessPgfPackageOptions{/ff} \RequirePackage{xcolor} + \RequirePackage{listings} \makeatletter \lst@AddToHook{Init}{\setlength{\lineskip}{0pt}} \makeatother \makeatletter +\newcommand\ff@set[1]{ + \lstset{breaklines} + \lstset{escapeinside={(*@}{@*)}} + \lstset{basicstyle={\ttfamily}} + \lstset{columns=fullflexible} + \ifdefined\ff@nonumbers\else + \lstset{numbers=left,numbersep=.8em,numberstyle={\tiny\sffamily\color{gray}}} + \fi + \ifdefined\ff@nobars\else + \lstset{frame=leftline,framerule=.05em,rulecolor={\color{gray}}} + \fi + \ifdefined\ff@nocn\else + \lstset{firstnumber=last} + \fi + \lstset{#1} +} +\makeatother + +\makeatletter \lstnewenvironment{ffcode}[1][] - { - \lstset{breaklines} - \lstset{escapeinside={(*@}{@*)}} - \lstset{basicstyle={\ttfamily}} - \lstset{columns=fullflexible} - \ifdefined\ff@nonumbers\else - \lstset{numbers=left,numbersep=.8em,numberstyle={\tiny\sffamily\color{gray}}} - \fi - \ifdefined\ff@nobars\else - \lstset{frame=leftline,framerule=.05em,rulecolor={\color{gray}}} - \fi - \ifdefined\ff@nocn\else - \lstset{firstnumber=last} - \fi - \lstset{#1} - } - {} + {\ff@set{#1}\ifdefined\ff@samepage\noindent\minipage{\linewidth}\fi} + {\ifdefined\ff@samepage\endminipage\fi} +\makeatother + +\makeatletter +\newcommand\ffinput[2][]{% + \ff@set{#1}% + \ifdefined\ff@samepage\noindent\minipage{\linewidth}\fi% + \lstinputlisting[#1]{#2}% + \ifdefined\ff@samepage\endminipage\fi% +} \makeatother \makeatletter diff --git a/Master/texmf-dist/tex/latex/fontscale/fontscale.sty b/Master/texmf-dist/tex/latex/fontscale/fontscale.sty index fe18d8d96a7..ca199157aad 100644 --- a/Master/texmf-dist/tex/latex/fontscale/fontscale.sty +++ b/Master/texmf-dist/tex/latex/fontscale/fontscale.sty @@ -1,5 +1,5 @@ % Package : fontscale -- A flexible interface for setting font sizes -% Copyright : 2024 (c) Oliver Beery <beeryoliver@gmail.com> +% Copyright : 2024-2025 (c) Oliver Beery <beeryoliver@gmail.com> % CTAN : https://ctan.org/pkg/fontscale % Repository: https://github.com/beeryoliver/fontscale % License : The LaTeX Project Public License 1.3c @@ -8,8 +8,8 @@ \NeedsTeXFormat{LaTeX2e}[2023-11-01] \ProvidesExplPackage {fontscale} - {2024-12-22} - {3.0.4} + {2025-01-03} + {3.0.5} {A flexible interface for setting font sizes} % l3kernel version 2023-10-10 added many 'e'-variants. @@ -26,6 +26,77 @@ % This package does not require any other packages! +% MESSAGES + +\msg_new:nnn { fontscale } { key-musical-base-out-of-bounds } + { + Invalid~ value~ '#1'~ \msg_line_context:. \\ + The~ value~ of~ the~ key~ 'musical / base'~ + must~ be~ a~ positive~ length. + } +\msg_new:nnn { fontscale } { key-musical-ratio-out-of-bounds } + { + Invalid~ value~ '#1'~ \msg_line_context:. \\ + The~ value~ of~ the~ key~ 'musical / ratio'~ + must~ be~ greater~ than~ 1. + } +\msg_new:nnn { fontscale } { key-musical-notes-out-of-bounds } + { + Invalid~ value~ '#1'~ \msg_line_context:. \\ + The~ value~ of~ the~ key~ 'musical / notes'~ + must~ be~ a~ positive~ integer. + } +\msg_new:nnn { fontscale } { key-font-scale-out-of-bounds } + { + Invalid~ value~ '#1'~ \msg_line_context:. \\ + The~ value~ of~ the~ key~ '#2 / scale'~ + must~ be~ positive. + } +\msg_new:nnn { fontscale } { key-font-size-out-of-bounds } + { + Invalid~ value~ '#1'~ \msg_line_context:. \\ + The~ value~ of~ the~ key~ '#2 / size'~ + must~ be~ a~ positive~ length. + } +\msg_new:nnn { fontscale } { key-font-scale-overwritten } + { + The~ font~ size~ set~ by~ the~ key~ '#1 / scale'~ + has~ been~ overwritten~ by~ the~ key~ '#1 / size'~ \msg_line_context:. + } +\msg_new:nnn { fontscale } { font-sizes-out-of-order } + { + The~ font~ sizes~ are~ not~ in~ the~ correct~ order~ \msg_line_context:. \\ + The~ lengths~ of~ the~ font~ sizes~ should~ be~ ordered~ from~ + \iow_char:N \\tiny~ to~ \iow_char:N \\Huge. + } + +% This package tests for math mode only at the user level because this is not +% necessary for programmers. To avoid confusion, this package issues a warning +% when \fontsize + \selectfont would be used in math mode because it would not +% change the math font size. +\msg_new:nnn { fontscale } { math-mode-warning } + { '#1'~ does~ nothing~ if~ used~ in~ math~ mode~ \msg_line_context:. } +% \@ and \par cannot be used in math mode. +\msg_new:nnn { fontscale } { math-mode-error } + { '#1'~ cannot~ be~ used~ in~ math~ mode~ \msg_line_context:. } +\msg_new:nnn { fontscale } { font-size-out-of-bounds } + { + Invalid~ font~ size~ '#1'~ \msg_line_context:. \\ + The~ font~ size~ must~ be~ a~ positive~ length. + } +\msg_new:nnn { fontscale } { font-step-out-of-bounds } + { + Invalid~ font~ step~ '#1'~ \msg_line_context:. \\ + The~ font~ step~ must~ equal~ the~ font~ step~ of~ + any~ font~ size~ command~ from~ \iow_char:N \\tiny~ to~ \iow_char:N \\Huge~ + unless~ the~ value~ of~ the~ key~ 'typographic-scale'~ is~ 'musical'. + } +\msg_new:nnn { fontscale } { current-font-step-out-of-bounds } + { + The~ new~ font~ step~ could~ not~ be~ calculated~ + because~ the~ current~ font~ step~ is~ undefined~ \msg_line_context:. + } + % SOME VARIABLES % Declares and initializes the font step, font scale, font size, and font @@ -119,7 +190,8 @@ % point expression by using \fp_set_eq:NN when the font size equals the font % size of any font size command from \tiny to \Huge. The case when the font % size equals that of \normalsize is optimized further because it is by far -% the most common case. +% the most common case. \f@size and \f@baselineskip are not used elsewhere in +% the code. \hook_gput_code:nnn { selectfont } { fontscale } { \__fontscale_hook_selectfont: } \cs_new_protected:Npn \__fontscale_hook_selectfont: @@ -186,13 +258,13 @@ } { \__fontscale_hook_selectfont_auxii: } } -% For speed, \__fontscale_hook_selectfont_auxii: uses \f@size instead of -% \l_fontscale_size_dim. The case where the base font size of the musical -% typographic scale equals the font size of \normalsize is optimized further. \cs_new_protected:Npn \__fontscale_hook_selectfont_auxii: { \fp_set:Nn \l_fontscale_scale_fp - { \f@size / \l__fontscale_normalsize_size_fp } + { + \dim_to_fp:n { \l_fontscale_size_dim } + * \l__fontscale_normalsize_size_reciprocal_fp + } \str_if_eq:VnTF \l__fontscale_typographic_scale_str { musical } { \fp_set:Nn \l_fontscale_step_fp @@ -203,7 +275,10 @@ \dim_compare:nNnTF \l__fontscale_musical_base_dim = \l_fontscale_normalsize_size_dim { \l_fontscale_scale_fp } - { \f@size / \l__fontscale_musical_base_fp } + { + \dim_to_fp:n { \l_fontscale_size_dim } + * \l__fontscale_musical_base_reciprocal_fp + } ) } } @@ -212,11 +287,15 @@ % Used only to speed up floating point calculations. \fp_new:N \l__fontscale_normalsize_size_fp -\fp_set:Nn \l__fontscale_normalsize_size_fp { 10 } +\fp_new:N \l__fontscale_normalsize_size_reciprocal_fp \fp_new:N \l__fontscale_musical_base_fp -\fp_new:N \l__fontscale_musical_notes_fp +\fp_new:N \l__fontscale_musical_base_reciprocal_fp +\fp_new:N \l__fontscale_musical_notes_reciprocal_fp \fp_new:N \l__fontscale_musical_selectfont_fp +\fp_set:Nn \l__fontscale_normalsize_size_fp { 10 } +\fp_set:Nn \l__fontscale_normalsize_size_reciprocal_fp { 0.1 } + % Scratch variable \fp_new:N \l__fontscale_tmp_fp @@ -248,17 +327,19 @@ } \cs_generate_variant:Nn \__fontscale_skip_set_from_user:Nn { c } % Argument processors -\dim_new:N \l__fontscale_arg_process_dim \cs_new_protected:Npn \__fontscale_arg_process_dim:n #1 { - \__fontscale_dim_set_from_user:Nn \l__fontscale_arg_process_dim {#1} - \tl_set:NV \ProcessedArgument \l__fontscale_arg_process_dim + \group_begin: + \__fontscale_dim_set_from_user:Nn \l_tmpa_dim {#1} + \exp_args:NNNV \group_end: + \tl_set:Nn \ProcessedArgument \l_tmpa_dim } -\skip_new:N \l__fontscale_arg_process_skip \cs_new_protected:Npn \__fontscale_arg_process_skip:n #1 { - \__fontscale_skip_set_from_user:Nn \l__fontscale_arg_process_skip {#1} - \tl_set:NV \ProcessedArgument \l__fontscale_arg_process_skip + \group_begin: + \__fontscale_skip_set_from_user:Nn \l_tmpa_skip {#1} + \exp_args:NNNV \group_end: + \tl_set:Nn \ProcessedArgument \l_tmpa_skip } % Used to define \tiny to \Huge. Sets \@currsize only for compatibility. Need % \dim_use:N only for compatibility with versions of the microtype package @@ -291,87 +372,19 @@ % Similar to \__fontscale_set_font_size:nn, except that it sets the font % baselineskip equal to the new font size times the baselineskip-size-ratio. \cs_new_protected:Npn \__fontscale_set_font_size:n #1 - { \exp_args:Ne \__fontscale_set_font_size_aux:n { \dim_to_decimal:n {#1} } } + { \exp_args:Ne \__fontscale_set_font_size_aux:n { \dim_eval:n {#1} } } \cs_new_protected:Npn \__fontscale_set_font_size_aux:n #1 { - \dim_compare:nNnTF { #1 pt } > \c_zero_dim + \dim_compare:nNnTF {#1} > \c_zero_dim { - \fontsize { #1 pt } - { \fp_to_dim:n { #1 * \l__fontscale_baselineskip_size_ratio_fp } } + \fontsize {#1} + { + \fp_to_dim:n + { \dim_to_fp:n {#1} * \l__fontscale_baselineskip_size_ratio_fp } + } \selectfont } - { \msg_error:nnn { fontscale } { font-size-out-of-bounds } { #1 pt } } - } - -% MESSAGES - -\msg_new:nnn { fontscale } { key-musical-base-out-of-bounds } - { - Invalid~ value~ '#1'~ \msg_line_context:. \\ - The~ value~ of~ the~ key~ 'musical / base'~ - must~ be~ a~ positive~ length. - } -\msg_new:nnn { fontscale } { key-musical-ratio-out-of-bounds } - { - Invalid~ value~ '#1'~ \msg_line_context:. \\ - The~ value~ of~ the~ key~ 'musical / ratio'~ - must~ be~ greater~ than~ 1. - } -\msg_new:nnn { fontscale } { key-musical-notes-out-of-bounds } - { - Invalid~ value~ '#1'~ \msg_line_context:. \\ - The~ value~ of~ the~ key~ 'musical / notes'~ - must~ be~ a~ positive~ integer. - } -\msg_new:nnn { fontscale } { key-font-scale-out-of-bounds } - { - Invalid~ value~ '#1'~ \msg_line_context:. \\ - The~ value~ of~ the~ key~ '#2 / scale'~ - must~ be~ positive. - } -\msg_new:nnn { fontscale } { key-font-size-out-of-bounds } - { - Invalid~ value~ '#1'~ \msg_line_context:. \\ - The~ value~ of~ the~ key~ '#2 / size'~ - must~ be~ a~ positive~ length. - } -\msg_new:nnn { fontscale } { key-font-scale-overwritten } - { - The~ font~ size~ set~ by~ the~ key~ '#1 / scale'~ - has~ been~ overwritten~ by~ the~ key~ '#1 / size'~ \msg_line_context:. - } -\msg_new:nnn { fontscale } { font-sizes-out-of-order } - { - The~ font~ sizes~ are~ not~ in~ the~ correct~ order~ \msg_line_context:. \\ - The~ lengths~ of~ the~ font~ sizes~ should~ be~ ordered~ from~ - \iow_char:N \\tiny~ to~ \iow_char:N \\Huge. - } - -% This package tests for math mode only at the user level because this is not -% necessary for programmers. To avoid confusion, this package issues a warning -% when \fontsize + \selectfont would be used in math mode because it would not -% change the math font size. -\msg_new:nnn { fontscale } { math-mode-warning } - { '#1'~ does~ nothing~ if~ used~ in~ math~ mode~ \msg_line_context:. } -% \@ and \par cannot be used in math mode. -\msg_new:nnn { fontscale } { math-mode-error } - { '#1'~ cannot~ be~ used~ in~ math~ mode~ \msg_line_context:. } -\msg_new:nnn { fontscale } { font-size-out-of-bounds } - { - Invalid~ font~ size~ '#1'~ \msg_line_context:. \\ - The~ font~ size~ must~ be~ a~ positive~ length. - } -\msg_new:nnn { fontscale } { font-step-out-of-bounds } - { - Invalid~ font~ step~ '#1'~ \msg_line_context:. \\ - The~ font~ step~ must~ equal~ the~ font~ step~ of~ - any~ font~ size~ command~ from~ \iow_char:N \\tiny~ to~ \iow_char:N \\Huge~ - unless~ the~ value~ of~ the~ key~ 'typographic-scale'~ is~ 'musical'. - } -\msg_new:nnn { fontscale } { current-font-step-out-of-bounds } - { - The~ new~ font~ step~ could~ not~ be~ calculated~ - because~ the~ current~ font~ step~ is~ undefined~ \msg_line_context:. + { \msg_error:nnn { fontscale } { font-size-out-of-bounds } {#1} } } % DEFINE KEYS @@ -393,10 +406,7 @@ \cs_new_protected:Npn \__fontscale_keys_code_name: { \tl_if_in:NnTF \l_keys_value_tl { / } - { - \exp_last_unbraced:NV \__fontscale_keys_code_name:ww \l_keys_value_tl - \q_stop - } + { \exp_after:wN \__fontscale_keys_code_name:ww \l_keys_value_tl \q_stop } { \tl_set_eq:cN { l__fontscale_ \l_keys_key_str _size_tl } \l_keys_value_tl @@ -713,7 +723,9 @@ } } \fp_set:Nn \l__fontscale_normalsize_size_fp - { \l_fontscale_normalsize_size_dim } + { \dim_to_fp:n { \l_fontscale_normalsize_size_dim } } + \fp_set:Nn \l__fontscale_normalsize_size_reciprocal_fp + { \c_one_fp / \l__fontscale_normalsize_size_fp } \quark_if_no_value:NTF \l__fontscale_normalsize_baselineskip_tl { \skip_set:Nn \l_fontscale_normalsize_baselineskip_skip @@ -784,7 +796,7 @@ { \l__fontscale_musical_base_fp * \l__fontscale_musical_ratio_fp ^ ( \use:c { c_fontscale_#1_step_fp } - / \l__fontscale_musical_notes_fp ) + * \l__fontscale_musical_notes_reciprocal_fp ) } } % Sets the font size, font scale, and font baselineskip of the other font size @@ -812,13 +824,25 @@ { \cs_set_eq:NN \__fontscale_keys_process_other_fn_aux:n \__fontscale_keys_process_other_musical:n - \fp_set:Nn \l__fontscale_musical_base_fp - { \l__fontscale_musical_base_dim } - \fp_set:Nn \l__fontscale_musical_notes_fp - { \l__fontscale_musical_notes_int } + \dim_compare:nNnTF \l__fontscale_musical_base_dim = + \l_fontscale_normalsize_size_dim + { + \fp_set_eq:NN \l__fontscale_musical_base_fp + \l__fontscale_normalsize_size_fp + \fp_set_eq:NN \l__fontscale_musical_base_reciprocal_fp + \l__fontscale_normalsize_size_reciprocal_fp + } + { + \fp_set:Nn \l__fontscale_musical_base_fp + { \dim_to_fp:n { \l__fontscale_musical_base_dim } } + \fp_set:Nn \l__fontscale_musical_base_reciprocal_fp + { \c_one_fp / \l__fontscale_musical_base_fp } + } + \fp_set:Nn \l__fontscale_musical_notes_reciprocal_fp + { \c_one_fp / \int_use:N \l__fontscale_musical_notes_int } \fp_set:Nn \l__fontscale_musical_selectfont_fp { - \l__fontscale_musical_notes_fp + \int_use:N \l__fontscale_musical_notes_int / ln ( \l__fontscale_musical_ratio_fp ) } } @@ -876,25 +900,23 @@ { \__fontscale_keys_process_other_fn_aux:n {#1} } \prg_break: \prg_break_point: + \fp_set:cn { l_fontscale_#1_scale_fp } + { + \dim_to_fp:n { \use:c { l_fontscale_#1_size_dim } } + * \l__fontscale_normalsize_size_reciprocal_fp + } \quark_if_no_value:cTF { l__fontscale_#1_baselineskip_tl } { - \fp_set:Nn \l__fontscale_tmp_fp { \use:c { l_fontscale_#1_size_dim } } - \fp_set:cn { l_fontscale_#1_scale_fp } - { \l__fontscale_tmp_fp / \l__fontscale_normalsize_size_fp } \skip_set:cn { l_fontscale_#1_baselineskip_skip } { \fp_to_dim:n { - \l__fontscale_tmp_fp * \l__fontscale_baselineskip_size_ratio_fp + \dim_to_fp:n { \use:c { l_fontscale_#1_size_dim } } + * \l__fontscale_baselineskip_size_ratio_fp } } } { - \fp_set:cn { l_fontscale_#1_scale_fp } - { - \use:c { l_fontscale_#1_size_dim } - / \l__fontscale_normalsize_size_fp - } \__fontscale_skip_set_from_user:cn { l_fontscale_#1_baselineskip_skip } { \use:c { l__fontscale_#1_baselineskip_tl } } } @@ -1100,8 +1122,6 @@ { \msg_error:nn { fontscale } { current-font-step-out-of-bounds } } { \__fontscale_set_font_step:n { (#1) + \l_fontscale_step_fp } } } -% Using \str_case: here is significantly faster (and easier to write) than -% repeatedly testing \fp_compare:. \cs_new_protected:Npn \__fontscale_set_font_step:n #1 { \fp_set:Nn \l__fontscale_tmp_fp { round ( #1 , 5 ) } @@ -1127,7 +1147,8 @@ { \l__fontscale_musical_base_fp * \l__fontscale_musical_ratio_fp - ^ ( \l__fontscale_tmp_fp / \l__fontscale_musical_notes_fp ) + ^ ( \l__fontscale_tmp_fp + * \l__fontscale_musical_notes_reciprocal_fp ) } } } @@ -1188,9 +1209,16 @@ { \fp_set:Nn \l__fontscale_tmp_fp {#1} \__fontscale_set_font_size:nn - { \fp_to_dim:n { \l__fontscale_tmp_fp * \l_fontscale_size_dim } } { - \fp_to_dim:n { \l__fontscale_tmp_fp * \l_fontscale_baselineskip_skip } + \fp_to_dim:n + { \l__fontscale_tmp_fp * \dim_to_fp:n { \l_fontscale_size_dim } } + } + { + \fp_to_dim:n + { + \l__fontscale_tmp_fp + * \dim_to_fp:n { \l_fontscale_baselineskip_skip } + } } } diff --git a/Master/texmf-dist/tex/latex/kdpcover/kdpcover.cls b/Master/texmf-dist/tex/latex/kdpcover/kdpcover.cls index 125fa6c0526..5ec4f4ac5e4 100644 --- a/Master/texmf-dist/tex/latex/kdpcover/kdpcover.cls +++ b/Master/texmf-dist/tex/latex/kdpcover/kdpcover.cls @@ -7,7 +7,7 @@ %% kdpcover.dtx (with options: `class') %% (The MIT License) %% -%% Copyright (c) 2021-2022 Yegor Bugayenko +%% Copyright (c) 2021-2024 Yegor Bugayenko %% %% Permission is hereby granted, free of charge, to any person obtaining a copy %% of this software and associated documentation files (the 'Software'), to deal @@ -31,7 +31,7 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesClass{kdpcover} -[2022.11.30 0.5.1 Cover for Kindle Direct Publishing books] +[2025/01/02 0.6.0 Cover for Kindle Direct Publishing books] @@ -58,35 +58,47 @@ \LoadClass{article} \makeatletter -\newcommand*\kdp@pages{100} +\newcount\kdp@pages + \kdp@pages=100 \newlength\kdp@xsize -\setlength\kdp@xsize{6in} + \setlength\kdp@xsize{6in} \newlength\kdp@ysize -\setlength\kdp@ysize{9in} + \setlength\kdp@ysize{9in} \makeatother \RequirePackage{iexec} -\RequirePackage{xkeyval} +\RequirePackage{pgfopts} \makeatletter -\DeclareOptionX{6x9} - {\setlength\kdp@xsize{6in}\setlength\kdp@ysize{9in}} -\DeclareOptionX{7x10} - {\setlength\kdp@xsize{7in}\setlength\kdp@ysize{10in}} -\DeclareOptionX{8x10} - {\setlength\kdp@xsize{8in}\setlength\kdp@ysize{10in}} -\DeclareOptionX{pages} - {\renewcommand*\kdp@pages{#1}} -\newif\ifkdp@barless -\DeclareOptionX{barless}{\kdp@barlesstrue} -\DeclareOptionX{pdf}{% - \iexec[trace,quiet,stdout=kdpcover-pages-count.txt] - {qpdf --show-npages #1 | tr -d '[[:space:]]' | \{ cat; echo \%; \}}% - \newread\kdp@pagescount% - \openin\kdp@pagescount=kdpcover-pages-count.txt - \read\kdp@pagescount to \kdp@pages% +\pgfkeys{ + /kdp/.cd, + barless/.store in = \kdp@barless, + pdf/.code = { + \iexec[trace,quiet,stdout=kdpcover-pages-count.txt] + {qpdf --show-npages --no-warn #1 | tr -d '[[:space:]]'} + \openin1=kdpcover-pages-count.txt + \read1 to \temp + \closein1 + \kdp@pages=\temp + }, + 6x9/.code = { + \setlength\kdp@xsize{6in} + \setlength\kdp@ysize{9in} + }, + 7x10/.code = { + \setlength\kdp@xsize{7in} + \setlength\kdp@ysize{10in} + }, + 8x10/.code = { + \setlength\kdp@xsize{8in} + \setlength\kdp@ysize{10in} + }, + pages/.code = { + \kdp@pages=#1 + } } -\ProcessOptionsX\relax\makeatother +\ProcessPgfPackageOptions{/kdp} +\makeatother \RequirePackage{anyfontsize} \RequirePackage{tikz} @@ -99,26 +111,33 @@ \setstretch{1.2} \makeatletter - \newlength\kdp@height +\newlength\kdp@height \setlength\kdp@height{0.125in + \kdp@ysize + 0.125in} - \newlength\kdp@width +\newlength\kdp@width \setlength\kdp@width{ 0.125in + \kdp@xsize - + 0.0025in * \kdp@pages - + \kdp@xsize + 0.125in} + + 0.125in + \kdp@xsize + + 0.0025in * \kdp@pages} \makeatother \RequirePackage{geometry} \makeatletter -\geometry{paperwidth=\kdp@width,paperheight=\kdp@height, - left=0pt,right=0pt,top=0pt,bottom=0pt} +\geometry{ + paperwidth=\kdp@width, + paperheight=\kdp@height, + left=0pt, + right=0pt, + top=0pt, + bottom=0pt +} \makeatother \RequirePackage[absolute]{textpos} \TPGrid{16}{16} -\makeatletter\newcommand\putSpine[2][kdpcover-signature]{% - \ifkdp@barless\else +\makeatletter +\newcommand\putSpine[2][kdpcover-signature]{% + \ifdefined\kdp@barless\else% \begin{textblock}{2.4}[0.5,0](8,0)% \begin{tikzpicture}% \node [rectangle, inner sep=0em, fill=black, @@ -126,19 +145,20 @@ minimum height=16\TPVertModule] at (0,0) {}; \end{tikzpicture}% \end{textblock}% - \fi + \fi% \begin{textblock}{1}[0.5,0](8,2)% \begin{tikzpicture}% \node [color=white, inner sep=0cm, outer sep=0cm, rotate=270, minimum height=\TPHorizModule] at (0,0) { - \Large #2 - };% + \Large #2% + }; \end{tikzpicture}% \end{textblock}% \begin{textblock}{2.4}[0.5,1](8,14)% \centerline{\includegraphics[width=0.32in]{#1}}% \end{textblock}% -}\makeatother +} +\makeatother \newcommand\putPicture[1]{% \begin{textblock}{4}(10,2)% @@ -148,54 +168,54 @@ \newcommand\putVolume[1]{% \begin{textblock}{2}[1,1](15,14)% - \raggedleft - \includegraphics[height=0.4in]{kdpcover-vol-#1} + \raggedleft% + \includegraphics[height=0.4in]{kdpcover-vol-#1}% \end{textblock}% } \newcommand\putPrice[1]{% \begin{textblock}{4}[0,1](1,2)% - \small #1 + \small #1% \end{textblock}% } \newcommand\putBack[1]{% \begin{textblock}{5}[0,0](1,3)% - \small #1 + \small #1% \end{textblock}% } \newcommand\putTitle[1]{% \begin{textblock}{5}(10,9)% - \fontsize{32}{32}\selectfont #1 + \fontsize{32}{32}\selectfont #1% \end{textblock}% } \newcommand\putAuthor[1]{% \begin{textblock}{4}(10,10)% - \large by #1 + \large by #1% \end{textblock}% } \newcommand\putTLDR[1]{% \begin{textblock}{5}(10,11)% - TL;DR #1 + TL;DR #1% \end{textblock}% } \newcommand\putVersion[1]{% \begin{textblock}{4}[0,1](10,14)% - #1 + #1% \IfFileExists{.git} {\quad\iexec{git log -n 1 --pretty='format:\%ad' --date='format:\%e-\%b-\%Y'}} - {} + {}% \end{textblock}% } \newcommand\putCopyright[2]{% \begin{textblock}{4}[0,1](1,14)% - \small (c) - #1 #2 + \small (c)% + #1 #2% \end{textblock}% } @@ -206,8 +226,6 @@ \setlength\parskip{0pt}% \interfootnotelinepenalty=10000% } - - \endinput %% %% End of file `kdpcover.cls'. diff --git a/Master/texmf-dist/tex/latex/liederbuch/liederbuch.sty b/Master/texmf-dist/tex/latex/liederbuch/liederbuch.sty new file mode 100644 index 00000000000..4dced01307e --- /dev/null +++ b/Master/texmf-dist/tex/latex/liederbuch/liederbuch.sty @@ -0,0 +1,569 @@ +\ProvidesPackage{liederbuch} +\RequirePackage{etoolbox} +\RequirePackage{environ} +\RequirePackage{xparse} +\RequirePackage{pgfmath} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Special music characters %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcommand{\repeatleft}{\raisebox{-0.28em}{\hspace{0.075em}\rule{0.075em}{1em}\hspace{0.075em}\rule{0.025em}{1em}\hspace{-0.01em}}:} +\newcommand{\repeatright}{:\raisebox{-0.28em}{\hspace{-0.01em}\rule{0.025em}{1em}\hspace{0.075em}\rule{0.075em}{1em}\hspace{0.075em}}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Handling of the meta data %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%% parse meta data +%unpackages a list of data in the form of [first=xy & second = xz& third= som3thing ...] +%This creates the macros: +%\GFM@LB@lied@<songbookname>@<song variant>@<song number>@first{xy} +%\GFM@LB@lied@<songbookname>@<song variant>@<song number>@second{xz} +%\GFM@LB@lied@<songbookname>@<song variant>@<song number>@third{som3thing} +%... +\NewDocumentCommand{\GFM@LB@unpackage}{m}{{% + %As '=' is not available in the tag text, we make it available again. & stays available via \& + \gdef\equals{=}% + \@ifundefined{inputList}{% + \DeclareListParser{\inputList}{&}% + }{}% + % + % + % + {% + \newcount\ipp\relax% + \ipp=0\relax% + \renewcommand{\do}[1]{% + \csdef{tempList\the\ipp}{##1&}% + \global\advance\ipp by1\relax% + }% + \inputList{#1}% + \def\choppyA##1=##2&{##1}% + \def\choppyB##1=##2&{##2}% + \newif\iflooping\relax% + \loopingtrue\relax% + \ipp=0\relax% + \loop% + \ifnum\ipp>1000\relax% + \loopingfalse\relax% + \wlog{Error: Too much meta data (>1000 Elements)}% + \fi% + \expandafter\ifx\csname tempList\the\ipp\endcsname\relax% + \loopingfalse\relax% + \else% + \edef\temp{\csuse{tempList\the\ipp}}% + \edef\tempA{\expandafter\choppyA\temp}% + \edef\tempB{\expandafter\choppyB\temp}% + \trim@spaces@in{\tempA}% + \trim@spaces@in{\tempB}% + % + %Most important line is here: + % + \global\csedef{GFM@LB@lied@\GFM@LB@LiederbuchNameTmp @\GFM@LB@LiederbuchVariantTmp @\GFM@LB@LiederbuchNumberTmp @\tempA}{\expandafter\noexpand\tempB}%songbook@song variant@song number + \advance\ipp by1\relax% + \fi% + \iflooping\repeat% + }% +}}% + + +%tweakMetadata allows completing or editing meta data of a certain song. +\def\tweakMetadata#1#2#3#4{{%structure is analogue to \LBsong + \def\GFM@LB@LiederbuchNameTmp{#1}%songbook + \def\GFM@LB@LiederbuchNumberTmp{#2}%song number + \def\GFM@LB@LiederbuchVariantTmp{#3}%song variant + \GFM@LB@unpackage{#4}% +}}% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Environment and commands for %%% +%%% notes + lyrics in native LaTeX font %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newdimen\GFM@LB@NT@tempDimA% +\newdimen\GFM@LB@NT@tempDimB% +\newdimen\GFM@LB@NT@tempDimC% + + +\newcommand{\GFM@LB@songLyrics}[1]{% + \vskip 0pt%backwards compability + \nopagebreak[4]% + {% make commands local + \nopagebreak[4]% + \GFM@LB@NT@tempDimA=0pt% + \noindent% + %If no unit is given (i.e. [10] instead of [10pt]), + %percent linewidth is assumed ([10] = 0.1\linewidth) + \DeclareDocumentCommand{\nspace}{s m}{% + \pgfmathparse{##2}% + \ifpgfmathunitsdeclared% + \ifx##1\BooleanTrue% + \hspace*{##2}% + \else% + \hspace{##2}% + \fi% + \else% + \GFM@LB@NT@tempDimC=0.01\linewidth\relax% + \ifx##1\BooleanTrue% + \hspace*{##2\GFM@LB@NT@tempDimC}% + \else% + \hspace{##2\GFM@LB@NT@tempDimC}% + \fi% + \fi% + }% + \DeclareDocumentCommand{\ns}{s O{0 pt}}{% + \pgfmathparse{##2}% + \ifpgfmathunitsdeclared% + \GFM@LB@NT@tempDimB=\dimexpr##2\relax% + \else% + \GFM@LB@NT@tempDimB=##2\linewidth\relax% + \divide\GFM@LB@NT@tempDimB by 100\relax% + \fi% + \ifx##1\BooleanTrue% + {% + \divide\GFM@LB@NT@tempDimA by2\relax% + \divide\GFM@LB@NT@tempDimB by2\relax% + \hskip 0pt plus 1fill minus 1fill\relax% + \hspace{\dimexpr\GFM@LB@NT@tempDimB - \GFM@LB@NT@tempDimA}% + -% + \hspace{\dimexpr\GFM@LB@NT@tempDimB - \GFM@LB@NT@tempDimA}% + \hskip 0pt plus 1fill minus 1fill\relax% + }% + \else% + \hspace*{0.5\dimexpr\f@size pt}% + %compensates the - in ns* (not totally) + \hskip 0pt plus 2fill minus 2fill% + \hspace{\dimexpr\GFM@LB@NT@tempDimB - \GFM@LB@NT@tempDimA}% + \fi% + \global\GFM@LB@NT@tempDimA=\dimexpr\GFM@LB@NT@tempDimB\relax% + }%\ns + %%%%%%%%%% most important line is here: + \makebox[\linewidth]{% + \GFM@LB@NT@tempDimC=\dimexpr\f@size pt\relax% +% \parbox[t][0.5\GFM@LB@NT@tempDimC]{0pt}{}% orig. statt 0.5 war 1.65 + #1}% + %%%%%%%%%% most important line END + \GFM@LB@NT@tempDimA=0pt% + %reset to avoid sideeffects otherwhere. + \pagebreak[3]% + }% END make commands local + \pagebreak[3]% + \vskip 0pt\relax%backward compatibility? +}% + +\newdimen\tempdimA% + +\newcounter{staveLineNumber}% +\setcounter{staveLineNumber}{1}% + +\newcounter{GFM@staveLineNumberBreakPointA}% +\newcounter{GFM@staveLineNumberBreakPointB}% +\newcounter{GFM@staveLineNumberBreakPointC}% +\newcounter{GFM@staveLineNumberBreakPointD}% +\newcounter{GFM@staveLineNumberBreakPointE}% +\newcounter{GFM@staveLineNumberBreakPointF}% + + +%usage: \forcePageBreakAfterStaveLine{3}[4][2]... +\NewDocumentCommand\forcePageBreakAfterStaveLine{m O{0} O{0} O{0} O{0} O{0}}{ +\setcounter{GFM@staveLineNumberBreakPointA}{#1} +\setcounter{GFM@staveLineNumberBreakPointB}{#2} +\setcounter{GFM@staveLineNumberBreakPointC}{#3} +\setcounter{GFM@staveLineNumberBreakPointD}{#4} +\setcounter{GFM@staveLineNumberBreakPointE}{#5} +\setcounter{GFM@staveLineNumberBreakPointF}{#6} +} + + +\NewDocumentCommand\notenzeile{O{\linewidth} m m O{\empty} O{\empty} O{\empty} O{\empty} O{\empty}}{% + {% + %Multilines + \ifx\multiline\undefined% + \NewDocumentCommand{\multiline}{m m m O{\empty} O{\empty} O{\empty} O{\empty}}{% + \parbox[c]{##1}{% + \newdimen\temp% + \temp=\dimexpr\f@size pt% + \vskip 0.27\temp\relax% + \makebox[\linewidth]{##2}% + \spaceBetweenSongLyrics% + \makebox[\linewidth]{##3}% + \ifx##4\empty% + \else% + \spaceBetweenSongLyrics% + \makebox[\linewidth]{##4}% + \fi% + \ifx##5\empty% + \else% + \spaceBetweenSongLyrics% + \makebox[\linewidth]{##5}% + \fi% + \ifx##6\empty% + \else% + \spaceBetweenSongLyrics% + \makebox[\linewidth]{##6}% + \fi% + \ifx##7\empty% + \else% + \spaceBetweenSongLyrics% + \makebox[\linewidth]{##7}% + \fi% +% \vskip 0.27\temp%% + }% + }% + \fi% multiline undefined? + % + \noindent% + \begin{minipage}{#1}% + \relax% + \spaceBeforeNotes% + \makebox[\linewidth]{#2}% + \relax\mbox{}\spaceAfterNotes% + \spaceBeforeSongLyrics% + \GFM@LB@songLyrics{#3}% + \ifx#4\empty% + \else% + \spaceBetweenSongLyrics% + \GFM@LB@songLyrics{#4}% + \fi% + \ifx#5\empty% + \else% + \spaceBetweenSongLyrics% + \GFM@LB@songLyrics{#5}% + \fi% + \ifx#6\empty% + \else% + \spaceBetweenSongLyrics% + \GFM@LB@songLyrics{#6}% + \fi% + \ifx#7\empty% + \else% + \spaceBetweenSongLyrics% + \GFM@LB@songLyrics{#7}% + \fi% + \ifx#8\empty% + \else% + \spaceBetweenSongLyrics% + \GFM@LB@songLyrics{#8}% + \fi% + \spaceAfterSongLyrics% + \end{minipage}\vskip0pt% + \ifnum\c@GFM@staveLineNumberBreakPointA=\c@staveLineNumber\relax% + \newpage% + \fi% + \ifnum\c@GFM@staveLineNumberBreakPointB=\c@staveLineNumber\relax% + \newpage% + \fi% + \ifnum\c@GFM@staveLineNumberBreakPointC=\c@staveLineNumber\relax% + \newpage% + \fi% + \ifnum\c@GFM@staveLineNumberBreakPointD=\c@staveLineNumber\relax% + \newpage% + \fi% + \ifnum\c@GFM@staveLineNumberBreakPointE=\c@staveLineNumber\relax% + \newpage% + \fi% + \ifnum\c@GFM@staveLineNumberBreakPointF=\c@staveLineNumber\relax% + \newpage% + \fi% + \stepcounter{staveLineNumber}%Counter for the current stave line + }% +} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Environment for strophes %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%% Control of the page break in strophes +\newif\ifpageBreakAllowed +\pageBreakAllowedfalse %default +\newlength{\GFM@LB@indent@temp@length} + +\newcounter{GFM@strophe@counter} +\setcounter{GFM@strophe@counter}{-1} + +\newcounter{GFM@stropheNumberBreakPointA} +\newcounter{GFM@stropheNumberBreakPointB} +\newcounter{GFM@stropheNumberBreakPointC} +\newcounter{GFM@stropheNumberBreakPointD} +\newcounter{GFM@stropheNumberBreakPointE} +\newcounter{GFM@stropheNumberBreakPointF} + + +%usage: \forcePageBreakAfterStrophe{3}[4][2]... +\NewDocumentCommand\forcePageBreakAfterStrophe{m O{0} O{0} O{0} O{0} O{0}}{ +\setcounter{GFM@stropheNumberBreakPointA}{#1} +\setcounter{GFM@stropheNumberBreakPointB}{#2} +\setcounter{GFM@stropheNumberBreakPointC}{#3} +\setcounter{GFM@stropheNumberBreakPointD}{#4} +\setcounter{GFM@stropheNumberBreakPointE}{#5} +\setcounter{GFM@stropheNumberBreakPointF}{#6} +} + + +%automatic strophe numbering + +\NewEnviron{strophe}[1][-1]{ + \ifnum#1=-1% + %leer + \else% + \setcounter{GFM@strophe@counter}{#1}% + \fi% + \penalty-1500\relax% + \ifpageBreakAllowed% + \penalty1500\relax% + \spaceBeforeStrophe% + \arabic{GFM@strophe@counter}.~\BODY% + \penalty1500\relax% + \spaceAfterStrophe% + \else% +%% Alternative (worse) implementation: +%% \GFM@LB@indent@temp@length\parindent% +%% \noindent% +%% \parbox{\linewidth}{% + \begin{samepage}% + \parindent \GFM@LB@indent@temp@length\indent% + \penalty1500\relax% + \spaceBeforeStrophe% + \arabic{GFM@strophe@counter}.~\BODY% + \penalty1500\relax% + \spaceAfterStrophe% +%% }%parbox + \end{samepage}% + \fi% + \ifnum\c@GFM@stropheNumberBreakPointA=\c@GFM@strophe@counter\relax% + \newpage% + \fi% + \ifnum\c@GFM@stropheNumberBreakPointB=\c@GFM@strophe@counter\relax% + \newpage% + \fi% + \ifnum\c@GFM@stropheNumberBreakPointC=\c@GFM@strophe@counter\relax% + \newpage% + \fi% + \ifnum\c@GFM@stropheNumberBreakPointD=\c@GFM@strophe@counter\relax% + \newpage% + \fi% + \ifnum\c@GFM@stropheNumberBreakPointE=\c@GFM@strophe@counter\relax% + \newpage% + \fi% + \ifnum\c@GFM@stropheNumberBreakPointF=\c@GFM@strophe@counter\relax% + \newpage% + \fi% + \stepcounter{GFM@strophe@counter}% +}% + + + +%%%%%%%%%%%%%%% +%%% Spacing %%% +%%%%%%%%%%%%%%% + +%%% Head +\def\setSpaceBeforeHeadValue#1{\def\spaceBeforeHeadValue{#1}} +\def\setSpaceAfterHeadValue#1{\def\spaceAfterHeadValue{#1}} + +%%% Notes +\def\setSpaceBeforeNotesValue#1{\def\spaceBeforeNotesValue{#1}} +\def\setSpaceAfterNotesValue#1{\def\spaceAfterNotesValue{#1}} + +%%% Strophes +\def\setSpaceBeforeStropheValue#1{\def\spaceBeforeStropheValue{#1}} +\def\setSpaceAfterStropheValue#1{\def\spaceAfterStropheValue{#1}} + +%%% Song lyrics +\def\setSpaceBeforeSongLyricsValue#1{\def\spaceBeforeSongLyricsValue{#1}} +\def\setSpaceBetweenSongLyricsValue#1{\def\spaceBetweenSongLyricsValue{#1}} +\def\setSpaceAfterSongLyricsValue#1{\def\spaceAfterSongLyricsValue{#1}} + + +%%% Foot +\def\setSpaceBeforeFootValue#1{\def\spaceBeforeFootValue{#1}} +\def\setSpaceAfterFootValue#1{\def\spaceAfterFootValue{#1}} + + + + +%%% Horizontal spacing +\def\setSpaceStropheIndentValue#1{\def\spaceStropheIndentValue{#1}} +\def\setSpaceHeadIndentValue#1{\def\spaceHeadIndentValue{#1}} +\def\setSpaceFootIndentValue#1{\def\spaceFootIndentValue{#1}} + + +%%% Arranging the space values +\def\spaceBeforeHead{\vskip\spaceBeforeHeadValue\relax\noindent\mbox{}\hskip\spaceHeadIndentValue\mbox{}} + +\def\spaceAfterHead{\relax\vskip\spaceAfterHeadValue\relax} + +\def\spaceBeforeNotes{\relax\vskip\spaceBeforeNotesValue\relax} + +\def\spaceAfterNotes{\relax\vskip\spaceAfterNotesValue\relax} + +\def\spaceBeforeStrophe{\relax\vskip\spaceBeforeStropheValue\noindent\hskip\spaceStropheIndentValue\relax} + +\def\spaceAfterStrophe{\relax\vskip\spaceAfterStropheValue\relax} + +\def\spaceBeforeSongLyrics{\relax\vskip\spaceBeforeSongLyricsValue\relax} + +\def\spaceBetweenSongLyrics{\relax\vskip\spaceBetweenSongLyricsValue\relax} + +\def\spaceAfterSongLyrics{\relax\vskip\spaceAfterSongLyricsValue \relax} + +\def\spaceBeforeFoot{\relax\vskip\spaceBeforeFootValue \noindent \hskip\spaceFootIndentValue\relax} + +\def\spaceAfterFoot{\relax\vskip\spaceAfterFootValue\relax} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Styling of header and footer %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcommand{\LBHead}[1]{% +\long\def\GFM@LB@Head{\spaceBeforeHead #1\relax\spaceAfterHead\mbox{}}% +}% + + +\newcommand{\LBFoot}[1]{% +\long\def\GFM@LB@Foot{\spaceBeforeFoot #1\relax\spaceAfterFoot}% +}% + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Environments for creating %%% +%%% the songbooks (liederbuch) %%% +%%% and the songs (lied) %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%liederbuch environment +\NewEnviron{liederbuch}[2][]{% +\def\GFM@LB@LiederbuchNameTmp{#2}% +%%lied environment %cslet +\NewEnviron{lied}[3][]{% +%##1=meta data ##2=variant ##3=nummer +\def\GFM@LB@LiederbuchVariantTmp{##2}% +\def\GFM@LB@LiederbuchNumberTmp{##3}% +\GFM@LB@unpackage{##1}% +\GFM@LB@unpackage{#1}% +\global\cslet{liedBody;\GFM@LB@LiederbuchNameTmp;##2;##3}\BODY% +}% +\BODY% Without this, the command sequences inside the environment won't be defined. That means, the whole content of the songbook (liederbuch) is thrown away. +} + + +%Forward onto environment +\newcommand{\LBsong}[3]{% +%#1=songbook #2=number #3=variant +{%local +\setlength{\parindent}{0pt}% +\setlength{\parskip}{0pt}% +% +% +\NewDocumentCommand{\print}{O{\empty} m}{% + \expandafter\ifx\csname GFM@LB@lied@#1@#3@#2@##2\endcsname\relax% + \else% + ##1% + \fi% + \csname GFM@LB@lied@#1@#3@#2@##2\endcsname% + \mbox{}% +}% +\GFM@LB@Head% +% +\setcounter{staveLineNumber}{1}%reset note line counter +% +%%%%%%%%%%%%%%%%%%%%%%%%%% +\csuse{liedBody;#1;#3;#2}% +%%%%%%%%%%%%%%%%%%%%%%%%%% +% +%reset page break points = no page breaks: +\setcounter{GFM@staveLineNumberBreakPointA}{0}% +\setcounter{GFM@staveLineNumberBreakPointB}{0}% +\setcounter{GFM@staveLineNumberBreakPointC}{0}% +\setcounter{GFM@staveLineNumberBreakPointD}{0}% +\setcounter{GFM@staveLineNumberBreakPointE}{0}% +\setcounter{GFM@staveLineNumberBreakPointF}{0}% +\setcounter{GFM@stropheNumberBreakPointA}{0}% +\setcounter{GFM@stropheNumberBreakPointB}{0}% +\setcounter{GFM@stropheNumberBreakPointC}{0}% +\setcounter{GFM@stropheNumberBreakPointD}{0}% +\setcounter{GFM@stropheNumberBreakPointE}{0}% +\setcounter{GFM@stropheNumberBreakPointF}{0}% +% +% +\GFM@LB@Foot% +% +% +}%local +\penalty-3500% +}% + + +%%%%%%%%%%%%%%%%%%%%%% +%%% %%% +%%% Default values %%% +%%% %%% +%%%%%%%%%%%%%%%%%%%%%% + + +%%% Default header and footer %%% +\long\def\GFM@LB@Head{\spaceBeforeHead\mbox{}\print{title} \ \newline \print{composer}\spaceAfterHead }%Standardwerte +\long\def\GFM@LB@Foot{\spaceBeforeFoot\mbox{}\print{source} \hfill \print{date}\spaceAfterFoot}%Standardwerte + +\setSpaceBeforeHeadValue{0pt plus 3pt} +\setSpaceAfterHeadValue{0pt plus 3pt} +\setSpaceBeforeNotesValue{0pt plus 1pt} +\setSpaceAfterNotesValue{0pt plus 1pt} +\setSpaceBeforeStropheValue{0pt plus 1pt} +\setSpaceAfterStropheValue{0pt plus 3pt} +\setSpaceBetweenSongLyricsValue{0pt plus 3pt} +\setSpaceBeforeSongLyricsValue{0pt plus 1pt} +\setSpaceAfterSongLyricsValue{0pt plus 3pt} +\setSpaceBeforeFootValue{0pt plus 3pt} +\setSpaceAfterFootValue{0pt plus 70pt} + +\setSpaceStropheIndentValue{0pt} +\setSpaceHeadIndentValue{0pt} +\setSpaceFootIndentValue{0pt} + + + + + +%%%%%%%%%%%%%% +%%% Styles %%% +%%%%%%%%%%%%%% + +%\moderncvstyle{casual} +%\moderncvcolor{blue} +% +%\def\GFMliederbuchStyle#1#2{% +%%openStyle +% +% +% +% +%%test if +%} +% +%\GFM@LB@color#1#2{% +%%if #1 = '0' => ifndef \farbzähler => def + \fz=0 : \fz=0 : \fz++ +% +%} + +%number of colors used in a style. It has to match the number defined in the color scheme +\newcount\GFM@LB@numberOfColors +\GFM@LB@numberOfColors=3 + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%Altlasten +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + diff --git a/Master/texmf-dist/tex/latex/liederbuch/printliederbuch.sty b/Master/texmf-dist/tex/latex/liederbuch/printliederbuch.sty new file mode 100644 index 00000000000..7ef940258e4 --- /dev/null +++ b/Master/texmf-dist/tex/latex/liederbuch/printliederbuch.sty @@ -0,0 +1,56 @@ +\ProvidesPackage{printLiederbuch} + +\RequirePackage{liederbuch} +\RequirePackage{hyperref} + +%toc @ begin +%\AtBeginDocument{\tableofcontents} + +\ExplSyntaxOn + + +\newcommand{\printLiederbuch}[1]{ +\section{#1} + \fbox + { + \begin{tabular}{l l} + Meta ~ data ~ name & Meta ~ data ~ value ~ \\ + \hline + \tl_use:N \csuse{liederbuchMeta;#1} + \end{tabular} + }%fbox + +\csuse{liederbuchBody;#1} +} + + +\RenewEnviron{Liederbuch}[2][]{ + \gdef\equals{=} + \global\cslet{liederbuchBody;#2}\BODY + \tl_set:Nn \l_tmpa_tl { #1 } + \tl_replace_all:Nnn \l_tmpa_tl { & } { \\ } + \tl_replace_all:Nnn \l_tmpa_tl { = } { & } + \global\cslet{liederbuchMeta;#2}\l_tmpa_tl +} + + +\NewDocumentEnvironment{Lied}{O{}mm +b} + { + \subsection{#3\ --\ Variant:\ #2} + \tl_set:Nn \l_tmpa_tl { #1 } + \tl_replace_all:Nnn \l_tmpa_tl { & } { \\ } + \tl_replace_all:Nnn \l_tmpa_tl { = } { & } + \fbox + { + \begin{tabular}{l l} + Meta ~ data ~ name & Meta ~ data ~ value ~ \\ + \hline + \tl_use:N \l_tmpa_tl + \end{tabular} + }%fbox + \par#4\par +}{} +\ExplSyntaxOff + + + diff --git a/Master/texmf-dist/tex/latex/nlctdoc/nlctdoc.cls b/Master/texmf-dist/tex/latex/nlctdoc/nlctdoc.cls index d03ef8dda25..f93416bb066 100644 --- a/Master/texmf-dist/tex/latex/nlctdoc/nlctdoc.cls +++ b/Master/texmf-dist/tex/latex/nlctdoc/nlctdoc.cls @@ -4,7 +4,7 @@ % copy the code here to another file and modify it for your own purposes. % There's no guarantee that it will work with other packages. % -% Copyright 2013-2024 Nicola Talbot +% Copyright 2013-2025 Nicola Talbot % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 @@ -18,7 +18,7 @@ % for existing documents that use it. \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{nlctdoc}[2024/11/09 v1.11 (NLCT)] +\ProvidesClass{nlctdoc}[2025/01/03 v1.12 (NLCT)] \RequirePackage{ifpdf} \RequirePackage{ifxetex} % tex4ht stopped working with koma during TL2013. diff --git a/Master/texmf-dist/tex/latex/nlctdoc/nlctuserguide.sty b/Master/texmf-dist/tex/latex/nlctdoc/nlctuserguide.sty index f2dc355469b..35e50dd8bc9 100644 --- a/Master/texmf-dist/tex/latex/nlctdoc/nlctuserguide.sty +++ b/Master/texmf-dist/tex/latex/nlctdoc/nlctuserguide.sty @@ -4,7 +4,7 @@ % copy the code here to another file and modify it for your own purposes. % There's no guarantee that it will work with other packages. % -% Copyright 2022-2024 Nicola Talbot +% Copyright 2022-2025 Nicola Talbot % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 @@ -15,7 +15,7 @@ % version 2005/12/01 or later. \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{nlctuserguide}[2024/11/09 v1.11 (NLCT)] +\ProvidesPackage{nlctuserguide}[2025/01/03 v1.12 (NLCT)] \newcommand{\nlctdoc@loadxr}{} \DeclareOption{xr}{\renewcommand{\nlctdoc@loadxr}{\RequirePackage{xr-hyper}}} @@ -573,8 +573,10 @@ \newrobustcmd{\mExampleref}[1]{\Exampleref{#1}\examplemarginref{#1}} \newrobustcmd{\mexampleref}[1]{\exampleref{#1}\examplemarginref{#1}} +\newcommand{\exmarginfont}{\color{black}\footnotesize}% v1.12 + \newrobustcmd{\examplemarginref}[1]{% - \marginpar{\footnotesize\hyperref[#1]{\codesym}\ref{#1}\plabel{#1-backref}}% + \marginpar{\exmarginfont\hyperref[#1]{\codesym}\ref{#1}\plabel{#1-backref}}% } \newcommand*{\plabel}[2][]{\protected@edef\@currentlabelname{#1}\label{#2}} @@ -923,6 +925,7 @@ engine (\XeLaTeX\ or \LuaLaTeX)} % inline \newcommand{\code}[1]{\texorpdfstring{\@code{#1}}{#1}} \newrobustcmd{\@code}[1]{{\setupcodeenvfmts\codefont\obeyspaces #1}} +\newcommand{\smcode}[1]{\@code{\small #1}} \definecolor{codebackground}{gray}{0.95} @@ -1992,6 +1995,7 @@ to find out if the example files are installed on your device.\par \newcommand*{\oarg}[1]{\discretionary{}{}{}[#1]} \newcommand*{\oargm}[1]{\oarg{\meta{#1}}} +\newcommand*{\oargnobr}[1]{\discretionary{}{}{}\mbox{[#1]}}% v1.12 % To prevent lonely [ and ] from upsetting the syntax highlighter: \newrobustcmd*{\nlctopensqbracket}{[} @@ -2306,6 +2310,8 @@ to find out if the example files are installed on your device.\par \glsxtrifhasfield{syntax}{opt.#2}{\dequals\glscurrentfieldvalue}{}}% } +\newcommand{\summarytagfill}{\space\allowbreak\mbox{}\nolinebreak\hfill}% v1.12 + \newcommand{\@cmddef@init}{% \let\csfmtfont\@firstofone \def\cmdfont##1{\textbf{\texttt{##1}}}% @@ -2321,7 +2327,7 @@ to find out if the example files are installed on your device.\par \gathermodifiers{#2}% \gathervariants{#2}% \cmddefsyntax{#1}{#2}% - \def\tagsep{\hfill}% + \def\tagsep{\summarytagfill}% \ifdefempty\nlctmodifierlist {% \ifdefempty\nlctvariantlist @@ -2604,7 +2610,7 @@ to find out if the example files are installed on your device.\par \def\optfmt##1{\textbf{\texttt{##1}}}% \mainglsadd{opt.#1}{optdef}\glsxtrglossentry{opt.#1}% \glsxtrifhasfield{syntax}{opt.#1}{\texttt{=\glscurrentfieldvalue}}{}% - \ifdefempty\initordefval{}{\hfill\initordefval}% + \ifdefempty\initordefval{}{\summarytagfill\initordefval}% \glsxtrifhasfield*{note}{opt.#1}% {% \ifx\optnotefmt\@gobble @@ -2746,7 +2752,7 @@ to find out if the example files are installed on your device.\par \par\medskip\ignorespaces } -\newrobustcmd*{\summarytagfmt}[1]{\textnormal{\em #1:} } +\newrobustcmd*{\summarytagfmt}[1]{\textnormal{\em #1:}~} \newcommand*{\getinitordefval}[1]{% \let\currentsyntax\@empty @@ -3279,7 +3285,7 @@ to find out if the example files are installed on your device.\par \gathermodifiers{#1}% \ifdefempty\nlctmodifierlist{} {% - \hfill\summarytagfmt{\nlctmodifiertag}\nlctmodifierlist + \summarytagfill\summarytagfmt{\nlctmodifiertag}\nlctmodifierlist \gdef\summaryentry@post@fill{\quad }% }% } @@ -3291,7 +3297,7 @@ to find out if the example files are installed on your device.\par \syntax{#1}% \glsxtrifhasfield{initvalue}{#1}% {% - \hfill\summarytagfmt{initial}\glscurrentfieldvalue + \summarytagfill\summarytagfmt{initial}\glscurrentfieldvalue \gdef\summaryentry@post@fill{\quad }% }% {% @@ -3302,12 +3308,12 @@ to find out if the example files are installed on your device.\par \ifdefempty\nlctvariantlist {}% {% - \hfill\summarytagfmt{\nlctvarianttag}\nlctvariantlist + \summarytagfill\summarytagfmt{\nlctvarianttag}\nlctvariantlist \gdef\summaryentry@post@fill{\quad }% }% }% {% - \hfill\summarytagfmt{\nlctmodifiertag}\nlctmodifierlist + \summarytagfill\summarytagfmt{\nlctmodifiertag}\nlctmodifierlist \gdef\summaryentry@post@fill{\quad }% }% }% @@ -3333,7 +3339,7 @@ to find out if the example files are installed on your device.\par \def\optiontag{#1}% \textbf{\linkedentryname{#2}}% \ifdefempty\currentsyntax{}{\dequals\currentsyntax}% - \hfill + \summarytagfill \textrm{\ifdefempty\initordefval{}{\initordefval}% \ifdefempty\optiontag{}{ \optiontag}}% \gdef\summaryentry@post@fill{ }% @@ -3344,7 +3350,7 @@ to find out if the example files are installed on your device.\par \getinitordefval{#1}% \textbf{\linkedentryname{#1}}% \ifdefempty\currentsyntax{}{\dequals\currentsyntax}% - \hfill + \summarytagfill \textrm{\ifdefempty\initordefval{}{\initordefval}% \ifdefempty\settingstitle{}{ \settingstitle}}% \gdef\summaryentry@post@fill{ }% diff --git a/Master/texmf-dist/tex/latex/pixelarttikz/PixelArtTikz.sty b/Master/texmf-dist/tex/latex/pixelarttikz/PixelArtTikz.sty index aacfcb12414..bcd4f6c79a1 100644 --- a/Master/texmf-dist/tex/latex/pixelarttikz/PixelArtTikz.sty +++ b/Master/texmf-dist/tex/latex/pixelarttikz/PixelArtTikz.sty @@ -1,8 +1,9 @@ % Author.........: C. Pierquet -% licence........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf +% licence........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{PixelArtTikz}[2024/10/31 v0.1.5 PixelArts with csv and TikZ] +\ProvidesPackage{PixelArtTikz}[2025/01/04 v0.1.6 PixelArts with csv and TikZ] +% 0.1.6 Ajout d'un style pour les traits + utilisation de datatool (plus rapide ?) % 0.1.5 Amélioration du code interne + possibilité de créer des grilles avec des symboles choisis dans une liste % 0.1.4 Cylinder anamorphic pixelart % 0.1.3 Split PA into grid @@ -25,8 +26,6 @@ \RequirePackage{multicol} \RequirePackage{listofitems} \RequirePackage{ifthen} -%librairies tikz -%\usetikzlibrary{calc,shapes.geometric} %cvs \if@csvii \RequirePackage[legacy]{csvsimple} @@ -35,6 +34,11 @@ \RequirePackage[l3]{csvsimple} \fi +%------Styles tikz +\tikzset{pixlarttrait/.style={}} +\tikzset{pixlarttraitdecoup/.style={thick,purple}} +\tikzset{pixlartnoticedecoup/.style={font=\large\sffamily}} + \NewDocumentCommand\TraiteListeSymbPixelArt{ m }{% \IfSubStr{#1}{§}% {% @@ -79,22 +83,12 @@ \csvloop{file=#4,no head,command={% \foreach \l [count=\n] in \csvline {% \StrDel{\l}{ }[\l]% - %\setsepchar{,}% - %\readlist*\LCPA\PATcouleurs% \StrPosition{\PATlettres}{\l}[\pixcnt]% \ifnum\pixcnt>0% \ifboolKV[pixelarttkz]{BordCases}% {\draw[fill={\LCPA[\pixcnt]}] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}% {\filldraw[{\LCPA[\pixcnt]}] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}% \fi% - %\xintifboolexpr{\pixcnt>0}% - % {% - % %\itemtomacro\LCPA[\pixcnt]\pixcol% - % \ifboolKV[pixelarttkz]{BordCases}% - % {\draw[fill={\LCPA[\pixcnt]}] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}% - % {\filldraw[{\LCPA[\pixcnt]}] ({\n-0.5},{-\thecsvrow+0.5}) rectangle ({\n+0.5},{-\thecsvrow-0.5}) ;}% - % }% - % {}% }% }% }% @@ -105,8 +99,6 @@ \csvloop{file=#4,no head,command={% \foreach \l [count=\n] in \csvline {% \StrDel{\l}{ }[\l]% - %\setsepchar{,}% - %\readlist*\LCNA\PATchiffres% \StrPosition{\PATlettres}{\l}[\pixpos]% \xintifboolexpr{\pixpos>0}% {% @@ -142,8 +134,8 @@ \IfSubStr{\PATdecoup}{x}% {% \StrCut{\PATdecoup}{x}{\NbLigBloc}{\NbColBloc}%tracés des traits - \foreach \i in {0,\NbLigBloc,...,\NbLigTot}{\draw[thick,purple] ({0.5-0.33},{-\i-0.5}) -- ({\thecsvcolumncount+0.5+0.33},{-\i-0.5}) ;}% - \foreach \j in {0,\NbColBloc,...,\NbColTot}{\draw[thick,purple] ({\j+0.5},{-0.5+0.33}) -- ({\j+0.5},{-\thecsvinputline+0.5-0.33}) ;}% + \foreach \i in {0,\NbLigBloc,...,\NbLigTot}{\draw[pixlarttraitdecoup] ({0.5-0.33},{-\i-0.5}) -- ({\thecsvcolumncount+0.5+0.33},{-\i-0.5}) ;}% + \foreach \j in {0,\NbColBloc,...,\NbColTot}{\draw[pixlarttraitdecoup] ({\j+0.5},{-0.5+0.33}) -- ({\j+0.5},{-\thecsvinputline+0.5-0.33}) ;}% }% {}% \IfSubStr{\PATdecoup}{+}% @@ -151,8 +143,8 @@ \StrCut{\PATdecoup}{+}{\NbBlocLIG}{\NbBlocCOL}% \def\NbLigBloc{\xintieval{(\NbLigTot-1)/\NbBlocLIG}}% \def\NbColBloc{\xintieval{(\NbColTot)/\NbBlocCOL}}% - \foreach \i in {0,\NbLigBloc,...,\NbLigTot}{\draw[thick,purple] ({0.5-0.33},{-\i-0.5}) -- ({\thecsvcolumncount+0.5+0.33},{-\i-0.5}) ;}% - \foreach \j in {0,\NbColBloc,...,\NbColTot}{\draw[thick,purple] ({\j+0.5},{-0.5+0.33}) -- ({\j+0.5},{-\thecsvinputline+0.5-0.33}) ;}% + \foreach \i in {0,\NbLigBloc,...,\NbLigTot}{\draw[pixlarttraitdecoup] ({0.5-0.33},{-\i-0.5}) -- ({\thecsvcolumncount+0.5+0.33},{-\i-0.5}) ;}% + \foreach \j in {0,\NbColBloc,...,\NbColTot}{\draw[pixlarttraitdecoup] ({\j+0.5},{-0.5+0.33}) -- ({\j+0.5},{-\thecsvinputline+0.5-0.33}) ;}% }% {}% }% @@ -171,8 +163,6 @@ \csvloop{file=#3,no head,command={% \foreach \l [count=\n] in \csvline {% \StrDel{\l}{ }[\l]% - %\setsepchar{,}% - %\readlist*\LCPA\PATcouleurs% \StrPosition{\PATlettres}{\l}[\pixcnt]% \xintifboolexpr{\pixcnt>0}% {% @@ -192,8 +182,6 @@ \csvloop{file=#3,no head,command={% \foreach \l [count=\n] in \csvline {% \StrDel{\l}{ }[\l]% - %\setsepchar{,}% - %\readlist*\LCNA\PATchiffres% \StrPosition{\PATlettres}{\l}[\pixpos]% \xintifboolexpr{\pixpos>0}% {% @@ -254,8 +242,6 @@ \csvloop{file=#4,no head,command={% \foreach \l [count=\n] in \csvline {% \StrDel{\l}{ }[\l]% - %\setsepchar{,}% - %\readlist*\LCPA\PATcouleurs% \StrPosition{\PATlettres}{\l}[\pixcnt]% \xintifboolexpr{\pixcnt>0}% {% @@ -275,8 +261,6 @@ \csvloop{file=#4,no head,command={% \foreach \l [count=\n] in \csvline {% \StrDel{\l}{ }[\l]% - %\setsepchar{,}% - %\readlist*\LCNA\PATchiffres% \StrPosition{\PATlettres}{\l}[\pixpos]% \xintifboolexpr{\pixpos>0}% {% @@ -341,8 +325,6 @@ \csvloop{file=#3,no head,command={% \foreach \l [count=\n] in \csvline {% \StrDel{\l}{ }[\l]% - %\setsepchar{,}% - %\readlist*\LCPA\PATcouleurs% \StrPosition{\PATlettres}{\l}[\pixcnt]% \xintifboolexpr{\pixcnt>0}% {% @@ -362,8 +344,6 @@ \csvloop{file=#3,no head,command={% \foreach \l [count=\n] in \csvline {% \StrDel{\l}{ }[\l]% - %\setsepchar{,}% - %\readlist*\LCNA\PATchiffres% \StrPosition{\PATlettres}{\l}[\pixpos]% \xintifboolexpr{\pixpos>0}% {% @@ -500,6 +480,8 @@ \StrCut{#5}{/}{\NumBlocLig}{\NumBlocCol}% \xdef\PAfirstline{\xinteval{\NbLigBloc*(\NumBlocLig-1)+1}}% \xdef\PAlastline{\xinteval{\NbLigBloc*(\NumBlocLig-1)+\NbLigBloc}}% + \xdef\PAblocmin{\xinteval{(\NbColBloc*(\NumBlocCol-1)+1)}}% + \xdef\PAblocmax{\xinteval{(\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}}% %affichage du corrigé / display of correction \begin{tikzpicture}[x=\PATunit cm,y=\PATunit cm,#2] \ifboolKV[pixelarttkz]{Correction}% @@ -507,7 +489,7 @@ \readlist*\LCPA\PATcouleurs% \csvloop{file=#3,range=\PAfirstline-\PAlastline,no head,command={% \foreach \l [count=\n] in \csvline {% - \xintifboolexpr{ \n >= (\NbColBloc*(\NumBlocCol-1)+1) 'and' \n <= (\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}% + \xintifboolexpr{ \n >= \PAblocmin 'and' \n <= \PAblocmax}% {% \StrDel{\l}{ }[\l]% \setsepchar{,}% @@ -532,7 +514,7 @@ \readlist*\LCNA\PATchiffres% \csvloop{file=#3,range=\PAfirstline-\PAlastline,no head,command={% \foreach \l [count=\n] in \csvline {% - \xintifboolexpr{ \n >= (\NbColBloc*(\NumBlocCol-1)+1) 'and' \n <= (\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}% + \xintifboolexpr{ \n >= \PAblocmin 'and' \n <= \PAblocmax}% {% \StrDel{\l}{ }[\l]% \setsepchar{,}% @@ -553,7 +535,7 @@ {%affichage du pixelart versions lettres ou chiffres simples (<=9) / display of letters/symbols PixelArt \csvloop{file=#3,range=\PAfirstline-\PAlastline,no head,command={% \foreach \l [count=\n] in \csvline {% - \xintifboolexpr{ \n >= (\NbColBloc*(\NumBlocCol-1)+1) 'and' \n <= (\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}% + \xintifboolexpr{ \n >= \PAblocmin 'and' \n <= \PAblocmax}% {% \StrDel{\l}{ }[\l]% \IfSubStr{\PATlettres}{\l}% @@ -623,7 +605,7 @@ \begin{tikzpicture}[scale=#2,transform shape] \xintFor* ##1 in {\xintSeq{1}{\NbTotLig}}\do{% \xintFor* ##2 in {\xintSeq{1}{\NbTotCol}}\do{% - \draw[semithick] (##2,-##1) rectangle++(1,-1) node[midway] {\IfBooleanTF{#1}{##1.}{\StrChar{\PAalphabet}{##1}}##2} ; + \draw[semithick] (##2,-##1) rectangle++(1,-1) node[midway,pixlartnoticedecoup] {\IfBooleanTF{#1}{##1.}{\StrChar{\PAalphabet}{##1}}##2} ; }% }% \end{tikzpicture}% @@ -655,6 +637,8 @@ \StrCut{#5}{/}{\NumBlocLig}{\NumBlocCol}% \xdef\PAfirstline{\xinteval{\NbLigBloc*(\NumBlocLig-1)+1}}% \xdef\PAlastline{\xinteval{\NbLigBloc*(\NumBlocLig-1)+\NbLigBloc}}% + \xdef\PAblocmin{\xinteval{(\NbColBloc*(\NumBlocCol-1)+1)}}% + \xdef\PAblocmax{\xinteval{(\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}}% %affichage du corrigé / display of correction \begin{tikzpicture}[x=\PATunit cm,y=\PATunit cm,#2] \ifboolKV[pixelarttkzen]{Correction}% @@ -662,7 +646,7 @@ \readlist*\LCPA\PATcouleurs% \csvloop{file=#3,range=\PAfirstline-\PAlastline,no head,command={% \foreach \l [count=\n] in \csvline {% - \xintifboolexpr{ \n >= (\NbColBloc*(\NumBlocCol-1)+1) 'and' \n <= (\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}% + \xintifboolexpr{ \n >= \PAblocmin 'and' \n <= \PAblocmax}% {% \StrDel{\l}{ }[\l]% \setsepchar{,}% @@ -687,7 +671,7 @@ \readlist*\LCNA\PATchiffres% \csvloop{file=#3,range=\PAfirstline-\PAlastline,no head,command={% \foreach \l [count=\n] in \csvline {% - \xintifboolexpr{ \n >= (\NbColBloc*(\NumBlocCol-1)+1) 'and' \n <= (\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}% + \xintifboolexpr{ \n >= \PAblocmin 'and' \n <= \PAblocmax}% {% \StrDel{\l}{ }[\l]% \setsepchar{,}% @@ -708,7 +692,7 @@ {%affichage du pixelart versions lettres ou chiffres simples (<=9) / display of letters/symbols PixelArt \csvloop{file=#3,range=\PAfirstline-\PAlastline,no head,command={% \foreach \l [count=\n] in \csvline {% - \xintifboolexpr{ \n >= (\NbColBloc*(\NumBlocCol-1)+1) 'and' \n <= (\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}% + \xintifboolexpr{ \n >= \PAblocmin 'and' \n <= \PAblocmax}% {% \StrDel{\l}{ }[\l]% \IfSubStr{\PATlettres}{\l}% @@ -1065,5 +1049,199 @@ }% } +%-----With datatool, faster ? +\RequirePackage{datatool} + +\NewDocumentCommand\readdtcsv{ m m }{% + \DTLsetseparator{|}% + \DTLloaddb[noheader,keys={cvsline}]{#2}{#1}% +} + +\NewDocumentCommand\dtpixlarttikz{ O{} D<>{} m }{%commande autonome + \useKVdefault[pixelarttkz]% + \setKV[pixelarttkz]{#1}% + %affichage du corrigé / display of correction + \begin{tikzpicture}[x=\PATunit cm,y=\PATunit cm,#2] + \ifboolKV[pixelarttkz]{Correction}% + {% + \readlist*\LCPA\PATcouleurs% + \DTLforeach*{#3}{\csvline=cvsline}{% + \setsepchar{,}% + \readlist*\tmpcsvline\csvline% + \foreachitem\PAchar\in\tmpcsvline{% + \StrPosition{\PATlettres}{\PAchar}[\pixcnt]% + \ifnum\pixcnt>0% + \ifboolKV[pixelarttkz]{BordCases}% + {\draw[fill={\LCPA[\pixcnt]}] ({\PAcharcnt-0.5},{-\theDTLrowi+0.5}) rectangle++(1,-1) ;}% + {\filldraw[{\LCPA[\pixcnt]}] ({\PAcharcnt-0.5},{-\theDTLrowi+0.5}) rectangle++(1,-1) ;}% + \fi% + } + % \foreach \l [count=\n] in \csvline {%old vesion, with foreach ? + % \StrPosition{\PATlettres}{\l}[\pixcnt]% + % \ifnum\pixcnt>0% + % \ifboolKV[pixelarttkz]{BordCases}% + % {\draw[fill={\LCPA[\pixcnt]}] ({\n-0.5},{-\theDTLrowi+0.5}) rectangle ({\n+0.5},{-\theDTLrowi-0.5}) ;}% + % {\filldraw[{\LCPA[\pixcnt]}] ({\n-0.5},{-\theDTLrowi+0.5}) rectangle ({\n+0.5},{-\theDTLrowi-0.5}) ;}% + % \fi% + % }% + }% + }% + {% + \ifboolKV[pixelarttkz]{Symb}% + {%affichage du pixelart versions chiffres si besoin + \readlist*\LCNA\PATchiffres% + \DTLforeach*{#3}{\csvline=cvsline}{% + \setsepchar{,}% + \readlist*\tmpcsvline\csvline% + \foreachitem\PAchar\in\tmpcsvline{% + \StrPosition{\PATlettres}{\PAchar}[\pixpos]% + \xintifboolexpr{\pixpos>0}% + {% + \itemtomacro\LCNA[\pixpos]\pixchf% + \draw ({\PAcharcnt-0.5},{-\theDTLrowi+0.5}) rectangle++(1,-1) node[inner sep=0,midway,font=\PATtaille] {\TraiteListeSymbPixelArt{\pixchf}} ;% + }% + {}% + } + }% + }% + {%affichage du pixelart versions lettres ou chiffres simples (<=9) / display of letters/symbols PixelArt + \DTLforeach*{#3}{\csvline=cvsline}{% + \setsepchar{,}% + \readlist*\tmpcsvline\csvline% + \foreachitem\PAchar\in\tmpcsvline{% + \IfSubStr{\PATlettres}{\PAchar}% + {% + \draw ({\PAcharcnt-0.5},{-\theDTLrowi+0.5}) rectangle++(1,-1) node[inner sep=0,midway,font=\PATtaille] {\PAchar};% + }% + {}% + }% + }% + }% + }% + %affichage des découpages éventuels + \IfStrEq{\PATdecoup}{}% + {}% + {% + \xdef\NbLigTot{\DTLrowcount{#3}}% + \DTLgetvalue{\myvalrowone}{#3}{1}{1}% + \StrCount{\myvalrowone}{,}[\NbColTot]% + \xdef\NbColTot{\inteval{\NbColTot+1}}% + \IfSubStr{\PATdecoup}{x}% + {% + \StrCut{\PATdecoup}{x}{\NbLigBloc}{\NbColBloc}%tracés des traits + \foreach \i in {0,\NbLigBloc,...,\NbLigTot}{\draw[pixlarttraitdecoup] ({0.5-0.33},{-\i-0.5}) -- ({\NbColTot+0.5+0.33},{-\i-0.5}) ;}% + \foreach \j in {0,\NbColBloc,...,\NbColTot}{\draw[pixlarttraitdecoup] ({\j+0.5},{-0.5+0.33}) -- ({\j+0.5},{-\NbLigTot-0.5-0.33}) ;}% + }% + {}% + \IfSubStr{\PATdecoup}{+}% + {% + \StrCut{\PATdecoup}{+}{\NbBlocLIG}{\NbBlocCOL}% + \def\NbLigBloc{\xintieval{(\NbLigTot-1)/\NbBlocLIG}}% + \def\NbColBloc{\xintieval{(\NbColTot)/\NbBlocCOL}}% + \foreach \i in {0,\NbLigBloc,...,\NbLigTot}{\draw[pixlarttraitdecoup] ({0.5-0.33},{-\i-0.5}) -- ({\NbColTot+0.5+0.33},{-\i-0.5}) ;}% + \foreach \j in {0,\NbColBloc,...,\NbColTot}{\draw[pixlarttraitdecoup] ({\j+0.5},{-0.5+0.33}) -- ({\j+0.5},{-\NbLigTot-0.5-0.33}) ;}% + }% + {}% + }% + \end{tikzpicture}% +} + +\NewDocumentCommand\dtpixlarttikzblock{ O{} D<>{} m m m }{%commande individuelle avec loi & datatool... + %3=fichier + %4=taille blocs (LxC) ou nombre de blocs (L+C) + %5=numbloc + \useKVdefault[pixelarttkz]% + \setKV[pixelarttkz]{#1}% + \xdef\NbLigTot{\DTLrowcount{#3}}% + \DTLgetvalue{\myvalrowone}{#3}{1}{1}% + \StrCount{\myvalrowone}{,}[\NbColTot]% + \xdef\NbColTot{\inteval{\NbColTot+1}}% + \IfSubStr{#4}{x}% + {% + \StrCut{#4}{x}{\NbLigBloc}{\NbColBloc}% + }% + {}% + \IfSubStr{#4}{+}% + {% + \StrCut{#4}{+}{\NbBlocLIG}{\NbBlocCOL}% + \xdef\NbLigBloc{\xinteval{(\NbLigTot-1)/\NbBlocLIG}}% + \xdef\NbColBloc{\xinteval{(\NbColTot)/\NbBlocCOL}}% + }% + {}% + \StrCut{#5}{/}{\NumBlocLig}{\NumBlocCol}% + \xdef\PAfirstline{\xinteval{\NbLigBloc*(\NumBlocLig-1)+1}}% + \xdef\PAlastline{\xinteval{\NbLigBloc*(\NumBlocLig-1)+\NbLigBloc}}% + \xdef\PAblocmin{\xinteval{(\NbColBloc*(\NumBlocCol-1)+1)}}% + \xdef\PAblocmax{\xinteval{(\NbColBloc*(\NumBlocCol-1)+\NbColBloc)}}% + %affichage du corrigé / display of correction + \begin{tikzpicture}[x=\PATunit cm,y=\PATunit cm,#2] + \ifboolKV[pixelarttkz]{Correction}% + {% + \readlist*\LCPA\PATcouleurs% + \foreach \line in {\PAfirstline,...,\PAlastline}{% + \DTLgetvalue{\csvline}{#3}{\line}{1}% + \setsepchar{,}% + \readlist*\tmpcsvline\csvline% + \foreachitem\PAchar\in\tmpcsvline{% + \xintifboolexpr{ \PAcharcnt >= \PAblocmin 'and' \PAcharcnt <= \PAblocmax}% + {% + \StrPosition{\PATlettres}{\PAchar}[\pixcnt]% + \xintifboolexpr{\pixcnt>0}% + {% + \itemtomacro\LCPA[\pixcnt]\pixcol% + \ifboolKV[pixelarttkz]{BordCases}% + {\draw[fill=\pixcol] ({\PAcharcnt-0.5},{-\line+0.5}) rectangle++(1,-1) ;}% + {\filldraw[\pixcol] ({\PAcharcnt-0.5},{-\line+0.5}) rectangle++(1,-1) ;}% + }% + {}% + }% + {}% + }% + }% + }% + {% + \ifboolKV[pixelarttkz]{Symb}% + {%affichage du pixelart versions chiffres si besoin + \readlist*\LCNA\PATchiffres% + \foreach \line in {\PAfirstline,...,\PAlastline}{% + \DTLgetvalue{\csvline}{#3}{\line}{1}% + \setsepchar{,}% + \readlist*\tmpcsvline\csvline% + \foreachitem\PAchar\in\tmpcsvline{% + \xintifboolexpr{ \PAcharcnt >= \PAblocmin 'and' \PAcharcnt <= \PAblocmax}% + {% + \StrPosition{\PATlettres}{\PAchar}[\pixpos]% + \xintifboolexpr{\pixpos>0}% + {% + \itemtomacro\LCNA[\pixpos]\pixchf% + \draw ({\PAcharcnt-0.5},{-\line+0.5}) rectangle++(1,-1) node[inner sep=0,midway,font=\PATtaille] {\TraiteListeSymbPixelArt{\pixchf}} ;% + }% + {}% + }% + {}% + }% + }% + }% + {%affichage du pixelart versions lettres ou chiffres simples (<=9) / display of letters/symbols PixelArt + \foreach \line in {\PAfirstline,...,\PAlastline}{% + \DTLgetvalue{\csvline}{#3}{\line}{1}% + \setsepchar{,}% + \readlist*\tmpcsvline\csvline% + \foreachitem\PAchar\in\tmpcsvline{% + \xintifboolexpr{ \PAcharcnt >= \PAblocmin 'and' \PAcharcnt <= \PAblocmax}% + {% + \IfSubStr{\PATlettres}{\PAchar}% + {% + \draw ({\PAcharcnt-0.5},{-\line+0.5}) rectangle++(1,-1) node[inner sep=0,midway,font=\PATtaille] {\PAchar};% + }% + {}% + }% + {}% + }% + }% + }% + }% + \end{tikzpicture}% +} \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/plex-otf/plex-otf.sty b/Master/texmf-dist/tex/latex/plex-otf/plex-otf.sty index dbfbd819cf8..8d1dda9b56b 100644 --- a/Master/texmf-dist/tex/latex/plex-otf/plex-otf.sty +++ b/Master/texmf-dist/tex/latex/plex-otf/plex-otf.sty @@ -1,13 +1,13 @@ -%% $Id: plex-otf.sty 1041 2024-12-05 18:54:53Z herbert $ +%% $Id: plex-otf.sty 1052 2025-01-02 12:10:37Z herbert $ %% %% This file is distributed under the terms of the LaTeX Project Public %% License from CTAN archives in directory macros/latex/base/lppl.txt. %% Either version 1.3 or, at your option, any later version. %% -% Copyright 2023-2024 Herbert Voss hvoss@tug.org +% Copyright 2023-2025 Herbert Voss hvoss@tug.org %% \ProvidesPackage{plex-otf}[% - 2024/12/06 v. 0.09 (Herbert Voss) Supports plex OpenType for lualatex/xelatex.] + 2025/01/03 v. 0.10 (Herbert Voss) Supports plex OpenType for lualatex/xelatex.] % \RequirePackage{iftex,xkeyval,textcomp} \RequirePackage{unicode-math} @@ -379,10 +379,10 @@ \ifPlex@math \ifxetex \expandafter\setmathfont\expandafter[\PlexMM@features,version=normal]{IBMPlexMath-Regular.otf}% - \expandafter\setmathfont\expandafter[\PlexMM@features,FakeBold=3,version=bold]{IBMPlexMath-Regularath.otf}% + \expandafter\setmathfont\expandafter[\PlexMM@features,FakeBold=3,version=bold]{IBMPlexMath-Regular.otf}% \else - \expandafter\setmathfont\expandafter[\PlexMM@features,version=normal]{IBMPlexMath-Regular}% - \expandafter\setmathfont\expandafter[\PlexMM@features,FakeBold=3,version=bold]{IBMPlexMath-Regular}% + \expandafter\setmathfont\expandafter[\PlexMM@features,version=normal]{IBMPlexMath-Regular.otf}% + \expandafter\setmathfont\expandafter[\PlexMM@features,FakeBold=3,version=bold]{IBMPlexMath-Regular.otf}% \fi \mathversion{normal}% \fi% End ifMath diff --git a/Master/texmf-dist/tex/latex/profsio/ProfSio.sty b/Master/texmf-dist/tex/latex/profsio/ProfSio.sty index 3b70f9a1e38..b815329444c 100644 --- a/Master/texmf-dist/tex/latex/profsio/ProfSio.sty +++ b/Master/texmf-dist/tex/latex/profsio/ProfSio.sty @@ -1,9 +1,10 @@ % Author : C. Pierquet -% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf +% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt % : Luatruthtable from Chetan Shirore and Dr. Ajit Kumar https://ctan.org/pkg/luatruthtable \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{ProfSio}[2024/05/18 0.2.8 Pour les enseignants de Maths en BTS SIO] +\ProvidesPackage{ProfSio}[2025/01/04 0.2.9 Pour les enseignants de Maths en BTS SIO] +%0.2.9 Correction d'un bug dans les simplifications de Karnaugh %0.2.8 Ajout des grilles de CCF (E2) %0.2.7 Correction d'un bug dans les simplifications de Karnaugh %0.2.6 Corrections dans les simplifications de Karnaugh @@ -39,7 +40,8 @@ \RequirePackage{calc} \RequirePackage{nicematrix} %------Librairies -\usetikzlibrary{positioning,decorations.pathreplacing,decorations.markings,arrows,arrows.meta,calc,babel,shapes,shapes.geometric} +\usetikzlibrary{positioning,decorations.pathreplacing,decorations.markings,arrows,arrows.meta,calc,shapes,shapes.geometric} +\usetikzlibrary{babel} %------Divers \def\§{\mkern1.5mu\relax} @@ -2041,32 +2043,32 @@ end %calculs pour 1 lettre \IfSubStr{\knghbintransf}{(AA)}{\xdef\knghbinres{\inteval{\knghbinres+11110000}}}{}% \IfSubStr{\knghbintransf}{(BB)}{\xdef\knghbinres{\inteval{\knghbinres+11001100}}}{}% - \IfSubStr{\knghbintransf}{(CC)}{\xdef\knghbinres{\inteval{\knghbinres+01100110}}}{}% + \IfSubStr{\knghbintransf}{(CC)}{\xdef\knghbinres{\inteval{\knghbinres+01100110}}}{}%version c intérieure !! \IfSubStr{\knghbintransf}{(AA*)}{\xdef\knghbinres{\inteval{\knghbinres+00001111}}}{}% \IfSubStr{\knghbintransf}{(BB*)}{\xdef\knghbinres{\inteval{\knghbinres+00110011}}}{}% - \IfSubStr{\knghbintransf}{(CC*)}{\xdef\knghbinres{\inteval{\knghbinres+10011001}}}{}% + \IfSubStr{\knghbintransf}{(CC*)}{\xdef\knghbinres{\inteval{\knghbinres+10011001}}}{}%version bar(c) extérieure %calculs pour 2 lettres \IfSubStr{\knghbintransf}{(AABB)}{\xdef\knghbinres{\inteval{\knghbinres+11000000}}}{}% - \IfSubStr{\knghbintransf}{(AACC*)}{\xdef\knghbinres{\inteval{\knghbinres+01100000}}}{}% + \IfSubStr{\knghbintransf}{(AACC*)}{\xdef\knghbinres{\inteval{\knghbinres+10010000}}}{}%=====! \IfSubStr{\knghbintransf}{(AABB*)}{\xdef\knghbinres{\inteval{\knghbinres+00110000}}}{}% \IfSubStr{\knghbintransf}{(AA*BB)}{\xdef\knghbinres{\inteval{\knghbinres+00001100}}}{}% - \IfSubStr{\knghbintransf}{(AA*CC*)}{\xdef\knghbinres{\inteval{\knghbinres+00000110}}}{}% + \IfSubStr{\knghbintransf}{(AA*CC*)}{\xdef\knghbinres{\inteval{\knghbinres+00001001}}}{}%=====! \IfSubStr{\knghbintransf}{(AA*BB*)}{\xdef\knghbinres{\inteval{\knghbinres+00000011}}}{}% - \IfSubStr{\knghbintransf}{(AACC)}{\xdef\knghbinres{\inteval{\knghbinres+10010000}}}{}% - \IfSubStr{\knghbintransf}{(AA*CC)}{\xdef\knghbinres{\inteval{\knghbinres+00001001}}}{}% - \IfSubStr{\knghbintransf}{(BBCC)}{\xdef\knghbinres{\inteval{\knghbinres+10001000}}}{}% - \IfSubStr{\knghbintransf}{(BBCC*)}{\xdef\knghbinres{\inteval{\knghbinres+01000100}}}{}% - \IfSubStr{\knghbintransf}{(BB*CC*)}{\xdef\knghbinres{\inteval{\knghbinres+00100010}}}{}% - \IfSubStr{\knghbintransf}{(BB*CC)}{\xdef\knghbinres{\inteval{\knghbinres+00010001}}}{}% + \IfSubStr{\knghbintransf}{(AACC)}{\xdef\knghbinres{\inteval{\knghbinres+01100000}}}{}%=====! + \IfSubStr{\knghbintransf}{(AA*CC)}{\xdef\knghbinres{\inteval{\knghbinres+00000110}}}{}%=====! + \IfSubStr{\knghbintransf}{(BBCC)}{\xdef\knghbinres{\inteval{\knghbinres+01000100}}}{}%=====! + \IfSubStr{\knghbintransf}{(BBCC*)}{\xdef\knghbinres{\inteval{\knghbinres+10001000}}}{}%=====! + \IfSubStr{\knghbintransf}{(BB*CC*)}{\xdef\knghbinres{\inteval{\knghbinres+00010001}}}{}%=====! + \IfSubStr{\knghbintransf}{(BB*CC)}{\xdef\knghbinres{\inteval{\knghbinres+00100010}}}{}%=====! %calculs pour 3 lettres - \IfSubStr{\knghbintransf}{(AABBCC)}{\xdef\knghbinres{\inteval{\knghbinres+10000000}}}{}% - \IfSubStr{\knghbintransf}{(AABBCC*)}{\xdef\knghbinres{\inteval{\knghbinres+01000000}}}{}% - \IfSubStr{\knghbintransf}{(AABB*CC*)}{\xdef\knghbinres{\inteval{\knghbinres+00100000}}}{}% - \IfSubStr{\knghbintransf}{(AABB*CC)}{\xdef\knghbinres{\inteval{\knghbinres+00010000}}}{}% - \IfSubStr{\knghbintransf}{(AA*BBCC)}{\xdef\knghbinres{\inteval{\knghbinres+00001000}}}{}% - \IfSubStr{\knghbintransf}{(AA*BBCC*)}{\xdef\knghbinres{\inteval{\knghbinres+00000100}}}{}% - \IfSubStr{\knghbintransf}{(AA*BB*CC*)}{\xdef\knghbinres{\inteval{\knghbinres+00000010}}}{}% - \IfSubStr{\knghbintransf}{(AA*BB*CC)}{\xdef\knghbinres{\inteval{\knghbinres+00000001}}}{}% + \IfSubStr{\knghbintransf}{(AABBCC)}{\xdef\knghbinres{\inteval{\knghbinres+01000000}}}{}%=====! + \IfSubStr{\knghbintransf}{(AABBCC*)}{\xdef\knghbinres{\inteval{\knghbinres+10000000}}}{}%=====! + \IfSubStr{\knghbintransf}{(AABB*CC*)}{\xdef\knghbinres{\inteval{\knghbinres+00010000}}}{}%=====! + \IfSubStr{\knghbintransf}{(AABB*CC)}{\xdef\knghbinres{\inteval{\knghbinres+00100000}}}{}%=====! + \IfSubStr{\knghbintransf}{(AA*BBCC)}{\xdef\knghbinres{\inteval{\knghbinres+00000100}}}{}%=====! + \IfSubStr{\knghbintransf}{(AA*BBCC*)}{\xdef\knghbinres{\inteval{\knghbinres+00001000}}}{}%=====! + \IfSubStr{\knghbintransf}{(AA*BB*CC*)}{\xdef\knghbinres{\inteval{\knghbinres+00000001}}}{}%=====! + \IfSubStr{\knghbintransf}{(AA*BB*CC)}{\xdef\knghbinres{\inteval{\knghbinres+00000010}}}{}%=====! %on complète \StrLen{\knghbinres}[\knghbinresnbchiffres] \ifnum\knghbinresnbchiffres<8% diff --git a/Master/texmf-dist/tex/latex/randintlist/randintlist.sty b/Master/texmf-dist/tex/latex/randintlist/randintlist.sty index 28fdb560e17..daffc7cd011 100644 --- a/Master/texmf-dist/tex/latex/randintlist/randintlist.sty +++ b/Master/texmf-dist/tex/latex/randintlist/randintlist.sty @@ -1,10 +1,11 @@ % Author : C. Pierquet -% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf +% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{randintlist}[2024/10/24 0.1.2 Create a list of random numbers with or without multiple values] +\ProvidesPackage{randintlist}[2025/01/04 0.1.3 Create a list of random numbers with or without multiple values] %------History +% 0.1.3 new usage of extracting element (with storing \macro) % 0.1.2 Changing name of macro % 0.1.1 Possibility to exclude values % 0.1.0 Initial version @@ -136,8 +137,8 @@ } %-----Macro for extracting -\NewDocumentCommand\getitemfromrandintlist{ O{,} m m }{% - \IfEq{#1}{/}% +\NewDocumentCommand\getitemfromrandintlist{ O{,} m m o }{% + \IfStrEq{#1}{/}% {% \setsepchar[.]{#1}% }% @@ -145,7 +146,7 @@ \setsepchar{#1}% }% \readlist*\TMPLISTRANDINT{#2}% - \TMPLISTRANDINT[#3]% + \IfNoValueTF{#4}{\TMPLISTRANDINT[#3]}{\itemtomacro\TMPLISTRANDINT[#3]#4}% } %-----french version @@ -232,8 +233,8 @@ } %-----Macro for extracting -\NewDocumentCommand\ExtraireEltListeRandint{ O{,} m m }{% - \IfEq{#1}{/}% +\NewDocumentCommand\ExtraireEltListeRandint{ O{,} m m o }{% + \IfStrEq{#1}{/}% {% \setsepchar[.]{#1}% }% @@ -241,7 +242,7 @@ \setsepchar{#1}% }% \readlist*\TMPLISTRANDINT{#2}% - \TMPLISTRANDINT[#3]% + \IfNoValueTF{#4}{\TMPLISTRANDINT[#3]}{\itemtomacro\TMPLISTRANDINT[#3]#4}% } \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/scaletextbullet/scaletextbullet.sty b/Master/texmf-dist/tex/latex/scaletextbullet/scaletextbullet.sty index 1bb7c321d90..fdc80b73895 100644 --- a/Master/texmf-dist/tex/latex/scaletextbullet/scaletextbullet.sty +++ b/Master/texmf-dist/tex/latex/scaletextbullet/scaletextbullet.sty @@ -1,6 +1,6 @@ % Package : scaletextbullet -- Resize the \textbullet without changing its % vertical center -% Copyright : 2024 (c) Oliver Beery <beeryoliver@gmail.com> +% Copyright : 2024-2025 (c) Oliver Beery <beeryoliver@gmail.com> % CTAN : https://ctan.org/pkg/scaletextbullet % Repository: https://github.com/beeryoliver/scaletextbullet % License : The LaTeX Project Public License 1.3c @@ -9,8 +9,8 @@ \NeedsTeXFormat{LaTeX2e}[2023-11-01] \ProvidesExplPackage {scaletextbullet} - {2024-12-09} - {1.0.3} + {2025-01-03} + {1.0.4} {Resize the \noexpand\textbullet without changing its vertical center.} % l3kernel version 2023-10-10 added many 'e'-variants. @@ -27,16 +27,26 @@ % This package does not require any other packages! +% MESSAGES + +\msg_new:nnn { scaletextbullet } { factor-out-of-bounds } + { Invalid~ \iow_char:N \\textbullet~ factor~ '#1'~ \msg_line_context:. } +\msg_new:nnn { scaletextbullet } { scale-out-of-bounds } + { Invalid~ scale~ factor~ '#1'~ \msg_line_context:. } +\msg_new:nnn { scaletextbullet } { count-out-of-bounds } + { + Invalid~ number~ of~ \iow_char:N \\textbullet s~ '#1'~ \msg_line_context:. + } + % SOME VARIABLES -\tl_new:N \l__scaletextbullet_factor_tl -\tl_set:Nn \l__scaletextbullet_factor_tl { 0.4 } +\fp_new:N \l__scaletextbullet_factor_fp +\fp_set:Nn \l__scaletextbullet_factor_fp { 0.4 } -% Used to speed up \ScaleTextBullets{2}, \ScaleTextBullets{3}, and -% \ScaleTextBullets{4}. -\fp_const:Nn \c__scaletextbullet_ii_fp { 2 ^ -0.5 } -\fp_const:Nn \c__scaletextbullet_iii_fp { 3 ^ -0.5 } -\fp_const:Nn \c__scaletextbullet_iv_fp { 0.5 } +% Used only to speed up floating point calculations. +\fp_const:Nn \c__scaletextbullet_one_half_fp { 0.5 } +\fp_const:Nn \c__scaletextbullet_scaletextbullets_two_fp { 2 ^ -0.5 } +\fp_const:Nn \c__scaletextbullet_scaletextbullets_three_fp { 3 ^ -0.5 } % Scratch variables \int_new:N \l__scaletextbullet_tmp_int @@ -54,12 +64,12 @@ \q_stop } % Argument processor -\int_new:N \l__scaletextbullet_arg_process_int \cs_new_protected:Npn \__scaletextbullet_arg_process_int:n #1 { - \__scaletextbullet_int_set_from_user:Nn \l__scaletextbullet_arg_process_int - {#1} - \tl_set:NV \ProcessedArgument \l__scaletextbullet_arg_process_int + \group_begin: + \__scaletextbullet_int_set_from_user:Nn \l_tmpa_int {#1} + \exp_args:NNNV \group_end: + \tl_set:Nn \ProcessedArgument \l_tmpa_int } % Lowers the \textbullet to the baseline, scales it by a factor of #2, and % then raises it back to the vertical center. @@ -71,9 +81,19 @@ { \hbox_set:Nn #1 { \textbullet } \dim_set:Nn \l__scaletextbullet_bottom_dim - { \box_ht:N #1 - \l__scaletextbullet_factor_tl \box_wd:N #1 } + { + \box_ht:N #1 + - \fp_to_dim:n + { \l__scaletextbullet_factor_fp * \dim_to_fp:n { \box_wd:N #1 } } + } \dim_set:Nn \l__scaletextbullet_center_dim - { ( \box_ht:N #1 + \l__scaletextbullet_bottom_dim ) / 2 } + { + \fp_to_dim:n + { + \dim_to_fp:n { \box_ht:N #1 + \l__scaletextbullet_bottom_dim } + * \c__scaletextbullet_one_half_fp + } + } \hbox_set:Nn #1 { \box_move_down:nn { \l__scaletextbullet_bottom_dim } { \box_use:N #1 } @@ -81,37 +101,29 @@ \box_scale:Nnn #1 {#2} {#2} \hbox_set:Nn #1 { - \box_move_up:nn { \l__scaletextbullet_center_dim - 0.5 \box_ht:N #1 } + \box_move_up:nn + { + \l__scaletextbullet_center_dim + - \fp_to_dim:n + { + \dim_to_fp:n { \box_ht:N #1 } * \c__scaletextbullet_one_half_fp + } + } { \box_use:N #1 } } } -% MESSAGES - -\msg_new:nnn { scaletextbullet } { factor-out-of-bounds } - { Invalid~ \iow_char:N \\textbullet~ factor~ '#1'~ \msg_line_context:. } -\msg_new:nnn { scaletextbullet } { scale-out-of-bounds } - { Invalid~ scale~ factor~ '#1'~ \msg_line_context:. } -\msg_new:nnn { scaletextbullet } { count-out-of-bounds } - { - Invalid~ number~ of~ \iow_char:N \\textbullet s~ '#1'~ \msg_line_context:. - } - % DOCUMENT COMMANDS \NewDocumentCommand \SetTextBulletFactor { m } { \__scaletextbullet_set_factor:n {#1} } \cs_new_protected:Npn \__scaletextbullet_set_factor:n #1 { - \fp_set:Nn \l__scaletextbullet_tmp_fp {#1} - \fp_compare:nTF { \c_zero_fp < \l__scaletextbullet_tmp_fp <= \c_one_fp } - { - \tl_set:Ne \l__scaletextbullet_factor_tl - { \fp_use:N \l__scaletextbullet_tmp_fp } - } + \fp_set:Nn \l__scaletextbullet_factor_fp {#1} + \fp_compare:nF { \c_zero_fp < \l__scaletextbullet_factor_fp <= \c_one_fp } { \msg_error:nne { scaletextbullet } { factor-out-of-bounds } - { \fp_use:N \l__scaletextbullet_tmp_fp } + { \fp_use:N \l__scaletextbullet_factor_fp } } } @@ -124,7 +136,7 @@ { \__scaletextbullet_box_scale:Nn \l__scaletextbullet_tmp_box { \l__scaletextbullet_tmp_fp } - \box_use_drop:N \l__scaletextbullet_tmp_box + \box_use:N \l__scaletextbullet_tmp_box } { \fp_compare:nNnF \l__scaletextbullet_tmp_fp = \c_zero_fp @@ -155,22 +167,22 @@ { 2 } { \fp_set_eq:NN \l__scaletextbullet_tmp_fp - \c__scaletextbullet_ii_fp + \c__scaletextbullet_scaletextbullets_two_fp } { 3 } { \fp_set_eq:NN \l__scaletextbullet_tmp_fp - \c__scaletextbullet_iii_fp + \c__scaletextbullet_scaletextbullets_three_fp } { 4 } { \fp_set_eq:NN \l__scaletextbullet_tmp_fp - \c__scaletextbullet_iv_fp + \c__scaletextbullet_one_half_fp } } { \fp_set:Nn \l__scaletextbullet_tmp_fp - { \l__scaletextbullet_tmp_int ^ -0.5 } + { \int_use:N \l__scaletextbullet_tmp_int ^ -0.5 } } \__scaletextbullet_box_scale:Nn \l__scaletextbullet_tmp_box { \l__scaletextbullet_tmp_fp } @@ -178,7 +190,7 @@ { \box_use:N \l__scaletextbullet_tmp_box } } { - \int_compare:nNnF \l__scaletextbullet_tmp_int = 0 + \int_if_zero:nF { \l__scaletextbullet_tmp_int } { \msg_error:nnV { scaletextbullet } { count-out-of-bounds } \l__scaletextbullet_tmp_int @@ -199,7 +211,7 @@ { \box_use:N \l__scaletextbullet_tmp_box } } { - \int_compare:nNnF \l__scaletextbullet_tmp_int = 0 + \int_if_zero:nF { \l__scaletextbullet_tmp_int } { \msg_error:nnV { scaletextbullet } { count-out-of-bounds } \l__scaletextbullet_tmp_int @@ -226,12 +238,17 @@ \fp_set:Nn \l__scaletextbullet_tmp_fp { ##1 ^ -0.5 } \__scaletextbullet_box_scale:Nn \l__scaletextbullet_tmp_box { \l__scaletextbullet_tmp_fp } - \box_use_drop:N \l__scaletextbullet_tmp_box + \box_use:N \l__scaletextbullet_tmp_box } \, \group_begin: \dim_set:Nn \fboxrule { 0.1pt } \dim_zero:N \fboxsep - \framebox [ \l__scaletextbullet_factor_tl \width ] { \textbullet } + \framebox + [ + \fp_to_dim:n + { \l__scaletextbullet_factor_fp * \dim_to_fp:n { \width } } + ] + { \textbullet } \group_end: }
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/scripture/scripture.sty b/Master/texmf-dist/tex/latex/scripture/scripture.sty index 5cdbca4dce9..512dcccca7b 100644 --- a/Master/texmf-dist/tex/latex/scripture/scripture.sty +++ b/Master/texmf-dist/tex/latex/scripture/scripture.sty @@ -25,8 +25,17 @@ %% and the derived files scripture.sty and scripture.pdf %% \NeedsTeXFormat{LaTeX2e}[2022-11-01] -\ProvidesExplPackage{scripture}{2023/12/27}{2.0} +\ProvidesExplPackage{scripture}{2025/01/02}{2.1} {Format Scripture Quotations (DCP)} +\bool_new:N \l__scripture_textdir_change_in_group_bool +\cs_new_protected:Nn \__scripture_set_textdirection: + { + \sys_if_engine_luatex:T + { + \textdirection \int_use:N \textdirection + \bool_set_true:N \l__scripture_textdir_change_in_group_bool + } + } \msg_new:nnnn { scripture } { nested-environment } { Nesting~of~scripture~environments~not~supported. } { You~have~tried~to~nest~a~scripture~environment~or \\ @@ -39,6 +48,12 @@ { Language~requested~without~support. } { You~have~requested~language=#1,~but~neither~babel~nor~polyglossia~ have~been~loaded~and~set~up.~Ignoring~option~language=#1. } +\msg_new:nnnn { scripture } { heading-error } + { \token_to_str:N \heading \c_space_tl not~support~within~inner~ + environments. } + { You~have~tried~to~use~\token_to_str:N \heading \c_space_tl within~the~ + `#1'~environment,~but~this~macro~is~only~supported~in~the~main~ + `scripture'~environment. } \msg_new:nnnn { scripture } { unknown-style } { Style~#1~not~defined. } { You~have~requested~style=#1,~but~it~has~not~been~defined.~ @@ -55,6 +70,12 @@ , added / format .cs_set:Np = \__scripture_added_format:n #1 , added / format .value_required:n = true , added / format .initial:n = \emph { #1 } + , after .tl_set:N = \l__scripture_after_tl + , after .value_required:n = true + , after .initial:n = + , before .tl_set:N = \l__scripture_before_tl + , before .value_required:n = true + , before .initial:n = , belowskip .tl_set:N = \l__scripture_belowskip_tl , belowskip .value_required:n = true , belowskip .initial:n = \c_zero_skip @@ -65,6 +86,26 @@ , compact .bool_set:N = \l__scripture_compact_bool , compact .default:n = true , compact .initial:n = false + , chapter / align .choices:nn = { left, right } + { + \tl_if_exist:NF \l__scripture_chapter_align_tl + { \tl_new:N \l__scripture_chapter_align_tl } + \str_case:Vn \l_keys_choice_tl + { + { left } + { + \tl_set:Nn \l__scripture_chapter_align_tl + { l } + } + { right } + { + \tl_set:Nn \l__scripture_chapter_align_tl + { r } + } + } + } + , chapter / align .value_required:n = true + , chapter / align .initial:n = left , chapter / font .tl_set:N = \l__scripture_chap_font_tl , chapter / font .value_required:n = true , chapter / font .initial:n = \bfseries @@ -82,21 +123,115 @@ , chapter / hide .default:n = true , chapter / nodrop .bool_set_inverse:N = \l__scripture_chap_drop_bool , chapter / nodrop .default:n = true + , chapter / para .bool_set:N = \l__scripture_chap_para_bool + , chapter / para .default:n = true + , chapter / para .initial:n = false + , chapter / para / aboveskip .tl_set:N = \l__scripture_chap_para_aboveskip_tl + , chapter / para / aboveskip .value_required:n = true + , chapter / para / aboveskip .initial:n = \bigskipamount + , chapter / para / belowskip .tl_set:N = \l__scripture_chap_para_belowskip_tl + , chapter / para / belowskip .value_required:n = true + , chapter / para / belowskip .initial:n = \medskipamount + , chapter / para / indent .code:n = { + \bool_set:Nn + \l__scripture_chap_para_afterindent_bool + { \str_if_eq_p:nn { #1 } { true } } + } + , chapter / para / indent .default:n = true + , chapter / para / indent .initial:n = true , chapter / sep .tl_set:N = \l__scripture_chap_sep_tl , chapter / sep .value_required:n = true - , chapter / sep .initial:n = 0.5 em + , chapter / sep .initial:n = 0.5em , chapter / show .bool_set:N = \l__scripture_chap_show_bool , chapter / show .default:n = true , chapter / show .initial:n = true , chapter / showverse .bool_set:N = \l__scripture_chap_show_verse_bool , chapter / showverse .default:n = true , chapter / showverse .initial:n = false + , chapter / smash .bool_set:N = \l__scripture_chap_smash_bool + , chapter / smash .default:n = true + , chapter / smash .initial:n = false + , chapter / valign .choices:nn = { bottom, middle, top } + { + \tl_if_exist:NF \l__scripture_chapter_valign_tl + { \tl_new:N \l__scripture_chapter_valign_tl } + \str_case:Vn \l_keys_choice_tl + { + { bottom } + { + \tl_set:Nn \l__scripture_chapter_valign_tl + { b } + } + { middle } + { + \tl_set:Nn \l__scripture_chapter_valign_tl + { vc } + } + { top } + { + \tl_set:Nn \l__scripture_chapter_valign_tl + { t } + } + } + } + , chapter / valign .value_required:n = true + , chapter / valign .initial:n = bottom + , chapter / xchar .tl_set:N = \l__scripture_X_char_tl + , chapter / xchar .value_required:n = true + , chapter / xchar .initial:n = X + , defaults .code:n = \cs_if_exist_use:N \__scripture_setup_reset_defaults: + , defaults .value_forbidden:n = true , extraskip .tl_set:N = \l__scripture_extraskip_tl , extraskip .value_required:n = true , extraskip .initial:n = \medskipamount , font .tl_set:N = \l__scripture_font_tl , font .value_required:n = true , font .initial:n = + , heading / aboveskip .tl_set:N = \l__scripture_heading_aboveskip_tl + , heading / aboveskip .value_required:n = true + , heading / aboveskip .initial:n = \bigskipamount + , heading / afterindent .bool_set:N = \l__scripture_heading_afterindent_bool + , heading / afterindent .default:n = true + , heading / afterindent .initial:n = false + , heading / align .choices:nn = { left, right, center } + { + \tl_if_exist:NF \l__scripture_heading_align_tl + { \tl_new:N \l__scripture_heading_align_tl } + \str_case:Vn \l_keys_choice_tl + { + { left } + { + \tl_set:Nn \l__scripture_heading_align_tl + { \raggedright } + } + { right } + { + \tl_set:Nn \l__scripture_heading_align_tl + { \raggedleft } + } + { center } + { + \tl_set:Nn \l__scripture_heading_align_tl + { \centering } + } + } + } + , heading / align .value_required:n = true + , heading / align .initial:n = left + , heading / belowskip .tl_set:N = \l__scripture_heading_belowskip_tl + , heading / belowskip .value_required:n = true + , heading / belowskip .initial:n = \medskipamount + , heading / font .tl_set:N = \l__scripture_heading_font_tl + , heading / font .value_required:n = true + , heading / font .initial:n = \small\itshape + , heading / format .cs_set:Np = \__scripture_heading_format:n #1 + , heading / format .value_required:n = true + , heading / format .initial:n = #1 + , heading / hide .bool_set_inverse:N = \l__scripture_heading_show_bool + , heading / hide .default:n = true + , heading / show .bool_set:N = \l__scripture_heading_show_bool + , heading / show .default:n = true + , heading / show .initial:n = true , indent .bool_set:N = \l__scripture_indent_bool , indent .default:n = true , indent .initial:n = true @@ -105,16 +240,16 @@ , inline .initial:n = false , inline / begin .tl_set:N = \l__scripture_inline_begin_tl , inline / begin .value_required:n = true - , inline / begin .initial:n = ``\, + , inline / begin .initial:n = `` , inline / end .tl_set:N = \l__scripture_inline_end_tl , inline / end .value_required:n = true - , inline / end .initial:n = \,'' + , inline / end .initial:n = '' , inline / reference / format .cs_set:Np = \__scripture_inline_ref_format:n #1 , inline / reference / format .value_required:n = true , inline / reference / format .initial:n = (#1) , inline / reference / sep .tl_set:N = \l__scripture_inline_ref_sep_tl , inline / reference / sep .value_required:n = true - , inline / reference / sep .initial:n = 0.5 em + , inline / reference / sep .initial:n = 0.5em , inline / version / delim .tl_set:N = \l__scripture_inline_version_delim_tl , inline / version / delim .value_required:n = true , inline / version / delim .initial:n = \c_space_tl @@ -144,6 +279,12 @@ , parskip .tl_set:N = \l__scripture_parskip_tl , parskip .value_required:n = true , parskip .initial:n = \parskip + , pilcrow .bool_set:N = \l__scripture_pilcrow_bool + , pilcrow .default:n = true + , pilcrow .initial:n = false + , pilcrow / sep .tl_set:N = \l__scripture_pilcrow_sep_tl + , pilcrow / sep .value_required:n = true + , pilcrow / sep .initial:n = 0.25em , redletter .bool_set:N = \l__scripture_red_letter_bool , redletter .default:n = true , redletter .initial:n = false @@ -171,9 +312,28 @@ , reference / format .initial:n = #1 , reference / newline .meta:n = { reference / sep = \linewidth } , reference / newline .value_forbidden:n = true + , reference / position .choices:nn = { start, end } + { + \tl_if_exist:NF \l__scripture_ref_position_tl + { \tl_new:N \l__scripture_ref_position_tl } + \tl_set_eq:NN \l__scripture_ref_position_tl \l_keys_choice_tl + } + , reference / position .value_required:n = true + , reference / position .initial:n = end , reference / sep .tl_set:N = \l__scripture_ref_sep_tl , reference / sep .value_required:n = true - , reference / sep .initial:n = 2 em + , reference / sep .initial:n = 2em + , reference / start / inline .bool_set_inverse:N = \l__scripture_ref_start_newline_bool + , reference / start / inline .default:n = true + , reference / start / newline .bool_set:N = \l__scripture_ref_start_newline_bool + , reference / start / newline .default:n = true + , reference / start / newline .initial:n = false + , reference / start / sep .tl_set:N = \l__scripture_ref_start_sep_tl + , reference / start / sep .value_required:n = true + , reference / start / sep .initial:n = 1em + , reference / start / vsep .tl_set:N = \l__scripture_ref_vertical_sep_tl + , reference / start / vsep .value_required:n = true + , reference / start / vsep .initial:n = 0pt , rightmargin .tl_set:N = \l__scripture_rightmargin_tl , rightmargin .value_required:n = true , rightmargin .initial:n = \c_zero_dim @@ -188,7 +348,7 @@ , selah / format .initial:n = #1 , selah / sep .tl_set:N = \l__scripture_selah_sep_tl , selah / sep .value_required:n = true - , selah / sep .initial:n = 1 em + , selah / sep .initial:n = 1em , style .choice: , style / unknown .code:n = \msg_error:nnx { scripture } @@ -196,7 +356,7 @@ { \exp_not:n {#1} } , textright / sep .tl_set:N = \l__scripture_text_right_sep_tl , textright / sep .value_required:n = true - , textright / sep .initial:n = 1 em + , textright / sep .initial:n = 1em , verse / colour .tl_set:N = \l__scripture_verse_colour_tl , verse / colour .value_required:n = true , verse / colour .initial:n = . @@ -218,9 +378,15 @@ , verse / format .initial:n = \textsuperscript{#1} , verse / hide .bool_set_inverse:N = \l__scripture_verse_show_bool , verse / hide .default:n = true + , verse / para .bool_set:N = \l__scripture_verse_para_bool + , verse / para .default:n = true + , verse / para .initial:n = false + , verse / para / indent .tl_set:N = \l__scripture_para_indent_tl + , verse / para / indent .value_required:n = true + , verse / para / indent .initial:n = \l__scripture_parindent_tl , verse / sep .tl_set:N = \l__scripture_verse_sep_tl , verse / sep .value_required:n = true - , verse / sep .initial:n = 0.05 em + , verse / sep .initial:n = 0.05em , verse / show .bool_set:N = \l__scripture_verse_show_bool , verse / show .default:n = true , verse / show .initial:n = true @@ -233,6 +399,14 @@ , version / format .cs_set:Np = \__scripture_version_format:n #1 , version / format .value_required:n = true , version / format .initial:n = (#1) + , version / position .choices:nn = { withref, end } + { + \tl_if_exist:NF \l__scripture_version_position_tl + { \tl_new:N \l__scripture_version_position_tl } + \tl_set_eq:NN \l__scripture_version_position_tl \l_keys_choice_tl + } + , version / position .value_required:n = true + , version / position .initial:n = withref , center / aboveskip .tl_set:N = \l__scripture_center_aboveskip_tl , center / aboveskip .value_required:n = true , center / aboveskip .initial:n = \medskipamount @@ -263,15 +437,26 @@ , hanging / belowskip .tl_set:N = \l__scripture_hanging_belowskip_tl , hanging / belowskip .value_required:n = true , hanging / belowskip .initial:n = \medskipamount + , hanging / chapter / indent .bool_set:N = \l__scripture_hanging_chapter_indent_bool + , hanging / chapter / indent .default:n = true + , hanging / chapter / indent .initial:n = true , hanging / hang .tl_set:N = \l__scripture_hanging_hang_tl , hanging / hang .value_required:n = true - , hanging / hang .initial:n = 2 em + , hanging / hang .initial:n = 2em , hanging / leftmargin .tl_set:N = \l__scripture_hanging_leftmargin_tl , hanging / leftmargin .value_required:n = true - , hanging / leftmargin .initial:n = 1 em + , hanging / leftmargin .initial:n = 1em , hanging / rightmargin .tl_set:N = \l__scripture_hanging_rightmargin_tl , hanging / rightmargin .value_required:n = true , hanging / rightmargin .initial:n = \c_zero_dim + , hanging / verse / left .bool_set_inverse:N = \l__scripture_hanging_verse_right_bool + , hanging / verse / left .default:n = true + , hanging / verse / right .bool_set:N = \l__scripture_hanging_verse_right_bool + , hanging / verse / right .default:n = true + , hanging / verse / right .initial:n = true + , hanging / verse / sep .tl_set:N = \l__scripture_hanging_verse_sep_tl + , hanging / verse / sep .value_required:n = true + , hanging / verse / sep .initial:n = 0.05em , midparachap / hideverse .bool_set_inverse:N = \l__scripture_midparachap_show_verse_bool , midparachap / hideverse .default:n = true , midparachap / showverse .bool_set:N = \l__scripture_midparachap_show_verse_bool @@ -285,10 +470,10 @@ , narrow / belowskip .initial:n = \medskipamount , narrow / leftmargin .tl_set:N = \l__scripture_narrow_leftmargin_tl , narrow / leftmargin .value_required:n = true - , narrow / leftmargin .initial:n = 1 em + , narrow / leftmargin .initial:n = 1em , narrow / rightmargin .tl_set:N = \l__scripture_narrow_rightmargin_tl , narrow / rightmargin .value_required:n = true - , narrow / rightmargin .initial:n = 1 em + , narrow / rightmargin .initial:n = 1em , poetry / aboveskip .tl_set:N = \l__scripture_poetry_aboveskip_tl , poetry / aboveskip .value_required:n = true , poetry / aboveskip .initial:n = \medskipamount @@ -297,13 +482,13 @@ , poetry / belowskip .initial:n = \medskipamount , poetry / bigindent .tl_set:N = \l__scripture_poetry_big_indent_tl , poetry / bigindent .value_required:n = true - , poetry / bigindent .initial:n = 4 em + , poetry / bigindent .initial:n = 4em , poetry / indent .tl_set:N = \l__scripture_poetry_indent_tl , poetry / indent .value_required:n = true - , poetry / indent .initial:n = 1 em + , poetry / indent .initial:n = 1em , poetry / leftmargin .tl_set:N = \l__scripture_poetry_leftmargin_tl , poetry / leftmargin .value_required:n = true - , poetry / leftmargin .initial:n = 1 em + , poetry / leftmargin .initial:n = 1em , poetry / rightmargin .tl_set:N = \l__scripture_poetry_rightmargin_tl , poetry / rightmargin .value_required:n = true , poetry / rightmargin .initial:n = \c_zero_dim @@ -314,9 +499,127 @@ , poetry / verse / right .initial:n = true , poetry / verse / sep .tl_set:N = \l__scripture_poetry_verse_sep_tl , poetry / verse / sep .value_required:n = true - , poetry / verse / sep .initial:n = 0.05 em + , poetry / verse / sep .initial:n = 0.05em } \ProcessKeyOptions +\tl_new:N \l__scripture_default_options_tl +\keys_precompile:nnN { scripture } + { + , aboveskip = \c_zero_skip + , added / font = + , added / format = \emph { #1 } + , after = + , before = + , belowskip = \c_zero_skip + , colour = . + , compact = false + , chapter / align = left + , chapter / font = \bfseries + , chapter / colour = . + , chapter / drop = true + , chapter / format = #1 + , chapter / para = false + , chapter / para / aboveskip = \bigskipamount + , chapter / para / belowskip = \medskipamount + , chapter / para / indent = true + , chapter / sep = 0.5em + , chapter / show = true + , chapter / showverse = false + , chapter / smash = false + , chapter / valign = bottom + , chapter / xchar = X + , extraskip = \medskipamount + , font = + , heading / aboveskip = \bigskipamount + , heading / afterindent = false + , heading / align = left + , heading / belowskip = \medskipamount + , heading / font = \small\itshape + , heading / format = #1 + , heading / show = true + , indent = true + , inline = false + , inline / begin = `` + , inline / end = '' + , inline / reference / format = (#1) + , inline / reference / sep = 0.5em + , inline / version / delim = \c_space_tl + , inline / version / format = #1 + , language = + , language / variant = + , leftmargin = \c_zero_dim + , name / font = \scshape + , name / format = #1 + , parindent = \parindent + , parskip = \parskip + , pilcrow = false + , pilcrow / sep = 0.25em + , redletter = false + , redletter / colour = red!80!black + , reference / align = right + , reference / colour = . + , reference / font = \bfseries + , reference / format = #1 + , reference / position = end + , reference / sep = 2em + , reference / start / newline = false + , reference / start / sep = 1em + , reference / start / vsep = 0pt + , rightmargin = \c_zero_dim + , selah / text = Selah + , selah / font = \itshape + , selah / format = #1 + , selah / sep = 1em + , textright / sep = 1em + , verse / colour = . + , verse / first = false + , verse / firstformat = #1 + , verse / firstsep = 0.5em + , verse / font = + , verse / format = \textsuperscript{#1} + , verse / para = false + , verse / para / indent = \l__scripture_parindent_tl + , verse / sep = 0.05em + , verse / show = true + , version = + , version / delim = \c_space_tl + , version / format = (#1) + , version / position = withref + , center / aboveskip = \medskipamount + , center / belowskip = \medskipamount + , center / leftmargin = \c_zero_dim + , center / rightmargin = \c_zero_dim + , flushright / aboveskip = \medskipamount + , flushright / belowskip = \medskipamount + , flushright / leftmargin = \c_zero_dim + , flushright / rightmargin = \c_zero_dim + , hanging / aboveskip = \medskipamount + , hanging / belowskip = \medskipamount + , hanging / chapter / indent = true + , hanging / hang = 2em + , hanging / leftmargin = 1em + , hanging / rightmargin = \c_zero_dim + , hanging / verse / right = true + , hanging / verse / sep = 0.05em + , midparachap / showverse = true + , narrow / aboveskip = \medskipamount + , narrow / belowskip = \medskipamount + , narrow / leftmargin = 1em + , narrow / rightmargin = 1em + , poetry / aboveskip = \medskipamount + , poetry / belowskip = \medskipamount + , poetry / bigindent = 4em + , poetry / indent = 1em + , poetry / leftmargin = 1em + , poetry / rightmargin = \c_zero_dim + , poetry / verse / right = true + , poetry / verse / sep = 0.05em + } + \l__scripture_default_options_tl +\cs_new_protected:Nn \__scripture_setup_reset_defaults: + { + \l__scripture_default_options_tl + } \cs_new_protected:Nn \__scripture_setup_style:nnn { \bool_if:NTF #1 @@ -335,22 +638,43 @@ \cs_generate_variant:Nn \__scripture_setup_style:nnn { nne } \hook_new_pair:nn { scripture / chap / before } { scripture / chap / after } \hook_new_pair:nn { scripture / verse / before } { scripture / verse / after } +\hook_new:n { scripture / pilcrow } +\hook_new:n { scripture / poetry / pilcrow } \bool_new:N \l__scripture_active_bool \bool_new:N \l__scripture_active_inner_bool +\bool_new:N \g__scripture_mode_vertical_inner_bool \int_new:N \l__scripture_clubpenalty_saved_int \skip_new:N \g__scripture_prev_inner_below_skip \dim_new:N \l__scripture_outer_itemindent_dim \cs_new_protected_nopar:Nn \__scripture_setup_list_noindent:n { - \legacy_if:nT {@newlist} + \legacy_if:nT { @newlist } { \cs_set_protected_nopar:Npn \noindent { \skip_horizontal:n { -#1 } + \bool_if:NT \l__scripture_verse_para_bool + { + \peek_meaning:NTF \vs + { + \bool_gset_true:N \g__scripture_suppress_next_verse_para_bool + \__scripture_set_pilcrow_hook: + } + { + \str_if_eq:VnF \l__scripture_currenvir_str { poetry } + { \__scripture_pilcrow_output: } + } + } } \hook_gput_next_code:nn { para / end } { - \cs_gset_eq:NN \noindent \tex_noindent:D + \bool_if:NTF \l__scripture_verse_para_bool + { + \str_if_eq:VnTF \l__scripture_currenvir_str { poetry } + { \cs_set_eq:NN \noindent \tex_noindent:D } + { \cs_set_eq:NN \noindent \__scripture_para_noindent: } + } + { \cs_set_eq:NN \noindent \tex_noindent:D } } } } @@ -367,6 +691,7 @@ } \cs_new_protected:Nn \__scripture_extra_skip: { + \mode_if_vertical:F \para_end: \int_compare:nNnT \g__scripture_chap_par_prevgraf_int = 1 { @@ -409,7 +734,7 @@ } } \box_new:N \l__scripture_ref_box -\cs_new_protected:Nn \__scripture_format_full_ref:n +\cs_new_protected:Nn \__scripture_format_full_ref:nn { \group_begin: \l__scripture_ref_font_tl @@ -418,11 +743,11 @@ \__scripture_ref_format:n { #1 - \tl_if_empty:NF \l__scripture_version_tl + \tl_if_empty:oF { #2 } { - \tl_if_empty:nF { #1 } + \tl_if_empty:oF { #1 } { \l__scripture_version_delim_tl } - \__scripture_version_format:n { \l__scripture_version_tl } + \__scripture_version_format:n { #2 } } } \group_end: @@ -431,7 +756,7 @@ { \hbox_set:Nn \l__scripture_ref_box { - \__scripture_format_full_ref:n { #1 } + \__scripture_format_full_ref:nn { #1 } \l__scripture_version_tl } \dim_compare:nNnT { \box_wd:N \l__scripture_ref_box + \g__scripture_final_line_dim + \l__scripture_ref_sep_tl } @@ -456,6 +781,337 @@ } \box_use:N \l__scripture_ref_box } +\cs_new_protected:Nn \__scripture_reference_start_inline: + { + \tl_if_empty:NF \l__scripture_ref_tl + { + \tl_if_eq:NnTF \l__scripture_version_position_tl { withref } + { \__scripture_format_full_ref:nn { \l__scripture_ref_tl } { \l__scripture_version_tl } } + { \__scripture_format_full_ref:nn { \l__scripture_ref_tl } { } } + \skip_horizontal:N \l__scripture_ref_start_sep_tl + } + } +\cs_new_protected:Nn \__scripture_reference_start_newline: + { + \tl_if_empty:NF \l__scripture_ref_tl + { + \bool_gset_eq:NN \g_tmpa_bool \g__scripture_suppress_next_pilcrow_bool + \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool + \noindent + \bool_gset_eq:NN \g__scripture_suppress_next_pilcrow_bool \g_tmpa_bool + \str_if_eq:VnF \l__scripture_currenvir_str { scripture } + { \skip_horizontal:n { -\leftmargin } } + \tl_if_eq:NnTF \l__scripture_version_position_tl { withref } + { \__scripture_format_full_ref:nn { \l__scripture_ref_tl } { \l__scripture_version_tl } } + { \__scripture_format_full_ref:nn { \l__scripture_ref_tl } { } } + \bool_lazy_or:nnT + { \str_if_eq_p:Vn \l__scripture_currenvir_str { flushright } } + { \str_if_eq_p:Vn \l__scripture_currenvir_str { center } } + { + \hfill + \strut + } + \bool_if:NTF \l__scripture_compact_bool + { \para_end: } + { + \bool_lazy_all:nTF + { + { \l__scripture_verse_para_bool } + { \bool_not_p:n { \str_if_eq_p:Vn \l__scripture_currenvir_str { hanging } } } + { \bool_not_p:n { \str_if_eq_p:Vn \l__scripture_currenvir_str { poetry } } } + } + { \para_end: } + { \par } + } + \nobreak + \@afterheading + \addvspace { \l__scripture_ref_vertical_sep_tl } + } + } +\cs_new_protected:Nn \__scripture_reference_start_peek: + { + \peek_remove_spaces:n + { + \bool_lazy_and:nnTF + { \str_if_eq_p:Vn \l__scripture_ref_position_tl { start } } + { \bool_not_p:n { \tl_if_empty_p:N \l__scripture_ref_tl } } + { + \bool_lazy_or:nnF + { \str_if_eq_p:Vn \l__scripture_currenvir_str { scripture } } + { \str_if_eq_p:Vn \l__scripture_currenvir_str { midparachap } } + { + \bool_if:NF \l__scripture_compact_bool + { \bool_set_true:N \l__scripture_ref_start_newline_bool } + } + \peek_analysis_map_inline:n + { + \bool_case:nF + { + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \heading } + { \__scripture_reference_start_newline: } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \noindent } + { + \bool_if:NTF \l__scripture_ref_start_newline_bool + { \__scripture_reference_start_newline: } + { \__scripture_reference_start_inline: } + } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \nohang } + { + \bool_if:NTF \l__scripture_ref_start_newline_bool + { \__scripture_reference_start_newline: } + { \__scripture_reference_start_inline: } + } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \nopilcrow } + { + \bool_if:NTF \l__scripture_ref_start_newline_bool + { \__scripture_reference_start_newline: } + { \__scripture_reference_start_inline: } + \peek_analysis_map_break:n + { + ##1 + \__scripture_fix_protrusion:n { } + } + } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \begin } + { + \bool_if:NF \l__scripture_indent_bool + { + \hook_gput_next_code:nn { para / begin } + { + \bool_lazy_or:nnT + { \str_if_eq_p:Vn \l__scripture_currenvir_str { midparachap } } + { \str_if_eq_p:Vn \l__scripture_currenvir_str { scripture } } + { \para_omit_indent: } + } + } + } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \ch } + { + \bool_if:NTF \l__scripture_ref_start_newline_bool + { \__scripture_reference_start_newline: } + { + \cs_set_eq:NN \__scripture_temp_ch \ch + \RenewDocumentCommand \ch { s o m } + { + \tl_if_novalue:nF { ##2 } + { + \tl_set:Nn \l__scripture_X_char_tl { ##2 } + } + \cs_set_eq:NN \ch \__scripture_temp_ch + } + \__scripture_reference_start_inline: + } + } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \vs } + { + \bool_if:NTF \l__scripture_ref_start_newline_bool + { \__scripture_reference_start_newline: } + { + \cs_set_eq:NN \__scripture_temp_vs \vs + \RenewDocumentCommand \vs { m } + { \cs_set_eq:NN \vs \__scripture_temp_vs } + \__scripture_reference_start_inline: + } + } + } + { + \bool_if:NTF \l__scripture_ref_start_newline_bool + { + \__scripture_reference_start_newline: + \bool_if:NTF \l__scripture_compact_bool + { + \bool_if:NT \g__scripture_mode_vertical_inner_bool + { \__scripture_pilcrow_output: } + } + { + \str_if_eq:VnF \l__scripture_currenvir_str { poetry } + { \__scripture_pilcrow_output: } + } + } + { \__scripture_reference_start_inline: } + } + \exp_args:No \token_if_eq_meaning:NNF { ##1 } \begin + { + \tl_clear:N \l__scripture_ref_tl + \tl_if_eq:NnF \l__scripture_version_position_tl { end } + { \tl_clear:N \l__scripture_version_tl } + } + \peek_analysis_map_break:n + { \__scripture_fix_protrusion:o { ##1 } } + } + } + { + \peek_analysis_map_inline:n + { + \bool_case:nF + { + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \heading } + { } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \noindent } + { } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \nohang } + { } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \nopilcrow } + { + \peek_analysis_map_break:n + { + ##1 + \__scripture_fix_protrusion:n { } + } + } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \begin } + { + \bool_if:NF \l__scripture_indent_bool + { + \hook_gput_next_code:nn { para / begin } + { + \bool_lazy_or:nnT + { \str_if_eq_p:Vn \l__scripture_currenvir_str { midparachap } } + { \str_if_eq_p:Vn \l__scripture_currenvir_str { scripture } } + { \para_omit_indent: } + } + } + } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \ch } + { } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \vs } + { + \mode_if_vertical:F + { \__scripture_set_pilcrow_hook: } + } + } + { + \bool_if:NTF \l__scripture_compact_bool + { + \bool_if:NT \g__scripture_mode_vertical_inner_bool + { \__scripture_pilcrow_output: } + } + { + \str_if_eq:VnF \l__scripture_currenvir_str { poetry } + { \__scripture_pilcrow_output: } + } + } + \peek_analysis_map_break:n + { + \__scripture_fix_protrusion:o { ##1 } + } + } + } + } + } +\cs_new_protected:Nn \__scripture_compact_par: + { + \bool_gset_false:N \g__scripture_mode_vertical_inner_bool + \dim_set:Nn \parindent { \l__scripture_parindent_tl } + \peek_remove_spaces:n + { + \peek_analysis_map_inline:n + { + \bool_case:n + { + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \begin } + { \bool_gset_true:N \g__scripture_mode_vertical_inner_bool } + { \str_if_eq_p:Vn \l__scripture_currenvir_str { poetry } } + { } + { \exp_args:No \token_if_letter_p:N { ##1 } } + { \__scripture_pilcrow_output: } + { \exp_args:No \token_if_active_p:N { ##1 } } + { \__scripture_pilcrow_output: } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \vs } + { \__scripture_set_pilcrow_hook: } + } + \peek_analysis_map_break:n { ##1 } + } + } + } +\cs_new_protected:Nn \__scripture_para_noindent: + { + \legacy_if:nTF { @newlist } + { + \tex_noindent:D + \peek_meaning:NTF \vs + { + \bool_gset_true:N \g__scripture_suppress_next_verse_para_bool + \__scripture_set_pilcrow_hook: + } + { \__scripture_pilcrow_output: } + } + { + \peek_meaning:NTF \vs + { + \bool_if:NT \l__scripture_verse_para_bool + { \para_end: } + \tex_noindent:D + \bool_gset_true:N \g__scripture_suppress_next_verse_para_bool + \__scripture_set_pilcrow_hook: + } + { \__scripture_pilcrow_output: } + } + } +\bool_new:N \g__scripture_para_mode_vertical_bool +\box_new:N \g__scripture_post_env_indent_box +\cs_new_protected:Nn \__scripture_para_par: + { + \bool_gset_true:N \g__scripture_para_mode_vertical_bool + \dim_set:Nn \parindent { \l__scripture_parindent_tl } + \peek_remove_spaces:n + { + \peek_analysis_map_inline:n + { + \bool_case:n + { + { \exp_args:No \token_if_letter_p:N { ##1 } } + { \__scripture_pilcrow_output: } + { \exp_args:No \token_if_active_p:N { ##1 } } + { \__scripture_pilcrow_output: } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \vs } + { \__scripture_set_pilcrow_hook: } + } + \peek_analysis_map_break:n { ##1 } + } + } + } +\cs_new_protected:Nn \__scripture_doendpe: + { + \box_gclear:N \g__scripture_post_env_indent_box + \legacy_if_set_true:n { @endpe } + \cs_set_nopar:Npn \par + { + \@restorepar + \clubpenalty \@clubpenalty + \everypar { } + \par + \legacy_if_set_false:n { @endpe } + \bool_gset_false:N \g__scripture_suppress_next_pilcrow_bool + \__scripture_para_par: + } + \everypar + { + \box_gset_to_last:N \g__scripture_post_env_indent_box + \hook_gput_next_code:nn { para / after } + { \box_gclear:N \g__scripture_post_env_indent_box } + \everypar { } + \legacy_if_set_false:n { @endpe } + \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool + \bool_if:NT \l__scripture_verse_para_bool + { + \box_set_wd:Nn + \g__scripture_post_env_indent_box + { \l__scripture_para_indent_tl } + } + } + } +\cs_new_protected:Nn \__scripture_fix_protrusion:n + { + \bool_if:NTF \l__scripture_compact_bool + { + \str_if_eq:VnT \l__scripture_currenvir_str { scripture } + { \cs_if_exist_use:N \leftprotrusion } + } + { \cs_if_exist_use:N \leftprotrusion } + #1 + } +\cs_generate_variant:Nn \__scripture_fix_protrusion:n { o } \bool_new:N \g__scripture_red_letter_active_bool \cs_new_protected:Nn \__scripture_red_letter_on: { @@ -493,6 +1149,7 @@ { \@ifpackageloaded { babel } { + \__scripture_set_textdirection: \selectlanguage { \l__scripture_language_tl } } { @@ -530,16 +1187,23 @@ \box_new:N \l__scripture_chap_tmp_box \dim_new:N \l__scripture_chap_fontsize_dim \dim_new:N \l__scripture_chap_height_dim -\dim_new:N \l__scripture_chap_width_dim +\dim_new:N \g__scripture_chap_width_dim \int_new:N \g__scripture_chap_par_prevgraf_int \dim_new:N \l__scripture_chap_X_height_dim +\dim_new:N \l__scripture_para_chap_indent_dim +\coffin_new:N \l__scripture_nodrop_chap_coffin +\dim_new:N \l__scripture_nodrop_chap_voffset_dim +\cs_new_protected:Nn \__scripture_get_X_height: + { + \hbox_set:Nn \l__scripture_chap_tmp_box { \l__scripture_X_char_tl } + \dim_set:Nn \l__scripture_chap_X_height_dim + { \box_ht:N \l__scripture_chap_tmp_box } + } \cs_new_protected:Nn \__scripture_drop_chap_set_up:n { \cs_gset_nopar:Npn \scripturecurrentchapter { #1 } \cs_gset_nopar:Npn \scripturecurrentverse { 1 } - \hbox_set:Nn \l__scripture_chap_tmp_box { X } - \dim_set:Nn \l__scripture_chap_X_height_dim - { \box_ht:N \l__scripture_chap_tmp_box } + \__scripture_get_X_height: \dim_set:Nn \l__scripture_chap_height_dim { \baselineskip + \l__scripture_chap_X_height_dim } \dim_set:Nn \l__scripture_chap_fontsize_dim @@ -560,31 +1224,44 @@ { \exp_args:NV \color_select:n \l__scripture_chapter_colour_tl } \__scripture_chap_format:n { #1 } } - \dim_set:Nn \l__scripture_chap_width_dim + \dim_gset:Nn \g__scripture_chap_width_dim { \box_wd:N \l__scripture_chap_tmp_box } \int_set_eq:NN \l__scripture_clubpenalty_saved_int \clubpenalty \clubpenalty 10000 - \hook_gput_next_code:nn { para / after } - { - \int_gset_eq:NN \g__scripture_chap_par_prevgraf_int \prevgraf - \int_compare:nNnT \g__scripture_chap_par_prevgraf_int = 1 - { \penalty 10000 } - \hook_gput_next_code:nn { para / before } - { \int_set_eq:NN \clubpenalty \l__scripture_clubpenalty_saved_int } - } + \bool_if:NF \l__scripture_verse_para_bool + { + \hook_gput_next_code:nn { para / after } + { + \int_gset_eq:NN \g__scripture_chap_par_prevgraf_int \prevgraf + \int_compare:nNnT \g__scripture_chap_par_prevgraf_int = 1 + { \penalty 10000 } + \hook_gput_next_code:nn { para / before } + { \int_set_eq:NN \clubpenalty \l__scripture_clubpenalty_saved_int } + } + } } \cs_new_protected:Nn \__scripture_drop_chap_output: { - \noindent + \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool + \cs_if_eq:NNTF \noindent \__scripture_para_noindent: + { + \legacy_if:nTF { @newlist } + { + \skip_horizontal:n { -\l__scripture_parindent_tl } + } + { \tex_noindent:D } + \__scripture_pilcrow_output: + } + { \noindent } \parshape 3 ~ \dim_eval:n - { \@totalleftmargin + \l__scripture_chap_width_dim + \l__scripture_chap_sep_tl } ~ + { \@totalleftmargin + \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } ~ \dim_eval:n - { \linewidth - \l__scripture_chap_width_dim - \l__scripture_chap_sep_tl } ~ + { \linewidth - \g__scripture_chap_width_dim - \l__scripture_chap_sep_tl } ~ \dim_eval:n - { \@totalleftmargin + \l__scripture_chap_width_dim + \l__scripture_chap_sep_tl } ~ + { \@totalleftmargin + \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } ~ \dim_eval:n - { \linewidth - \l__scripture_chap_width_dim - \l__scripture_chap_sep_tl } ~ + { \linewidth - \g__scripture_chap_width_dim - \l__scripture_chap_sep_tl } ~ \@totalleftmargin ~ \linewidth \group_begin: @@ -594,27 +1271,76 @@ \group_end: \bool_if:NT \l__scripture_chap_show_verse_bool { \__scripture_verse_output:n { 1 } } + \bool_if:NT \l__scripture_verse_para_bool + { + \hook_gput_next_code:nn { para / after } + { + \int_gset_eq:NN \g__scripture_chap_par_prevgraf_int \prevgraf + \int_compare:nNnT \g__scripture_chap_par_prevgraf_int = 1 + { \penalty 10000 } + \hook_gput_next_code:nn { para / before } + { \int_set_eq:NN \clubpenalty \l__scripture_clubpenalty_saved_int } + } + } + \hook_gclear_next_code:n { scripture / pilcrow } } \cs_new_protected:Nn \__scripture_nodrop_chap:n { \cs_gset_nopar:Npn \scripturecurrentchapter { #1 } \cs_gset_nopar:Npn \scripturecurrentverse { 1 } \group_begin: + \bool_if:NT \l__scripture_verse_para_bool + { + \legacy_if:nF { @newlist } + { \mode_if_vertical:F \para_end: } + } \bool_if:NTF \l__scripture_chap_show_bool { + \__scripture_get_X_height: + \hcoffin_set:Nn \l__scripture_nodrop_chap_coffin + { + \str_if_eq:VnF \l__scripture_chapter_colour_tl { . } + { \exp_args:NV \color_select:n \l__scripture_chapter_colour_tl } + \l__scripture_chap_font_tl + \__scripture_chap_format:n { #1 } + \kern \l__scripture_chap_sep_tl + } + \dim_zero:N \l__scripture_nodrop_chap_voffset_dim + \tl_if_eq:NnT \l__scripture_chapter_valign_tl { t } + { \dim_set_eq:NN \l__scripture_nodrop_chap_voffset_dim \l__scripture_chap_X_height_dim } + \tl_if_eq:NnT \l__scripture_chapter_valign_tl { vc } + { \dim_set:Nn \l__scripture_nodrop_chap_voffset_dim { 0.5 \l__scripture_chap_X_height_dim } } \hook_use:n { scripture / chap / before } - \group_begin: - \str_if_eq:VnF \l__scripture_chapter_colour_tl { . } - { \exp_args:NV \color_select:n \l__scripture_chapter_colour_tl } - \l__scripture_chap_font_tl - \__scripture_chap_format:n { #1 } - \group_end: - \skip_horizontal:N \l__scripture_chap_sep_tl + \bool_if:NTF \l__scripture_chap_smash_bool + { + \mode_leave_vertical: + \smash + { + \exp_args:NNoo + \coffin_typeset:Nnnnn \l__scripture_nodrop_chap_coffin + { \l__scripture_chapter_align_tl } + { \l__scripture_chapter_valign_tl } + { 0pt } + { \l__scripture_nodrop_chap_voffset_dim } + } + } + { + \exp_args:NNoo + \coffin_typeset:Nnnnn \l__scripture_nodrop_chap_coffin + { \l__scripture_chapter_align_tl } + { \l__scripture_chapter_valign_tl } + { 0pt } + { \l__scripture_nodrop_chap_voffset_dim } + } + \nobreak + \skip_horizontal:N \c_zero_skip \hook_use:n { scripture / chap / after } \bool_if:NT \l__scripture_chap_show_verse_bool { \__scripture_verse_output:n { 1 } } + \str_if_eq:VnF \l__scripture_currenvir_str { midparachap } + { \__scripture_pilcrow_output: } } { \hook_use:n { scripture / chap / before } @@ -622,6 +1348,87 @@ \vs { 1 } } \group_end: + \parshape 1 ~ \@totalleftmargin ~ \linewidth + \hook_gclear_next_code:n { scripture / pilcrow } + } +\cs_new_protected:Nn \__scripture_para_chap:n + { + \cs_gset_nopar:Npn \scripturecurrentchapter { #1 } + \cs_gset_nopar:Npn \scripturecurrentverse { 1 } + \group_begin: + \skip_zero:N \parskip + \bool_if:NTF \l__scripture_chap_show_bool + { + \dim_set_eq:NN \l__scripture_para_chap_indent_dim \linewidth + \str_if_eq:VnTF \l__scripture_currenvir_str { scripture } + { + \dim_set:Nn \l__scripture_para_chap_indent_dim { 0.5 \l__scripture_para_chap_indent_dim } + } + { + \dim_add:Nn \l__scripture_para_chap_indent_dim { \leftmargin + \rightmargin } + \dim_set:Nn \l__scripture_para_chap_indent_dim { 0.5 \l__scripture_para_chap_indent_dim } + \dim_sub:Nn \l__scripture_para_chap_indent_dim \leftmargin + } + \mode_if_vertical:F \para_end: + \addvspace { \l__scripture_chap_para_aboveskip_tl } + \bool_gset_eq:NN \g_tmpa_bool \g__scripture_suppress_next_pilcrow_bool + \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool + \str_if_eq:VnTF \l__scripture_currenvir_str { midparachap } + { \tex_noindent:D } + { \noindent } + \bool_gset_eq:NN \g__scripture_suppress_next_pilcrow_bool \g_tmpa_bool + \skip_horizontal:N \l__scripture_para_chap_indent_dim + \hbox_overlap_center:n + { + \hook_use:n { scripture / chap / before } + \group_begin: + \str_if_eq:VnF \l__scripture_chapter_colour_tl { . } + { \exp_args:NV \color_select:n \l__scripture_chapter_colour_tl } + \l__scripture_chap_font_tl + \__scripture_chap_format:n { #1 } + \group_end: + \hook_use:n { scripture / chap / after } + } + \para_end: + \nobreak + \bool_lazy_any:nTF + { + { \str_if_eq_p:Vn \l__scripture_currenvir_str { scripture } } + { \str_if_eq_p:Vn \l__scripture_currenvir_str { midparachap } } + { \str_if_eq_p:Vn \l__scripture_currenvir_str { narrow } } + } + { \legacy_if_set:nn { @afterindent } { \l__scripture_chap_para_afterindent_bool } } + { \legacy_if_set_true:n { @afterindent } } + \@afterheading + } + { + \hook_use:n { scripture / chap / before } + \hook_use:n { scripture / chap / after } + } + \peek_meaning:NTF \c_space_token + { + \addvspace { \l__scripture_chap_para_belowskip_tl } + \group_end: + \hook_use:n { scripture / poetry / pilcrow } + } + { + \addvspace { \l__scripture_chap_para_belowskip_tl } + \cs_if_eq:NNTF \vs \__scripture_poetry_mode_vertical_verse:n + { + \bool_gset_eq:NN \g_tmpa_bool \g__scripture_suppress_next_pilcrow_bool + \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool + \noindent + \vs { 1 } + \bool_gset_eq:NN \g__scripture_suppress_next_pilcrow_bool \g_tmpa_bool + } + { + \str_if_eq:VnT \l__scripture_currenvir_str { midparachap } + { \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool } + \vs { 1 } + } + \group_end: + \hook_use:n { scripture / poetry / pilcrow } + } } \cs_new_protected:Nn \__scripture_chap:n { @@ -643,15 +1450,29 @@ \bool_if:NTF \l__scripture_mid_para_chap_bool { \__scripture_mid_para_drop_chap_output: } { - \par + \para_end: \__scripture_drop_chap_output: + \str_if_eq:VnF \l__scripture_currenvir_str { midparachap } + { \__scripture_pilcrow_output: } } \hook_gput_next_code:nn { para / before } { \legacy_if:nF { @newlist } { \int_compare:nNnT \g__scripture_chap_par_prevgraf_int = 1 - { \extraskip } + { + \dim_compare:nNnT \parskip < \baselineskip + { + \dim_compare:nNnT { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } > \parindent + { + \hook_gput_next_code:nn { para / begin } + { + \para_omit_indent: + \skip_horizontal:n {\g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } + } + } + } + } \int_gzero:N \g__scripture_chap_par_prevgraf_int } \parshape 1 ~ \@totalleftmargin ~ \linewidth @@ -659,6 +1480,7 @@ } \bool_new:N \l__scripture_verse_par_start_bool \bool_new:N \l__scripture_no_verse_first_bool +\bool_new:N \g__scripture_suppress_next_verse_para_bool \cs_new_protected:Nn \__scripture_verse_output:n { \cs_gset_nopar:Npn \scripturecurrentverse { #1 } @@ -674,6 +1496,11 @@ \bool_set_false:N \l__scripture_no_verse_first_bool } \group_begin: + \bool_if:NT \l__scripture_verse_para_bool + { + \box_if_empty:NF \g__scripture_post_env_indent_box + { \box_use_drop:N \g__scripture_post_env_indent_box } + } \hook_use:n { scripture / verse / before } \bool_if:NT \l__scripture_verse_show_bool { @@ -697,10 +1524,87 @@ \group_end: \kern \l__scripture_verse_sep_tl } + \nobreak + \skip_horizontal:N \c_zero_skip } \hook_use:n { scripture / verse / after } + \hook_use:n { scripture / pilcrow } \group_end: } +\cs_new_protected:Nn \__scripture_verse_compact_output:n + { + \mode_if_vertical:T + { \__scripture_set_pilcrow_hook: } + \__scripture_verse_output:n { #1 } + } +\cs_new_protected:Nn \__scripture_verse_para_output:n + { + \mode_if_vertical:T + { \__scripture_set_pilcrow_hook: } + \hook_if_empty:nT { scripture / pilcrow } + { \dim_set:Nn \parindent \l__scripture_para_indent_tl } + \bool_if:NTF \g__scripture_suppress_next_verse_para_bool + { \bool_gset_false:N \g__scripture_suppress_next_verse_para_bool } + { + \legacy_if:nF { @newlist } + { + \mode_if_vertical:F + { + \para_end: + \parshape 1 ~ \@totalleftmargin ~ \linewidth + } + } + } + \__scripture_verse_output:n { #1 } + } +\cs_new_protected:Nn \__scripture_hanging_verse_para:n + { + \mode_if_vertical:T + { \__scripture_set_pilcrow_hook: } + \bool_if:NF \g__scripture_suppress_next_verse_para_bool + { + \legacy_if:nF { @newlist } + { + \mode_if_vertical:F + { + \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool + \hook_gput_next_code:nn { para / begin } + { \parshape 1 ~ \@totalleftmargin ~ \linewidth } + \par + \tex_noindent:D + } + } + } + \bool_gset_false:N \g__scripture_suppress_next_verse_para_bool + \__scripture_hanging_verse:n { #1 } + } +\bool_new:N \g__scripture_suppress_next_pilcrow_bool +\cs_new_protected:Nn \__scripture_set_pilcrow_hook: + { + \hook_if_empty:nT { scripture / pilcrow } + { + \hook_gput_next_code:nn { scripture / pilcrow } { \__scripture_pilcrow_output: } + } + } +\cs_new_protected:Nn \__scripture_pilcrow_output: + { + \bool_gset_false:N \g__scripture_para_mode_vertical_bool + \bool_gset_false:N \g__scripture_mode_vertical_inner_bool + \bool_if:NT \l__scripture_pilcrow_bool + { + \bool_lazy_or:nnT \l__scripture_verse_para_bool \l__scripture_compact_bool + { + \bool_if:NTF \g__scripture_suppress_next_pilcrow_bool + { \bool_gset_false:N \g__scripture_suppress_next_pilcrow_bool } + { + \P + \kern \l__scripture_pilcrow_sep_tl + \nobreak + \skip_horizontal:N \c_zero_skip + } + } + } + } \dim_new:N \g__scripture_final_line_dim \cs_new_protected:Nn \__scripture_calc_final_line_length: { @@ -709,25 +1613,35 @@ \skip_zero:N \belowdisplayshortskip \skip_zero:N \belowdisplayskip $$ - \dim_compare:nNnT \predisplaysize > \c_zero_dim + \hook_use:n { para / after } + \dim_compare:nNnTF \predisplaysize > \c_zero_dim { \dim_gset:Nn \g__scripture_final_line_dim - { \predisplaysize - 2 em } + { \predisplaysize - 2em } + } + { + \bool_if:NT \l__scripture_textdir_change_in_group_bool + { + \str_if_eq:VnT \l__scripture_currenvir_str { scripture } + { \int_set:Nn \prevgraf { \int_use:N \prevgraf - 1 } } + } } \cs_gset_nopar:Nx \__scripture_reset_spacing: { \dim_set:Nn \predisplaysize { \dim_use:N \predisplaysize } \int_set:Nn \prevgraf { \int_use:N \prevgraf } + \int_gset:Nn \g__scripture_chap_par_prevgraf_int { \int_use:N \g__scripture_chap_par_prevgraf_int } } $$ \__scripture_reset_spacing: \dim_compare:nNnT \g__scripture_final_line_dim > \paperwidth { \dim_gset:Nn \g__scripture_final_line_dim { \@totalleftmargin + \linewidth } } - \dim_compare:nNnT \g__scripture_final_line_dim > { \c_zero_dim - 1 sp } + \dim_compare:nNnT \g__scripture_final_line_dim > { \c_zero_dim - 1sp } { \skip_vertical:n { -\baselineskip - \parskip } } } \str_new:N \l__scripture_currenvir_str \skip_new:N \l__scripture_parskip_correction_skip +\tl_new:N \l__scripture_ref_tl \cs_new_protected_nopar:Nn \__scripture_added:n { \group_begin: @@ -735,6 +1649,52 @@ \__scripture_added_format:n { #1 } \group_end: } +\cs_new_protected_nopar:Nn \__scripture_heading:n + { + \str_if_eq:VnTF \l__scripture_currenvir_str { scripture } + { + \bool_if:NTF \l__scripture_heading_show_bool + { + \parshape 1 ~ \@totalleftmargin ~ \linewidth + \group_begin: + \bool_set_false:N \l__scripture_pilcrow_bool + \legacy_if:nTF { @newlist } + { + \skip_horizontal:n { -\parindent } + } + { + \__scripture_list_para_end: + \addvspace { \l__scripture_heading_aboveskip_tl } + \tex_noindent:D + } + \l__scripture_heading_align_tl + \l__scripture_heading_font_tl + \__scripture_heading_format:n { #1 } + \__scripture_list_para_end: + \group_end: + \bool_if:NTF \l__scripture_verse_para_bool + { + \cs_set_eq:NN \noindent \__scripture_para_noindent: + } + { + \cs_set_eq:NN \noindent \tex_noindent:D + } + \legacy_if_set:nn { @afterindent } \l__scripture_heading_afterindent_bool + \bool_if:NF \l__scripture_heading_afterindent_bool + { + \hook_gput_next_code:nn { para / before } + { \para_omit_indent: } + } + \nobreak + \@afterheading + \addvspace { \l__scripture_heading_belowskip_tl } + } + { \ignorespaces } + } + { + \msg_error:nnx { scripture } { heading-error } { \l__scripture_currenvir_str } + } + } \cs_new_protected_nopar:Nn \__scripture_name:n { \group_begin: @@ -753,7 +1713,9 @@ \bool_if:NTF \l__scripture_chap_drop_bool { \__scripture_chap:n { #2 } - \bool_if:nTF { #1 } + \bool_lazy_and:nnTF + { #1 } + { \bool_not_p:n { \l__scripture_compact_bool } } { \hook_gput_next_code:nn { para / after } { @@ -766,11 +1728,19 @@ { \int_gset_eq:NN \g__scripture_mid_para_chap_prevgraf_int \prevgraf } } } + { + \bool_if:NTF \l__scripture_chap_para_bool + { \__scripture_para_chap:n { #2 } } + { \__scripture_nodrop_chap:n { #2 } } + } + } + { + \bool_if:NTF \l__scripture_chap_para_bool + { \__scripture_para_chap:n { #2 } } { \__scripture_nodrop_chap:n { #2 } } } - { \__scripture_nodrop_chap:n { #2 } } } -\cs_new_protected:Nn \__scripture_begin:n +\cs_new_protected:Nn \__scripture_begin:nn { \cs_set_eq:NN \__scripture_noindent_saved: \noindent \bool_if:NT \l__scripture_active_bool @@ -778,11 +1748,14 @@ \msg_error:nn { scripture } { nested-environment } } \bool_set_true:N \l__scripture_active_bool - \tl_set:Nn \l__scripture_currenvir_str { scripture } \tl_if_novalue:nF { #1 } + { \tl_set:Nn \l__scripture_ref_tl { #1 } } + \str_set:Nn \l__scripture_currenvir_str { scripture } + \tl_if_novalue:nF { #2 } { - \keys_set:nn { scripture } { #1 } + \keys_set:nn { scripture } { #2 } } + \l__scripture_before_tl \__scripture_select_language: \int_gzero:N \g__scripture_chap_par_prevgraf_int \everydisplay { } @@ -794,10 +1767,25 @@ \cs_set_eq:NN \extraskip \__scripture_extra_skip: \cs_set_eq:NN \redletteron \__scripture_red_letter_on: \cs_set_eq:NN \redletteroff \__scripture_red_letter_off: - \DeclareDocumentCommand { \ch } { sm } - { \__scripture_ch_output:nn { ##1 } { ##2 } } + \cs_set:Npn \nopilcrow { \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool } + \bool_gset_false:N \g__scripture_suppress_next_pilcrow_bool + \bool_gset_false:N \g__scripture_suppress_next_verse_para_bool + \bool_gset_false:N \g__scripture_mode_vertical_inner_bool + \box_gclear:N \g__scripture_post_env_indent_box + \skip_gzero:N \g__scripture_prev_inner_below_skip + \bool_if:NT \l__scripture_chap_para_bool + { \bool_set_false:N \l__scripture_chap_drop_bool } + \DeclareDocumentCommand { \ch } { s o m } + { + \tl_if_novalue:nF { ##2 } + { + \tl_set:Nn \l__scripture_X_char_tl { ##2 } + } + \__scripture_ch_output:nn { ##1 } { ##3 } + } \cs_set_eq:NN \vs \__scripture_verse_output:n \cs_set_eq:NN \added \__scripture_added:n + \cs_set_eq:NN \heading \__scripture_heading:n \cs_set_eq:NN \name \__scripture_name:n \cs_set_protected_nopar:Npn \LORD { \name { Lord } } \cs_set_protected_nopar:Npn \GOD { \name { God } } @@ -805,7 +1793,10 @@ \cs_set_protected_nopar:Npn \textright ##1 { \__scripture_text_right:nn { \l__scripture_text_right_sep_tl } { ##1 } } \hook_gclear_next_code:n { para / before } + \hook_gclear_next_code:n { scripture / pilcow } + \hook_gclear_next_code:n { scripture / poetry / pilcow } \l__scripture_font_tl + \tl_set:Ne \l__scripture_parindent_tl { \dim_eval:n { \l__scripture_parindent_tl } } \exp_args:NnV \color_set:nn { scripture default colour } \l__scripture_colour_tl \str_if_eq:VnF \l__scripture_colour_tl { . } { \color_select:n { scripture default colour } } @@ -831,45 +1822,61 @@ { \hook_gput_next_code:nn { para / begin } { - \bool_lazy_any:nT + \bool_if:NTF \l__scripture_compact_bool + { \para_omit_indent: } { - { \str_if_eq_p:Vn \l__scripture_currenvir_str { midparachap } } - { \str_if_eq_p:Vn \l__scripture_currenvir_str { narrow } } - { \str_if_eq_p:Vn \l__scripture_currenvir_str { scripture } } - } - { - \legacy_if:nTF { @noparlist } - { \noindent } - { \para_omit_indent: } + \bool_lazy_any:nT + { + { \str_if_eq_p:Vn \l__scripture_currenvir_str { midparachap } } + { \str_if_eq_p:Vn \l__scripture_currenvir_str { narrow } } + { \str_if_eq_p:Vn \l__scripture_currenvir_str { scripture } } + } + { + \legacy_if:nTF { @noparlist } + { + \bool_lazy_and:nnF + { \str_if_eq_p:Vn \l__scripture_currenvir_str { narrow } } + { \str_if_eq_p:Vn \l__scripture_ref_position_tl { start } } + { \noindent } + } + { \para_omit_indent: } + } } } } } - \dim_set_eq:NN \parindent \l__scripture_parindent_tl + \cs_set_eq:NN \__scripture_list_para_end: \@par \item \relax } } -\cs_new_protected:Nn \__scripture_end:n +\cs_new_protected:Nn \__scripture_end: { + \tl_if_eq:NnT \l__scripture_ref_position_tl { start } + { + \tl_clear:N \l__scripture_ref_tl + \tl_if_eq:NnT \l__scripture_version_position_tl { withref } + { \tl_clear:N \l__scripture_version_tl } + } + \cs_set_eq:NN \noindent \tex_noindent:D \bool_if:NTF \l__scripture_inline_bool { \unskip \__scripture_red_letter_off: \l__scripture_inline_end_tl \bool_lazy_or:nnTF - { \tl_if_novalue_p:n { #1 } } - { \tl_if_empty_p:n { #1 } } + { \tl_if_novalue_p:n \l__scripture_ref_tl } + { \tl_if_empty_p:N \l__scripture_ref_tl } { \tl_if_empty:NF \l__scripture_version_tl { \skip_horizontal:N \l__scripture_ref_sep_tl - \__scripture_format_full_ref:n { } + \__scripture_format_full_ref:nn { } \l__scripture_version_tl } } { \skip_horizontal:N \l__scripture_ref_sep_tl - \__scripture_format_full_ref:n { #1 } + \__scripture_format_full_ref:nn \l__scripture_ref_tl \l__scripture_version_tl } } { @@ -882,23 +1889,85 @@ { \skip_zero:N \@topsepadd } { \skip_set:Nn \@topsepadd { \__scripture_skip_diff:NN \l__scripture_belowskip_tl \@outerparskip } } \int_compare:nNnT \prevgraf = \c_zero_int - { \skip_vertical:n { -\g__scripture_prev_inner_below_skip } } + { + \bool_if:NT \l__scripture_textdir_change_in_group_bool + { \skip_vertical:n { -\baselineskip } } + \skip_vertical:n { -\g__scripture_prev_inner_below_skip } + } \hook_gclear_next_code:n { para / before } - \parshape 1 ~ \@totalleftmargin ~ \linewidth \noindent \bool_lazy_or:nnTF - { \tl_if_novalue_p:n { #1 } } - { \tl_if_empty_p:n { #1 } } + { \tl_if_novalue_p:n \l__scripture_ref_tl } + { \tl_if_empty_p:N \l__scripture_ref_tl } { \tl_if_empty:NTF \l__scripture_version_tl { \hbox:n { } } { \__scripture_reference:n { } } } - { \__scripture_reference:n { #1 } } - \@noparlistfalse + { \__scripture_reference:n \l__scripture_ref_tl } + \parshape 1 ~ \@totalleftmargin ~ \linewidth + \legacy_if_set_false:n { @noparlist } \endlist } \cs_set_eq:NN \noindent \__scripture_noindent_saved: + \l__scripture_after_tl + } +\cs_new_protected:Nn \__scripture_compact_end_inner: + { + \bool_gset_false:N \g__scripture_mode_vertical_inner_bool + \str_if_eq:VnT \l__scripture_ref_position_tl { start } + { + \tl_gclear:N \l__scripture_ref_tl + } + \bool_lazy_and:nnT \l__scripture_verse_para_bool \l__scripture_chap_drop_bool + { + \cs_set_eq:NN \par \para_end: + \__scripture_calc_final_line_length: + \int_gset_eq:NN \g__scripture_mid_para_chap_prevgraf_int \g__scripture_chap_par_prevgraf_int + \tex_noindent:D + \bool_lazy_and:nnTF + { \bool_if_p:N \l__scripture_compact_bool } + { \int_compare_p:nNn \g__scripture_mid_para_chap_prevgraf_int = 1 } + { + \hook_gput_next_code:nn { env / \l__scripture_currenvir_str / after } + { + \parshape 3 ~ + \@totalleftmargin ~ \linewidth ~ + \dim_eval:n + { \@totalleftmargin + \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } ~ + \dim_eval:n + { \linewidth - \g__scripture_chap_width_dim - \l__scripture_chap_sep_tl } ~ + \@totalleftmargin ~ \linewidth + } + \hbox_to_wd:nn { \g__scripture_final_line_dim - \g__scripture_chap_width_dim - \l__scripture_chap_sep_tl } { } + } + { + \hbox_to_wd:nn \g__scripture_final_line_dim { } + } + \c_space_token + \kern 0pt + \cs_set_eq:NN \par \relax + \hook_gput_next_code:nn { para / before } + { + \int_compare:nNnT \g__scripture_mid_para_chap_prevgraf_int = 1 + { + \dim_compare:nNnT \parskip < \baselineskip + { + \dim_compare:nNnT { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } > \parindent + { + \hook_gput_next_code:nn { para / begin } + { + \para_omit_indent: + \skip_horizontal:n {\g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } + } + } + } + } + \int_gzero:N \g__scripture_chap_par_prevgraf_int + \parshape 1 ~ \@totalleftmargin ~ \linewidth + } + } + \unskip } \cs_new_protected:Nn \__scripture_center_begin:n { @@ -907,7 +1976,7 @@ \msg_error:nn { scripture } { nested-environment } } \bool_set_true:N \l__scripture_active_inner_bool - \tl_set:Nn \l__scripture_currenvir_str { center } + \str_set:Nn \l__scripture_currenvir_str { center } \tl_if_novalue:nF { #1 } { \keys_set:nn @@ -917,8 +1986,13 @@ \legacy_if:nTF { @newlist } { \dim_add:Nn \l__scripture_outer_itemindent_dim \itemindent } { \dim_zero:N \l__scripture_outer_itemindent_dim } + \cs_set_eq:NN \par \para_end: \list { } { + \bool_lazy_or:nnF + { \mode_if_vertical_p: } + { \g__scripture_para_mode_vertical_bool } + { \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool } \dim_zero:N \labelsep \dim_set_eq:NN \leftmargin \l__scripture_center_leftmargin_tl \dim_set_eq:NN \rightmargin \l__scripture_center_rightmargin_tl @@ -935,11 +2009,22 @@ { \addvspace { \baselineskip } } \int_gzero:N \g__scripture_chap_par_prevgraf_int \centering + \bool_if:NT \l__scripture_verse_para_bool + { + \cs_set_eq:NN \par \__scripture_para_par: + \cs_set_protected:Npn \\ + { + \mode_if_horizontal:TF + { \unskip } + { \@nolnerr } + } + } \item \relax } \cs_new_protected:Nn \__scripture_center_end: { + \cs_set_eq:NN \par \para_end: \dim_gset:Nn \g__scripture_final_line_dim { \@totalleftmargin + \linewidth } \dim_compare:nNnTF \@outerparskip > \l__scripture_center_belowskip_tl { \skip_zero:N \@topsepadd } @@ -947,6 +2032,7 @@ \skip_gset_eq:NN \g__scripture_prev_inner_below_skip \@topsepadd \legacy_if_set_false:n { @noparlist } \endlist + \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool } \cs_new_protected:Nn \__scripture_flushright_begin:n { @@ -955,7 +2041,7 @@ \msg_error:nn { scripture } { nested-environment } } \bool_set_true:N \l__scripture_active_inner_bool - \tl_set:Nn \l__scripture_currenvir_str { flushright } + \str_set:Nn \l__scripture_currenvir_str { flushright } \tl_if_novalue:nF { #1 } { \keys_set:nn @@ -965,8 +2051,13 @@ \legacy_if:nTF { @newlist } { \dim_add:Nn \l__scripture_outer_itemindent_dim \itemindent } { \dim_zero:N \l__scripture_outer_itemindent_dim } + \cs_set_eq:NN \par \para_end: \list { } { + \bool_lazy_or:nnF + { \mode_if_vertical_p: } + { \g__scripture_para_mode_vertical_bool } + { \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool } \dim_zero:N \labelsep \dim_set_eq:NN \leftmargin \l__scripture_flushright_leftmargin_tl \dim_set_eq:NN \rightmargin \l__scripture_flushright_rightmargin_tl @@ -983,11 +2074,22 @@ { \addvspace { \baselineskip } } \int_gzero:N \g__scripture_chap_par_prevgraf_int \raggedleft + \bool_if:NT \l__scripture_verse_para_bool + { + \cs_set_eq:NN \par \__scripture_para_par: + \cs_set_protected:Npn \\ + { + \mode_if_horizontal:TF + { \unskip } + { \@nolnerr } + } + } \item \relax } \cs_new_protected:Nn \__scripture_flushright_end: { + \cs_set_eq:NN \par \para_end: \dim_gset:Nn \g__scripture_final_line_dim { \@totalleftmargin + \linewidth } \dim_compare:nNnTF \@outerparskip > \l__scripture_flushright_belowskip_tl { \skip_zero:N \@topsepadd } @@ -995,62 +2097,105 @@ \skip_gset_eq:NN \g__scripture_prev_inner_below_skip \@topsepadd \legacy_if_set_false:n { @noparlist } \endlist + \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool } \dim_new:N \l__scripture_hanging_parindent_saved_dim \cs_new_protected:Nn \__scripture_hanging_ch:n { + \bool_gset_false:N \g__scripture_suppress_next_pilcrow_bool \bool_if:NTF \l__scripture_chap_show_bool { \bool_if:NTF \l__scripture_chap_drop_bool { \__scripture_hanging_chap:n { #1 } } + { + \bool_if:NTF \l__scripture_chap_para_bool + { \__scripture_para_chap:n { #1 } } + { \__scripture_nodrop_chap:n { #1 } } + } + } + { + \bool_if:NTF \l__scripture_chap_para_bool + { \__scripture_para_chap:n { #1 } } { \__scripture_nodrop_chap:n { #1 } } } - { \__scripture_nodrop_chap:n { #1 } } } \cs_new_protected:Nn \__scripture_hanging_chap:n { \__scripture_drop_chap_set_up:n { #1 } \dim_compare:nNnTF - \l__scripture_chap_width_dim < \leftmargin + { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } < \leftmargin { - \tl_set:Nx \l__scripture_chap_sep_tl + \bool_if:NT \l__scripture_hanging_chapter_indent_bool { - \dim_eval:n { \leftmargin - \l__scripture_chap_width_dim } + \tl_set:Nx \l__scripture_chap_sep_tl + { + \dim_eval:n { \leftmargin - \g__scripture_chap_width_dim } + } } } { \parshape 3 ~ \dim_eval:n { - \@totalleftmargin - \leftmargin + \l__scripture_chap_width_dim + + \@totalleftmargin - \leftmargin + \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } ~ \dim_eval:n { - \linewidth + \leftmargin - \l__scripture_chap_width_dim - + \linewidth + \leftmargin - \g__scripture_chap_width_dim - \l__scripture_chap_sep_tl } ~ \dim_eval:n { - \@totalleftmargin - \leftmargin + \l__scripture_chap_width_dim + + \@totalleftmargin - \leftmargin + \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } ~ \dim_eval:n { - \linewidth + \leftmargin - \l__scripture_chap_width_dim - + \linewidth + \leftmargin - \g__scripture_chap_width_dim - \l__scripture_chap_sep_tl } ~ \@totalleftmargin ~ \linewidth } - \tl_set:Nx \l__scripture_chap_sep_tl + \par + \bool_if:NTF \l__scripture_hanging_chapter_indent_bool { - \dim_eval:n + \tl_set:Nx \l__scripture_chap_sep_tl { - \l__scripture_chap_sep_tl + \l__scripture_hanging_parindent_saved_dim + \dim_eval:n + { + \l__scripture_chap_sep_tl + \l__scripture_hanging_parindent_saved_dim + } + } + \__scripture_nohang: + } + { + \mode_leave_vertical: + \dim_compare:nNnTF + { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } > \l__scripture_hanging_leftmargin_tl + { + \dim_compare:nNnTF + { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } > \leftmargin + { + \skip_horizontal:n { \l__scripture_hanging_hang_tl } + } + { + \skip_horizontal:n + { + \l__scripture_chap_sep_tl + + \g__scripture_chap_width_dim - + \l__scripture_hanging_leftmargin_tl + } + } + } + { + \tl_set:Nx \l__scripture_chap_sep_tl + { + \dim_eval:n + { \l__scripture_hanging_leftmargin_tl - \g__scripture_chap_width_dim } + } } } - \par - \__scripture_nohang: \hbox_set:Nn \l__scripture_chap_box { \box_move_down:nn @@ -1074,25 +2219,114 @@ { \__scripture_verse_output:n { 1 } } + \__scripture_pilcrow_output: + \bool_if:NT \l__scripture_verse_para_bool + { + \hook_gput_next_code:nn { para / after } + { + \int_gset_eq:NN \g__scripture_chap_par_prevgraf_int \prevgraf + \int_compare:nNnT \g__scripture_chap_par_prevgraf_int = 1 + { \penalty 10000 } + \hook_gput_next_code:nn { para / before } + { + \int_set_eq:NN \clubpenalty \l__scripture_clubpenalty_saved_int + } + } + } \hook_gput_next_code:nn { para / begin } - { \parshape 1 ~ \@totalleftmargin ~ \linewidth } + { + \int_compare:nNnTF \g__scripture_chap_par_prevgraf_int = \c_one_int + { + \dim_compare:nNnTF + { \l__scripture_hanging_leftmargin_tl } < { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } + { + \parshape 2 ~ + \dim_eval:n + { + \@totalleftmargin - \leftmargin + \g__scripture_chap_width_dim + + \l__scripture_chap_sep_tl + } ~ + \dim_eval:n + { + \linewidth + \leftmargin - \g__scripture_chap_width_dim - + \l__scripture_chap_sep_tl + } ~ + \@totalleftmargin ~ \linewidth + } + { \parshape 1 ~ \@totalleftmargin ~ \linewidth } + \hook_gput_next_code:nn { para / begin } + { \parshape 1 ~ \@totalleftmargin ~ \linewidth } + } + { \parshape 1 ~ \@totalleftmargin ~ \linewidth } + \int_gzero:N \g__scripture_chap_par_prevgraf_int + } } \cs_new_protected:Nn \__scripture_hanging_verse:n { \mode_if_vertical:TF { - \strut - \hbox_overlap_left:n + \tl_set_eq:NN \l_tmpa_tl \l__scripture_verse_sep_tl + \tl_set_eq:NN \l__scripture_verse_sep_tl \l__scripture_hanging_verse_sep_tl + \bool_lazy_and:nnTF + { \legacy_if_p:n { @newlist } } + { \g__scripture_suppress_next_pilcrow_bool } + { + \strut + \bool_if:NTF \l__scripture_hanging_verse_right_bool + { + \hbox_overlap_left:n + { + \__scripture_verse_output:n { #1 } + } + } + { + \hbox_overlap_left:n + { + \hbox_overlap_right:n + { + \__scripture_verse_output:n { #1 } + } + \skip_horizontal:N \l__scripture_hanging_leftmargin_tl + } + } + } { - \__scripture_verse_output:n { #1 } + \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool + \strut + \bool_if:NTF \l__scripture_hanging_verse_right_bool + { + \hbox_overlap_left:n + { + \__scripture_verse_output:n { #1 } + } + } + { + \hbox_overlap_left:n + { + \hbox_overlap_right:n + { + \__scripture_verse_output:n { #1 } + } + \skip_horizontal:N \l__scripture_hanging_leftmargin_tl + } + } + \__scripture_pilcrow_output: } + \tl_set_eq:NN \l__scripture_verse_sep_tl \l_tmpa_tl } { \__scripture_verse_output:n { #1 } } } \cs_new_protected_nopar:Nn \__scripture_nohang: { - \noindent + \legacy_if:nTF {@newlist} + { \skip_horizontal:n { \l__scripture_hanging_hang_tl } } + { \tex_noindent:D } \hbox_to_wd:nn { \l__scripture_hanging_parindent_saved_dim } { } + \peek_meaning:NT \vs + { + \bool_gset_true:N \g__scripture_suppress_next_verse_para_bool + \__scripture_set_pilcrow_hook: + } } \cs_new_protected:Nn \__scripture_hanging_begin:n { @@ -1101,22 +2335,37 @@ \msg_error:nn { scripture } { nested-environment } } \bool_set_true:N \l__scripture_active_inner_bool - \tl_set:Nn \l__scripture_currenvir_str { hanging } + \str_set:Nn \l__scripture_currenvir_str { hanging } \tl_if_novalue:nF { #1 } { \keys_set:nn { scripture / hanging } { #1 } } - \DeclareDocumentCommand { \ch } { sm } { \__scripture_hanging_ch:n { ##2 } } - \cs_set_eq:NN \vs \__scripture_hanging_verse:n + \DeclareDocumentCommand { \ch } { s o m } + { + \tl_if_novalue:nF { ##2 } + { + \tl_set:Nn \l__scripture_X_char_tl { ##2 } + } + \__scripture_hanging_ch:n { ##3 } + } + \bool_if:NTF \l__scripture_verse_para_bool + { \cs_set_eq:NN \vs \__scripture_hanging_verse_para:n } + { \cs_set_eq:NN \vs \__scripture_hanging_verse:n } \cs_set_eq:NN \nohang \__scripture_nohang: \dim_set_eq:NN \l__scripture_hanging_parindent_saved_dim \parindent \legacy_if:nTF { @newlist } { \dim_add:Nn \l__scripture_outer_itemindent_dim \itemindent } { \dim_zero:N \l__scripture_outer_itemindent_dim } + \cs_set_eq:NN \par \para_end: + \hook_gclear_next_code:n { para/ before } \list { } { + \bool_lazy_or:nnF + { \mode_if_vertical_p: } + { \g__scripture_para_mode_vertical_bool } + { \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool } \dim_zero:N \labelsep \dim_set:Nn \leftmargin { \l__scripture_hanging_leftmargin_tl + \l__scripture_hanging_hang_tl } \dim_set_eq:NN \rightmargin \l__scripture_hanging_rightmargin_tl @@ -1144,6 +2393,7 @@ \skip_gset_eq:NN \g__scripture_prev_inner_below_skip \@topsepadd \legacy_if_set_false:n { @noparlist } \endlist + \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool } \cs_new_protected:Npn \__scripture_vbox_set_top:Nw #1 { @@ -1158,6 +2408,27 @@ \int_new:N \g__scripture_mid_para_chap_prevgraf_int \box_new:N \l__scripture_mid_para_chap_snap_box \int_new:N \l__scripture_mid_para_chap_spacefactor_int +\cs_set_eq:Nc \__scripture_mid_para_chap_end_orig:n { end ~ } +\cs_new_nopar:Nn \__scripture_mid_para_chap_end:n + { + \__scripture_mid_para_chap_end_orig:n { #1 } + \bool_if:NT \l__scripture_compact_bool + { \c_space_token } + \peek_remove_spaces:n + { + \peek_analysis_map_inline:n + { + \bool_case:n + { + { \exp_args:No \token_if_letter_p:N { ##1 } } + { \__scripture_pilcrow_output: } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \vs } + { \__scripture_set_pilcrow_hook: } + } + \peek_analysis_map_break:n { ##1 } + } + } + } \box_new:N \l__scripture_mid_para_chap_box \box_new:N \l__scripture_mid_para_chap_split_box \box_new:N \l__scripture_mid_para_chap_split_top_box @@ -1179,11 +2450,11 @@ \dim_compare:nNnTF { \box_wd:N \l__scripture_mid_para_chap_snap_box + - \l__scripture_chap_width_dim + + \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } < - { \linewidth - \leftskip - \rightskip - 3 em } + { \linewidth - \leftskip - \rightskip - 3em } { \__scripture_drop_chap_output: \hbox_unpack_drop:N \l__scripture_mid_para_chap_snap_box @@ -1208,16 +2479,14 @@ } \cs_new_protected:Nn \__scripture_mid_para_chap_begin:n { - \tl_set:Nn \l__scripture_currenvir_str { midparachap } + \str_set:Nn \l__scripture_currenvir_str { midparachap } \tl_if_novalue:nF { #1 } { \keys_set:nn { scripture / midparachap } { #1 } } - \bool_lazy_and:nnT - { \bool_if_p:n \l__scripture_chap_show_verse_bool } - { \bool_if_p:n \l__scripture_chap_drop_bool } + \bool_lazy_and:nnT \l__scripture_chap_show_verse_bool \l__scripture_chap_drop_bool { \bool_set_true:N \l__scripture_midparachap_show_verse_bool \bool_set_false:N \l__scripture_chap_show_verse_bool @@ -1252,8 +2521,8 @@ \prevgraf < 3 { \noindent - \skip_horizontal:n { \l__scripture_chap_width_dim + \l__scripture_chap_sep_tl } - \dim_gadd:Nn \g__scripture_final_line_dim { \l__scripture_chap_width_dim + \l__scripture_chap_sep_tl } + \skip_horizontal:n { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } + \dim_gadd:Nn \g__scripture_final_line_dim { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } } \box_use_drop:N \l__scripture_mid_para_chap_line_box \vbox_set_end: @@ -1293,7 +2562,24 @@ \int_gset_eq:NN \g__scripture_chap_par_prevgraf_int \g__scripture_mid_para_chap_prevgraf_int \hook_gput_next_code:nn { para / before } { - \int_gzero:N \g__scripture_chap_par_prevgraf_int + \legacy_if:nF { @newlist } + { + \int_compare:nNnT \g__scripture_chap_par_prevgraf_int = 1 + { + \dim_compare:nNnT \parskip < \baselineskip + { + \dim_compare:nNnT { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } > \parindent + { + \hook_gput_next_code:nn { para / begin } + { + \para_omit_indent: + \skip_horizontal:n {\g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } + } + } + } + } + \int_gzero:N \g__scripture_chap_par_prevgraf_int + } \parshape 1 ~ \@totalleftmargin ~ \linewidth } } @@ -1304,7 +2590,7 @@ \msg_error:nn { scripture } { nested-environment } } \bool_set_true:N \l__scripture_active_inner_bool - \tl_set:Nn \l__scripture_currenvir_str { narrow } + \str_set:Nn \l__scripture_currenvir_str { narrow } \tl_if_novalue:nF { #1 } { \keys_set:nn @@ -1314,21 +2600,22 @@ \legacy_if:nTF { @newlist } { \dim_add:Nn \l__scripture_outer_itemindent_dim \itemindent } { \dim_zero:N \l__scripture_outer_itemindent_dim } + \cs_set_eq:NN \par \para_end: \list { } { - %\int_compare:nNnT \g__scripture_chap_par_prevgraf_int = 1 - % { \addvspace { \baselineskip } } - %\int_gzero:N \g__scripture_chap_par_prevgraf_int \dim_zero:N \labelsep \dim_set_eq:NN \leftmargin \l__scripture_narrow_leftmargin_tl \dim_set_eq:NN \rightmargin \l__scripture_narrow_rightmargin_tl \dim_set_eq:NN \listparindent \parindent - \mode_if_vertical:TF + \bool_lazy_or:nnTF + { \mode_if_vertical_p: } + { \g__scripture_para_mode_vertical_bool } { \dim_set:Nn \itemindent { \parindent - \l__scripture_outer_itemindent_dim } \__scripture_setup_list_noindent:n { \parindent } } { + \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool \dim_set:Nn \itemindent { -\l__scripture_outer_itemindent_dim } \__scripture_setup_list_noindent:n { \c_zero_dim } } @@ -1341,11 +2628,14 @@ \int_compare:nNnT \g__scripture_chap_par_prevgraf_int = 1 { \addvspace { \baselineskip } } \int_gzero:N \g__scripture_chap_par_prevgraf_int + \bool_if:NT \l__scripture_verse_para_bool + { \cs_set_eq:NN \par \__scripture_para_par: } \item \relax } \cs_new_protected:Nn \__scripture_narrow_end: { + \cs_set_eq:NN \par \para_end: \__scripture_calc_final_line_length: \dim_compare:nNnTF \@outerparskip > \l__scripture_narrow_belowskip_tl { \skip_zero:N \@topsepadd } @@ -1353,29 +2643,15 @@ \skip_gset_eq:NN \g__scripture_prev_inner_below_skip \@topsepadd \legacy_if_set_false:n { @noparlist } \endlist + \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool } \hook_new:n { scripture / poetry / para / after } \bool_new:N \g__scripture_poetry_end_bool -\bool_new:N \g__scripture_poetry_midparachap_show_verse_bool +\bool_new:N \l__scripture_poetry_midparachap_show_verse_bool \dim_new:N \l__scripture_poetry_chap_indent_dim \dim_new:N \l__scripture_poetry_chap_sep_dim \dim_new:N \l__scripture_poetry_chap_parshape_correction_dim \int_new:N \l__scripture_poetry_prevgraf_int -\cs_new_protected:Nn \__scripture_poetry_extra_skip: - { - \skip_vertical:n { \l__scripture_extraskip_tl - \baselineskip - \parskip } - \bool_gset_false:N \g__scripture_poetry_midparachap_show_verse_bool - \strut - \hook_gput_next_code:nn { para / after } - { - \hook_gput_next_code:nn { para / after } - { - \bool_gset_eq:NN - \g__scripture_poetry_midparachap_show_verse_bool - \l__scripture_midparachap_show_verse_bool - } - } - } \cs_new_protected:Nn \__scripture_poetry_text_right:nn { { @@ -1406,29 +2682,45 @@ { \bool_if:NTF \l__scripture_chap_drop_bool { \__scripture_poetry_chap:n { #1 } } + { + \bool_if:NTF \l__scripture_chap_para_bool + { \__scripture_para_chap:n { #1 } } + { \__scripture_poetry_nodrop_chap:n { #1 } } + } + } + { + \bool_if:NTF \l__scripture_chap_para_bool + { \__scripture_para_chap:n { #1 } } { \__scripture_poetry_nodrop_chap:n { #1 } } } - { \__scripture_poetry_nodrop_chap:n { #1 } } } \cs_new_protected:Nn \__scripture_poetry_chap:n { \__scripture_drop_chap_set_up:n { #1 } - \mode_if_vertical:TF + \hook_gput_next_code:nn { para / after } + { + \hook_gput_next_code:nn { para / after } + { \int_gzero:N \g__scripture_chap_par_prevgraf_int } + } + \cs_if_eq:NNTF \vs \__scripture_poetry_mode_vertical_verse:n + { + \dim_zero:N \l__scripture_poetry_chap_indent_dim + \noindent + } { \dim_set_eq:NN \l__scripture_poetry_chap_indent_dim \l__scripture_poetry_indent_tl \mode_leave_vertical: } - { \dim_zero:N \l__scripture_poetry_chap_indent_dim } \dim_set_eq:NN \l__scripture_poetry_chap_sep_dim \l__scripture_chap_sep_tl \dim_compare:nNnT - { \l__scripture_chap_width_dim + \l__scripture_chap_sep_tl } + { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } < { \l__scripture_poetry_leftmargin_tl + \l__scripture_poetry_chap_indent_dim } { \dim_set:Nn \l__scripture_poetry_chap_sep_dim { \l__scripture_poetry_leftmargin_tl + \l__scripture_poetry_chap_indent_dim - - \l__scripture_chap_width_dim + \g__scripture_chap_width_dim } } \hbox_set:Nn \l__scripture_chap_box @@ -1447,7 +2739,7 @@ \box_set_dp:Nn \l__scripture_chap_box { \c_zero_dim } \dim_set:Nn \l__scripture_poetry_chap_parshape_correction_dim { - \l__scripture_chap_width_dim + \l__scripture_poetry_chap_sep_dim - + \g__scripture_chap_width_dim + \l__scripture_poetry_chap_sep_dim - \l__scripture_poetry_leftmargin_tl - \l__scripture_poetry_chap_indent_dim } \parshape 2 ~ @@ -1460,7 +2752,7 @@ \dim_eval:n { \linewidth - \l__scripture_poetry_big_indent_tl } \dim_compare:nNnT - { \l__scripture_chap_width_dim + \l__scripture_poetry_chap_sep_dim } + { \g__scripture_chap_width_dim + \l__scripture_poetry_chap_sep_dim } > \l__scripture_poetry_leftmargin_tl { @@ -1468,43 +2760,44 @@ { \int_compare:nNnT \l__scripture_poetry_prevgraf_int = 1 { - \dim_compare:nNnTF - { \l__scripture_chap_width_dim + \l__scripture_chap_sep_tl } - < - { \l__scripture_poetry_leftmargin_tl + \l__scripture_poetry_indent_tl } - { \dim_zero:N \l__scripture_poetry_chap_parshape_correction_dim } + \cs_if_eq:NNTF \vs \__scripture_poetry_mode_vertical_verse:n { - \dim_set:Nn \l__scripture_poetry_chap_parshape_correction_dim + \dim_compare:nNnTF + { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } + < + \l__scripture_poetry_leftmargin_tl + { \dim_zero:N \l__scripture_poetry_chap_parshape_correction_dim } { - \l__scripture_chap_width_dim + \l__scripture_chap_sep_tl - - \l__scripture_poetry_leftmargin_tl - \l__scripture_poetry_indent_tl + \dim_set:Nn \l__scripture_poetry_chap_parshape_correction_dim + { + \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl - + \l__scripture_poetry_leftmargin_tl + } + } + \int_compare:nNnT \g__scripture_chap_par_prevgraf_int = 1 + { + \parshape 2 ~ + \dim_eval:n + { \@totalleftmargin + \l__scripture_poetry_chap_parshape_correction_dim } ~ + \dim_eval:n + { \linewidth - \l__scripture_poetry_chap_parshape_correction_dim } ~ + \dim_eval:n + { \@totalleftmargin + \l__scripture_poetry_big_indent_tl } ~ + \dim_eval:n + { \linewidth - \l__scripture_poetry_big_indent_tl } } } - \parshape 2 ~ - \dim_eval:n - { \@totalleftmargin + \l__scripture_poetry_chap_parshape_correction_dim } ~ - \dim_eval:n - { \linewidth - \l__scripture_poetry_chap_parshape_correction_dim } ~ - \dim_eval:n - { \@totalleftmargin + \l__scripture_poetry_big_indent_tl } ~ - \dim_eval:n - { \linewidth - \l__scripture_poetry_big_indent_tl } - \hook_gput_next_code:nn { para / after } - { - \hook_gclear_next_code:n { scripture / poetry / para / after } - } - \hook_gput_next_code:nn { scripture / poetry / para / after } { \dim_compare:nNnTF - { \l__scripture_chap_width_dim + \l__scripture_chap_sep_tl } + { \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl } < - \l__scripture_poetry_leftmargin_tl + { \l__scripture_poetry_leftmargin_tl + \l__scripture_poetry_indent_tl } { \dim_zero:N \l__scripture_poetry_chap_parshape_correction_dim } { \dim_set:Nn \l__scripture_poetry_chap_parshape_correction_dim { - \l__scripture_chap_width_dim + \l__scripture_chap_sep_tl - - \l__scripture_poetry_leftmargin_tl + \g__scripture_chap_width_dim + \l__scripture_chap_sep_tl - + \l__scripture_poetry_leftmargin_tl - \l__scripture_poetry_indent_tl } } \parshape 2 ~ @@ -1525,18 +2818,17 @@ \box_use:N \l__scripture_chap_box \hook_use:n { scripture / chap / after } \group_end: - \bool_lazy_or:nnT - { \bool_if_p:n \l__scripture_chap_show_verse_bool } - { \bool_if_p:n \g__scripture_poetry_midparachap_show_verse_bool } - { - \__scripture_verse_output:n { 1 } - } + \bool_lazy_or:nnT \l__scripture_chap_show_verse_bool \l__scripture_poetry_midparachap_show_verse_bool + { \__scripture_verse_output:n { 1 } } + \hook_use:n { scripture / poetry / pilcrow } } \cs_new_protected:Nn \__scripture_poetry_nodrop_chap:n { \cs_gset_nopar:Npn \scripturecurrentchapter { #1 } \cs_gset_nopar:Npn \scripturecurrentverse { 1 } \group_begin: + \cs_if_eq:NNT \vs \__scripture_poetry_mode_vertical_verse:n + { \noindent } \bool_if:NTF \l__scripture_chap_show_bool { \hbox_overlap_left:n @@ -1551,12 +2843,8 @@ \skip_horizontal:N \l__scripture_chap_sep_tl \hook_use:n { scripture / chap / after } } - \bool_lazy_or:nnT - { \bool_if_p:n \l__scripture_chap_show_verse_bool } - { \bool_if_p:n \g__scripture_poetry_midparachap_show_verse_bool } - { - \__scripture_verse_output:n { 1 } - } + \bool_lazy_or:nnT \l__scripture_chap_show_verse_bool \l__scripture_poetry_midparachap_show_verse_bool + { \__scripture_verse_output:n { 1 } } } { \hook_use:n { scripture / chap / before } @@ -1564,52 +2852,60 @@ \vs { 1 } } \group_end: + \hook_use:n { scripture / poetry / pilcrow } } \cs_new_protected:Nn \__scripture_poetry_mode_vertical_verse:n { \group_begin: \tl_set_eq:NN \l__scripture_verse_sep_tl \l__scripture_poetry_verse_sep_tl + \hook_gclear_next_code:n { scripture / pilcrow } \strut - \bool_if:NTF \l__scripture_poetry_verse_right_bool + \int_compare:nNnTF \g__scripture_chap_par_prevgraf_int = 1 { - \hbox_overlap_left:n - { - \__scripture_verse_output:n { #1 } - } + \__scripture_verse_output:n { #1 } } { - \hbox_overlap_left:n + \bool_if:NTF \l__scripture_poetry_verse_right_bool { - \hbox_overlap_right:n + \hbox_overlap_left:n { \__scripture_verse_output:n { #1 } } - \skip_horizontal:N \l__scripture_poetry_leftmargin_tl + } + { + \hbox_overlap_left:n + { + \hbox_overlap_right:n + { + \__scripture_verse_output:n { #1 } + } + \skip_horizontal:N \l__scripture_poetry_leftmargin_tl + } } } \group_end: + \bool_if:NF \g__scripture_suppress_next_pilcrow_bool + { \hook_use:n { scripture / poetry / pilcrow } } } \cs_new_protected:Nn \__scripture_poetry_mode_horizontal_verse:n { \group_begin: \tl_set_eq:NN \l__scripture_verse_sep_tl \l__scripture_poetry_verse_sep_tl - \skip_horizontal:n { -\listparindent } - \__scripture_poetry_mode_vertical_verse:n { #1 } - \skip_horizontal:N \listparindent - \group_end: - } -\cs_new_protected:Nn \__scripture_poetry_par: - { - \mode_if_vertical:TF + \int_compare:nNnTF \g__scripture_chap_par_prevgraf_int = 1 { - \cs_set_eq:NN \vs \__scripture_poetry_mode_vertical_verse:n - \noindent + \__scripture_poetry_mode_vertical_verse:n { #1 } } { - \cs_set_eq:NN \vs \__scripture_poetry_mode_horizontal_verse:n - \__scripture_tmp_para_end: - \int_set_eq:NN \l__scripture_poetry_prevgraf_int \prevgraf + \skip_horizontal:n { -\listparindent } + \__scripture_poetry_mode_vertical_verse:n { #1 } + \skip_horizontal:N \listparindent } + \group_end: + } +\cs_new_protected:Nn \__scripture_poetry_par: + { + \para_end: + \int_set:Nn \l__scripture_poetry_prevgraf_int { \int_use:N \prevgraf } \parshape 2 ~ \@totalleftmargin ~ \linewidth ~ @@ -1624,15 +2920,67 @@ \cs_gset_protected_nopar:Nn \__scripture_obeylines: % {% \char_set_catcode_active:N \^^M% - \cs_set_eq:NN ^^M \__scripture_obeylines_end:% + \cs_set_eq:NN ^^M \__scripture_obeylines_eol:% }% \group_end: -\cs_new_protected:Nn \__scripture_obeylines_end: +\cs_new_protected:Nn \__scripture_obeylines_eol: { - \peek_meaning:NF \end + \mode_if_vertical:TF { - \par - \int_set:Nn \l__scripture_poetry_prevgraf_int { \int_use:N \prevgraf } + \cs_set_eq:NN \vs \__scripture_poetry_mode_vertical_verse:n + \hook_gput_next_code:nn { scripture / poetry / para / after } + { \bool_set_false:N \l__scripture_poetry_midparachap_show_verse_bool } + } + { \cs_set_eq:NN \vs \__scripture_poetry_mode_horizontal_verse:n } + \peek_analysis_map_inline:n + { + \bool_case:nF + { + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \ch } + { + \bool_set_eq:NN \l__scripture_poetry_midparachap_show_verse_bool \l__scripture_midparachap_show_verse_bool + \__scripture_poetry_par: + \peek_analysis_map_break:n { ##1 } + } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \end } + { \peek_analysis_map_break:n { ##1 } } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \extraskip } + { \peek_analysis_map_break:n { ##1 } } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \nopilcrow } + { + \__scripture_poetry_par: + \cs_if_eq:NNT \vs \__scripture_poetry_mode_vertical_verse:n + { \noindent } + \peek_analysis_map_break:n + { + \__scripture_fix_protrusion:o { ##1 } + } + } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \vs } + { + \__scripture_poetry_par: + \cs_if_eq:NNT \vs \__scripture_poetry_mode_vertical_verse:n + { \noindent } + \peek_analysis_map_break:n { ##1 } + } + { \exp_args:No \token_if_eq_meaning_p:NN { ##1 } \__scripture_obeylines_eol: } + { \cs_set_eq:NN \vs \__scripture_poetry_mode_vertical_verse:n } + } + { + \__scripture_poetry_par: + \cs_if_eq:NNT \vs \__scripture_poetry_mode_vertical_verse:n + { \noindent } + \bool_if:NT \l__scripture_verse_para_bool + { + \__scripture_pilcrow_output: + \bool_set_false:N \l__scripture_verse_para_bool + \bool_set_false:N \l__scripture_pilcrow_bool + } + \peek_analysis_map_break:n + { + \__scripture_fix_protrusion:o { ##1 } + } + } } } \cs_new_protected:Nn \__scripture_poetry_begin: @@ -1642,19 +2990,37 @@ \msg_error:nn { scripture } { nested-environment } } \bool_set_true:N \l__scripture_active_inner_bool - \tl_set:Nn \l__scripture_currenvir_str { poetry } + \str_set:Nn \l__scripture_currenvir_str { poetry } \bool_gset_false:N \g__scripture_poetry_midparachap_show_verse_bool - \DeclareDocumentCommand { \ch } { sm } { \__scripture_poetry_ch:n { ##2 } } + \DeclareDocumentCommand { \ch } { s o m } + { + \tl_if_novalue:nF { ##2 } + { + \tl_set:Nn \l__scripture_X_char_tl { ##2 } + } + \__scripture_poetry_ch:n { ##3 } + } \cs_set_eq:NN \vs \__scripture_poetry_mode_vertical_verse:n - \cs_set_eq:NN \extraskip \__scripture_poetry_extra_skip: \cs_set_eq:NN \selah \__scripture_selah_output: \cs_set_protected_nopar:Npn \textright ##1 { \__scripture_poetry_text_right:nn { \l__scripture_text_right_sep_tl } { ##1 } } \legacy_if:nTF { @newlist } { \dim_add:Nn \l__scripture_outer_itemindent_dim \itemindent } { \dim_zero:N \l__scripture_outer_itemindent_dim } + \cs_set_eq:NN \par \para_end: + \cs_set_eq:NN \noindent \tex_noindent:D + \hook_gput_next_code:nn { scripture / poetry / pilcrow } + { + \__scripture_pilcrow_output: + \bool_set_false:N \l__scripture_pilcrow_bool + \bool_set_false:N \l__scripture_verse_para_bool + } \list { } { + \bool_lazy_or:nnF + { \mode_if_vertical_p: } + { \g__scripture_para_mode_vertical_bool } + { \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool } \dim_zero:N \labelsep \dim_set_eq:NN \leftmargin \l__scripture_poetry_leftmargin_tl \dim_set_eq:NN \rightmargin \l__scripture_poetry_rightmargin_tl @@ -1674,10 +3040,6 @@ \dim_set_eq:NN \parindent \l__scripture_poetry_indent_tl \item \relax - \cs_set_eq:NN \__scripture_tmp_para_end: \par - \cs_set_eq:NN \par \__scripture_poetry_par: - \hook_gput_next_code:nn { para / after } - { \bool_gset_eq:NN \g__scripture_poetry_midparachap_show_verse_bool \l__scripture_midparachap_show_verse_bool } } \cs_new_protected:Nn \__scripture_poetry_end: { @@ -1688,6 +3050,8 @@ \skip_gset_eq:NN \g__scripture_prev_inner_below_skip \@topsepadd \legacy_if_set_false:n { @noparlist } \endlist + \bool_gset_true:N \g__scripture_suppress_next_pilcrow_bool + \hook_gclear_next_code:n { scripture / poetry / pilcrow } \bool_gset_true:N \g__scripture_poetry_end_bool \hook_gput_next_code:nn { para / begin } { \bool_gset_false:N \g__scripture_poetry_end_bool } @@ -1716,47 +3080,47 @@ } \NewDocumentEnvironment { scripture } { o o } { - \__scripture_begin:n { #2 } + \__scripture_begin:nn { #1 } { #2 } \DeclareDocumentEnvironment { center } { o } { \__scripture_center_begin:n { ##1 } - \ignorespaces + \__scripture_reference_start_peek: } { \__scripture_center_end: } \DeclareDocumentEnvironment { flushright } { o } { \__scripture_flushright_begin:n { ##1 } - \ignorespaces + \__scripture_reference_start_peek: } { \__scripture_flushright_end: } \DeclareDocumentEnvironment { hanging } { o } { \__scripture_hanging_begin:n { ##1 } - \ignorespaces + \__scripture_reference_start_peek: } { \__scripture_hanging_end: } \DeclareDocumentEnvironment { midparachap } { o } { \__scripture_mid_para_chap_begin:n { ##1 } - \ignorespaces + \__scripture_reference_start_peek: } { \__scripture_mid_para_chap_end: } \DeclareDocumentEnvironment { narrow } { o } { \__scripture_narrow_begin:n { ##1 } - \ignorespaces + \__scripture_reference_start_peek: } { \__scripture_narrow_end: } \DeclareDocumentEnvironment { poetryaux } { o } { \tl_if_novalue:nF { ##1 } - { - \keys_set:nn - { scripture / poetry } - { ##1 } - } + { + \keys_set:nn + { scripture / poetry } + { ##1 } + } \__scripture_poetry_begin: - \ignorespaces + \__scripture_reference_start_peek: } { \__scripture_poetry_end: } \DeclareDocumentEnvironment { poetry } { } @@ -1775,19 +3139,91 @@ \tl_set_eq:NN \l__scripture_ref_sep_tl \l__scripture_inline_ref_sep_tl \cs_set_eq:NN \__scripture_version_format:n \__scripture_inline_version_format:n \tl_set_eq:NN \l__scripture_version_delim_tl \l__scripture_inline_version_delim_tl + \bool_set_false:N \l__scripture_chap_para_bool \bool_set_true:N \l__scripture_compact_bool + \bool_set_false:N \l__scripture_heading_show_bool } - \bool_if:NT \l__scripture_compact_bool + \bool_if:NT \l__scripture_chap_para_bool { - \scripturesetup { chapter / nodrop } - \RenewDocumentEnvironment { center } { o } { \ignorespaces } { \unskip } - \RenewDocumentEnvironment { flushright } { o } { \ignorespaces } { \unskip } - \RenewDocumentEnvironment { hanging } { o } { \ignorespaces } { \unskip } \RenewDocumentEnvironment { midparachap } { o } { \ignorespaces } { \unskip } - \RenewDocumentEnvironment { narrow } { o } { \ignorespaces } { \unskip } - \RenewDocumentEnvironment { poetry } { o } { \ignorespaces } { \unskip } + } + \bool_if:NT \l__scripture_verse_para_bool + { + \cs_set_eq:NN \vs \__scripture_verse_para_output:n + \cs_set_eq:NN \par \__scripture_para_par: + \cs_set_eq:NN \@par \__scripture_para_par: + \cs_set_eq:NN \@doendpe \__scripture_doendpe: + \cs_set_eq:NN \noindent \__scripture_para_noindent: + \cs_set_protected:Npn \\ + { + \mode_if_horizontal:TF + { \unskip } + { \@nolnerr } + } + \RenewDocumentEnvironment { midparachap } { o } + { + \str_set:Nn \l__scripture_currenvir_str { midparachap } + \cs_set_eq:NN \noindent \tex_noindent:D + \cs_set_eq:cN { end ~ } \__scripture_mid_para_chap_end:n + \__scripture_reference_start_peek: + } + { + \para_end: + \bool_gset_false:N \g__scripture_suppress_next_pilcrow_bool + } + } + \bool_if:NT \l__scripture_compact_bool + { + \cs_set_eq:NN \noindent \__scripture_para_noindent: + \bool_if:NF \l__scripture_verse_para_bool + { + \bool_set_false:N \l__scripture_chap_drop_bool + \bool_set_false:N \l__scripture_chap_drop_llap_bool + \bool_set_false:N \l__scripture_chap_drop_smash_bool + \bool_set_false:N \l__scripture_chap_para_bool + \cs_set_eq:NN \vs \__scripture_verse_compact_output:n + } + \bool_gset:Nn \g__scripture_mode_vertical_inner_bool + { \mode_if_vertical_p: } + \RenewDocumentEnvironment { center } { o } + { + \str_set:Nn \l__scripture_currenvir_str { center } + \__scripture_reference_start_peek: + } + { \__scripture_compact_end_inner: } + \RenewDocumentEnvironment { flushright } { o } + { + \str_set:Nn \l__scripture_currenvir_str { flushright } + \__scripture_reference_start_peek: + } + { \__scripture_compact_end_inner: } + \RenewDocumentEnvironment { hanging } { o } + { + \str_set:Nn \l__scripture_currenvir_str { hanging } + \__scripture_reference_start_peek: + } + { \__scripture_compact_end_inner: } + \RenewDocumentEnvironment { midparachap } { o } + { + \str_set:Nn \l__scripture_currenvir_str { midparachap } + \cs_set_eq:cN { end ~ } \__scripture_mid_para_chap_end:n + \__scripture_reference_start_peek: + } + { \__scripture_compact_end_inner: } + \RenewDocumentEnvironment { narrow } { o } + { + \str_set:Nn \l__scripture_currenvir_str { narrow } + \__scripture_reference_start_peek: + } + { \__scripture_compact_end_inner: } + \RenewDocumentEnvironment { poetry } { o } + { + \str_set:Nn \l__scripture_currenvir_str { poetry } + \__scripture_reference_start_peek: + } + { \__scripture_compact_end_inner: } \cs_set_eq:NN \\ \unskip - \cs_set_eq:NN \par \relax + \cs_set_eq:NN \par \__scripture_compact_par: \cs_set_eq:NN \extraskip \relax \cs_set_eq:NN \nohang \relax \cs_set:Npn \selah @@ -1805,14 +3241,13 @@ \c_space_tl ##1 } - \mode_leave_vertical: } - \ignorespaces + \__scripture_reference_start_peek: } { - \bool_if:NT \l__scripture_compact_bool - { \cs_set_eq:NN \par \endgraf } - \__scripture_end:n { #1 } + \bool_lazy_or:nnT \l__scripture_compact_bool \l__scripture_verse_para_bool + { \cs_set_eq:NN \par \para_end: } + \__scripture_end: } %% %% diff --git a/Master/texmf-dist/tex/latex/simpleicons/simpleicons.sty b/Master/texmf-dist/tex/latex/simpleicons/simpleicons.sty index 804a8e07114..4ab0c32becc 100644 --- a/Master/texmf-dist/tex/latex/simpleicons/simpleicons.sty +++ b/Master/texmf-dist/tex/latex/simpleicons/simpleicons.sty @@ -1,6 +1,6 @@ \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{simpleicons}[2024/12/27 14.0.0 Simple Icons 14.0.0 Logos] +\ProvidesPackage{simpleicons}[2025/01/03 14.0.1 Simple Icons 14.0.1 Logos] \RequirePackage{iftex} diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconseight.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconseight.fd index 153a5d6c691..62b5a7815c6 100644 --- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconseight.fd +++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconseight.fd @@ -1,5 +1,5 @@ - \ProvidesFile{usimpleiconseight.fd}[2024/12/27 Font definitions for U/simpleiconseight.] + \ProvidesFile{usimpleiconseight.fd}[2025/01/03 Font definitions for U/simpleiconseight.] \DeclareFontFamily{U}{simpleiconseight}{} \DeclareFontShape{U}{simpleiconseight}{m}{n}{<-> SimpleIcons--simpleiconseight}{} \endinput diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsfive.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsfive.fd index e0ec884e84d..e404efbc6f9 100644 --- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsfive.fd +++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsfive.fd @@ -1,5 +1,5 @@ - \ProvidesFile{usimpleiconsfive.fd}[2024/12/27 Font definitions for U/simpleiconsfive.] + \ProvidesFile{usimpleiconsfive.fd}[2025/01/03 Font definitions for U/simpleiconsfive.] \DeclareFontFamily{U}{simpleiconsfive}{} \DeclareFontShape{U}{simpleiconsfive}{m}{n}{<-> SimpleIcons--simpleiconsfive}{} \endinput diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsfour.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsfour.fd index c6369f4c17d..ad9a6e31966 100644 --- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsfour.fd +++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsfour.fd @@ -1,5 +1,5 @@ - \ProvidesFile{usimpleiconsfour.fd}[2024/12/27 Font definitions for U/simpleiconsfour.] + \ProvidesFile{usimpleiconsfour.fd}[2025/01/03 Font definitions for U/simpleiconsfour.] \DeclareFontFamily{U}{simpleiconsfour}{} \DeclareFontShape{U}{simpleiconsfour}{m}{n}{<-> SimpleIcons--simpleiconsfour}{} \endinput diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsnine.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsnine.fd index cf9f2ae0e75..9c005bc9927 100644 --- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsnine.fd +++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsnine.fd @@ -1,5 +1,5 @@ - \ProvidesFile{usimpleiconsnine.fd}[2024/12/27 Font definitions for U/simpleiconsnine.] + \ProvidesFile{usimpleiconsnine.fd}[2025/01/03 Font definitions for U/simpleiconsnine.] \DeclareFontFamily{U}{simpleiconsnine}{} \DeclareFontShape{U}{simpleiconsnine}{m}{n}{<-> SimpleIcons--simpleiconsnine}{} \endinput diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsone.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsone.fd index 053a2ea7152..bb15c8b888d 100644 --- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsone.fd +++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsone.fd @@ -1,5 +1,5 @@ - \ProvidesFile{usimpleiconsone.fd}[2024/12/27 Font definitions for U/simpleiconsone.] + \ProvidesFile{usimpleiconsone.fd}[2025/01/03 Font definitions for U/simpleiconsone.] \DeclareFontFamily{U}{simpleiconsone}{} \DeclareFontShape{U}{simpleiconsone}{m}{n}{<-> SimpleIcons--simpleiconsone}{} \endinput diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsoneone.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsoneone.fd index fa74580c956..8a8089f50a4 100644 --- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsoneone.fd +++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsoneone.fd @@ -1,5 +1,5 @@ - \ProvidesFile{usimpleiconsoneone.fd}[2024/12/27 Font definitions for U/simpleiconsoneone.] + \ProvidesFile{usimpleiconsoneone.fd}[2025/01/03 Font definitions for U/simpleiconsoneone.] \DeclareFontFamily{U}{simpleiconsoneone}{} \DeclareFontShape{U}{simpleiconsoneone}{m}{n}{<-> SimpleIcons--simpleiconsoneone}{} \endinput diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonethree.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonethree.fd index c6b9cb7dcfe..665f0463270 100644 --- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonethree.fd +++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonethree.fd @@ -1,5 +1,5 @@ - \ProvidesFile{usimpleiconsonethree.fd}[2024/12/27 Font definitions for U/simpleiconsonethree.] + \ProvidesFile{usimpleiconsonethree.fd}[2025/01/03 Font definitions for U/simpleiconsonethree.] \DeclareFontFamily{U}{simpleiconsonethree}{} \DeclareFontShape{U}{simpleiconsonethree}{m}{n}{<-> SimpleIcons--simpleiconsonethree}{} \endinput diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonetwo.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonetwo.fd index d87db0e5f31..a6a0ed3797c 100644 --- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonetwo.fd +++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonetwo.fd @@ -1,5 +1,5 @@ - \ProvidesFile{usimpleiconsonetwo.fd}[2024/12/27 Font definitions for U/simpleiconsonetwo.] + \ProvidesFile{usimpleiconsonetwo.fd}[2025/01/03 Font definitions for U/simpleiconsonetwo.] \DeclareFontFamily{U}{simpleiconsonetwo}{} \DeclareFontShape{U}{simpleiconsonetwo}{m}{n}{<-> SimpleIcons--simpleiconsonetwo}{} \endinput diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonezero.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonezero.fd index 51fb4c7d51c..190ec48ad6e 100644 --- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonezero.fd +++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsonezero.fd @@ -1,5 +1,5 @@ - \ProvidesFile{usimpleiconsonezero.fd}[2024/12/27 Font definitions for U/simpleiconsonezero.] + \ProvidesFile{usimpleiconsonezero.fd}[2025/01/03 Font definitions for U/simpleiconsonezero.] \DeclareFontFamily{U}{simpleiconsonezero}{} \DeclareFontShape{U}{simpleiconsonezero}{m}{n}{<-> SimpleIcons--simpleiconsonezero}{} \endinput diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsseven.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsseven.fd index fd1c646177b..f0dad942416 100644 --- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsseven.fd +++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsseven.fd @@ -1,5 +1,5 @@ - \ProvidesFile{usimpleiconsseven.fd}[2024/12/27 Font definitions for U/simpleiconsseven.] + \ProvidesFile{usimpleiconsseven.fd}[2025/01/03 Font definitions for U/simpleiconsseven.] \DeclareFontFamily{U}{simpleiconsseven}{} \DeclareFontShape{U}{simpleiconsseven}{m}{n}{<-> SimpleIcons--simpleiconsseven}{} \endinput diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconssix.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconssix.fd index a384654dbaa..965dd830c14 100644 --- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconssix.fd +++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconssix.fd @@ -1,5 +1,5 @@ - \ProvidesFile{usimpleiconssix.fd}[2024/12/27 Font definitions for U/simpleiconssix.] + \ProvidesFile{usimpleiconssix.fd}[2025/01/03 Font definitions for U/simpleiconssix.] \DeclareFontFamily{U}{simpleiconssix}{} \DeclareFontShape{U}{simpleiconssix}{m}{n}{<-> SimpleIcons--simpleiconssix}{} \endinput diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsthree.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsthree.fd index 476ccb76568..16e7b3f70a5 100644 --- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsthree.fd +++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconsthree.fd @@ -1,5 +1,5 @@ - \ProvidesFile{usimpleiconsthree.fd}[2024/12/27 Font definitions for U/simpleiconsthree.] + \ProvidesFile{usimpleiconsthree.fd}[2025/01/03 Font definitions for U/simpleiconsthree.] \DeclareFontFamily{U}{simpleiconsthree}{} \DeclareFontShape{U}{simpleiconsthree}{m}{n}{<-> SimpleIcons--simpleiconsthree}{} \endinput diff --git a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconstwo.fd b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconstwo.fd index 52858245909..cc98d8d87f4 100644 --- a/Master/texmf-dist/tex/latex/simpleicons/usimpleiconstwo.fd +++ b/Master/texmf-dist/tex/latex/simpleicons/usimpleiconstwo.fd @@ -1,5 +1,5 @@ - \ProvidesFile{usimpleiconstwo.fd}[2024/12/27 Font definitions for U/simpleiconstwo.] + \ProvidesFile{usimpleiconstwo.fd}[2025/01/03 Font definitions for U/simpleiconstwo.] \DeclareFontFamily{U}{simpleiconstwo}{} \DeclareFontShape{U}{simpleiconstwo}{m}{n}{<-> SimpleIcons--simpleiconstwo}{} \endinput diff --git a/Master/texmf-dist/tex/latex/tabularray-abnt/tabularray-abnt.sty b/Master/texmf-dist/tex/latex/tabularray-abnt/tabularray-abnt.sty new file mode 100644 index 00000000000..e29559ebac8 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tabularray-abnt/tabularray-abnt.sty @@ -0,0 +1,356 @@ +%%% % -*- coding: utf-8 -*- +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% % tabularray-abnt.sty +%%% %---------------------------------------------------------------------- +%%% % copyright (C) January, 2025 by Sadao Massago +%%% % autor: +%%% % Sadao Massago +%%% % e-mail: sadao@ufscar.br +%%% % +%%% % Licença: LaTeX Project Public License versão 1.3c or (se for a sua escolha) qualquer versão posterior. +%%% % https://www.latex-project.org/lppl/ +%%% %---------------------------------------------------------------------- + +%% Need LaTeX 2e version 2020-10-01 or latter (due to AddToHoock) +\NeedsTeXFormat{LaTeX2e}[2020/10/01] + +%%% file name +\ProvidesFile{tabularray-abnt.sty} + [2025/01/03 tabularray-abnt style (require tabularray package)] +\typeout{tabularray-abnt style 2025-01-03 <January/2025>.} + +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% It not works on older LaTeX compatibility mode (documentstyle) + +\if@compatibility + \PackageError{tabularray-abnt}{Not support older compatible mode (documentstyle)} + {Use documentclass instead of documentstyle} + \endinput +\else + %% OK +\fi + +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% In way to adjust on memoir (ex. abntex2) or abntexto as document class + +\newif\if@tabularray@abnt@using@memoir +\newif\if@tabularray@abnt@using@abntexto +\@tabularray@abnt@using@memoirfalse +\@tabularray@abnt@using@abntextofalse +\@ifclassloaded{memoir}% Using memoir? +{\@tabularray@abnt@using@memoirtrue}% YES +{ + \@ifclassloaded{abntexto}% Using ABNTexto? + {\@tabularray@abnt@using@abntextotrue}% YES + { % generic class + \RequirePackage{float} + } +} + +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Required package + +\RequirePackage{tabularray} + +%%% %---------------------- +%%> \section{ABNT theme} + +%% ABNT theme for table +\NewTblrTheme{abnt}{ + \DefTblrTemplate{caption-sep}{default}{\space ---\space}% default is ": \space" + \SetTblrTemplate{firsthead-text,lasthead-text,conthead-text}{abnt} + \SetTblrTemplate{caption,lasthead,capcont}{abnt} + \DefTblrTemplate{firstfoot,middlefoot}{default}{}% disabling the first and middle footnote + \SetTblrTemplate{lastfoot-text,lastfoot-text-note}{abnt} + \if@tabularray@abnt@using@abntexto + \SetTblrTemplate{caption-lot}{abnt} + \fi + + \SetTblrTemplate{remark-tag}{abnt} + \SetTblrTemplate{remark}{abnt} + + \SetTblrStyle{caption,lasthead,capcont}{font=\normalsize} + \SetTblrStyle{firsthead-text,lasthead-text,conthead-text}{font=\footnotesize} + \SetTblrStyle{lastfoot}{font=\footnotesize} +} + +%%% Example of how to insert value from parameter +%%% %\DefTblrTemplate{caption-text}{default}{\InsertTblrText{caption} + +%%% --------------------------------- +%% theme ``quadro'' (text only table) + +%%% % Caution: Avoid space between braces and parameters +\NewTblrTheme{quadro}{ + %% same as abnt theme of table + \DefTblrTemplate{caption-sep}{default}{\space ---\space}% default is ": \space" + \SetTblrTemplate{firsthead-text,lasthead-text,conthead-text}{abnt} + \SetTblrTemplate{caption,lasthead,capcont}{abnt} + \DefTblrTemplate{firstfoot,middlefoot}{default}{}% desabling first and middle footnote + \SetTblrTemplate{lastfoot-text,lastfoot-text-note}{abnt} + \if@tabularray@abnt@using@abntexto + \SetTblrTemplate{caption-lot}{abnt} + \fi + + \SetTblrTemplate{remark-tag}{abnt} + \SetTblrTemplate{remark}{abnt} + + \SetTblrStyle{caption,lasthead,capcont}{font=\normalsize} + \SetTblrStyle{firsthead-text,lasthead-text,conthead-text}{font=\footnotesize} + \SetTblrStyle{lastfoot}{font=\footnotesize} + + %% Change specific for ``quadro' + \SetTblrTemplate{caption-tag}{quadro} + \SetTblrTemplate{caption-lot}{quadro} +} + +%%% ----------------------------- +%%> \section{Setup table as ABNT} + +%% counter of table are not nested + +\ifdefined\chapter + \counterwithout{table}{chapter} +\else + \ifdefined\section + \counterwithout{table}{section} + \fi +\fi + +%% additional texto for header +\DefTblrTemplate{firsthead-text}{abnt}{\par~\hfill(continua)} % first header +\DefTblrTemplate{lasthead-text}{abnt}{\par~\hfill(conclusão)} % last header +\DefTblrTemplate{conthead-text}{abnt}{\par~\hfill(continuação)} % middle header +%% first header +\DefTblrTemplate{caption}{abnt}{ + \UseTblrTemplate{caption-tag}{default} + \UseTblrTemplate{caption-sep}{default} + \UseTblrTemplate{caption-text}{default} + +%%% % like \ifdefined, but with csname + \ifcsname tblr@abnt@spanpages@\roman{table}\endcsname % if span pages + \UseTblrTemplate{firsthead-text}{abnt} % acrescentar o firsthead-text + \fi +} + +%% redefine last head title +\DefTblrTemplate{lasthead}{abnt}{ + \UseTblrTemplate{caption-tag}{default} + \UseTblrTemplate{caption-sep}{default} + \UseTblrTemplate{caption-text}{default} + \UseTblrTemplate{lasthead-text}{abnt} % add lasthead-text +} +%% redefine middle head title +\DefTblrTemplate{capcont}{abnt}{ + \UseTblrTemplate{caption-tag}{default} + \UseTblrTemplate{caption-sep}{default} + \UseTblrTemplate{caption-text}{default} + \UseTblrTemplate{conthead-text}{abnt} +} + +%%% %------------------------------------------------- +%%> \section{To save ``page span'' status} + +\newif\if@tablular@abnt@mark@spanpages% +\@tablular@abnt@mark@spanpagesfalse % initially false + +%%% % tblr with long optional option +\AddToHook{env/tblr/before} +{ + \@tablular@abnt@mark@spanpagestrue +} +\AddToHook{env/tblr/after} +{ + \@tablular@abnt@mark@spanpagesfalse + \DefTblrTemplate{lastfoot-text}{abnt}{} + \DefTblrTemplate{lastfoot-text-note}{abnt}{} +} + +%%% % longtblr +\AddToHook{env/longtblr/before} +{ + \@tablular@abnt@mark@spanpagestrue +} +\AddToHook{env/longtblr/after} +{ + \@tablular@abnt@mark@spanpagesfalse + \DefTblrTemplate{lastfoot-text}{abnt}{} + \DefTblrTemplate{lastfoot-text-note}{abnt}{} +} + +%% if change pages, mark as ``span pages'' on aux file +\AddToHook{shipout/after} +{ + \if@tablular@abnt@mark@spanpages + %% tip from https://tex.stackexchange.com/questions/115932/on-the-basics-of-writing-to-reading-from-auxiliary-files-aux-toc-etc + \immediate\write\@auxout{\gdef\string\tblr@abnt@spanpages@\roman{table}{true}} + \fi + %% to the associated commands act globally + %% tip from https://tex.stackexchange.com/questions/566884/setting-a-newif-to-false-ignored-on-first-check-in-custom-itemize-environment + \global\let\if@tablular@abnt@mark@spanpages\iffalse +} + +%% For abntexto class, need change the form to write on ``lot'' +\if@tabularray@abnt@using@abntexto + \ExplSyntaxOn + \DefTblrTemplate{caption-lot}{abnt} + { + \tl_if_empty:NTF \lTblrEntryTl + {\tl_set_eq:NN \l__tblr_caption_short_tl \lTblrCaptionTl} + {\tl_set_eq:NN \l__tblr_caption_short_tl \lTblrEntryTl} + %% \addcontentsline { lot } { table } + %% { \protect\numberline { \thetable } { \l__tblr_caption_short_tl } } + %% add on list of tables using command from abntexto + \addtoext{lot}{lofi}{\protect\lotlabelbox{\thetable}{\l__tblr_caption_short_tl}} + } + \ExplSyntaxOff +\fi% \if@tabularray@abnt@using@abntexto + +%% Change reamrk to use for source and note as ABNT +\DefTblrTemplate{remark-tag}{abnt}{\InsertTblrRemarkTag} + +%% Change left margin using tip from +%% https://tex.stackexchange.com/questions/645175/how-to-indent-notes-in-tabularray +\newlength\tabularray@abnt@remark@labellength +\DefTblrTemplate{remark}{abnt}{% + \MapTblrRemarks{% + \settowidth{\tabularray@abnt@remark@labellength}{\UseTblrTemplate{remark-tag}{abnt}\UseTblrTemplate{remark-sep}{default}}% + \UseTblrTemplate{remark-tag}{abnt}\UseTblrTemplate{remark-sep}{default}% + \parbox[t]{\dimexpr\linewidth-\tabularray@abnt@remark@labellength}{\UseTblrTemplate{remark-text}{default}}% + \par}\medskip +} + +%%% %------------------- +%%> \section{``Quadro'' (text only table)} + +%%% %------------------ +%% On the abntexto class, create legend entry named ``quadro''. In other cases, create environment ``quadro''. + +%% Names +\providecommand{\quadroname}{Quadro} +\providecommand{\listquadroname}{Lista de quadros} +\@ifpackageloaded{babel}{ + \ifdefined\captionsbrazil + \addto\captionsbrazil{% brazilian portugese + \renewcommand{\quadroname}{Quadro} + \renewcommand{\listquadroname}{Lista de quadros} + } + \fi + \ifdefined\captionsbrazilian + \addto\captionsbrazil{% brazilian portugese + \renewcommand{\quadroname}{Quadro} + \renewcommand{\listquadroname}{Lista de quadros} + } + \fi + \ifdefined\captionsenglish + \addto\captionsenglish{% English + \renewcommand{\quadroname}{Text table} + \renewcommand{\listquadroname}{List of text table} + } + \fi +}{} % \@ifpackageloaded{babel}{ + +%% define for each class + +%% ABNTexto class +\if@tabularray@abnt@using@abntexto % ABNTexto. + %% using command from ABNTexto + \definelegendplace{quadro}{Quadro}{quad.\,}{loq} % new legend entry + +\ifdefined\chapter + \newcommand{\listadequadros}{\notoc\nonum\chapter{\listquadroname}\makeloq} +\else + \newcommand{\listadequadros}{\notoc\nonum\section{\listquadroname}\makeloq} +\fi + %% Caution: don't put space between braces and parameters + \DefTblrTemplate{caption-tag}{quadro}{\quadroname\hspace{0.25em}\the\countquadro} + + \ExplSyntaxOn + \DefTblrTemplate {caption-lot}{quadro} + { + \addtocounter{table}{-1}%Não contar como table + + %% counter created by \definelegendplace{quadro} is not \c@quadro+, but \countquadro, and is necessary to use TeX command to increase + \global\advance\countquadro by 1% count as ``quadro'' + \tl_if_empty:NTF \lTblrEntryTl + {\tl_set_eq:NN \l__tblr_caption_short_tl \lTblrCaptionTl} + {\tl_set_eq:NN \l__tblr_caption_short_tl \lTblrEntryTl} + %% add to list of ``quadro'' using command from abntexto + \addtoext{loq}{loqi}{\protect\loqlabelbox{\the\countquadro} {\l__tblr_caption_short_tl}}% + } + \ExplSyntaxOff +\else %% memoir (ABNTeX2 or like) or generic class + \if@tabularray@abnt@using@memoir %% memoir (ABNTeX2 or like) + +%%% %\newfloat[chapter]{quadro}{loq}{\quadroname} +%%% %\counterwithout{quadro}{chapter} + %% using command from memoir + \newfloat{quadro}{loq}{\quadroname} + \newlistof{listadequadros}{loq}{\listquadroname} + +%%% %\newlistentry[chapter]{quadro}{loq}{0} + \newlistentry{quadro}{loq}{0} + + \cftsetindents{quadro}{0em}{2.3em} + \renewcommand{\cftquadroname}{\quadroname\space} + \renewcommand*{\cftquadroaftersnum}{\hfill\textendash\hfill} + \else %% generic class + %% using float package + \newcommand{\listadequadros}{\listof{quadro}{\listofquadrosname}} + \newfloat{quadro}{tbp}{loq}%[chapter] + +%%% %\counterwithout{quadro}{chapter} counter not nested frm chapter + \fi + +%%% % We need to use \hspace and \enskip, but not ~ or \space, +%%% % since we want a correct hangindent caption paragraph. + \DefTblrTemplate {caption-tag} {quadro} {\quadroname\hspace{0.25em}\thequadro} + + \ExplSyntaxOn + \DefTblrTemplate { caption-lot } { quadro } + { + \addtocounter{table}{-1} + \stepcounter{quadro} + \tl_if_empty:NTF \lTblrEntryTl + { \tl_set_eq:NN \l__tblr_caption_short_tl \lTblrCaptionTl } + { \tl_set_eq:NN \l__tblr_caption_short_tl \lTblrEntryTl } + \addcontentsline { loq } { table } + { \protect\numberline { \thequadro } { \l__tblr_caption_short_tl } } + } + \ExplSyntaxOff +\fi + +%%% %------------------------------ +%%> \section{New table environment} +%% New environment as wrapper for tblr, instead of new tblr, in way to support table font settings + +%% To set table font for new envrronment +\NewDocumentCommand{\SetAbntTblrFont}{+m} +{ + \gdef\AbntTblrFont{#1} +} + +%%% % New environments for tables +\NewDocumentEnvironment{abnttblr}{+o +m +b}{ +\ifdefined\AbntTblrFont \AbntTblrFont \fi +\begin{tblr}[theme=abnt,#1]{#2} +#3 +\end{tblr} +}{} + +\NewDocumentEnvironment{tallabnttblr}{+o +m +b}{ +\ifdefined\AbntTblrFont \AbntTblrFont \fi +\begin{talltblr}[theme=abnt,#1]{#2} +#3 +\end{talltblr} +}{} + +\NewDocumentEnvironment{longabnttblr}{+o +m +b}{ +\ifdefined\AbntTblrFont \AbntTblrFont \fi +\begin{longtblr}[theme=abnt,#1]{#2} +#3 +\end{longtblr} +}{} + +%% end: tabularray-abnt.sty + diff --git a/Master/texmf-dist/tex/latex/tikz-decofonts/tikz-decofonts.sty b/Master/texmf-dist/tex/latex/tikz-decofonts/tikz-decofonts.sty index 984ac0a5f94..61cf680863e 100644 --- a/Master/texmf-dist/tex/latex/tikz-decofonts/tikz-decofonts.sty +++ b/Master/texmf-dist/tex/latex/tikz-decofonts/tikz-decofonts.sty @@ -1,18 +1,20 @@ % Author : C. Pierquet -% licences : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf +% licences : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt % : CC BY-SA 4.0 (https://tex.stackexchange.com/questions/475141/simulating-paintbrush-strokes-in-tikz from user121799) % : (https://tex.stackexchange.com/questions/460836/custom-line-cap-to-simulate-inked-line-in-tikz/460842#460842 from user121799) \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{tikz-decofonts}[2024/10/14 0.1.0 Custom fonts, made with TikZ, with effects] +\ProvidesPackage{tikz-decofonts}[2025/01/04 0.1.1 Custom fonts, made with TikZ, with effects] %------History +% 0.1.1 Bicolor txt % 0.1.0 Initial version %------Packages and library \RequirePackage{tikz} \RequirePackage{xstring} \RequirePackage{xintexpr} +\RequirePackage{listofitems} \RequirePackage{simplekv} \usetikzlibrary{decorations,decorations.pathreplacing,calc,positioning,bbox,arrows.meta,bending} @@ -892,5 +894,83 @@ }% } +%====BICOLORTXT +\defKV[bicolortxt]{colors=\def\bicolortxtcols{#1},style=\def\bicolortxtsttyle{#1},intdelta=\def\bicolortxtdelta{#1},paralcolors=\def\bicolortxtcolstrapez{#1}} +\setKVdefault[bicolortxt]{colors={red/blue},style=midh,intdelta=0.66,paralcolors={red/blue/orange/gray}} + +\NewDocumentCommand\tkzbicolor{ O{} m }{% + \restoreKV[bicolortxt]% + \setKV[bicolortxt]{#1}% + \IfStrEq{\bicolortxtsttyle}{paral}% + {% + \setsepchar[.]{/}% + \readlist*\bicolortrapez{\bicolortxtcolstrapez}% + }% + {% + \StrCut{\bicolortxtcols}{/}{\bicolorabove}{\bicolorbelow}% + }% + \tikz[baseline=(l.base),inner sep=0pt,outer sep=0pt]{% + \node[inner sep=0pt,outer sep=0pt](l){\phantom{#2}}; + \coordinate (lnw) at ([shift={(-0.5\pgflinewidth,0.5\pgflinewidth)}]l.north west) ; + \coordinate (ln) at ([shift={(0,0.5\pgflinewidth)}]l.north) ; + \coordinate (lne) at ([shift={(0.5\pgflinewidth,0.5\pgflinewidth)}]l.north east) ; + \coordinate (le) at ([shift={(0.5\pgflinewidth,0)}]l.east) ; + \coordinate (lse) at ([shift={(0.5\pgflinewidth,-0.5\pgflinewidth)}]l.south east) ; + \coordinate (ls) at ([shift={(0,-0.5\pgflinewidth)}]l.south) ; + \coordinate (lsw) at ([shift={(-0.5\pgflinewidth,-0.5\pgflinewidth)}]l.south west) ; + \coordinate (lw) at ([shift={(-0.5\pgflinewidth,0)}]l.west) ; + \IfStrEqCase{\bicolortxtsttyle}{% + {ellips}% + {% + \coordinate (lcircn) at ($(l.center)!\bicolortxtdelta!(l.north)$) ; + \coordinate (lcirce) at ($(l.center)!\bicolortxtdelta!(l.east)$) ; + }% + {rect}% + {% + \coordinate (lrectnw) at ($(l.center)!\bicolortxtdelta!(l.north west)$) ; + \coordinate (lrectse) at ($(l.center)!\bicolortxtdelta!(l.south east)$) ; + }% + {paral}% + {% + \coordinate (ltrapna) at ($(l.north west)!0.333!(l.north east)$) ; + \coordinate (ltrapnb) at ($(l.north west)!0.666!(l.north east)$) ; + \coordinate (ltrapsa) at ($(l.south west)!0.333!(l.south east)$) ; + \coordinate (ltrapsb) at ($(l.south west)!0.666!(l.south east)$) ; + }% + }% + \begin{scope} + \IfStrEqCase{\bicolortxtsttyle}{% + {midh}{\clip(ls)rectangle(lnw);\node[\bicolorabove]at(l){#2};}% + {midv}{\clip(lnw)rectangle(le);\node[\bicolorabove]at(l){#2};}% + {ndiag}{\clip(lnw)--(lne)--(lse)--cycle;\node[\bicolorabove]at(l){#2};}% + {sdiag}{\clip(lsw)--(lnw)--(lne)--cycle;\node[\bicolorabove]at(l){#2};}% + {ellips}{\clip(lsw)rectangle(lne);\node[\bicolorabove]at(l){#2};}% + {rect}{\clip(lsw)rectangle(lne);\node[\bicolorabove]at(l){#2};}% + {paral}{\clip(lsw)--(lnw)--(ltrapna)--cycle;\node[{\bicolortrapez[1]}]at(l){#2};}% + }% + \end{scope} + \begin{scope} + \IfStrEqCase{\bicolortxtsttyle}{% + {midh}{\clip(ls)rectangle(lne);\node[\bicolorbelow]at(l){#2};}% + {midv}{\clip(lsw)rectangle(le);\node[\bicolorbelow]at(l){#2};}% + {ndiag}{\clip(lsw)--(lnw)--(lse)--cycle;\node[\bicolorbelow]at(l){#2};}% + {sdiag}{\clip(lsw)--(lne)--(lse)--cycle;\node[\bicolorbelow]at(l){#2};}% + {ellips}{\clip(lsw)rectangle(lne);\pgfpathellipse{\pgfpointanchor{l}{center}}{\pgfpointanchor{lcirce}{center}}{\pgfpointanchor{lcircn}{center}}\pgfusepath{clip}\node[\bicolorbelow]at(l){#2};}% + {rect}{\clip(lrectnw)rectangle(lrectse);\node[\bicolorbelow]at(l){#2};}% + {paral}{\clip(lsw)--(ltrapna)--(ltrapnb)--(ltrapsa)--cycle;\node[{\bicolortrapez[2]}]at(l){#2};}% + }% + \end{scope} + \IfStrEq{\bicolortxtsttyle}{paral}% + {% + \begin{scope}%3 + \clip(ltrapsa)--(ltrapnb)--(lne)--(ltrapsb)--cycle;\node[{\bicolortrapez[3]}]at(l){#2}; + \end{scope} + \begin{scope}% + \clip(ltrapsb)--(lne)--(lse)--cycle;\node[{\bicolortrapez[4]}]at(l){#2}; + \end{scope} + }% + {}% + }% +} \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlibrarytikzlings.code.tex b/Master/texmf-dist/tex/latex/tikzlings/tikzlibrarytikzlings.code.tex index 2c4d97db21c..7fcc0e83971 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlibrarytikzlings.code.tex +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlibrarytikzlings.code.tex @@ -29,6 +29,6 @@ \tikzset{ tikzling/.pic={\tikzling}, - tikzling/.search also={,/tikz,/pgf,/thing}, - thing/.search also={,/tikz,/pgf}, + tikzling/.search also={,/tikz,/pgf,/thing}, + thing/.search also={,/tikz,/pgf}, }
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-addons.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-addons.sty index 6b5f2fc8a71..ef2fb63bebf 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-addons.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-addons.sty @@ -12,7 +12,7 @@ % See https://www.latex-project.org/lppl.txt % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-addons}[2024/12/12 version v2.1 Draw additional items for the tikzlings] +\ProvidesPackage{tikzlings-addons}[2025/01/05 version v2.2 Draw additional items for the tikzlings] \RequirePackage{tikz} \usetikzlibrary{patterns} % for the wizard hat @@ -58,63 +58,81 @@ \end{scope}% } +\def\thing@listhead{} +\def\thing@listacces{} +\def\thing@headtext{head} +\def\thing@accesstext{acess} + +\ExplSyntaxOn +\NewDocumentCommand{\thing@ini}{om}{ + \expandafter\newif\csname ifthing@#2\endcsname + \def\thing@tmp{#1} + \ifx\thing@headtext\thing@tmp + \tl_put_right:Nn \thing@listhead { {#2} } + \fi + \ifx\thing@accesstext\thing@tmp + \tl_put_right:Nn \thing@listacces { {#2} } + \fi +} +\ExplSyntaxOff + % Hats %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newif\ifthing@hat -\newif\ifthing@tophat -\newif\ifthing@beret -\newif\ifthing@strawhat -\newif\ifthing@harlequin -\newif\ifthing@witch -\newif\ifthing@magichat -\newif\ifthing@crown -\newif\ifthing@queencrown -\newif\ifthing@kingcrown -\newif\ifthing@santa -\newif\ifthing@chef -\newif\ifthing@graduate -\newif\ifthing@sombrero -\newif\ifthing@alien +\thing@ini[head]{hat} +\thing@ini[head]{tophat} +\thing@ini[head]{beret} +\thing@ini[head]{strawhat} +\thing@ini[head]{harlequin} +\thing@ini[head]{witch} +\thing@ini[head]{magichat} +\thing@ini[head]{crown} +\thing@ini[head]{queencrown} +\thing@ini[head]{kingcrown} +\thing@ini[head]{santa} +\thing@ini[head]{chef} +\thing@ini[head]{graduate} +\thing@ini[head]{sombrero} +\thing@ini[head]{alien} % Communication %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newif\ifthing@book -\newif\ifthing@signpost +\thing@ini[acess]{book} +\thing@ini[acess]{signpost} \newif\ifthing@speech \newif\ifthing@think % Food %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newif\ifthing@pizza +\thing@ini[acess]{pizza} \newif\ifthing@davidlikespineapplepizza -\newif\ifthing@cheese -\newif\ifthing@baguette -\newif\ifthing@cake -\newif\ifthing@icecream -\newif\ifthing@milkshake -\newif\ifthing@wine -\newif\ifthing@cocktail -\newif\ifthing@banana +\thing@ini[acess]{cheese} +\thing@ini[acess]{baguette} +\thing@ini[acess]{cake} +\thing@ini[acess]{icecream} +\thing@ini[acess]{milkshake} +\thing@ini[acess]{wine} +\thing@ini[acess]{cocktail} +\thing@ini[acess]{banana} % Sport %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newif\ifthing@cricket -\newif\ifthing@hockey -\newif\ifthing@football +\thing@ini[acess]{cricket} +\thing@ini[acess]{hockey} +\thing@ini[acess]{football} % Other %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newif\ifthing@crystalball -\newif\ifthing@magicwand -\newif\ifthing@rollingpin -\newif\ifthing@lightsaber -\newif\ifthing@torch -\newif\ifthing@basket -\newif\ifthing@easter -\newif\ifthing@crozier -\newif\ifthing@shovel -\newif\ifthing@pickaxe -\newif\ifthing@strawbroom -\newif\ifthing@broom -\newif\ifthing@umbrella -\newif\ifthing@umbrellaclosed -\newif\ifthing@handbag -\newif\ifthing@stick +\thing@ini[acess]{crystalball} +\thing@ini[acess]{magicwand} +\thing@ini[acess]{rollingpin} +\thing@ini[acess]{lightsaber} +\thing@ini[acess]{torch} +\thing@ini[acess]{basket} +\thing@ini[acess]{easter} +\thing@ini[acess]{crozier} +\thing@ini[acess]{shovel} +\thing@ini[acess]{pickaxe} +\thing@ini[acess]{strawbroom} +\thing@ini[acess]{broom} +\thing@ini[acess]{umbrella} +\thing@ini[acess]{umbrellaclosed} +\thing@ini[acess]{handbag} +\thing@ini[acess]{stick} \tikzset{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % General % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -126,58 +144,58 @@ % Hats % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - hat/.code = \thing@hattrue + hat/.code = \thing@hattrue \def\thing@hat{#1}, - hat/.default = blue!40!black, - tophat/.code = \thing@tophattrue + hat/.default = blue!40!black, + tophat/.code = \thing@tophattrue \def\thing@tophat{#1}, top hat/.forward to = /thing/tophat, tophat/.default = black!90!white, - beret/.code = \thing@berettrue + beret/.code = \thing@berettrue \def\thing@beret{#1}, - beret/.default = black, + beret/.default = black, strawhat/.code = \thing@strawhattrue \def\thing@strawhat{#1}, straw hat/.forward to = /thing/strawhat, strawhat/.default = gray!30!white, ribbon/.code = \def\thing@ribbon{#1}, ribbon = black, - harlequin/.code = \thing@harlequintrue + harlequin/.code = \thing@harlequintrue \def\thing@harlequin{#1}, harlequin/.default = blue, - niuqelrah/.code = \def\thing@niuqelrah{#1}, - niuqelrah = red, - witch/.code = \thing@witchtrue - \def\thing@witch{#1}, - witch/.default = black, - magichat/.code = \thing@magichattrue + niuqelrah/.code = \def\thing@niuqelrah{#1}, + niuqelrah = red, + witch/.code = \thing@witchtrue + \def\thing@witch{#1}, + witch/.default = black, + magichat/.code = \thing@magichattrue \def\thing@magichat{#1}, magic hat/.forward to = /thing/magichat, magichat/.default = violet, magicstars/.code = \def\thing@magicstars{#1}, - magic stars/.forward to = /thing/magicstars, - magicstars = yellow!80!brown, - crown/.code = \thing@crowntrue + magic stars/.forward to = /thing/magicstars, + magicstars = yellow!80!brown, + crown/.code = \thing@crowntrue \def\thing@crown{#1}, - crown/.default = yellow!90!orange, - queencrown/.code = \thing@queencrowntrue + crown/.default = yellow!90!orange, + queencrown/.code = \thing@queencrowntrue \def\thing@queencrown{#1}, queen crown/.forward to = /thing/queencrown, queencrown/.default = yellow, - kingcrown/.code = \thing@kingcrowntrue + kingcrown/.code = \thing@kingcrowntrue \def\thing@kingcrown{#1}, king crown/.forward to = /thing/kingcrown, kingcrown/.default = gray, - santa/.code = \thing@santatrue + santa/.code = \thing@santatrue \def\thing@santa{#1}, santa/.default = red!80!black, - chef/.code = \thing@cheftrue - \def\thing@chef{#1}, - chef/.default = gray!20!white, - graduate/.code = \thing@graduatetrue + chef/.code = \thing@cheftrue + \def\thing@chef{#1}, + chef/.default = gray!20!white, + graduate/.code = \thing@graduatetrue \def\thing@graduate{#1}, graduate/.default = black, - tassel/.code = \def\thing@tassel{#1}, + tassel/.code = \def\thing@tassel{#1}, tassel = red, sombrero/.code = \thing@sombrerotrue \def\thing@sombrero{#1}, @@ -187,10 +205,10 @@ sombrerob/.code = \def\thing@sombrerob{#1}, sombrerob = red, sombreroc/.code = \def\thing@sombreroc{#1}, - sombreroc = blue, - alien/.code = \thing@alientrue + sombreroc = blue, + alien/.code = \thing@alientrue \def\thing@alien{#1}, - alien/.default = green, + alien/.default = green, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Communication @@ -203,17 +221,17 @@ book color/.forward to = /thing/bookcolour, bookcolor/.forward to = /thing/bookcolour, bookcolour = brown, - signpost/.code = \thing@signposttrue + signpost/.code = \thing@signposttrue \def\thing@signpost{#1}, sign post/.forward to = /thing/signpost, signcolour/.code = \def\thing@signcolour{#1}, sign colour/.forward to = /thing/signcolour, sign color/.forward to = /thing/signcolour, - signcolor/.forward to = /thing/signcolour, - signcolour = brown!50!black, + signcolor/.forward to = /thing/signcolour, + signcolour = brown!50!black, signback/.code = \def\thing@signback{#1}, sign back/.forward to = /thing/signback, - signback = green!40!black, + signback = green!40!black, speech/.code = \thing@speechtrue \def\thing@speech{#1}, think/.code = \thing@thinktrue @@ -221,7 +239,7 @@ bubblecolour/.code = \def\thing@bubblecolour{#1}, bubble colour/.forward to = /thing/bubblecolour, bubble color/.forward to = /thing/bubblecolour, - bubblecolor/.forward to = /thing/bubblecolour, + bubblecolor/.forward to = /thing/bubblecolour, bubblecolour = gray!30!white, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % @@ -230,12 +248,12 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% pizza/.code = \thing@pizzatrue, davidlikespineapplepizza/.code = \thing@davidlikespineapplepizzatrue - \thing@speechtrue + \thing@speechtrue \def\thing@speech{\scalebox{\scalingfactor}{\scalebox{0.9}{\tiny ih, che schifo!}}}, david likes pineapple pizza/.forward to = /thing/davidlikespineapplepizza, cheese/.code = \thing@cheesetrue \def\thing@cheese{#1}, - cheese/.default = yellow!30!orange!60!white, + cheese/.default = yellow!30!orange!60!white, baguette/.code = \thing@baguettetrue \def\thing@baguette{#1}, baguette/.default = brown, @@ -254,17 +272,17 @@ flavourb = white!70!brown, flavourc/.code = \def\thing@flavourc{#1}, flavour c/.forward to = /thing/flavourc, - flavourc = red!50!white, + flavourc = red!50!white, milkshake/.code = \thing@milkshaketrue - \def\thing@milkshake{#1}, - milkshake/.default = red!20!white, + \def\thing@milkshake{#1}, + milkshake/.default = red!20!white, wine/.code = \thing@winetrue - \def\thing@wine{#1}, - wine/.default = red!70!black, - cocktail/.code = \thing@cocktailtrue, + \def\thing@wine{#1}, + wine/.default = red!70!black, + cocktail/.code = \thing@cocktailtrue, banana/.code = \thing@bananatrue \def\thing@banana{#1}, - banana/.default = yellow!80!orange, + banana/.default = yellow!80!orange, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Sport @@ -286,11 +304,11 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% crystalball/.code = \thing@crystalballtrue \def\thing@crystalball{#1}, - crystal ball/.forward to = /thing/crystalball, - crystalball/.default = cyan, + crystal ball/.forward to = /thing/crystalball, + crystalball/.default = cyan, magicwand/.code = \thing@magicwandtrue, magic want/.forward to = /thing/magicwand, - rollingpin/.code = \thing@rollingpintrue + rollingpin/.code = \thing@rollingpintrue \def\thing@rollingpin{#1}, rolling pin/.forward to = /thing/rollingpin, rollingpin/.default = brown, @@ -347,12 +365,12 @@ umbrella closed/.forward to = /thing/umbrellaclosed, handbag/.code = \thing@handbagtrue \def\thing@handbag{#1}, - handbag/.default = red!70!black, + handbag/.default = red!70!black, stick/.code = \thing@sticktrue \def\thing@stick{#1}, stick/.default = brown!50!black, leaf/.store in = \thing@leaf, - leaf = green!70!red, + leaf = green!70!red, } \def\thing@draw{% @@ -367,7 +385,7 @@ \pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))*sqrt(abs((\pgf@xx/1cm)*(\pgf@yy/1cm)-(\pgf@xy/1cm)*(\pgf@yx/1cm)))}% \pgfmathsetmacro{\xscalefactor}{\tmpscaleA} \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} -\pgfmathsetmacro{\decoscalefactor}{sign(\tmpscaleA)*sign(\tmpscaleD)*\scalingfactor}% +\pgfmathsetmacro{\decoscalefactor}{sign(\tmpscaleA)*sign(\tmpscaleD)*\scalingfactor}% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % @@ -378,15 +396,15 @@ % Hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifthing@hat \fill[\thing@hat,rotate around={-15:(-0.3,2.01)}] (-0.3,2.01) rectangle (0.46,2.31); - \fill[\thing@hat] (0.05,1.92) ellipse[x radius=0.6, y radius=0.1, rotate=-15]; - \fill[\thing@hat] (0.14,2.2) ellipse[x radius=0.37, y radius=0.08, rotate=-15]; + \fill[\thing@hat] (0.05,1.92) ellipse[x radius=0.6, y radius=0.1, rotate=-15]; + \fill[\thing@hat] (0.14,2.2) ellipse[x radius=0.37, y radius=0.08, rotate=-15]; \fi % % Tophat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifthing@tophat \fill[\thing@tophat] (0.1,1.94) ellipse[x radius=0.48, y radius=0.1, rotate=-15]; \fill[\thing@tophat,rotate around={-15:(0.15,2.165)}] (-0.17, 1.94) -- (0.46, 1.94) -- (0.52, 2.39) -- (-0.22, 2.39) -- cycle; - \fill[\thing@tophat] (0.21,2.385) ellipse[x radius=0.37, y radius=0.08, rotate=-15]; + \fill[\thing@tophat] (0.21,2.385) ellipse[x radius=0.37, y radius=0.08, rotate=-15]; \fi % % Beret %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -401,13 +419,13 @@ % Straw hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifthing@strawhat \begin{scope}[xshift=-16,rotate=12,yshift=-1] - \fill[\thing@strawhat,rotate=-15] (0.44,2.0) ellipse[x radius=0.75, y radius=0.1]; + \fill[\thing@strawhat,rotate=-15] (0.44,2.0) ellipse[x radius=0.75, y radius=0.1]; \fill[\thing@strawhat,rotate=-15] (0.1,2.05) rectangle (0.78,2.5); - \fill[\thing@strawhat,rotate=-15] (0.44,2.5) ellipse[x radius=0.34, y radius=0.08]; + \fill[\thing@strawhat,rotate=-15] (0.44,2.5) ellipse[x radius=0.34, y radius=0.08]; \fill[\thing@strawhat,rotate=-15] (-0.3,2.02) -- (1.18,2.02) -- (0.78,2.2) -- (0.1,2.2) -- cycle; - \fill[\thing@ribbon,rotate=-15] (0.44,2.2) ellipse[x radius=0.34, y radius=0.08]; + \fill[\thing@ribbon,rotate=-15] (0.44,2.2) ellipse[x radius=0.34, y radius=0.08]; \fill[\thing@ribbon,rotate=-15] (0.1,2.2) rectangle (0.78,2.3); - \fill[\thing@strawhat,rotate=-15] (0.44,2.3) ellipse[x radius=0.34, y radius=0.08]; + \fill[\thing@strawhat,rotate=-15] (0.44,2.3) ellipse[x radius=0.34, y radius=0.08]; \end{scope} \fi % @@ -424,8 +442,8 @@ % % witch %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifthing@witch - \begin{scope}[xshift=-26] - \fill[\thing@witch,rotate=-15] (0.44,2.13) ellipse[x radius=0.75, y radius=0.17]; + \begin{scope}[xshift=-26] + \fill[\thing@witch,rotate=-15] (0.44,2.13) ellipse[x radius=0.75, y radius=0.17]; \fill[\thing@witch,rotate=-15] (0.05,2.2)--(0.45,3.2)--(0.82,2.2); \end{scope} \fi @@ -433,9 +451,7 @@ % magic hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifthing@magichat \begin{scope}[xshift=-26] - \path[preaction={fill, \thing@magichat!100},rotate=-5, - pattern=fivepointed stars, pattern color=\thing@magicstars!100] - (0.36,1.95)--(0.86,2.95)--(1.20,1.85); + \path[preaction={fill, \thing@magichat!100},rotate=-5,pattern=fivepointed stars, pattern color=\thing@magicstars!100] (0.36,1.95)--(0.86,2.95)--(1.20,1.85); \end{scope} \fi % @@ -502,17 +518,8 @@ % Santa %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifthing@santa \begin{scope}[xshift=-26] - \fill[\thing@santa] - (0.430,1.803) .. controls (0.590,2.174) and (0.837,2.065) .. - (1.118,1.954) .. controls (1.679,1.731) and (1.328,1.193) .. - (1.647,1.057) .. controls (1.638,1.255) and (1.745,2.104) .. - (1.168,2.270) .. controls (0.867,2.356) and (0.536,2.280) .. - (0.430,1.803) -- cycle; - \fill[white!80!brown] - (0.44,1.733) .. controls (0.211,2.299) and (1.082,2.188) .. - (1.456,1.759) .. controls (1.534,1.637) and (1.480,1.545) .. - (1.400,1.566) .. controls (1.265,1.714) and (0.577,2.267) .. - (0.44,1.733) -- cycle; + \fill[\thing@santa] (0.430,1.803) .. controls (0.590,2.174) and (0.837,2.065) .. (1.118,1.954) .. controls (1.679,1.731) and (1.328,1.193) .. (1.647,1.057) .. controls (1.638,1.255) and (1.745,2.104) .. (1.168,2.270) .. controls (0.867,2.356) and (0.536,2.280) .. (0.430,1.803) -- cycle; + \fill[white!80!brown] (0.44,1.733) .. controls (0.211,2.299) and (1.082,2.188) .. (1.456,1.759) .. controls (1.534,1.637) and (1.480,1.545) .. (1.400,1.566) .. controls (1.265,1.714) and (0.577,2.267) .. (0.44,1.733) -- cycle; \fill[white!80!brown] (1.6,1.0) circle[radius=0.17]; \end{scope} \fi @@ -520,7 +527,7 @@ % Chef hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifthing@chef \begin{scope}[xshift=-26] - \fill[\thing@chef,rotate=-15] (0.44,2.1) ellipse[x radius=0.37, y radius=0.08]; + \fill[\thing@chef,rotate=-15] (0.44,2.1) ellipse[x radius=0.37, y radius=0.08]; \fill[\thing@chef,rotate=-15] (0.07,2.1) rectangle (0.81,2.55); \fill[\thing@chef] (1.01,2.47) circle[radius=0.17]; \fill[\thing@chef] (1.24,2.35) circle[radius=0.15]; @@ -532,7 +539,7 @@ % graduate hat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifthing@graduate \begin{scope}[xshift=-26] - \fill[\thing@graduate,rotate=-15] (0.44,2.1) ellipse[x radius=0.37, y radius=0.1]; + \fill[\thing@graduate,rotate=-15] (0.44,2.1) ellipse[x radius=0.37, y radius=0.1]; \fill[\thing@graduate,rotate=-15] (0.07,2.1) rectangle (0.81,2.3); \fill[\thing@graduate] (0.3,2.25) -- (1.05,2.35) -- (1.7,1.95) -- (0.92,1.85) -- cycle; \fill[\thing@tassel,rounded corners=\scalingfactor*1] (1.12,1.89) -- (1.01,2.1) -- (1.09,2.11) -- (1.2,1.9) -- (1.2,1.3) -- (1.12,1.3) -- cycle; @@ -548,9 +555,9 @@ \draw[decorate,decoration={zigzag, amplitude=\decoscalefactor*1pt, segment length=\scalingfactor*6pt},\thing@sombreroa, line width=\scalingfactor*1pt] (-0.81, 1.8) .. controls (-0.30, 2.1) and (0.30, 2.1) .. ( 0.82, 1.8); \begin{scope} \clip (-.45,2) to[in=200] (0,2.8) to[out=-20] (.45,2) -- cycle; - \draw[decorate,decoration={zigzag, amplitude=\decoscalefactor*1pt, segment length=\scalingfactor*3pt},\thing@sombreroa, line width=\scalingfactor*1pt] (-.4,2.4) to[bend left] (.4,2.4); - \fill[decorate,decoration={shape backgrounds,shape=circle, shape size=\scalingfactor*2pt, shape evenly spread=7}, \thing@sombreroc] (-.3,2.6) to[bend left] (.3,2.6); - \fill[decorate,decoration={shape backgrounds,shape=circle,shape size=\scalingfactor*2pt,shape evenly spread=9},\thing@sombreroc] (-.4,2.18) to[bend left] (.4,2.18); + \draw[decorate,decoration={zigzag, amplitude=\decoscalefactor*1pt, segment length=\scalingfactor*3pt},\thing@sombreroa, line width=\scalingfactor*1pt] (-.4,2.4) to[bend left] (.4,2.4); + \fill[decorate,decoration={shape backgrounds,shape=circle, shape size=\scalingfactor*2pt, shape evenly spread=7}, \thing@sombreroc] (-.3,2.6) to[bend left] (.3,2.6); + \fill[decorate,decoration={shape backgrounds,shape=circle,shape size=\scalingfactor*2pt,shape evenly spread=9},\thing@sombreroc] (-.4,2.18) to[bend left] (.4,2.18); \end{scope} \fi % @@ -571,8 +578,7 @@ % book %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifthing@book \begin{scope}[xshift=-25,yshift=1] - \fill[\thing@bookcolour,rotate=-20] - (0.40,1.20) rectangle (0.80,0.60); + \fill[\thing@bookcolour,rotate=-20] (0.40,1.20) rectangle (0.80,0.60); \node[rotate=-20*\yscalefactor/\xscalefactor, color=white] at (0.88,0.70) {\thing@book};% \end{scope} \fi @@ -599,7 +605,7 @@ % think bubble %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifthing@think \begin{scope}[xshift=-26] - \fill[\thing@bubblecolour] (2,2.4) ellipse[x radius=0.7, y radius=0.35]; + \fill[\thing@bubblecolour] (2,2.4) ellipse[x radius=0.7, y radius=0.35]; \fill[\thing@bubblecolour] (1.55,2.35) circle[radius=0.25] (2.0,2.15) circle[radius=0.25] (2.4,2.25) circle[radius=0.25] (1.6,2.55) circle[radius=0.25] (2.0,2.6) circle[radius=0.25] (2.35,2.5) circle[radius=0.25] (1.65,1.95) circle[radius=0.1] (1.55,1.80) circle[radius=0.06] (1.47,1.70) circle[radius=0.03]; \node at (2,2.4) {\thing@think}; \end{scope} @@ -616,9 +622,9 @@ \begin{scope}[xshift=-28,yshift=2] \fill[brown] (1.00,0.60) ellipse[x radius=0.4, y radius=0.2]; \fill[red!70!black] (1.00,0.60) ellipse[x radius=0.34, y radius=0.16]; - \fill[white!85!yellow] (1.15,0.65) ellipse[x radius=0.065, y radius=0.04]; - \fill[white!85!yellow] (0.81,0.57) ellipse[x radius=0.065, y radius=0.04]; - \fill[white!85!yellow] (0.95,0.68) ellipse[x radius=0.065, y radius=0.04]; + \fill[white!85!yellow] (1.15,0.65) ellipse[x radius=0.065, y radius=0.04]; + \fill[white!85!yellow] (0.81,0.57) ellipse[x radius=0.065, y radius=0.04]; + \fill[white!85!yellow] (0.95,0.68) ellipse[x radius=0.065, y radius=0.04]; \fill[white!85!yellow] (1.02,0.54) ellipse[x radius=0.065, y radius=0.04]; \fill[green!40!brown] (1.09,0.54) ellipse[x radius=0.07, y radius=0.02]; \fill[green!40!brown,rotate=20] (1.0,0.34) ellipse[x radius=0.07, y radius=0.02]; @@ -631,18 +637,18 @@ \begin{scope}[xshift=-28,yshift=2] \fill[brown] (1.00,0.60) ellipse[x radius=0.4, y radius=0.2]; \fill[red!70!black] (1.00,0.60) ellipse[x radius=0.34, y radius=0.16]; - \fill[yellow!70!brown] (1.15,0.65) ellipse[x radius=0.08, y radius=0.06]; - \fill[red!70!black] (1.15,0.65) ellipse[x radius=0.04, y radius=0.03]; - \fill[yellow!70!brown] (0.81,0.57) ellipse[x radius=0.08, y radius=0.06]; - \fill[red!70!black] (0.81,0.57) ellipse[x radius=0.04, y radius=0.03]; - \fill[yellow!70!brown] (0.95,0.68) ellipse[x radius=0.08, y radius=0.06]; - \fill[red!70!black] (0.95,0.68) ellipse[x radius=0.04, y radius=0.03]; + \fill[yellow!70!brown] (1.15,0.65) ellipse[x radius=0.08, y radius=0.06]; + \fill[red!70!black] (1.15,0.65) ellipse[x radius=0.04, y radius=0.03]; + \fill[yellow!70!brown] (0.81,0.57) ellipse[x radius=0.08, y radius=0.06]; + \fill[red!70!black] (0.81,0.57) ellipse[x radius=0.04, y radius=0.03]; + \fill[yellow!70!brown] (0.95,0.68) ellipse[x radius=0.08, y radius=0.06]; + \fill[red!70!black] (0.95,0.68) ellipse[x radius=0.04, y radius=0.03]; \fill[yellow!70!brown] (1.02,0.54) ellipse[x radius=0.08, y radius=0.06]; - \fill[red!70!black] (1.02,0.54) ellipse[x radius=0.04, y radius=0.03]; + \fill[red!70!black] (1.02,0.54) ellipse[x radius=0.04, y radius=0.03]; \fill[green!40!brown] (1.09,0.54) ellipse[x radius=0.07, y radius=0.02]; \fill[green!40!brown,rotate=20] (1.0,0.34) ellipse[x radius=0.07, y radius=0.02]; \fill[green!40!brown,rotate=-20] (0.9,1.05) ellipse[x radius=0.07, y radius=0.02]; - \fill[green!40!brown] (1.00,0.60) ellipse[x radius=0.03, y radius=0.06]; + \fill[green!40!brown] (1.00,0.60) ellipse[x radius=0.03, y radius=0.06]; \end{scope} \fi % @@ -682,7 +688,7 @@ \fill[\thing@cone,rotate=-20] (0.35,1.20)--(0.50,0.60)--(0.75,1.20); \fill[\thing@flavoura] (0.85,1.03) circle[radius=0.12]; \fill[\thing@flavourb] (1.05,0.95) circle[radius=0.12]; - \fill[\thing@flavourc] (0.95,1.1) circle[radius=0.12]; + \fill[\thing@flavourc] (0.95,1.1) circle[radius=0.12]; \end{scope} \fi % @@ -692,7 +698,7 @@ \fill[cyan!10!white, rotate=-10] (0.8,0.50) ellipse[x radius=0.17, y radius=0.05]; \fill[cyan!10!white, rotate=-10] (0.8,0.55) ellipse[x radius=0.12, y radius=0.03]; \begin{scope} - \clip[rotate=-10] (0.58,0.5) rectangle (1.02,1.03); + \clip[rotate=-10] (0.58,0.5) rectangle (1.02,1.03); \fill[cyan!10!white, rotate=-10] (0.8,0.94) ellipse[x radius=0.18, y radius=0.4]; \fill[\thing@milkshake, rotate=-10] (0.8,0.94) ellipse[x radius=0.15, y radius=0.36]; \end{scope} @@ -700,7 +706,7 @@ \fill[red!90!black] (1.0,1.1) circle[radius=0.05]; \fill[white!85!yellow] (0.94,1.05) circle[radius=0.05] (1.03,1.03) circle[radius=0.05]; \fill[cyan!10!white, rotate=-10] (0.8,0.50) ellipse[x radius=0.17, y radius=0.05]; - \fill[red!90!black,rotate=20] (1.2,0.58) rectangle (1.22,0.85); + \fill[red!90!black,rotate=20] (1.2,0.58) rectangle (1.22,0.85); \end{scope} \fi % @@ -711,11 +717,11 @@ \fill[cyan!10!white, rotate=-10] (0.8,0.55) ellipse[x radius=0.12, y radius=0.03]; \fill[cyan!10!white, rotate=-10] (0.8,0.7) ellipse[x radius=0.03, y radius=0.2]; \begin{scope} - \clip[rotate=-10] (0.58,0.5) rectangle (1.02,1.03); + \clip[rotate=-10] (0.58,0.5) rectangle (1.02,1.03); \fill[cyan!10!white, rotate=-10] (0.8,1.1) ellipse[x radius=0.18, y radius=0.4]; \end{scope} \begin{scope} - \clip[rotate=-10] (0.58,0.5) rectangle (1.02,0.87); + \clip[rotate=-10] (0.58,0.5) rectangle (1.02,0.87); \fill[\thing@wine, rotate=-10] (0.8,1.1) ellipse[x radius=0.15, y radius=0.36]; \end{scope} \end{scope} @@ -790,7 +796,7 @@ \ifthing@crystalball \shade[ball color=\thing@crystalball,opacity=0.7] (0,0.8) circle[radius=0.33]; \fi -% +% % magic wand %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifthing@magicwand \begin{scope}[xshift=-16,yshift=2] @@ -818,51 +824,36 @@ % torch %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifthing@torch \begin{scope}[xshift=-26] - \fill[red!50!yellow] - (1.4338,1.025) .. controls (1.4308,0.8877) and (1.3468,0.8997) .. - (1.2447,0.748) .. controls (1.1427,0.8982) and (1.0721,0.8892) .. - (1.0646,1.024) .. controls (1.0541,1.1714) and (1.2642,1.1654) .. - (1.2492,1.386) .. controls (1.3093,1.3110) and (1.4383,1.2705) .. - (1.4338,1.025) -- cycle; - \fill[red!25!yellow, scale=0.67, xshift=17, yshift=15] - (1.4338,1.025) .. controls (1.4308,0.8877) and (1.3468,0.8997) .. - (1.2447,0.748) .. controls (1.1427,0.8982) and (1.0721,0.8892) .. - (1.0646,1.024) .. controls (1.0541,1.1714) and (1.2642,1.1654) .. - (1.2492,1.386) .. controls (1.3093,1.3110) and (1.4383,1.2705) .. - (1.4338,1.025) -- cycle; - \fill[white!50!yellow, scale=0.4, xshift=53.5, yshift=45.3] - (1.4338,1.025) .. controls (1.4308,0.8877) and (1.3468,0.8997) .. - (1.2447,0.748) .. controls (1.1427,0.8982) and (1.0721,0.8892) .. - (1.0646,1.024) .. controls (1.0541,1.1714) and (1.2642,1.1654) .. - (1.2492,1.386) .. controls (1.3093,1.3110) and (1.4383,1.2705) .. - (1.4338,1.025) -- cycle; + \fill[red!50!yellow] (1.4338,1.025) .. controls (1.4308,0.8877) and (1.3468,0.8997) .. (1.2447,0.748) .. controls (1.1427,0.8982) and (1.0721,0.8892) .. (1.0646,1.024) .. controls (1.0541,1.1714) and (1.2642,1.1654) .. (1.2492,1.386) .. controls (1.3093,1.3110) and (1.4383,1.2705) .. (1.4338,1.025) -- cycle; + \fill[red!25!yellow, scale=0.67, xshift=17, yshift=15] (1.4338,1.025) .. controls (1.4308,0.8877) and (1.3468,0.8997) .. (1.2447,0.748) .. controls (1.1427,0.8982) and (1.0721,0.8892) .. (1.0646,1.024) .. controls (1.0541,1.1714) and (1.2642,1.1654) .. (1.2492,1.386) .. controls (1.3093,1.3110) and (1.4383,1.2705) .. (1.4338,1.025) -- cycle; + \fill[white!50!yellow, scale=0.4, xshift=53.5, yshift=45.3] (1.4338,1.025) .. controls (1.4308,0.8877) and (1.3468,0.8997) .. (1.2447,0.748) .. controls (1.1427,0.8982) and (1.0721,0.8892) .. (1.0646,1.024) .. controls (1.0541,1.1714) and (1.2642,1.1654) .. (1.2492,1.386) .. controls (1.3093,1.3110) and (1.4383,1.2705) .. (1.4338,1.025) -- cycle; \fill[\thing@torch,rounded corners=\scalingfactor*1] (1.1,0.96) -- (0.77,0.25) -- (0.83,0.25) -- (1.3,0.86) -- cycle; \fill[\thing@torch,rotate=-28] (0.62,1.32) ellipse[x radius=0.2, y radius=0.08]; \end{scope} \fi% -% +% % basket %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifthing@basket \begin{scope}[xshift=-28.5] \fill[\thing@basket, start angle=180, end angle=360, x radius=0.35, y radius=0.35] (0.65,0.61) arc -- cycle; \fill[\thing@basket, start angle=180, end angle=0, even odd rule] [x radius=0.35, y radius=0.5] (0.65,0.6) arc -- cycle [x radius=0.3, y radius=0.45] (0.7,0.6) arc -- cycle; - \fill[\thing@basket, even odd rule] (1,0.6) ellipse[x radius=0.35, y radius=0.1] (1,0.6) ellipse[x radius=0.3, y radius=0.07]; + \fill[\thing@basket, even odd rule] (1,0.6) ellipse[x radius=0.35, y radius=0.1] (1,0.6) ellipse[x radius=0.3, y radius=0.07]; \fill[\thing@basket!75!black] (1,0.6) ellipse[x radius=0.3, y radius=0.07]; - \end{scope} -\fi% + \end{scope} +\fi% % % easter basket %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifthing@easter \begin{scope}[xshift=-28.5] \begin{scope} - \clip [start angle=180, end angle=0, x radius=0.3, y radius=0.45] (0.7,0.6) arc -- cycle [start angle=180, end angle=360, x radius=0.3, y radius=0.07] (0.7,0.6) arc -- cycle; + \clip [start angle=180, end angle=0, x radius=0.3, y radius=0.45] (0.7,0.6) arc -- cycle [start angle=180, end angle=360, x radius=0.3, y radius=0.07] (0.7,0.6) arc -- cycle; \fill[\thing@eggb, rotate=-5] (0.95,0.72) ellipse[x radius=0.09, y radius=0.13]; \fill[\thing@egga, rotate=10] (0.94,0.42) ellipse[x radius=0.09, y radius=0.13]; \fill[\thing@eggc, rotate=-30] (0.7,1.08) ellipse[x radius=0.09, y radius=0.13]; \end{scope} - \end{scope} -\fi% + \end{scope} +\fi% % % crozier %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifthing@crozier @@ -871,7 +862,7 @@ \clip [rotate=-20] (0.6,2.3) rectangle (1.1,1.999); \fill[even odd rule,\thing@crozier] (1.5,1.6) circle[radius=0.2] (1.5,1.6) circle[radius=0.1]; \end{scope} - \fill[\thing@crozier,rotate=-20] (0.663,0.5) rectangle (0.763,2.0); + \fill[\thing@crozier,rotate=-20] (0.663,0.5) rectangle (0.763,2.0); \end{scope} \fi % @@ -935,9 +926,9 @@ \fill[\thing@leaf] (-0.01,0) .. controls (-0.1,0) and (-0.02, 0.2) .. (0,0.2) .. controls (0.02, 0.2) and (0.1,0) .. (0.01,0.0); \path[clip] (-0.04,-0.04)-- (-0.01,0) .. controls (-0.1,0) and (-0.02, 0.2) .. (0,0.2) .. controls (0.02, 0.2) and (0.1,0) .. (0.01,0)-- (0.04,-0.04) --cycle; \draw[\thing@leaf!80!, line width=0.1] (0,-0.04) -- (0,0.2) \foreach \i in {0.02,0.04,...,0.2} {(0,\i) -- ++(0.1,\i) (0,\i) -- ++(-0.1,\i)} ; - \end{scope} + \end{scope} %stick itself - \fill[\thing@stick!90!red] (-0.04,0.8) -- (-0.04,0.4) arc[start angle=345,end angle=270,radius=0.03] -- ++(0,-0.01) arc[start angle=90,end angle=15,radius=0.03] -- (-0.04,0) arc [start angle=180, end angle=360 ,x radius=0.04, y radius=0.02] -- (0.04, 0.4) arc [start angle=180, end angle=120, radius=0.08] arc [start angle=-90, end angle=90, x radius=0.02, y radius=0.04] arc [start angle=240, end angle=180, radius=0.08] -- (0.04,0.75) arc [start angle=0, end angle=120 ,x radius=0.04, y radius=0.02] --cycle; + \fill[\thing@stick!90!red] (-0.04,0.8) -- (-0.04,0.4) arc[start angle=345,end angle=270,radius=0.03] -- ++(0,-0.01) arc[start angle=90,end angle=15,radius=0.03] -- (-0.04,0) arc [start angle=180, end angle=360 ,x radius=0.04, y radius=0.02] -- (0.04, 0.4) arc [start angle=180, end angle=120, radius=0.08] arc [start angle=-90, end angle=90, x radius=0.02, y radius=0.04] arc [start angle=240, end angle=180, radius=0.08] -- (0.04,0.75) arc [start angle=0, end angle=120 ,x radius=0.04, y radius=0.02] --cycle; \fill[\thing@stick!90!] (0.08, 0.51) ellipse [x radius=0.02, y radius=0.04] (0,0.75) ellipse [x radius=0.04, y radius=0.02] ; \draw[\thing@stick!90!red, line width=0.06] (0.08, 0.51) ellipse [x radius=0.016, y radius=0.032] ellipse [x radius=0.012, y radius=0.024] ellipse [x radius=0.008, y radius=0.016] (0,0.75) ellipse [y radius=0.016, x radius=0.032] ellipse [y radius=0.012, x radius=0.024] ellipse [y radius=0.008, x radius=0.016] ; @@ -946,3 +937,19 @@ \fi % } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Random items +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\pgfmathdeclarerandomlist{head}{\thing@listhead} +\pgfmathdeclarerandomlist{accessories}{\thing@listacces} + +\def\shufflethings{% + \pgfmathrandomitem{\head}{head}% + \edef\randomhead{\head}% + \pgfmathrandomitem{\accessories}{accessories}% + \edef\randomaccessories{\accessories}% +} diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-anteaters.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-anteaters.sty index 752231cc5b5..a8dfafb0b69 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-anteaters.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-anteaters.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-anteaters}[2024/12/12 version v2.1 Drawing anteaters in TikZ] +\ProvidesPackage{tikzlings-anteaters}[2025/01/05 version v2.2 Drawing anteaters in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -50,28 +50,28 @@ body/.store in = \anteater@body, body = red!55!green!75!blue!66!white, eye/.store in = \anteater@eye, - eye = \anteater@body!70!brown!50!darkgray, + eye = \anteater@body!70!brown!50!darkgray, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % options % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - 3D/.code = \anteater@threeDtrue, + 3D/.code = \anteater@threeDtrue, leftstep/.code = \anteater@leftsteptrue, left step/.forward to = /anteater/leftstep, rightstep/.code = \anteater@rightsteptrue, - right step/.forward to = /anteater/rightstep, - back/.code = \anteater@backtrue, + right step/.forward to = /anteater/rightstep, + back/.code = \anteater@backtrue, contour/.code = \anteater@contourtrue \def\anteater@contour{#1}, - contour/.default = black, - outline/.forward to = /anteater/contour, + contour/.default = black, + outline/.forward to = /anteater/contour, } \def\anteater@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.75,0.1) rectangle (1.12,2.26); @@ -89,7 +89,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -107,25 +107,25 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname anteaterhookbackground\endcsname \csname tikzlinghookbackground\endcsname - % + % % Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifanteater@leftstep - \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; + \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; \else% step - \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; + \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; \fi% step % \ifanteater@rightstep \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; \else% step \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; - \fi% step + \fi% step % % Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \unless\ifanteater@back @@ -140,9 +140,8 @@ % % Collar %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifanteater@back - \anteater@part@draw[\anteater@body!45!white!95!orange] (-0,1.47) ellipse [x radius=0.36, y radius=0.28]; - \anteater@part@draw[\anteater@body!70!brown!50!darkgray] - (-0,1.47) ellipse [x radius=0.35, y radius=0.23]; + \anteater@part@draw[\anteater@body!45!white!95!orange] (-0,1.47) ellipse [x radius=0.36, y radius=0.28]; + \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (-0,1.47) ellipse [x radius=0.35, y radius=0.23]; \else% back \anteater@part@draw[\anteater@body!45!white!95!orange] (0.33, 1.55) -- (-0.33, 1.55) .. controls (-0.5, 1.05) and (-0.1, 0.95) .. (0, 0.60) .. controls (0.1, 0.95) and (0.5, 1.05) .. (0.33, 1.55) -- cycle; \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (0.33, 1.55) -- (-0.33, 1.55) .. controls (-0.45, 1.1) and (-0.1, 1) .. (0, 0.70) .. controls (0.1, 1) and (0.45, 1.1) .. (0.33, 1.55) -- cycle; @@ -151,15 +150,15 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname anteaterhookbelly\endcsname \csname tikzlinghookbelly\endcsname - % + % \ifanteater@back % Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \anteater@part@draw[\anteater@body] (-0,1.73) ellipse [x radius=0.36, y radius=0.33]; % % Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (0.5551, 2.2281) .. controls (0.4961, 2.2273) and (0.4390, 2.2093) .. (0.3831, 2.1919) .. controls (0.3282, 2.173) and (0.2725, 2.1539) .. (0.2231, 2.1228) .. controls (0.1875, 2.0984) and (0.1524, 2.0637) .. (0.1470, 2.0187) .. controls (0.1446, 2.0028) and (0.1518, 1.9881) .. (0.1584, 1.9744) .. controls (0.1706, 1.9343) and (0.2090, 1.9063) .. (0.25, 1.9017) .. controls (0.3079, 1.8943) and (0.3684, 1.9134) .. (0.4132, 1.9504) .. controls (0.4657, 1.9988) and (0.5111, 2.0545) .. (0.5513, 2.1133) .. controls (0.5692, 2.1404) and (0.5854, 2.1692) .. (0.5945, 2.2004) .. controls (0.5989, 2.2232) and (0.5717, 2.2282) .. (0.5551, 2.2281) -- cycle; - \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (-0.5551, 2.2281) .. controls (-0.4961, 2.2273) and (-0.4390, 2.2093) .. (-0.3831, 2.1919) .. controls (-0.3282, 2.173) and (-0.2725, 2.1539) .. (-0.2231, 2.1228) .. controls (-0.1875, 2.0984) and (-0.1524, 2.0637) .. (-0.1470, 2.0187) .. controls (-0.1446, 2.0028) and (-0.1518, 1.9881) .. (-0.1584, 1.9744) .. controls (-0.1706, 1.9343) and (-0.2090, 1.9063) .. (-0.25, 1.9017) .. controls (-0.3079, 1.8943) and (-0.3684, 1.9134) .. (-0.4132, 1.9504) .. controls (-0.4657, 1.9988) and (-0.5111, 2.0545) .. (-0.5513, 2.1133) .. controls (-0.5692, 2.1404) and (-0.5854, 2.1692) .. (-0.5945, 2.2004) .. controls (-0.5989, 2.2232) and (-0.5717, 2.2282) .. (-0.5551, 2.2281) -- cycle; - % + \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (0.5551, 2.2281) .. controls (0.4961, 2.2273) and (0.4390, 2.2093) .. (0.3831, 2.1919) .. controls (0.3282, 2.173) and (0.2725, 2.1539) .. (0.2231, 2.1228) .. controls (0.1875, 2.0984) and (0.1524, 2.0637) .. (0.1470, 2.0187) .. controls (0.1446, 2.0028) and (0.1518, 1.9881) .. (0.1584, 1.9744) .. controls (0.1706, 1.9343) and (0.2090, 1.9063) .. (0.25, 1.9017) .. controls (0.3079, 1.8943) and (0.3684, 1.9134) .. (0.4132, 1.9504) .. controls (0.4657, 1.9988) and (0.5111, 2.0545) .. (0.5513, 2.1133) .. controls (0.5692, 2.1404) and (0.5854, 2.1692) .. (0.5945, 2.2004) .. controls (0.5989, 2.2232) and (0.5717, 2.2282) .. (0.5551, 2.2281) -- cycle; + \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (-0.5551, 2.2281) .. controls (-0.4961, 2.2273) and (-0.4390, 2.2093) .. (-0.3831, 2.1919) .. controls (-0.3282, 2.173) and (-0.2725, 2.1539) .. (-0.2231, 2.1228) .. controls (-0.1875, 2.0984) and (-0.1524, 2.0637) .. (-0.1470, 2.0187) .. controls (-0.1446, 2.0028) and (-0.1518, 1.9881) .. (-0.1584, 1.9744) .. controls (-0.1706, 1.9343) and (-0.2090, 1.9063) .. (-0.25, 1.9017) .. controls (-0.3079, 1.8943) and (-0.3684, 1.9134) .. (-0.4132, 1.9504) .. controls (-0.4657, 1.9988) and (-0.5111, 2.0545) .. (-0.5513, 2.1133) .. controls (-0.5692, 2.1404) and (-0.5854, 2.1692) .. (-0.5945, 2.2004) .. controls (-0.5989, 2.2232) and (-0.5717, 2.2282) .. (-0.5551, 2.2281) -- cycle; + % \else% back % % Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -169,19 +168,18 @@ (-0.4086, 1.9465) .. controls (-0.4679, 1.9952) and (-0.6205, 2.1813) .. (-0.5862, 2.2146) .. controls (-0.5517, 2.2477) and (-0.3434, 2.1152) .. (-0.2841, 2.0665) .. controls (-0.2249, 2.0177) and (-0.2048, 1.9515) .. (-0.2391, 1.9184) .. controls (-0.2736, 1.8853) and (-0.3494, 1.8979) .. (-0.40861, 1.9465) -- cycle; % % Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \anteater@part@draw[\anteater@body] - (0.33, 1.71) .. controls (0.16, 1.52) and (0.1, 1.5) .. (0.08, 1.05) .. controls (0.07, 1) and (-0.07, 1) .. (-0.08, 1.05) .. controls (-0.1, 1.5) and (-0.16, 1.52) .. (-0.33, 1.7) .. controls (-0.45, 1.85) and (-0.22, 2.05) .. (0, 2.05) .. controls (0.22, 2.05) and (0.45, 1.85) .. (0.33, 1.7) -- cycle; + \anteater@part@draw[\anteater@body] (0.33, 1.71) .. controls (0.16, 1.52) and (0.1, 1.5) .. (0.08, 1.05) .. controls (0.07, 1) and (-0.07, 1) .. (-0.08, 1.05) .. controls (-0.1, 1.5) and (-0.16, 1.52) .. (-0.33, 1.7) .. controls (-0.45, 1.85) and (-0.22, 2.05) .. (0, 2.05) .. controls (0.22, 2.05) and (0.45, 1.85) .. (0.33, 1.7) -- cycle; % % Cheeks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \anteater@part@draw[\anteater@body!45!white!95!orange] (0.3508, 1.739) .. controls (0.3508, 1.739) and (0.2861, 1.8489) .. (0.1571, 1.7664) .. controls (0.0279, 1.684) and (0.0627, 1.0524) .. (0.0627, 1.0524) .. controls (0.0627, 1.0524) and (0.131, 1.3772) .. (0.2314, 1.44) .. controls (0.3599, 1.5206) and (0.3508, 1.739) .. (0.3508, 1.739) -- cycle (-0.3508, 1.739) .. controls (-0.3508, 1.739) and (-0.2861, 1.8489) .. (-0.1571, 1.7664) .. controls (-0.0279, 1.684) and (-0.0627, 1.0524) .. (-0.0627, 1.0524) .. controls (-0.0627, 1.0524) and (-0.131, 1.3772) .. (-0.2314, 1.44) .. controls (-0.3599, 1.5206) and (-0.3508, 1.739) .. (-0.3508, 1.739) -- cycle; - % + % % Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \anteater@part@draw[\anteater@body!70!brown!50!darkgray] (0, 1.08) ellipse[x radius=0.08, y radius=0.05]; % % Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \anteater@part@draw[\anteater@eye] (0.23, 1.7) circle[radius=0.05]; - \anteater@part@draw[\anteater@eye] (-0.23, 1.7) circle[radius=0.05]; + \anteater@part@draw[\anteater@eye] (-0.23, 1.7) circle[radius=0.05]; \fi% back % % Tail if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -192,7 +190,7 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname anteaterhookbody\endcsname \csname tikzlinghookbody\endcsname - % + % } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-apes.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-apes.sty index 6f071aaa89b..58edf5c636a 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-apes.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-apes.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-apes}[2024/12/12 version v2.1 Drawing apes in TikZ] +\ProvidesPackage{tikzlings-apes}[2025/01/05 version v2.2 Drawing apes in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -54,8 +54,8 @@ body/.store in = \ape@body, body = red!15!brown!80!black, eye/.store in = \ape@eye, - eye = \ape@body!40!black, - eyes/.forward to = /ape/eye, + eye = \ape@body!40!black, + eyes/.forward to = /ape/eye, skin/.store in = \ape@skin, skin = \ape@body!50!gray, nose/.store in = \ape@nose, @@ -73,29 +73,30 @@ % options % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - 3D/.code = \ape@threeDtrue, + 3D/.code = \ape@threeDtrue, handposition/.code = \csname ape@handposition@#1true\endcsname, - kikazaru/.code = \ape@handposition@hearnoeviltrue, + kikazaru/.code = \ape@handposition@hearnoeviltrue, mizaru/.code = \ape@handposition@seenoeviltrue, iwazaru/.code = \ape@handposition@speaknoeviltrue, - %clap/.code = \ape@handposition@claptrue, %%% should we support this too? - %waving/.code = \ape@handposition@wavingtrue, %%% should we support this too? - hearnoevil/.code = \ape@handposition@hearnoeviltrue, - seenoevil/.code = \ape@handposition@seenoeviltrue, + %clap/.code = \ape@handposition@claptrue, %%% should we support this too? + %waving/.code = \ape@handposition@wavingtrue, %%% should we support this too? + hearnoevil/.code = \ape@handposition@hearnoeviltrue, + seenoevil/.code = \ape@handposition@seenoeviltrue, speaknoevil/.code = \ape@handposition@speaknoeviltrue, back/.code = \ape@backtrue, openmouth/.code = \ape@openmouthtrue, + open mouth/.forward to = /ape/openmouth, contour/.code = \ape@contourtrue \def\ape@contour{#1} \def\ape@mouth{#1}, - contour/.default = black, + contour/.default = black, outline/.forward to = /ape/contour, } \def\ape@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-1.435,0.1) rectangle (1.435, 2.27); @@ -112,7 +113,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -130,12 +131,12 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname apehookbackground\endcsname - \csname tikzlinghookbackground\endcsname + \csname tikzlinghookbackground\endcsname % % Draw backside partially in reversed order %%%%%%%%%%%%%%%%%%%%%%%% \ifape@back @@ -149,19 +150,19 @@ \ape@part@draw[\ape@arms] (0.9,1.61) ellipse[x radius=0.15, y radius=0.6, rotate=125]; % see-no-evil pose backside %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \else\ifape@handposition@seenoevil% - \ape@part@draw[\ape@skin!90!white] (-0.325,1.91) ++(390:0.3 and 0.1) arc [start angle=390, end angle=150,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=150, end angle=-60,x radius=0.15, y radius=0.03] } -- cycle; + \ape@part@draw[\ape@skin!90!white] (-0.325,1.91) ++(390:0.3 and 0.1) arc [start angle=390, end angle=150,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=150, end angle=-60,x radius=0.15, y radius=0.03] } -- cycle; \ape@part@draw[\ape@arms] (-0.59,1.97) arc [start angle=25, end angle=335,x radius=0.475, y radius=0.15] --cycle; \ape@part@draw[\ape@arms] (-0.93,1.70) ellipse[x radius=0.15, y radius=0.6, rotate=70]; - \ape@part@draw[\ape@skin!90!white] (0.325,1.91) ++(150:0.3 and 0.1) arc [start angle=150, end angle=390,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=30, end angle=240,x radius=0.15, y radius=0.03] } -- cycle; - \ape@part@draw[\ape@arms] (0.59,1.97) arc [start angle=155, end angle=-155,x radius=0.475, y radius=0.15] --cycle; + \ape@part@draw[\ape@skin!90!white] (0.325,1.91) ++(150:0.3 and 0.1) arc [start angle=150, end angle=390,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=30, end angle=240,x radius=0.15, y radius=0.03] } -- cycle; + \ape@part@draw[\ape@arms] (0.59,1.97) arc [start angle=155, end angle=-155,x radius=0.475, y radius=0.15] --cycle; \ape@part@draw[\ape@arms] (0.93,1.70) ellipse[x radius=0.15, y radius=0.6, rotate=110]; % speak-no-evil pose backside %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \else\ifape@handposition@speaknoevil% \ape@part@draw[\ape@arms] (-0.85,1.55) ellipse[x radius=0.15, y radius=0.6, rotate=-100]; - \ape@part@draw[\ape@skin!90!white] (-0.275,1.46) ++(390:0.3 and 0.1) arc [start angle=390, end angle=150,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=150, end angle=-60,x radius=0.15, y radius=0.03] } -- cycle; + \ape@part@draw[\ape@skin!90!white] (-0.275,1.46) ++(390:0.3 and 0.1) arc [start angle=390, end angle=150,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=150, end angle=-60,x radius=0.15, y radius=0.03] } -- cycle; \ape@part@draw[\ape@arms] (-0.53,1.52) {[rotate=-10] arc [start angle=15, end angle=335,x radius=0.475, y radius=0.15]} --cycle; \ape@part@draw[\ape@arms] (0.85,1.55) ellipse[x radius=0.15, y radius=0.6, rotate=100]; - \ape@part@draw[\ape@skin!90!white] (0.275,1.46) ++(150:0.3 and 0.1) arc [start angle=150, end angle=390,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=30, end angle=240,x radius=0.15, y radius=0.03] } -- cycle; + \ape@part@draw[\ape@skin!90!white] (0.275,1.46) ++(150:0.3 and 0.1) arc [start angle=150, end angle=390,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=30, end angle=240,x radius=0.15, y radius=0.03] } -- cycle; \ape@part@draw[\ape@arms] (0.53,1.52) {[rotate=10] arc [start angle=165, end angle=-155,x radius=0.475, y radius=0.15]} --cycle; % clapping hand pose backside %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \else\ifape@handposition@clap% @@ -173,9 +174,9 @@ \ape@part@draw[\ape@arms] (0.75,1.95) ellipse[x radius=0.15, y radius=0.6, rotate=150]; % waving left hand pose backside %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \else\ifape@handposition@waving% - \ape@part@draw[\ape@arms] (-0.53,1.115) {[rotate=5] arc [start angle=25, end angle=335,x radius=0.475, y radius=0.15]} --cycle; + \ape@part@draw[\ape@arms] (-0.53,1.115) {[rotate=5] arc [start angle=25, end angle=335,x radius=0.475, y radius=0.15]} --cycle; \ape@part@draw[\ape@arms] (-0.9,1.25) ellipse[x radius=0.15, y radius=0.6, rotate=-60]; - \ape@part@draw[\ape@skin!90!white] (0.97,3.2) ++(390:0.3 and 0.1) {[rotate=90] arc [start angle=390, end angle=150,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=150, end angle=-60,x radius=0.15, y radius=0.03] } -- cycle}; + \ape@part@draw[\ape@skin!90!white] (0.97,3.2) ++(390:0.3 and 0.1) {[rotate=90] arc [start angle=390, end angle=150,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=150, end angle=-60,x radius=0.15, y radius=0.03] } -- cycle}; \ape@part@draw[\ape@arms] (1.35,2.74) {[rotate=100] arc [start angle=335, end angle=25,x radius=0.475, y radius=0.15]} --cycle; \ape@part@draw[\ape@arms] (0.93,1.70) ellipse[x radius=0.15, y radius=0.6, rotate=-70]; % default pose backside %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -187,10 +188,10 @@ \fi\fi\fi\fi\fi % % legs / feet backside %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \ape@part@draw[\ape@skin] (1.2,0.27) ++(210:0.3 and 0.1) {[rotate=180] arc [start angle=210, end angle=-30,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=-30, end angle=-240,x radius=0.15, y radius=0.03]}-- cycle}; + \ape@part@draw[\ape@skin] (1.2,0.27) ++(210:0.3 and 0.1) {[rotate=180] arc [start angle=210, end angle=-30,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=-30, end angle=-240,x radius=0.15, y radius=0.03]}-- cycle}; \ape@part@draw[\ape@legs] (0.7,0.67) ellipse[x radius=0.15, y radius=0.6, rotate=-30]; \ape@part@draw[\ape@legs] (0.52,0.68) ellipse[x radius=0.15, y radius=0.7, rotate=-45]; - \ape@part@draw[\ape@skin] (-1.2,0.27) ++(-30:0.3 and 0.1) {[rotate=180] arc [start angle=-30, end angle=210,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=210, end angle=420,x radius=0.15, y radius=0.03]}-- cycle}; + \ape@part@draw[\ape@skin] (-1.2,0.27) ++(-30:0.3 and 0.1) {[rotate=180] arc [start angle=-30, end angle=210,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=210, end angle=420,x radius=0.15, y radius=0.03]}-- cycle}; \ape@part@draw[\ape@legs] (-0.7,0.67) ellipse[x radius=0.15, y radius=0.6, rotate=30]; \ape@part@draw[\ape@legs] (-0.52,0.68) ellipse[x radius=0.15, y radius=0.7, rotate=45]; % @@ -239,10 +240,8 @@ \fi % % Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \ape@part@draw[\ape@skin] (0.675,0.2) ++(-30:0.3 and 0.1) arc [start angle=-30, end angle=210,x radius=0.3, y radius=0.1] {[rotate=-10] arc - [start angle=210, end angle=420,x radius=0.15, y radius=0.03]}-- cycle; - \ape@part@draw[\ape@skin] (-0.675,0.2) ++(210:0.3 and 0.1) arc [start angle=210, end angle=-30,x radius=0.3, y radius=0.1] {[rotate=10] arc - [start angle=-30, end angle=-240,x radius=0.15, y radius=0.03]}-- cycle; + \ape@part@draw[\ape@skin] (0.675,0.2) ++(-30:0.3 and 0.1) arc [start angle=-30, end angle=210,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=210, end angle=420,x radius=0.15, y radius=0.03]}-- cycle; + \ape@part@draw[\ape@skin] (-0.675,0.2) ++(210:0.3 and 0.1) arc [start angle=210, end angle=-30,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=-30, end angle=-240,x radius=0.15, y radius=0.03]}-- cycle; % % Legs %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ape@part@draw[\ape@legs] (0.52,0.68) ellipse[x radius=0.15, y radius=0.7, rotate=-45]; @@ -261,18 +260,18 @@ % see-no-evil pose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \else\ifape@handposition@seenoevil \ape@part@draw[\ape@arms] (-0.93,1.70) ellipse[x radius=0.15, y radius=0.6, rotate=70]; - \ape@part@draw[\ape@skin!90!white] (-0.325,1.91) ++(390:0.3 and 0.1) arc [start angle=390, end angle=150,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=150, end angle=-60,x radius=0.15, y radius=0.03] } -- cycle; + \ape@part@draw[\ape@skin!90!white] (-0.325,1.91) ++(390:0.3 and 0.1) arc [start angle=390, end angle=150,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=150, end angle=-60,x radius=0.15, y radius=0.03] } -- cycle; \ape@part@draw[\ape@arms] (-0.59,1.97) arc [start angle=25, end angle=335,x radius=0.475, y radius=0.15] --cycle; \ape@part@draw[\ape@arms] (0.93,1.70) ellipse[x radius=0.15, y radius=0.6, rotate=110]; - \ape@part@draw[\ape@skin!90!white] (0.325,1.91) ++(150:0.3 and 0.1) arc [start angle=150, end angle=390,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=30, end angle=240,x radius=0.15, y radius=0.03] } -- cycle; - \ape@part@draw[\ape@arms] (0.59,1.97) arc [start angle=155, end angle=-155,x radius=0.475, y radius=0.15] --cycle; + \ape@part@draw[\ape@skin!90!white] (0.325,1.91) ++(150:0.3 and 0.1) arc [start angle=150, end angle=390,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=30, end angle=240,x radius=0.15, y radius=0.03] } -- cycle; + \ape@part@draw[\ape@arms] (0.59,1.97) arc [start angle=155, end angle=-155,x radius=0.475, y radius=0.15] --cycle; % speak-no-evil pose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \else\ifape@handposition@speaknoevil% \ape@part@draw[\ape@arms] (-0.85,1.55) ellipse[x radius=0.15, y radius=0.6, rotate=-100]; - \ape@part@draw[\ape@skin!90!white] (-0.275,1.46) ++(390:0.3 and 0.1) arc [start angle=390, end angle=150,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=150, end angle=-60,x radius=0.15, y radius=0.03] } -- cycle; + \ape@part@draw[\ape@skin!90!white] (-0.275,1.46) ++(390:0.3 and 0.1) arc [start angle=390, end angle=150,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=150, end angle=-60,x radius=0.15, y radius=0.03] } -- cycle; \ape@part@draw[\ape@arms] (-0.53,1.52) {[rotate=-10] arc [start angle=15, end angle=335,x radius=0.475, y radius=0.15]} --cycle; \ape@part@draw[\ape@arms] (0.85,1.55) ellipse[x radius=0.15, y radius=0.6, rotate=100]; - \ape@part@draw[\ape@skin!90!white] (0.275,1.46) ++(150:0.3 and 0.1) arc [start angle=150, end angle=390,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=30, end angle=240,x radius=0.15, y radius=0.03] } -- cycle; + \ape@part@draw[\ape@skin!90!white] (0.275,1.46) ++(150:0.3 and 0.1) arc [start angle=150, end angle=390,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=30, end angle=240,x radius=0.15, y radius=0.03] } -- cycle; \ape@part@draw[\ape@arms] (0.53,1.52) {[rotate=10] arc [start angle=165, end angle=-155,x radius=0.475, y radius=0.15]} --cycle; % clapping pose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \else\ifape@handposition@clap% @@ -285,18 +284,18 @@ % waving hand pose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \else\ifape@handposition@waving% \ape@part@draw[\ape@arms] (-0.93,1.70) ellipse[x radius=0.15, y radius=0.6, rotate=70]; - \ape@part@draw[\ape@skin!90!white] (-0.97,3.2) ++(150:0.3 and 0.1) {[rotate=-90] arc [start angle=150, end angle=390,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=30, end angle=240,x radius=0.15, y radius=0.03] } -- cycle}; + \ape@part@draw[\ape@skin!90!white] (-0.97,3.2) ++(150:0.3 and 0.1) {[rotate=-90] arc [start angle=150, end angle=390,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=30, end angle=240,x radius=0.15, y radius=0.03] } -- cycle}; \ape@part@draw[\ape@arms] (-1.35,2.74) {[rotate=80] arc [start angle=25, end angle=335,x radius=0.475, y radius=0.15]} --cycle; \ape@part@draw[\ape@arms] (0.9,1.25) ellipse[x radius=0.15, y radius=0.6, rotate=60]; - \ape@part@draw[\ape@skin!90!white] (0.325,1.05) ++(150:0.3 and 0.1) arc [start angle=150, end angle=390,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=30, end angle=240,x radius=0.15, y radius=0.03] } -- cycle; + \ape@part@draw[\ape@skin!90!white] (0.325,1.05) ++(150:0.3 and 0.1) arc [start angle=150, end angle=390,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=30, end angle=240,x radius=0.15, y radius=0.03] } -- cycle; \ape@part@draw[\ape@arms] (0.53,1.115) {[rotate=-5] arc [start angle=155, end angle=-155,x radius=0.475, y radius=0.15]} --cycle; % normal pose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \else \ape@part@draw[\ape@arms] (-0.9,1.25) ellipse[x radius=0.15, y radius=0.6, rotate=-60]; - \ape@part@draw[\ape@skin!90!white] (-0.325,1.05) ++(390:0.3 and 0.1) arc [start angle=390, end angle=150,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=150, end angle=-60,x radius=0.15, y radius=0.03] } -- cycle; + \ape@part@draw[\ape@skin!90!white] (-0.325,1.05) ++(390:0.3 and 0.1) arc [start angle=390, end angle=150,x radius=0.3, y radius=0.1] {[rotate=10] arc [start angle=150, end angle=-60,x radius=0.15, y radius=0.03] } -- cycle; \ape@part@draw[\ape@arms] (-0.53,1.115) {[rotate=5] arc [start angle=25, end angle=335,x radius=0.475, y radius=0.15]} --cycle; \ape@part@draw[\ape@arms] (0.9,1.25) ellipse[x radius=0.15, y radius=0.6, rotate=60]; - \ape@part@draw[\ape@skin!90!white] (0.325,1.05) ++(150:0.3 and 0.1) arc [start angle=150, end angle=390,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=30, end angle=240,x radius=0.15, y radius=0.03] } -- cycle; + \ape@part@draw[\ape@skin!90!white] (0.325,1.05) ++(150:0.3 and 0.1) arc [start angle=150, end angle=390,x radius=0.3, y radius=0.1] {[rotate=-10] arc [start angle=30, end angle=240,x radius=0.15, y radius=0.03] } -- cycle; \ape@part@draw[\ape@arms] (0.53,1.115) {[rotate=-5] arc [start angle=155, end angle=-155,x radius=0.475, y radius=0.15]} --cycle; \fi\fi\fi\fi\fi% \fi% @@ -340,7 +339,7 @@ %In addition to the colour of the body, the colour of various body parts can be adjusted: %\begin{tcblisting}{title={Eye colour}} %\ape[eye=red] -%\end{tcblisting} +%\end{tcblisting} %\begin{tcblisting}{title={Nose colour}} %\ape[nose=red] %\end{tcblisting} @@ -378,7 +377,7 @@ %\begin{tcblisting}{title={speak no evil}} %\ape[handposition=speaknoevil] %\end{tcblisting} -% As shortcuts, these three apes are also available via +% As shortcuts, these three apes are also available via %\saminline|\ape[seenoevil]|, \saminline|\ape[hearnoevil]|, \saminline|\ape[speaknoevil]| and \saminline|\ape[mizaru]|, \saminline|\ape[kikazaru]|, \saminline|\ape[iwazaru]|. % %To see a hooting ape: diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bats.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bats.sty index 562fb80b62c..3c0880f950c 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bats.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bats.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-bats}[2024/12/12 version v2.1 Drawing bats in TikZ] +\ProvidesPackage{tikzlings-bats}[2025/01/05 version v2.2 Drawing bats in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -26,13 +26,14 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname bathookforeground\endcsname \csname tikzlinghookforeground\endcsname - % + % } \newif\ifbat@threeD \newif\ifbat@back \newif\ifbat@contour \newif\ifbat@teeth +\newif\ifbat@openmouth \tikzset{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -50,39 +51,41 @@ body/.store in = \bat@body, body = black!75!white, ears/.store in = \bat@ears, - ears = \bat@body, + ears = \bat@body, eye/.store in = \bat@eye, eye = white, pupil/.store in = \bat@pupil, pupil = black, mouth/.store in = \bat@mouth, - mouth = black, + mouth = black, feet/.store in = \bat@feet, - feet = orange, + feet = orange, wings/.store in = \bat@wings, - wings = 1, + wings = 1, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % options % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - teeth/.code = \bat@teethtrue - \def\bat@teeth{#1}, + teeth/.code = \bat@teethtrue + \def\bat@teeth{#1}, teeth/.default = white, - 3D/.code = \bat@threeDtrue, - back/.code = \bat@backtrue, + openmouth/.code = \bat@openmouthtrue, + open mouth/.forward to = /bat/openmouth, + 3D/.code = \bat@threeDtrue, + back/.code = \bat@backtrue, contour/.code = \bat@contourtrue \def\bat@contour{#1} \def\bat@antennas{#1} \def\bat@mouth{#1}, - contour/.default = black, - outline/.forward to = /bat/contour, + contour/.default = black, + outline/.forward to = /bat/contour, } \def\bat@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.44,0.0) rectangle (0.44, 2.2); @@ -99,7 +102,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -117,7 +120,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -171,13 +174,17 @@ % % Teeth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifbat@teeth - \bat@part@draw[\bat@teeth] (-0.1,1.36) -- (-0.12,1.3) -- (-0.14,1.38) -- cycle; - \bat@part@draw[\bat@teeth] (0.1,1.36) -- (0.12,1.3) -- (0.14,1.38) -- cycle; + \bat@part@draw[\bat@teeth] (-0.1,1.36) -- (-0.12,1.3) -- (-0.14,1.38) -- cycle; + \bat@part@draw[\bat@teeth] (0.1,1.36) -- (0.12,1.3) -- (0.14,1.38) -- cycle; \fi % % Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \draw[\bat@mouth,line width=\scalingfactor*0.4pt] (0.18, 1.42) arc [start angle=-40, end angle=-140, radius=0.23]; - % + \ifbat@openmouth + \filldraw[\bat@mouth,line width=\scalingfactor*0.4pt] (0.18, 1.42) arc [start angle=-40, end angle=-140, radius=0.23]; + \else + \draw[\bat@mouth,line width=\scalingfactor*0.4pt] (0.18, 1.42) arc [start angle=-40, end angle=-140, radius=0.23]; + \fi + % % \fi% back % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -234,7 +241,12 @@ %\bat[feet=red] %\end{tcblisting} % -%The spread of the wings can be adjusted by passing values between 0 and 1 to the \saminline|wings| option: +% The bat can open its mouth: +%\begin{tcblisting}{title={Open mouth}} +%\bat[openmouth] +%\end{tcblisting} +% +%With the \saminline|wings| option, one can adjust the spread of the wings. It accepts values between~0 and~1: %\begin{tcblisting}{title={Wing span}} %\bat[wings=0.5] %\end{tcblisting} diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bears.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bears.sty index 4c550dc729d..a85104c34ef 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bears.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bears.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-bears}[2024/12/12 version v2.1 Draw teddy bears in TikZ] +\ProvidesPackage{tikzlings-bears}[2025/01/05 version v2.2 Draw teddy bears in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -31,6 +31,7 @@ \newif\ifbear@threeD \newif\ifbear@back \newif\ifbear@contour +\newif\ifbear@openmouth \tikzset{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -48,7 +49,7 @@ body/.store in = \bear@body, body = brown!70!black, eye/.store in = \bear@eye, - eye = \bear@body!42!black, + eye = \bear@body!42!black, mouth/.store in = \bear@mouth, mouth = \bear@body!42!black, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -56,19 +57,21 @@ % options % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - 3D/.code = \bear@threeDtrue, - back/.code = \bear@backtrue, + openmouth/.code = \bear@openmouthtrue, + open mouth/.forward to = /bear/openmouth, + 3D/.code = \bear@threeDtrue, + back/.code = \bear@backtrue, contour/.code = \bear@contourtrue \def\bear@contour{#1} \def\bear@mouth{#1}, - contour/.default = black, - outline/.forward to = /bear/contour, + contour/.default = black, + outline/.forward to = /bear/contour, } \def\bear@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.8, 0.0) rectangle (0.8, 2.13); @@ -85,7 +88,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -111,11 +114,11 @@ \pgfmathsetmacro{\bear@sat}{(array({\bear@hsbcolorspec},1))-0.38} \pgfmathsetmacro{\bear@bright}{(array({\bear@hsbcolorspec},2))+0.35} \definecolor{bear@bright}{hsb}{\bear@hue,\bear@sat,\bear@bright} - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -128,12 +131,12 @@ % % Feet if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifbear@back - \bear@part@draw[\bear@body] (0.425, 0.3) circle[radius=0.28]; + \bear@part@draw[\bear@body] (0.425, 0.3) circle[radius=0.28]; \bear@part@draw[\bear@body] (-0.425, 0.3) circle[radius=0.28]; \fi% back % % Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \bear@part@draw[\bear@body] (0,0.75) ellipse[x radius=0.55, y radius=0.65]; + \bear@part@draw[\bear@body] (0,0.75) ellipse[x radius=0.55, y radius=0.65]; \unless\ifbear@back \bear@part@draw[bear@bright] (0,0.7) ellipse[x radius=0.35, y radius=0.4]; \fi% back @@ -144,9 +147,9 @@ % % Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \unless\ifbear@back - \bear@part@draw[\bear@body] (0.425, 0.3) circle[radius=0.28]; + \bear@part@draw[\bear@body] (0.425, 0.3) circle[radius=0.28]; \bear@part@draw[\bear@body] (-0.425, 0.3) circle[radius=0.28]; - \bear@part@draw[bear@bright] (0.425, 0.3) circle[radius=0.17]; + \bear@part@draw[bear@bright] (0.425, 0.3) circle[radius=0.17]; \bear@part@draw[bear@bright] (-0.425, 0.3) circle[radius=0.17]; \fi% back % @@ -159,21 +162,25 @@ \fi% back % % Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \bear@part@draw[\bear@body] (0, 1.55) circle[radius=0.5]; + \bear@part@draw[\bear@body] (0, 1.55) circle[radius=0.5]; % % Show details only from the front %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \unless\ifbear@back % % Muzzle %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \bear@part@draw[bear@bright] (0, 1.4) ellipse[x radius=0.28, y radius=0.2]; - \bear@part@draw[bear@bright!60!red] (0, 1.5) ellipse[x radius=0.15, y radius=0.08]; + \bear@part@draw[bear@bright] (0, 1.4) ellipse[x radius=0.28, y radius=0.2]; + \bear@part@draw[bear@bright!60!red] (0, 1.5) ellipse[x radius=0.15, y radius=0.08]; % % Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \bear@part@draw[\bear@eye] (-0.155, 1.7) circle[radius=0.05]; - \bear@part@draw[\bear@eye] (0.155, 1.7) circle[radius=0.05]; + \bear@part@draw[\bear@eye] (-0.155, 1.7) circle[radius=0.05]; + \bear@part@draw[\bear@eye] (0.155, 1.7) circle[radius=0.05]; % % Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \draw[\bear@mouth,line width=\scalingfactor*0.4pt] (0.145, 1.38) arc [start angle=-20, end angle=-160, radius=0.16]; + \ifbear@openmouth + \filldraw[\bear@mouth,line width=\scalingfactor*0.4pt] (0.145, 1.38) arc [start angle=-20, end angle=-160, radius=0.16]; + \else + \draw[\bear@mouth,line width=\scalingfactor*0.4pt] (0.145, 1.38) arc [start angle=-20, end angle=-160, radius=0.16]; + \fi % \fi% back % @@ -222,6 +229,11 @@ %\bear[mouth=red] %\end{tcblisting} % +% The bear can open its mouth: +%\begin{tcblisting}{title={Open mouth}} +%\bear[openmouth] +%\end{tcblisting} +% %To view the teddy bear from behind: %\begin{tcblisting}{title={Back view}} %\bear[back] @@ -247,9 +259,9 @@ %%\usepackage{bearwear} %\bear %\bearwear[ -% long sleeves, +% long sleeves, % shirt=red!80!black %] %\end{tcblisting} % -%Many more options and examples can be found in the package documentation \url{https://ctan.org/pkg/bearwear}. +%Many more options and examples can be found in the package documentation \url{https://ctan.org/pkg/bearwear}. diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bees.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bees.sty index 160f01664ee..18d8ff9bcde 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bees.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bees.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-bees}[2024/12/12 version v2.1 Drawing bees in TikZ] +\ProvidesPackage{tikzlings-bees}[2025/01/05 version v2.2 Drawing bees in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -26,12 +26,13 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname beehookforeground\endcsname \csname tikzlinghookforeground\endcsname - % + % } \newif\ifbee@threeD \newif\ifbee@back \newif\ifbee@contour +\newif\ifbee@openmouth \tikzset{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -49,36 +50,38 @@ body/.store in = \bee@body, body = yellow!70!orange, hands/.store in = \bee@hands, - hands = black, + hands = black, wings/.store in = \bee@wings, - wings = blue!20!cyan!30!white, + wings = blue!20!cyan!30!white, stripes/.store in = \bee@stripes, - stripes = black, + stripes = black, antennas/.store in = \bee@antennas, - antennas = black, + antennas = black, eye/.store in = \bee@eye, - eye = black, + eye = black, mouth/.store in = \bee@mouth, - mouth = black, + mouth = black, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % options % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - 3D/.code = \bee@threeDtrue, - back/.code = \bee@backtrue, + openmouth/.code = \bee@openmouthtrue, + open mouth/.forward to = /bee/openmouth, + 3D/.code = \bee@threeDtrue, + back/.code = \bee@backtrue, contour/.code = \bee@contourtrue \def\bee@contour{#1} \def\bee@antennas{#1} \def\bee@mouth{#1}, - contour/.default = black, - outline/.forward to = /bee/contour, + contour/.default = black, + outline/.forward to = /bee/contour, } \def\bee@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.88,0.1) rectangle (0.88, 2.4); @@ -95,7 +98,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -113,11 +116,11 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \csname beeshookbackground\endcsname + \csname beehookbackground\endcsname \csname tikzlinghookbackground\endcsname % \ifbee@back @@ -141,18 +144,11 @@ \fi% back % % Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \begin{scope} - \bee@part@draw[\bee@body] (0,2.1) to[out=180,in=140,looseness=1.2] (-0.3,1.5) to[out=-110,in=180,looseness=1.2] (0,0.15) to[out=00,in=-65,looseness=1.2] (0.3,1.5) to[out=40,in=0,looseness=1.2] cycle; - \clip (0,2.1) to[out=180,in=140,looseness=1.2] (-0.3,1.5) to[out=-110,in=180,looseness=1.2] (0,0.15) to[out=00,in=-65,looseness=1.2] (0.3,1.5) to[out=40,in=0,looseness=1.2] cycle; - % stripes - \bee@part@draw[\bee@stripes] (-0.475,1.3) arc(180:360:0.5 and 0.1) -- ++ (0,-0.15) arc(360:180:0.5 and 0.1) -- cycle - (-0.475,1.0) arc(180:360:0.5 and 0.1) -- ++ (0,-0.15) arc(360:180:0.5 and 0.1) -- cycle - (-0.475,0.65) arc(180:360:0.5 and 0.1) -- ++ (0,-0.15) arc(360:180:0.5 and 0.1) -- cycle - (-0.475,0.35) arc(180:360:0.5 and 0.1) -- ++ (0,-0.15) arc(360:180:0.5 and 0.1) -- cycle; - \end{scope} + \bee@part@draw[\bee@body] (0,2.1) to[out=180,in=140,looseness=1.2] (-0.3,1.5) to[out=-110,in=180,looseness=1.2] (0,0.15) to[out=00,in=-65,looseness=1.2] (0.3,1.5) to[out=40,in=0,looseness=1.2] cycle; + \bee@part@draw[\bee@stripes] (-0.3845, 1.2427).. controls (-0.3978, 1.1967) and (-0.4102, 1.1508) .. (-0.4213, 1.1051).. controls (-0.339, 1.0724) and (-0.1703, 1.05) .. (0.025, 1.05).. controls (0.2024, 1.05) and (0.3578, 1.0685) .. (0.4466, 1.0964).. controls (0.4345, 1.1426) and (0.4206, 1.1889) .. (0.4053, 1.2351).. controls (0.3136, 1.2136) and (0.1774, 1.2) .. (0.025, 1.2).. controls (-0.1445, 1.2) and (-0.2941, 1.2169) .. (-0.3845, 1.2427) -- cycle(-0.4505, 0.9692).. controls (-0.4588, 0.9242) and (-0.4654, 0.88) .. (-0.4704, 0.8366).. controls (-0.4375, 0.7877) and (-0.2284, 0.75) .. (0.025, 0.75).. controls (0.2433, 0.75) and (0.4285, 0.778) .. (0.4966, 0.817).. controls (0.4925, 0.8629) and (0.4858, 0.9099) .. (0.4772, 0.9575).. controls (0.3973, 0.9236) and (0.2251, 0.9) .. (0.025, 0.9).. controls (-0.1973, 0.9) and (-0.3855, 0.929) .. (-0.4505, 0.9692) -- cycle(-0.475, 0.65) -- (-0.475, 0.5798).. controls (-0.4712, 0.5424) and (-0.465, 0.5067) .. (-0.4563, 0.4729).. controls (-0.3973, 0.4309) and (-0.2042, 0.4) .. (0.025, 0.4).. controls (0.2141, 0.4) and (0.3785, 0.421) .. (0.4635, 0.452).. controls (0.4809, 0.5028) and (0.4921, 0.5583) .. (0.4975, 0.6175).. controls (0.43, 0.5782) and (0.2442, 0.55) .. (0.025, 0.55).. controls (-0.2511, 0.55) and (-0.475, 0.5947) .. (-0.475, 0.65) -- cycle(-0.3628, 0.2869).. controls (-0.2871, 0.2009) and (-0.1703, 0.15) .. (-0.0, 0.15).. controls (0.1603, 0.15) and (0.2765, 0.1965) .. (0.3564, 0.2753).. controls (0.2681, 0.2596) and (0.1523, 0.25) .. (0.025, 0.25).. controls (-0.1315, 0.25) and (-0.2711, 0.2644) .. (-0.3628, 0.2869) -- cycle; % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \csname beeshookbelly\endcsname + \csname beehookbelly\endcsname \csname tikzlinghookbelly\endcsname % % Show details only from the front %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -171,16 +167,20 @@ \else% back % % Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \bee@part@draw[\bee@eye] (-0.15,1.8) circle[radius=0.05]; - \bee@part@draw[\bee@eye] (0.15,1.8) circle[radius=0.05]; + \bee@part@draw[\bee@eye] (-0.15,1.8) circle[radius=0.05]; + \bee@part@draw[\bee@eye] (0.15,1.8) circle[radius=0.05]; % % Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \bee@part@draw[\bee@hands] (-0.25,0.88) circle[x radius=0.07,y radius=0.2, rotate=25]; \bee@part@draw[\bee@hands] (0.25,0.88) circle[x radius=0.07,y radius=0.2, rotate=-25]; % % Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \draw[\bee@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.6) arc [start angle=-40, end angle=-140, radius=0.16]; - % + \ifbee@openmouth + \filldraw[\bee@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.6) arc [start angle=-40, end angle=-140, radius=0.16]; + \else + \draw[\bee@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.6) arc [start angle=-40, end angle=-140, radius=0.16]; + \fi + % % Antenna %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fill[\bee@antennas,rotate around={15:(-0.175,2.115)}] (-0.2,1.93) rectangle (-0.15,2.3); \fill[\bee@antennas,rotate around={-15:(0.175,2.115)}] (0.2,1.93) rectangle (0.15,2.3); @@ -190,7 +190,7 @@ \fi% back % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \csname beeshookbody\endcsname + \csname beehookbody\endcsname \csname tikzlinghookbody\endcsname % } @@ -246,6 +246,11 @@ %\bee[stripes=red] %\end{tcblisting} % +% The bee can open its mouth: +%\begin{tcblisting}{title={Open mouth}} +%\bee[openmouth] +%\end{tcblisting} +% %To view the bee from behind: %\begin{tcblisting}{title={back view}} %\bee[back] diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bugs.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bugs.sty index fdf74195fb5..8f618899f58 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bugs.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-bugs.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-bugs}[2024/12/12 version v2.1 Drawing bugs in TikZ] +\ProvidesPackage{tikzlings-bugs}[2025/01/05 version v2.2 Drawing bugs in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -26,7 +26,7 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname bughookforeground\endcsname \csname tikzlinghookforeground\endcsname - % + % } \newif\ifbug@threeD @@ -34,6 +34,7 @@ \newif\ifbug@rightstep \newif\ifbug@back \newif\ifbug@contour +\newif\ifbug@openmouth \tikzset{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -51,21 +52,21 @@ body/.store in = \bug@body, body = black!90!white, arms/.store in = \bug@arms, - arms = red!80!black, + arms = red!80!black, wings/.store in = \bug@wings, - wings = red!80!black, + wings = red!80!black, dots/.store in = \bug@dots, - dots = black!90!white, + dots = black!90!white, antennas/.store in = \bug@antennas, - antennas = red!80!black, + antennas = red!80!black, eye/.store in = \bug@eye, eye = white, pupil/.store in = \bug@pupil, pupil = black, mouth/.store in = \bug@mouth, - mouth = red, + mouth = red, feet/.store in = \bug@feet, - feet = red!80!black, + feet = red!80!black, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % options @@ -75,20 +76,22 @@ leftstep/.code = \bug@leftsteptrue, left step/.forward to = /bug/leftstep, rightstep/.code = \bug@rightsteptrue, - right step/.forward to = /bug/rightstep, - back/.code = \bug@backtrue, + right step/.forward to = /bug/rightstep, + openmouth/.code = \bug@openmouthtrue, + open mouth/.forward to = /bug/openmouth, + back/.code = \bug@backtrue, contour/.code = \bug@contourtrue \def\bug@contour{#1} \def\bug@antennas{#1} \def\bug@mouth{#1}, - contour/.default = black, - outline/.forward to = /bug/contour, + contour/.default = black, + outline/.forward to = /bug/contour, } \def\bug@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.92,0.02) rectangle (0.92, 2.36); @@ -105,7 +108,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -123,7 +126,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -131,19 +134,19 @@ \csname tikzlinghookbackground\endcsname % \ifbug@back - % + % % Antenna %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \draw[\bug@antennas,line width=\scalingfactor*0.8pt] (0.1134, 1.911) .. controls (0.0917, 2.0537) and (0.0986, 2.1999) .. (0.1608, 2.2816) .. controls (0.245, 2.3919) and (0.3278, 2.3011) .. (0.3272, 2.2192) .. controls (0.3266, 2.1341) and (0.2237, 2.0423) .. (0.1978, 2.1538); \draw[\bug@antennas,line width=\scalingfactor*0.8pt] (-0.1134, 1.911) .. controls (-0.0917, 2.0537) and (-0.0986, 2.1999) .. (-0.1608, 2.2816) .. controls (-0.245, 2.3919) and (-0.3278, 2.3011) .. (-0.3272, 2.2192) .. controls (-0.3266, 2.1341) and (-0.2237, 2.0423) .. (-0.1978, 2.1538); \else% back % % Wings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \bug@part@draw[\bug@wings] (-0.0955, 1.4222) .. controls (-0.2086, 1.6765) and (-0.692, 1.2508) .. (-0.8174, 1.0023) .. controls (-0.9304, 0.7786) and (-0.9533, 0.379) .. (-0.7355, 0.2548) .. controls (-0.5988, 0.1768) and (-0.4043, 0.3269) .. (-0.3054, 0.4494) .. controls (-0.097, 0.7075) and (0.0589, 1.0749) .. (-0.0955, 1.4222) -- cycle; + \bug@part@draw[\bug@wings] (-0.0955, 1.4222) .. controls (-0.2086, 1.6765) and (-0.692, 1.2508) .. (-0.8174, 1.0023) .. controls (-0.9304, 0.7786) and (-0.9533, 0.379) .. (-0.7355, 0.2548) .. controls (-0.5988, 0.1768) and (-0.4043, 0.3269) .. (-0.3054, 0.4494) .. controls (-0.097, 0.7075) and (0.0589, 1.0749) .. (-0.0955, 1.4222) -- cycle; \bug@part@draw[\bug@wings] (0.0955, 1.4222) .. controls (0.2086, 1.6765) and (0.692, 1.2508) .. (0.8174, 1.0023) .. controls (0.9304, 0.7786) and (0.9533, 0.379) .. (0.7355, 0.2548) .. controls (0.5988, 0.1768) and (0.4043, 0.3269) .. (0.3054, 0.4494) .. controls (0.097, 0.7075) and (-0.0589, 1.0749) .. (0.0955, 1.4222) -- cycle; \ifbug@contour - \bug@part@draw[\bug@dots] (-0.2,0.85) circle [radius=0.08] (-0.5,0.8) circle [radius=0.08] (-0.8,0.75) circle [radius=0.08] (-0.35,0.6) circle [radius=0.08] (-0.65,0.5) circle [radius=0.08] (-0.3,1.05) circle [radius=0.08] (-0.6,1.1) circle [radius=0.08] (-0.35,1.35) circle [radius=0.08] (0.2,0.85) circle [radius=0.08] (0.5,0.8) circle [radius=0.08] (0.8,0.75) circle [radius=0.08] (0.35,0.6) circle [radius=0.08] (0.65,0.5) circle [radius=0.08] (0.3,1.05) circle [radius=0.08] (0.6,1.1) circle [radius=0.08] (0.35,1.35) circle [radius=0.08]; - \else% contour - \fill[\bug@dots] (-0.2,0.85) circle [radius=0.08] (-0.5,0.8) circle [radius=0.08] (-0.8,0.75) circle [radius=0.08] (-0.35,0.6) circle [radius=0.08] (-0.65,0.5) circle [radius=0.08] (-0.3,1.05) circle [radius=0.08] (-0.6,1.1) circle [radius=0.08] (-0.35,1.35) circle [radius=0.08] (0.2,0.85) circle [radius=0.08] (0.5,0.8) circle [radius=0.08] (0.8,0.75) circle [radius=0.08] (0.35,0.6) circle [radius=0.08] (0.65,0.5) circle [radius=0.08] (0.3,1.05) circle [radius=0.08] (0.6,1.1) circle [radius=0.08] (0.35,1.35) circle [radius=0.08]; + \bug@part@draw[\bug@dots] (-0.2,0.85) circle [radius=0.08] (-0.5,0.8) circle [radius=0.08] (-0.8,0.75) circle [radius=0.08] (-0.35,0.6) circle [radius=0.08] (-0.65,0.5) circle [radius=0.08] (-0.3,1.05) circle [radius=0.08] (-0.6,1.1) circle [radius=0.08] (-0.35,1.35) circle [radius=0.08] (0.2,0.85) circle [radius=0.08] (0.5,0.8) circle [radius=0.08] (0.8,0.75) circle [radius=0.08] (0.35,0.6) circle [radius=0.08] (0.65,0.5) circle [radius=0.08] (0.3,1.05) circle [radius=0.08] (0.6,1.1) circle [radius=0.08] (0.35,1.35) circle [radius=0.08]; + \else% contour + \fill[\bug@dots] (-0.2,0.85) circle [radius=0.08] (-0.5,0.8) circle [radius=0.08] (-0.8,0.75) circle [radius=0.08] (-0.35,0.6) circle [radius=0.08] (-0.65,0.5) circle [radius=0.08] (-0.3,1.05) circle [radius=0.08] (-0.6,1.1) circle [radius=0.08] (-0.35,1.35) circle [radius=0.08] (0.2,0.85) circle [radius=0.08] (0.5,0.8) circle [radius=0.08] (0.8,0.75) circle [radius=0.08] (0.35,0.6) circle [radius=0.08] (0.65,0.5) circle [radius=0.08] (0.3,1.05) circle [radius=0.08] (0.6,1.1) circle [radius=0.08] (0.35,1.35) circle [radius=0.08]; \fi% contour \fi% back % @@ -152,12 +155,12 @@ \bug@part@draw[\bug@feet] (-0.2,0.12) ellipse[x radius=0.18, y radius=0.06]; \else% step \bug@part@draw[\bug@feet] (-0.2,0.1) ellipse[x radius=0.18, y radius=0.06]; - \fi% step + \fi% step \ifbug@rightstep \bug@part@draw[\bug@feet] (0.2,0.12) ellipse[x radius=0.18, y radius=0.06]; \else% step \bug@part@draw[\bug@feet] (0.2,0.1) ellipse[x radius=0.18, y radius=0.06]; - \fi% step + \fi% step % % Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \bug@part@draw[\bug@body] ( 0.55, 0.75) .. controls ( 0.55, 0.40) and ( 0.55, 0.08) .. ( 0.00, 0.08) .. controls (-0.55, 0.08) and (-0.55, 0.40) .. (-0.55, 0.75) .. controls (-0.55, 1.13) and (-0.30, 1.44) .. ( 0.00, 1.44) .. controls ( 0.30, 1.44) and ( 0.55, 1.13) .. ( 0.55, 0.75) -- cycle; @@ -173,12 +176,12 @@ \ifbug@back % % Wings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \bug@part@draw[\bug@wings] (-0.0955, 1.4222) .. controls (-0.2086, 1.6765) and (-0.692, 1.2508) .. (-0.8174, 1.0023) .. controls (-0.9304, 0.7786) and (-0.9533, 0.379) .. (-0.7355, 0.2548) .. controls (-0.5988, 0.1768) and (-0.4043, 0.3269) .. (-0.3054, 0.4494) .. controls (-0.097, 0.7075) and (0.0589, 1.0749) .. (-0.0955, 1.4222) -- cycle; + \bug@part@draw[\bug@wings] (-0.0955, 1.4222) .. controls (-0.2086, 1.6765) and (-0.692, 1.2508) .. (-0.8174, 1.0023) .. controls (-0.9304, 0.7786) and (-0.9533, 0.379) .. (-0.7355, 0.2548) .. controls (-0.5988, 0.1768) and (-0.4043, 0.3269) .. (-0.3054, 0.4494) .. controls (-0.097, 0.7075) and (0.0589, 1.0749) .. (-0.0955, 1.4222) -- cycle; \bug@part@draw[\bug@wings] (0.0955, 1.4222) .. controls (0.2086, 1.6765) and (0.692, 1.2508) .. (0.8174, 1.0023) .. controls (0.9304, 0.7786) and (0.9533, 0.379) .. (0.7355, 0.2548) .. controls (0.5988, 0.1768) and (0.4043, 0.3269) .. (0.3054, 0.4494) .. controls (0.097, 0.7075) and (-0.0589, 1.0749) .. (0.0955, 1.4222) -- cycle; \ifbug@contour - \bug@part@draw[\bug@dots] (-0.2,0.85) circle [radius=0.08] (-0.5,0.8) circle [radius=0.08] (-0.8,0.75) circle [radius=0.08] (-0.35,0.6) circle [radius=0.08] (-0.65,0.5) circle [radius=0.08] (-0.3,1.05) circle [radius=0.08] (-0.6,1.1) circle [radius=0.08] (-0.35,1.35) circle [radius=0.08] (0.2,0.85) circle [radius=0.08] (0.5,0.8) circle [radius=0.08] (0.8,0.75) circle [radius=0.08] (0.35,0.6) circle [radius=0.08] (0.65,0.5) circle [radius=0.08] (0.3,1.05) circle [radius=0.08] (0.6,1.1) circle [radius=0.08] (0.35,1.35) circle [radius=0.08]; + \bug@part@draw[\bug@dots] (-0.2,0.85) circle [radius=0.08] (-0.5,0.8) circle [radius=0.08] (-0.8,0.75) circle [radius=0.08] (-0.35,0.6) circle [radius=0.08] (-0.65,0.5) circle [radius=0.08] (-0.3,1.05) circle [radius=0.08] (-0.6,1.1) circle [radius=0.08] (-0.35,1.35) circle [radius=0.08] (0.2,0.85) circle [radius=0.08] (0.5,0.8) circle [radius=0.08] (0.8,0.75) circle [radius=0.08] (0.35,0.6) circle [radius=0.08] (0.65,0.5) circle [radius=0.08] (0.3,1.05) circle [radius=0.08] (0.6,1.1) circle [radius=0.08] (0.35,1.35) circle [radius=0.08]; \else% contour - \fill[\bug@dots] (-0.2,0.85) circle [radius=0.08] (-0.5,0.8) circle [radius=0.08] (-0.8,0.75) circle [radius=0.08] (-0.35,0.6) circle [radius=0.08] (-0.65,0.5) circle [radius=0.08] (-0.3,1.05) circle [radius=0.08] (-0.6,1.1) circle [radius=0.08] (-0.35,1.35) circle [radius=0.08] (0.2,0.85) circle [radius=0.08] (0.5,0.8) circle [radius=0.08] (0.8,0.75) circle [radius=0.08] (0.35,0.6) circle [radius=0.08] (0.65,0.5) circle [radius=0.08] (0.3,1.05) circle [radius=0.08] (0.6,1.1) circle [radius=0.08] (0.35,1.35) circle [radius=0.08]; + \fill[\bug@dots] (-0.2,0.85) circle [radius=0.08] (-0.5,0.8) circle [radius=0.08] (-0.8,0.75) circle [radius=0.08] (-0.35,0.6) circle [radius=0.08] (-0.65,0.5) circle [radius=0.08] (-0.3,1.05) circle [radius=0.08] (-0.6,1.1) circle [radius=0.08] (-0.35,1.35) circle [radius=0.08] (0.2,0.85) circle [radius=0.08] (0.5,0.8) circle [radius=0.08] (0.8,0.75) circle [radius=0.08] (0.35,0.6) circle [radius=0.08] (0.65,0.5) circle [radius=0.08] (0.3,1.05) circle [radius=0.08] (0.6,1.1) circle [radius=0.08] (0.35,1.35) circle [radius=0.08]; \fi% contour \else% back % @@ -193,8 +196,12 @@ \bug@part@draw[\bug@arms] (0.25,0.88) circle[x radius=0.07,y radius=0.18, rotate=-35]; % % Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \draw[\bug@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.56) arc [start angle=-40, end angle=-140, radius=0.16]; - % + \ifbug@openmouth + \filldraw[\bug@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.56) arc [start angle=-40, end angle=-140, radius=0.16]; + \else + \draw[\bug@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.56) arc [start angle=-40, end angle=-140, radius=0.16]; + \fi + % % Antenna %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \draw[\bug@antennas,line width=\scalingfactor*0.8pt] (0.1134, 1.911) .. controls (0.0917, 2.0537) and (0.0986, 2.1999) .. (0.1608, 2.2816) .. controls (0.245, 2.3919) and (0.3278, 2.3011) .. (0.3272, 2.2192) .. controls (0.3266, 2.1341) and (0.2237, 2.0423) .. (0.1978, 2.1538); \draw[\bug@antennas,line width=\scalingfactor*0.8pt] (-0.1134, 1.911) .. controls (-0.0917, 2.0537) and (-0.0986, 2.1999) .. (-0.1608, 2.2816) .. controls (-0.245, 2.3919) and (-0.3278, 2.3011) .. (-0.3272, 2.2192) .. controls (-0.3266, 2.1341) and (-0.2237, 2.0423) .. (-0.1978, 2.1538); @@ -261,6 +268,11 @@ %\bug[feet=blue] %\end{tcblisting} % +% The bug can open its mouth: +%\begin{tcblisting}{title={Open mouth}} +%\bug[openmouth] +%\end{tcblisting} +% %And the bug can lift its legs: %\begin{tcblisting}{title={Walking}} %\bug[leftstep] diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-cats.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-cats.sty index a4c244794ee..41dc7521ad7 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-cats.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-cats.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-cats}[2024/12/12 version v2.1 Drawing cats in TikZ] +\ProvidesPackage{tikzlings-cats}[2025/01/05 version v2.2 Drawing cats in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -24,13 +24,13 @@ \else \ifdefined\pdfrandomseed % pdflatex \else - \ifdefined\randomseed + \ifdefined\randomseed \let\pdfrandomseed\randomseed % post TL19 xelatex and lualatex \else \let\pdfrandomseed\time % pre TL19 xelatex \fi \fi - \pgfmathsetseed{\number\pdfrandomseed} + \pgfmathsetseed{\number\pdfrandomseed} \fi \ExplSyntaxOff @@ -59,6 +59,7 @@ \newif\ifcat@schroedinger \newif\ifcat@back \newif\ifcat@contour +\newif\ifcat@openmouth \tikzset{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -103,21 +104,23 @@ % options % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - 3D/.code = \cat@threeDtrue, schroedinger/.code = \cat@schroedingertrue, - back/.code = \cat@backtrue, + openmouth/.code = \cat@openmouthtrue, + open mouth/.forward to = /cat/openmouth, + 3D/.code = \cat@threeDtrue, + back/.code = \cat@backtrue, contour/.code = \cat@contourtrue \def\cat@contour{#1} \def\cat@whiskers{#1}, - contour/.default = black, - outline/.forward to = /cat/contour, + contour/.default = black, + outline/.forward to = /cat/contour, } \def\cat@draw{% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.56,0.1) rectangle (1.63, 2.22); @@ -134,7 +137,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -152,7 +155,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -164,7 +167,7 @@ % % Feet if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifcat@back - \cat@part@draw[\cat@paws] (-0.255,0.3) circle[radius=0.18]; + \cat@part@draw[\cat@paws] (-0.255,0.3) circle[radius=0.18]; \cat@part@draw[\cat@paws] (0.255,0.3) circle[radius=0.18]; \fi% back % @@ -176,10 +179,8 @@ \csname tikzlinghookbelly\endcsname % % Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \cat@part@draw[\cat@body] - (0.12, 2.0392) .. controls (0.16, 2.1584) and (0.37, 2.22) .. (0.37, 2.20) .. controls (0.37, 2.2) and (0.39, 1.9) .. (0.2721, 1.9) .. controls (0.1891, 1.88) and (0.12, 1.88) .. (0.12, 2.0392) -- cycle; - \cat@part@draw[\cat@body] - (-0.12, 2.0392) .. controls (-0.16, 2.1584) and (-0.37, 2.22) .. (-0.37, 2.20) .. controls (-0.37, 2.2) and (-0.39, 1.9) .. (-0.2721, 1.9) .. controls (-0.1891, 1.88) and (-0.12, 1.88) .. (-0.12, 2.0392) -- cycle; + \cat@part@draw[\cat@body] (0.12, 2.0392) .. controls (0.16, 2.1584) and (0.37, 2.22) .. (0.37, 2.20) .. controls (0.37, 2.2) and (0.39, 1.9) .. (0.2721, 1.9) .. controls (0.1891, 1.88) and (0.12, 1.88) .. (0.12, 2.0392) -- cycle; + \cat@part@draw[\cat@body] (-0.12, 2.0392) .. controls (-0.16, 2.1584) and (-0.37, 2.22) .. (-0.37, 2.20) .. controls (-0.37, 2.2) and (-0.39, 1.9) .. (-0.2721, 1.9) .. controls (-0.1891, 1.88) and (-0.12, 1.88) .. (-0.12, 2.0392) -- cycle; % % Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cat@part@draw[\cat@body] (0,1.64) circle[radius=0.44]; @@ -196,7 +197,11 @@ \cat@part@draw[\cat@pupil] ( 0.1720, 1.8071) .. controls ( 0.1720+\cat@pupil@width, 1.7827+\cat@pupil@offset) and ( 0.1720+\cat@pupil@width, 1.7584-\cat@pupil@offset) .. ( 0.1720, 1.7341) .. controls ( 0.1720-\cat@pupil@width, 1.7584-\cat@pupil@offset) and ( 0.1720-\cat@pupil@width, 1.7827+\cat@pupil@offset) .. ( 0.1720, 1.8071) -- cycle; % % Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \draw[\cat@whiskers,line width=\scalingfactor*0.2pt] (-0.16, 1.527) .. controls (-0.16, 1.527) and (-0.062, 1.420) .. ( 0.000, 1.556) .. controls ( 0.062, 1.420) and ( 0.16, 1.527) .. ( 0.16, 1.527); + \ifcat@openmouth + \filldraw[\cat@whiskers,line width=\scalingfactor*0.2pt] (-0.16, 1.527) .. controls (-0.16, 1.527) and (-0.062, 1.420) .. ( 0.000, 1.556) .. controls ( 0.062, 1.420) and ( 0.16, 1.527) .. ( 0.16, 1.527) (0.16,1.527) arc [start angle=-20, end angle=-160, radius=0.17]; + \else + \draw[\cat@whiskers,line width=\scalingfactor*0.2pt] (-0.16, 1.527) .. controls (-0.16, 1.527) and (-0.062, 1.420) .. ( 0.000, 1.556) .. controls ( 0.062, 1.420) and ( 0.16, 1.527) .. ( 0.16, 1.527); + \fi % % Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cat@part@draw[\cat@nose] (-0.069, 1.6452) .. controls (-0.0524, 1.6613) and (0.0524, 1.6613) .. (0.069, 1.6452) .. controls (0.08, 1.625) and (0.0206, 1.55) .. (0, 1.55) .. controls (-0.0206, 1.55) and (-0.08, 1.625) .. (-0.069, 1.6452) -- cycle; @@ -210,8 +215,8 @@ \fill[\cat@whiskers] (-0.0671, 1.6243) .. controls (-0.1414, 1.6725) and (-0.2182, 1.6964) .. (-0.2925, 1.6482) -- (-0.2925, 1.6582) .. controls (-0.2179, 1.7066) and (-0.1417, 1.6727) .. (-0.0671, 1.6243) -- cycle; % % Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \cat@part@draw[\cat@paws] (-0.255,0.3) circle[radius=0.18]; - \cat@part@draw[\cat@paws] (0.255,0.3) circle[radius=0.18]; + \cat@part@draw[\cat@paws] (-0.255,0.3) circle[radius=0.18]; + \cat@part@draw[\cat@paws] (0.255,0.3) circle[radius=0.18]; % \fi% back % @@ -224,7 +229,7 @@ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.55,0.39) rectangle (0.55, 2.06); @@ -241,7 +246,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -257,7 +262,7 @@ \fi% 3D % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % Drawing the tomebstone % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -343,6 +348,11 @@ %\cat[paws=red] %\end{tcblisting} % +% The cat can open its mouth: +%\begin{tcblisting}{title={Open mouth}} +%\cat[openmouth] +%\end{tcblisting} +% %The shape of the \saminline|pupil| can be changed with the \saminline|pupilwidth| option: %\begin{tcblisting}{title={Width of pupils}} %\cat[pupilwidth=0.015] @@ -358,7 +368,7 @@ %\cat[wide pupils] % %\cat[very wide pupils] -%\end{samcode} +%\end{samcode} % %\tcblower %\begin{tikzpicture}[yshift=2.4cm,xshift=1.8cm] diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-chickens.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-chickens.sty index 41dc89c1939..ff770860fda 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-chickens.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-chickens.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-chickens}[2024/12/12 version v2.1 Draw chickens in TikZ] +\ProvidesPackage{tikzlings-chickens}[2025/01/05 version v2.2 Draw chickens in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -31,7 +31,7 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname chickenhookforeground\endcsname \csname tikzlinghookforeground\endcsname - % + % } \newif\ifchicken@threeD @@ -61,24 +61,24 @@ bill/.store in = \chicken@bill, bill = yellow, feet/.store in = \chicken@feet, - feet = orange!90!yellow, + feet = orange!90!yellow, comb/.store in = \chicken@comb, - comb = red, + comb = red, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % options % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3D/.code = \chicken@threeDtrue, - back/.code = \chicken@backtrue, + back/.code = \chicken@backtrue, contour/.code = \chicken@contourtrue \def\chicken@contour{#1}, - contour/.default = black, - outline/.forward to = /chicken/contour, + contour/.default = black, + outline/.forward to = /chicken/contour, baby/.code = \chicken@babytrue \def\chicken@baby{#1} \def\chicken@bill{\chicken@feet}, - baby/.default = yellow!80!orange, + baby/.default = yellow!80!orange, } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -89,11 +89,11 @@ \def\chicken@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.96, 0.08) rectangle (0.96, 2.35); - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % store the current scale factor @@ -106,7 +106,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -136,7 +136,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -187,7 +187,7 @@ % Bill %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \unless\ifchicken@back \chicken@part@draw[\chicken@comb] (-0.04, 1.57) ellipse[x radius=0.04, y radius=0.08, rotate=-20]; - \chicken@part@draw[\chicken@comb] (0.04, 1.57) ellipse[x radius=0.04, y radius=0.08, rotate=20]; + \chicken@part@draw[\chicken@comb] (0.04, 1.57) ellipse[x radius=0.04, y radius=0.08, rotate=20]; \chicken@part@draw[\chicken@bill] (-0.09, 1.7) -- (0, 1.58) -- (0.09, 1.7) arc [start angle=50, end angle=130, radius=0.14] -- cycle; \fi% back % @@ -225,7 +225,7 @@ \def\chicken@drawbaby{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.53, 0.1) rectangle (0.53, 1.22); @@ -242,7 +242,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -260,7 +260,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts (center: x=0.925) - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-coatis.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-coatis.sty index b1fcf7747d1..1e5bba28a7b 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-coatis.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-coatis.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-coatis}[2024/12/12 version v2.1 Drawing coatis in TikZ] +\ProvidesPackage{tikzlings-coatis}[2025/01/05 version v2.2 Drawing coatis in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -51,7 +51,7 @@ body/.store in = \coati@body, body = brown!50!darkgray!97!yellow!50!darkgray, eye/.store in = \coati@eye, - eye = coati@bodybright!50!black, + eye = coati@bodybright!50!black, rotatehead/.store in = \coati@rotatehead, rotate head/.forward to = /coati/rotatehead, rotatehead = 0, @@ -60,23 +60,23 @@ % options % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - 3D/.code = \coati@threeDtrue, + 3D/.code = \coati@threeDtrue, sideward/.code = \coati@sidewardtrue, leftstep/.code = \coati@leftsteptrue, left step/.forward to = /coati/leftstep, rightstep/.code = \coati@rightsteptrue, - right step/.forward to = /coati/rightstep, - back/.code = \coati@backtrue, + right step/.forward to = /coati/rightstep, + back/.code = \coati@backtrue, contour/.code = \coati@contourtrue \def\coati@contour{#1}, - contour/.default = black, - outline/.forward to = /coati/contour, + contour/.default = black, + outline/.forward to = /coati/contour, } \def\coati@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.84,0.1) rectangle (1.63,2.26); @@ -93,7 +93,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -120,44 +120,41 @@ \pgfmathsetmacro{\coati@sat}{(array({\coati@hsbcolorspec},1)+0.1)} \pgfmathsetmacro{\coati@bright}{(array({\coati@hsbcolorspec},2))+0.13} \definecolor{coati@bodybright}{hsb}{\coati@hue,\coati@sat,\coati@bright} - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname coatihookbackground\endcsname \csname tikzlinghookbackground\endcsname - % + % % Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifcoati@leftstep \coati@part@draw[coati@bodybright!80!white] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; \else% step \coati@part@draw[coati@bodybright!80!white] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; - \fi% step + \fi% step \ifcoati@rightstep \coati@part@draw[coati@bodybright!80!white] (0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; \else% step \coati@part@draw[coati@bodybright!80!white] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; - \fi% step + \fi% step % % Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \unless\ifcoati@back \coati@part@draw[\coati@body] (0.2845, 0.5595) .. controls (0.6382, 0.8326) and (0.7302, 1.5138) .. (1.0504, 1.6639) .. controls (1.3206, 1.7840) and (1.7609, 1.3537) .. (1.5608, 1.3437) .. controls (0.9203, 2.0442) and (0.8642, 0.6247) .. (0.5001, 0.3831) .. controls (0.3214, 0.2645) and (-0.1764, 0.1117) .. (-0.1408, 0.3245) .. controls (-0.1082, 0.5191) and (0.0508, 0.3791) .. (0.2845, 0.5595) -- cycle; - \begin{scope} - \clip (0.2845, 0.5595) .. controls (0.6382, 0.8326) and (0.7302, 1.5138) .. (1.0504, 1.6639) .. controls (1.3206, 1.7840) and (1.7609, 1.3537) .. (1.5608, 1.3437) .. controls (0.9203, 2.0442) and (0.8642, 0.6247) .. (0.5001, 0.3831) .. controls (0.3214, 0.2645) and (-0.1764, 0.1117) .. (-0.1408, 0.3245) .. controls (-0.1082, 0.5191) and (0.0508, 0.3791) .. (0.2845, 0.5595) -- cycle; - \coati@part@draw[coati@bodybright!45!white!95!orange,rotate around={-30:(0.8,1.15)}] (0.6,1.1) rectangle ++(0.4,0.1); - \coati@part@draw[coati@bodybright!45!white!95!orange,rotate around={-30:(0.9,1.35)}] (0.7,1.3) rectangle ++(0.4,0.1); - \coati@part@draw[coati@bodybright!45!white!95!orange,rotate around={-50:(1.0,1.5)}] (0.8,1.45) rectangle ++(0.4,0.1); - \coati@part@draw[coati@bodybright!45!white!95!orange,rotate around={-80:(1.2,1.6)}] (1.0,1.55) rectangle ++(0.4,0.1); - \coati@part@draw[coati@bodybright!45!white!95!orange,rotate around={-130:(1.5,1.5)}] (1.3,1.45) rectangle ++(0.4,0.1); - \coati@part@draw[coati@bodybright!45!white!95!orange,rotate around={-30:(0.55,0.65)}] (0.35,0.6) rectangle ++(0.4,0.1); - \coati@part@draw[coati@bodybright!45!white!95!orange,rotate around={-30:(0.65,0.9)}] (0.45,0.85) rectangle ++(0.4,0.1); - \coati@part@draw[coati@bodybright!45!white!95!orange,rotate around={-40:(0.35,0.45)}] (0.15,0.4) rectangle ++(0.4,0.1); - \coati@part@draw[coati@bodybright!45!white!95!orange,rotate around={-60:(0.05,0.3)}] (-0.15,0.25) rectangle ++(0.4,0.1); - \end{scope} + \coati@part@draw[coati@bodybright!45!white!95!orange] (1.48, 1.554) -- (1.4139, 1.4752).. controls (1.4389, 1.4583) and (1.4649, 1.4375) .. (1.492, 1.4127) -- (1.5537, 1.4862).. controls (1.5333, 1.5087) and (1.5084, 1.5318) .. (1.48, 1.554) -- cycle; + \coati@part@draw[coati@bodybright!45!white!95!orange] (1.2166, 1.6794) -- (1.2121, 1.5329).. controls (1.2432, 1.5385) and (1.2764, 1.5364) .. (1.3119, 1.5258) -- (1.3158, 1.6501).. controls (1.2832, 1.6633) and (1.2498, 1.6736) .. (1.2166, 1.6794) -- cycle; + \coati@part@draw[coati@bodybright!45!white!95!orange] (1.0093, 1.6405).. controls (0.9821, 1.6229) and (0.9566, 1.6014) .. (0.9325, 1.5765) -- (1.0545, 1.4296).. controls (1.0777, 1.4572) and (1.1021, 1.4801) .. (1.1281, 1.4976) -- (1.0093, 1.6405) -- cycle; + \coati@part@draw[coati@bodybright!45!white!95!orange](0.8327, 1.4466).. controls (0.8154, 1.4193) and (0.7988, 1.3901) .. (0.7823, 1.3602) -- (0.9497, 1.2635).. controls (0.9655, 1.2946) and (0.9818, 1.3236) .. (0.9987, 1.3507) -- (0.8327, 1.4466) -- cycle; + \coati@part@draw[coati@bodybright!45!white!95!orange] (0.7253, 1.2508).. controls (0.7107, 1.2213) and (0.6961, 1.1912) .. (0.6814, 1.1607) -- (0.859, 1.0582).. controls (0.8717, 1.0897) and (0.8844, 1.1212) .. (0.8975, 1.1514) -- (0.7253, 1.2508) -- cycle; + \coati@part@draw[coati@bodybright!45!white!95!orange] (0.5972, 0.9882).. controls (0.5821, 0.9583) and (0.5665, 0.9288) .. (0.5505, 0.8997) -- (0.7501, 0.7845).. controls (0.7627, 0.8154) and (0.7754, 0.8463) .. (0.7878, 0.8781) -- (0.5972, 0.9882) -- cycle; + \coati@part@draw[coati@bodybright!45!white!95!orange] (0.464, 0.7574).. controls (0.4448, 0.7293) and (0.4248, 0.7022) .. (0.4037, 0.6767) -- (0.6357, 0.5427).. controls (0.6519, 0.5703) and (0.6676, 0.5997) .. (0.6828, 0.6311) -- (0.464, 0.7574) -- cycle; + \coati@part@draw[coati@bodybright!45!white!95!orange](0.2881, 0.5624).. controls (0.2869, 0.5615) and (0.2857, 0.5604) .. (0.2845, 0.5595).. controls (0.2564, 0.5378) and (0.2295, 0.521) .. (0.2036, 0.5074) -- (0.3683, 0.3141).. controls (0.4022, 0.3288) and (0.4337, 0.3442) .. (0.461, 0.3595) -- (0.2881, 0.5624) -- cycle; + \coati@part@draw[coati@bodybright!45!white!95!orange] (0.0822, 0.4628).. controls (0.0453, 0.4543) and (0.0123, 0.4501) .. (-0.0164, 0.445) -- (0.039, 0.2211).. controls (0.0701, 0.2242) and (0.1034, 0.23) .. (0.1379, 0.2379) -- (0.0822, 0.4628) -- cycle; \fi% back % % Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -170,26 +167,26 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname coatihookbelly\endcsname \csname tikzlinghookbelly\endcsname - % + % % Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{scope}[rotate around={\coati@rotatehead:(0,1.68)}] % % Sidewards head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifcoati@sideward - % + % % Left Ear %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \coati@part@draw[coati@bodybright!45!white!95!orange] (-0.212, 2.135) ellipse[x radius=0.09, y radius=0.12, rotate=-16]; \unless\ifcoati@back \coati@part@draw[coati@bodybright!80!white] (-0.212, 2.135) ellipse[x radius=0.065, y radius=0.09, rotate=-16]; \fi% back - % + % % Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifcoati@back \coati@part@draw[coati@bodybright!45!white!95!orange] (0.4569, 1.5608) .. controls (0.3680, 1.3594) and (0.0005, 1.2699) .. (-0.1826, 1.3507) .. controls (-0.3657, 1.4315) and (-0.5475, 1.7632) .. (-0.4587, 1.9646) .. controls (-0.1103, 2.3578) and (0.5123, 2.0832) .. (0.4569, 1.5608) -- cycle; \else% back \coati@part@draw[coati@bodybright!45!white!95!orange] (0.4808, 1.7911) .. controls (0.5682, 1.2837) and (-0.3468, 1.3575) .. (-0.6360, 1.3679) .. controls (-0.7582, 1.4729) and (-0.5198, 1.7911) .. (-0.5198, 1.7911) .. controls (-0.3597, 2.2914) and (0.3207, 2.2914) .. (0.4808, 1.7911) -- cycle; \fi% back - % + % % Cheek %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \unless\ifcoati@back \coati@part@draw[coati@bodybright!80!white] (0.30, 1.4552) .. controls (0.30, 1.4552) and (0.1016, 1.7565) .. (-0.0005, 1.7581) -- (-0.6360, 1.3679) .. controls (-0.3083, 1.3437) and (0.0283, 1.332) .. (0.30, 1.4552) -- cycle (-0.4166, 1.9824) .. controls (-0.4166, 1.9824) and (-0.2413, 1.9758) .. (-0.2226, 1.9112) -- (-0.6875, 1.4906) .. controls (-0.6875, 1.4906) and (-0.5712, 1.7549) .. (-0.4166, 1.9824) -- cycle; @@ -214,7 +211,7 @@ % % Normal Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \else% sidewards - % + % % Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifcoati@back \coati@part@draw[coati@bodybright!45!white!95!orange] (0.5, 1.8) .. controls (0.5, 1.58) and (0.2, 1.35) .. (0, 1.35) .. controls (-0.2, 1.35) and (-0.5, 1.58) .. (-0.5, 1.8) .. controls (-0.34, 2.3) and (0.34, 2.3) .. (0.5, 1.8) -- cycle; @@ -228,7 +225,7 @@ \fi% back % % Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \unless\ifcoati@back + \unless\ifcoati@back \coati@part@draw[coati@bodybright!50!black] (0, 1.248) circle[radius=0.09]; \fi% back % @@ -241,35 +238,32 @@ % Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \coati@part@draw[coati@bodybright!45!white!95!orange] (0.44, 2.02) circle[radius=0.12]; \coati@part@draw[coati@bodybright!45!white!95!orange] (-0.44, 2.02) circle[radius=0.12]; - \unless\ifcoati@back - \coati@part@draw[coati@bodybright!80!white] (0.44, 2.02) circle[radius=0.09]; + \unless\ifcoati@back + \coati@part@draw[coati@bodybright!80!white] (0.44, 2.02) circle[radius=0.09]; \coati@part@draw[coati@bodybright!80!white] (-0.44, 2.02) circle[radius=0.09]; \fi% back - % + % \fi% sidewards \end{scope} % % Tail if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifcoati@back \coati@part@draw[\coati@body] (0.2845, 0.5595) .. controls (0.6382, 0.8326) and (0.7302, 1.5138) .. (1.0504, 1.6639) .. controls (1.3206, 1.7840) and (1.7609, 1.3537) .. (1.5608, 1.3437) .. controls (0.9203, 2.0442) and (0.8642, 0.6247) .. (0.5001, 0.3831) .. controls (0.3214, 0.2645) and (-0.1764, 0.1117) .. (-0.1408, 0.3245) .. controls (-0.1082, 0.5191) and (0.0508, 0.3791) .. (0.2845, 0.5595) -- cycle; - \begin{scope} - \clip (0.2845, 0.5595) .. controls (0.6382, 0.8326) and (0.7302, 1.5138) .. (1.0504, 1.6639) .. controls (1.3206, 1.7840) and (1.7609, 1.3537) .. (1.5608, 1.3437) .. controls (0.9203, 2.0442) and (0.8642, 0.6247) .. (0.5001, 0.3831) .. controls (0.3214, 0.2645) and (-0.1764, 0.1117) .. (-0.1408, 0.3245) .. controls (-0.1082, 0.5191) and (0.0508, 0.3791) .. (0.2845, 0.5595) -- cycle; - \coati@part@draw[coati@bodybright!45!white!95!orange,rotate around={-30:(0.8,1.15)}] (0.6,1.1) rectangle ++(0.4,0.1); - \coati@part@draw[coati@bodybright!45!white!95!orange,rotate around={-30:(0.9,1.35)}] (0.7,1.3) rectangle ++(0.4,0.1); - \coati@part@draw[coati@bodybright!45!white!95!orange,rotate around={-50:(1.0,1.5)}] (0.8,1.45) rectangle ++(0.4,0.1); - \coati@part@draw[coati@bodybright!45!white!95!orange,rotate around={-80:(1.2,1.6)}] (1.0,1.55) rectangle ++(0.4,0.1); - \coati@part@draw[coati@bodybright!45!white!95!orange,rotate around={-130:(1.5,1.5)}] (1.3,1.45) rectangle ++(0.4,0.1); - \coati@part@draw[coati@bodybright!45!white!95!orange,rotate around={-30:(0.55,0.65)}] (0.35,0.6) rectangle ++(0.4,0.1); - \coati@part@draw[coati@bodybright!45!white!95!orange,rotate around={-30:(0.65,0.9)}] (0.45,0.85) rectangle ++(0.4,0.1); - \coati@part@draw[coati@bodybright!45!white!95!orange,rotate around={-40:(0.35,0.45)}] (0.15,0.4) rectangle ++(0.4,0.1); - \coati@part@draw[coati@bodybright!45!white!95!orange,rotate around={-60:(0.05,0.3)}] (-0.15,0.25) rectangle ++(0.4,0.1); - \end{scope} + \coati@part@draw[coati@bodybright!45!white!95!orange] (1.48, 1.554) -- (1.4139, 1.4752).. controls (1.4389, 1.4583) and (1.4649, 1.4375) .. (1.492, 1.4127) -- (1.5537, 1.4862).. controls (1.5333, 1.5087) and (1.5084, 1.5318) .. (1.48, 1.554) -- cycle; + \coati@part@draw[coati@bodybright!45!white!95!orange] (1.2166, 1.6794) -- (1.2121, 1.5329).. controls (1.2432, 1.5385) and (1.2764, 1.5364) .. (1.3119, 1.5258) -- (1.3158, 1.6501).. controls (1.2832, 1.6633) and (1.2498, 1.6736) .. (1.2166, 1.6794) -- cycle; + \coati@part@draw[coati@bodybright!45!white!95!orange] (1.0093, 1.6405).. controls (0.9821, 1.6229) and (0.9566, 1.6014) .. (0.9325, 1.5765) -- (1.0545, 1.4296).. controls (1.0777, 1.4572) and (1.1021, 1.4801) .. (1.1281, 1.4976) -- (1.0093, 1.6405) -- cycle; + \coati@part@draw[coati@bodybright!45!white!95!orange](0.8327, 1.4466).. controls (0.8154, 1.4193) and (0.7988, 1.3901) .. (0.7823, 1.3602) -- (0.9497, 1.2635).. controls (0.9655, 1.2946) and (0.9818, 1.3236) .. (0.9987, 1.3507) -- (0.8327, 1.4466) -- cycle; + \coati@part@draw[coati@bodybright!45!white!95!orange] (0.7253, 1.2508).. controls (0.7107, 1.2213) and (0.6961, 1.1912) .. (0.6814, 1.1607) -- (0.859, 1.0582).. controls (0.8717, 1.0897) and (0.8844, 1.1212) .. (0.8975, 1.1514) -- (0.7253, 1.2508) -- cycle; + \coati@part@draw[coati@bodybright!45!white!95!orange] (0.5972, 0.9882).. controls (0.5821, 0.9583) and (0.5665, 0.9288) .. (0.5505, 0.8997) -- (0.7501, 0.7845).. controls (0.7627, 0.8154) and (0.7754, 0.8463) .. (0.7878, 0.8781) -- (0.5972, 0.9882) -- cycle; + \coati@part@draw[coati@bodybright!45!white!95!orange] (0.464, 0.7574).. controls (0.4448, 0.7293) and (0.4248, 0.7022) .. (0.4037, 0.6767) -- (0.6357, 0.5427).. controls (0.6519, 0.5703) and (0.6676, 0.5997) .. (0.6828, 0.6311) -- (0.464, 0.7574) -- cycle; + \coati@part@draw[coati@bodybright!45!white!95!orange](0.2881, 0.5624).. controls (0.2869, 0.5615) and (0.2857, 0.5604) .. (0.2845, 0.5595).. controls (0.2564, 0.5378) and (0.2295, 0.521) .. (0.2036, 0.5074) -- (0.3683, 0.3141).. controls (0.4022, 0.3288) and (0.4337, 0.3442) .. (0.461, 0.3595) -- (0.2881, 0.5624) -- cycle; + \coati@part@draw[coati@bodybright!45!white!95!orange] (0.0822, 0.4628).. controls (0.0453, 0.4543) and (0.0123, 0.4501) .. (-0.0164, 0.445) -- (0.039, 0.2211).. controls (0.0701, 0.2242) and (0.1034, 0.23) .. (0.1379, 0.2379) -- (0.0822, 0.4628) -- cycle; \fi% back % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname coatihookbody\endcsname \csname tikzlinghookbody\endcsname - % + % } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-elephants.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-elephants.sty index 0bfa9ffc50d..d846c1d9d45 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-elephants.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-elephants.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-elephants}[2024/12/12 version v2.1 Draw teddy elephants in TikZ] +\ProvidesPackage{tikzlings-elephants}[2025/01/05 version v2.2 Draw teddy elephants in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -50,32 +50,32 @@ eye/.store in = \elephant@eye, eye = \elephant@body!30!black, ears/.store in = \elephant@ears, - ears = \elephant@body!30!white, + ears = \elephant@body!30!white, feet/.store in = \elephant@feet, - feet = \elephant@body!30!white, + feet = \elephant@body!30!white, hands/.store in = \elephant@hands, - hands = \elephant@body!30!white, + hands = \elephant@body!30!white, belly/.store in = \elephant@belly, - belly = \elephant@body!30!white, + belly = \elephant@body!30!white, tail/.store in = \elephant@tail, - tail = \elephant@body!30!white, + tail = \elephant@body!30!white, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % options % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - 3D/.code = \elephant@threeDtrue, - back/.code = \elephant@backtrue, + 3D/.code = \elephant@threeDtrue, + back/.code = \elephant@backtrue, contour/.code = \elephant@contourtrue \def\elephant@contour{#1}, - contour/.default = black, - outline/.forward to = /elephant/contour, + contour/.default = black, + outline/.forward to = /elephant/contour, } \def\elephant@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.86, 0.0) rectangle (0.86, 2.17); @@ -92,7 +92,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -110,7 +110,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -123,14 +123,14 @@ % % Feet if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifelephant@back - \elephant@part@draw[\elephant@body] (0.425, 0.3) circle[radius=0.28]; + \elephant@part@draw[\elephant@body] (0.425, 0.3) circle[radius=0.28]; \elephant@part@draw[\elephant@body] (-0.425, 0.3) circle[radius=0.28]; \elephant@part@draw[\elephant@body] (0.57,0.74) circle [radius=0.20]; \elephant@part@draw[\elephant@body] (-0.57,0.74) circle [radius=0.20]; \fi% back % % Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \elephant@part@draw[\elephant@body] (0,0.75) ellipse[x radius=0.55, y radius=0.65]; + \elephant@part@draw[\elephant@body] (0,0.75) ellipse[x radius=0.55, y radius=0.65]; \unless\ifelephant@back \elephant@part@draw[\elephant@belly] (0,0.7) ellipse[x radius=0.35, y radius=0.4]; \fi% back @@ -141,14 +141,14 @@ % % Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \unless\ifelephant@back - \elephant@part@draw[\elephant@body] (0.425, 0.3) circle[radius=0.28]; + \elephant@part@draw[\elephant@body] (0.425, 0.3) circle[radius=0.28]; \elephant@part@draw[\elephant@body] (-0.425, 0.3) circle[radius=0.28]; - \elephant@part@draw[\elephant@feet] (0.425, 0.3) circle[radius=0.17]; + \elephant@part@draw[\elephant@feet] (0.425, 0.3) circle[radius=0.17]; \elephant@part@draw[\elephant@feet] (-0.425, 0.3) circle[radius=0.17]; - \elephant@part@draw[\elephant@body] (0.57,0.75) circle [radius=0.20]; + \elephant@part@draw[\elephant@body] (0.57,0.75) circle [radius=0.20]; \elephant@part@draw[\elephant@hands] (0.57,0.74) circle [radius=0.12]; \elephant@part@draw[\elephant@body] (-0.57,0.74) circle [radius=0.20]; - \elephant@part@draw[\elephant@hands] (-0.57,0.74) circle [radius=0.12]; + \elephant@part@draw[\elephant@hands] (-0.57,0.74) circle [radius=0.12]; \fi% back % % Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -156,11 +156,11 @@ \elephant@part@draw[\elephant@body] (-0.5, 1.7) ellipse [x radius=0.35,y radius=0.45]; \unless\ifelephant@back \elephant@part@draw[\elephant@ears] (0.5, 1.7) ellipse [x radius=0.25,y radius=0.35]; - \elephant@part@draw[\elephant@ears] (-0.5, 1.7) ellipse [x radius=0.25,y radius=0.35]; + \elephant@part@draw[\elephant@ears] (-0.5, 1.7) ellipse [x radius=0.25,y radius=0.35]; \fi% back % % Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \elephant@part@draw[\elephant@body] (0, 1.55) circle[radius=0.5]; + \elephant@part@draw[\elephant@body] (0, 1.55) circle[radius=0.5]; % % Show details only from the front %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \unless\ifelephant@back @@ -175,8 +175,8 @@ \fi% 3D % % Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \elephant@part@draw[\elephant@eye] (-0.155, 1.7) circle[radius=0.05]; - \elephant@part@draw[\elephant@eye] (0.155, 1.7) circle[radius=0.05]; + \elephant@part@draw[\elephant@eye] (-0.155, 1.7) circle[radius=0.05]; + \elephant@part@draw[\elephant@eye] (0.155, 1.7) circle[radius=0.05]; % \fi% back % diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-hippos.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-hippos.sty index 42fd5586e4e..22f48a85c03 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-hippos.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-hippos.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-hippos}[2024/12/12 version v2.1 Drawing hippos in TikZ] +\ProvidesPackage{tikzlings-hippos}[2025/01/05 version v2.2 Drawing hippos in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -31,6 +31,7 @@ \newif\ifhippo@threeD \newif\ifhippo@back \newif\ifhippo@contour +\newif\ifhippo@openmouth \tikzset{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -48,9 +49,9 @@ body/.store in = \hippo@body, body = gray!55!white, eye/.store in = \hippo@eye, - eye = white, + eye = white, pupil/.store in = \hippo@pupil, - pupil = black, + pupil = black, toes/.store in = \hippo@toes, toes = \hippo@body, mouth/.store in = \hippo@mouth, @@ -60,19 +61,22 @@ % options % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - 3D/.code = \hippo@threeDtrue, + openmouth/.code = \hippo@openmouthtrue, + open mouth/.forward to = /hippo/openmouth, + 3D/.code = \hippo@threeDtrue + \def\hippo@mouth{black}, back/.code = \hippo@backtrue, contour/.code = \hippo@contourtrue \def\hippo@contour{#1} \def\hippo@mouth{#1}, - contour/.default = black, - outline/.forward to = /hippo/contour, + contour/.default = black, + outline/.forward to = /hippo/contour, } \def\hippo@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.625,0.1) rectangle (0.625, 2.17); @@ -89,7 +93,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -107,12 +111,12 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname hippohookbackground\endcsname - \csname tikzlinghookbackground\endcsname + \csname tikzlinghookbackground\endcsname % % Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \hippo@part@draw[\hippo@body!70!black] (0.23,2.03) ellipse[x radius=0.09, y radius=0.13, rotate=-30]; @@ -120,11 +124,8 @@ % % Feet if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifhippo@back - \begin{scope} - \clip (-0.5,0.4) rectangle (0.5,0.13); - \hippo@part@draw[\hippo@body!70!black] (-0.25,0.15) ellipse[x radius=0.16, y radius=0.17]; - \hippo@part@draw[\hippo@body!70!black] (0.25,0.15) ellipse[x radius=0.16, y radius=0.17]; - \end{scope} + \hippo@part@draw[\hippo@body!70!black] (-0.08,0.13) arc [start angle=0, end angle=180, x radius=0.17, y radius=0.19] -- cycle; + \hippo@part@draw[\hippo@body!70!black](0.08,0.13) arc [start angle=180, end angle=0, x radius=0.17, y radius=0.19] -- cycle; \fi% back % % Nose if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -138,7 +139,7 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname hippohookbelly\endcsname \csname tikzlinghookbelly\endcsname - % + % % Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \unless\ifhippo@back \hippo@part@draw[\hippo@body!70!black] (0.35,1.0) ellipse[x radius=0.24, y radius=0.13, rotate=90]; @@ -170,24 +171,21 @@ \hippo@part@draw[\hippo@mouth] (0.07, 1.63) circle[radius=0.035]; % % Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \ifhippo@threeD - \draw[black,line width=\scalingfactor*0.4pt] (0.125, 1.5) arc [start angle=-50, end angle=-130, radius=0.2] ; - \else% 3D + \ifhippo@openmouth + \filldraw[\hippo@mouth,line width=\scalingfactor*0.4pt] (0.125, 1.5) arc [start angle=-50, end angle=-130, radius=0.2]; + \else% open mouth \draw[\hippo@mouth,line width=\scalingfactor*0.4pt] (0.125, 1.5) arc [start angle=-50, end angle=-130, radius=0.2]; - \fi% 3D + \fi% open mouth % % Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \begin{scope} - \clip (-0.5,0.4) rectangle (0.5,0.13); - \hippo@part@draw[\hippo@body!70!black] (-0.25,0.15) ellipse[x radius=0.16, y radius=0.17]; - \hippo@part@draw[\hippo@body!70!black] (0.25,0.15) ellipse[x radius=0.16, y radius=0.17]; - \hippo@part@draw[\hippo@toes] (0.25,0.13) ellipse[x radius=0.05, y radius=0.1]; - \hippo@part@draw[\hippo@toes] (0.13,0.11) ellipse[x radius=0.05, y radius=0.1]; - \hippo@part@draw[\hippo@toes] (0.37,0.11) ellipse[x radius=0.05, y radius=0.1]; - \hippo@part@draw[\hippo@toes] (-0.25,0.13) ellipse[x radius=0.05, y radius=0.1]; - \hippo@part@draw[\hippo@toes] (-0.13,0.11) ellipse[x radius=0.05, y radius=0.1]; - \hippo@part@draw[\hippo@toes] (-0.37,0.11) ellipse[x radius=0.05, y radius=0.1]; - \end{scope} + \hippo@part@draw[\hippo@body!70!black] (-0.08,0.13) arc [start angle=0, end angle=180, x radius=0.17, y radius=0.19] -- cycle; + \hippo@part@draw[\hippo@body!70!black](0.08,0.13) arc [start angle=180, end angle=0, x radius=0.17, y radius=0.19] -- cycle; + \hippo@part@draw[\hippo@toes] (-0.08,0.13) arc [start angle=0, end angle=180, x radius=0.05, y radius=0.08] -- cycle; + \hippo@part@draw[\hippo@toes] (-0.2,0.13) arc [start angle=0, end angle=180, x radius=0.05, y radius=0.1] -- cycle; + \hippo@part@draw[\hippo@toes] (-0.32,0.13) arc [start angle=0, end angle=180, x radius=0.05, y radius=0.08] -- cycle; + \hippo@part@draw[\hippo@toes] (0.08,0.13) arc [start angle=180, end angle=0, x radius=0.05, y radius=0.08] -- cycle; + \hippo@part@draw[\hippo@toes] (0.2,0.13) arc [start angle=180, end angle=0, x radius=0.05, y radius=0.1] -- cycle; + \hippo@part@draw[\hippo@toes] (0.32,0.13) arc [start angle=180, end angle=0, x radius=0.05, y radius=0.08] -- cycle; % \fi% back % @@ -239,6 +237,11 @@ %\hippo[mouth=red] %\end{tcblisting} % +% The hippo can open its mouth: +%\begin{tcblisting}{title={Open mouth}} +%\hippo[openmouth] +%\end{tcblisting} +% %The hippo can also do its nails: %\begin{tcblisting}{title={Toe colour}} %\hippo[toes=red] diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-koalas.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-koalas.sty index 4d26d34f99a..3b3a2975177 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-koalas.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-koalas.sty @@ -12,12 +12,12 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-koalas}[2024/12/12 version v2.1 Drawing koalas in TikZ] +\ProvidesPackage{tikzlings-koalas}[2025/01/05 version v2.2 Drawing koalas in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} \usetikzlibrary{shadows.blur} -\usetikzlibrary{fadings} +\usetikzlibrary{fadings} \tikzfading[name=koala@blush,inner color=transparent!50,outer color=transparent!100] @@ -38,6 +38,7 @@ \newif\ifkoala@threeD \newif\ifkoala@back \newif\ifkoala@contour +\newif\ifkoala@openmouth \tikzset{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -55,7 +56,7 @@ body/.store in = \koala@body, body = gray!75!white, eye/.store in = \koala@eye, - eye = black, + eye = black, mouth/.store in = \koala@mouth, mouth = \koala@body!40!black, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -65,23 +66,25 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% blush/.code = \koala@blushtrue \def\koala@blushcolor{#1}, - blush/.default = red, - sleeping/.code = \koala@sleepingtrue, + blush/.default = red, + sleeping/.code = \koala@sleepingtrue, + openmouth/.code = \koala@openmouthtrue, + open mouth/.forward to = /koala/openmouth, 3D/.code = \koala@threeDtrue - \def\koala@mouth{black}, - back/.code = \koala@backtrue, + \def\koala@mouth{black}, + back/.code = \koala@backtrue, contour/.code = \koala@contourtrue \def\koala@contour{#1} \def\koala@blushcolor{#1} \def\koala@mouth{#1}, - contour/.default = black, - outline/.forward to = /koala/contour, + contour/.default = black, + outline/.forward to = /koala/contour, } \def\koala@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.88,0.1) rectangle (0.88, 2.35); @@ -98,7 +101,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -116,7 +119,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -124,7 +127,7 @@ \csname tikzlinghookbackground\endcsname % % Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \koala@part@draw[\koala@body!50!black] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; + \koala@part@draw[\koala@body!50!black] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; \koala@part@draw[\koala@body!50!black] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; % % Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -173,18 +176,22 @@ \fill[\koala@body!50!black,rotate around={-20:(-0.2925, 1.6925)}] (-0.29, 1.68) rectangle ++(-0.005, 0.03); \fill[\koala@body!50!black,rotate around={20:(-0.2143, 1.6925)}] (-0.2168, 1.68) rectangle ++(-0.005, 0.03); \fill[\koala@body!50!black,rotate around={-40:(-0.3255, 1.7025)}] (-0.323, 1.69) rectangle ++(-0.005, 0.03); - \fill[\koala@body!50!black,rotate around={40:(-0.1813, 1.7025)}] (-0.1838, 1.69) rectangle ++(-0.005, 0.03); + \fill[\koala@body!50!black,rotate around={40:(-0.1813, 1.7025)}] (-0.1838, 1.69) rectangle ++(-0.005, 0.03); \fill[\koala@body!50!black, even odd rule] (0.3331, 1.741) .. controls (0.3331, 1.685) and (0.1737, 1.685) .. (0.1737, 1.741) .. controls (0.1737, 1.848) and (0.3331, 1.848) .. (0.3331, 1.741) -- cycle (0.328, 1.741) .. controls (0.323, 1.705) and (0.184, 1.705) .. (0.179, 1.741) .. controls (0.184, 1.843) and (0.323, 1.843) .. (0.328, 1.741) -- cycle; \fill[\koala@body!50!black, even odd rule] (-0.3331, 1.741) .. controls (-0.3331, 1.685) and (-0.1737, 1.685) .. (-0.1737, 1.741) .. controls (-0.1737, 1.848) and (-0.3331, 1.848) .. (-0.3331, 1.741) -- cycle (-0.328, 1.741) .. controls (-0.323, 1.705) and (-0.184, 1.705) .. (-0.179, 1.741) .. controls (-0.184, 1.843) and (-0.323, 1.843) .. (-0.328, 1.741) -- cycle; \else% sleeping - \koala@part@draw[\koala@eye] (-0.255, 1.74) circle[radius=0.08]; - \koala@part@draw[\koala@eye] (0.255, 1.74) circle[radius=0.08]; - \fill[white] (-0.27, 1.76) circle[radius=0.015]; - \fill[white] (0.24, 1.76) circle[radius=0.015]; + \koala@part@draw[\koala@eye] (-0.255, 1.74) circle[radius=0.08]; + \koala@part@draw[\koala@eye] (0.255, 1.74) circle[radius=0.08]; + \fill[white] (-0.27, 1.76) circle[radius=0.015]; + \fill[white] (0.24, 1.76) circle[radius=0.015]; \fi% sleeping % % Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \draw[\koala@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.39) arc [start angle=-40, end angle=-140, radius=0.16]; + \ifkoala@openmouth + \filldraw[\koala@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.39) arc [start angle=-40, end angle=-140, radius=0.16]; + \else + \draw[\koala@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.39) arc [start angle=-40, end angle=-140, radius=0.16]; + \fi % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % @@ -194,7 +201,7 @@ % % Blushed %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifkoala@blush - \fill[\koala@blushcolor,path fading=koala@blush] (-0.3, 1.52) circle[radius=0.1]; + \fill[\koala@blushcolor,path fading=koala@blush] (-0.3, 1.52) circle[radius=0.1]; \fill[\koala@blushcolor,path fading=koala@blush] (0.3, 1.52) circle[radius=0.1]; \fi% blush % @@ -245,6 +252,11 @@ %\koala[mouth=red] %\end{tcblisting} % +% The koala can open its mouth: +%\begin{tcblisting}{title={Open mouth}} +%\koala[openmouth] +%\end{tcblisting} +% %It can also blush %\begin{tcblisting}{title={Blushing koala}} %\koala[blush=red] diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-list.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-list.sty index 05f4a2de540..b8cd2cdb387 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-list.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-list.sty @@ -1,4 +1,4 @@ -\ProvidesPackage{tikzlings-list}[2024/12/12 version v2.1 Helper package for the tikzlings] +\ProvidesPackage{tikzlings-list}[2025/01/05 version v2.2 Helper package for the tikzlings] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-marmots.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-marmots.sty index 04866b0eb01..8a274a550e8 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-marmots.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-marmots.sty @@ -12,12 +12,12 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-marmots}[2024/12/12 version v2.1 Drawing marmots in TikZ] +\ProvidesPackage{tikzlings-marmots}[2025/01/05 version v2.2 Drawing marmots in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} \usetikzlibrary{shadows.blur} -\usetikzlibrary{fadings} +\usetikzlibrary{fadings} \tikzfading[name=marmot@blush,inner color=transparent!50,outer color=transparent!100] @@ -28,13 +28,13 @@ \else \ifdefined\pdfrandomseed % pdflatex \else - \ifdefined\randomseed + \ifdefined\randomseed \let\pdfrandomseed\randomseed % post TL19 xelatex and lualatex \else \let\pdfrandomseed\time % pre TL19 xelatex \fi \fi - \pgfmathsetseed{\number\pdfrandomseed} + \pgfmathsetseed{\number\pdfrandomseed} \fi \ExplSyntaxOff @@ -47,7 +47,7 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname marmothookforeground\endcsname \csname tikzlinghookforeground\endcsname - % + % } \newif\ifmarmot@blush @@ -60,6 +60,7 @@ \newif\ifmarmot@rightstep \newif\ifmarmot@back \newif\ifmarmot@contour +\newif\ifmarmot@openmouth \tikzset{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -77,7 +78,7 @@ body/.store in = \marmot@body, body = brown, eye/.store in = \marmot@eye, - eye = \marmot@body!50!black, + eye = \marmot@body!50!black, mouth/.store in = \marmot@mouth, mouth = \marmot@body!50!black, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -87,13 +88,15 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% blush/.code = \marmot@blushtrue \def\marmot@blushcolor{#1}, - blush/.default = red, - whiskers/.code = \marmot@whiskerstrue + blush/.default = red, + whiskers/.code = \marmot@whiskerstrue \def\marmot@whiskers{#1}, whiskers/.default = gray, - teeth/.code = \marmot@teethtrue - \def\marmot@teeth{#1}, + teeth/.code = \marmot@teethtrue + \def\marmot@teeth{#1}, teeth/.default = white, + openmouth/.code = \marmot@openmouthtrue, + open mouth/.forward to = /marmot/openmouth, 3D/.code = \marmot@threeDtrue, shadow/.code = \marmot@shadowtrue, askphil/.code = \marmot@askphiltrue, @@ -101,20 +104,20 @@ leftstep/.code = \marmot@leftsteptrue, left step/.forward to = /marmot/leftstep, rightstep/.code = \marmot@rightsteptrue, - right step/.forward to = /marmot/rightstep, - back/.code = \marmot@backtrue, + right step/.forward to = /marmot/rightstep, + back/.code = \marmot@backtrue, contour/.code = \marmot@contourtrue \def\marmot@contour{#1} \def\marmot@blushcolor{#1} \def\marmot@mouth{#1}, - contour/.default = black, - outline/.forward to = /marmot/contour, + contour/.default = black, + outline/.forward to = /marmot/contour, } \def\marmot@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.625,0.1) rectangle (0.905, 2.17); @@ -131,7 +134,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -171,20 +174,20 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifmarmot@leftstep - \marmot@part@draw[\marmot@body!50!black] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; + \marmot@part@draw[\marmot@body!50!black] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; \else% step - \marmot@part@draw[\marmot@body!50!black] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; + \marmot@part@draw[\marmot@body!50!black] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; \fi% step % \ifmarmot@rightstep - \marmot@part@draw[\marmot@body!50!black] (0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; + \marmot@part@draw[\marmot@body!50!black] (0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; \else% step - \marmot@part@draw[\marmot@body!50!black] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; + \marmot@part@draw[\marmot@body!50!black] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; \fi% step % % Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -221,17 +224,21 @@ \marmot@part@draw[\marmot@body!50!black] (-0.385,0.93) ellipse[x radius=0.24, y radius=0.13, rotate=-70]; % % Muzzle %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \marmot@part@draw[\marmot@body!50!white] (0,1.47) ellipse[x radius=0.23, y radius=0.13]; + \marmot@part@draw[\marmot@body!50!white] (0,1.47) ellipse[x radius=0.23, y radius=0.13]; % % Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \marmot@part@draw[\marmot@body!50!black] (0,1.6) circle[radius=0.08]; % % Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \marmot@part@draw[\marmot@eye] (-0.155,1.77) circle[radius=0.05]; - \marmot@part@draw[\marmot@eye] (0.155,1.77) circle[radius=0.05]; + \marmot@part@draw[\marmot@eye] (-0.155,1.77) circle[radius=0.05]; + \marmot@part@draw[\marmot@eye] (0.155,1.77) circle[radius=0.05]; % % Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \fill[\marmot@mouth] (0.145,1.51) arc [start angle=-20, end angle=-160, radius=0.16] -- (-0.14,1.51) -- (-0.14,1.51) arc [start angle=-160, end angle=-20, radius=0.144] -- cycle ; + \ifmarmot@openmouth + \filldraw[\marmot@mouth, line width=\scalingfactor*0.4pt] (0.145,1.51) arc [start angle=-20, end angle=-160, radius=0.155] (-0.145,1.51) arc [start angle=-120, end angle=-60, radius=0.29]; + \else + \draw[\marmot@mouth, line width=\scalingfactor*0.4pt] (0.145,1.51) arc [start angle=-20, end angle=-160, radius=0.16]; + \fi % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % @@ -241,8 +248,8 @@ % % Blushed %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifmarmot@blush - \fill[\marmot@blushcolor,path fading=marmot@blush] (-0.295,1.6) circle[radius=0.1]; - \fill[\marmot@blushcolor,path fading=marmot@blush] (0.295,1.6) circle[radius=0.1]; + \fill[\marmot@blushcolor,path fading=marmot@blush] (-0.295,1.6) circle[radius=0.1]; + \fill[\marmot@blushcolor,path fading=marmot@blush] (0.295,1.6) circle[radius=0.1]; \fi% blush % % Wiskers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -259,7 +266,7 @@ \ifmarmot@teeth \fill[\marmot@body!50!black] (0.048,1.413) rectangle (-0.048,1.373); \fill[\marmot@teeth] (-0.045,1.407) rectangle (-0.004,1.376); - \fill[\marmot@teeth] (0.045,1.407) rectangle (0.004,1.376); + \fill[\marmot@teeth] (0.045,1.407) rectangle (0.004,1.376); \fi% teeth % \fi% back @@ -309,6 +316,11 @@ %\marmot[mouth=red] %\end{tcblisting} % +% The marmot can open its mouth: +%\begin{tcblisting}{title={Open mouth}} +%\marmot[openmouth] +%\end{tcblisting} +% %The marmot can also blush %\begin{tcblisting}{title={Blushing marmot}} %\marmot[blush=red] @@ -334,7 +346,7 @@ %\marmot[askphil] %\end{tcblisting} % -%If a good weather prognosis is derived, the happy marmot can dance by lifting up its left and right foot: +%If a good weather prognosis is derived, the happy marmot can dance by lifting up its left and right foot: %\begin{tcblisting}{title={Walking}} %\marmot[leftstep] %\marmot[rightstep,xshift=2cm] diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-meerkats.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-meerkats.sty index 8dba4e39bf9..42337105d62 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-meerkats.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-meerkats.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-meerkats}[2024/12/12 version v2.1 Drawing meerkats in TikZ] +\ProvidesPackage{tikzlings-meerkats}[2025/01/05 version v2.2 Drawing meerkats in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -26,13 +26,14 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname meerkathookforeground\endcsname \csname tikzlinghookforeground\endcsname - % + % } \newif\ifmeerkat@standing \newif\ifmeerkat@threeD \newif\ifmeerkat@back \newif\ifmeerkat@contour +\newif\ifmeerkat@openmouth \def\meerkat@shift{0} @@ -74,28 +75,30 @@ nose/.store in = \meerkat@nose, nose = \meerkat@body!50!black, mouth/.store in = \meerkat@mouth, - mouth = \meerkat@body!50!black, + mouth = \meerkat@body!50!black, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % options % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + openmouth/.code = \meerkat@openmouthtrue, + open mouth/.forward to = /meerkat/openmouth, + standing/.code = \meerkat@standingtrue + \def\meerkat@shift{15}, 3D/.code = \meerkat@threeDtrue, - back/.code = \meerkat@backtrue, + back/.code = \meerkat@backtrue, contour/.code = \meerkat@contourtrue \def\meerkat@contour{#1} \def\meerkat@blushcolor{#1} \def\meerkat@mouth{#1}, - contour/.default = black, - outline/.forward to = /meerkat/contour, - standing/.code = \meerkat@standingtrue - \def\meerkat@shift{15}, + contour/.default = black, + outline/.forward to = /meerkat/contour, } \def\meerkat@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifmeerkat@standing @@ -116,7 +119,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -134,7 +137,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -145,7 +148,7 @@ % \unless\ifmeerkat@back % Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \meerkat@part@draw[\meerkat@tail] (0.0071, 1.0065).. controls (0.0949, 0.7556) and (0.2077, 0.5139) .. (0.3436, 0.2854).. controls (0.3809, 0.2966) and (0.4183, 0.3078) .. (0.4557, 0.319).. controls (0.3377, 0.5524) and (0.2434, 0.7968) .. (0.174, 1.049); + \meerkat@part@draw[\meerkat@tail] (0.0071, 1.0065).. controls (0.0949, 0.7556) and (0.2077, 0.5139) .. (0.3436, 0.2854).. controls (0.3809, 0.2966) and (0.4183, 0.3078) .. (0.4557, 0.319).. controls (0.3377, 0.5524) and (0.2434, 0.7968) .. (0.174, 1.049); % % Tip of tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \meerkat@part@draw[\meerkat@tip] (0.8483, 0.1284).. controls (0.7159, 0.1309) and (0.575, 0.1064) .. (0.4503, 0.163).. controls (0.3999, 0.1871) and (0.3617, 0.2328) .. (0.3436, 0.2854).. controls (0.3809, 0.2966) and (0.4183, 0.3078) .. (0.4557, 0.319).. controls (0.5224, 0.2163) and (0.6411, 0.1646) .. (0.7581, 0.145).. controls (0.7881, 0.1389) and (0.8182, 0.1337) .. (0.8483, 0.1284) -- cycle; @@ -157,11 +160,11 @@ % \ifmeerkat@back % Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \meerkat@part@draw[\meerkat@tail] (0.0071, 1.0065).. controls (0.0949, 0.7556) and (0.2077, 0.5139) .. (0.3436, 0.2854).. controls (0.3809, 0.2966) and (0.4183, 0.3078) .. (0.4557, 0.319).. controls (0.3377, 0.5524) and (0.2434, 0.7968) .. (0.174, 1.049); + \meerkat@part@draw[\meerkat@tail] (0.0071, 1.0065).. controls (0.0949, 0.7556) and (0.2077, 0.5139) .. (0.3436, 0.2854).. controls (0.3809, 0.2966) and (0.4183, 0.3078) .. (0.4557, 0.319).. controls (0.3377, 0.5524) and (0.2434, 0.7968) .. (0.174, 1.049); % % Tip of tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \meerkat@part@draw[\meerkat@tip] (0.8483, 0.1284).. controls (0.7159, 0.1309) and (0.575, 0.1064) .. (0.4503, 0.163).. controls (0.3999, 0.1871) and (0.3617, 0.2328) .. (0.3436, 0.2854).. controls (0.3809, 0.2966) and (0.4183, 0.3078) .. (0.4557, 0.319).. controls (0.5224, 0.2163) and (0.6411, 0.1646) .. (0.7581, 0.145).. controls (0.7881, 0.1389) and (0.8182, 0.1337) .. (0.8483, 0.1284) -- cycle; - \fi %back + \fi %back \else % sitting meerkat % \unless\ifmeerkat@back @@ -190,7 +193,7 @@ % % Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \meerkat@part@draw[\meerkat@body] (0,0.77) circle [radius=0.35]; - % + % % Upper body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifmeerkat@back \meerkat@part@draw[\meerkat@upperbody] (-0.374, 1.32).. controls (-0.3892, 1.1462) and (-0.2287, 0.903) .. (-0.0859, 0.7515).. controls (-0.0594, 0.7213) and (-0.031, 0.691) .. (0.0, 0.66).. controls (0.031, 0.691) and (0.0595, 0.7213) .. (0.0859, 0.7515).. controls (0.2399, 0.9179) and (0.3892, 1.1462) .. (0.374, 1.32).. controls (0.374, 1.4277) and (0.1868, 1.582) .. (0.0, 1.65).. controls (-0.1876, 1.5817) and (-0.374, 1.4271) .. (-0.374, 1.32) -- cycle; @@ -223,8 +226,11 @@ \meerkat@part@draw[\meerkat@nose] (0.0176, 1.6987) -- (0.0437, 1.7439).. controls (0.0534, 1.7607) and (0.0455, 1.7743) .. (0.0261, 1.7743) -- (-0.0261, 1.7743).. controls (-0.0455, 1.7743) and (-0.0534, 1.7607) .. (-0.0437, 1.7439) -- (-0.0176, 1.6987).. controls (-0.0079, 1.6819) and (0.0079, 1.6819) .. (0.0176, 1.6987) -- cycle; % % Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \draw[\meerkat@mouth,line width=\scalingfactor*0.4pt] (0.0, 1.6871).. controls (0.0412, 1.6415) and (0.1351, 1.6616) .. (0.154, 1.7201); - \draw[\meerkat@mouth,line width=\scalingfactor*0.4pt](0.0, 1.6871).. controls (-0.0412, 1.6415) and (-0.1351, 1.6616) .. (-0.154, 1.7201); + \ifmeerkat@openmouth + \filldraw[\meerkat@mouth,line width=\scalingfactor*0.4pt] (-0.16, 1.727) .. controls (-0.16, 1.727) and (-0.062, 1.62) .. (0, 1.7) .. controls (0.062, 1.62) and (0.16, 1.727) .. (0.16, 1.727) (0.16, 1.727) arc [start angle=-20, end angle=-160, radius=0.17]; + \else + \draw[\meerkat@mouth,line width=\scalingfactor*0.4pt] (-0.16, 1.727) .. controls (-0.16, 1.727) and (-0.062, 1.62) .. (0, 1.7) .. controls (0.062, 1.62) and (0.16, 1.727) .. (0.16, 1.727); + \fi % % Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \meerkat@part@draw[\meerkat@eyecircles,rotate=30] (0.75,1.7) ellipse [x radius=0.14, y radius=0.08]; @@ -238,7 +244,7 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname meerkathookbody\endcsname \csname tikzlinghookbody\endcsname - % + % \end{scope}% body shift } @@ -308,6 +314,11 @@ %\meerkat[tip=red] %\end{tcblisting} % +% The meerkat can open its mouth: +%\begin{tcblisting}{title={Open mouth}} +%\meerkat[openmouth] +%\end{tcblisting} +% %The meerkat can also stand up %\begin{tcblisting}{title={Standing meerkat}} %\meerkat[standing] diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-mice.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-mice.sty index 26424c00af9..f6bc29e3a14 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-mice.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-mice.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-mice}[2024/12/12 version v2.1 Drawing mice in TikZ] +\ProvidesPackage{tikzlings-mice}[2025/01/05 version v2.2 Drawing mice in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -26,7 +26,7 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname mousehookforeground\endcsname \csname tikzlinghookforeground\endcsname - % + % } \newif\ifmouse@threeD @@ -52,7 +52,7 @@ body/.store in = \mouse@body, body = gray!90!white, eye/.store in = \mouse@eye, - eye = \mouse@body!50!black, + eye = \mouse@body!50!black, whiskers/.store in = \mouse@whiskers, whiskers = \mouse@body!50!black, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -68,19 +68,19 @@ leftstep/.code = \mouse@leftsteptrue, left step/.forward to = /mouse/leftstep, rightstep/.code = \mouse@rightsteptrue, - right step/.forward to = /mouse/rightstep, - back/.code = \mouse@backtrue, + right step/.forward to = /mouse/rightstep, + back/.code = \mouse@backtrue, contour/.code = \mouse@contourtrue \def\mouse@contour{#1} \def\mouse@whiskers{#1}, - contour/.default = black, - outline/.forward to = /mouse/contour, + contour/.default = black, + outline/.forward to = /mouse/contour, } \def\mouse@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.625,0.1) rectangle (0.905, 2.17); @@ -97,7 +97,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -115,24 +115,24 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname mousehookbackground\endcsname \csname tikzlinghookbackground\endcsname - % + % % Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifmouse@leftstep - \mouse@part@draw[\mouse@body!65!white] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; + \mouse@part@draw[\mouse@body!65!white] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; \else% step - \mouse@part@draw[\mouse@body!65!white] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; + \mouse@part@draw[\mouse@body!65!white] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; \fi% step % \ifmouse@rightstep - \mouse@part@draw[\mouse@body!65!white] (0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; + \mouse@part@draw[\mouse@body!65!white] (0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; \else% step - \mouse@part@draw[\mouse@body!65!white] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; + \mouse@part@draw[\mouse@body!65!white] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; \fi% step % % Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -154,7 +154,7 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname mousehookbelly\endcsname \csname tikzlinghookbelly\endcsname - % + % % Tail if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifmouse@back \mouse@part@draw[\mouse@body!65!white] (1.0825, 1.6326) .. controls (1.3527, 1.7527) and (1.6609, 1.3164) .. (1.5928, 1.3124) .. controls (0.9164, 2.186) and (0.8338, 0.6325) .. (0.3708, 0.4451) .. controls (0.2529, 0.3974) and (-0.0064, 0.3874) .. (-0.0064, 0.3874) .. controls (-0.0776, 0.3765) and (-0.0862, 0.5026) .. (-0.0092, 0.5034) .. controls (-0.0092, 0.5034) and (0.0363, 0.4591) .. (0.3516, 0.54360) .. controls (0.6710, 0.6988) and (0.7613, 1.4825) .. (1.0825, 1.6326) -- cycle; @@ -162,11 +162,7 @@ % % Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifmouse@back - \mouse@part@draw[\mouse@body!65!white] - (0.5, 1.8) .. controls (0.5, 1.58) and (0.2, 1.35) .. - (0, 1.35) .. controls (-0.2, 1.35) and (-0.5, 1.58) .. - (-0.5, 1.8) .. controls (-0.34, 2.3) and (0.34, 2.3) .. - (0.5, 1.8) -- cycle; + \mouse@part@draw[\mouse@body!65!white] (0.5, 1.8) .. controls (0.5, 1.58) and (0.2, 1.35) .. (0, 1.35) .. controls (-0.2, 1.35) and (-0.5, 1.58) .. (-0.5, 1.8) .. controls (-0.34, 2.3) and (0.34, 2.3) .. (0.5, 1.8) -- cycle; \else% back \mouse@part@draw[\mouse@body!65!white] (0.5, 1.8) .. controls (0.5, 1.58) and (0.2, 1.25) .. (0, 1.16) .. controls (-0.2, 1.25) and (-0.5, 1.58) .. (-0.5, 1.8) .. controls (-0.34, 2.3) and (0.34, 2.3) .. (0.5, 1.8) -- cycle; \fi% back @@ -198,7 +194,7 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname mousehookbody\endcsname \csname tikzlinghookbody\endcsname - % + % } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-moles.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-moles.sty index a5cc848713c..6363a8944cc 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-moles.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-moles.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-moles}[2024/12/12 version v2.1 Drawing moles in TikZ] +\ProvidesPackage{tikzlings-moles}[2025/01/05 version v2.2 Drawing moles in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -26,7 +26,7 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname moleshookforeground\endcsname \csname tikzlinghookforeground\endcsname - % + % } \newif\ifmoles@threeD @@ -34,6 +34,7 @@ \newif\ifmoles@rightstep \newif\ifmoles@back \newif\ifmoles@contour +\newif\ifmoles@openmouth \tikzset{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -51,13 +52,13 @@ body/.store in = \moles@body, body = gray, eye/.store in = \moles@eye, - eye = \moles@body!60!black, + eye = \moles@body!60!black, feet/.store in = \moles@feet, feet = red!20!white!50!brown, hands/.store in = \moles@hands, - hands = red!20!white!50!brown, + hands = red!20!white!50!brown, muzzle/.store in = \moles@muzzle, - muzzle = red!20!white!50!brown, + muzzle = red!20!white!50!brown, mouth/.store in = \moles@mouth, mouth = \moles@body!60!black, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -65,24 +66,26 @@ % options % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - 3D/.code = \moles@threeDtrue, + openmouth/.code = \moles@openmouthtrue, + open mouth/.forward to = /moles/openmouth, + 3D/.code = \moles@threeDtrue, leftstep/.code = \moles@leftsteptrue, left step/.forward to = /moles/leftstep, rightstep/.code = \moles@rightsteptrue, - right step/.forward to = /moles/rightstep, - back/.code = \moles@backtrue, + right step/.forward to = /moles/rightstep, + back/.code = \moles@backtrue, contour/.code = \moles@contourtrue \def\moles@contour{#1} \def\moles@mouth{#1} \def\moles@eye{#1}, - contour/.default = black, - outline/.forward to = /moles/contour, + contour/.default = black, + outline/.forward to = /moles/contour, } \def\moles@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.625,0.1) rectangle (0.905, 2.17); @@ -99,7 +102,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -117,7 +120,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -126,15 +129,15 @@ % % Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifmoles@leftstep - \moles@part@draw[\moles@feet] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; + \moles@part@draw[\moles@feet] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; \else% step - \moles@part@draw[\moles@feet] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; - \fi% step + \moles@part@draw[\moles@feet] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; + \fi% step \ifmoles@rightstep - \moles@part@draw[\moles@feet] (0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; + \moles@part@draw[\moles@feet] (0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; \else% step - \moles@part@draw[\moles@feet] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; - \fi% step + \moles@part@draw[\moles@feet] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; + \fi% step % % Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \unless\ifmoles@back @@ -187,15 +190,19 @@ % % Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifmoles@threeD - \fill[\moles@eye] (-0.165,1.79) ellipse[x radius=0.055, y radius=0.015, rotate=-15]; - \fill[\moles@eye!50!black] (0.165,1.79) ellipse[x radius=0.055, y radius=0.015, rotate=15]; + \fill[\moles@eye] (-0.165,1.79) ellipse[x radius=0.055, y radius=0.015, rotate=-15]; + \fill[\moles@eye!50!black] (0.165,1.79) ellipse[x radius=0.055, y radius=0.015, rotate=15]; \else% 3D - \fill[\moles@eye] (-0.165,1.79) ellipse[x radius=0.055, y radius=0.015, rotate=-15]; - \fill[\moles@eye] (0.165,1.79) ellipse[x radius=0.055, y radius=0.015, rotate=15]; + \fill[\moles@eye] (-0.165,1.79) ellipse[x radius=0.055, y radius=0.015, rotate=-15]; + \fill[\moles@eye] (0.165,1.79) ellipse[x radius=0.055, y radius=0.015, rotate=15]; \fi% 3D % % Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \draw[\moles@mouth, line width=\scalingfactor*0.4pt] (0.145,1.51) arc [start angle=-20, end angle=-160, radius=0.16] ; + \ifmoles@openmouth + \filldraw[\moles@mouth, line width=\scalingfactor*0.4pt] (0.145,1.51) arc [start angle=-20, end angle=-160, radius=0.16] ; + \else + \draw[\moles@mouth, line width=\scalingfactor*0.4pt] (0.145,1.51) arc [start angle=-20, end angle=-160, radius=0.16]; + \fi % \fi% back % @@ -241,23 +248,24 @@ %\begin{tcblisting}{title={Eye colour}} %\moles[eye=red] %\end{tcblisting} -% %\begin{tcblisting}{title={Muzzle colour}} %\moles[muzzle=red] %\end{tcblisting} -% %\begin{tcblisting}{title={Hand colour}} %\moles[hands=red] %\end{tcblisting} -% %\begin{tcblisting}{title={Foot colour}} %\moles[feet=red] %\end{tcblisting} -% %\begin{tcblisting}{title={Mouth colour}} %\moles[mouth=red] %\end{tcblisting} % +% The mole can open its mouth: +%\begin{tcblisting}{title={Open mouth}} +%\moles[openmouth] +%\end{tcblisting} +% %And the mole can lift its legs: %\begin{tcblisting}{title={Walking}} %\moles[leftstep] diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-owls.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-owls.sty index f74c7554960..23b9f0ff8e7 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-owls.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-owls.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-owls}[2024/12/12 version v2.1 Draw owls in TikZ] +\ProvidesPackage{tikzlings-owls}[2025/01/05 version v2.2 Draw owls in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -26,7 +26,7 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname owlhookforeground\endcsname \csname tikzlinghookforeground\endcsname - % + % } \newif\ifowl@threeD @@ -55,24 +55,24 @@ bill/.store in = \owl@bill, bill = orange, feet/.store in = \owl@feet, - feet = orange, + feet = orange, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % options % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3D/.code = \owl@threeDtrue, - back/.code = \owl@backtrue, + back/.code = \owl@backtrue, contour/.code = \owl@contourtrue \def\owl@contour{#1}, - contour/.default = black, - outline/.forward to = /owl/contour, + contour/.default = black, + outline/.forward to = /owl/contour, } \def\owl@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.73, 0.08) rectangle (0.73, 2.24); @@ -89,7 +89,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -107,7 +107,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -116,7 +116,7 @@ % % Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \owl@part@draw[\owl@body] (0.575,0.8) ellipse[x radius=0.38, y radius=0.1, rotate=-80]; - \owl@part@draw[\owl@body] (-0.575,0.8) ellipse[x radius=0.38, y radius=0.1, rotate=80]; + \owl@part@draw[\owl@body] (-0.575,0.8) ellipse[x radius=0.38, y radius=0.1, rotate=80]; % % Feet if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifowl@back diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-pandas.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-pandas.sty index c1c797be0d8..241f76a2a22 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-pandas.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-pandas.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-pandas}[2024/12/12 version v2.1 Drawing pandas in TikZ] +\ProvidesPackage{tikzlings-pandas}[2025/01/05 version v2.2 Drawing pandas in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -26,12 +26,13 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname pandahookforeground\endcsname \csname tikzlinghookforeground\endcsname - % + % } \newif\ifpanda@threeD \newif\ifpanda@back \newif\ifpanda@contour +\newif\ifpanda@openmouth \tikzset{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -49,29 +50,31 @@ body/.store in = \panda@body, body = white!90!gray, eye/.store in = \panda@eye, - eye = white, + eye = white, pupil/.store in = \panda@pupil, - pupil = black, + pupil = black, mouth/.store in = \panda@mouth, - mouth = black, + mouth = black, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % options % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - 3D/.code = \panda@threeDtrue, - back/.code = \panda@backtrue, + openmouth/.code = \panda@openmouthtrue, + open mouth/.forward to = /panda/openmouth, + 3D/.code = \panda@threeDtrue, + back/.code = \panda@backtrue, contour/.code = \panda@contourtrue \def\panda@contour{#1} \def\panda@mouth{#1}, - contour/.default = black, - outline/.forward to = /panda/contour, + contour/.default = black, + outline/.forward to = /panda/contour, } \def\panda@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.62,0.05) rectangle (0.62, 2.18); @@ -88,7 +91,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -106,7 +109,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -115,7 +118,7 @@ % % Feet if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifpanda@back - \panda@part@draw[black] (0.32, 0.27) circle[radius=0.2]; + \panda@part@draw[black] (0.32, 0.27) circle[radius=0.2]; \panda@part@draw[black] (-0.32, 0.27) circle[radius=0.2]; \fi% back % @@ -136,7 +139,7 @@ % % Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \unless\ifpanda@back - \panda@part@draw[black] (0.32, 0.27) circle[radius=0.2]; + \panda@part@draw[black] (0.32, 0.27) circle[radius=0.2]; \panda@part@draw[black] (-0.32, 0.27) circle[radius=0.2]; \fi% back % @@ -159,7 +162,11 @@ \panda@part@draw[\panda@pupil] (-0.17, 1.695) circle[radius=0.02]; % % Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \draw[\panda@mouth,line width=\scalingfactor*0.2pt] (-0.16, 1.477) .. controls (-0.16, 1.477) and (-0.062, 1.37) .. (0, 1.506) .. controls (0.062, 1.37) and (0.16, 1.477) .. (0.16, 1.477); + \ifpanda@openmouth + \filldraw[\panda@mouth,line width=\scalingfactor*0.2pt] (-0.16, 1.477) .. controls (-0.16, 1.477) and (-0.062, 1.37) .. (0, 1.506) .. controls (0.062, 1.37) and (0.16, 1.477) .. (0.16, 1.477) (0.16,1.477) arc [start angle=-20, end angle=-160, radius=0.17]; + \else + \draw[\panda@mouth,line width=\scalingfactor*0.2pt] (-0.16, 1.477) .. controls (-0.16, 1.477) and (-0.062, 1.37) .. (0, 1.506) .. controls (0.062, 1.37) and (0.16, 1.477) .. (0.16, 1.477); + \fi % % Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \panda@part@draw[black] (0,1.55) ellipse[x radius=0.07, y radius=0.04]; @@ -214,6 +221,11 @@ %\panda[mouth=red] %\end{tcblisting} % +% The panda can open its mouth: +%\begin{tcblisting}{title={Open mouth}} +%\panda[openmouth] +%\end{tcblisting} +% %To view the panda from behind: %\begin{tcblisting}{title={Back view}} %\panda[back] diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-penguins.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-penguins.sty index cac37ccfbd7..93a76e7ab02 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-penguins.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-penguins.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-penguins}[2024/12/12 version v2.1 Draw penguins in TikZ] +\ProvidesPackage{tikzlings-penguins}[2025/01/05 version v2.2 Draw penguins in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -26,7 +26,7 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname penguinhookforeground\endcsname \csname tikzlinghookforeground\endcsname - % + % } \newif\ifpenguin@threeD @@ -53,28 +53,28 @@ feet/.store in = \penguin@feet, feet = yellow!50!orange, bill/.store in = \penguin@bill, - bill = orange, + bill = orange, eye/.store in = \penguin@eye, eye = white!95!black, pupil/.store in = \penguin@pupil, - pupil = black, + pupil = black, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % options % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - 3D/.code = \penguin@threeDtrue, - back/.code = \penguin@backtrue, + 3D/.code = \penguin@threeDtrue, + back/.code = \penguin@backtrue, contour/.code = \penguin@contourtrue \def\penguin@contour{#1}, - contour/.default = black, - outline/.forward to = /penguin/contour, + contour/.default = black, + outline/.forward to = /penguin/contour, } \def\penguin@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.865, 0.15) rectangle (0.865, 2.13); @@ -91,7 +91,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -109,7 +109,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -118,14 +118,12 @@ % % Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \penguin@part@draw[\penguin@body] (0.575,1.2) ellipse[x radius=0.38, y radius=0.1, rotate=-50]; - \penguin@part@draw[\penguin@body] (-0.575,1.2) ellipse[x radius=0.38, y radius=0.1, rotate=50]; + \penguin@part@draw[\penguin@body] (-0.575,1.2) ellipse[x radius=0.38, y radius=0.1, rotate=50]; % % Feet if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifpenguin@back - \penguin@part@draw[\penguin@feet] - (-0.265, 0.3941) .. controls (-0.283, 0.4505) and (-0.373, 0.6014) .. (-0.470, 0.6533) .. controls (-0.571, 0.7075) and (-0.576, 0.6369) .. (-0.554, 0.596) .. controls (-0.526, 0.5416) and (-0.573, 0.5302) .. (-0.602, 0.5384) .. controls (-0.695, 0.5653) and (-0.767, 0.5169) .. (-0.684, 0.434) .. controls (-0.664, 0.4137) and (-0.587, 0.3557) .. (-0.699, 0.3492) .. controls (-0.772, 0.345) and (-0.779, 0.268) .. (-0.689, 0.2445) .. controls (-0.597, 0.2206) and (-0.476, 0.2043) .. (-0.34, 0.2096) .. controls (-0.252, 0.2131) and (-0.237, 0.3059) .. (-0.265, 0.3941) -- cycle; - \penguin@part@draw[\penguin@feet] - (0.265, 0.3941) .. controls (0.283, 0.4505) and (0.3725, 0.6014) .. (0.469, 0.6533) .. controls (0.571, 0.7075) and (0.5756, 0.6369) .. (0.554, 0.596) .. controls (0.526, 0.5416) and (0.5733, 0.5302) .. (0.602, 0.5384) .. controls (0.695, 0.5653) and (0.7672, 0.5169) .. (0.684, 0.434) .. controls (0.663, 0.4137) and (0.587, 0.3557) .. (0.699, 0.3492) .. controls (0.772, 0.345) and (0.7789, 0.268) .. (0.689, 0.2445) .. controls (0.597, 0.2206) and (0.4764, 0.2043) .. (0.34, 0.2096) .. controls (0.252, 0.2131) and (0.2368, 0.3059) .. (0.265, 0.3941) -- cycle; + \penguin@part@draw[\penguin@feet] (-0.265, 0.3941) .. controls (-0.283, 0.4505) and (-0.373, 0.6014) .. (-0.470, 0.6533) .. controls (-0.571, 0.7075) and (-0.576, 0.6369) .. (-0.554, 0.596) .. controls (-0.526, 0.5416) and (-0.573, 0.5302) .. (-0.602, 0.5384) .. controls (-0.695, 0.5653) and (-0.767, 0.5169) .. (-0.684, 0.434) .. controls (-0.664, 0.4137) and (-0.587, 0.3557) .. (-0.699, 0.3492) .. controls (-0.772, 0.345) and (-0.779, 0.268) .. (-0.689, 0.2445) .. controls (-0.597, 0.2206) and (-0.476, 0.2043) .. (-0.34, 0.2096) .. controls (-0.252, 0.2131) and (-0.237, 0.3059) .. (-0.265, 0.3941) -- cycle; + \penguin@part@draw[\penguin@feet] (0.265, 0.3941) .. controls (0.283, 0.4505) and (0.3725, 0.6014) .. (0.469, 0.6533) .. controls (0.571, 0.7075) and (0.5756, 0.6369) .. (0.554, 0.596) .. controls (0.526, 0.5416) and (0.5733, 0.5302) .. (0.602, 0.5384) .. controls (0.695, 0.5653) and (0.7672, 0.5169) .. (0.684, 0.434) .. controls (0.663, 0.4137) and (0.587, 0.3557) .. (0.699, 0.3492) .. controls (0.772, 0.345) and (0.7789, 0.268) .. (0.689, 0.2445) .. controls (0.597, 0.2206) and (0.4764, 0.2043) .. (0.34, 0.2096) .. controls (0.252, 0.2131) and (0.2368, 0.3059) .. (0.265, 0.3941) -- cycle; \fi% back % % Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -142,10 +140,8 @@ % % Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \unless\ifpenguin@back - \penguin@part@draw[\penguin@feet] - (-0.265, 0.3941) .. controls (-0.283, 0.4505) and (-0.373, 0.6014) .. (-0.470, 0.6533) .. controls (-0.571, 0.7075) and (-0.576, 0.6369) .. (-0.554, 0.596) .. controls (-0.526, 0.5416) and (-0.573, 0.5302) .. (-0.602, 0.5384) .. controls (-0.695, 0.5653) and (-0.767, 0.5169) .. (-0.684, 0.434) .. controls (-0.664, 0.4137) and (-0.587, 0.3557) .. (-0.699, 0.3492) .. controls (-0.772, 0.345) and (-0.779, 0.268) .. (-0.689, 0.2445) .. controls (-0.597, 0.2206) and (-0.476, 0.2043) .. (-0.34, 0.2096) .. controls (-0.252, 0.2131) and (-0.237, 0.3059) .. (-0.265, 0.3941) -- cycle; - \penguin@part@draw[\penguin@feet] - (0.265, 0.3941) .. controls (0.283, 0.4505) and (0.3725, 0.6014) .. (0.469, 0.6533) .. controls (0.571, 0.7075) and (0.5756, 0.6369) .. (0.554, 0.596) .. controls (0.526, 0.5416) and (0.5733, 0.5302) .. (0.602, 0.5384) .. controls (0.695, 0.5653) and (0.7672, 0.5169) .. (0.684, 0.434) .. controls (0.663, 0.4137) and (0.587, 0.3557) .. (0.699, 0.3492) .. controls (0.772, 0.345) and (0.7789, 0.268) .. (0.689, 0.2445) .. controls (0.597, 0.2206) and (0.4764, 0.2043) .. (0.34, 0.2096) .. controls (0.252, 0.2131) and (0.2368, 0.3059) .. (0.265, 0.3941) -- cycle; + \penguin@part@draw[\penguin@feet] (-0.265, 0.3941) .. controls (-0.283, 0.4505) and (-0.373, 0.6014) .. (-0.470, 0.6533) .. controls (-0.571, 0.7075) and (-0.576, 0.6369) .. (-0.554, 0.596) .. controls (-0.526, 0.5416) and (-0.573, 0.5302) .. (-0.602, 0.5384) .. controls (-0.695, 0.5653) and (-0.767, 0.5169) .. (-0.684, 0.434) .. controls (-0.664, 0.4137) and (-0.587, 0.3557) .. (-0.699, 0.3492) .. controls (-0.772, 0.345) and (-0.779, 0.268) .. (-0.689, 0.2445) .. controls (-0.597, 0.2206) and (-0.476, 0.2043) .. (-0.34, 0.2096) .. controls (-0.252, 0.2131) and (-0.237, 0.3059) .. (-0.265, 0.3941) -- cycle; + \penguin@part@draw[\penguin@feet] (0.265, 0.3941) .. controls (0.283, 0.4505) and (0.3725, 0.6014) .. (0.469, 0.6533) .. controls (0.571, 0.7075) and (0.5756, 0.6369) .. (0.554, 0.596) .. controls (0.526, 0.5416) and (0.5733, 0.5302) .. (0.602, 0.5384) .. controls (0.695, 0.5653) and (0.7672, 0.5169) .. (0.684, 0.434) .. controls (0.663, 0.4137) and (0.587, 0.3557) .. (0.699, 0.3492) .. controls (0.772, 0.345) and (0.7789, 0.268) .. (0.689, 0.2445) .. controls (0.597, 0.2206) and (0.4764, 0.2043) .. (0.34, 0.2096) .. controls (0.252, 0.2131) and (0.2368, 0.3059) .. (0.265, 0.3941) -- cycle; \fi% back % % Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-pigs.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-pigs.sty index 00162b7424a..13845d86718 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-pigs.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-pigs.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-pigs}[2024/12/12 version v2.1 Drawing pigs in TikZ] +\ProvidesPackage{tikzlings-pigs}[2025/01/05 version v2.2 Drawing pigs in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -27,12 +27,13 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname pighookforeground\endcsname \csname tikzlinghookforeground\endcsname - % + % } \newif\ifpig@threeD \newif\ifpig@back \newif\ifpig@contour +\newif\ifpig@openmouth \tikzset{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -50,9 +51,9 @@ body/.store in = \pig@body, body = piglight, eye/.store in = \pig@eye, - eye = gray, + eye = gray, tail/.store in = \pig@tail, - tail = pig@bodysat22, + tail = pig@bodysat22, mouth/.store in = \pig@mouth, mouth = gray, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -60,21 +61,23 @@ % options % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + openmouth/.code = \pig@openmouthtrue, + open mouth/.forward to = /pig/openmouth, 3D/.code = \pig@threeDtrue - \def\pig@mouth{gray!70!black}, - back/.code = \pig@backtrue, + \def\pig@mouth{gray!70!black}, + back/.code = \pig@backtrue, contour/.code = \pig@contourtrue \def\pig@contour{#1} \def\pig@mouth{#1} \def\pig@tail{#1}, - contour/.default = black, - outline/.forward to = /pig/contour, + contour/.default = black, + outline/.forward to = /pig/contour, } \def\pig@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.625,0.1) rectangle (0.905, 2.27); @@ -91,7 +94,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -168,7 +171,11 @@ \pig@part@draw[gray] ( 0.06, 1.62) circle[radius=0.035]; % % Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \draw[\pig@mouth,line width=\scalingfactor*0.4pt] (0.105, 1.46) arc [start angle=-50, end angle=-130, radius=0.16] ; + \ifpig@openmouth + \filldraw[\pig@mouth,line width=\scalingfactor*0.4pt] (0.105, 1.46) arc [start angle=-50, end angle=-130, radius=0.16]; + \else + \draw[\pig@mouth,line width=\scalingfactor*0.4pt] (0.105, 1.46) arc [start angle=-50, end angle=-130, radius=0.16]; + \fi % % Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pig@part@draw[pig@bodysat22] (0.3216,0.15) arc (-15:195:0.12) -- (0.16,0.15) to [bend left] (0.25,0.15) -- cycle; @@ -178,13 +185,13 @@ % % Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pig@part@draw[pig@bodysat22] (0.22, 2.0392) .. controls (0.22, 2.1584) and (0.49460, 2.255) .. (0.49460, 2.255) .. controls (0.49460, 2.255) and (0.5300, 1.86) .. (0.3721, 1.86) .. controls (0.2891, 1.86) and (0.22, 1.9201) .. (0.22, 2.0392) -- cycle; - \pig@part@draw[\pig@body] (0.22, 2.0392) .. controls (0.26, 2.1584) and (0.47, 2.22) .. (0.47, 2.20) .. controls (0.47, 2.2) and (0.49, 1.9) .. (0.3721, 1.9) .. controls (0.2891, 1.88) and (0.22, 1.88) .. (0.22, 2.0392) -- cycle; + \pig@part@draw[\pig@body] (0.22, 2.0392) .. controls (0.26, 2.1584) and (0.47, 2.22) .. (0.47, 2.20) .. controls (0.47, 2.2) and (0.49, 1.9) .. (0.3721, 1.9) .. controls (0.2891, 1.88) and (0.22, 1.88) .. (0.22, 2.0392) -- cycle; \pig@part@draw[pig@bodysat22] (-0.22, 2.0392) .. controls (-0.22, 2.1584) and (-0.49460, 2.255) .. (-0.49460, 2.255) .. controls (-0.49460, 2.255) and (-0.5300, 1.86) .. (-0.3721, 1.86) .. controls (-0.2891, 1.86) and (-0.22, 1.9201) .. (-0.22, 2.0392) -- cycle; - \pig@part@draw[\pig@body] (-0.22, 2.0392) .. controls (-0.26, 2.1584) and (-0.47, 2.22) .. (-0.47, 2.20) .. controls (-0.47, 2.2) and (-0.49, 1.9) .. (-0.3721, 1.9) .. controls (-0.2891, 1.88) and (-0.22, 1.88) .. (-0.22, 2.0392) -- cycle; - % + \pig@part@draw[\pig@body] (-0.22, 2.0392) .. controls (-0.26, 2.1584) and (-0.47, 2.22) .. (-0.47, 2.20) .. controls (-0.47, 2.2) and (-0.49, 1.9) .. (-0.3721, 1.9) .. controls (-0.2891, 1.88) and (-0.22, 1.88) .. (-0.22, 2.0392) -- cycle; + % % Tail if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifpig@back - \draw[\pig@tail,line width=\scalingfactor*0.8pt] (0.8431, 0.583) .. controls (0.8609, 0.4063) and (0.7006, 0.361) .. (0.6384, 0.4293) .. controls (0.5762, 0.4976) and (0.5613, 0.6052) .. (0.6551, 0.629) .. controls (0.7537, 0.6541) and (0.7759, 0.5628) .. (0.7455, 0.4948) .. controls (0.6412, 0.2697) and (0.3543, 0.356) .. (0.2638, 0.4238) .. controls (0.1967, 0.4779) and (0.1788, 0.6076) .. (0.3192, 0.633) .. controls (0.6000, 0.6836) and (0.5130, 0.3048) .. (0.2098, 0.3322) .. controls (0.0809, 0.3438) and (0.0809, 0.5236) .. (0.0809, 0.5236); + \draw[\pig@tail,line width=\scalingfactor*0.8pt] (0.8431, 0.583) .. controls (0.8609, 0.4063) and (0.7006, 0.361) .. (0.6384, 0.4293) .. controls (0.5762, 0.4976) and (0.5613, 0.6052) .. (0.6551, 0.629) .. controls (0.7537, 0.6541) and (0.7759, 0.5628) .. (0.7455, 0.4948) .. controls (0.6412, 0.2697) and (0.3543, 0.356) .. (0.2638, 0.4238) .. controls (0.1967, 0.4779) and (0.1788, 0.6076) .. (0.3192, 0.633) .. controls (0.6000, 0.6836) and (0.5130, 0.3048) .. (0.2098, 0.3322) .. controls (0.0809, 0.3438) and (0.0809, 0.5236) .. (0.0809, 0.5236); \fi% back % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -235,6 +242,11 @@ %\pig[mouth=red] %\end{tcblisting} % +% The pig can open its mouth: +%\begin{tcblisting}{title={Open mouth}} +%\pig[openmouth] +%\end{tcblisting} +% %To view the pig from behind: %\begin{tcblisting}{title={Back view}} %\pig[back] diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-rhinos.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-rhinos.sty index a05fb3b38b3..47f868b0b71 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-rhinos.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-rhinos.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-rhinos}[2024/12/12 version v2.1 Drawing rhinos in TikZ] +\ProvidesPackage{tikzlings-rhinos}[2025/01/05 version v2.2 Drawing rhinos in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -26,12 +26,13 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname rhinohookforeground\endcsname \csname tikzlinghookforeground\endcsname - % + % } \newif\ifrhino@threeD \newif\ifrhino@back \newif\ifrhino@contour +\newif\ifrhino@openmouth \tikzset{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -51,32 +52,34 @@ toes/.store in = \rhino@toes, toes = \rhino@body, eye/.store in = \rhino@eye, - eye = white, + eye = white, pupil/.store in = \rhino@pupil, - pupil = black, + pupil = black, mouth/.store in = \rhino@mouth, - mouth = \rhino@body!50!black, + mouth = \rhino@body!50!black, horn/.store in = \rhino@horn, - horn = white!95!yellow, + horn = white!95!yellow, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % options % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + openmouth/.code = \rhino@openmouthtrue, + open mouth/.forward to = /rhino/openmouth, 3D/.code = \rhino@threeDtrue - \def\rhino@mouth{black}, - back/.code = \rhino@backtrue, + \def\rhino@mouth{black}, + back/.code = \rhino@backtrue, contour/.code = \rhino@contourtrue \def\rhino@contour{#1} \def\rhino@mouth{#1}, - contour/.default = black, - outline/.forward to = /rhino/contour, + contour/.default = black, + outline/.forward to = /rhino/contour, } \def\rhino@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.625,0.1) rectangle (0.625, 2.17); @@ -93,7 +96,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -111,7 +114,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -124,11 +127,8 @@ % % Feet if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifrhino@back - \begin{scope} - \clip (-0.5,0.4) rectangle (0.5,0.13); - \rhino@part@draw[\rhino@body!70!black] (-0.25,0.15) ellipse[x radius=0.16, y radius=0.17]; - \rhino@part@draw[\rhino@body!70!black] (0.25,0.15) ellipse[x radius=0.16, y radius=0.17]; - \end{scope} + \rhino@part@draw[\rhino@body!70!black] (-0.08,0.13) arc [start angle=0, end angle=180, x radius=0.17, y radius=0.19] -- cycle; + \rhino@part@draw[\rhino@body!70!black](0.08,0.13) arc [start angle=180, end angle=0, x radius=0.17, y radius=0.19] -- cycle; \fi% back % % Nose if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -175,20 +175,21 @@ \rhino@part@draw[\rhino@horn] (0, 1.7911) .. controls (-0.0231, 1.7372) and (-0.0463, 1.6832) .. (-0.0642, 1.6274) .. controls (-0.0687, 1.6132) and (-0.0724, 1.5981) .. (-0.0678, 1.5834) .. controls (-0.0603, 1.552) and (-0.0287, 1.5287) .. (0, 1.531) .. controls (0.0287, 1.5287) and (0.0603, 1.552) .. (0.0678, 1.5834) .. controls (0.0724, 1.5981) and (0.0687, 1.6132) .. (0.0642, 1.6274) .. controls (0.0463, 1.6832) and (0.0231, 1.7372) .. (0, 1.7911) -- cycle; % % Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \draw[\rhino@mouth,line width=\scalingfactor*0.4pt] (0.125, 1.5) arc [start angle=-50, end angle=-130, radius=0.2] ; + \ifrhino@openmouth + \filldraw[\rhino@mouth,line width=\scalingfactor*0.4pt] (0.125, 1.5) arc [start angle=-50, end angle=-130, radius=0.2]; + \else + \draw[\rhino@mouth,line width=\scalingfactor*0.4pt] (0.125, 1.5) arc [start angle=-50, end angle=-130, radius=0.2]; + \fi % % Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \begin{scope} - \clip (-0.5,0.4) rectangle (0.5,0.13); - \rhino@part@draw[\rhino@body!70!black] (-0.25,0.15) ellipse[x radius=0.16, y radius=0.17]; - \rhino@part@draw[\rhino@body!70!black] (0.25,0.15) ellipse[x radius=0.16, y radius=0.17]; - \rhino@part@draw[\rhino@toes] (0.25,0.13) ellipse[x radius=0.05, y radius=0.1]; - \rhino@part@draw[\rhino@toes] (0.13,0.11) ellipse[x radius=0.05, y radius=0.1]; - \rhino@part@draw[\rhino@toes] (0.37,0.11) ellipse[x radius=0.05, y radius=0.1]; - \rhino@part@draw[\rhino@toes] (-0.25,0.13) ellipse[x radius=0.05, y radius=0.1]; - \rhino@part@draw[\rhino@toes] (-0.13,0.11) ellipse[x radius=0.05, y radius=0.1]; - \rhino@part@draw[\rhino@toes] (-0.37,0.11) ellipse[x radius=0.05, y radius=0.1]; - \end{scope} + \rhino@part@draw[\rhino@body!70!black] (-0.08,0.13) arc [start angle=0, end angle=180, x radius=0.17, y radius=0.19] -- cycle; + \rhino@part@draw[\rhino@toes] (-0.08,0.13) arc [start angle=0, end angle=180, x radius=0.05, y radius=0.08] -- cycle; + \rhino@part@draw[\rhino@toes] (-0.2,0.13) arc [start angle=0, end angle=180, x radius=0.05, y radius=0.1] -- cycle; + \rhino@part@draw[\rhino@toes] (-0.32,0.13) arc [start angle=0, end angle=180, x radius=0.05, y radius=0.08] -- cycle; + \rhino@part@draw[\rhino@body!70!black](0.08,0.13) arc [start angle=180, end angle=0, x radius=0.17, y radius=0.19] -- cycle; + \rhino@part@draw[\rhino@toes] (0.08,0.13) arc [start angle=180, end angle=0, x radius=0.05, y radius=0.08] -- cycle; + \rhino@part@draw[\rhino@toes] (0.2,0.13) arc [start angle=180, end angle=0, x radius=0.05, y radius=0.1] -- cycle; + \rhino@part@draw[\rhino@toes] (0.32,0.13) arc [start angle=180, end angle=0, x radius=0.05, y radius=0.08] -- cycle; % \fi% back % @@ -243,6 +244,11 @@ %\rhino[horn=red] %\end{tcblisting} % +% The rhino can open its mouth: +%\begin{tcblisting}{title={Open mouth}} +%\rhino[openmouth] +%\end{tcblisting} +% %The hippo can also do its nails: %\begin{tcblisting}{title={Toe colour}} %\rhino[toes=red] diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-sheep.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-sheep.sty index ffb5aeff0cd..c412796adc6 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-sheep.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-sheep.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-sheep}[2024/12/12 version v2.1 Drawing sheep in TikZ] +\ProvidesPackage{tikzlings-sheep}[2025/01/05 version v2.2 Drawing sheep in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -54,7 +54,7 @@ body/.store in = \sheep@body, body = brown!50!darkgray!97!yellow!50!darkgray, eye/.store in = \sheep@eye, - eye = sheep@bright!50!black, + eye = sheep@bright!50!black, nose/.store in = \sheep@nose, nose = sheep@bright!50!black, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -64,22 +64,22 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% blush/.code = \sheep@blushtrue \def\sheep@blushcolor{#1}, - blush/.default = red, + blush/.default = red, monocle/.code = \sheep@monocletrue, - 3D/.code = \sheep@threeDtrue, - back/.code = \sheep@backtrue, + 3D/.code = \sheep@threeDtrue, + back/.code = \sheep@backtrue, contour/.code = \sheep@contourtrue \def\sheep@contour{#1} \def\sheep@blushcolor{#1} \def\sheep@nose{#1}, - contour/.default = black, - outline/.forward to = /sheep/contour, + contour/.default = black, + outline/.forward to = /sheep/contour, } \def\sheep@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.7,0.08) rectangle (0.7,2.33); @@ -94,10 +94,10 @@ \pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))*sqrt(abs((\pgf@xx/1cm)*(\pgf@yy/1cm)-(\pgf@xy/1cm)*(\pgf@yx/1cm)))}% \pgfmathsetmacro{\xscalefactor}{\tmpscaleA} \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} - \pgfmathsetmacro{\decoscalefactor}{sign(\tmpscaleA)*sign(\tmpscaleD)*\scalingfactor}% + \pgfmathsetmacro{\decoscalefactor}{sign(\tmpscaleA)*sign(\tmpscaleD)*\scalingfactor}% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -123,23 +123,23 @@ \pgfmathsetmacro{\sheep@sat}{(array({\sheep@hsbcolorspec},1))} \pgfmathsetmacro{\sheep@bright}{(array({\sheep@hsbcolorspec},2))+0.1} \definecolor{sheep@bright}{hsb}{\sheep@hue,\sheep@sat,\sheep@bright} - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname sheephookbackground\endcsname \csname tikzlinghookbackground\endcsname - % + % % Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \sheep@part@draw[sheep@bright] (0.22, 2.0392) .. controls (0.22, 2.1584) and (0.49460, 2.255) .. (0.49460, 2.255) .. controls (0.49460, 2.255) and (0.5300, 1.86) .. (0.3721, 1.86) .. controls (0.2891, 1.86) and (0.22, 1.9201) .. (0.22, 2.0392) -- cycle; - \sheep@part@draw[sheep@bright!55!white] (0.22, 2.0392) .. controls (0.26, 2.1584) and (0.47, 2.22) .. (0.47, 2.20) .. controls (0.47, 2.2) and (0.49, 1.9) .. (0.3721, 1.9) .. controls (0.2891, 1.88) and (0.22, 1.88) .. (0.22, 2.0392) -- cycle; + \sheep@part@draw[sheep@bright!55!white] (0.22, 2.0392) .. controls (0.26, 2.1584) and (0.47, 2.22) .. (0.47, 2.20) .. controls (0.47, 2.2) and (0.49, 1.9) .. (0.3721, 1.9) .. controls (0.2891, 1.88) and (0.22, 1.88) .. (0.22, 2.0392) -- cycle; \sheep@part@draw[sheep@bright] (-0.22, 2.0392) .. controls (-0.22, 2.1584) and (-0.49460, 2.255) .. (-0.49460, 2.255) .. controls (-0.49460, 2.255) and (-0.5300, 1.86) .. (-0.3721, 1.86) .. controls (-0.2891, 1.86) and (-0.22, 1.9201) .. (-0.22, 2.0392) -- cycle; - \sheep@part@draw[sheep@bright!55!white] (-0.22, 2.0392) .. controls (-0.26, 2.1584) and (-0.47, 2.22) .. (-0.47, 2.20) .. controls (-0.47, 2.2) and (-0.49, 1.9) .. (-0.3721, 1.9) .. controls (-0.2891, 1.88) and (-0.22, 1.88) .. (-0.22, 2.0392) -- cycle; - % + \sheep@part@draw[sheep@bright!55!white] (-0.22, 2.0392) .. controls (-0.26, 2.1584) and (-0.47, 2.22) .. (-0.47, 2.20) .. controls (-0.47, 2.2) and (-0.49, 1.9) .. (-0.3721, 1.9) .. controls (-0.2891, 1.88) and (-0.22, 1.88) .. (-0.22, 2.0392) -- cycle; + % % Feet if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifsheep@back \sheep@part@draw[sheep@bright] (0.3216,0.15) arc (-15:195:0.12) -- (0.16,0.15) to [bend left] (0.25,0.15) -- cycle; @@ -175,10 +175,10 @@ % % Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \sheep@part@draw[sheep@bright] (0.22, 2.0392) .. controls (0.22, 2.1584) and (0.49460, 2.255) .. (0.49460, 2.255) .. controls (0.49460, 2.255) and (0.5300, 1.86) .. (0.3721, 1.86) .. controls (0.2891, 1.86) and (0.22, 1.9201) .. (0.22, 2.0392) -- cycle; - \sheep@part@draw[sheep@bright!55!white] (0.22, 2.0392) .. controls (0.26, 2.1584) and (0.47, 2.22) .. (0.47, 2.20) .. controls (0.47, 2.2) and (0.49, 1.9) .. (0.3721, 1.9) .. controls (0.2891, 1.88) and (0.22, 1.88) .. (0.22, 2.0392) -- cycle; + \sheep@part@draw[sheep@bright!55!white] (0.22, 2.0392) .. controls (0.26, 2.1584) and (0.47, 2.22) .. (0.47, 2.20) .. controls (0.47, 2.2) and (0.49, 1.9) .. (0.3721, 1.9) .. controls (0.2891, 1.88) and (0.22, 1.88) .. (0.22, 2.0392) -- cycle; \sheep@part@draw[sheep@bright] (-0.22, 2.0392) .. controls (-0.22, 2.1584) and (-0.49460, 2.255) .. (-0.49460, 2.255) .. controls (-0.49460, 2.255) and (-0.5300, 1.86) .. (-0.3721, 1.86) .. controls (-0.2891, 1.86) and (-0.22, 1.9201) .. (-0.22, 2.0392) -- cycle; - \sheep@part@draw[sheep@bright!55!white] (-0.22, 2.0392) .. controls (-0.26, 2.1584) and (-0.47, 2.22) .. (-0.47, 2.20) .. controls (-0.47, 2.2) and (-0.49, 1.9) .. (-0.3721, 1.9) .. controls (-0.2891, 1.88) and (-0.22, 1.88) .. (-0.22, 2.0392) -- cycle; - % + \sheep@part@draw[sheep@bright!55!white] (-0.22, 2.0392) .. controls (-0.26, 2.1584) and (-0.47, 2.22) .. (-0.47, 2.20) .. controls (-0.47, 2.2) and (-0.49, 1.9) .. (-0.3721, 1.9) .. controls (-0.2891, 1.88) and (-0.22, 1.88) .. (-0.22, 2.0392) -- cycle; + % % Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \unless\ifsheep@back \sheep@part@draw[\sheep@eye] (0.2, 1.66) circle[radius=0.06]; @@ -197,7 +197,7 @@ % % Blush %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifsheep@blush - \fill[\sheep@blushcolor,path fading=sheep@blush] (-0.25, 1.5) circle[radius=0.1]; + \fill[\sheep@blushcolor,path fading=sheep@blush] (-0.25, 1.5) circle[radius=0.1]; \fill[\sheep@blushcolor,path fading=sheep@blush] (0.25, 1.5) circle[radius=0.1]; \fi% blush % @@ -212,7 +212,7 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname sheephookbody\endcsname \csname tikzlinghookbody\endcsname - % + % } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-sloths.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-sloths.sty index 4ef859d6a34..514fd727316 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-sloths.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-sloths.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-sloths}[2024/12/12 version v2.1 Drawing sloths in TikZ] +\ProvidesPackage{tikzlings-sloths}[2025/01/05 version v2.2 Drawing sloths in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -28,13 +28,14 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname slothhookforeground\endcsname \csname tikzlinghookforeground\endcsname - % + % } \newif\ifsloth@sleeping \newif\ifsloth@threeD \newif\ifsloth@back \newif\ifsloth@contour +\newif\ifsloth@openmouth \tikzset{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -52,7 +53,7 @@ body/.store in = \sloth@body, body = slothcol, eye/.store in = \sloth@eye, - eye = black, + eye = black, eyelid/.store in = \sloth@eyelid, eyelid = sloth@bright10!50!white, mouth/.store in = \sloth@mouth, @@ -62,21 +63,23 @@ % options % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - sleeping/.code = \sloth@sleepingtrue, - 3D/.code = \sloth@threeDtrue, - back/.code = \sloth@backtrue, + sleeping/.code = \sloth@sleepingtrue, + openmouth/.code = \sloth@openmouthtrue, + open mouth/.forward to = /sloth/openmouth, + 3D/.code = \sloth@threeDtrue, + back/.code = \sloth@backtrue, contour/.code = \sloth@contourtrue \def\sloth@contour{#1} \def\sloth@mouth{#1} \def\sloth@eyelid{#1}, - contour/.default = black, - outline/.forward to = /sloth/contour, + contour/.default = black, + outline/.forward to = /sloth/contour, } \def\sloth@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.7,0.12) rectangle (0.7, 2.27); @@ -93,7 +96,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -119,11 +122,11 @@ \pgfmathsetmacro{\sloth@sat}{(array({\sloth@hsbcolorspec},1))} \pgfmathsetmacro{\sloth@bright}{(array({\sloth@hsbcolorspec},2))+0.1} \definecolor{sloth@bright10}{hsb}{\sloth@hue,\sloth@sat,\sloth@bright} - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -133,7 +136,7 @@ % Arms if back %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifsloth@back \sloth@part@draw[sloth@bright10] (0.53,0.95) ellipse[x radius=0.1, y radius=0.27, rotate=10]; - \sloth@part@draw[sloth@bright10] (-0.53,0.95) ellipse[x radius=0.1, y radius=0.27, rotate=-10]; + \sloth@part@draw[sloth@bright10] (-0.53,0.95) ellipse[x radius=0.1, y radius=0.27, rotate=-10]; \fi% back % % Feet if back%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -149,8 +152,7 @@ \fi% back % % Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \sloth@part@draw[\sloth@body] (0.53,0.85) .. controls (0.53,0.29) and (0.32,0.22) .. (0,0.22) .. controls (-0.32,0.22) and (-0.53,0.29) .. - (-0.53,0.85) .. controls (-0.53,1.41) and (-0.32,1.87) .. (0,1.87) .. controls (0.33,1.87) and (0.53,1.41) .. (0.53,0.85) -- cycle; + \sloth@part@draw[\sloth@body] (0.53,0.85) .. controls (0.53,0.29) and (0.32,0.22) .. (0,0.22) .. controls (-0.32,0.22) and (-0.53,0.29) .. (-0.53,0.85) .. controls (-0.53,1.41) and (-0.32,1.87) .. (0,1.87) .. controls (0.33,1.87) and (0.53,1.41) .. (0.53,0.85) -- cycle; % % Belly %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \unless\ifsloth@back @@ -165,11 +167,7 @@ \sloth@part@draw[sloth@bright10] (-0.1128,2.0724) .. controls (-0.1128,2.0724) and (-0.1499,2.2329) .. (-0.0972,2.2525) .. controls (-0.1082,2.1318) and (-0.0047,2.0839) .. (-0.0047,2.0839) .. controls (-0.0047,2.0839) and (-0.0219,2.1866) .. (0.0145,2.1933) .. controls (0.0142,2.1159) and (0.0770,2.0884) .. (0.0770,2.0884) -- cycle; % % Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \sloth@part@draw[sloth@bright10] - ( 0.50,1.67) .. controls ( 0.50,1.91) and ( 0.27,2.10) .. - ( 0.00,2.10) .. controls (-0.27,2.10) and (-0.50,1.91) .. (-0.50,1.67) .. controls (-0.50,1.43) and (-0.33,1.28) .. - ( 0.00,1.28) .. controls ( 0.33,1.28) and ( 0.50,1.43) .. - ( 0.50,1.67) -- cycle; + \sloth@part@draw[sloth@bright10] ( 0.50,1.67) .. controls ( 0.50,1.91) and ( 0.27,2.10) .. ( 0.00,2.10) .. controls (-0.27,2.10) and (-0.50,1.91) .. (-0.50,1.67) .. controls (-0.50,1.43) and (-0.33,1.28) .. ( 0.00,1.28) .. controls ( 0.33,1.28) and ( 0.50,1.43) .. ( 0.50,1.67) -- cycle; % % Show details only from the front %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \unless\ifsloth@back @@ -188,20 +186,20 @@ % % Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifsloth@sleeping - \fill[\sloth@eyelid] (0.195, 1.705) rectangle ++(0.005, 0.02); - \fill[\sloth@eyelid,rotate around={22:(0.195, 1.76)}] (0.195, 1.705) rectangle ++(0.005, 0.02); - \fill[\sloth@eyelid,rotate around={44:(0.195, 1.76)}] (0.195, 1.701) rectangle ++(0.005, 0.02); - \fill[\sloth@eyelid,rotate around={-22:(0.195, 1.76)}] (0.195, 1.705) rectangle ++(0.005, 0.02); - \fill[\sloth@eyelid,rotate around={-44:(0.195, 1.76)}] (0.195, 1.705) rectangle ++(0.005, 0.02); + \fill[\sloth@eyelid] (0.195, 1.705) rectangle ++(0.005, 0.02); + \fill[\sloth@eyelid,rotate around={22:(0.195, 1.76)}] (0.195, 1.705) rectangle ++(0.005, 0.02); + \fill[\sloth@eyelid,rotate around={44:(0.195, 1.76)}] (0.195, 1.701) rectangle ++(0.005, 0.02); + \fill[\sloth@eyelid,rotate around={-22:(0.195, 1.76)}] (0.195, 1.705) rectangle ++(0.005, 0.02); + \fill[\sloth@eyelid,rotate around={-44:(0.195, 1.76)}] (0.195, 1.705) rectangle ++(0.005, 0.02); % - \fill[\sloth@eyelid] (-0.195, 1.705) rectangle ++(0.005, 0.02); - \fill[\sloth@eyelid,rotate around={22:(-0.195, 1.76)}] (-0.195, 1.705) rectangle ++(0.005, 0.02); - \fill[\sloth@eyelid,rotate around={44:(-0.195, 1.76)}] (-0.195, 1.705) rectangle ++(0.005, 0.02); - \fill[\sloth@eyelid,rotate around={-22:(-0.195, 1.76)}] (-0.195, 1.705) rectangle ++(0.005, 0.02); - \fill[\sloth@eyelid,rotate around={-44:(-0.195, 1.76)}] (-0.195, 1.701) rectangle ++(0.005, 0.02); + \fill[\sloth@eyelid] (-0.195, 1.705) rectangle ++(0.005, 0.02); + \fill[\sloth@eyelid,rotate around={22:(-0.195, 1.76)}] (-0.195, 1.705) rectangle ++(0.005, 0.02); + \fill[\sloth@eyelid,rotate around={44:(-0.195, 1.76)}] (-0.195, 1.705) rectangle ++(0.005, 0.02); + \fill[\sloth@eyelid,rotate around={-22:(-0.195, 1.76)}] (-0.195, 1.705) rectangle ++(0.005, 0.02); + \fill[\sloth@eyelid,rotate around={-44:(-0.195, 1.76)}] (-0.195, 1.701) rectangle ++(0.005, 0.02); % \sloth@part@draw[\sloth@eyelid] (0.237, 1.743) .. controls (0.237, 1.712) and (0.157, 1.712) .. (0.157, 1.743) .. controls (0.157, 1.802) and (0.237, 1.802) .. (0.237, 1.743) -- cycle; - \sloth@part@draw[\sloth@eyelid] (-0.237, 1.743) .. controls (-0.237, 1.712) and (-0.157, 1.712) .. (-0.157, 1.743) .. controls (-0.157, 1.802) and (-0.237, 1.802) .. (-0.237, 1.743) -- cycle; + \sloth@part@draw[\sloth@eyelid] (-0.237, 1.743) .. controls (-0.237, 1.712) and (-0.157, 1.712) .. (-0.157, 1.743) .. controls (-0.157, 1.802) and (-0.237, 1.802) .. (-0.237, 1.743) -- cycle; \else% sleeping \sloth@part@draw[\sloth@eye] (0.193,1.75) circle[radius=0.04]; \sloth@part@draw[\sloth@eye] (-0.193,1.75) circle[radius=0.04]; @@ -213,7 +211,11 @@ \sloth@part@draw[sloth@bright10!40!black] (0,1.665) ellipse[x radius=0.078, y radius=0.048]; % % Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \draw[\sloth@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.55) arc [start angle=-40, end angle=-140, radius=0.16]; + \ifsloth@openmouth + \filldraw[\sloth@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.55) arc [start angle=-40, end angle=-140, radius=0.16]; + \else + \draw[\sloth@mouth,line width=\scalingfactor*0.4pt] (0.115, 1.55) arc [start angle=-40, end angle=-140, radius=0.16]; + \fi % % Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \sloth@part@draw[sloth@bright10] (-0.50, 1.24) .. controls (-0.54, 1.24) and (-0.55, 1.20) .. (-0.56, 1.17) .. controls (-0.61, 1.06) and (-0.63, 0.95) .. (-0.64, 0.83) .. controls (-0.64, 0.80) and (-0.64, 0.77) .. (-0.63, 0.74) .. controls (-0.57, 0.66) and (-0.47, 0.60) .. (-0.38, 0.56) .. controls (-0.31, 0.54) and (-0.23, 0.52) .. (-0.16, 0.54) .. controls (-0.12, 0.54) and (-0.10, 0.59) .. (-0.13, 0.61) .. controls (-0.17, 0.68) and (-0.24, 0.73) .. (-0.30, 0.77) .. controls (-0.34, 0.79) and (-0.38, 0.81) .. (-0.42, 0.83) .. controls (-0.41, 0.92) and (-0.41, 1.01) .. (-0.42, 1.09) .. controls (-0.43, 1.14) and (-0.44, 1.19) .. (-0.48, 1.23) .. controls (-0.48, 1.24) and (-0.49, 1.24) .. (-0.50, 1.24) -- cycle; @@ -304,6 +306,11 @@ %\sloth[mouth=red] %\end{tcblisting} % +% The sloth can open its mouth: +%\begin{tcblisting}{title={Open mouth}} +%\sloth[openmouth] +%\end{tcblisting} +% %If tired, the sloth can take a nap: %\begin{tcblisting}{title={Sleep}} %\sloth[sleeping] diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-snowmen.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-snowmen.sty index 56dfd45859f..600b17227a2 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-snowmen.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-snowmen.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-snowmen}[2024/12/12 version v2.1 Draw snowmen in TikZ] +\ProvidesPackage{tikzlings-snowmen}[2025/01/05 version v2.2 Draw snowmen in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -26,13 +26,14 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname snowmanhookforeground\endcsname \csname tikzlinghookforeground\endcsname - % + % } \newif\ifsnowman@threeD \newif\ifsnowman@back \newif\ifsnowman@globalwarming \newif\ifsnowman@contour +\newif\ifsnowman@openmouth \tikzset{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -56,29 +57,31 @@ mouth/.store in = \snowman@mouth, mouth = black, buttons/.store in = \snowman@buttons, - buttons = black, + buttons = black, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % options % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - 3D/.code = \snowman@threeDtrue, + openmouth/.code = \snowman@openmouthtrue, + open mouth/.forward to = /snowman/openmouth, + 3D/.code = \snowman@threeDtrue, back/.code = \snowman@backtrue, globalwarming/.code= \snowman@globalwarmingtrue \def\snowman@globalwarming{#1}, - globalwarming/.default = blue!10!white, + globalwarming/.default = blue!10!white, global warming/.forward to = /snowman/globalwarming, contour/.code = \snowman@contourtrue \def\snowman@contour{#1} \def\snowman@mouth{#1}, - contour/.default = black, - outline/.forward to = /snowman/contour, + contour/.default = black, + outline/.forward to = /snowman/contour, } \def\snowman@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.75, 0.0) rectangle (0.75, 2.13); @@ -95,7 +98,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -113,7 +116,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -135,25 +138,25 @@ \csname tikzlinghookbelly\endcsname % % Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \fill[\snowman@mouth] (0,1.23) circle[radius=0.025]; - \fill[\snowman@mouth] (0.06,1.3) circle[radius=0.025]; - \fill[\snowman@mouth] (-0.06,1.27) circle[radius=0.025]; - \fill[\snowman@mouth] (0.09,1.37) circle[radius=0.025]; - \fill[\snowman@mouth] (-0.18,1.28) circle[radius=0.025]; - \fill[\snowman@mouth] (0.2,1.28) circle[radius=0.025]; + \fill[\snowman@mouth] (0,1.23) circle[radius=0.025]; + \fill[\snowman@mouth] (0.06,1.3) circle[radius=0.025]; + \fill[\snowman@mouth] (-0.06,1.27) circle[radius=0.025]; + \fill[\snowman@mouth] (0.09,1.37) circle[radius=0.025]; + \fill[\snowman@mouth] (-0.18,1.28) circle[radius=0.025]; + \fill[\snowman@mouth] (0.2,1.28) circle[radius=0.025]; \fill[\snowman@mouth] (-0.25,1.2) circle[radius=0.025]; % % Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \snowman@part@draw[\snowman@eye] (-0.5,1.75) circle[radius=0.06]; - \snowman@part@draw[\snowman@eye] (-0.1,1.55) circle[radius=0.06]; + \snowman@part@draw[\snowman@eye] (-0.5,1.75) circle[radius=0.06]; + \snowman@part@draw[\snowman@eye] (-0.1,1.55) circle[radius=0.06]; % % Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \snowman@part@draw[\snowman@nose] (-0.6,1.4) -- (-0.8,1.42) -- (-0.6,1.54) (-0.6,1.4) arc[radius=0.07, start angle=-90, end angle=90]; + \snowman@part@draw[\snowman@nose] (-0.6,1.4) -- (-0.8,1.42) -- (-0.6,1.54) (-0.6,1.4) arc[radius=0.07, start angle=-90, end angle=90]; % % Buttons %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \snowman@part@draw[\snowman@buttons] (0.1,0.8) circle[radius=0.06]; \snowman@part@draw[\snowman@buttons] (-0.15,0.55) circle[radius=0.06]; - \snowman@part@draw[\snowman@buttons] (0,0.25) circle[radius=0.06]; + \snowman@part@draw[\snowman@buttons] (0,0.25) circle[radius=0.06]; % % normal snowman %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \else% global warming @@ -165,7 +168,7 @@ % Body + Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \snowman@part@draw[\snowman@body] (0,0.5) ellipse[x radius=0.6, y radius=0.5]; \snowman@part@draw[\snowman@body] (0,1.1) ellipse[x radius=0.5, y radius=0.4]; - \snowman@part@draw[\snowman@body] (0,1.7) circle[radius=0.4]; + \snowman@part@draw[\snowman@body] (0,1.7) circle[radius=0.4]; % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname snowmanhookbelly\endcsname @@ -182,18 +185,25 @@ \fill[\snowman@mouth] (-0.08,1.522) circle[radius=0.016]; \fill[\snowman@mouth] (0.12,1.543) circle[radius=0.016]; \fill[\snowman@mouth] (-0.12,1.543) circle[radius=0.016]; + \ifsnowman@openmouth + \fill[\snowman@mouth] (0,1.57) circle[radius=0.016]; + \fill[\snowman@mouth] (-0.04,1.565) circle[radius=0.016]; + \fill[\snowman@mouth] (-0.08,1.56) circle[radius=0.016]; + \fill[\snowman@mouth] (0.04,1.565) circle[radius=0.016]; + \fill[\snowman@mouth] (0.08,1.56) circle[radius=0.016]; + \fi % % Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \snowman@part@draw[\snowman@eye] (-0.155,1.8) circle[radius=0.04]; - \snowman@part@draw[\snowman@eye] (0.155,1.8) circle[radius=0.04]; + \snowman@part@draw[\snowman@eye] (-0.155,1.8) circle[radius=0.04]; + \snowman@part@draw[\snowman@eye] (0.155,1.8) circle[radius=0.04]; % % Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \snowman@part@draw[\snowman@nose] (0,1.72) arc [radius=0.05, start angle=90, end angle=270] (0,1.62) -- (0.15,1.64) -- (0,1.72); % % Buttons %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \snowman@part@draw[\snowman@buttons] (0,1.15) circle[radius=0.04]; - \snowman@part@draw[\snowman@buttons] (0,0.95) circle[radius=0.04]; - \snowman@part@draw[\snowman@buttons] (0,0.75) circle[radius=0.04]; + \snowman@part@draw[\snowman@buttons] (0,1.15) circle[radius=0.04]; + \snowman@part@draw[\snowman@buttons] (0,0.95) circle[radius=0.04]; + \snowman@part@draw[\snowman@buttons] (0,0.75) circle[radius=0.04]; % \fi% back % @@ -250,6 +260,11 @@ %\snowman[buttons=red] %\end{tcblisting} % +% The snowman can open its mouth: +%\begin{tcblisting}{title={Open mouth}} +%\snowman[openmouth] +%\end{tcblisting} +% %The biggest enemy of the snowman are raising temperatures: %\begin{tcblisting}{title={Global warming}} %\snowman[globalwarming,tophat] diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-squirrels.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-squirrels.sty index a15844ddfef..7f132d75853 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-squirrels.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-squirrels.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-squirrels}[2024/12/12 version v2.1 Drawing squirrels in TikZ] +\ProvidesPackage{tikzlings-squirrels}[2025/01/05 version v2.2 Drawing squirrels in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -33,6 +33,7 @@ \newif\ifsquirrel@rightstep \newif\ifsquirrel@back \newif\ifsquirrel@contour +\newif\ifsquirrel@openmouth \tikzset{ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -50,20 +51,25 @@ body/.store in = \squirrel@body, body = brown!40!gray!90!red, eye/.store in = \squirrel@eye, - eye = white, + eye = white, pupil/.store in = \squirrel@pupil, - pupil = black, + pupil = black, + mouth/.store in = \squirrel@mouth, + mouth = \squirrel@body!70!brown!60!black, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % options % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - 3D/.code = \squirrel@threeDtrue, + openmouth/.code = \squirrel@openmouthtrue, + open mouth/.forward to = /squirrel/openmouth, + 3D/.code = \squirrel@threeDtrue + \def\squirrel@mouth{\squirrel@body!40!black}, leftstep/.code = \squirrel@leftsteptrue, left step/.forward to = /squirrel/leftstep, rightstep/.code = \squirrel@rightsteptrue, - right step/.forward to = /squirrel/rightstep, - back/.code = \squirrel@backtrue, + right step/.forward to = /squirrel/rightstep, + back/.code = \squirrel@backtrue, contour/.code = \squirrel@contourtrue \def\squirrel@contour{#1}, contour/.default = black, @@ -73,7 +79,7 @@ \def\squirrel@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.53,0.1) rectangle (1.12,2.15); % @@ -89,7 +95,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -107,24 +113,24 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname squirrelhookbackground\endcsname \csname tikzlinghookbackground\endcsname - % + % % Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifsquirrel@leftstep \squirrel@part@draw[\squirrel@body!70!brown!50!darkgray] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; \else% step \squirrel@part@draw[\squirrel@body!70!brown!50!darkgray] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; - \fi% step + \fi% step \ifsquirrel@rightstep \squirrel@part@draw[\squirrel@body!70!brown!50!darkgray] (0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; \else% step \squirrel@part@draw[\squirrel@body!70!brown!50!darkgray] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; - \fi% step + \fi% step % % Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \unless\ifsquirrel@back @@ -133,8 +139,7 @@ \fi% back % % Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \squirrel@part@draw[\squirrel@body] - (0.5,0.5) .. controls (0.5,0.09) and (-0.5,0.09) .. (-0.5,0.5) .. controls (-0.5,0.85) and (-0.25,1.6) .. (0,1.7) .. controls (0.25,1.6) and (0.5,0.85) .. (0.5,0.5) -- cycle; + \squirrel@part@draw[\squirrel@body] (0.5,0.5) .. controls (0.5,0.09) and (-0.5,0.09) .. (-0.5,0.5) .. controls (-0.5,0.85) and (-0.25,1.6) .. (0,1.7) .. controls (0.25,1.6) and (0.5,0.85) .. (0.5,0.5) -- cycle; % % Belly %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \unless\ifsquirrel@back @@ -146,17 +151,16 @@ \csname tikzlinghookbelly\endcsname % % Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - \squirrel@part@draw[\squirrel@body!70!brown!50!darkgray] (0.1920,1.9906) .. controls (0.1657,2.0780) and (0.1839,2.1332) .. (0.1839,2.1332) .. controls (0.1839,2.1332) and (0.1123,2.1773) .. (0.0941,2.0720) .. controls (0.0716,2.0156) and (0.0753,1.9519) .. (0.1023,1.9293) .. controls (0.1293,1.9068) and (0.1696,1.9342) .. (0.1920,1.9906) -- cycle; - \squirrel@part@draw[\squirrel@body!70!brown!50!darkgray] - (-0.1920,1.9906) .. controls (-0.1657,2.0780) and (-0.1839,2.1332) .. (-0.1839,2.1332) .. controls (-0.1839,2.1332) and (-0.1123,2.1773) .. (-0.0941,2.0720) .. controls (-0.0716,2.0156) and (-0.0753,1.9519) .. (-0.1023,1.9293) .. controls (-0.1293,1.9068) and (-0.1696,1.9342) .. (-0.1920,1.9906) -- cycle; + \squirrel@part@draw[\squirrel@body!70!brown!50!darkgray] (0.1920,1.9906) .. controls (0.1657,2.0780) and (0.1839,2.1332) .. (0.1839,2.1332) .. controls (0.1839,2.1332) and (0.1123,2.1773) .. (0.0941,2.0720) .. controls (0.0716,2.0156) and (0.0753,1.9519) .. (0.1023,1.9293) .. controls (0.1293,1.9068) and (0.1696,1.9342) .. (0.1920,1.9906) -- cycle; + \squirrel@part@draw[\squirrel@body!70!brown!50!darkgray] (-0.1920,1.9906) .. controls (-0.1657,2.0780) and (-0.1839,2.1332) .. (-0.1839,2.1332) .. controls (-0.1839,2.1332) and (-0.1123,2.1773) .. (-0.0941,2.0720) .. controls (-0.0716,2.0156) and (-0.0753,1.9519) .. (-0.1023,1.9293) .. controls (-0.1293,1.9068) and (-0.1696,1.9342) .. (-0.1920,1.9906) -- cycle; % % Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifsquirrel@contour - \squirrel@part@draw[\squirrel@body] (0,1.75) circle[radius=0.3]; - \squirrel@part@draw[\squirrel@body] (0.2,1.6) circle[radius=0.15]; + \squirrel@part@draw[\squirrel@body] (0,1.75) circle[radius=0.3]; + \squirrel@part@draw[\squirrel@body] (0.2,1.6) circle[radius=0.15]; \squirrel@part@draw[\squirrel@body] (-0.2,1.6) circle[radius=0.15]; \ifsquirrel@back - \squirrel@part@draw[\squirrel@body] (0,1.75) circle[radius=0.3]; + \squirrel@part@draw[\squirrel@body] (0,1.75) circle[radius=0.3]; \fi% back \else% contour \squirrel@part@draw[\squirrel@body] (0,1.75) circle[radius=0.3] (0.2,1.6) circle[radius=0.15] (-0.2,1.6) circle[radius=0.15]; @@ -170,7 +174,7 @@ % % Nose %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \squirrel@part@draw[\squirrel@body!70!brown!60!black] (0,1.66) ellipse[x radius=0.06, y radius=0.03]; - % + % % Eyes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \squirrel@part@draw[\squirrel@eye] (0.07,1.78) ellipse[x radius=0.05, y radius=0.07]; \squirrel@part@draw[\squirrel@eye] (-0.07,1.78) ellipse[x radius=0.05, y radius=0.07]; @@ -179,15 +183,19 @@ % % Mouth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifsquirrel@contour + \draw[\squirrel@contour,fill=white,line width=\scalingfactor*0.4pt] (-0.15,1.61) .. controls (-0.15,1.61) and (-0.15,1.52) .. (0.0,1.61) .. controls (0.15,1.52) and (0.15,1.61) .. (0.15,1.61) (0.15,1.61) arc [start angle=-20, end angle=-160, radius=0.16]; \draw[\squirrel@contour,fill=white,line width=\scalingfactor*0.4pt] (-0.025,1.567) rectangle ++(0.02,0.03); \draw[\squirrel@contour,fill=white,line width=\scalingfactor*0.4pt] (0.025,1.567) rectangle ++(-0.02,0.03); \draw[\squirrel@contour,line width=\scalingfactor*0.4pt] (-0.15,1.61) .. controls (-0.15,1.61) and (-0.15,1.52) .. (0.0,1.61) .. controls (0.15,1.52) and (0.15,1.61) .. (0.15,1.61); \else% contour + \ifsquirrel@openmouth + \filldraw[\squirrel@mouth,line width=\scalingfactor*0.4pt] (-0.15,1.61) .. controls (-0.15,1.61) and (-0.15,1.52) .. (0.0,1.61) .. controls (0.15,1.52) and (0.15,1.61) .. (0.15,1.61) (0.15,1.61) arc [start angle=-20, end angle=-160, radius=0.16]; + \fi% open mouth \fill[white] (-0.025,1.567) rectangle ++(0.02,0.03); \fill[white] (0.025,1.567) rectangle ++(-0.02,0.03); - \draw[\squirrel@body!70!brown!60!black,line width=\scalingfactor*0.4pt] (-0.15,1.61) .. controls (-0.15,1.61) and (-0.15,1.52) .. (0.0,1.61) .. controls (0.15,1.52) and (0.15,1.61) .. (0.15,1.61); + \draw[\squirrel@mouth,line width=\scalingfactor*0.4pt] (-0.15,1.61) .. controls (-0.15,1.61) and (-0.15,1.52) .. (0.0,1.61) .. controls (0.15,1.52) and (0.15,1.61) .. (0.15,1.61); \fi% contour - % + % % Arms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \squirrel@part@draw[\squirrel@body!70!brown!50!darkgray] (0.2,0.85) ellipse[x radius=0.22, y radius=0.11, rotate=70]; \squirrel@part@draw[\squirrel@body!70!brown!50!darkgray] (-0.2,0.85) ellipse[x radius=0.22, y radius=0.11, rotate=-70]; @@ -197,7 +205,7 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname squirrelhookbody\endcsname \csname tikzlinghookbody\endcsname - % + % } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -238,6 +246,14 @@ %\begin{tcblisting}{title={Pupil colour}} %\squirrel[pupil=red] %\end{tcblisting} +%\begin{tcblisting}{title={Mouth colour}} +%\squirrel[mouth=red] +%\end{tcblisting} +% +% The squirrel can open its mouth: +%\begin{tcblisting}{title={Open mouth}} +%\squirrel[openmouth] +%\end{tcblisting} % %And the squirrel can lift its legs: %\begin{tcblisting}{title={Walking}} diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-wolves.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-wolves.sty index f55179ca06d..f4bf79719a9 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings-wolves.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings-wolves.sty @@ -12,7 +12,7 @@ %% See https://www.latex-project.org/lppl.txt %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings-wolves}[2024/12/12 version v2.1 Drawing wolves in TikZ] +\ProvidesPackage{tikzlings-wolves}[2025/01/05 version v2.2 Drawing wolves in TikZ] \RequirePackage{tikz} \RequirePackage{tikzlings-addons} @@ -27,7 +27,7 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname wolfhookforeground\endcsname \csname tikzlinghookforeground\endcsname - % + % } \newif\ifwolf@threeD @@ -53,9 +53,9 @@ body/.store in = \wolf@body, body = gray!90!white, eye/.store in = \wolf@eye, - eye = white, + eye = white, pupil/.store in = \wolf@pupil, - pupil = black, + pupil = black, %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % options @@ -69,18 +69,18 @@ leftstep/.code = \wolf@leftsteptrue, left step/.forward to = /wolf/leftstep, rightstep/.code = \wolf@rightsteptrue, - right step/.forward to = /wolf/rightstep, - back/.code = \wolf@backtrue, + right step/.forward to = /wolf/rightstep, + back/.code = \wolf@backtrue, contour/.code = \wolf@contourtrue \def\wolf@contour{#1}, - contour/.default = black, - outline/.forward to = /wolf/contour, + contour/.default = black, + outline/.forward to = /wolf/contour, } \def\wolf@draw{% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - % minimal bounding box size + % minimal bounding box size % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \path (-0.625,0.1) rectangle (0.905, 2.17); @@ -97,7 +97,7 @@ \pgfmathsetmacro{\yscalefactor}{\tmpscaleD} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % + % % switch between 2D, 3D and contours, from % https://chat.stackexchange.com/transcript/message/45991801#45991801 % @@ -115,32 +115,32 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Body parts - % + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname wolfhookbackground\endcsname \csname tikzlinghookbackground\endcsname - % + % % Feet %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifwolf@leftstep - \wolf@part@draw[\wolf@body!65!white] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; + \wolf@part@draw[\wolf@body!65!white] (-0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; \else% step - \wolf@part@draw[\wolf@body!65!white] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; + \wolf@part@draw[\wolf@body!65!white] (-0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; \fi% step % \ifwolf@rightstep - \wolf@part@draw[\wolf@body!65!white] (0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; + \wolf@part@draw[\wolf@body!65!white] (0.255,0.25) ellipse[x radius=0.23, y radius=0.09]; \else% step - \wolf@part@draw[\wolf@body!65!white] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; + \wolf@part@draw[\wolf@body!65!white] (0.255,0.2) ellipse[x radius=0.23, y radius=0.09]; \fi% step % % Ears %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \wolf@part@draw[\wolf@body] (0.22, 2.0392) .. controls (0.22, 2.1584) and (0.49460, 2.255) .. (0.49460, 2.255) .. controls (0.49460, 2.255) and (0.5300, 1.86) .. (0.3721, 1.86) .. controls (0.2891, 1.86) and (0.22, 1.9201) .. (0.22, 2.0392) -- cycle; - \wolf@part@draw[\wolf@body!55!white] (0.22, 2.0392) .. controls (0.26, 2.1584) and (0.47, 2.22) .. (0.47, 2.20) .. controls (0.47, 2.2) and (0.49, 1.9) .. (0.3721, 1.9) .. controls (0.2891, 1.88) and (0.22, 1.88) .. (0.22, 2.0392) -- cycle; + \wolf@part@draw[\wolf@body!55!white] (0.22, 2.0392) .. controls (0.26, 2.1584) and (0.47, 2.22) .. (0.47, 2.20) .. controls (0.47, 2.2) and (0.49, 1.9) .. (0.3721, 1.9) .. controls (0.2891, 1.88) and (0.22, 1.88) .. (0.22, 2.0392) -- cycle; \wolf@part@draw[\wolf@body] (-0.22, 2.0392) .. controls (-0.22, 2.1584) and (-0.49460, 2.255) .. (-0.49460, 2.255) .. controls (-0.49460, 2.255) and (-0.5300, 1.86) .. (-0.3721, 1.86) .. controls (-0.2891, 1.86) and (-0.22, 1.9201) .. (-0.22, 2.0392) -- cycle; - \wolf@part@draw[\wolf@body!55!white] (-0.22, 2.0392) .. controls (-0.26, 2.1584) and (-0.47, 2.22) .. (-0.47, 2.20) .. controls (-0.47, 2.2) and (-0.49, 1.9) .. (-0.3721, 1.9) .. controls (-0.2891, 1.88) and (-0.22, 1.88) .. (-0.22, 2.0392) -- cycle; - % + \wolf@part@draw[\wolf@body!55!white] (-0.22, 2.0392) .. controls (-0.26, 2.1584) and (-0.47, 2.22) .. (-0.47, 2.20) .. controls (-0.47, 2.2) and (-0.49, 1.9) .. (-0.3721, 1.9) .. controls (-0.2891, 1.88) and (-0.22, 1.88) .. (-0.22, 2.0392) -- cycle; + % % Tail %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \unless\ifwolf@back \wolf@part@draw[\wolf@body!50!darkgray] (1.0893, 1.5779) .. controls (0.3433, 1.6612) and (0.4863, 0.6062) .. (-0.0243, 0.348) .. controls (1.0671, 0.068) and (0.8133, 1.1808) .. (1.0893, 1.5779) -- cycle; @@ -161,7 +161,7 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname wolfhookbelly\endcsname \csname tikzlinghookbelly\endcsname - % + % % Head %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifwolf@back \wolf@part@draw[\wolf@body!70!white!95!brown] (0.5, 1.8) .. controls (0.5, 1.58) and (0.2, 1.35) .. (0, 1.35) .. controls (-0.2, 1.35) and (-0.5, 1.58) .. (-0.5, 1.8) .. controls (-0.34, 2.3) and (0.34, 2.3) .. (0.5, 1.8) -- cycle; @@ -202,7 +202,7 @@ % adding hook for users to customise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname wolfhookbody\endcsname \csname tikzlinghookbody\endcsname - % + % } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/tex/latex/tikzlings/tikzlings.sty b/Master/texmf-dist/tex/latex/tikzlings/tikzlings.sty index d7ef80175d3..4db7af570ac 100644 --- a/Master/texmf-dist/tex/latex/tikzlings/tikzlings.sty +++ b/Master/texmf-dist/tex/latex/tikzlings/tikzlings.sty @@ -12,7 +12,7 @@ % See https://www.latex-project.org/lppl.txt % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{tikzlings}[2024/12/12 version v2.1 Collection of packages to draw animals and other beings in TikZ] +\ProvidesPackage{tikzlings}[2025/01/05 version v2.2 Collection of packages to draw animals and other beings in TikZ] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % @@ -49,13 +49,13 @@ \else \ifdefined\pdfrandomseed % pdflatex \else - \ifdefined\randomseed + \ifdefined\randomseed \let\pdfrandomseed\randomseed % post TL19 xelatex and lualatex \else \let\pdfrandomseed\time % pre TL19 xelatex \fi \fi - \pgfmathsetseed{\number\pdfrandomseed} + \pgfmathsetseed{\number\pdfrandomseed} \fi % #1: tikzling name. diff --git a/Master/texmf-dist/tex/latex/titlesec/titleps.sty b/Master/texmf-dist/tex/latex/titlesec/titleps.sty index 7e75a746fcd..b8682327ac7 100644 --- a/Master/texmf-dist/tex/latex/titlesec/titleps.sty +++ b/Master/texmf-dist/tex/latex/titlesec/titleps.sty @@ -1,5 +1,5 @@ % -% Copyright (C) 1998-2023 Javier Bezos http://www.texnia.com +% Copyright (C) 1998-2025 Javier Bezos http://www.texnia.com % % This file may be distributed and/or modified under the conditions of % the MIT License. A version can be found at the end of this file. @@ -13,7 +13,7 @@ \ifx\ttl@coreps\@empty\else % START code for package \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{titleps}[2023/10/27 v2.16 Page styles] +\ProvidesPackage{titleps}[2025/01/04 v2.17 Page styles] % This package is mainly a wrapper for the pagestyle macros provided % by titlesec, so that they can be used without it. Functionality is diff --git a/Master/texmf-dist/tex/latex/titlesec/titlesec.sty b/Master/texmf-dist/tex/latex/titlesec/titlesec.sty index 749a3fad7c6..5b928a76997 100644 --- a/Master/texmf-dist/tex/latex/titlesec/titlesec.sty +++ b/Master/texmf-dist/tex/latex/titlesec/titlesec.sty @@ -1,5 +1,5 @@ % -% Copyright (C) 1998-2023 Javier Bezos http://www.texnia.com +% Copyright (C) 1998-2025 Javier Bezos http://www.texnia.com % % This file may be distributed and/or modified under the conditions of % the MIT License. A version can be found at the end of this file. @@ -34,7 +34,7 @@ % ~~~~~~~ \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{titlesec}[2023/10/27 v2.16 Sectioning titles] +\ProvidesPackage{titlesec}[2025/01/04 v2.17 Sectioning titles] % Initialization % ~~~~~~~~~~~~~~ diff --git a/Master/texmf-dist/tex/latex/titlesec/titletoc.sty b/Master/texmf-dist/tex/latex/titlesec/titletoc.sty index 7d3ac5e93a6..74e3f244524 100644 --- a/Master/texmf-dist/tex/latex/titlesec/titletoc.sty +++ b/Master/texmf-dist/tex/latex/titlesec/titletoc.sty @@ -1,5 +1,5 @@ % -% Copyright (C) 1998-2023 Javier Bezos http://www.texnia.com +% Copyright (C) 1998-2025 Javier Bezos http://www.texnia.com % % This file may be distributed and/or modified under the conditions of % the MIT License. A version can be found at the end of this file. @@ -7,7 +7,7 @@ % Repository: https://github.com/jbezos/titlesec % -\ProvidesPackage{titletoc}[2023/10/27 v2.16 TOC entries] +\ProvidesPackage{titletoc}[2025/01/04 v2.17 TOC entries] % The following tags are used: % ttl@ : the generic one, shared with titlesec @@ -102,22 +102,15 @@ \DeclareOption{rubberseps}{% \def\ttl@contentsstretch{\vskip\z@\@plus.1\p@}} +\newcommand\contentslabel{} \DeclareOption{leftlabels}{% \renewcommand\numberline[1]{\hb@xt@\@tempdima{#1\ttl@idot\hfil}}% - \newcommand\contentslabel[2][\thecontentslabel\ttl@idot]{% -% \let\ttl@a\thecontentslabel %%%%% For the star variant -% \def\thecontentslabel{#2}% %%% To be fully implemented... when? -% \setbox\z@\hbox{#1}% -% \dimen@\wd\z@ -% \let\thecontentslabel\ttl@a -% \hspace*{-\dimen@}\hb@xt@\dimen@{#1\hfil} -% \show\ttl@b \show\ttl@a + \renewcommand\contentslabel[2][\thecontentslabel\ttl@idot]{% \hspace*{-#2}\hb@xt@#2{#1\hfil}}} \DeclareOption{rightlabels}{% \renewcommand\numberline[1]{\hb@xt@\@tempdima{\hss#1\ttl@idot\enspace}}% - \let\contentslabel\relax - \newcommand\contentslabel[2][\thecontentslabel\ttl@idot\enspace]{% + \renewcommand\contentslabel[2][\thecontentslabel\ttl@idot\enspace]{% \hspace*{-#2}\hb@xt@#2{\hfil#1}}} \newcommand\contentspage[1][\thecontentspage]{% diff --git a/Master/texmf-dist/tex/latex/warning/warning.sty b/Master/texmf-dist/tex/latex/warning/warning.sty index 0a8e3e5b7d8..a48327aac8e 100644 --- a/Master/texmf-dist/tex/latex/warning/warning.sty +++ b/Master/texmf-dist/tex/latex/warning/warning.sty @@ -1,10 +1,10 @@ %% %% Project: warning -%% Version: 2023-03-18 v0.10 +%% Version: 2025-01-01 v0.11 %% Info: Global warnings at the end of the screen output and the logfile %% -%% Copyright © 2001, 2023 Harald Harders (harald.harders@gmx.de; inactive) -%% (2023-03-18 update done by H.-Martin Münch, <Martin dot Muench at Uni-Bonn dot de>) +%% Copyright © 2001, 2023, 2025 Harald Harders (harald.harders@gmx.de; inactive) +%% (2025-01-01 update done by H.-Martin Münch, <Martin dot Muench at Uni-Bonn dot de>) %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either @@ -22,17 +22,15 @@ %% and do not load the warning package. %% \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{warning}[2023/03/18 v0.10 Global warnings at end of logfile] +\ProvidesPackage{warning}[2025/01/01 v0.11 Global warnings at end of logfile] \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} \IfFormatAtLeastTF{2020/10/01}{ \NewDocumentCommand\addglobalwarning{m}{\AddToHook{enddocument/info}{#1}} - \addglobalwarning{% - \PackageWarningNoLine{warning}{Package warning is obsolete.\MessageBreak% - Instead of \string\addglobalwarning{ something } use \MessageBreak% - \string\AddToHook{enddocument/info}{ something }\MessageBreak% - and do not load the warning package} - } + \PackageError{warning}{Package warning is obsolete}{% + Instead of \string\addglobalwarning{ something } use\MessageBreak% + \string\AddToHook{enddocument/info}{ something }\MessageBreak% + and do not load the warning package.} \def\wrn@warning{\endinput} }{\let\wrn@warning\relax \AtBeginDocument{\addglobalwarning{\PackageWarningNoLine{warning}{% diff --git a/Master/texmf-dist/tex/latex/yb-book/yb-book.cls b/Master/texmf-dist/tex/latex/yb-book/yb-book.cls index 392011e3994..fd9069b5cf6 100644 --- a/Master/texmf-dist/tex/latex/yb-book/yb-book.cls +++ b/Master/texmf-dist/tex/latex/yb-book/yb-book.cls @@ -7,7 +7,7 @@ %% yb-book.dtx (with options: `class') %% (The MIT License) %% -%% Copyright (c) 2021-2024 Yegor Bugayenko +%% Copyright (c) 2021-2025 Yegor Bugayenko %% %% Permission is hereby granted, free of charge, to any person obtaining a copy %% of this software and associated documentation files (the 'Software'), to deal @@ -32,7 +32,8 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesClass{yb-book} -[23.03.2024 0.4.1 YB Branded Book Style] +[2025/01/05 0.5.1 YB Branded Book Style] + @@ -59,10 +60,12 @@ authordraft/.store in=\yb@authordraft, compact/.store in=\yb@compact, manuscript/.store in=\yb@manuscript, + sparse/.store in=\yb@sparse, } \ProcessPgfPackageOptions{/yb} -\makeatletter\ifdefined\yb@authordraft +\makeatletter +\ifdefined\yb@authordraft \PassOptionsToClass{11pt}{book} \PassOptionsToClass{oneside}{book} \else @@ -73,23 +76,26 @@ \PassOptionsToClass{11pt}{book} \PassOptionsToClass{twoside}{book} \fi -\fi\makeatother +\fi +\makeatother \LoadClass{book} +\RequirePackage[utf8]{inputenc} + \RequirePackage{geometry} -\geometry{paperwidth=6in, paperheight=9in, bindingoffset=0.25in, +\geometry{ + paperwidth=6in, paperheight=9in, + bindingoffset=0.25in, left=0.75in, right=0.75in, top=0.75in, bottom=1.25in} -\makeatletter\ifdefined\yb@authordraft +\makeatletter +\ifdefined\yb@authordraft \geometry{a4paper, margin=1in, left=1.5in} \else \ifdefined\yb@manuscript \geometry{a4paper, margin=1.2in} \fi -\fi\makeatother - -\RequirePackage[T1]{fontenc} -\RequirePackage[utf8]{inputenc} -\RequirePackage{lmodern} +\fi +\makeatother \RequirePackage{anyfontsize} @@ -113,19 +119,25 @@ \setlist{nosep} \RequirePackage{float} + \RequirePackage[normalem]{ulem} + \RequirePackage{xfp} -\RequirePackage{soul} \RequirePackage{xifthen} + +\RequirePackage{soul} + \RequirePackage[autostyle=try]{csquotes} \pagestyle{plain} \RequirePackage{setspace} \setstretch{1.2} - \makeatletter\ifdefined\yb@authordraft\setstretch{1.1}\fi\makeatother - \makeatletter\ifdefined\yb@compact\setstretch{1.0}\fi\makeatother - \makeatletter\ifdefined\yb@manuscript\setstretch{1.1}\fi\makeatother + \makeatletter + \ifdefined\yb@authordraft\setstretch{1.1}\fi + \ifdefined\yb@compact\setstretch{1.0}\fi + \ifdefined\yb@manuscript\setstretch{1.1}\fi + \makeatother \RequirePackage[indexing=cite,style=authoryear, natbib=true,maxnames=1,minnames=1,doi=false, @@ -155,29 +167,35 @@ {\begingroup\setstretch{1.0}\lsstyle} {\endgroup} -\makeatletter\ifdefined\yb@authordraft\else +\makeatletter +\ifdefined\yb@authordraft\else \RequirePackage[letterspace=-50]{microtype} -\fi\makeatother +\fi +\makeatother -\makeatletter\ifdefined\yb@manuscript +\makeatletter +\ifdefined\yb@manuscript \RequirePackage[tt=false,type1=true]{libertine} -\fi\makeatother +\fi +\makeatother \makeatletter \let\yb@oldsection\section +\def\yb@secstart{\ifdefined\yb@sparse\newpage\fi} \ifdefined\yb@authordraft \RequirePackage[medium]{titlesec} \else \RequirePackage[raggedright]{titlesec} \titlespacing{\section}{0in}{6pt}{6pt}[1in] - \renewcommand\section{\newpage\yb@oldsection} + \renewcommand\section{\yb@secstart\newpage\yb@oldsection} \fi \ifdefined\yb@compact - \renewcommand\section{\vspace{2em}\yb@oldsection} + \renewcommand\section{\yb@secstart\vspace{2em}\yb@oldsection} \fi \makeatother -\makeatletter\ifdefined\yb@authordraft +\makeatletter +\ifdefined\yb@authordraft \RequirePackage[absolute]{textpos} \TPGrid{16}{16} \RequirePackage{fancyhdr} @@ -188,9 +206,9 @@ \fancyhf{} \fancyhead[L,C,LO,CO]{} \fancyhead[R,RO]{ - \begin{textblock}{4}(11.5,1) + \begin{textblock}{4}(11.5,1)% \tikz \node [color=gray, rotate=270, - font=\ttfamily\scriptsize, text width=5in] at (0,0) { + font=\ttfamily\scriptsize, text width=5in] at (0,0) {% Copyright \textcopyright{} \the\year{} by \theauthor{}. All rights reserved. No part of the contents of this book may be reproduced or transmitted in any @@ -198,13 +216,14 @@ of the publisher. This particular manuscript is printed for \textbf{\thereviewer{}} and may be used only for one-time review. The manuscript has to be destroyed - after the review. + after the review.% }; \end{textblock} } - \fancyfoot[C,CO,CE]{\small\ttfamily + \fancyfoot[C,CO,CE]{\small\ttfamily% page \#\thepage{} of \pageref{LastPage}} -\fi\makeatother +\fi +\makeatother \renewcommand\maketitle{ {\LARGE\textbf{\thetitle}} @@ -223,13 +242,14 @@ \fi } -\makeatletter\newcommand\ybPrintTitlePage{ +\makeatletter +\newcommand\ybPrintTitlePage{ \ifdefined\yb@authordraft\else \begin{titlepage} \ttfamily \vspace*{\fill} \noindent - {\Huge\textbf{\thetitle}} + {\Huge\thetitle} \\[1em] by \theauthor{} \\[4em] @@ -246,30 +266,35 @@ \vspace*{\fill} \end{titlepage} \fi -}\makeatother +} +\makeatother -\makeatletter\newcommand\ybPrintTOC{ +\makeatletter +\newcommand\ybPrintTOC{ \ifdefined\yb@authordraft\else \ifdefined\yb@compact\else\cleardoublepage\fi {\setstretch{0.7}\tableofcontents} \fi -}\makeatother +} +\makeatother \RequirePackage{imakeidx} \renewbibmacro*{citeindex}{\indexnames{labelname}{}} \makeindex \indexsetup{othercode={\hyphenpenalty=10000}} -\makeatletter\newcommand\ybPrintIndex[1][Index]{ +\makeatletter +\newcommand\ybPrintIndex[1][Index]{% \ifdefined\yb@authordraft\else - \cleardoublepage - { - \setstretch{1.0} - \small - \addcontentsline{toc}{chapter}{#1} - \printindex - } - \fi -}\makeatother + \cleardoublepage% + {% + \setstretch{1.0}% + \small% + \addcontentsline{toc}{chapter}{#1}% + \printindex% + }% + \fi% +} +\makeatother \RequirePackage{wrapfig} \RequirePackage{mdframed} @@ -289,7 +314,8 @@ skipabove=0pt,skipbelow=0pt, linewidth=2pt, topline=false,bottomline=false,leftline=false} -\makeatletter\newcommand\ybQuote[3]{% +\makeatletter +\newcommand\ybQuote[3]{% \ifthenelse{\isempty{#3}}{}{ \ifx\hfuzz#2\hfuzz% \index{#3}% @@ -322,7 +348,8 @@ \vspace{-12pt} \end{wrapfigure}% \fi% -}\makeatother +} +\makeatother \RequirePackage{perpage} \RequirePackage[bottom,perpage,multiple]{footmisc} @@ -335,7 +362,8 @@ \yb@oldfootnote{#1}\futurelet\yb@nexttoken\yb@isfootnote} \makeatother -\makeatletter\newcommand\ybPrintBibliography{% +\makeatletter +\newcommand\ybPrintBibliography{% \AtNextBibliography{\small}% \raggedright% \ifdefined\yb@manuscript% @@ -347,7 +375,8 @@ \else \printbibliography \fi -}\makeatother +} +\makeatother \AtBeginDocument{% \raggedbottom% @@ -365,7 +394,6 @@ \newcommand*\theauthor{\textbackslash{}theauthor} \newcommand*\thereviewer{\textbackslash{}thereviewer} - \endinput %% %% End of file `yb-book.cls'. diff --git a/Master/texmf-dist/tex/latex/zugferd/zugferd-invoice.sty b/Master/texmf-dist/tex/latex/zugferd/zugferd-invoice.sty index b5b766ef3ec..aae75f1c362 100644 --- a/Master/texmf-dist/tex/latex/zugferd/zugferd-invoice.sty +++ b/Master/texmf-dist/tex/latex/zugferd/zugferd-invoice.sty @@ -1,5 +1,5 @@ % -% Copyright (C) 2024 Marei Peischl <marei@peitex.de> +% Copyright (C) 2024–2025 Marei Peischl <marei@peitex.de> % --------------------------------------------------------- % % This file may be distributed and/or modified under the @@ -12,7 +12,7 @@ % and version 1.3c or later is part of all distributions of LaTeX % version 2008-05-04 or later. % -\ProvidesExplPackage{zugferd-invoice}{2024-12-08}{0.9c}{Invoice wrapper example package for the factur-x to create ZUGFerD invoices} +\ProvidesExplPackage{zugferd-invoice}{2025-01-02}{0.9d}{Invoice wrapper example package for the factur-x to create ZUGFerD invoices} \keys_define:nn {zugferd/invoice}{ default-vat .tl_set:N = \defaultVAT, diff --git a/Master/texmf-dist/tex/latex/zugferd/zugferd.sty b/Master/texmf-dist/tex/latex/zugferd/zugferd.sty index efbc4351e95..b7ddbf8fa5d 100644 --- a/Master/texmf-dist/tex/latex/zugferd/zugferd.sty +++ b/Master/texmf-dist/tex/latex/zugferd/zugferd.sty @@ -9,7 +9,7 @@ %% Copyright (C) 2023--2024 by Marei Peischl (peiTeX) <marei@peitex.de> %% \NeedsTeXFormat{LaTeX2e}[2023-11-01] -\ProvidesExplPackage{zugferd}{2024-12-08}{0.9c}{Create ZUGFerd invoices using LaTeX} +\ProvidesExplPackage{zugferd}{2025-01-02}{0.9d}{Create ZUGFerd invoices using LaTeX} \tl_new:N \l__zugferd_tmp_tl \str_new:N \g__zugferd_format_str \str_new:N \g__zugferd_businessProcessId_str @@ -78,7 +78,9 @@ xml-file .usage:n = load, auto-exemption .bool_gset:N = \g__zugferd_auto_exemption_bool, auto-exemption .initial:n = true, auto-exemption .default:n = true, -auto-exemption .usage:n =load, +auto-exemption .usage:n = load, +unknown-value-warning .bool_gset:N = \g__zugferd_unknown_value_warning_bool, +unknown-value-warning .initial:n = true, } \char_set_catcode_parameter:N \#% @@ -154,10 +156,13 @@ urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0\c_hash_str {zugferd} {#2} } \let\SetZugferdData\SetZUGFeRDData +\NewExpandableDocumentCommand{\UseZUGFeRDElement}{m}{ +\tl_use:c {l__zugferd_#1_tl} +} \NewDocumentCommand{\InsertZUGFeRDData}{om}{ \str_case:nnF {#1} { {AddressData} { -\clist_map_inline:nn {name, lineone, linetwo} { +\clist_map_inline:nn {name, lineone, linetwo,linethree} { \prop_if_in:cnT {g__zugferd_#2_AddressData_prop } {##1} { \prop_item:cn {g__zugferd_#2_AddressData_prop } {##1}\\ } @@ -554,7 +559,9 @@ currency / unknown .code:n = { } {\keys_set:nx { zugferd } {unit= {\str_uppercase:f {#1}}}} { +\bool_if:NT \g__zugferd_unknown_value_warning_bool { \msg_warning:nnn { zugferd } {unknown-value} {currency} {#1} +} \tl_set:Ne \l__zugferd_currency_tl {\str_uppercase:f {#1}} } }, @@ -610,25 +617,25 @@ For~more~information~see~the~zugferd~documentation. address .code:n = { \seq_set_split:Nnn \l_tmpa_seq {\\} {##1} \keys_set:nx {zugferd / #1} { -lineone=\seq_item:Nn \l_tmpa_seq {1}, -linetwo=\seq_item:Nn \l_tmpa_seq {2}, -linethree=\seq_item:Nn \l_tmpa_seq {3} +lineone={\seq_item:Nn \l_tmpa_seq {1}}, +linetwo={\seq_item:Nn \l_tmpa_seq {2}}, +linethree={\seq_item:Nn \l_tmpa_seq {3}} } }, contact .code:n = { \seq_set_split:Nnn \l_tmpa_seq {\\} {##1} \int_compare:nNnTF {\seq_count:N \l_tmpa_seq} > {3} { \keys_set:ne {zugferd/#1} { -contact-name = \seq_item:Nn \l_tmpa_seq {1}, -contact-department = \seq_item:Nn \l_tmpa_seq {2}, -contact-phone = \seq_item:Nn \l_tmpa_seq {3}, -contact-email= \seq_item:Nn \l_tmpa_seq {4} +contact-name = {\seq_item:Nn \l_tmpa_seq {1}}, +contact-department = {\seq_item:Nn \l_tmpa_seq {2}}, +contact-phone = {\seq_item:Nn \l_tmpa_seq {3}}, +contact-email= {\seq_item:Nn \l_tmpa_seq {4}}, } }{ \keys_set:ne {zugferd/#1} { -contact-name = \seq_item:Nn \l_tmpa_seq {1}, -contact-phone = \seq_item:Nn \l_tmpa_seq {2}, -contact-email= \seq_item:Nn \l_tmpa_seq {3} +contact-name = {\seq_item:Nn \l_tmpa_seq {1}}, +contact-phone = {\seq_item:Nn \l_tmpa_seq {2}}, +contact-email= {\seq_item:Nn \l_tmpa_seq {3}}, } } }, @@ -697,23 +704,15 @@ unknown .code:n = \tl_if_blank:nF {##1} { \__zugferd_define_xml_content:Nn \__zugferd_PostalTradeAddress:nnnnnnn {% <ram:PostalTradeAddress> \bool_if:NF \g__zugferd_minimum_bool {% -\__zugferd_indent: <ram:PostcodeCode>#1</ram:PostcodeCode> -\tl_if_blank:nF {#2} {% -\__zugferd_indent: <ram:LineOne>#2</ram:LineOne> -}% -\tl_if_blank:nF {#3} {% -\__zugferd_indent: <ram:LineTwo>#3</ram:LineTwo> -}% -\tl_if_blank:nF {#4} {% -\__zugferd_indent: <ram:LineThree>#4</ram:LineThree> -}% -\__zugferd_indent: <ram:CityName>#5</ram:CityName> +\__zugferd_write_inline_i:nn {ram:PostcodeCode} {#1} +\__zugferd_write_inline_i:nn {ram:LineOne} {#2} +\__zugferd_write_inline_i:nn {ram:LineTwo} {#3} +\__zugferd_write_inline_i:nn {ram:LineThree} {#4} +\__zugferd_write_inline_i:nn {ram:CityName} {#5} }% \__zugferd_indent: <ram:CountryID>#6</ram:CountryID> \bool_if:NF \g__zugferd_minimum_bool {% -\tl_if_blank:nF {#7} {% -\__zugferd_indent: <ram:CountrySubDivisionName>#7</ram:CountrySubDivisionName> -}% +\__zugferd_write_inline_i:nn {ram:CountrySubDivisionName} {#7} }% </ram:PostalTradeAddress>% }% @@ -747,19 +746,9 @@ unknown .code:n = \tl_if_blank:nF {##1} { \bool_if:NT \g__zugferd_writeTradeContact_bool {% <ram:DefinedTradeContact> \__zugferd_indent: <ram:PersonName>#1</ram:PersonName> -\tl_if_blank:nF {#2} {% -\__zugferd_indent: <ram:DepartmentName>#2</ram:DepartmentName> -}% -\tl_if_blank:nF {#3} {% -\__zugferd_indent: <ram:TelephoneUniversalCommunication> -\__zugferd_indent:n {2} <ram:CompleteNumber>#3</ram:CompleteNumber> -\__zugferd_indent: </ram:TelephoneUniversalCommunication> -}% -\tl_if_blank:nF {#4} {% -\__zugferd_indent: <ram:EmailURIUniversalCommunication> -\__zugferd_indent:n {2} <ram:URIID>#4</ram:URIID> -\__zugferd_indent: </ram:EmailURIUniversalCommunication> -}% +\__zugferd_write_inline_i:nn {ram:DepartmentName} {#2} +\__zugferd_write_inline_wrapped_i:nnn {ram:TelephoneUniversalCommunication} {ram:CompleteNumber} {#3} +\__zugferd_write_inline_wrapped_i:nnn {ram:EmailURIUniversalCommunication} {ram:URIID} {#4} </ram:DefinedTradeContact>% }% }% @@ -852,10 +841,10 @@ reference / unknown .code:n = { \clist_new:N \g__zugferd_buyer_document_references_clist \keys_define:nn {zugferd} { contract-reference .prop_gput:N = \g__zugferd_document_references_prop, -purchaseorder-reference .prop_gput:N = \g__zugferd_document_references_prop, -purchase-order-reference .meta:n = {purchaseorder-reference=#1}, -salesorder-reference .prop_gput:N = \g__zugferd_document_references_prop, -sales-order-reference .meta:n = {salesorder-reference=#1}, +buyerorder-reference .prop_gput:N = \g__zugferd_document_references_prop, +purchase-order-reference .meta:n = {buyerorder-reference=#1}, +sellerorder-reference .prop_gput:N = \g__zugferd_document_references_prop, +sales-order-reference .meta:n = {sellerorder-reference=#1}, } \cctab_begin:N \g__zugferd_xml_cctab% \__zugferd_define_xml_writer:Nn \__zugferd_write_ReferencedDocument:n {% @@ -902,7 +891,9 @@ payment-means / type .choices:nn = {1,10,30,42,48,49,57,58,59,97} { \tl_gset_eq:NN \g__zugferd_payment_means_tl \l_keys_choice_tl }, payment-means / unknown .code:n = { +\bool_if:NT \g__zugferd_unknown_value_warning_bool { \msg_warning:nnn { zugferd } {unknown-value} {payment-means} {#1} +} \tl_gset:Nn \g__zugferd_payment_means_tl {\int_eval:n {#1}} } } @@ -944,7 +935,9 @@ unit / unknown .code:n = { { \keys_set:ne { zugferd } {unit= {\l_tmpa_tl}} } { +\bool_if:NT \g__zugferd_unknown_value_warning_bool { \msg_warning:nnn { zugferd } {unknown-unit} {#1} +} \tl_set_eq:NN \l__zugferd_unit_code_tl \l_tmpa_tl } }, @@ -1035,8 +1028,11 @@ category / unknown .code:n = { { \keys_set:nx { zugferd } {category= {\str_uppercase:f {#1}}} } { +\tl_set:Ne \l__zugferd_tax_category_code_tl {\str_uppercase:f {#1}} +\bool_if:NT \g__zugferd_unknown_value_warning_bool { \msg_warning:nnn { zugferd } {unknown-tax-category} {#1} } +} }, category .initial:n = S, category .usage:n = general, @@ -1063,6 +1059,15 @@ end-date .initial:n =, <#1#2>#3</#1> } } +\__zugferd_define_xml_content:Nn \__zugferd_write_inline_wrapped:nnnn { +\__zugferd_indent:n {#1} <#2>\__zugferd_xml_newline_indent: +\__zugferd_indent:n {#1+1} <#3>#4</#3>\__zugferd_xml_newline_indent: +\__zugferd_indent:n {#1} </#2> +} +\__zugferd_define_xml_content:Nn \__zugferd_write_inline_wrapped_i:nnn { +\__zugferd_write_inline_wrapped:nnnn {1} {#1} {#2} {#3} +} + \cs_generate_variant:Nn \__zugferd_write_inline:nn {ne} \__zugferd_define_xml_content:Nn \__zugferd_write_inline_i:nnn { \__zugferd_indent: \__zugferd_write_inline:nnn {#1} {#2} {#3} diff --git a/Master/texmf-dist/tex/lualatex/luatbls/luatbls.lua b/Master/texmf-dist/tex/lualatex/luatbls/luatbls.lua new file mode 100644 index 00000000000..a14310fc6d5 --- /dev/null +++ b/Master/texmf-dist/tex/lualatex/luatbls/luatbls.lua @@ -0,0 +1,310 @@ +--% Kale Ewasiuk (kalekje@gmail.com) +--% 2025-01-01 +--% Copyright (C) 2025 Kale Ewasiuk +--% +--% Permission is hereby granted, free of charge, to any person obtaining a copy +--% of this software and associated documentation files (the "Software"), to deal +--% in the Software without restriction, including without limitation the rights +--% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +--% copies of the Software, and to permit persons to whom the Software is +--% furnished to do so, subject to the following conditions: +--% +--% The above copyright notice and this permission notice shall be included in +--% all copies or substantial portions of the Software. +--% +--% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +--% ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +--% TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +--% PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +--% SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +--% ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +--% ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +--% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +--% OR OTHER DEALINGS IN THE SOFTWARE. + + +local luatbls = {} + +luatbls._luakeys = require'luakeys'() + +luatbls._rec_tbl = '' +luatbls._rec_tbl_opts = {} + +luatbls._xysep = '%s+' -- spaces separate x-y coordinates +luatbls._tblv = '<v>' +luatbls._tblk = '<k>' +luatbls._cspfx = 'dtbl' +luatbls._debug = false + +function luatbls._dprint(s1, s2) + if luatbls._debug then + penlight.wrth(s1, s1) + end +end + + +setmetatable(luatbls, {__call=function(t,s)return t._get_tbl_item(s) end}) + +function luatbls._get_tbl_name(s) + s = s:strip() + if s == '' then + return luatbls._rec_tbl + end + for _, delim in ipairs{'.', '/', '|'} do + s = s:split(delim)[1] -- if tbl reference had a . | or /, an indexer was used + end + if luatbls[s] == nil then + local validtbls = penlight.List(penlight.tablex.kkeys(luatbls)):filter(function(s) return not s:startswith('_') end):join(', ') + penlight.tex.pkgerror('luatbls', 'Tried to access undefined tbl: "'..s..'". Valid tbls are: '..validtbls) + return luatbls._rec_tbl + end + return s +end + +function luatbls._get_tbl(s) + s = luatbls._get_tbl_name(s) + return luatbls[s] +end + +function luatbls._get_tbl_index(s, undec) + undec = undec or false -- flag for allowing undeclared indexing + local tbl = '' + local key = '' + local s_raw = s + if s:find('%.') then + local tt = s:split('.') + tbl = tt[1] + key = tt[2] + elseif s:find('/') then + local tt = s:split('/') + tbl = tt[1] + if tbl == '' then tbl = luatbls._rec_tbl end + key = tonumber(tonumber(tt[2])) + if key < 0 then key = #luatbls[tbl]+1+key end + else + tbl = luatbls._rec_tbl + key = tonumber(s) or s + if type(key) == 'number' and key < 0 then key = #luatbls[tbl]+1+key end + end + if tbl == '' then tbl = luatbls._rec_tbl end + + if (luatbls[tbl] == nil) or ((not undec) and (luatbls[tbl][key] == nil)) then + penlight.tex.pkgerror('luatbls', 'Invalid tbl index attempt using: "'..s_raw..'". We tried to use tbl="' ..tbl..'" and key="'..key..'"'.. + 'Note that "|" is forbidden here. The recent table is: '..luatbls._rec_tbl) + end + return tbl, key +end + +function luatbls._get_tbl_seq(s) + local tblseq = s:split('|') + local tbl = nil + local seq = nil + if #tblseq == 1 then + tbl = luatbls._get_tbl_name('') + seq = tblseq[1] + if seq == '' then seq = ':,*' end + elseif #tblseq == 2 then + tbl = luatbls._get_tbl_name(tblseq[1]) + seq = tblseq[2] + if seq == '' then seq = ':,*' end + end + return tbl, seq +end + + + +function luatbls._get_tbl_item(s, p) -- get item with string, p means print value + p = p or false + local tbl, key = luatbls._get_tbl_index(s) + local itm = luatbls[tbl][key] + if p then + tex.sprint(tostring(itm)) + end + return itm +end + + +function luatbls._set_tbl_item(s, v) + tbl, key = luatbls._get_tbl_index(s) + luatbls[tbl][key] = v +end + +function luatbls._check_recent_tbl_undefault() + local undefaults = {} + if luatbls._rec_tbl_opts ~= nil then + local defaults = penlight.tablex.union( + luatbls._rec_tbl_opts.defs or {}, + luatbls._rec_tbl_opts.defaults or {} + ) + for k, v in pairs(luatbls[luatbls._rec_tbl]) do + if defaults[k] == nil then + undefaults[#undefaults+1] = k + end + end + if penlight.hasval(undefaults) then + penlight.tex.pkgerror('luatbls', + 'Invalid keys passed to tbl keyval: ' .. (', '):join(undefaults) .. + ' ; choices are: ' .. (', '):join(penlight.tablex.keys(defaults)) + ) + end + end +end + +function luatbls._make_alpha_key(k) + if tonumber(k) ~= nil then + k = penlight.Char(tonumber(k)) + end + return k +end + +function luatbls._def_tbl(ind, def, g) + local _tbl, _key = luatbls._get_tbl_index(ind) + if def == '' then def = luatbls._cspfx.._tbl..luatbls._make_alpha_key(_key) end + luatbls._def_tbl_one(luatbls[_tbl][_key], def, g) +end + + +function luatbls._def_tbl_some(tblseq, def, g) + for t, k, v in luatbls._iter_tbls_vals(tblseq) do + if def == '' then def = luatbls._cspfx..t end + local def2 = def .. luatbls._make_alpha_key(k) + luatbls._def_tbl_one(v, def2, g) + end +end + +function luatbls._def_tbl_one(v, cs, g) + if type(v) == 'table' then + for kk, vv in pairs(v) do + kk = luatbls._make_alpha_key(kk) + token.set_macro(cs..kk, tostring(vv), g) + end + else + token.set_macro(cs, tostring(v), g) + end +end + +function luatbls._def_tbl_coords(ind, def) + local tbl, key = luatbls._get_tbl_index(ind) + local str = luatbls[tbl][key] + if def == '' then def = luatbls._cspfx..tbl..key end + local x, y = str:strip():splitv(luatbls._xysep) + if (not penlight.hasval(x)) or (not penlight.hasval(y)) then + penlight.tex.pkgerror('luatbls', '_def_tbl_coords function could not parse coordiantes given as "'..str..'" ensure two numbers separated by space are given!', '', true) + end + token.set_macro(def..'x', tostring(x)) + token.set_macro(def..'y', tostring(y)) +end + + +function luatbls._for_tbl_prt(k, v,cmd) + local cmd_new = cmd:gsub(luatbls._tblv, tostring(v)):gsub(luatbls._tblk, tostring(k)):gsub('(\\%w+) ', '%1') -- for some reason a space gets added to \cs, maybe + luatbls._dprint(cmd_new, '_for_tbl replacement') + tex.sprint(cmd_new) +end + +function luatbls._for_tbl(tblseq, cmd) + for t, k, v in luatbls._iter_tbls_vals(tblseq) do + luatbls._for_tbl_prt(k, v,cmd) + end +end + +function luatbls._for_tbl_e(tbl, cmd) + for k, v in pairs(tbl) do + luatbls._for_tbl_prt(k, v,cmd) + end +end + + +function luatbls._iter_tbls_vals(s) + if s:find('|') or ((s:find('%.') == nil) and (s:find('/') == nil)) then + local tbl, seq = luatbls._get_tbl_seq(s) + local keyval = {} + for key, val in penlight.seq.tbltrain(luatbls._get_tbl(tbl), seq) do + -- todo this should check validity of keys for sequences + keyval[#keyval+1] = {key, val} + end + luatbls._dprint(keyval, 'luatbls._iter_tbls_vals is iterating through tbl: '..tbl..' with sequence: '..seq) + local i = 0 + return function() + i = i + 1 + if i <= #keyval then + return tbl, keyval[i][1], keyval[i][2] + end + end + else + local tbl, key = luatbls._get_tbl_index(s) + local val = luatbls[tbl][key] + luatbls._dprint(keyval, 'luatbls._iter_tbls_vals is using tbl: '..tbl..' with key: '..key) + local i = 1 + return function() + if i == 1 then + i = i + 1 -- only return the single value + return tbl, key, val + end + end + end +end + +function luatbls._make_args(s, key, val) + local args = {val} + if s == nil then + return args + end + s = s:split(')')[1] + args = luatbls._luakeys.parse(s, {naked_as_value=true}) + for i, v in ipairs(args) do + if v == luatbls._tblv then + args[i] = val + elseif v == luatbls._tblk then + args[i] = key + end + end + return args +end + +function luatbls._make_func(f, key, val) + f = f:strip() + fargs = f:split('(') + f = fargs[1] + args = luatbls._make_args(fargs[2], key, val) + if f:startswith(':') then + f = f:sub(2,-1) + if type(val) == 'string' then + f = string[f] + elseif type(val) == 'table' then + f = penlight.tablex[f] + end + else + f = penlight._Gdot(f) + end + --luatbls._dprint() -- todo more debug printing + return f, args +end + + + +function luatbls._make_newtbl(tblind, newtbl) + if tblind == '' then tblind = luatbls._rec_tbl..'|' end + if newtbl ~= '' then -- determine if new tbl is needed + local ogtbl = luatbls._get_tbl_name(tblind) + luatbls[newtbl] = penlight.tablex.deepcopy(luatbls[ogtbl]) + luatbls._rec_tbl = newtbl + tblind, _ = string.gsub(tblind, ogtbl, newtbl, 1) + end + return tblind +end + +function luatbls._apply_tbl(tblind, func, newtbl) + tblind = luatbls._make_newtbl(tblind, newtbl) + for _, f in pairs(func:split('|')) do + for tbl, key, val in luatbls._iter_tbls_vals(tblind) do + local thefunc, args = luatbls._make_func(f, key, val) + if thefunc == nil then + penlight.tex.pkgerror('luatbls', 'Tried to apply function: "'..f..'" to tbl value. It yielded no function. Ensure : is used for self-methods') + end + luatbls[tbl][key] = thefunc(penlight.utils.unpack(args)) + end + end +end + +return luatbls
\ No newline at end of file diff --git a/Master/texmf-dist/tex/lualatex/luatbls/luatbls.sty b/Master/texmf-dist/tex/lualatex/luatbls/luatbls.sty new file mode 100644 index 00000000000..cbbd5377a1c --- /dev/null +++ b/Master/texmf-dist/tex/lualatex/luatbls/luatbls.sty @@ -0,0 +1,163 @@ +% Kale Ewasiuk (kalekje@gmail.com) +% 2025-01-01 +% Copyright (C) 2025 Kale Ewasiuk +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the "Software"), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% +% The above copyright notice and this permission notice shall be included in +% all copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +% ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +% TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +% PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +% SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +% ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +% ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +% OR OTHER DEALINGS IN THE SOFTWARE. + +\RequirePackage{luacode} +\RequirePackage{luakeys} +\RequirePackage{penlightplus} + + +\luadirect{luatbls = require'luatbls'} + + +\NewDocumentCommand{\tblnew}{m}{\luadirect{% initialize a tbl and set empty + luatbls[\luastring{#1}] = {} + luatbls._rec_tbl = \luastring{#1} +}} + + +\NewDocumentCommand{\tblchg}{ m }{\luadirect{% change recent table + luatbls._rec_tbl = luatbls._get_tbl_name(\luastring{#1}) +}} + +\NewDocumentCommand{\tblfrkv}{m +m O{}}{\luadirect{% parse a tbl from key-vals, naked are set to boolean + luatbls._rec_tbl_opts = luatbls._luakeys.parse(\luastring{#3}) + luatbls[\luastring{#1}] = luatbls._luakeys.parse(string.subpar(\luastring{#2}), luatbls._rec_tbl_opts) + luatbls._rec_tbl = \luastring{#1} +}} + +\NewDocumentCommand{\tblfrkvN}{m +m O{}}{\luadirect{% + luatbls._rec_tbl_opts = luatbls._luakeys.parse(\luastring{#3}) + luatbls[\luastring{#1}] = luatbls._luakeys.parse(string.subpar(\luastringN{#2}), luatbls._rec_tbl_opts) + luatbls._rec_tbl = \luastring{#1} +}} + +\NewDocumentCommand{\tblfrcsv}{m +m O{}}{\tblfrkv{#1}{#2}[naked_as_value=true,#3]}% naked are set to array + +\NewDocumentCommand{\tblfrcsvN}{m +m O{}}{\tblfrkvN{#1}{#2}[naked_as_value=true,#3]} + +\NewDocumentCommand{\tblkvundefcheck}{}{\luadirect{luatbls._check_recent_tbl_undefault()}}% check defaults list and throw error if foreign keys were used + + + +\NewDocumentCommand{\tblapp}{m m}{\luadirect{% append to a table (ie using integer index) with a value (second arg) + __tbl__ = luatbls._get_tbl_name(\luastring{#1}) + table.insert(luatbls[__tbl__], \luastring{#2}) +}} + + +\NewDocumentCommand{\tblappN}{m m}{\luadirect{% append to a table (ie using integer index) with a value (second arg) # + __tbl__ = luatbls._get_tbl_name(\luastring{#1}) + table.insert(luatbls[__tbl__], \luastringN{#2}) +}} + + +\NewDocumentCommand{\tblcon}{m m}{\luadirect{% concatenate to a table (ie using integer index) with a list of comma separated values (second arg) # + __tbl__ = luatbls._get_tbl_name(\luastring{#1}) + for k, v in ipairs(luatbls._luakeys.parse(string.subpar(\luastring{#2}), {naked_as_value=true})) do + table.insert(luatbls[__tbl__], v) + end +}} + + +\NewDocumentCommand{\tblconN}{m m}{\luadirect{% concatenate to a table (ie using integer index) with a list of comma separated values (second arg) # + __tbl__ = luatbls._get_tbl_name(\luastring{#1}) + for k, v in ipairs(luatbls._luakeys.parse(string.subpar(\luastringN{#2}), {naked_as_value=true})) do + table.insert(luatbls[__tbl__], v) + end +}} + + +\NewDocumentCommand{\tbladd}{m m}{\luadirect{% add a kv pair to a table + __tbl__, __key__ = luatbls._get_tbl_index(\luastring{#1}, true) + luatbls[__tbl__][__key__] = \luastring{#2} +}} + +\NewDocumentCommand{\tbladdN}{m m}{\luadirect{% add a kv pair to a table + __tbl__, __key__ = luatbls._get_tbl_index(\luastring{#1}, true) + luatbls[__tbl__][__key__] = \luastringN{#2} +}} + + +\NewDocumentCommand{\tblupd}{m m}{\luadirect{% update to a table (ie using integer index) with a list of comma separated values (second arg) # + __tbl__ = luatbls._get_tbl_name(\luastring{#1}) + __tbl_new__ = luatbls._luakeys.parse(string.subpar(\luastring{#2}) + penlight.tablex.update(luatbls[__tbl__], __tbl_new__) +}} + + +\NewDocumentCommand{\tblupdN}{m m}{\luadirect{% update to a table (ie using integer index) with a list of comma separated values (second arg) # + __tbl__ = luatbls._get_tbl_name(\luastring{#1}) + __tbl_new__ = luatbls._luakeys.parse(string.subpar(\luastringN{#2}) + penlight.tablex.update(luatbls[__tbl__], __tbl_new__) +}} + + + + +\NewDocumentCommand{\tblget}{m}{\luadirect{% get an item using i syntax + luatbls._get_tbl_item(\luastring{#1}, true) +}} + +\NewDocumentCommand{\tblgetE}{m}{\luadirect{% get an item explicitly + tex.sprint(tostring(luatbls.#1)) +}} + +\NewDocumentCommand{\tblset}{m m}{\luadirect{% set item with {value} + luatbls._set_tbl_item(\luastring{#1}, \luastring{#2}) +}} + +\NewDocumentCommand{\tblsetN}{m m}{\luadirect{% set item with {value} + luatbls._set_tbl_item(\luastring{#1}, \luastringN{#2}) +}} + + +\NewDocumentCommand{\tblif}{ m m O{}}{\ifluax{luatbls._get_tbl_item(\luastring{#1})}{#2}[#3]} + +\NewDocumentCommand{\tblifv}{m m O{}}{\ifluaxv{luatbls._get_tbl_item(\luastring{#1})}{#2}[#3]} + +\NewDocumentCommand{\tblifeq}{m m m O{}}{\ifluax{luatbls._get_tbl_item(\luastring{#1}) == #2}{#3}[#4]} + + +\NewDocumentCommand{\tblfor}{ m m }{\luadirect{luatbls._for_tbl(\luastring{#1}, \luastring{#2})}} +\NewDocumentCommand{\tblforN}{ m m }{\luadirect{luatbls._for_tbl(\luastring{#1}, \luastringN{#2})}} + +\NewDocumentCommand{\tblforE}{ m m }{\luadirect{luatbls._for_tbl_e(luatbls.#1, \luastring{#2})}} +\NewDocumentCommand{\tblforEN}{ m m }{\luadirect{luatbls._for_tbl_e(luatbls.#1, \luastringN{#2})}} + + +\NewDocumentCommand{\tbldef}{ m m }{\luadirect{luatbls._def_tbl(\luastring{#1}, \luastring{#2})}} +\NewDocumentCommand{\tblgdef}{ m m }{\luadirect{luatbls._def_tbl(\luastring{#1}, \luastring{#2}, 'global')}} + +\NewDocumentCommand{\tbldefs}{ m O{} }{\luadirect{luatbls._def_tbl_some(\luastring{#1}, \luastring{#2})}} +\NewDocumentCommand{\tblgdefs}{ m O{} }{\luadirect{luatbls._def_tbl_some(\luastring{#1}, \luastring{#2}, 'global')}} + +\NewDocumentCommand{\tbldefxy}{ m O{} }{\luadirect{luatbls._def_tbl_coords(\luastring{#1}, \luastring{#2})}}% define #2x and #2y from a space delimited x-y pair + +\NewDocumentCommand{\tblapply}{m m O{}}{\luadirect{luatbls._apply_tbl(\luastring{#1}, \luastring{#2}, \luastring{#3})}} + +\NewDocumentCommand{\tblprt}{s m}{% + \luadirect{penlight.wrth(luatbls._get_tbl(\luastring{#2}),'luatbls: '..\luastring{#2})}% + \IfBooleanTF{#1}{\PackageError{luatbls}{Program terminated by tblprt*}{}\stop}{}% +} + diff --git a/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.lua b/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.lua index 9bfc57605a4..53b023941d2 100644 --- a/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.lua +++ b/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.lua @@ -1,6 +1,6 @@ --% Kale Ewasiuk (kalekje@gmail.com) ---% 2024-09-30 ---% Copyright (C) 2021-2024 Kale Ewasiuk +--% 2025-01-01 +--% Copyright (C) 2021-2025 Kale Ewasiuk --% --% Permission is hereby granted, free of charge, to any person obtaining a copy --% of this software and associated documentation files (the "Software"), to deal @@ -42,6 +42,8 @@ if debug ~= nil then end + + -- http://lua-users.org/wiki/SplitJoin -- todo read me!! penlight.tex = {} -- adding a sub-module for tex related stuff @@ -65,6 +67,17 @@ function penlight.hasval(x) -- if something has value end + +function penlight._Gdot(s) + -- return a global with nots + o = _G + for _, a in ipairs(s:split('.')) do + o = o[a] + end + return o +end + + -- Some simple and helpful LaTeX functions -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- xparse defaults @@ -182,6 +195,18 @@ function penlight.tex.pkgerror(pkg, msg1, msg2, stop) end +if not penlight.debug_available then + penlight.tex.pkgwarn('penlight', 'lua debug library is not available, recommend re-compiling with the --luadebug option') +end + + +function penlight.tex.errorif(exp, pkg, msg1, msg2, stop) + if penlight.hasval(exp) then + penlight.tex.pkgerror(pkg, msg1, msg2, stop) + end +end + + --definition helpers -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- function penlight.tex.defmacro(cs, val, g) -- , will not work if val contains undefined tokens (so pre-define them if using..) @@ -264,6 +289,8 @@ end -- when nesting commands, this makes it helpful to not worry about brackets penlight.tex._NumBkts = 0 +penlight.tex._EndEnvs = {} + --prt(opencmd('textbf')..opencmd('texttt')..'bold typwriter'..close_bkt_cnt()) function penlight.tex.opencmd(cmd) @@ -291,6 +318,24 @@ end + + +function penlight.tex.openenv(env, opt) + if opt == nil then opt = '' else opt = '['..opt..']' end + tex.sprint('\\begin{' .. env .. '}'..opt) + table.insert(penlight.tex._EndEnvs, 1, '\\end{'..env..'}') +end + +function penlight.tex.closeenv(num) + num = num or #penlight.tex._EndEnvs + for i=1, num do + tex.sprint(penlight.tex._EndEnvs[1]) + table.remove(penlight.tex._EndEnvs, 1) + end +end + + + function penlight.tex.aliasluastring(s, d) s = s:delspace():upper():tolist() d = d:delspace():upper():tolist() @@ -371,11 +416,11 @@ local number = P{"number", function penlight.char(num) - return string.char(string.byte("a")+num-1) + return string.char(string.byte("a")+tonumber(num)-1) end function penlight.Char(num) - return string.char(string.byte("A")+num-1) + return string.char(string.byte("A")+tonumber(num)-1) end @@ -475,6 +520,48 @@ function str_mt.__index.parsekv(s, t) -- parsekv string return penlight.luakeys.parse(s, t) end +function str_mt.__index.splitstrip(s, sep, stri) -- + sep = sep or ',' + return penlight.List(s:split(sep)):map(function(x) return penlight.stringx.strip(x, stri) end) +end + + +function str_mt.__index.split2(s, sep1, sep2, stri) -- + sep1 = sep1 or ',' + sep2 = sep2 or '=' + if stri == nil then stri = true end + stri = penlight.hasval(strip) + local splitfunc = string.split + if stri then + splitfunc = string.splitstrip + end + return penlight.List(splitfunc(s,sep1)):map(function(x) return splitfunc(x, sep2) end) +end + + + + +function str_mt.__index.hasnonum(s) + -- string only contains letters and symbols + --assert_string(1,s) -- todo + return string.find(s,'^[%D]+$') == 1 +end + +function str_mt.__index.hasnoalpha(s) + -- string only contains numbers and symbols + --assert_string(1,s) -- todo + return string.find(s,'^[%A]+$') == 1 +end + +function str_mt.__index.isvarlike(s) + -- string is like a variable, does not start with a number, then followd by letter, number, or underscore + --assert_string(1,s) -- todo + return string.find(s,'^[%a_][%w%d_]*$') == 1 +end + + + + -- -- -- -- function stuff function penlight.clone_function(fn) @@ -506,27 +593,28 @@ end function penlight.seq.check_neg_index(i, len, fallback) -i = tostring(i):delspace() -if i == '' then return fallback end -i = tonumber(i) -if i == nil then - local _ = 1*'"Attempted to use seqstr indexing with negative number, but length of list not provided"' - return fallback -- fallback is the number to fall back on if i isn't provided -end -len = tonumber(len) -if i < 0 then - if len == nil then + i = tostring(i):delspace() + if i == '' then return fallback end + i = tonumber(i) + if i == nil then local _ = 1*'"Attempted to use seqstr indexing with negative number, but length of list not provided"' - return pl.utils.raise("Attempted to use seqstr indexing with negative number, but length of list not provided") + return fallback -- fallback is the number to fall back on if i isn't provided end - i = len + 1 + i -- negative index -end -return i + len = tonumber(len) + if i < 0 then + if len == nil then + local _ = 1*'"Attempted to use seqstr indexing with negative number, but length of list not provided"' + return penlight.utils.raise("Attempted to use seqstr indexing with negative number, but length of list not provided") + end + i = len + 1 + i -- negative index + end + return i end penlight.seq.train_element_sep = ',' penlight.seq.train_range_sep = ':' + function penlight.seq.train(s, len) -- parse a range given a string indexer -- syntax is: s = 'i1, i2, r1:r2' where i1 and i2 are individual indexes. @@ -538,8 +626,16 @@ function penlight.seq.train(s, len) local t = penlight.List() -- list of indexes local check_neg = penlight.seq.check_neg_index - for _, r in ipairs(s:split(penlight.seq.train_element_sep)) do - if r:find(penlight.seq.train_range_sep) then + local steps = s:split(penlight.seq.train_element_sep) + --penlight.wrth(steps,'abc') + for _, r in ipairs(steps) do + --penlight.wrth(r,'seq.train = '..s) + r = penlight.stringx.strip(r) + if r == '*' then -- if the string has no numbers and no :, it is a key + t:append(r) + elseif string.isvarlike(r) then -- if the string has no numbers and no :, it is a key + t:append(r) + elseif r:find(penlight.seq.train_range_sep) then r = r:split(penlight.seq.train_range_sep) -- if it's a range t:extend(penlight.List.range(check_neg(r[1], len, 1), check_neg(r[2], len, len), @@ -547,8 +643,8 @@ function penlight.seq.train(s, len) else t:append(check_neg(r, len)) end - end - return t + end +return t end function penlight.seq.itrain(s, len) @@ -563,6 +659,24 @@ end +function penlight.seq.tbltrain(tbl, s) -- iterate over a table using the train syntax + local inds = penlight.seq.train(s, #tbl) -- indexes to use + local star = inds:index('*') + if star ~= nil then + inds:pop(star) + inds:inject(penlight.tablex.kkeys(tbl), star) + end + local i = 0 + return function () + i = i + 1 -- i of indexes + if i <= #inds then + local v = tbl[inds[i]] + --penlight.wrth(v) + --if v == nil then penlight.test.asserteq(v, true) end -- todo make a generic lua error message function + return inds[i], v + end + end +end @@ -598,6 +712,16 @@ end -- table stuff below + +function penlight.tablex.concatenate(t1,t2) + -- todo is this needed + for i=1,#t2 do + t1[#t1+1] = t2[i] + end + return t1 +end + + function penlight.tablex.strinds(t) -- convert indices that are numbers to string indices local t_new = {} for i, v in pairs(t) do -- ensure all indexes are strings @@ -611,6 +735,7 @@ function penlight.tablex.strinds(t) -- convert indices that are numbers to strin end + function penlight.tablex.listcontains(t, v) return penlight.tablex.find(t, v) ~= nil end @@ -642,6 +767,20 @@ function penlight.tablex.fmt(t, fmt, strinds) end +function penlight.tablex.list2comma(t) + t = penlight.List(t) + local s = '' + if #t == 1 then + s = t[1] + elseif #t == 2 then + s = t:join(' and ') + elseif #t >= 3 then + s = t:slice(1,#t-1):join(', ')..', and '..t[#t] + end + return s +end + + function penlight.tablex.map_slice(func, T, j1, j2) if type(j1) == 'string' then return penlight.array2d.map_slice(func, {T}, ','..j1)[1] @@ -653,6 +792,18 @@ end penlight.array2d.map_slice1 = penlight.tablex.map_slice + +function penlight.tablex.kkeys(t) + local keys = {} + for k, _ in penlight.utils.kpairs(t) do + keys[#keys+1] = k + end + return keys +end + + + + -- todo option for multiple filters with AND logic, like the filter files?? function penlight.tablex.filterstr(t, exp, case) -- case = case sensitive @@ -802,11 +953,8 @@ end -if not penlight.debug_available then - penlight.tex.pkgwarn('penlight', 'lua debug library is not available, recommend re-compiling with the --luadebug option') -else - penlight.COMP = require'pl.comprehension'.new() -- for comprehensions - +if penlight.debug_available then + penlight.COMP = require'penlight.comprehension'.new() -- for comprehensions local _parse_range = penlight.clone_function(penlight.array2d.parse_range) function penlight.array2d.parse_range(s) -- edit parse range to do numpy string if no letter passed @@ -820,6 +968,25 @@ end +function penlight.List:inject(l2, pos) + pos = pos or 1 + if pos < 1 then + pos = #self + pos + 1 + end + l2 = penlight.List(l2):reverse() + for i in l2:iter() do + self:insert(pos, i) + end + return self +end + + + + + + + + -- https://tex.stackexchange.com/questions/38150/in-lualatex-how-do-i-pass-the-content-of-an-environment-to-lua-verbatim penlight.tex.recordedbuf = "" @@ -868,6 +1035,14 @@ function penlight.tex.makePDFtablekv(kv) return t_new end +function penlight.tex.updatePDFtable(k, v, o) -- update pdf table + if o == nil then o = true end + k = k:strip():upfirst() + if penlight.hasval(o) or (__PDFmetadata__[k] == nil) then + __PDFmetadata__[penlight.tex.checkPDFkey(k)] = penlight.tex.makePDFvarstr(v) + end +end + penlight.tex.writePDFmetadata = function(t) -- write PDF metadata to xmpdata file t = t or __PDFmetadata__ @@ -908,31 +1083,11 @@ function penlight.tex.makeInTextstr(s) return s end ---todo decide on above or below -function penlight.tex.list2comma(t) - local s = '' - if #t == 1 then - s = t[1] - elseif #t == 2 then - s = t:join(' and ') - elseif #t >= 3 then - s = t:slice(1,#t-1):join(', ')..', and '..t[#t] - end - return s -end -function penlight.tex.split2comma(s, d) - local t = penlight.List(s:split(d)):map(string.strip) - penlight.tex.prt(penlight.tex.list2comma(t)) -end -function penlight.tex.split2items(s, d) - local t = penlight.List(s:split(d)):map(string.strip) - for n, v in ipairs(t) do - penlight.tex.prtn('\\item '..v) - end -end + + function penlight.toggle_luaexpr(expr) @@ -951,7 +1106,7 @@ function penlight.caseswitch(s, c, kv) local sw = kvtbl[c] -- the returned switch if sw == nil then -- if switch not found if s == penlight.tex.xTrue then -- if star, throw error - pl.tex.pkgerror('penlight', 'case: "'..c..'" not found in key-vals: "'..kv..'"') + penlight.tex.pkgerror('penlight', 'case: "'..c..'" not found in key-vals: "'..kv..'"') sw = '' else sw = kvtbl['__'] or '' -- use __ as not found case @@ -962,125 +1117,6 @@ end -penlight.tbls = {} - -penlight.rec_tbl = '' -penlight.rec_tbl_opts = {} - - -function penlight.tbl(s) - return penlight.get_tbl_item(s) -end - -function penlight.get_tbl_name(s) - if s == '' then - return penlight.rec_tbl - end - return s -end - -function penlight.get_tbl(s) - s = penlight.get_tbl_name(s) - return penlight.tbls[s] -end - -function penlight.get_tbl_index(s, undec) - undec = undec or false -- flag for allowing undeclared indexing - local tbl = '' - local key = '' - local s_raw = s - if s:find('%.') then - local tt = s:split('.') - tbl = tt[1] - key = tt[2] - elseif s:find('/') then - local tt = s:split('/') - tbl = tt[1] - if tbl == '' then tbl = penlight.rec_tbl end - key = tonumber(tonumber(tt[2])) - if key < 0 then key = #penlight.tbls[tbl]+1+key end - else - tbl = penlight.rec_tbl - key = tonumber(s) or s - if type(key) == 'number' and key < 0 then key = #penlight.tbls[tbl]+1+key end - end - if tbl == '' then tbl = penlight.rec_tbl end - - if (penlight.tbls[tbl] == nil) or ((not undec) and (penlight.tbls[tbl][key] == nil)) then - penlight.tex.pkgerror('penlightplus', 'Invalid tbl index attempt using: "'..s_raw..'". We tried to use tbl: "' ..tbl..'" and key: "'..key..'"') - end - return tbl, key -end - - -function penlight.get_tbl_item(s, p) -- get item with string, p means print value - p = p or false - local tbl, key = penlight.get_tbl_index(s) - local itm = penlight.tbls[tbl][key] - if p then - tex.sprint(tostring(itm)) - end - return itm -end - - -function penlight.set_tbl_item(s, v) - tbl, key = penlight.get_tbl_index(s) - penlight.tbls[tbl][key] = v -end - -function penlight.check_recent_tbl_undefault() - local undefaults = {} - if penlight.rec_tbl_opts ~= nil then - local defaults = penlight.tablex.union( - penlight.rec_tbl_opts.defs or {}, - penlight.rec_tbl_opts.defaults or {} - ) - for k, v in pairs(penlight.tbls[penlight.rec_tbl]) do - if defaults[k] == nil then - undefaults[#undefaults+1] = k - end - end - if penlight.hasval(undefaults) then - penlight.tex.pkgerror('penlightplus', - 'Invalid keys passed to tbl keyval: ' .. (', '):join(undefaults) .. - ' ; choices are: ' .. (', '):join(penlight.tablex.keys(defaults)) - ) - end - end -end - -function penlight.def_tbl(ind, def, g) - local _tbl, _key = penlight.get_tbl_index(ind) - if def == '' then def = 'dtbl'.._tbl.._key end - token.set_macro(def, tostring(penlight.tbls[_tbl][_key]), g) -end - -function penlight.def_tbl_all(ind, def) - local _tbl = penlight.get_tbl_name(ind) - if def == '' then def = 'dtbl'.._tbl end - for k, v in pairs(penlight.tbls[_tbl]) do - token.set_macro(def..k, tostring(v)) - end -end - --- TODO TODO TODO get error working xy def, and referene which table for key-vals -penlight.tbl_xysep = '%s+' -- spaces separate x-y coordinates -function penlight.def_tbl_coords(ind, def) - local tbl, key = penlight.get_tbl_index(ind) - local str = penlight.tbls[tbl][key] - if def == '' then def = 'dtbl'..tbl..key end - local x, y = str:strip():splitv(penlight.tbl_xysep) - if (not penlight.hasval(x)) or (not penlight.hasval(y)) then - penlight.tex.pkgerror('penlightplus', 'def_tbl_coords function could not parse coordiantes given as "'..str..'" ensure two numbers separated by space are given!', '', true) - end - token.set_macro(def..'x', tostring(x)) - token.set_macro(def..'y', tostring(y)) -end - - - - @@ -1136,3 +1172,69 @@ if penlight.hasval(__PL_GLOBALS__) then end + + + + + + + +-- graveyard + +--todo decide on above or below + + + +penlight.tex.list2comma = penlight.tablex.list2comma + +function penlight.tex.split2comma(s, d) + local t = penlight.List(s:split(d)):map(string.strip) + penlight.tex.prt(penlight.tex.list2comma(t)) +end + +function penlight.tex.split2items(s, d) + local t = penlight.List(s:split(d)):map(string.strip) + for n, v in ipairs(t) do + penlight.tex.prtn('\\item '..v) + end +end + + +-- +--\subsection*{Splitting strings} +--Splitting text (or a cmd) into oxford comma format via: +--\cmd{\splittocomma[expansion level]{text}{text to split on}}: +-- +--\begin{LTXexample}[width=0.3\linewidth] +-- \splittocomma{ j doe }{\and}-\\ +--\splittocomma{ j doe \and s else }{\and}-\\ +--\splittocomma{ j doe \and s else \and a per }{\and}-\\ +--\splittocomma{ j doe \and s else \and a per \and f guy}{\and}- +-- +--\def\authors{j doe \and s else \and a per \and f guy} +--\splittocomma[o]{\authors}{\and} +--\end{LTXexample} +-- +--The expansion level is up to two characters, \cmd{n|o|t|f}, to control the expansion of each argument. +-- +--You can do a similar string split but to \cmd{\item} instead of commas with \cmd{\splittoitems} +--\begin{LTXexample} +--\begin{itemize} +-- \splittoitems{kale\and john}{\and} +-- \splittoitems{kale -john -someone else}{-} +-- \splittoitems{1,2,3,4}{,} +--\end{itemize} +--\end{LTXexample} + + + +-- +--\NewDocumentCommand{\splittocomma}{ O{nn} m m }{% +-- \MakeluastringCommands[nn]{#1}% +-- \luadirect{penlight.tex.split2comma(\plluastringA{#2},\plluastringB{#3})}% +--} +-- +--\NewDocumentCommand{\splittoitems}{ O{NN} m m }{% +-- \MakeluastringCommands[nn]{#1}% +-- \luadirect{penlight.tex.split2items(\plluastringA{#2},\plluastringB{#3})}% +--} diff --git a/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.sty b/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.sty index cc37b096b1b..8b0a2634d10 100644 --- a/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.sty +++ b/Master/texmf-dist/tex/luatex/penlightplus/penlightplus.sty @@ -1,6 +1,6 @@ % Kale Ewasiuk (kalekje@gmail.com) -% 2024-09-30 -% Copyright (C) 2021-2024 Kale Ewasiuk +% 2025-01-01 +% Copyright (C) 2021-2025 Kale Ewasiuk % % Permission is hereby granted, free of charge, to any person obtaining a copy % of this software and associated documentation files (the "Software"), to deal @@ -22,7 +22,7 @@ % OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE % OR OTHER DEALINGS IN THE SOFTWARE. -\ProvidesPackage{penlightplus}[2024-09-30] +\ProvidesPackage{penlightplus}[2025-01-01] \RequirePackage{luacode} \RequirePackage{luakeys} @@ -56,38 +56,30 @@ } + \gdef\luastringT#1{\luastring{\unexpanded\expandafter\expandafter\expandafter{#1}}} % expand luastring twice \global\let\luastringF\luastring % fully expanded luastring - -\xtokcycleenvironment\luastringeenv - {\addcytoks{##1}} - {\processtoks{##1}} - {\addcytoks[1]{##1}} - {\addcytoks{##1}} - {} - {\cytoks\expandafter{\expandafter\luastringO\expandafter{\the\cytoks}}} - -\def\luastringE#1{\luastringeenv#1\endluastringeenv} +% +%\xtokcycleenvironment\luastringeenv +% {\addcytoks{##1}} +% {\processtoks{##1}} +% {\addcytoks[1]{##1}} +% {\addcytoks{##1}} +% {} +% {\cytoks\expandafter{\expandafter\luastringO\expandafter{\the\cytoks}}} +% +%\def\luastringE#1{\luastringeenv#1\endluastringeenv} %\gdef\luastringE#1{\begin{luastringeenv#1\endluastringeenv} + % allow control over expansion of arguments to a latex function \NewDocumentCommand{\MakeluastringCommands}{O{} m }{% #1 the desired commands #2 defaults \luadirect{penlight.tex.aliasluastring(\luastring{#2},\luastring{#1})}% } -\NewDocumentCommand{\splittocomma}{ O{nn} m m }{% - \MakeluastringCommands[nn]{#1}% - \luadirect{penlight.tex.split2comma(\plluastringA{#2},\plluastringB{#3})}% -} - -\NewDocumentCommand{\splittoitems}{ O{NN} m m }{% - \MakeluastringCommands[nn]{#1}% - \luadirect{penlight.tex.split2items(\plluastringA{#2},\plluastringB{#3})}% -} - @@ -99,9 +91,7 @@ \newtoggle{luaexpr}\togglefalse{luaexpr} -\begin{luacode*} -\end{luacode*} \NewDocumentCommand{\ifluax}{m m O{}}{% if lua expression is true do {m} if not [o] \luadirect{penlight.toggle_luaexpr(#1)}% @@ -124,125 +114,3 @@ - -%%% tbls below - -\NewDocumentCommand{\tblnew}{m}{\luadirect{% initialize a tbl and set blank - penlight.tbls[\luastring{#1}] = {} - penlight.rec_tbl = \luastring{#1} -}} - -\NewDocumentCommand{\tblfrkv}{m +m O{}}{\luadirect{% - penlight.rec_tbl_opts = penlight.luakeys.parse(\luastring{#3}) - penlight.tbls[\luastring{#1}] = penlight.luakeys.parse(string.subpar(\luastring{#2}), penlight.rec_tbl_opts) - penlight.rec_tbl = \luastring{#1} -}} - -\NewDocumentCommand{\tblfrkvCD}{m +m O{}}{\tblfrkv{#1}{#2}[#3]\tblkvundefcheck\tbldefall{}{}} -%% tbl from key-vals, then check defaults, then define all keys using default format -\NewDocumentCommand{\tblfrkvNCD}{m +m O{}}{\tblfrkvN{#1}{#2}[#3]\tblkvundefcheck\tbldefall{}{}} - -\NewDocumentCommand{\tblfrkvN}{m +m O{}}{\luadirect{% - penlight.rec_tbl_opts = penlight.luakeys.parse(\luastring{#3}) - penlight.tbls[\luastring{#1}] = penlight.luakeys.parse(string.subpar(\luastringN{#2}), penlight.rec_tbl_opts) - penlight.rec_tbl = \luastring{#1} -}} - -\NewDocumentCommand{\tblfrcsv}{m +m O{}}{\tblfrkv{#1}{#2}[naked_as_value=true,#3]} - -\NewDocumentCommand{\tblfrcsvN}{m +m O{}}{\tblfrkvN{#1}{#2}[naked_as_value=true,#3]} - - -\NewDocumentCommand{\tblkvundefcheck}{}{\luadirect{penlight.check_recent_tbl_undefault()}}% check defaults list and throw error if foreign keys were used - - - -\NewDocumentCommand{\tblapp}{m m}{\luadirect{% append to a table (ie using integer index) with a value (second arg) # todo option for string or number - __tbl__ = penlight.get_tbl_name(\luastring{#1}) - table.insert(penlight.tbls[__tbl__], \luastring{#2}) -}} - - -\NewDocumentCommand{\tblappN}{m m}{\luadirect{% append to a table (ie using integer index) with a value (second arg) # todo option for string or number - __tbl__ = penlight.get_tbl_name(\luastring{#1}) - table.insert(penlight.tbls[__tbl__], \luastringN{#2}) -}} - - -\NewDocumentCommand{\tblcon}{m m}{\luadirect{% concatenate to a table (ie using integer index) with a list of comma separated values (second arg) # - __tbl__ = penlight.get_tbl_name(\luastring{#1}) - for k, v in ipairs(penlight.luakeys.parse(string.subpar(\luastring{#2}), {naked_as_value=true})) do - table.insert(penlight.tbls[__tbl__], v) - end -}} - - -\NewDocumentCommand{\tblconN}{m m}{\luadirect{% concatenate to a table (ie using integer index) with a list of comma separated values (second arg) # - __tbl__ = penlight.get_tbl_name(\luastring{#1}) - for k, v in ipairs(penlight.luakeys.parse(string.subpar(\luastringN{#2}), {naked_as_value=true})) do - table.insert(penlight.tbls[__tbl__], v) - end -}} - -\NewDocumentCommand{\tbladd}{m m}{\luadirect{% add a kv pair to a table - __tbl__, __key__ = penlight.get_tbl_index(\luastring{#1}, true) - penlight.tbls[__tbl__][__key__] = \luastring{#2} -}} - -\NewDocumentCommand{\tbladdN}{m m m}{\luadirect{% add a kv pair to a table - __tbl__, __key__ = penlight.get_tbl_index(\luastring{#1}, true) - penlight.tbls[__tbl__][__key__] = \luastringN{#2} -}} - - - - -\NewDocumentCommand{\tblchg}{ m }{\luadirect{% change recent table - penlight.rec_tbl = \luastring{#1} -}} - - -\NewDocumentCommand{\tblget}{m}{\luadirect{% get an item - penlight.get_tbl_item(\luastring{#1}, true) -}} - -\NewDocumentCommand{\tblset}{m m}{\luadirect{% set item with {value} - penlight.set_tbl_item(\luastring{#1}, \luastring{#2}) -}} - -\NewDocumentCommand{\tblsetN}{m m}{\luadirect{% set item with {value} - penlight.set_tbl_item(\luastring{#1}, \luastringN{#2}) -}} - - -\NewDocumentCommand{\tbldef}{ m m }{\luadirect{penlight.def_tbl(\luastring{#1}, \luastring{#2})}} - -% define a table, use * to make global definition -\NewDocumentCommand{\tblgdef}{ m m }{\luadirect{penlight.def_tbl(\luastring{#1}, \luastring{#2}, 'global')}} - -\NewDocumentCommand{\tbldefall}{ m m }{\luadirect{penlight.def_tbl_all(\luastring{#1}, \luastring{#2})}} - -\NewDocumentCommand{\tbldefxy}{ m m }{\luadirect{penlight.def_tbl_coords(\luastring{#1}, \luastring{#2})}}% define #2x and #2y from a space delimited x-y pair - -\NewDocumentCommand{\tblif}{m m O{}}{\ifluax{penlight.get_tbl_item(\luastring{#1})}{#2}[#3]} - -\NewDocumentCommand{\tblifv}{m m O{}}{\ifluaxv{penlight.get_tbl_item(\luastring{#1})}{#2}[#3]} - -\NewDocumentCommand{\tblprt}{m}{\luadirect{penlight.wrth(penlight.get_tbl(\luastring{#1}),'penlightplus table: '..\luastring{#1})}} - - - - -% legacy code, delete this -\let\kvtblundefcheck\tblkvundefcheck - -\NewDocumentCommand{\tbladdo}{m m m}{\luadirect{% add a kv pair to a table - __tbl__ = penlight.get_tbl_name(\luastring{#1}) - penlight.tbls[__tbl__][\luastring{#2}] = \luastring{#3} -}} - -\NewDocumentCommand{\tbladdNo}{m m m}{\luadirect{% add a kv pair to a table - __tbl__ = penlight.get_tbl_name(\luastring{#1}) - penlight.tbls[__tbl__][\luastring{#2}] = \luastringN{#3} -}} - diff --git a/Master/texmf-dist/tex/plain/cweb/cwebacromac.tex b/Master/texmf-dist/tex/plain/cweb/cwebacromac.tex index c1cd4a9f631..6ec27777fdd 100644 --- a/Master/texmf-dist/tex/plain/cweb/cwebacromac.tex +++ b/Master/texmf-dist/tex/plain/cweb/cwebacromac.tex @@ -1,6 +1,6 @@ % hypertext macros for CWEB listings (in addition to cwebmac.tex) % Used in cwebmac.tex, pdfctwimac.tex, pdfproofmac.tex -% Version 3.0 --- August 2024 +% Version 3.1 --- January 2025 \ifx\ifacrohint\undefined\endinput\fi % these are not standalone macros \ifluatex % LuaTeX is almost like pdfTeX diff --git a/Master/texmf-dist/tex/plain/cweb/cwebmac.tex b/Master/texmf-dist/tex/plain/cweb/cwebmac.tex index 53454300a9a..2b7b14bf07a 100644 --- a/Master/texmf-dist/tex/plain/cweb/cwebmac.tex +++ b/Master/texmf-dist/tex/plain/cweb/cwebmac.tex @@ -1,7 +1,7 @@ % standard macros for CWEB listings (in addition to plain.tex) -% Version 4.12 --- August 2024 +% Version 4.12.1 --- January 2025 \ifx\renewenvironment\undefined\else\endinput\fi % LaTeX will use other macros -\xdef\fmtversion{\fmtversion+CWEB4.12} +\xdef\fmtversion{\fmtversion+CWEB4.12.1} \chardef\cwebversion=4 \chardef\cwebrevision=12 \parskip 0pt % no stretch between paragraphs diff --git a/Master/texmf-dist/tex/xelatex/bidi/adjmulticol-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/adjmulticol-xetex-bidi.def index 41684570785..5e0f4bcb984 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/adjmulticol-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/adjmulticol-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/algorithm2e-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/algorithm2e-xetex-bidi.def index d4c3abc598c..c198ae32b0b 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/algorithm2e-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/algorithm2e-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,12 +37,12 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{algorithm2e-xetex-bidi.def}[2018/09/23 v0.2 bidi adaptations for algorithm2e package for XeTeX engine] +\ProvidesFile{algorithm2e-xetex-bidi.def}[2025/01/03 v0.3 bidi adaptations for algorithm2e package for XeTeX engine] \expandafter\ifx\csname algocf@within\endcsname\relax% if \algocf@within doesn't exist \else% else \renewcommand\thealgocf{\csname the\algocf@within\endcsname\@SepMark\@arabic\c@algocf}% \fi -\@ifpackageloaded{color}{}{% +\ApplyPatchIfPackageLoadedF{color}{% \bidi@patchcmd{\@algocf@start}{\bgroup}{% \bgroup \if@RTL @@ -68,6 +68,16 @@ \fi }{}{} } + +\@ifpackagewith{algorithm2e}{algonl}{% +\renewcommand{\theAlgoLine}{\expandafter\csname the\algocf@float\endcsname\@SepMark\arabic{AlgoLine}}% +}{} + +\@ifpackagewith{algorithm2e}{algopart}{\renewcommand{\algocf@within}{part}}{} + +\@ifpackagewith{algorithm2e}{algochapter}{\renewcommand{\algocf@within}{chapter}}{} + +\@ifpackagewith{algorithm2e}{algosection}{\renewcommand{\algocf@within}{section}}{} \endinput %% %% End of file `algorithm2e-xetex-bidi.def'. diff --git a/Master/texmf-dist/tex/xelatex/bidi/amsart-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/amsart-xetex-bidi.def index c0c881cb617..8d3797b6f34 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/amsart-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/amsart-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/amsbook-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/amsbook-xetex-bidi.def index 1a8c9fea713..903326dc149 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/amsbook-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/amsbook-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/amsmath-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/amsmath-xetex-bidi.def index 23c6866b379..627475b046b 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/amsmath-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/amsmath-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/amstext-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/amstext-xetex-bidi.def index 8486d9f3ca4..1b6a1c9442a 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/amstext-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/amstext-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/amsthm-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/amsthm-xetex-bidi.def index 6337b1265af..fdd837be3ab 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/amsthm-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/amsthm-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/array-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/array-xetex-bidi.def index 5fccc45ed53..53d9c12deae 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/array-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/array-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/article-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/article-xetex-bidi.def index 8ab284b544e..6ddb086eed7 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/article-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/article-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,8 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{article-xetex-bidi.def}[2024/12/07 v0.7 bidi adaptations for standard article class for XeTeX engine] +\ProvidesFile{article-xetex-bidi.def}[2025/01/05 v0.9 bidi adaptations for standard article class for XeTeX engine] +\IfClassLoadedT{svmult}{\endinput} \if@titlepage \renewcommand\maketitle{\begin{titlepage}% \let\footnotesize\small @@ -196,9 +197,15 @@ \nobreak \vskip 3ex \@afterheading} -\bidi@patchcmd\@spart\raggedright{% - \if@RTL\raggedleft\else\raggedright\fi -}{}{\bidi@warningnoline{Oops! patching `\string\@spart' failed}} +\ApplyPatchIfPackageLoaded{nameref}{% + \bidi@patchcmd\NR@spart\raggedright{% + \if@RTL\raggedleft\else\raggedright\fi + }{}{\bidi@warningnoline{Oops! patching `\string\NR@spart' failed}}% +}{% + \bidi@patchcmd\@spart\raggedright{% + \if@RTL\raggedleft\else\raggedright\fi + }{}{\bidi@warningnoline{Oops! patching `\string\@spart' failed}}% +} \renewenvironment{thebibliography}[1] {\section*{\refname}% \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}% diff --git a/Master/texmf-dist/tex/xelatex/bidi/artikel1-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/artikel1-xetex-bidi.def index b32d359eff9..6332b54ccc8 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/artikel1-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/artikel1-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/artikel2-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/artikel2-xetex-bidi.def index df423997d4c..0b41f8990e2 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/artikel2-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/artikel2-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/artikel3-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/artikel3-xetex-bidi.def index c2ae3f55062..14048be7bb8 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/artikel3-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/artikel3-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/arydshln-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/arydshln-xetex-bidi.def index c2c47f6944a..7954204e01c 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/arydshln-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/arydshln-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{arydshln-xetex-bidi.def}[2010/08/01 v0.2 bidi adaptations for arydshln package for XeTeX engine] +\ProvidesFile{arydshln-xetex-bidi.def}[2025/01/03 v0.3 bidi adaptations for arydshln package for XeTeX engine] \def\endarray{\adl@endarray \egroup \adl@arrayrestore \if@RTLtab\egroup\endR\egroup\fi\egroup} \def\endtabular{\endarray $\if@RTLtab\endR\fi\egroup} \expandafter\let\csname endtabular*\endcsname\endtabular @@ -125,7 +125,7 @@ \def\adl@class@start{6} \def\adl@class@iiiorvii{3} \fi -\@ifpackageloaded{colortbl}{% +\ApplyPatchCodeToPackage{colortbl}{% \def\adl@inactivate{\adl@org@inactivate \let\CT@setup\adl@CT@setup} \def\adl@activate{\adl@org@activate \let\CT@setup\adl@act@CT@setup \let\@endpbox\adl@org@endpbox} @@ -171,7 +171,7 @@ \prepnext@tok} \let\adl@act@classz\@classz \let\adl@org@classz\@classz -}{} +} \endinput %% %% End of file `arydshln-xetex-bidi.def'. diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamer-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamer-xetex-bidi.def index 064b7e66052..badd1aea95b 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamer-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamer-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerbaseauxtemplates-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerbaseauxtemplates-xetex-bidi.def index c2373267ea6..a0771614da8 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerbaseauxtemplates-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerbaseauxtemplates-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{beamerbaseauxtemplates-xetex-bidi.def}[2024/12/20 v0.4 bidi adaptations for beamerbaseauxtemplates package for XeTeX engine] +\ProvidesFile{beamerbaseauxtemplates-xetex-bidi.def}[2025/01/03 v0.5 bidi adaptations for beamerbaseauxtemplates package for XeTeX engine] \bidi@csundef{beamer@@tmpop@subsection in toc@sections numbered} \bidi@csundef{beamer@@tmpop@subsubsection in toc@sections numbered} @@ -347,14 +347,14 @@ \end{minipage} } -\@ifpackageloaded{caption}{% +\ApplyPatchCodeToPackage{caption}{% \DeclareCaptionFont{beamer@font}{% \usebeamerfont*{caption}% } \SetCaptionDefault{font}{beamer@font} \DeclareCaptionJustification{bidi@beamer@ragged}{\bidi@beamer@ragged} \SetCaptionDefault{justification}{bidi@beamer@ragged} -}{} +} \endinput %% diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerbaseboxes-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerbaseboxes-xetex-bidi.def index 132879f3f42..93036339c4c 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerbaseboxes-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerbaseboxes-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerbasecolor-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerbasecolor-xetex-bidi.def index f050010bc99..b3cf1188b4c 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerbasecolor-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerbasecolor-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerbasecompatibility-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerbasecompatibility-xetex-bidi.def index d20b40806ea..edc9b594cbf 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerbasecompatibility-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerbasecompatibility-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerbaseframecomponents-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerbaseframecomponents-xetex-bidi.def index d49a0aba820..6e58042b902 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerbaseframecomponents-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerbaseframecomponents-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -98,7 +98,7 @@ \usebeamertemplate***{sidebar left}% \vfil% }}% - \@ifpackageloaded{beamerinnerthemeinmargin}{}{% + \ApplyPatchIfPackageLoadedF{beamerinnerthemeinmargin}{% \hskip-\textwidth }% \fi diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerbaseframesize-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerbaseframesize-xetex-bidi.def index 15783375ea7..743d63b5c05 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerbaseframesize-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerbaseframesize-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerbaselocalstructure-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerbaselocalstructure-xetex-bidi.def index df17bdcfaa6..71c2facea1a 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerbaselocalstructure-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerbaselocalstructure-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerbasemisc-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerbasemisc-xetex-bidi.def index f3ca4370977..bbd754fa947 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerbasemisc-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerbasemisc-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerbasenavigation-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerbasenavigation-xetex-bidi.def index d469b764793..12b8b821641 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerbasenavigation-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerbasenavigation-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerbaseoverlay-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerbaseoverlay-xetex-bidi.def index f2fafc289c4..28663b3e622 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerbaseoverlay-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerbaseoverlay-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemecircles-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemecircles-xetex-bidi.def index 646fdf13251..c80425172b5 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemecircles-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemecircles-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemedefault-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemedefault-xetex-bidi.def index 83fd2318178..9ec2d8a8726 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemedefault-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemedefault-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemefocus-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemefocus-xetex-bidi.def index 15dcb692355..7bd232f0c71 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemefocus-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemefocus-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemeinmargin-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemeinmargin-xetex-bidi.def index d1bac306312..21afb2cbec8 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemeinmargin-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemeinmargin-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthememetropolis-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthememetropolis-xetex-bidi.def index 88e43639b7f..9ad3c71e52f 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthememetropolis-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthememetropolis-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemerectangles-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemerectangles-xetex-bidi.def index e2d92784c03..0c893eab074 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemerectangles-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemerectangles-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemerounded-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemerounded-xetex-bidi.def index f5e4c3d41be..b942532a182 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemerounded-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerinnerthemerounded-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemedefault-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemedefault-xetex-bidi.def index a3d74fb2287..8c9b2188994 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemedefault-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemedefault-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemefocus-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemefocus-xetex-bidi.def index 84a05f11dfc..763225d3232 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemefocus-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemefocus-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemeinfolines-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemeinfolines-xetex-bidi.def index 2d8b5addeeb..d60fe4f9914 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemeinfolines-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemeinfolines-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthememetropolis-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthememetropolis-xetex-bidi.def index a92f5d2b77a..6613fb13f2c 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthememetropolis-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthememetropolis-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthememiniframes-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthememiniframes-xetex-bidi.def index ff29d4e3bf5..5ec4461014e 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthememiniframes-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthememiniframes-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemeshadow-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemeshadow-xetex-bidi.def index 28ed525bd82..380008ad76e 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemeshadow-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemeshadow-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesidebar-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesidebar-xetex-bidi.def index f7bb6401432..eb40924d548 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesidebar-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesidebar-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesmoothbars-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesmoothbars-xetex-bidi.def index 711f7be46ad..957d6957119 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesmoothbars-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesmoothbars-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesmoothtree-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesmoothtree-xetex-bidi.def index 7f713ee3cd8..acdcd638029 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesmoothtree-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesmoothtree-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesplit-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesplit-xetex-bidi.def index cd6711cacf5..0985fbf34f2 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesplit-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemesplit-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemetree-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemetree-xetex-bidi.def index 3034a391839..b95c5372485 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemetree-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerouterthemetree-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerthemeHannover-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerthemeHannover-xetex-bidi.def index 4c79e21fe41..97da9445652 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerthemeHannover-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerthemeHannover-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/beamerthemeSingapore-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/beamerthemeSingapore-xetex-bidi.def index 22f1d39d7ce..7cbf2484f14 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/beamerthemeSingapore-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/beamerthemeSingapore-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/doc/xelatex/bidi/bidi-bibitem.pdf b/Master/texmf-dist/tex/xelatex/bidi/bidi-bibitem.pdf Binary files differindex 49191743021..49191743021 100644 --- a/Master/texmf-dist/doc/xelatex/bidi/bidi-bibitem.pdf +++ b/Master/texmf-dist/tex/xelatex/bidi/bidi-bibitem.pdf diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidi-media9.sty b/Master/texmf-dist/tex/xelatex/bidi/bidi-media9.sty index 4d2a12980cc..154733ff4b7 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/bidi-media9.sty +++ b/Master/texmf-dist/tex/xelatex/bidi/bidi-media9.sty @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidi-perpage.sty b/Master/texmf-dist/tex/xelatex/bidi/bidi-perpage.sty index 35b542d6d8e..7552ca11d5f 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/bidi-perpage.sty +++ b/Master/texmf-dist/tex/xelatex/bidi/bidi-perpage.sty @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidi.sty b/Master/texmf-dist/tex/xelatex/bidi/bidi.sty index 7afe905f444..fa79ef18530 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/bidi.sty +++ b/Master/texmf-dist/tex/xelatex/bidi/bidi.sty @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -38,9 +38,9 @@ %% Right brace \} Tilde \~} %% \NeedsTeXFormat{LaTeX2e} -\def\bididate{2024/12/28} -\def\bidi@version{40.8} -\def\bidi@releasename{William Paul Thurston} +\def\bididate{2025/01/06} +\def\bidi@version{41.3} +\def\bidi@releasename{Maryam Mirzakhani} \newcommand*{\bidireleasename}{\bidi@releasename} \ProvidesPackage{bidi}[\bididate\space v\bidi@version\space (Release \bidi@releasename)\space Bidirectional typesetting in plain TeX and LaTeX] @@ -255,7 +255,7 @@ Bidirectional typesetting in plain TeX and LaTeX] } \newcommand*{\@bidi@pdfcustomproperties}{% This is the bidi package, Version \bidi@version\space (Release \bidi@releasename), - Released December 28, 2024. + Released January 6, 2025. } \newcommand*{\bidi@beamer@ragged}{} \@RTLmainfalse @@ -348,7 +348,6 @@ Bidirectional typesetting in plain TeX and LaTeX] \ExplSyntaxOff \@onlypreamble\pdfencryptsetup \input{latex-xetex-bidi.def} -\input{loadingorder-xetex-bidi.def} \pdfencryptsetup{% userpassword,% diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidi.tex b/Master/texmf-dist/tex/xelatex/bidi/bidi.tex index b08f0406267..6b4dd208cb0 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/bidi.tex +++ b/Master/texmf-dist/tex/xelatex/bidi/bidi.tex @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,10 +37,10 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\def\bididate{2024/12/28} +\def\bididate{2025/01/06} \catcode`@=11 -\def\bidi@version{40.8} -\def\bidi@releasename{William Paul Thurston} +\def\bidi@version{41.3} +\def\bidi@releasename{Maryam Mirzakhani} \def\bidireleasename{\bidi@releasename} \let \protect \relax \newlinechar`\^^J @@ -154,7 +154,7 @@ } \def\@bidi@pdfcustomproperties{% This is the bidi package, Version \bidi@version\space (Release \bidi@releasename), - Released December 28, 2024. + Released January 6, 2025. } \def\bidi@pdfm@mark{% \special{pdf:% diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidi2in1.sty b/Master/texmf-dist/tex/xelatex/bidi/bidi2in1.sty index 2718fcd5d6e..f93c8d709d3 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/bidi2in1.sty +++ b/Master/texmf-dist/tex/xelatex/bidi/bidi2in1.sty @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidicode.sty b/Master/texmf-dist/tex/xelatex/bidi/bidicode.sty index 983fad42f7f..dde3a35ac3a 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/bidicode.sty +++ b/Master/texmf-dist/tex/xelatex/bidi/bidicode.sty @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidiftnxtra.sty b/Master/texmf-dist/tex/xelatex/bidi/bidiftnxtra.sty index 13e65f58a29..b9babbacc81 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/bidiftnxtra.sty +++ b/Master/texmf-dist/tex/xelatex/bidi/bidiftnxtra.sty @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidimoderncv.cls b/Master/texmf-dist/tex/xelatex/bidi/bidimoderncv.cls index 289ebb6dfbf..aef4040a5f9 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/bidimoderncv.cls +++ b/Master/texmf-dist/tex/xelatex/bidi/bidimoderncv.cls @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidipoem.sty b/Master/texmf-dist/tex/xelatex/bidi/bidipoem.sty index 2462d368f28..92351f4ab1e 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/bidipoem.sty +++ b/Master/texmf-dist/tex/xelatex/bidi/bidipoem.sty @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/biditools.sty b/Master/texmf-dist/tex/xelatex/bidi/biditools.sty index 21e39381db5..19a73c33abf 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/biditools.sty +++ b/Master/texmf-dist/tex/xelatex/bidi/biditools.sty @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -38,7 +38,7 @@ %% Right brace \} Tilde \~} %% \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{biditools}[2024/12/07 v2.4 Programming tools for bidi package] +\ProvidesPackage{biditools}[2025/01/03 v2.6 Programming tools for bidi package] \providecommand{\@bidi@saveprimitive}[2]{\begingroup\escapechar`\\\relax \edef\@tempa{\string#1}\edef\@tempb{\meaning#1}% \ifx\@tempa\@tempb \global\let#2#1% @@ -124,12 +124,6 @@ Old form `\string#1' should be \string\begin{\expandafter\@gobble\string#1}% ill-advised in the old versions of bidi package.% }% } -\def\@tagsextension{clo} -\def\@definitionfileextension{def} -\def\@texfileextension{tex} -\def\@iftagsloaded{\@ifl@aded\@tagsextension} -\def\@ifdefinitionfileloaded{\@ifl@aded\@definitionfileextension} -\def\@iftexfileloaded{\@ifl@aded\@texfileextension} \def\eqnewif#1#2{% \count@\escapechar \escapechar\m@ne \let#1\iffalse @@ -761,14 +755,6 @@ ill-advised in the old versions of bidi package.% \catcode\number`\@=\the\catcode`\@\relax}% \bidi@resrvda} -\newcommand\bidi@isloaded[2][]{ - \expandafter\ifx\csname if@bidi@#2loaded@\endcsname\relax - \expandafter\newif\csname if@bidi@#2loaded@\endcsname - \fi - \@ifpackageloaded{#2} - {\csname @bidi@#2loaded@true\endcsname #1} - {\csname @bidi@#2loaded@false\endcsname}} - \protected\def\bidi@ifscanable#1{% \begingroup \edef\bidi@resrvda{% @@ -1325,435 +1311,270 @@ ill-advised in the old versions of bidi package.% -\renewcommand{\InputIfFileExists}[2]{% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname #1-@bidi@alias\endcsname\relax - \expandafter\@secondoftwo - \else - \bidi@replacefile@msg{\csname #1-@bidi@alias\endcsname}{#1}% - \expandafter\@firstoftwo - \fi - {% - \expandafter\InputIfFileExists\expandafter{\csname - #1-@bidi@alias\endcsname}{#2}% - }% - {\IfFileExists{#1}{% - \bidi@load@hook{before}{#1}% - #2\@addtofilelist{#1}% - \@@input \@filef@und - \bidi@load@hook{after}{#1}% - }}% -} +\ExplSyntaxOn +\NewDocumentCommand \bidi@AfterClass { s m o +m } + { + \IfBooleanTF { #1 } + { + \@ifclassloaded{ #2 } + { #4 } + { + \hook_gput_code:nnn + { file / #2.\@clsextension / after } + { #3 } + { #4 } + } + } + { + \hook_gput_code:nnn { file / #2.\@clsextension / after } { #3 } { #4 } + } + } -\newcommand*{\bidi@@loadwithoptions}{} -\newcommand*{\bidi@loadwithoptions}{} -\let\bidi@loadwithoptions\@loadwithoptions +\seq_new:N \g__biditools_input_file_seq -\renewcommand*{\@loadwithoptions}[3]{% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname #3.#1-@bidi@aliasname\endcsname\relax - \def\bidi@@loadwithoptions{\bidi@loadwithoptions{#1}{#2}{#3}}% - \else - \bidi@replacefile@msg{\csname #3.#1-@bidi@aliasname\endcsname.#1}{#3.#1}% - \def\bidi@@loadwithoptions{% - \@loadwithoptions{#1}{#2}{\csname #3.#1-@bidi@aliasname\endcsname}% - }% - \fi - \bidi@@loadwithoptions -} +\prg_new_protected_conditional:Npnn \__bidi_if_loading:n #1 { T, F, TF } + { + \str_set:Nx \l_tmpa_str { #1 } + \seq_if_in:NxTF \g__biditools_input_file_seq { \str_use:N \l_tmpa_str } + { \prg_return_true: } + { \prg_return_false: } + } -\newcommand*{\bidi@onefilewithoptions}{} -\let\bidi@onefilewithoptions\@onefilewithoptions -\def\@onefilewithoptions#1[#2][#3]#4{% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname #1.#4-@bidi@aliasname\endcsname\relax - \def\bidi@@onefilewithoptions{\bidi@onefilewithoptions{#1}}% - \else - \bidi@replacefile@msg{\csname #1.#4-@bidi@aliasname\endcsname.#4}{#1.#4}% - \edef\bidi@@onefilewithoptions{% - \noexpand\@onefilewithoptions{\csname #1.#4-@bidi@aliasname\endcsname}}% - \fi - \bidi@@onefilewithoptions[{#2}][{#3}]{#4}% - \bidi@load@hook{lateafter}{#1.#4}% -} +\prg_new_protected_conditional:Npnn \bidi_if_class_loaded:n #1 { T, F, TF } + { + \@ifclassloaded { #1 } + { + \__bidi_if_loading:nTF { #1.\@clsextension } + { \prg_return_false: } + { \prg_return_true: } + } + { + \prg_return_false: + } + } -\newcommand*{\bidi@ReplaceInput}[2]{% - \expandafter\edef\csname #1-@bidi@alias\endcsname{#2}% -} +\prg_new_protected_conditional:Npnn \bidi_if_package_loaded:n #1 { T, F, TF } + { + \@ifpackageloaded { #1 } + { + \__bidi_if_loading:nTF { #1.\@pkgextension } + { \prg_return_false: } + { \prg_return_true: } + } + { + \prg_return_false: + } + } -\newcommand*{\bidi@UnReplaceInput}[1]{% - \ifcsname #1-@bidi@alias\endcsname - \expandafter\let\csname #1-@bidi@alias\endcsname\relax - \fi -} +\NewDocumentCommand \bidi@AfterAtEndOfClass { s m o +m } + { + \IfBooleanTF { #1 } + { + \bidi_if_class_loaded:nTF { #2 } + { #4 } + { \hook_gput_code:nnn { class / #2 / after } { #3 } { #4 } } + } + { + \bidi_if_class_loaded:nF + { #2 } + { \hook_gput_code:nnn { class / #2 / after } { #3 } { #4 } } + } + } -\newcommand*{\@bidi@replacefilewithext}[3]{% - \expandafter\edef\csname #1.#3-@bidi@aliasname\endcsname{#2}% - } -\newcommand*{\bidi@ReplacePackage}[2]{% - \@bidi@replacefilewithext{#1}{#2}\@pkgextension -} -\newcommand*{\bidi@ReplaceClass}[2]{% - \@bidi@replacefilewithext{#1}{#2}\@clsextension -} -\newcommand*{\@bidi@unreplacefilewithext}[2]{% - \ifcsname #1.#2-@bidi@aliasname\endcsname - \expandafter\let\csname #1.#2-@bidi@aliasname\endcsname\relax - \fi -} -\newcommand*{\bidi@UnReplacePackage}[1]{% - \@bidi@unreplacefilewithext{#1}\@pkgextension -} -\newcommand*{\bidi@UnReplaceClass}[1]{% - \@bidi@unreplacefilewithext{#1}\@clsextension -} -\newcommand*{\bidi@replacefile@msg}[2]{% - \PackageInfo{biditools}{inputing `#1' instead of `#2'}% -} +\NewDocumentCommand \bidi@AfterPackage { s m o +m } + { + \IfBooleanTF { #1 } + { + \@ifpackageloaded{ #2 } + { #4 } + { + \hook_gput_code:nnn + { file / #2.\@pkgextension / after } + { #3 } + { #4 } + } + } + { + \hook_gput_code:nnn { file / #2.\@pkgextension / after } { #3 } { #4 } + } + } -\newcommand*{\bidi@load@hook}[2]{% - \@ifundefined{#2-@#1}{}{% - \@nameuse{#2-@#1}% - \expandafter\let\csname #2-@#1\endcsname=\relax}} -\newcommand*{\bidi@set@load@hook}[2]{% - \@ifundefined{#2-@#1}{\@namedef{#2-@#1}{}}{}% - \expandafter\g@addto@macro\csname #2-@#1\endcsname} -\newcommand*{\bidi@BeforeFile}{\bidi@set@load@hook{before}} -\newcommand*{\bidi@AfterFile}{\bidi@set@load@hook{after}} -\newcommand*{\bidi@BeforeClass}[1]{% - \bidi@set@load@hook{before}{#1.\@clsextension}} -\newcommand*{\bidi@AfterClass}{% - \@ifstar {\@s@bidi@AfterClass}{% - \@ifnextchar +\@@bidi@AfterClass{% - \@ifnextchar !\@@@bidi@AfterClass\@bidi@AfterClass - }% - }% -} +\NewDocumentCommand \bidi@AfterAtEndOfPackage { s m o +m } + { + \IfBooleanTF { #1 } + { + \bidi_if_package_loaded:nTF { #2 } + { #4 } + { \hook_gput_code:nnn { package / #2 / after } { #3 } { #4 } } + } + { + \bidi_if_package_loaded:nF + { #2 } + { \hook_gput_code:nnn { package / #2 / after } { #3 } { #4 } } + } + } -\newcommand*{\@@@bidi@AfterClass}[2]{% - \begingroup\ifx\csname #2.\@clsextension-h@@k\endcsname\relax - \aftergroup\@s@bidi@AfterClass - \else - \aftergroup\bidi@AfterAtEndOfClass - \fi - \endgroup{#2}% -} +\clist_new:N \l__biditools_package_clist +\msg_new:nnn { biditools } { cannot-prevent-for-already-loaded-package } + { + Can~not~prevent~package~`#1'~from~being~loaded,~ + since~it~has~been~loaded~already~before~line~\msg_line_number: + } +\clist_new:N \g__biditools_prevent_clist + +\NewDocumentCommand \bidi@PreventPackageFromLoading { s +o m } + { + \clist_set:Nx \l__biditools_package_clist { #3 } + \clist_map_inline:Nn \l__biditools_package_clist + { + \@ifpackageloaded { ##1 } + { + \IfBooleanTF { #1 } { \msg_info:nnn } { \msg_warning:nnn } + { biditools } { cannot-prevent-for-already-loaded-package } { ##1 } + } + { + \clist_if_in:NnF \g__biditools_prevent_clist { ##1 } + { \clist_gput_right:Nn \g__biditools_prevent_clist { ##1 } } + \tl_if_exist:cF { g__biditools_exclude_package_##1_tl } + { + \tl_new:c { g__biditools_exclude_package_##1_tl } + } + \IfValueT { #2 } + { + \tl_gput_right:cn { g__biditools_exclude_package_##1_tl } { #2 } + } + \disable@package@load { ##1 } + { \tl_use:c { g__biditools_exclude_package_##1_tl } } + } + } + \clist_clear:N \l__biditools_package_clist + } -\newcommand*{\bidi@AfterAtEndOfClass}[1]{% - \bidi@set@load@hook{lateafter}{#1.\@clsextension}} -\newcommand*{\@@bidi@AfterClass}[2]{% - \begingroup - \expandafter\ifx\csname #2.\@clsextension-h@@k\endcsname\relax - \aftergroup\@s@bidi@AfterClass - \else - \aftergroup\@bidi@AfterClass - \fi - \endgroup{#2}% -} +\NewDocumentCommand \bidi@ResetPreventPackageFromLoading {} + { + \clist_map_function:NN \g__biditools_prevent_clist \reenable@package@load + \clist_gclear:N \g__biditools_prevent_clist + } -\newcommand*{\@bidi@AfterClass}[1]{% - \bidi@set@load@hook{after}{#1.\@clsextension}} -\newcommand*{\@s@bidi@AfterClass}[1]{% - \begingroup - \@ifclassloaded{#1}{% - \aftergroup\@secondoftwo - }{% - \aftergroup\@bidi@AfterClass - }% - \endgroup - {#1}% -} +\NewDocumentCommand \bidi@StorePreventPackageFromLoading { m } + { \edef #1 { \clist_use:Nn \g__biditools_prevent_clist { , } } } + +\NewDocumentCommand \bidi@UnPreventPackageFromLoading { s m } + { + \clist_set:Nx \l__biditools_package_clist { #2 } + \clist_map_inline:Nn \l__biditools_package_clist + { + \clist_if_in:NnT \g__biditools_prevent_clist { ##1 } + { + \clist_gremove_all:Nn \g__biditools_prevent_clist { ##1 } + \reenable@package@load { ##1 } + \IfBooleanT { #1 } + { \cs_undefine:c { g__biditools_exclude_package_##1_tl } } + } + } + } -\newcommand*{\bidi@BeforePackage}[1]{% - \bidi@set@load@hook{before}{#1.\@pkgextension}} -\newcommand*{\bidi@AfterPackage}{% - \@ifstar {\@s@bidi@AfterPackage}{% - \@ifnextchar +\@@bidi@AfterPackage{% - \@ifnextchar !\@@@bidi@AfterPackage\@bidi@AfterPackage - }% - }% -} -\newcommand*{\@@@bidi@AfterPackage}[2]{% - \begingroup\ifx\csname #2.\@pkgextension-h@@k\endcsname\relax - \aftergroup\@s@bidi@AfterPackage - \else - \aftergroup\bidi@AfterAtEndOfPackage - \fi - \endgroup{#2}% -} -\newcommand*{\bidi@AfterAtEndOfPackage}[1]{% - \bidi@set@load@hook{lateafter}{#1.\@pkgextension}} -\newcommand*{\@@bidi@AfterPackage}[2]{% - \begingroup - \expandafter\ifx\csname #2.\@pkgextension-h@@k\endcsname\relax - \aftergroup\@s@bidi@AfterPackage - \else - \aftergroup\@bidi@AfterPackage - \fi - \endgroup{#2}% -} -\newcommand*{\@bidi@AfterPackage}[1]{% - \bidi@set@load@hook{after}{#1.\@pkgextension}} -\newcommand*{\@s@bidi@AfterPackage}[1]{% - \begingroup - \@ifpackageloaded{#1}{% - \aftergroup\@secondoftwo - }{% - \aftergroup\@bidi@AfterPackage - }% - \endgroup - {#1}% -} +\NewDocumentCommand \bidi@BeforeClosingMainAux { o m } + { + \hook_gput_code:nnn { enddocument / afterlastpage } { #1 } + { + \debug_suspend: + \RenewDocumentCommand \bidi@BeforeClosingMainAux { m } { ##1 } + \cs_set_eq:NN \__biditools_protected@write:Nnn \protected@write + \cs_set_eq:NN \protected@write \bidi@protected@immediate@write + #2 + \cs_set_eq:NN \protected@write \__biditools_protected@write:Nnn + \debug_resume: + } + } -\newcommand*{\bidi@excludedpackages}{} -\let\bidi@excludedpackages\@empty -\newcommand*{\bidi@saved@RequirePackage}{} -\newcommand*{\bidi@PreventPackageFromLoading}{% - \@ifstar{\@bidi@PreventPackageFromLoading\PackageInfo}% - {\@bidi@PreventPackageFromLoading\PackageWarning}% -} -\newcommand*{\@bidi@PreventPackageFromLoading}[1]{% - \@ifnextchar [%] - {\@@bidi@PreventPackageFromLoading#1}{\@@bidi@PreventPackageFromLoading#1[]}% -} -\newcommand*{\@@bidi@PreventPackageFromLoading}{} - -\def\@@bidi@PreventPackageFromLoading#1[#2]#3{% - \edef\reserved@b{\zap@space#3 \@empty}% - \ifx \reserved@b\@empty - #1{biditools}{% - \string\bidi@PreventPackageFromLoading\space with empty packages\MessageBreak - argument ignored% - }% - \else - \ifx\bidi@excludedpackages\@empty - \let\bidi@saved@RequirePackage\RequirePackage - \let\RequirePackage\bidi@RequirePackage - \def\reserved@a##1##{% - \@latex@error - {\noexpand \usepackage before \string\documentclass}% - {\noexpand \usepackage may only appear in the document - preamble, i.e.,\MessageBreak - between \noexpand\documentclass and - \string\begin{document}.}% - \@gobble}% - \ifx\reserved@a\usepackage\else - \ifx\usepackage\bidi@saved@RequirePackage\else - \PackageWarning{biditools}{% - Maybe serious problem: unexpected definition of\MessageBreak - \string\usepackage - }% - \fi - \let\usepackage\RequirePackage - \fi - \fi - \expandafter\@for \expandafter\reserved@a\expandafter:\expandafter=% - \reserved@b\do {% - \ifx\reserved@a\@empty - #1{biditools}{% - empty package argument for - \string\bidi@PreventPackageFromLoading\MessageBreak - ignored% - }% - \else - \expandafter\@ifpackageloaded\expandafter{\reserved@a}{% - #1{biditools}{% - package `\reserved@a' already loaded.\MessageBreak - Cannot prevent it from beeing loaded% - }% - }{% - \edef\bidi@excludedpackages{\bidi@excludedpackages,% - \reserved@a}% - \if\relax\detokenize{#2}\relax\else - \@ifundefined{bidi@exclude@package@\reserved@a @do}{% - \@namedef{bidi@exclude@package@\reserved@a @do}{}% - }{}% - \expandafter\def - \csname bidi@exclude@package@\reserved@a - @do\expandafter\expandafter\expandafter\endcsname - \expandafter\expandafter\expandafter{% - \csname bidi@exclude@package@\reserved@a @do\endcsname - #2% - }% - \fi - }% - \fi - }% - \ifx\bidi@excludedpackages\@empty - \bidi@ResetPreventPackageFromLoading - \fi - \fi -} +\NewDocumentCommand \bidi@AfterReadingMainAux { o m } + { + \hook_gput_code:nnn { enddocument / afteraux } { #1 } + { + \debug_suspend: + \RenewDocumentCommand \bidi@AfterReadingMainAux { m } { ##1 } + \cs_set_eq:NN \__biditools_protected@write:Nnn \protected@write + \cs_set_eq:NN \protected@write \bidi@protected@immediate@write + #2 + \cs_set_eq:NN \protected@write \__biditools_protected@write:Nnn + \debug_resume: + } + } -\@onlypreamble\bidi@PreventPackageFromLoading -\newcommand*{\bidi@ResetPreventPackageFromLoading}{% - \let\bidi@excludedpackages\@empty - \ifx\RequirePackage\bidi@RequirePackage - \ifx\usepackage\RequirePackage - \let\usepackage\bidi@saved@RequirePackage - \fi - \let\RequirePackage\bidi@saved@RequirePackage - \fi -} -\@onlypreamble\bidi@ResetPreventPackageFromLoading -\newcommand*{\bidi@StorePreventPackageFromLoading}[1]{% - \let#1\bidi@excludedpackages +\clist_new:N \l__biditools_file_patch_clist + +\NewDocumentCommand \ApplyPatchToFiles { m O{def} O{bidi} } + { + \clist_set:Nx \l__biditools_file_patch_clist { #1 } + \clist_map_inline:Nn \l__biditools_file_patch_clist + { + \ApplyPatchToFile { ##1 } [ #2 ] [ #3 ] + } + \clist_clear:N \l__biditools_file_patch_clist + } + +\clist_new:N \l__biditools_package_patch_clist + +\NewDocumentCommand \ApplyPatchToPackages { m O{bidi} } + { + \clist_set:Nx \l__biditools_package_patch_clist { #1 } + \clist_map_inline:Nn \l__biditools_package_patch_clist + { + \ApplyPatchToPackage { ##1 } [ #2 ] + } + \clist_clear:N \l__biditools_package_patch_clist + } + +\clist_new:N \l__biditools_class_patch_clist + +\NewDocumentCommand \ApplyPatchToClasses { m O{bidi} } + { + \clist_set:Nx \l__biditools_class_patch_clist { #1 } + \clist_map_inline:Nn \l__biditools_class_patch_clist + { + \ApplyPatchToClass { ##1 } [ #2 ] + } + \clist_clear:N \l__biditools_class_patch_clist + } + +\NewDocumentCommand \ApplyPatchToClassesIfPackageLoadedF { m m O{bidi} } + { + \clist_set:Nx \l__biditools_class_patch_clist { #1 } + \clist_map_inline:Nn \l__biditools_class_patch_clist + { + \ApplyPatchToClassIfPackageLoadedF { ##1 } { #2 } [ #3 ] + } + \clist_clear:N \l__biditools_class_patch_clist + } +\ExplSyntaxOff + +\newcommand*{\bidi@ReplaceInput}{\declare@file@substitution} +\newcommand*{\bidi@UnReplaceInput} +{\undeclare@file@substitution} +\newcommand*{\bidi@ReplacePackage}[2]{% + \declare@file@substitution{#1.\@pkgextension}{#2.\@pkgextension}% } -\@onlypreamble\bidi@StorePreventPackageFromLoading -\newcommand*{\bidi@UnPreventPackageFromLoading}{% - \@ifstar {\@tempswatrue\@bidi@UnPreventPackageFromLoading}% - {\@tempswafalse\@bidi@UnPreventPackageFromLoading}% +\newcommand*{\bidi@UnReplacePackage}[1]{% + \undeclare@file@substitution{#1.\@pkgextension}% } - -\newcommand*{\@bidi@UnPreventPackageFromLoading}[1]{% - \edef\reserved@b{\zap@space#1 \@empty}% - \if@tempswa - \@for\reserved@a:=\reserved@b\do {% - \ifx\reserved@a\@empty \else - \ifcsname bidi@exclude@package@\reserved@a @do\endcsname - \expandafter\let - \csname bidi@exclude@package@\reserved@a @do\endcsname - \undefined - \fi - \fi - }% - \fi - \ifcsname bidi@excludedpackages\endcsname - \let\reserved@a\bidi@excludedpackages - \let\bidi@excludedpackages\@empty - \expandafter\@for\expandafter\reserved@c - \expandafter:\expandafter=\reserved@a - \do{% - \ifx\reserved@c\@empty\else - \@expandtwoargs\in@{,\reserved@c,}{,\reserved@b,}% - \ifin@ - \else - \edef\bidi@excludedpackages{% - \bidi@excludedpackages,\reserved@c - }% - \fi - \fi - }% - \ifx\bidi@excludedpackages\@empty\bidi@ResetPreventPackageFromLoading\fi - \fi +\newcommand*{\bidi@ReplaceClass}[2]{% + \declare@file@substitution{#1.\@clsextension}{#2.\@clsextension}% } - -\newcommand*{\bidi@RequirePackage}[2][]{% - \let\reserved@c\@empty - \let\reserved@d\@empty - \edef\reserved@b{\zap@space#2 \@empty}% - \expandafter\@for\expandafter\reserved@b\expandafter:\expandafter=\reserved@b - \do {% - \begingroup - \@tempswatrue - \@for\reserved@a:=\bidi@excludedpackages\do {% - \ifx\reserved@a\reserved@b - \@tempswafalse - \fi - }% - \if@tempswa - \xdef\reserved@c{\reserved@c,\reserved@b}% - \else - \ifx\reserved@b\@empty\else - \PackageInfo{biditools}{Excluding package `\reserved@b'\MessageBreak - from loading}% - \@ifundefined{bidi@exclude@package@\reserved@b @do}{% - }{% - \expandafter\g@addto@macro\expandafter\reserved@d - \csname bidi@exclude@package@\reserved@b @do\endcsname - }% - \fi - \fi - \endgroup - }% - \ifx\reserved@c\@empty - \let\reserved@a\bidi@gobbleopt - \else - \edef\reserved@a{\noexpand\bidi@saved@RequirePackage[#1]{% - \expandafter\@gobble\reserved@c\@empty}}% - \fi - \expandafter\reserved@d - \reserved@a +\newcommand*{\bidi@UnReplaceClass}[1]{% + \undeclare@file@substitution{#1.\@clsextension}% } - -\newcommand{\bidi@gobbleopt}[1][]{} -\AtEndDocument{% - \let\bidi@saved@checkend=\@checkend - \renewcommand*{\@checkend}[1]{% - \def\reserved@a{#1}\def\reserved@b{document}% - \bidi@saved@checkend{#1}% - \ifx\reserved@a\reserved@b - \let\bidi@saved@clearpage=\clearpage - \renewcommand*{\clearpage}{\bidi@saved@clearpage - \bidi@hook@bcma - \bidi@restore@newpage - \let\clearpage=\bidi@saved@clearpage}% - \fi% - \let\bidi@saved@dofilelist\@dofilelist - \def\@dofilelist{% - \bidi@hook@acma - \let\@dofilelist\bidi@saved@dofilelist - \bidi@saved@dofilelist - }% - }% +\newcommand*{\bidi@BeforeFile}[1]{% + \AddToHook{file/#1/before}% } - -\newcommand*{\bidi@saved@checkend}{} -\newcommand*{\bidi@saved@dofilelist}{} -\newcommand*{\bidi@redefine@newpage}{% - \let\bidi@saved@newpage\newpage - \def\bidi@restore@newpage{% - \renewcommand*{\newpage}{% - \PackageWarningNoLine{% - biditools% - }{% - \string\newpage\space at main aux file!\MessageBreak - You have output material at the main aux file.\MessageBreak - Note, that the \string\bidi@BeforeClosingMainAux\space commands\MessageBreak - are processed before the output from aux file% - }% - \let\newpage\bidi@saved@newpage - \newpage - }% - }% - \renewcommand*{\newpage}{% - \PackageError{% - biditools% - }{% - \string\newpage\space at \string\bidi@BeforeClosingMainAux - }{% - You should never use \string\newpage\space or - \string\clear(double)page or other output material at the\MessageBreak - argument of \string\bidi@BeforeClosingMainAux!\MessageBreak - If you'll continue, the \string\newpage\space will be ignored to - avoid corruption of\MessageBreak - every prior use of \string\bidi@BeforeClosingMainAux. - }% - }% +\newcommand*{\bidi@AfterFile}[1]{% + \AddToHook{file/#1/after}% } - -\newcommand*{\bidi@restore@newpage}{} -\newcommand*{\bidi@hook@bcma}{} -\newcommand*{\bidi@hook@acma}{} -\newcommand*{\bidi@BeforeClosingMainAux}{% - \ifx\bidi@hook@bcma\@empty - \gdef\bidi@hook@bcma{% - \renewcommand*{\bidi@BeforeClosingMainAux}[1]{####1}% - \let\protected@write\bidi@protected@immediate@write - \bidi@redefine@newpage - }% - \fi - \g@addto@macro\bidi@hook@bcma% +\newcommand*{\bidi@BeforeClass}[1]{% + \bidi@BeforeFile{#1.\@clsextension}% } - -\newcommand*{\bidi@AfterReadingMainAux}{% - \ifx\bidi@hook@acma\@empty - \gdef\bidi@hook@acma{% - \renewcommand*{\bidi@AfterReadingMainAux}[1]{####1}% - \let\protected@write\bidi@protected@immediate@write - }% - \fi - \g@addto@macro\bidi@hook@acma% +\newcommand*{\bidi@BeforePackage}[1]{% + \bidi@BeforeFile{#1.\@pkgextension}% } \long\def\bidi@protected@immediate@write#1#2#3{% @@ -1766,79 +1587,126 @@ ill-advised in the old versions of bidi package.% \if@nobreak\ifvmode\nobreak\fi\fi } -\def\bidi@patch@counter{0}% -\if@bidi@csundef{numexpr}{% - \def\bidi@patch@stepcounter{% - \begingroup - \count@\bidi@patch@counter\relax - \advance\count@\@ne\relax - \edef\x{\endgroup - \noexpand\def\noexpand\bidi@patch@counter{\the\count@}% - }% - \x - }% -}{% - \def\bidi@patch@stepcounter{% - \edef\bidi@patch@counter{% - \the\numexpr\bidi@patch@counter+\@ne\relax - }% - }% -} -\def\bidi@patch@list{} -\def\bidi@patch@Add{% - \bidi@appto\bidi@patch@list -} \def\bidi@patch@AfterPackage#1{% \@ifpackageloaded{#1}{% \@firstofone }{% - \@bidi@patch@AfterPackage{#1}% + \AddToHook{package/#1/after}% }% } -\def\@bidi@patch@AfterPackage#1{% - \edef\bidi@patch@temp{#1}% - \bidi@patch@stepcounter - \expandafter\bidi@patch@@AfterPackage - \csname @bidi@patch@\bidi@patch@counter\expandafter\endcsname{% - \bidi@patch@temp + +\def\bidi@patch@AfterFile#1{% + \IfFileLoadedTF{#1}{% + \@firstofone + }{% + \AddToHook{file/#1/after}% }% } -\def\bidi@patch@@AfterPackage#1#2#3{% - \begingroup - \toks@{#3}% - \xdef\bidi@patch@gtemp{% - \noexpand\@ifpackageloaded{#2}{% - \noexpand\let\noexpand#1\noexpand\relax - \the\toks@ - }{}% + +\NewDocumentCommand \ApplyPatchToFile { m O{def} O{bidi} } + { + \bidi@patch@AfterFile{#1.#2}{% + \ifnum\catcode`\@=11 + \input{#1-xetex-#3.def}% + \else + \bidi@storecatcode\@ + \makeatletter + \input{#1-xetex-#3.def}% + \bidi@restorecatcode\@ + \fi }% - \endgroup - \let#1\bidi@patch@gtemp - \bidi@patch@Add#1% - \bidi@patch@try{bidi@AfterPackage}{#2}#1% -} + } -\def\bidi@patch@try#1#2#3{% - \if@bidi@csundef{#1}{}{% - \csname #1\endcsname{#2}{#3}% - }% -} +\NewDocumentCommand \ApplyPatchCodeToFile { m +m O{def} } + { + \bidi@patch@AfterFile{#1.#3}{#2}% + } + +\NewDocumentCommand \ApplyPatchToFilesIfPackageLoadedF { m m O{def} O{bidi} } + { + \AddToHook{begindocument/before}{% + \IfPackageLoadedF{#1}{% + \ApplyPatchToFiles{#2}[#3][#4]% + }% + } + } -\AtBeginDocument{\bidi@patch@list} - -\bidi@AtEndPreamble{\bidi@patch@list}% - -\bidi@AfterEndPreamble{% - \let\bidi@patch@OrgIfPackageLoaded\@ifpackageloaded - \let\bidi@patch@OrgIfPackageLater\@ifpackagelater - \let\bidi@patch@OrgIfClassLoaded\@ifclassloaded - \let\bidi@patch@OrgIfClassLater\@ifclasslater - \bidi@patch@list - \let\@ifpackageloaded\bidi@patch@OrgIfPackageLoaded - \let\@ifpackagelater\bidi@patch@OrgIfPackageLater - \let\@ifclassloaded\bidi@patch@OrgIfClassLoaded - \let\@ifclasslater\bidi@patch@OrgIfClassLater -}% +\NewDocumentCommand \ApplyPatchToClassIfPackageLoadedF { m m O{bidi} } + { + \AddToHook{begindocument/before}{% + \IfPackageLoadedF{#2}{% + \ifnum\catcode`\@=11 + \@ifclassloaded{#1}{% + \input{#1-xetex-#3.def}% + }{}% + \else + \bidi@storecatcode\@ + \makeatletter + \@ifclassloaded{#1}{% + \input{#1-xetex-#3.def}% + }{}% + \bidi@restorecatcode\@ + \fi + }% + } + } + +\NewDocumentCommand \ApplyPatchToPackageIfPackageLoadedF { m m O{bidi} } + { + \AddToHook{begindocument/before}{% + \IfPackageLoadedF{#2}{% + \IfPackageLoadedT{#1}{% + \ifnum\catcode`\@=11 + \input{#1-xetex-#3.def}% + \else + \bidi@storecatcode\@ + \makeatletter + \input{#1-xetex-#3.def}% + \bidi@restorecatcode\@ + \fi + }% + }% + } + } + +\NewDocumentCommand \ApplyPatchIfPackageLoaded { m +m +m } + { + \AddToHook{begindocument/before}{% + \ifnum\catcode`\@=11 + \@ifpackageloaded{#1}{#2}{#3}% + \else + \bidi@storecatcode\@ + \makeatletter + \@ifpackageloaded{#1}{#2}{#3}% + \bidi@restorecatcode\@ + \fi + } + } + +\NewDocumentCommand \ApplyPatchIfPackageLoadedT { m +m } + { + \ApplyPatchIfPackageLoaded{#1}{#2}{}% + } + +\NewDocumentCommand \ApplyPatchIfPackageLoadedF { m +m } + { + \ApplyPatchIfPackageLoaded{#1}{}{#2}% + } + +\NewDocumentCommand \ApplyPatchToPackage { m O{bidi} } + { + \bidi@patch@AfterPackage{#1}{\input{#1-xetex-#2.def}}% + } + +\NewDocumentCommand \ApplyPatchCodeToPackage { m +m } + { + \bidi@patch@AfterPackage{#1}{#2}% + } + +\NewDocumentCommand \ApplyPatchToClass { m O{bidi} } + { + \@ifclassloaded{#1}{\input{#1-xetex-#2.def}}{}% + } \endinput %% %% End of file `biditools.sty'. diff --git a/Master/texmf-dist/tex/xelatex/bidi/biditufte-book.cls b/Master/texmf-dist/tex/xelatex/bidi/biditufte-book.cls index ead51da7eaa..9dc07e71261 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/biditufte-book.cls +++ b/Master/texmf-dist/tex/xelatex/bidi/biditufte-book.cls @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/biditufte-handout.cls b/Master/texmf-dist/tex/xelatex/bidi/biditufte-handout.cls index 86d61a6a442..c6eb3c6e9c2 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/biditufte-handout.cls +++ b/Master/texmf-dist/tex/xelatex/bidi/biditufte-handout.cls @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidituftefloat.sty b/Master/texmf-dist/tex/xelatex/bidi/bidituftefloat.sty index 930049cab0a..d6535bea20d 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/bidituftefloat.sty +++ b/Master/texmf-dist/tex/xelatex/bidi/bidituftefloat.sty @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -38,7 +38,7 @@ %% Right brace \} Tilde \~} %% \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{bidituftefloat}[2017/05/19 v0.2 +\ProvidesPackage{bidituftefloat}[2025/01/03 v0.3 bidi implementation of tufte float] \RequirePackage{xifthen} \newcommand{\@bidituftefloat@pkgname}{bidituftefloat} @@ -64,7 +64,7 @@ bidi implementation of tufte float] \setboolean{@bidituftefloat@twoside}{false}% \setboolean{@bidituftefloat@symmetric}{false}% } -\@ifclassloaded{book}{\ExecuteOptions{twoside}}{} +\IfClassLoadedT{book}{\ExecuteOptions{twoside}} \newboolean{@bidituftefloat@debug} \newcommand*{\@bidituftefloat@caption@justification}{\@bidituftefloat@justification@autodetect} \ProcessOptions diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidituftegeneralstructure.sty b/Master/texmf-dist/tex/xelatex/bidi/bidituftegeneralstructure.sty index 8ddc80caa26..376b22b6653 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/bidituftegeneralstructure.sty +++ b/Master/texmf-dist/tex/xelatex/bidi/bidituftegeneralstructure.sty @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidituftehyperref.sty b/Master/texmf-dist/tex/xelatex/bidi/bidituftehyperref.sty index 73319872f03..8494261d652 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/bidituftehyperref.sty +++ b/Master/texmf-dist/tex/xelatex/bidi/bidituftehyperref.sty @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidituftesidenote.sty b/Master/texmf-dist/tex/xelatex/bidi/bidituftesidenote.sty index 47686737f01..3d7f6e59c17 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/bidituftesidenote.sty +++ b/Master/texmf-dist/tex/xelatex/bidi/bidituftesidenote.sty @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidituftetitle.sty b/Master/texmf-dist/tex/xelatex/bidi/bidituftetitle.sty index cd895c7eb20..fb07996fc5d 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/bidituftetitle.sty +++ b/Master/texmf-dist/tex/xelatex/bidi/bidituftetitle.sty @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/bidituftetoc.sty b/Master/texmf-dist/tex/xelatex/bidi/bidituftetoc.sty index 31a3acdad01..bf2ada6be6d 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/bidituftetoc.sty +++ b/Master/texmf-dist/tex/xelatex/bidi/bidituftetoc.sty @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/boek-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/boek-xetex-bidi.def index e8b6f50f78e..c145747c5b2 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/boek-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/boek-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/boek3-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/boek3-xetex-bidi.def index d13afc44926..b8043bd5730 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/boek3-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/boek3-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/book-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/book-xetex-bidi.def index e8f7b8cb28b..1d75a452f06 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/book-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/book-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{book-xetex-bidi.def}[2017/06/09 v1.0 bidi adaptations for standard book class for XeTeX engine] +\ProvidesFile{book-xetex-bidi.def}[2025/01/03 v1.1 bidi adaptations for standard book class for XeTeX engine] \renewenvironment{theindex} {\if@twocolumn \@restonecolfalse @@ -53,7 +53,7 @@ \parskip\z@ \@plus .3\p@\relax \let\item\@idxitem} {\if@restonecol\onecolumn\else\clearpage\fi} -\@ifclassloaded{bookest}{}{% +\IfClassLoadedF{bookest}{% \if@titlepage \renewcommand\maketitle{\begin{titlepage}% \let\footnotesize\small diff --git a/Master/texmf-dist/tex/xelatex/bidi/bookest-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/bookest-xetex-bidi.def index bfd20bbb062..139fb73a6ac 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/bookest-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/bookest-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/breqn-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/breqn-xetex-bidi.def index 5ec104b4e17..d456302332d 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/breqn-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/breqn-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/cals-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/cals-xetex-bidi.def index 7127424aea6..93c4e12faf2 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/cals-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/cals-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/caption-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/caption-xetex-bidi.def index 6e358e97d52..64387ad9cbd 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/caption-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/caption-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/caption3-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/caption3-xetex-bidi.def index 0b193299bf5..1285b2fd6df 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/caption3-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/caption3-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/color-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/color-xetex-bidi.def index 793d67a2787..ca76148eeb9 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/color-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/color-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/colortbl-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/colortbl-xetex-bidi.def index 895ab38eddf..a3fc3b1b3cb 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/colortbl-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/colortbl-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/combine-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/combine-xetex-bidi.def index 0ca6b54be4f..acde7352a93 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/combine-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/combine-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/crop-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/crop-xetex-bidi.def index a5909a47798..2b9a922b651 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/crop-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/crop-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,9 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{crop-xetex-bidi.def}[2013/04/10 v0.2 bidi adaptations for crop package for XeTeX engine] +\ProvidesFile{crop-xetex-bidi.def}[2025/01/03 v0.3 bidi adaptations for crop package for XeTeX engine] +\IfClassLoadedT{memoir}{\endinput} +\RequirePackage{graphicx} \renewcommand*\CROP@@ulc{% \if@RTLmain% \begin{picture}(0,0) diff --git a/Master/texmf-dist/tex/xelatex/bidi/cuted-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/cuted-xetex-bidi.def index 462f9e795e9..c4f023d571f 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/cuted-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/cuted-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/cutwin-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/cutwin-xetex-bidi.def index c1f421e6609..f5d790dface 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/cutwin-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/cutwin-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/cvthemebidicasual.sty b/Master/texmf-dist/tex/xelatex/bidi/cvthemebidicasual.sty index 503f4c57b1b..a06681f9e26 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/cvthemebidicasual.sty +++ b/Master/texmf-dist/tex/xelatex/bidi/cvthemebidicasual.sty @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/cvthemebidiclassic.sty b/Master/texmf-dist/tex/xelatex/bidi/cvthemebidiclassic.sty index ba6995a90bf..7d4e084a828 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/cvthemebidiclassic.sty +++ b/Master/texmf-dist/tex/xelatex/bidi/cvthemebidiclassic.sty @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/dblfnote-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/dblfnote-xetex-bidi.def index 7cb49b3cb8b..4a383e43706 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/dblfnote-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/dblfnote-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/diagbox-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/diagbox-xetex-bidi.def index 544dded0eef..e2b6a75553f 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/diagbox-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/diagbox-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/draftwatermark-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/draftwatermark-xetex-bidi.def index 851697b1321..82d7765befd 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/draftwatermark-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/draftwatermark-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/empheq-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/empheq-xetex-bidi.def index 0a34b35cd49..4afa0a18026 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/empheq-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/empheq-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/eso-pic-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/eso-pic-xetex-bidi.def index dbe79d28d24..75f420f3327 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/eso-pic-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/eso-pic-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/extarticle-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/extarticle-xetex-bidi.def index d7ed0aebb0b..807c4dd7164 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/extarticle-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/extarticle-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{extarticle-xetex-bidi.def}[2017/06/09 v0.4 bidi adaptations for extarticle class for XeTeX engine] +\ProvidesFile{extarticle-xetex-bidi.def}[2025/01/05 v0.5 bidi adaptations for extarticle class for XeTeX engine] \renewcommand*\l@section[2]{% \ifnum \c@tocdepth >\z@ \addpenalty\@secpenalty @@ -84,14 +84,15 @@ \nobreak \vskip 3ex \@afterheading} - \def\@spart#1{% - {\parindent \z@ \if@RTL\raggedleft\else\raggedright\fi - \interlinepenalty \@M - \normalfont - \huge \bfseries #1\par}% - \nobreak - \vskip 3ex - \@afterheading} +\ApplyPatchIfPackageLoaded{nameref}{% + \bidi@patchcmd\NR@spart\raggedright{% + \if@RTL\raggedleft\else\raggedright\fi + }{}{\bidi@warningnoline{Oops! patching `\string\NR@spart' failed}}% +}{% + \bidi@patchcmd\@spart\raggedright{% + \if@RTL\raggedleft\else\raggedright\fi + }{}{\bidi@warningnoline{Oops! patching `\string\@spart' failed}}% +} \renewenvironment{thebibliography}[1] {\section*{\refname \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}% diff --git a/Master/texmf-dist/tex/xelatex/bidi/extbook-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/extbook-xetex-bidi.def index b85c56b2e13..19d02e4a521 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/extbook-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/extbook-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/extletter-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/extletter-xetex-bidi.def index 5fb61a6b561..ba2c9124c5b 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/extletter-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/extletter-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/extrafootnotefeatures-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/extrafootnotefeatures-xetex-bidi.def index dbf7200b65a..21f02092ddd 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/extrafootnotefeatures-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/extrafootnotefeatures-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{extrafootnotefeatures-xetex-bidi.def}[2023/08/02 v2.6 bidi extra footnote features for XeTeX engine] +\ProvidesFile{extrafootnotefeatures-xetex-bidi.def}[2025/01/03 v2.7 bidi extra footnote features for XeTeX engine] \newdimen\bidi@columnwidth \def\bidi@floathook{% \bidi@columnwidth\columnwidth @@ -260,7 +260,7 @@ \@bidi@after@Hy@hyperfootnotes \@ifstar\bidi@star@footmarkwidth\bidi@normal@footmarkwidth } -\@ifclassloaded{memoir}{\let\plainfootnotes\normalfootnotes}{} +\IfClassLoadedT{memoir}{\let\plainfootnotes\normalfootnotes} \bidi@ensure@newcommand*{\setSingleSpace}[1]{% \def\m@m@singlespace{#1}% \def\m@m@footnote@spacing{#1}% diff --git a/Master/texmf-dist/tex/xelatex/bidi/extreport-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/extreport-xetex-bidi.def index e3b06293a5f..143a0580d54 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/extreport-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/extreport-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/fancybox-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/fancybox-xetex-bidi.def index bb2e08bb190..f88765b9522 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/fancybox-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/fancybox-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/fancyhdr-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/fancyhdr-xetex-bidi.def index 63e74f85f22..50845af8200 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/fancyhdr-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/fancyhdr-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/fix2col-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/fix2col-xetex-bidi.def index 431eab3c97a..2630266e3dc 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/fix2col-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/fix2col-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/fleqn-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/fleqn-xetex-bidi.def index 9f18aa6ddd7..8b0abc8db23 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/fleqn-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/fleqn-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/float-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/float-xetex-bidi.def index edc22b9c49c..df590b78648 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/float-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/float-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/floatrow-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/floatrow-xetex-bidi.def index fdd834293d2..be91a2f1b34 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/floatrow-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/floatrow-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,8 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{floatrow-xetex-bidi.def}[2013/04/08 v0.1 bidi adaptations for floatrow package for XeTeX engine] +\ProvidesFile{floatrow-xetex-bidi.def}[2025/01/03 v0.2 bidi adaptations for floatrow package for XeTeX engine] +\RequirePackage{color} \renewcommand\flnew@within[1]{\@addtoreset{\FB@captype}{#1}% \expandafter\edef\csname the\FB@captype\endcsname{% \expandafter\noexpand\csname diff --git a/Master/texmf-dist/tex/xelatex/bidi/flowfram-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/flowfram-xetex-bidi.def index 84bc5cd5077..35da9eb79a5 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/flowfram-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/flowfram-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{flowfram-xetex-bidi.def}[2018/09/29 v0.5 bidi adaptations for flowfram package for XeTeX engine] +\ProvidesFile{flowfram-xetex-bidi.def}[2025/01/03 v0.6 bidi adaptations for flowfram package for XeTeX engine] \def\@outputdblcol{% \@nxtcol=\c@thisframe \c@curpg=\c@page @@ -154,7 +154,7 @@ {\csname colheight\romannumeral#1\endcsname}{% \expandafter\box\csname column\romannumeral#1\endcsname}% }}} -\@ifclassloaded{book}{% +\IfClassLoadedT{book}{% \renewcommand\theequation {\ifnum \c@chapter>\z@ \thechapter\@SepMark\fi \@arabic\c@equation} \renewcommand \thefigure @@ -166,8 +166,8 @@ \renewcommand\thesubsection {\thesection\@SepMark\@arabic\c@subsection} \renewcommand\thesubsubsection{\thesubsection \@SepMark\@arabic\c@subsubsection} \renewcommand\theparagraph {\thesubsubsection\@SepMark\@arabic\c@paragraph} -\renewcommand\thesubparagraph {\theparagraph\@SepMark\@arabic\c@subparagraph}}{} -\@ifclassloaded{report}{% +\renewcommand\thesubparagraph {\theparagraph\@SepMark\@arabic\c@subparagraph}} +\IfClassLoadedT{report}{% \renewcommand\theequation {\ifnum \c@chapter>\z@ \thechapter\@SepMark\fi \@arabic\c@equation} \renewcommand \thefigure @@ -179,7 +179,7 @@ \renewcommand\thesubsection {\thesection\@SepMark\@arabic\c@subsection} \renewcommand\thesubsubsection{\thesubsection \@SepMark\@arabic\c@subsubsection} \renewcommand\theparagraph {\thesubsubsection\@SepMark\@arabic\c@paragraph} -\renewcommand\thesubparagraph {\theparagraph\@SepMark\@arabic\c@subparagraph}}{} +\renewcommand\thesubparagraph {\theparagraph\@SepMark\@arabic\c@subparagraph}} \renewcommand{\rotateframe}[2]{\if@ttb@rotate \rotatebox{#1}{\if@RTL\beginL\fi#2\if@RTL\endL\fi}% \else diff --git a/Master/texmf-dist/tex/xelatex/bidi/footnote-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/footnote-xetex-bidi.def index 7323749449d..51648b0b0da 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/footnote-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/footnote-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/footnotebackref-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/footnotebackref-xetex-bidi.def index b1dfca0a756..ead112e926f 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/footnotebackref-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/footnotebackref-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/framed-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/framed-xetex-bidi.def index b8ee159a7fe..9ab5fb7c231 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/framed-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/framed-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/ftnright-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/ftnright-xetex-bidi.def index 1bd554675bc..aa03515819b 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/ftnright-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/ftnright-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/geometry-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/geometry-xetex-bidi.def index 982c8519364..584acb289df 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/geometry-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/geometry-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/graphicx-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/graphicx-xetex-bidi.def index 4d8e4546660..e9e83ea36c0 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/graphicx-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/graphicx-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/hvfloat-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/hvfloat-xetex-bidi.def index 75441c4d0e1..d33a304b12a 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/hvfloat-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/hvfloat-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/hyperref-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/hyperref-xetex-bidi.def index f4819d626b5..62a6dc7d543 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/hyperref-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/hyperref-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{hyperref-xetex-bidi.def}[2018/11/11 v1.1 bidi adaptations for hyperref package for XeTeX engine] +\ProvidesFile{hyperref-xetex-bidi.def}[2025/01/05 v1.4 bidi adaptations for hyperref package for XeTeX engine] \AtBeginDocument{% \def\contentsline#1#2#3#4{% \ifx\\#4\\% @@ -187,7 +187,7 @@ \fi }% }% - \@ifpackageloaded{tabularx}{% + \ApplyPatchCodeToPackage{tabularx}{% \let\HyOrg@TX@endtabularx\TX@endtabularx \def\Hy@tabularx@hook{% \let\@footnotetext\H@@footnotetext @@ -206,9 +206,9 @@ }% \endgroup \let\TX@endtabularx\Hy@gtemp - }{}% - \@ifpackageloaded{longtable}{% - \CheckCommand*{\LT@p@LTRftntext}[1]{% + }% + \ApplyPatchCodeToPackage{longtable}{% + \CheckCommand{\LT@p@LTRftntext}[1]{% \edef\@tempa{% \the\LT@p@ftn \noexpand\LTRfootnotetext[\the\c@footnote]% @@ -246,7 +246,7 @@ \fi }% }% - \CheckCommand*{\LT@p@RTLftntext}[1]{% + \CheckCommand{\LT@p@RTLftntext}[1]{% \edef\@tempa{% \the\LT@p@ftn \noexpand\RTLfootnotetext[\the\c@footnote]% @@ -284,8 +284,8 @@ \fi }% }% - }{}% - \@ifpackageloaded{bidipoem}{% + }% + \ApplyPatchCodeToPackage{bidipoem}{% \long\def\bidipoem@p@ftntext#1{% \edef\@tempx{% \the\bidipoem@p@ftn @@ -379,7 +379,7 @@ \fi }% }% - }{}% + }% \let\HyOrg@maketitle\maketitle \def\maketitle{% \let\Hy@saved@footnotemark\@footnotemark @@ -584,37 +584,6 @@ \def\XeTeX{Xe\TeX}% \def\XeLaTeX{Xe\LaTeX}% } -\@ifpackageloaded{longtable}{% - \begingroup - \def\y{\LT@array}% - \@ifundefined{scr@LT@array}{% - \@ifundefined{adl@LT@array}{}{\def\y{\adl@LT@array}}% - }{\def\y{\scr@LT@array}}% - \long\def\x\refstepcounter#1#2\@sharp#3#4\@nil{% - \expandafter\endgroup - \expandafter\def\y[##1]##2{% - \H@refstepcounter{#1}% - \hyper@makecurrent{table}% - \let\Hy@LT@currentHref\@currentHref - #2\@sharp#####4% - }% - }% - \expandafter\expandafter\expandafter\x\y[{#1}]{#2}\@nil - \begingroup - \def\x#1\ifvoid\LT@foot#2\fi#3\@nil{% - \endgroup - \def\LT@start{% - #1% - \ifvoid\LT@foot#2\fi - \let\@currentHref\Hy@LT@currentHref - \Hy@raisedlink{% - \hyper@anchorstart{\@currentHref}\hyper@anchorend - }% - #3% - }% - }% - \expandafter\x\LT@start\@nil -}{} \bidi@patchcmd\@TextField{% \@pdfm@mark }{% diff --git a/Master/texmf-dist/tex/xelatex/bidi/imsproc-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/imsproc-xetex-bidi.def index d0ccadc5dde..7c326c49f04 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/imsproc-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/imsproc-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/latex-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/latex-xetex-bidi.def index 6c2a6dacba5..6fe64aa9c73 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/latex-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/latex-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{latex-xetex-bidi.def}[2024/12/08 v1.5.1 bidi adaptations for `latex.ltx' for XeTeX engine] +\ProvidesFile{latex-xetex-bidi.def}[2025/01/03 v1.5.2 bidi adaptations for `latex.ltx' for XeTeX engine] \newcommand{\TeXXeTOn}{\TeXXeTstate\@ne} \newcommand{\TeXXeTOff}{\TeXXeTstate\z@} \TeXXeTOn @@ -155,7 +155,7 @@ \let\setLR=\setLTR \let\unsetRL=\setLTR \def\bidi@tabular@RTLcases{\let\@halignto\@empty\@bidi@tabular@RTLcases} -\@ifpackageloaded{array}{% +\ApplyPatchIfPackageLoaded{array}{% \def\@bidi@tabular@RTLcases{\@RTLtabtrue% \leavevmode \hbox \bgroup $\left.\col@sep\tabcolsep \let\d@llarbegin\begingroup @@ -839,7 +839,7 @@ $\@@underline{\hbox{#1}}\m@th$\relax\fi\fi} \let\bidi@saved@leqno=\leqno \def\eqno{\ifnum\predisplaydirection<\z@ \bidi@saved@leqno \else \bidi@saved@eqno \fi} \def\leqno{\ifnum\predisplaydirection<\z@ \bidi@saved@eqno \else \bidi@saved@leqno \fi} -\@ifpackageloaded{amsmath}{}{ +\ApplyPatchIfPackageLoadedF{amsmath}{ \def\@eqnnum{{\normalfont \normalcolor \if@RTL\beginR\fi(\theequation)\if@RTL\endR\fi}} } \input{footnote-xetex-bidi.def} @@ -852,182 +852,163 @@ $\@@underline{\hbox{#1}}\m@th$\relax\fi\fi} \if@bidi@csundef{@idxitem}{}{% \renewcommand\@idxitem{\par\hangindent \if@RTL-\fi40\p@}% } -\@ifpackageloaded{tocbasic}{\input{tocbasic-xetex-bidi.def}}{} -\@ifclassloaded{article}{\@ifclassloaded{svmult}{}{\input{article-xetex-bidi.def}}}{} -\@ifclassloaded{extarticle}{\input{extarticle-xetex-bidi.def}}{} -\@ifclassloaded{artikel1}{\input{artikel1-xetex-bidi.def}}{} -\@ifclassloaded{artikel2}{\input{artikel2-xetex-bidi.def}}{} -\@ifclassloaded{artikel3}{\input{artikel3-xetex-bidi.def}}{} -\@ifclassloaded{amsart}{\input{amsart-xetex-bidi.def}}{} -\@ifclassloaded{beamer}{\input{beamer-xetex-bidi.def}}{} -\@ifclassloaded{letter}{\input{letter-xetex-bidi.def}}{} -\@ifclassloaded{extletter}{\input{extletter-xetex-bidi.def}}{} -\@ifclassloaded{memoir}{\input{memoir-xetex-bidi.def}}{} -\@ifclassloaded{refrep}{\input{refrep-xetex-bidi.def}}{} -\@ifclassloaded{extreport}{\input{extreport-xetex-bidi.def}}{} -\@ifclassloaded{report}{\@ifpackageloaded{flowfram}{}{\input{report-xetex-bidi.def}}}{} -\@ifclassloaded{rapport1}{\input{rapport1-xetex-bidi.def}}{} -\@ifclassloaded{rapport3}{\input{rapport3-xetex-bidi.def}}{} -\@ifclassloaded{scrartcl}{\input{scrartcl-xetex-bidi.def}}{} -\@ifclassloaded{scrbook}{\input{scrbook-xetex-bidi.def}}{} -\@ifclassloaded{scrreprt}{\input{scrreprt-xetex-bidi.def}}{} -\@ifclassloaded{amsbook}{\input{amsbook-xetex-bidi.def}}{} -\@ifclassloaded{extbook}{\input{extbook-xetex-bidi.def}}{} -\@ifclassloaded{boek}{\input{boek-xetex-bidi.def}}{} -\@ifclassloaded{boek3}{\input{boek3-xetex-bidi.def}}{} -\@ifclassloaded{book}{\@ifpackageloaded{flowfram}{}{\input{book-xetex-bidi.def}}}{} -\@ifclassloaded{bookest}{\input{bookest-xetex-bidi.def}}{} -\@ifclassloaded{combine}{\input{combine-xetex-bidi.def}}{} -\@ifclassloaded{imsproc}{\input{imsproc-xetex-bidi.def}}{} -\@ifpackageloaded{amsmath}{}{% -\@iftagsloaded{leqno}{\input{leqno-xetex-bidi.def}}{} -\@iftagsloaded{fleqn}{\input{fleqn-xetex-bidi.def}}{} + +\ApplyPatchToClassesIfPackageLoadedF{% + book, % + report % +}{flowfram} + +\ApplyPatchToPackageIfPackageLoadedF{float}{floatrow} + +\ApplyPatchToFilesIfPackageLoadedF{amsmath}{% + fleqn, % + leqno% +}[clo] + +\ApplyPatchToClasses{% + amsart, % + amsbook, % + article, % + artikel1, % + artikel2, % + artikel3, % + beamer, % + boek, % + boek3, % + bookest, % + combine, % + extbook, % + extletter, % + extarticle, % + extreport, % + imsproc, % + letter, % + memoir, % + rapport1, % + rapport3, % + refrep, % + scrartcl, % + scrbook, % + scrreprt % } -\@ifpackageloaded{mathtools}{% - \RequirePackage{graphicx}% - \input{mathtools-xetex-bidi.def}% - }{} -\@ifpackageloaded{crop}{\RequirePackage{graphicx}}{} -\@ifpackageloaded{lscape}{\RequirePackage{graphicx}}{} -\@ifpackageloaded{sidecap}{\RequirePackage{ragged2e}}{} -\@ifpackageloaded{floatrow}{\RequirePackage{color}}{} -\@ifpackageloaded{algorithm2e}{\input{algorithm2e-xetex-bidi.def}}{} -\@ifpackagewith{algorithm2e}{algonl}{% -\renewcommand{\theAlgoLine}{\expandafter\csname the\algocf@float\endcsname\@SepMark\arabic{AlgoLine}}% -}{} -\@ifpackagewith{algorithm2e}{algopart}{\renewcommand{\algocf@within}{part}}{} -\@ifpackagewith{algorithm2e}{algochapter}{\renewcommand{\algocf@within}{chapter}}{} -\@ifpackagewith{algorithm2e}{algosection}{\renewcommand{\algocf@within}{section}}{} -\@ifpackageloaded{amsmath}{\input{amsmath-xetex-bidi.def}}{} -\@ifpackageloaded{amstext}{\input{amstext-xetex-bidi.def}}{} -\@ifpackageloaded{amsthm}{\input{amsthm-xetex-bidi.def}}{} -\@ifpackageloaded{breqn}{\input{breqn-xetex-bidi.def}}{} -\@ifpackageloaded{cals}{\input{cals-xetex-bidi.def}}{} -\@ifpackageloaded{caption}{\input{caption-xetex-bidi.def}}{} -\@ifpackageloaded{caption3}{\input{caption3-xetex-bidi.def}}{} -\@ifpackageloaded{floatrow}{\input{floatrow-xetex-bidi.def}}{} -\@ifpackageloaded{crop}{\@ifclassloaded{memoir}{}{\input{crop-xetex-bidi.def}}}{} -\@ifpackageloaded{color}{\input{color-xetex-bidi.def}}{} -\@ifpackageloaded{cutwin}{\input{cutwin-xetex-bidi.def}}{} -\@ifpackageloaded{cuted}{\input{cuted-xetex-bidi.def}}{} -\@ifpackageloaded{xcolor}{\input{xcolor-xetex-bidi.def}}{} -\@ifpackageloaded{colortbl}{\input{colortbl-xetex-bidi.def}}{} -\@ifpackageloaded{float}{\@ifpackageloaded{floatrow}{}{\input{float-xetex-bidi.def}}}{} -\@ifpackageloaded{flowfram}{\input{flowfram-xetex-bidi.def}}{} -\@ifpackageloaded{xltxtra}{\input{xltxtra-xetex-bidi.def}}{} -\@ifpackageloaded{wrapfig}{\input{wrapfig-xetex-bidi.def}}{} -\@ifpackageloaded{graphicx}{\input{graphicx-xetex-bidi.def}}{} -\@ifpackageloaded{geometry}{\input{geometry-xetex-bidi.def}}{} -\@ifpackageloaded{hvfloat}{\input{hvfloat-xetex-bidi.def}}{} -\@ifpackageloaded{ntheorem}{\input{ntheorem-xetex-bidi.def}}{} -\@ifpackageloaded{tabularx}{\input{tabularx-xetex-bidi.def}}{} -\@ifpackageloaded{longtable}{\input{longtable-xetex-bidi.def}}{} -\@ifpackageloaded{lscape}{\input{lscape-xetex-bidi.def}}{} -\@ifpackageloaded{hyperref}{\input{hyperref-xetex-bidi.def}}{} -\@ifpackageloaded{footnotebackref}{\input{footnotebackref-xetex-bidi.def}}{} -\@ifpackageloaded{ntheorem-hyper}{\input{ntheorem-hyper-xetex-bidi.def}}{} -\@ifpackageloaded{fancybox}{\input{fancybox-xetex-bidi.def}}{} -\@ifpackageloaded{fancyhdr}{\input{fancyhdr-xetex-bidi.def}}{} -\@ifpackageloaded{fix2col}{\input{fix2col-xetex-bidi.def}}{} -\@ifpackageloaded{ftnright}{\input{ftnright-xetex-bidi.def}}{} -\@ifpackageloaded{midfloat}{\input{midfloat-xetex-bidi.def}}{} -\@ifpackageloaded{draftwatermark}{\input{draftwatermark-xetex-bidi.def}}{} -\@ifpackageloaded{dblfnote}{\input{dblfnote-xetex-bidi.def}}{} -\@ifpackageloaded{diagbox}{\input{diagbox-xetex-bidi.def}}{} -\@ifpackageloaded{eso-pic}{\input{eso-pic-xetex-bidi.def}}{} -\@ifpackageloaded{empheq}{\input{empheq-xetex-bidi.def}}{} -\@ifpackageloaded{framed}{\input{framed-xetex-bidi.def}}{} -\@ifpackageloaded{overpic}{\input{overpic-xetex-bidi.def}}{} -\@ifpackageloaded{pdfbase}{\input{pdfbase-xetex-bidi.def}}{} -\@ifpackageloaded{pdflscape}{\input{pdflscape-xetex-bidi.def}}{} -\@ifpackageloaded{pdfpages}{\input{pdfpages-xetex-bidi.def}}{} -\@ifpackageloaded{lettrine}{\input{lettrine-xetex-bidi.def}}{} -\@ifpackageloaded{lineno}{\input{lineno-xetex-bidi.def}}{} -\@ifpackageloaded{listings}{\input{listings-xetex-bidi.def}}{} -\@ifpackageloaded{media9}{\RequirePackage{bidi-media9}}{} -\@iftexfileloaded{pstricks}{\input{pstricks-xetex-bidi.def}}{} -\@iftexfileloaded{pgfcorescopes.code}{\input{pgfcorescopes.code-xetex-bidi.def}}{} -\@ifpackageloaded{titlesec}{\input{titlesec-xetex-bidi.def}}{} -\@ifpackageloaded{titletoc}{\input{titletoc-xetex-bidi.def}}{} -\@ifpackageloaded{array}{\input{array-xetex-bidi.def}}{} -\@ifpackageloaded{sidecap}{\input{sidecap-xetex-bidi.def}}{} -\@ifpackagewith{sidecap}{innercaption}{% -\if@RTL \renewcommand*{\SC@FLOAT}[2]{% - \isSC@ODD{{#2}\hspace{\sidecaptionsep}{#1}} {{#1}\hspace{\sidecaptionsep}{#2}}} - \renewcommand*\SC@justify@caption{% - \isSC@ODD{\RaggedRight}{\RaggedLeft}}\else - \renewcommand*{\SC@FLOAT}[2]{% - \isSC@ODD{{#1}\hspace{\sidecaptionsep}{#2}} {{#2}\hspace{\sidecaptionsep}{#1}}} - \renewcommand*\SC@justify@caption{% - \isSC@ODD{\RaggedLeft}{\RaggedRight}}\fi -}{} -\@ifpackagewith{sidecap}{rightcaption}{% - \if@RTL\renewcommand*{\SC@FLOAT}[2]{{#1}\hspace{\sidecaptionsep}{#2}} - \def\SC@justify@caption{\RaggedLeft}\else% - \renewcommand*{\SC@FLOAT}[2]{{#2}\hspace{\sidecaptionsep}{#1}} - \def\SC@justify@caption{\RaggedRight}\fi% -}{} -\@ifpackagewith{sidecap}{leftcaption}{% -\if@RTL \renewcommand*{\SC@FLOAT}[2]{{#2}\hspace{\sidecaptionsep}{#1}} - \def\SC@justify@caption{\RaggedRight}\else% - \renewcommand*{\SC@FLOAT}[2]{{#1}\hspace{\sidecaptionsep}{#2}} - \def\SC@justify@caption{\RaggedLeft}\fi% -}{} -\@ifpackageloaded{soul}{\input{soul-xetex-bidi.def}}{} -\@ifpackageloaded{stabular}{\input{stabular-xetex-bidi.def}}{} -\@ifpackageloaded{subfigure}{\input{subfigure-xetex-bidi.def}}{} -\@ifpackageloaded{arydshln}{\input{arydshln-xetex-bidi.def}}{} -\@ifpackageloaded{mdframed}{\input{mdframed-xetex-bidi.def}}{} -\@ifpackageloaded{multicol}{\input{multicol-xetex-bidi.def}}{} -\@ifpackageloaded{adjmulticol}{\input{adjmulticol-xetex-bidi.def}}{} -\@ifpackageloaded{multienum}{\input{multienum-xetex-bidi.def}}{} -\@ifpackageloaded{natbib}{\input{natbib-xetex-bidi.def}}{} -\@ifpackageloaded{newfloat}{\input{newfloat-xetex-bidi.def}}{} -\@ifpackageloaded{nicematrix}{\input{nicematrix-xetex-bidi.def}}{} -\@ifpackageloaded{minitoc}{\input{minitoc-xetex-bidi.def}}{} -\@ifpackageloaded{pgfsys}{\input{pgfsys.code-xetex-bidi.def}}{} -\@ifpackageloaded{picinpar}{\input{picinpar-xetex-bidi.def}}{} -\@ifpackageloaded{quotchap}{\input{quotchap-xetex-bidi.def}}{} -\@ifpackageloaded{ragged2e}{\input{ragged2e-xetex-bidi.def}}{} -\@ifpackageloaded{rotating}{\input{rotating-xetex-bidi.def}}{} -\@ifpackageloaded{tabls}{\input{tabls-xetex-bidi.def}}{} -\@ifpackageloaded{tabulary}{\input{tabulary-xetex-bidi.def}}{} -\@ifpackageloaded{tcolorbox}{\input{tcolorbox-xetex-bidi.def}}{} -\@ifpackageloaded{tocstyle}{\input{tocstyle-xetex-bidi.def}}{} -\@ifpackageloaded{tocbibind}{\@ifclassloaded{memoir}{}{\input{tocbibind-xetex-bidi.def}}}{} -\@ifpackageloaded{tocloft}{\@ifclassloaded{memoir}{}{\input{tocloft-xetex-bidi.def}}}{} -\@ifdefinitionfileloaded{tc-xetex}{\input{tc-xetex-bidi.def}}{} -\@ifpackageloaded{todonotes}{\input{todonotes-xetex-bidi.def}}{} -\@ifpackageloaded{beamerbaseauxtemplates}{\input{beamerbaseauxtemplates-xetex-bidi.def}}{} -\@ifpackageloaded{beamerbaseboxes}{\input{beamerbaseboxes-xetex-bidi.def}}{} -\@ifpackageloaded{beamerbasecolor}{\input{beamerbasecolor-xetex-bidi.def}}{} -\@ifpackageloaded{beamerbasecompatibility}{\input{beamerbasecompatibility-xetex-bidi.def}}{} -\@ifpackageloaded{beamerbaseframecomponents}{\input{beamerbaseframecomponents-xetex-bidi.def}}{} -\@ifpackageloaded{beamerbaseframesize}{\input{beamerbaseframesize-xetex-bidi.def}}{} -\@ifpackageloaded{beamerbaselocalstructure}{\input{beamerbaselocalstructure-xetex-bidi.def}}{} -\@ifpackageloaded{beamerbasemisc}{\input{beamerbasemisc-xetex-bidi.def}}{} -\@ifpackageloaded{beamerbasenavigation}{\input{beamerbasenavigation-xetex-bidi.def}}{} -\@ifpackageloaded{beamerbaseoverlay}{\input{beamerbaseoverlay-xetex-bidi.def}}{} -\@ifpackageloaded{beamerinnerthemedefault}{\input{beamerinnerthemedefault-xetex-bidi.def}}{} -\@ifpackageloaded{beamerinnerthemecircles}{\input{beamerinnerthemecircles-xetex-bidi.def}}{} -\@ifpackageloaded{beamerinnerthemefocus}{\input{beamerinnerthemefocus-xetex-bidi.def}}{} -\@ifpackageloaded{beamerinnerthemeinmargin}{\input{beamerinnerthemeinmargin-xetex-bidi.def}}{} -\@ifpackageloaded{beamerinnerthememetropolis}{\input{beamerinnerthememetropolis-xetex-bidi.def}}{} -\@ifpackageloaded{beamerinnerthemerectangles}{\input{beamerinnerthemerectangles-xetex-bidi.def}}{} -\@ifpackageloaded{beamerinnerthemerounded}{\input{beamerinnerthemerounded-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthemedefault}{\input{beamerouterthemedefault-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthemefocus}{\input{beamerouterthemefocus-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthemeinfolines}{\input{beamerouterthemeinfolines-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthememetropolis}{\input{beamerouterthememetropolis-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthememiniframes}{\input{beamerouterthememiniframes-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthemesidebar}{\input{beamerouterthemesidebar-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthemesplit}{\input{beamerouterthemesplit-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthemeshadow}{\input{beamerouterthemeshadow-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthemesmoothbars}{\input{beamerouterthemesmoothbars-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthemesmoothtree}{\input{beamerouterthemesmoothtree-xetex-bidi.def}}{} -\@ifpackageloaded{beamerouterthemetree}{\input{beamerouterthemetree-xetex-bidi.def}}{} -\@ifpackageloaded{beamerthemeHannover}{\input{beamerthemeHannover-xetex-bidi.def}}{} -\@ifpackageloaded{beamerthemeSingapore}{\input{beamerthemeSingapore-xetex-bidi.def}}{} + +\ApplyPatchToPackages{% + adjmulticol, % + algorithm2e, % + amsmath, % + amstext, % + amsthm, % + arydshln, % + array, % + beamerbaseauxtemplates, % + beamerbaseboxes, % + beamerbasecolor, % + beamerbasecompatibility, % + beamerbaseframecomponents, % + beamerbaseframesize, % + beamerbaselocalstructure, % + beamerbasemisc, % + beamerbasenavigation, % + beamerbaseoverlay, % + beamerinnerthemecircles, % + beamerinnerthemedefault, % + beamerinnerthemefocus, % + beamerinnerthemeinmargin, % + beamerinnerthememetropolis, % + beamerinnerthemerectangles, % + beamerinnerthemerounded, % + beamerouterthemedefault, % + beamerouterthemefocus, % + beamerouterthemeinfolines, % + beamerouterthememetropolis, % + beamerouterthememiniframes, % + beamerouterthemesidebar, % + beamerouterthemesplit, % + beamerouterthemeshadow, % + beamerouterthemesmoothbars, % + beamerouterthemesmoothtree, % + beamerouterthemetree, % + beamerthemeHannover, % + beamerthemeSingapore, % + breqn, % + cals, % + caption, % + caption3, % + color, % + colortbl, % + crop, % + cuted, % + cutwin, % + dblfnote, % + diagbox, % + draftwatermark, % + eso-pic, % + empheq, % + fancybox, % + fancyhdr, % + fix2col, % + float, % + floatrow, % + flowfram, % + footnotebackref, % + framed, % + ftnright, % + geometry, % + graphicx, % + hvfloat, % + hyperref, % + lettrine, % + lineno, % + listings, % + longtable, % + lscape, % + mathtools, % + mdframed, % + media9, % + midfloat, % + minitoc, % + multicol, % + multienum, % + natbib, % + newfloat, % + nicematrix, % + ntheorem, % + ntheorem-hyper, % + overpic, % + pdfbase, % + pdflscape, % + pdfpages, % + pgfsys, % + picinpar, % + quotchap, % + ragged2e, % + rotating, % + sidecap, % + soul, % + stabular, % + subfigure, % + tabls, % + tabularx, % + tabulary, % + tcolorbox, % + titlesec, % + titletoc, % + tocbasic, % + tocbibind, % + tocloft, % + tocstyle, % + todonotes, % + wrapfig, % + xcolor, % + xltxtra % +} + +\ApplyPatchToFiles{% + pgfcorescopes.code, % + pstricks % +}[tex] + +\ApplyPatchToFile{tc-xetex} \endinput %% %% End of file `latex-xetex-bidi.def'. diff --git a/Master/texmf-dist/tex/xelatex/bidi/leqno-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/leqno-xetex-bidi.def index b8cc0b59a85..2be5c15735a 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/leqno-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/leqno-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/letter-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/letter-xetex-bidi.def index ce9fccfb1b8..3b067628219 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/letter-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/letter-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/lettrine-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/lettrine-xetex-bidi.def index 497cca9d81f..2c4b7aa52ed 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/lettrine-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/lettrine-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/lineno-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/lineno-xetex-bidi.def index b836f75f80b..b43e42fbb1d 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/lineno-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/lineno-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/listings-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/listings-xetex-bidi.def index 527bfae4ab1..11d8c2fac60 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/listings-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/listings-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{listings-xetex-bidi.def}[2018/09/15 v1.5 bidi adaptations for listings package for XeTeX engine] +\ProvidesFile{listings-xetex-bidi.def}[2025/01/03 v1.6 bidi adaptations for listings package for XeTeX engine] \lst@Key{captiondirection}{textdirection}{% \lstKV@SwitchCases{#1}% {textdirection:\\% @@ -117,7 +117,7 @@ \endgroup% }{}{}% } -\@ifpackageloaded{caption}{% +\ApplyPatchIfPackageLoaded{caption}{% \AtBeginCaption{% \bidi@lst@ensure@caption@script{\@nonlatintrue}{\@nonlatinfalse}% \bidi@lst@ensure@caption@direction{\@RTLfalse}{\@RTLtrue}% diff --git a/Master/texmf-dist/tex/xelatex/bidi/loadingorder-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/loadingorder-xetex-bidi.def deleted file mode 100644 index 8789e618be3..00000000000 --- a/Master/texmf-dist/tex/xelatex/bidi/loadingorder-xetex-bidi.def +++ /dev/null @@ -1,336 +0,0 @@ -%% -%% This is file `loadingorder-xetex-bidi.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% bidi.dtx (with options: `table,loadingorder-xetex-bidi.def') -%% -%% __________________________________________________ -%% Vafa Khalighi -%% -%% Copyright (c) 2007--2025 Vafa Khalighi -%% Copyright (c) 2018--2020 bidi-tex GitHub Organization -%% -%% It may be distributed and/or modified under the LaTeX Project Public License, -%% version 1.3c or higher (your choice). The latest version of -%% this license is at: http://www.latex-project.org/lppl.txt -%% -%% This work is “author-maintained” (as per LPPL maintenance status) -%% by Vafa Khalighi. -%% -%% -%% \CheckSum{58641} -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} -%% -\ProvidesFile{loadingorder-xetex-bidi.def}[2024/12/08 v0.99 making sure that bidi is the last package loaded] -\bidi@isloaded{amsmath} -\bidi@isloaded{amstext} -\bidi@isloaded{amsthm} -\bidi@isloaded{animate} -\bidi@isloaded{breqn} -\bidi@isloaded{cals} -\bidi@isloaded{caption} -\bidi@isloaded{crop} -\bidi@isloaded{cuted} -\bidi@isloaded{cutwin} -\bidi@isloaded{color} -\bidi@isloaded{dblfnote} -\bidi@isloaded{diagbox} -\bidi@isloaded{xcolor} -\bidi@isloaded{colortbl} -\bidi@isloaded{float} -\bidi@isloaded{floatrow} -\bidi@isloaded{flowfram} -\bidi@isloaded{framed} -\bidi@isloaded{ftnright} -\bidi@isloaded{xltxtra} -\bidi@isloaded{xunicode} -\bidi@isloaded{wrapfig} -\bidi@isloaded{graphicx} -\bidi@isloaded{geometry} -\bidi@isloaded{hvfloat} -\bidi@isloaded{mdframed} -\bidi@isloaded{midfloat} -\bidi@isloaded{ntheorem} -\bidi@isloaded{ntheorem-hyper} -\bidi@isloaded{hyperref} -\bidi@isloaded{fancybox} -\bidi@isloaded{fancyhdr} -\bidi@isloaded{fix2col} -\bidi@isloaded{draftwatermark} -\bidi@isloaded{empheq} -\bidi@isloaded{overpic} -\bidi@isloaded{pdfpages} -\bidi@isloaded{listings} -\bidi@isloaded{lettrine} -\bidi@isloaded{lineno} -\bidi@isloaded{media9} -\bidi@isloaded{pstricks} -\bidi@isloaded{pgf} -\bidi@isloaded{picinpar} -\bidi@isloaded{quotchap} -\bidi@isloaded{tikz} -\bidi@isloaded{titlesec} -\bidi@isloaded{titletoc} -\bidi@isloaded{array} -\bidi@isloaded{soul} -\bidi@isloaded{stabular} -\bidi@isloaded{subfig} -\bidi@isloaded{subfigure} -\bidi@isloaded{supertabular} -\bidi@isloaded{xtab} -\bidi@isloaded{longtable} -\bidi@isloaded{arydshln} -\bidi@isloaded{multicol} -\bidi@isloaded{multienum} -\bidi@isloaded{minitoc} -\bidi@isloaded{natbib} -\bidi@isloaded{newfloat} -\bidi@isloaded{ragged2e} -\bidi@isloaded{rotating} -\bidi@isloaded{tabls} -\bidi@isloaded{tabulary} -\bidi@isloaded{tocbasic} -\bidi@isloaded{tocstyle} -\bidi@isloaded{tocbibind} -\bidi@isloaded{fontspec} -\bidi@isloaded{arabxetex} -\bidi@isloaded{polyglossia} -\bidi@isloaded{fancyvrb} -\AtBeginDocument{ - \if@bidi@amsmathloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package amsmath after bidi package. Please load package amsmath before bidi package, and then try to run xelatex on your document again}{}]{amsmath} - \fi% - \if@bidi@amstextloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package amstext after bidi package. Please load package amstext before bidi package, and then try to run xelatex on your document again}{}]{amstext} - \fi% - \if@bidi@amsthmloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package amsthm after bidi package. Please load package amsthm before bidi package, and then try to run xelatex on your document again}{}]{amsthm} - \fi% - \if@bidi@animateloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package animate after bidi package. Please load package animate before bidi package, and then try to run xelatex on your document again}{}]{animate} - \fi% - \if@bidi@breqnloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package breqn after bidi package. Please load package breqn before bidi package, and then try to run xelatex on your document again}{}]{breqn} - \fi% - \if@bidi@calsloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package cals after bidi package. Please load package cals before bidi package, and then try to run xelatex on your document again}{}]{cals} - \fi% - \if@bidi@captionloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package caption after bidi package. Please load package caption before bidi package, and then try to run xelatex on your document again}{}]{caption} - \fi% - \if@bidi@croploaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package crop after bidi package. Please load package crop before bidi package, and then try to run xelatex on your document again}{}]{crop} - \fi% - \if@bidi@colorloaded@\else - \@ifpackageloaded{hyperref}{}{% - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package color after bidi package. Please load package color before bidi package, and then try to run xelatex on your document again}{}]{color}} - \fi% - \if@bidi@cutwinloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package cutwin after bidi package. Please load package cutwin before bidi package, and then try to run xelatex on your document again}{}]{cutwin} - \fi% - \if@bidi@cutedloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package cuted after bidi package. Please load package cuted before bidi package, and then try to run xelatex on your document again}{}]{cuted} - \fi% - \if@bidi@dblfnoteloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package dblfnote after bidi package. Please load package dblfnote before bidi package, and then try to run xelatex on your document again}{}]{dblfnote} - \fi% - \if@bidi@diagboxloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package diagbox after bidi package. Please load package diagbox before bidi package, and then try to run xelatex on your document again}{}]{diagbox} - \fi% - \if@bidi@xcolorloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package xcolor after bidi package. Please load package xcolor before bidi package, and then try to run xelatex on your document again}{}]{xcolor} - \fi% - \if@bidi@colortblloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package colortbl after bidi package. Please load package colortbl before bidi package, and then try to run xelatex on your document again}{}]{colortbl} - \fi% - \if@bidi@floatloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package float after bidi package. Please load package float before bidi package, and then try to run xelatex on your document again}{}]{float} - \fi% - \if@bidi@floatrowloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package floatrow after bidi package. Please load package floatrow before bidi package, and then try to run xelatex on your document again}{}]{floatrow} - \fi% - \if@bidi@flowframloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package flowfram after bidi package. Please load package flowfram before bidi package, and then try to run xelatex on your document again}{}]{flowfram} - \fi% - \if@bidi@framedloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package framed after bidi package. Please load package framed before bidi package, and then try to run xelatex on your document again}{}]{framed} - \fi% - \if@bidi@ftnrightloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package ftnright after bidi package. Please load package ftnright before bidi package, and then try to run xelatex on your document again}{}]{ftnright} - \fi% - \if@bidi@xltxtraloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package xltxtra after bidi package. Please load package xltxtra before bidi package, and then try to run xelatex on your document again}{}]{xltxtra} - \fi% - \if@bidi@xunicodeloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package xunicode after bidi package. Please load package xunicode before bidi package, and then try to run xelatex on your document again}{}]{xunicode} - \fi% - \if@bidi@wrapfigloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package wrapfig after bidi package. Please load package wrapfig before bidi package, and then try to run xelatex on your document again}{}]{wrapfig} - \fi% - \if@bidi@graphicxloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package graphicx after bidi package. Please load package graphicx before bidi package, and then try to run xelatex on your document again}{}]{graphicx} - \fi% - \if@bidi@geometryloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package geometry after bidi package. Please load package geometry before bidi package, and then try to run xelatex on your document again}{}]{geometry} - \fi% - \if@bidi@hvfloatloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package hvfloat after bidi package. Please load package hvfloat before bidi package, and then try to run xelatex on your document again}{}]{hvfloat} - \fi% - \if@bidi@mdframedloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package mdframed after bidi package. Please load package mdframed before bidi package, and then try to run xelatex on your document again}{}]{mdframed} - \fi% - \if@bidi@midfloatloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package midfloat after bidi package. Please load package midfloat before bidi package, and then try to run xelatex on your document again}{}]{midfloat} - \fi% - \if@bidi@ntheoremloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package ntheorem after bidi package. Please load package ntheorem before bidi package, and then try to run xelatex on your document again}{}]{ntheorem} - \fi% - \if@bidi@hyperrefloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package hyperref after bidi package. Please load package hyperref before bidi package, and then try to run xelatex on your document again}{}]{hyperref} - \fi% - \if@bidi@fancyboxloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package fancybox after bidi package. Please load package fancybox before bidi package, and then try to run xelatex on your document again}{}]{fancybox} - \fi% - \if@bidi@fancyhdrloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package fancyhdr after bidi package. Please load package fancyhdr before bidi package, and then try to run xelatex on your document again}{}]{fancyhdr} - \fi% - \if@bidi@draftwatermarkloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package draftwatermark after bidi package. Please load package draftwatermark before bidi package, and then try to run xelatex on your document again}{}]{draftwatermark} - \fi% - \if@bidi@empheqloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package empheq after bidi package. Please load package empheq before bidi package, and then try to run xelatex on your document again}{}]{empheq} - \fi% - \if@bidi@overpicloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package overpic after bidi package. Please load package overpic before bidi package, and then try to run xelatex on your document again}{}]{overpic} - \fi% - \if@bidi@pdfpagesloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package pdfpages after bidi package. Please load package pdfpages before bidi package, and then try to run xelatex on your document again}{}]{pdfpages} - \fi% - \if@bidi@lettrineloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package lettrine after bidi package. Please load package lettrine before bidi package, and then try to run xelatex on your document again}{}]{lettrine} - \fi - \if@bidi@linenoloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package lineno after bidi package. Please load package lineno before bidi package, and then try to run xelatex on your document again}{}]{lineno} - \fi% - \if@bidi@listingsloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package listings after bidi package. Please load package listings before bidi package, and then try to run xelatex on your document again}{}]{listings} - \fi% - \csname if@bidi@media9loaded@\endcsname\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package media9 after bidi package. Please load package media9 before bidi package, and then try to run xelatex on your document again}{}]{media9} - \fi% - \if@bidi@pstricksloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package pstricks after bidi package. Please load package pstricks before bidi package, and then try to run xelatex on your document again}{}]{pstricks} - \fi% - \if@bidi@pgfloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package pgf after bidi package. Please load package pgf before bidi package, and then try to run xelatex on your document again}{}]{pgf} - \fi% - \if@bidi@picinparloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package picinpar after bidi package. Please load package picinpar before bidi package, and then try to run xelatex on your document again}{}]{picinpar} - \fi% - \if@bidi@quotchaploaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package quotchap after bidi package. Please load package quotchap before bidi package, and then try to run xelatex on your document again}{}]{quotchap} - \fi% - \if@bidi@tikzloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package tikz after bidi package. Please load package tikz before bidi package, and then try to run xelatex on your document again}{}]{tikz} - \fi% - \if@bidi@titlesecloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package titlesec after bidi package. Please load package titlesec before bidi package, and then try to run xelatex on your document again}{}]{titlesec} - \fi% - \if@bidi@titletocloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package titletoc after bidi package. Please load package titletoc before bidi package, and then try to run xelatex on your document again}{}]{titletoc} - \fi% - \if@bidi@arrayloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package array after bidi package. Please load package array before bidi package, and then try to run xelatex on your document again}{}]{array} - \fi% - \if@bidi@stabularloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package stabular after bidi package. Please load package stabular before bidi package, and then try to run xelatex on your document again}{}]{stabular} - \fi% - \if@bidi@soulloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package soul after bidi package. Please load package soul before bidi package, and then try to run xelatex on your document again}{}]{soul} - \fi% - \if@bidi@subfigloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package subfig after bidi package. Please load package subfig before bidi package, and then try to run xelatex on your document again}{}]{subfig} - \fi% - \if@bidi@subfigureloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package subfigure after bidi package. Please load package subfigure before bidi package, and then try to run xelatex on your document again}{}]{subfigure} - \fi% - \if@bidi@supertabularloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package supertabular after bidi package. Please load package supertabular before bidi package, and then try to run xelatex on your document again}{}]{supertabular} - \fi% - \if@bidi@xtabloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package xtab after bidi package. Please load package xtab before bidi package, and then try to run xelatex on your document again}{}]{xtab} - \fi% - \if@bidi@longtableloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package longtable after bidi package. Please load package longtable before bidi package, and then try to run xelatex on your document again}{}]{longtable} - \fi% - \if@bidi@arydshlnloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package arydshln after bidi package. Please load package arydshln before bidi package, and then try to run xelatex on your document again}{}]{arydshln} - \fi% - \if@bidi@multicolloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package multicol after bidi package. Please load package multicol before bidi package, and then try to run xelatex on your document again}{}]{multicol} - \fi% - \if@bidi@multienumloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package multienum after bidi package. Please load package multienum before bidi package, and then try to run xelatex on your document again}{}]{multienum} - \fi% - \if@bidi@minitocloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package minitoc after bidi package. Please load package minitoc before bidi package, and then try to run xelatex on your document again}{}]{minitoc} - \fi% - \if@bidi@natbibloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package natbib after bidi package. Please load package natbib before bidi package, and then try to run xelatex on your document again}{}]{natbib} - \fi% - \if@bidi@newfloatloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package newfloat after bidi package. Please load package newfloat before bidi package, and then try to run xelatex on your document again}{}]{newfloat} - \fi% - \csname if@bidi@ragged2eloaded@\endcsname\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package ragged2e after bidi package. Please load package ragged2e before bidi package, and then try to run xelatex on your document again}{}]{ragged2e} - \fi% - \if@bidi@rotatingloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package rotating after bidi package. Please load package rotating before bidi package, and then try to run xelatex on your document again}{}]{rotating} - \fi% - \if@bidi@tablsloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package tabls after bidi package. Please load package tabls before bidi package, and then try to run xelatex on your document again}{}]{tabls} - \fi% - \if@bidi@tabularyloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package tabulary after bidi package. Please load package tabulary before bidi package, and then try to run xelatex on your document again}{}]{tabulary} - \fi% - \if@bidi@tocbasicloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package tocbasic after bidi package. Please load package tocbasic before bidi package, and then try to run xelatex on your document again}{}]{tocbasic} - \fi% - \if@bidi@tocstyleloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package tocstyle after bidi package. Please load package tocstyle before bidi package, and then try to run xelatex on your document again}{}]{tocstyle} - \fi% - \if@bidi@tocbibindloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package tocbibind after bidi package. Please load package tocbibind before bidi package, and then try to run xelatex on your document again}{}]{tocbibind} - \fi% - \if@bidi@fontspecloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package fontspec after bidi package. Please load package fontspec before bidi package, and then try to run xelatex on your document again}{}]{fontspec} - \fi% - \if@bidi@arabxetexloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package arabxetex after bidi package. Please load package arabxetex before bidi package, and then try to run xelatex on your document again}{}]{arabxetex} - \fi% - \if@bidi@polyglossialoaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package polyglossia after bidi package. Please load package polyglossia before bidi package, and then try to run xelatex on your document again}{}]{polyglossia} - \fi% - \if@bidi@fancyvrbloaded@\else - \bidi@isloaded[\PackageError{bidi}{Oops! you have loaded package fancyvrb after bidi package. Please load package fancyvrb before bidi package, and then try to run xelatex on your document again}{}]{fancyvrb} - \fi% -} -\endinput -%% -%% End of file `loadingorder-xetex-bidi.def'. diff --git a/Master/texmf-dist/tex/xelatex/bidi/longtable-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/longtable-xetex-bidi.def index 55dd279fb71..3ee331bc775 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/longtable-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/longtable-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,9 +37,20 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{longtable-xetex-bidi.def}[2022/05/20 v0.6 bidi adaptations for longtable package for XeTeX engine] +\ProvidesFile{longtable-xetex-bidi.def}[2025/01/05 v0.8 bidi adaptations for longtable package for XeTeX engine] +\ExplSyntaxOn \def\LT@array[#1]#2{% - \refstepcounter{table}\stepcounter{LT@tables}% + \UseTaggingSocket{tbl/init} + \tl_if_empty:eTF { \LTcaptype } + { + \tl_gset:Ne \@currentHref {LT@tables.\theHLT@tables} + } + { + \@kernel@refstepcounter{\LTcaptype}\stepcounter{LT@tables} + \tl_gset:Ne \@currentHref {\LTcaptype.\cs_if_exist_use:c {theH\LTcaptype}} + } + \tbl_gzero_row_count: + \UseTaggingSocket{tbl/longtable/init} \if l#1% \if@RTLtab\LTleft\fill \LTright\z@\else\LTleft\z@ \LTright\fill\fi \else\if r#1% @@ -53,7 +64,8 @@ \def\@tabarray{% \let\hline\LT@@hl \LT@@tabarray}% - \let\\\LT@tabularcr\let\tabularnewline\\% + \let\\\LT@tabularcr + \let\tabularnewline\\% \def\newpage{\noalign{\break}}% \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}% \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}% @@ -79,20 +91,42 @@ \let\@sharp##\let\protect\relax \begingroup \@mkpream{#2}% + \tbl_count_table_cols: \xdef\LT@bchunk{% + \tbl_inbetween_rows: \global\advance\c@LT@chunks\@ne \global\LT@rows\z@\setbox\z@\vbox\bgroup \LT@setprevdepth \tabskip\LTleft \noexpand\halign to\hsize\bgroup - \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}% + \tabskip\z@ \@arstrut + \UseTaggingSocket{tbl/row/begin}% + \tbl_init_cell_data_for_row: + \@preamble \tabskip\LTright \cr}% \endgroup \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols \LT@make@row \m@th\let\par\@empty - \everycr{}\lineskip\z@\baselineskip\z@ + \everycr{% + \noalign{% + \__tbl_trace:n {--longtable-->~chunk~row:~ \the\LT@rows \space + row:~ \the\g__tbl_row_int \space + column:~ \the\g__tbl_col_int + } + \tbl_if_row_was_started:T + { + \UseTaggingSocket{tbl/row/end} + \tbl_inbetween_rows: + } + \int_compare:nNnT \LT@rows < \LTchunksize + { \tbl_gincr_row_count: } % next is row about to start + }% + }% + \lineskip\z@\baselineskip\z@ \LT@bchunk} +\ExplSyntaxOff \def\LT@makecaption#1#2#3{% \LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{% + \reset@font \sbox\@tempboxa{\if@RTL\beginR\fi#1{#2: }#3\if@RTL\endR\fi}% \ifdim\wd\@tempboxa>\hsize #1{#2: }#3% @@ -101,7 +135,7 @@ \fi \endgraf\vskip\baselineskip}% \hss}}} -\@ifpackageloaded{caption}{% +\ApplyPatchCodeToPackage{caption}{% \renewcommand\LT@makecaption[3]{% \caption@LT@make{% \caption@LT@settype\LTcaptype @@ -118,22 +152,25 @@ \caption@@make{#2}{#3}\endgraf \caption@make@below \caption@end}}% -}{} +} \def\LT@startpbox#1{% - \bgroup\color@begingroup + \bgroup + \color@begingroup \let\@footnotetext\LT@p@ftntext \let\@LTRfootnotetext\LT@p@LTRftntext \let\@RTLfootnotetext\LT@p@RTLftntext \setlength\hsize{#1}% \@arrayparboxrestore - \vrule \@height \ht\@arstrutbox \@width \z@} -\def\LT@p@LTRftntext#1{% + \everypar{% + \vrule \@height \ht\@arstrutbox \@width \z@ + \everypar{}}% + } +\long\def\LT@p@LTRftntext#1{% \edef\@tempa{\the\LT@p@ftn\noexpand\LTRfootnotetext[\the\c@footnote]}% \global\LT@p@ftn\expandafter{\@tempa{#1}}}% -\def\LT@p@RTLftntext#1{% +\long\def\LT@p@RTLftntext#1{% \edef\@tempa{\the\LT@p@ftn\noexpand\RTLfootnotetext[\the\c@footnote]}% \global\LT@p@ftn\expandafter{\@tempa{#1}}}% - \def\LT@output{% \ifnum\outputpenalty <-\@Mi \ifnum\outputpenalty > -\LT@end@pen @@ -142,21 +179,28 @@ \setbox\z@\vbox{\unvbox\@cclv}% \ifdim \ht\LT@lastfoot>\ht\LT@foot \dimen@\pagegoal + \advance\dimen@\ht\LT@foot \advance\dimen@-\ht\LT@lastfoot \ifdim\dimen@<\ht\z@ \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}% \@makecol \@outputpage + \global\vsize\@colroom \setbox\z@\vbox{\box\LT@head}% \fi \fi - \global\@colroom\@colht - \global\vsize\@colht - \vbox - {\if@RTLtab\hbox\bgroup\beginR\vbox\bgroup\fi\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi\if@RTLtab\egroup\endR\egroup\fi}% + \if@RTLtab\hbox\bgroup\beginR\vbox\bgroup\fi + \unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi + \UseTaggingSocket{tbl/longtable/foot} + \if@RTLtab\egroup\endR\egroup\fi \fi \else - \setbox\@cclv\vbox{\if@RTLtab\hbox\bgroup\beginR\vbox\bgroup\fi\unvbox\@cclv\copy\LT@foot\vss\if@RTLtab\egroup\endR\egroup\fi}% + \setbox\@cclv\vbox{% + \if@RTLtab\hbox\bgroup\beginR\vbox\bgroup\fi + \unvbox\@cclv\copy\LT@foot\vss + \if@RTLtab\egroup\endR\egroup\fi + }% + \UseTaggingSocket{tbl/longtable/foot} \@makecol \@outputpage \global\vsize\@colroom diff --git a/Master/texmf-dist/tex/xelatex/bidi/lscape-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/lscape-xetex-bidi.def index 15f0dcd024c..608af07741f 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/lscape-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/lscape-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,8 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{lscape-xetex-bidi.def}[2022/07/14 v0.2 bidi adaptations for lscape package for XeTeX engine] +\ProvidesFile{lscape-xetex-bidi.def}[2025/01/03 v0.3 bidi adaptations for lscape package for XeTeX engine] +\RequirePackage{graphicx} \bidi@patchcmd{\LS@rot}{\rotatebox{90}{\box\@outputbox}}{% \if@RTL \rotatebox[origin=br]{-90}{\box\@outputbox}% diff --git a/Master/texmf-dist/tex/xelatex/bidi/mathtools-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/mathtools-xetex-bidi.def index 86606b94df1..5f472d08659 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/mathtools-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/mathtools-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,8 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{mathtools-xetex-bidi.def}[2018/01/07 v0.1 bidi adaptations for mathtools package for XeTeX engine] +\ProvidesFile{mathtools-xetex-bidi.def}[2025/01/03 v0.2 bidi adaptations for mathtools package for XeTeX engine] +\RequirePackage{graphicx} \MHInternalSyntaxOn \def\MT_define_tagform:nwnn #1[#2]#3#4{ \@namedef{MT_tagform_#1:n}##1 diff --git a/Master/texmf-dist/tex/xelatex/bidi/mdframed-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/mdframed-xetex-bidi.def index e8608f8f5e3..4645bbf82d9 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/mdframed-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/mdframed-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/media9-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/media9-xetex-bidi.def new file mode 100644 index 00000000000..a8cb57ab503 --- /dev/null +++ b/Master/texmf-dist/tex/xelatex/bidi/media9-xetex-bidi.def @@ -0,0 +1,44 @@ +%% +%% This is file `media9-xetex-bidi.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% bidi.dtx (with options: `table,media9-xetex-bidi.def') +%% +%% __________________________________________________ +%% Vafa Khalighi +%% +%% Copyright (c) 2007--2025 Vafa Khalighi +%% Copyright (c) 2018--2020 bidi-tex GitHub Organization +%% +%% It may be distributed and/or modified under the LaTeX Project Public License, +%% version 1.3c or higher (your choice). The latest version of +%% this license is at: http://www.latex-project.org/lppl.txt +%% +%% This work is “author-maintained” (as per LPPL maintenance status) +%% by Vafa Khalighi. +%% +%% +%% \CheckSum{57382} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\ProvidesFile{media9-xetex-bidi.def}[2025/01/03 v0.1 bidi adaptations for media9 package for XeTeX engine] +\RequirePackage{bidi-media9} +\endinput +%% +%% End of file `media9-xetex-bidi.def'. diff --git a/Master/texmf-dist/tex/xelatex/bidi/memoir-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/memoir-xetex-bidi.def index a0349a0bed8..72c1bbccee6 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/memoir-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/memoir-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{memoir-xetex-bidi.def}[2017/06/09 v0.6 bidi adaptations for memoir class for XeTeX engine] +\ProvidesFile{memoir-xetex-bidi.def}[2025/01/03 v0.7 bidi adaptations for memoir class for XeTeX engine] \renewcommand{\keepthetitle}{% \@bsmtitlempty \global\let\thanks\relax @@ -147,7 +147,7 @@ } % end of the \parbox \fi \vskip\belowcaptionskip} -\@ifpackageloaded{caption}{% +\ApplyPatchCodeToPackage{caption}{% \AtBeginPackage{caption}{ \ClassWarningNoLine{memoir}{% You are using the caption package with the memoir \MessageBreak @@ -188,7 +188,7 @@ \normalsize \@makecaption{\csname fnum@##1\endcsname}{\ignorespaces ##3}\par \endgroup} -}}{} +}} \renewenvironment{thebibliography}[1]{% \bibsection \if@RTL\if@LTRbibitems\@RTLfalse\else\fi\else\if@RTLbibitems\@RTLtrue\else\fi\fi diff --git a/Master/texmf-dist/tex/xelatex/bidi/midfloat-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/midfloat-xetex-bidi.def index 843ae2c4543..a3a04356e3a 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/midfloat-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/midfloat-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/minitoc-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/minitoc-xetex-bidi.def index 77db25b7a37..fe49d597bfe 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/minitoc-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/minitoc-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/multicol-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/multicol-xetex-bidi.def index 8499c5f1c6e..46aefb1a64f 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/multicol-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/multicol-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/multienum-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/multienum-xetex-bidi.def index d2ce75fa7c9..fda8a554854 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/multienum-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/multienum-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/natbib-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/natbib-xetex-bidi.def index f4b251fa859..c0a15bea270 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/natbib-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/natbib-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/newfloat-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/newfloat-xetex-bidi.def index 501eed5a627..9273d5db2d3 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/newfloat-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/newfloat-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/nicematrix-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/nicematrix-xetex-bidi.def index c0760d4034f..e8ca7392554 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/nicematrix-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/nicematrix-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/ntheorem-hyper-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/ntheorem-hyper-xetex-bidi.def index 847294740a2..f6fd8acdc10 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/ntheorem-hyper-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/ntheorem-hyper-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/ntheorem-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/ntheorem-xetex-bidi.def index f937daab8f5..04beda781dd 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/ntheorem-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/ntheorem-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/overpic-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/overpic-xetex-bidi.def index a24b797f842..475dc908561 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/overpic-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/overpic-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/pdfbase-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/pdfbase-xetex-bidi.def index 402b1504368..b1c2c4cc147 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/pdfbase-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/pdfbase-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/pdflscape-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/pdflscape-xetex-bidi.def index 1ed1f56ed46..8f81e19d2a3 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/pdflscape-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/pdflscape-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/pdfpages-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/pdfpages-xetex-bidi.def index 462d44c6b9f..eb27140a097 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/pdfpages-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/pdfpages-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/pgfcorescopes.code-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/pgfcorescopes.code-xetex-bidi.def index 96716a74547..bb432e8fb20 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/pgfcorescopes.code-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/pgfcorescopes.code-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/pgfsys.code-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/pgfsys-xetex-bidi.def index 36c314198fd..66741f475b3 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/pgfsys.code-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/pgfsys-xetex-bidi.def @@ -1,10 +1,10 @@ %% -%% This is file `pgfsys.code-xetex-bidi.def', +%% This is file `pgfsys-xetex-bidi.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% bidi.dtx (with options: `table,pgfsys.code-xetex-bidi.def') +%% bidi.dtx (with options: `table,pgfsys-xetex-bidi.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,11 +37,11 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{pgfsys.code-xetex-bidi.def}[2022/06/01 v0.1 bidi adaptations for pgfsys.code.tex file for XeTeX engine] +\ProvidesFile{pgfsys-xetex-bidi.def}[2025/01/05 v0.1 bidi adaptations for pgfsys package for XeTeX engine] \def\pgfsys@shadingoutsidepgfpicture#1{% \beginL#1\endL% } \endinput %% -%% End of file `pgfsys.code-xetex-bidi.def'. +%% End of file `pgfsys-xetex-bidi.def'. diff --git a/Master/texmf-dist/tex/xelatex/bidi/picinpar-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/picinpar-xetex-bidi.def index 165c24c7c9e..c06f75b0949 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/picinpar-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/picinpar-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/plain-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/plain-xetex-bidi.def index 6bfe47883a7..43441343a5a 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/plain-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/plain-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/pstricks-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/pstricks-xetex-bidi.def index dd9fbd2f9bf..bc64c4b6d6c 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/pstricks-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/pstricks-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/quotchap-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/quotchap-xetex-bidi.def index d8402ed83fa..db95054e8ff 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/quotchap-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/quotchap-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/ragged2e-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/ragged2e-xetex-bidi.def index b9de9c8ccc1..39fa703367d 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/ragged2e-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/ragged2e-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/rapport1-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/rapport1-xetex-bidi.def index 3dba87edf57..57579c5262f 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/rapport1-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/rapport1-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/rapport3-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/rapport3-xetex-bidi.def index aa8d0bcb052..de19973ec88 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/rapport3-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/rapport3-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/refrep-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/refrep-xetex-bidi.def index 37b78a47fdb..3751880d36f 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/refrep-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/refrep-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/report-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/report-xetex-bidi.def index 08003c18368..163afc6222a 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/report-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/report-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/rotating-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/rotating-xetex-bidi.def index 51f9bb747e8..b025e4cbd46 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/rotating-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/rotating-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/scrartcl-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/scrartcl-xetex-bidi.def index 2c8f7ef5c59..1d8698a5aaa 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/scrartcl-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/scrartcl-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/scrbook-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/scrbook-xetex-bidi.def index 5150f049a6d..85b2ab7b34c 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/scrbook-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/scrbook-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/scrreprt-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/scrreprt-xetex-bidi.def index 675fb226bee..4e87a91a0ac 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/scrreprt-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/scrreprt-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/sidecap-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/sidecap-xetex-bidi.def index 454ade19518..038721f81cb 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/sidecap-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/sidecap-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,13 +37,39 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{sidecap-xetex-bidi.def}[2010/08/01 v0.1 bidi adaptations for sidecap package for XeTeX engine] +\ProvidesFile{sidecap-xetex-bidi.def}[2025/01/03 v0.2 bidi adaptations for sidecap package for XeTeX engine] +\RequirePackage{ragged2e} \renewcommand*{\SC@FLOAT}[2]{\if@RTL% \isSC@ODD{{#1}\hspace{\sidecaptionsep}{#2}} {{#2}\hspace{\sidecaptionsep}{#1}}\else% \isSC@ODD{{#2}\hspace{\sidecaptionsep}{#1}} {{#1}\hspace{\sidecaptionsep}{#2}}\fi} \renewcommand*\SC@justify@caption{\if@RTL% \isSC@ODD{\RaggedLeft}{\RaggedRight}\else% \isSC@ODD{\RaggedRight}{\RaggedLeft}\fi} + +\@ifpackagewith{sidecap}{innercaption}{% +\if@RTL \renewcommand*{\SC@FLOAT}[2]{% + \isSC@ODD{{#2}\hspace{\sidecaptionsep}{#1}} {{#1}\hspace{\sidecaptionsep}{#2}}} + \renewcommand*\SC@justify@caption{% + \isSC@ODD{\RaggedRight}{\RaggedLeft}}\else + \renewcommand*{\SC@FLOAT}[2]{% + \isSC@ODD{{#1}\hspace{\sidecaptionsep}{#2}} {{#2}\hspace{\sidecaptionsep}{#1}}} + \renewcommand*\SC@justify@caption{% + \isSC@ODD{\RaggedLeft}{\RaggedRight}}\fi +}{} + +\@ifpackagewith{sidecap}{rightcaption}{% + \if@RTL\renewcommand*{\SC@FLOAT}[2]{{#1}\hspace{\sidecaptionsep}{#2}} + \def\SC@justify@caption{\RaggedLeft}\else% + \renewcommand*{\SC@FLOAT}[2]{{#2}\hspace{\sidecaptionsep}{#1}} + \def\SC@justify@caption{\RaggedRight}\fi% +}{} + +\@ifpackagewith{sidecap}{leftcaption}{% +\if@RTL \renewcommand*{\SC@FLOAT}[2]{{#2}\hspace{\sidecaptionsep}{#1}} + \def\SC@justify@caption{\RaggedRight}\else% + \renewcommand*{\SC@FLOAT}[2]{{#1}\hspace{\sidecaptionsep}{#2}} + \def\SC@justify@caption{\RaggedLeft}\fi% +}{} \endinput %% %% End of file `sidecap-xetex-bidi.def'. diff --git a/Master/texmf-dist/tex/xelatex/bidi/soul-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/soul-xetex-bidi.def index 018ff9531ea..57275b85dc9 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/soul-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/soul-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/stabular-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/stabular-xetex-bidi.def index 1305ab6363f..9cb60881dc8 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/stabular-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/stabular-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/subfigure-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/subfigure-xetex-bidi.def index 27cc4e1869d..64e0309fc27 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/subfigure-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/subfigure-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/tabls-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/tabls-xetex-bidi.def index b0683c01eb2..bb0ab81177f 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/tabls-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/tabls-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/tabularx-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/tabularx-xetex-bidi.def index 3386830a0f3..6ff3ee9340a 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/tabularx-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/tabularx-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/tabulary-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/tabulary-xetex-bidi.def index de6e711a959..ee062a415c3 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/tabulary-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/tabulary-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/tc-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/tc-xetex-bidi.def index d3c38951b31..7dd46f562e3 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/tc-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/tc-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/tcolorbox-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/tcolorbox-xetex-bidi.def index 9a1fad14a2a..86c22f998ce 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/tcolorbox-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/tcolorbox-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/titlesec-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/titlesec-xetex-bidi.def index 0c143e984b6..0897b614b20 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/titlesec-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/titlesec-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/titletoc-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/titletoc-xetex-bidi.def index 72469e89405..52da0af967b 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/titletoc-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/titletoc-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/tocbasic-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/tocbasic-xetex-bidi.def index b3a54424959..19dbddb25ad 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/tocbasic-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/tocbasic-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/tocbibind-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/tocbibind-xetex-bidi.def index 36f5c856d7d..c11e2fe624b 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/tocbibind-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/tocbibind-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,9 +37,10 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{tocbibind-xetex-bidi.def}[2017/06/09 v0.4 bidi adaptations for tocbibind package for XeTeX engine] +\ProvidesFile{tocbibind-xetex-bidi.def}[2025/01/03 v0.5 bidi adaptations for tocbibind package for XeTeX engine] +\IfClassLoadedT{memoir}{\endinput} \if@dotocbib - \@ifpackageloaded{natbib}{}{% natbib not loaded + \ApplyPatchIfPackageLoadedF{natbib}{% natbib not loaded \renewcommand{\bibsection}{\t@cb@bchapsec} \renewenvironment{thebibliography}[1]{% \bibsection @@ -64,9 +65,11 @@ {\@latex@warning{Empty `thebibliography' environment}}% \endlist} +\ApplyPatchCodeToPackage{chapterbib}{% \@ifpackagewith{chapterbib}{sectionbib}% {\renewcommand{\sectionbib}[2]{}}% - {} + {}% + } \fi \if@inltxdoc\else diff --git a/Master/texmf-dist/tex/xelatex/bidi/tocloft-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/tocloft-xetex-bidi.def index b33c7f86014..428ac2f8bd0 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/tocloft-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/tocloft-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,8 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{tocloft-xetex-bidi.def}[2023/08/02 v0.3 bidi adaptations for tocloft package for XeTeX engine] +\ProvidesFile{tocloft-xetex-bidi.def}[2025/01/03 v0.4 bidi adaptations for tocloft package for XeTeX engine] +\IfClassLoadedT{memoir}{\endinput} \renewcommand{\cftpnumalign}{\if@RTL l\else r\fi} \let\cftdot\@SepMark \if@cfthaspart diff --git a/Master/texmf-dist/tex/xelatex/bidi/tocstyle-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/tocstyle-xetex-bidi.def index 3da0ac9cf28..03ff6ef7c4f 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/tocstyle-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/tocstyle-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/todonotes-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/todonotes-xetex-bidi.def index 61835d15456..fc8d50a01ea 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/todonotes-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/todonotes-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/wrapfig-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/wrapfig-xetex-bidi.def index fedbc166545..50ad78cab15 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/wrapfig-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/wrapfig-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/xcolor-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/xcolor-xetex-bidi.def index a5186af494f..4df4c7c360f 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/xcolor-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/xcolor-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/bidi/xltxtra-xetex-bidi.def b/Master/texmf-dist/tex/xelatex/bidi/xltxtra-xetex-bidi.def index 9730ab8b86f..dbd97962521 100644 --- a/Master/texmf-dist/tex/xelatex/bidi/xltxtra-xetex-bidi.def +++ b/Master/texmf-dist/tex/xelatex/bidi/xltxtra-xetex-bidi.def @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{58641} +%% \CheckSum{57382} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/beamerthemehdu.sty b/Master/texmf-dist/tex/xelatex/hduthesis/beamerthemehdu.sty index dda662b5667..2a6cbf03236 100644 --- a/Master/texmf-dist/tex/xelatex/hduthesis/beamerthemehdu.sty +++ b/Master/texmf-dist/tex/xelatex/hduthesis/beamerthemehdu.sty @@ -1,93 +1,66 @@ -%% ***************************************************************************** -%% Copyright 2024 by M.Y. XIA <xiamyphys@gmail.com> * -%% * -%% This work may be distributed and/or modified under the conditions of the * -%% LaTeX Project Public License * -%% * -%% http://www.latex-project.org/lppl.txt * -%% * -%% either version 1.3c of this license or any later version. * -%% * -%% This work has the LPPL maintenance status `maintained'. * -%% * -%% The Current Maintainers of this work is M.Y. XIA * -%% * -%% This work consists of the files hduthesis.cls, * -%% hduthesis-typeset-module.code, * -%% hduthesis-layout-module.code, * -%% hduthesis-bc.config-module.code, * -%% hduthesis-pg.config-module.code, * -%% hduthesis-hdu.l3doc-module.code, * -%% hduthesis-hdu.stationery-module.code, * -%% beamerthemehdu.sty, * -%% and README.md. * -%% available at https://github.com/myhsia/hduthesis * -%% ***************************************************************************** +\ProvidesExplPackage{beamerthemehdu}{\hduthesis@date}{\hduthesis@version} + {hduThesiS~ \text_titlecase:n {beamer} ~Module} + \mode<presentation> -% info keyval -\RequirePackage{keyval,tikz,graphicx} -\usetikzlibrary{arrows,fadings,decorations.pathreplacing} -\tikzset{% - every picture/.append style = {% - line join = round, line cap = round, thick - } -} +\RequirePackage{tikz} +\usetikzlibrary{fadings} \graphicspath { {./figure/}{./figures/}{./image/}{./images/} {./graphics/}{./graphic/}{./pictures/}{./picture/} } -\ExplSyntaxOn - -\keys_define:nn { infoset } +\keys_define:nn { beamerthemehdu / docinfo } { title .tl_set:N = \@title, - subtitle .tl_set:N = \l__infoset_subtitle_tl, + subtitle .tl_set:N = \l__docinfo_subtitle_tl, author .tl_set:N = \@author, date .tl_set:N = \@date, - supervisor.tl_set:N = \l__infoset_supervisor_tl, - reference .tl_set:N = \l__infoset_reference_tl, + supervisor.tl_set:N = \l__docinfo_supervisor_tl, + bibsource .tl_set:N = \l__docinfo_reference_tl, } -\NewDocumentCommand \infoset { m } +\NewDocumentCommand \DocInfo { m } { - \keys_set:nn { infoset } { #1 } + \keys_set:nn { beamerthemehdu / docinfo } { #1 } \title { \large \@title } - \tl_set:Nn \insertshorttitle { \textsc { \l__infoset_subtitle_tl } } + \tl_set:Nn \insertshorttitle { \textsc { \l__docinfo_subtitle_tl } } \author [ \@author ] { \@author - \tl_if_empty:NF \l__infoset_supervisor_tl + \tl_if_empty:NF \l__docinfo_supervisor_tl { \texorpdfstring - { \\[2ex] \small Supervised~by~\l__infoset_supervisor_tl }{} + { \\[2ex] \small Supervised~by~\l__docinfo_supervisor_tl }{} } } \date { \@date } - \tl_if_empty:NF \l__infoset_reference_tl + \tl_if_empty:NTF \l__docinfo_bibsource_tl { - \RequirePackage - [ backend = biber, bibstyle = numeric, citestyle = numeric-comp, - autocite = superscript, sorting = none - ] { biblatex } - \addbibresource { \l__infoset_reference_tl } - \newcommand* \mkbibbracketsuperscript[1] - { \mkbibsuperscript { \mkbibbrackets{#1} } } - \DeclareCiteCommand \supercite [\mkbibbracketsuperscript] + \newcommand* \printbibliography + { + \begin{frame}[t] + \frametitle{Bibliography} + \end{frame} + } + \newcounter {citecount} + \renewcommand*\cite[1] { - \usebibmacro{cite:init} - \let\multicitedelim=\supercitedelim - \let\multicitesubentrydelim=\supercitesubentrydelim - \let\multiciterangedelim=\superciterangedelim - \let\multicitesubentryrangedelim=\supercitesubentryrangedelim - \iffieldundef{prenote}{} - {\BibliographyWarning{Ignoring prenote argument}}% - \iffieldundef{postnote}{} - {\BibliographyWarning{Ignoring postnote argument}} + \refstepcounter{citecount} + \textsuperscript{[\thecitecount]} + } + } + { + \RequirePackage [ backend = bibtex, sorting = none ] { biblatex } + \addbibresource { \l__docinfo_reference_tl } + \let \@printbibliography \printbibliography + \renewcommand* \printbibliography + { + \begin{frame}[t, allowframebreaks]{Bibliography} + \small + \@printbibliography + \end{frame} } - {\usebibmacro{citeindex}\usebibmacro{cite:comp}}{} - {\usebibmacro{cite:dump}} } } @@ -102,82 +75,87 @@ { \tikz [ remember~picture, overlay ] \node [ below~right, yshift = -1em ] at (current~page.north~west) - { \includegraphics [ width = \textwidth/3 ]{ hdubadge.pdf } }; + { \includegraphics [ width = 2\textwidth/7 ]{ hdubadge.pdf } }; } -\ExplSyntaxOff % theme & colors \useoutertheme{infolines} -\useinnertheme[shadow=false]{rounded} +\useinnertheme[shadow = false]{rounded} \definecolor{hdu}{HTML}{214395} \definecolor{hduRed}{HTML}{BF6236} -\usecolortheme[named=hdu]{structure} - -\setbeamercolor*{palette primary}{use=structure,fg=black,bg=structure.fg!40!white} -\setbeamercolor*{palette secondary}{use=structure,fg=white,bg=structure.fg!60!white} -\setbeamercolor*{palette tertiary}{use=structure,fg=white,bg=structure.fg!90!white} - -\setbeamercolor{block title}{use=structure,fg=structure.fg,bg=structure.fg!20!bg} -\setbeamercolor{block title alerted}{use=alerted text,fg=alerted text.fg,bg=alerted text.fg!20!bg} -\setbeamercolor{block title example}{use=example text,fg=example text.fg,bg=example text.fg!20!bg} -\setbeamercolor{block body}{parent=normal text,use=block title,bg=block title.bg!50!bg} -\setbeamercolor{block body alerted}{parent=normal text,use=block title alerted,bg=block title alerted.bg!50!bg} -\setbeamercolor{block body example}{parent=normal text,use=block title example,bg=block title example.bg!50!bg} - -\setbeamertemplate{navigation symbols}{} -\setbeamertemplate{page number in head/foot}{} -\addtobeamertemplate{headline}{}{ - \tikz[remember picture, overlay]{ - \filldraw [hduRed, ultra thick, line cap = butt] (0,0) --++ (\paperwidth*\fpeval{\insertpagenumber-1}/\fpeval{\insertdocumentendpage-1},0); - \draw [white, very thick, yshift = -.6pt] (0,0) --++ (\paperwidth,0); +\usecolortheme[named = hdu]{structure} + +\setbeamercolor*{palette~primary}{use=structure,fg=black,bg=structure.fg!30!white} +\setbeamercolor*{palette~secondary}{use=structure,fg=white,bg=structure.fg!60!white} +\setbeamercolor*{palette~tertiary}{use=structure,fg=white,bg=structure.fg!90!white} + +\setbeamercolor{block~title}{use=structure,fg=structure.fg,bg=structure.fg!20!bg} +\setbeamercolor{block~body}{parent=normal~text,use=block~title,bg=block~title.bg!50!bg} +\addtobeamertemplate{block~begin}{\pgfsetfillopacity{0.8}}{\pgfsetfillopacity{1}} + +\setbeamercolor{block~title~alerted}{use=alerted~text,fg=alerted~text.fg,bg=alerted~text.fg!20!bg} +\setbeamercolor{block~body~alerted}{parent=normal~text,use=block~title~alerted,bg=block~title~alerted.bg!50!bg} +\addtobeamertemplate{block~alerted~begin}{\pgfsetfillopacity{0.8}}{\pgfsetfillopacity{1}} + +\setbeamercolor{block~title~example}{use=example~text,fg=example~text.fg,bg=example~text.fg!20!bg} +\setbeamercolor{block~body~example}{parent=normal~text,use=block~title~example,bg=block~title~example.bg!50!bg} +\addtobeamertemplate{block~example~begin}{\pgfsetfillopacity{0.8}}{\pgfsetfillopacity{1}} + +\addtobeamertemplate{headline}{} + { + \tikz [ remember~picture, overlay ] + { + \filldraw [hduRed, ultra~thick, line~cap = butt] + (0,0) --++ + (\paperwidth * \fp_eval:n + {(\insertpagenumber-1)/(\insertdocumentendpage-1)},0); + \draw [white, very~thick, yshift = -.6pt] (0,0) --++ (\paperwidth,0); + } } -} - -\AtBeginSection[]{ - \begin{frame} - \ifcsname @headlogo\endcsname - \tikz [remember picture, overlay] \node [below right,yshift=-1em] at (current page.north west) {\includegraphics[width=\textwidth/3]{\@headlogo}}; - \fi - \vfill - \usebeamerfont{title}\insertsectionhead\par% - \tikz{ - \draw [hdu!20, ultra thick] (0,0) --++ (2*\linewidth/3,0); - \filldraw [hdu!60, ultra thick, path fading=west] (0,0) --++ (2*\linewidth*\fpeval{\insertframenumber-1}/\fpeval{\inserttotalframenumber-1}/3,0); - } - \vfill - \end{frame} -} - -\addtobeamertemplate{block begin}{\pgfsetfillopacity{0.75}}{\pgfsetfillopacity{1}} -\addtobeamertemplate{block alerted begin}{\pgfsetfillopacity{0.75}}{\pgfsetfillopacity{1}} -\addtobeamertemplate{block example begin}{\pgfsetfillopacity{0.75}}{\pgfsetfillopacity{1}} - -\setbeamercolor{title}{parent=author in head/foot} -\setbeamertemplate{title page}[default][colsep=-4bp,rounded=true] -\usesubitemizeitemtemplate{% - \tiny\raise1.5pt\hbox{\color{beamerstructure}$\blacktriangleright$}% -} -\usesubsubitemizeitemtemplate{% - \tiny\raise1.5pt\hbox{\color{beamerstructure}$\bigstar$}% -} + +\AtBeginSection[] + { + \begin{frame} + \tikz [ remember~picture, overlay ] + \node [ below~right, yshift = -1em ] at (current~page.north~west) + { \includegraphics [ width = 2\textwidth/7 ]{ hdubadge.pdf } }; + \vfill + \usebeamerfont{title} \insertsectionhead \par + \tikz + { + \draw [line~cap = round, hdu!20, ultra~thick] + (0,0) --++ (2\linewidth/3,0); + \filldraw [line~cap = round, hdu!60, ultra~thick, path~fading=west] + (0,0) --++ + (2\linewidth * \fp_eval:n + {(\insertframenumber - 1)/(\inserttotalframenumber - 1)}/3,0); + } + \vfill + \end{frame} + } + +\setbeamercolor{title}{parent=author~in~head/foot} +\setbeamertemplate{title~page}[default][colsep=-4bp,rounded=true] +\usesubitemizeitemtemplate + {\tiny\raise1.5pt\hbox{\color{beamerstructure}$\blacktriangleright$}} +\usesubsubitemizeitemtemplate + { \tiny\raise1.5pt\hbox{\color{beamerstructure}$\bigstar$} } % \setbeamersize{text margin left = 1em, text margin right=1em} % math settings \numberwithin{equation}{section} -\RequirePackage[mono=false]{libertine} \RequirePackage{keytheorems,amssymb,mathtools,physics2,fixdif,derivative,cancel,siunitx,nicematrix} -\renewcommand\qedsymbol{$\color{gray}\blacksquare$} -\usephysicsmodule{ab,ab.braket,diagmat,doubleprod,xmat,ab.legacy,op.legacy} +\renewcommand* \qedsymbol {$\color{gray}\blacksquare$} +\usephysicsmodule{ ab, braket, op.legacy } \RequirePackage[e]{esvect} \let\vec\vv -\def\i{\mathrm i}\def\e{\mathrm e}\def\T{\mathsf T} -\let\leq\leqslant\let\geq\geqslant % Figure settings -\RequirePackage[labelsep=period,figurename=FIG,font=footnotesize]{caption} +\RequirePackage + [ labelsep = period, figurename = \textsc{Fig}, font = footnotesize ]{caption} \RequirePackage{subcaption,booktabs} \captionsetup{belowskip=0pt} -\captionsetup[sub]{font=scriptsize} +\captionsetup[sub]{font = scriptsize} \RequirePackage{anyfontsize} \renewcommand{\raggedright}{\leftskip=0pt \rightskip=0pt plus 0cm} \RequirePackage{ragged2e} @@ -185,4 +163,5 @@ \AtBeginEnvironment{columns}{\vspace*{-.5ex}} \mode<all> -\endinput
\ No newline at end of file + +\endinput diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-bc.config-module.code.tex b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-bc.config-module.code.tex index c404557382b..1ed06c6aa00 100644 --- a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-bc.config-module.code.tex +++ b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-bc.config-module.code.tex @@ -29,7 +29,7 @@ \int_set:Nn \l__hduthesis_grade_int { \int_compare:nNnTF {\c_sys_month_int} < 9 - {\c_sys_year_int} {\int_eval:n {\c_sys_year_int+1}} + {\c_sys_year_int} {\int_eval:n {\c_sys_year_int + 1}} } \cs_new_protected_nopar:Nn \__hduthesis_cover_bc_aux: { diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-hdu.l3doc-module.code.tex b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-hdu.l3doc-module.code.tex index d0d70b9267d..ea8499350c1 100644 --- a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-hdu.l3doc-module.code.tex +++ b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-hdu.l3doc-module.code.tex @@ -98,4 +98,6 @@ \hook_gput_code:nnn { cmd/tableofcontents/after } { . } { \endtitlepage \restoregeometry } +\RequirePackage{minted} + \endinput diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-hdu.stationery-module.code.tex b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-hdu.stationery-module.code.tex index 43fbe1d81a3..09bf33e20af 100644 --- a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-hdu.stationery-module.code.tex +++ b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-hdu.stationery-module.code.tex @@ -12,10 +12,18 @@ } \RequirePackage{ hyperref, geometry, tikz, twemojis, fancyhdr } +\hypersetup{hidelinks} +\urlstyle{same} \NewDocumentCommand \DocInfo { m } { + \tl_clear:N \@author + \tl_clear:N \l__docinfo_mail_tl \keys_set:nn { hdu.stationery / docinfo } {#1} - \hypersetup { hidelinks, pdftitle = \@title, pdfauthor = \@author } + \hypersetup + { + pdftitle = Hangzhou Dianzi University, + pdfsubject = \@title, pdfauthor = \@author + } } \geometry { hmargin = .8in, bottom = .75in, top = 1.95in, footskip = 15.87pt, @@ -52,14 +60,14 @@ Hangzhou,~ Zhejiang~Province,~ 310018,~ P.R.China } \cfoot {} -\rfoot { \small \texttwemoji{1f310}~ www.hdu.edu.cn~ } +\rfoot { \small \texttwemoji{1f310}~ \url{www.hdu.edu.cn}~ } \pagestyle{fancy} \renewcommand* \maketitle { \group_begin: \small - \bool_if:nF - { \tl_if_empty_p:N \@author && \tl_if_empty_p:N \l__docinfo_mail_tl } + \bool_if:nT + { !\tl_if_empty_p:N \@author || !\tl_if_empty_p:N \l__docinfo_mail_tl } { \makebox [ 4em ] [ l ] { \scshape From } } \tl_if_empty:NTF \@author { \@latex@warning@no@line {No \noexpand \author given} } { \@author{}~ } diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-layout-module.code.tex b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-layout-module.code.tex index cfd2e72690a..48779c1ee96 100644 --- a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-layout-module.code.tex +++ b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-layout-module.code.tex @@ -110,7 +110,12 @@ \tl_if_empty:NTF \l__docinfo_bibsource_tl { \newcommand*\printbibliography{\chapter*{参考文献}} - \renewcommand*\cite[1]{\textsuperscript{[##1]}} + \newcounter {citecount} + \renewcommand*\cite[1] + { + \refstepcounter{citecount} + \textsuperscript{[\thecitecount]} + } } { \RequirePackage[sort&compress]{gbt7714} @@ -118,7 +123,7 @@ \dim_set:Nn \bibsep {.35ex} \newcommand*\printbibliography { - \nocite{*} \bibliography { \l__docinfo_bibsource_tl } + \bibliography { \l__docinfo_bibsource_tl } \addcontentsline{toc}{chapter}{参考文献} } } diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-pg.config-module.code.tex b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-pg.config-module.code.tex index 3d48d98931c..cd11c0fccad 100644 --- a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-pg.config-module.code.tex +++ b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-pg.config-module.code.tex @@ -161,49 +161,47 @@ \semilarge 学位论文使用授权说明 \end{center} \par \vspace*{.4\baselineskip} - \begin{spacing}{1.65} - 本人完全了解杭州电子科技大学关于保留和使用学位论文的规定, - 即:研究生在校攻读学位期间论文工作的知识产权单位属杭州电子科技大学。 - 本人保证毕业离校后,发表论文或使用论文工作成果时署名单位仍然为杭州电子科技大学。 - 学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内容, - 可以允许采用影印、缩印或其它复制手段保存论文。(保密论文在解密后遵守此规定) - \par \vspace*{1.25\baselineskip} - \noindent \makebox[.45\linewidth][l] - { - 论文作者签名: - \__hduthesis_signature_process_aux:nnn {#1}{2}{0} - \tl_if_empty:NF \l__hduthesis_signature_figure_tl - { - \signature { \l__hduthesis_signature_figure_tl } - \tl_clear:N \l__hduthesis_signature_figure_tl - } - } - 日期: - \makebox [ 2.5em ] [ l ] - { \__hduthesis_signature_process_aux:nnn {#1}{2}{1} } 年 - \makebox [ 2em ] - { \__hduthesis_signature_process_aux:nnn {#1}{2}{2} } 月 - \makebox [ 2em ] - { \__hduthesis_signature_process_aux:nnn {#1}{2}{3} } 日 - \par \vspace*{\baselineskip} - \noindent \makebox[.45\linewidth][l] - { - 指导教师签名: - \__hduthesis_signature_process_aux:nnn {#1}{3}{0} - \tl_if_empty:NF \l__hduthesis_signature_figure_tl - { - \signature { \l__hduthesis_signature_figure_tl } - \tl_clear:N \l__hduthesis_signature_figure_tl - } - } - 日期: - \makebox [ 2.5em ] [ l ] - { \__hduthesis_signature_process_aux:nnn {#1}{3}{1} } 年 - \makebox [ 2em ] - { \__hduthesis_signature_process_aux:nnn {#1}{3}{2} } 月 - \makebox [ 2em ] - { \__hduthesis_signature_process_aux:nnn {#1}{3}{3} } 日 - \end{spacing} + 本人完全了解杭州电子科技大学关于保留和使用学位论文的规定, + 即:研究生在校攻读学位期间论文工作的知识产权单位属杭州电子科技大学。 + 本人保证毕业离校后,发表论文或使用论文工作成果时署名单位仍然为杭州电子科技大学。 + 学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内容, + 可以允许采用影印、缩印或其它复制手段保存论文。(保密论文在解密后遵守此规定) + \par \vspace*{1.25\baselineskip} + \noindent \makebox[.45\linewidth][l] + { + 论文作者签名: + \__hduthesis_signature_process_aux:nnn {#1}{2}{0} + \tl_if_empty:NF \l__hduthesis_signature_figure_tl + { + \signature { \l__hduthesis_signature_figure_tl } + \tl_clear:N \l__hduthesis_signature_figure_tl + } + } + 日期: + \makebox [ 2.5em ] [ l ] + { \__hduthesis_signature_process_aux:nnn {#1}{2}{1} } 年 + \makebox [ 2em ] + { \__hduthesis_signature_process_aux:nnn {#1}{2}{2} } 月 + \makebox [ 2em ] + { \__hduthesis_signature_process_aux:nnn {#1}{2}{3} } 日 + \par \vspace*{\baselineskip} + \noindent \makebox[.45\linewidth][l] + { + 指导教师签名: + \__hduthesis_signature_process_aux:nnn {#1}{3}{0} + \tl_if_empty:NF \l__hduthesis_signature_figure_tl + { + \signature { \l__hduthesis_signature_figure_tl } + \tl_clear:N \l__hduthesis_signature_figure_tl + } + } + 日期: + \makebox [ 2.5em ] [ l ] + { \__hduthesis_signature_process_aux:nnn {#1}{3}{1} } 年 + \makebox [ 2em ] + { \__hduthesis_signature_process_aux:nnn {#1}{3}{2} } 月 + \makebox [ 2em ] + { \__hduthesis_signature_process_aux:nnn {#1}{3}{3} } 日 \end{spacing} } diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-typeset-module.code.tex b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-typeset-module.code.tex index ed0878b025f..6bcdc3e43f4 100644 --- a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-typeset-module.code.tex +++ b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis-typeset-module.code.tex @@ -1,5 +1,15 @@ \hduthesis_provide_module:n {typeset} +\RequirePackage { circuitikz, pgfplots, listings, hologo, + lipsum, zhlipsum, booktabs, multicol } +\pgfplotsset { compat = newest } +\hologoFontSetup { general = \sffamily } +\graphicspath + { + {./figure/}{./figures/}{./image/}{./images/} + {./graphics/}{./graphic/}{./pictures/}{./picture/} + } + \linespread{1.39} \dim_set:Nn \parindent { 2\ccwd } \newcommand \semilarge { \@setfontsize \semilarge{14}{16.5} } @@ -14,14 +24,14 @@ [ Extension = .otf, BoldItalicFont = *-bolditalic, UprightFont = *-regular, BoldFont = *-bold, - ItalicFont = *-italic, Scale = .9, + ItalicFont = *-italic, Scale = .9 ] -\RequirePackage { amssymb, mathtools, cancel, fixdif, derivative } +\RequirePackage { amssymb, mathtools, cancel, fixdif, derivative, siunitx } \file_if_exist:nTF { physics2.sty } { \RequirePackage{physics2} - \usephysicsmodule{ ab, braket, ab.legacy, op.legacy, bm-um.legacy } + \usephysicsmodule{ ab, braket, op.legacy, bm-um.legacy } } { \RequirePackage{bm} } \RequirePackage [ warnings-off = { mathtools-colon, mathtools-overbracket } ] {unicode-math} diff --git a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis.cls b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis.cls index f40d3ca9d17..dca7cca40b0 100644 --- a/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis.cls +++ b/Master/texmf-dist/tex/xelatex/hduthesis/hduthesis.cls @@ -17,21 +17,21 @@ %% hduthesis-layout-module.code, * %% hduthesis-bc.config-module.code, * %% hduthesis-pg.config-module.code, * -%% hduthesis-hdu.l3doc-module.code, * -%% hduthesis-hdu.stationery-module.code, * %% beamerthemehdu.sty, * +%% hduthesis-hdu.stationery-module.code, * +%% * +%% hduthesis-hdu.l3doc-module.code, * %% and README.md. * %% available at https://github.com/myhsia/hduthesis * %% ***************************************************************************** -\def\hduthesis@date{2024/12/31} -\def\hduthesis@version{0.5.1} +\def\hduthesis@date{2025/01/04} +\def\hduthesis@version{0.5.2} \def\hduthesis@maintainerid{myhsia} \RequirePackage{etoolbox} \ProvidesExplClass{hduthesis} {\hduthesis@date} {\hduthesis@version} - {LaTeX Class for Thesis at Hangzhou Dianzi University} + {LaTeX Template Bundle for Hangzhou Dianzi University} -% Module for TeX Live 2022 and (or) later \cs_if_exist:NF \seq_set_split:Nne { \cs_generate_variant:Nn \seq_set_split:Nnn { Nne } } \cs_if_exist:NF \seq_set_split:Nee @@ -45,22 +45,24 @@ { \msg_new:nnn { hduthesis } {#1} {#2} } \cs_new_protected:Npn \hduthesis_msg_error:nn #1#2 { \msg_error:nnn { hduthesis } {#1} {#2} } +\cs_generate_variant:Nn \hduthesis_msg_error:nn { nx } +\cs_new_protected:Npn \hduthesis_msg_warning:nn #1#2 + { \msg_warning:nnn { hduthesis } {#1} {#2} } +\cs_generate_variant:Nn \hduthesis_msg_warning:nn { nx } -\hduthesis_msg_new:nn { 用户协议 } +\hduthesis_msg_new:nn { not found module } + { The~hduthesis~module~`#1'~not~found. } +\hduthesis_msg_new:nn { unknown mode } + { Unknown~hduthesis~mode~`#1',~ loading~mode~`thesis'~instead. } +\hduthesis_msg_new:nn { Users Agreement } { \exp_not:n { - ⚠️⚠️⚠️⚠️⚠️~ 「hduThesiS」编译受阻🥵 ~⚠️⚠️⚠️⚠️⚠️~ - 使用模板前请认真阅读模板说明文档封面上的「用户协议」~ - 😡👊模板作者不对使用本模板产生的格式审查问题负责👊😡~ - 添加选项 `agreed'[\documentclass[agreed]{hduthesis}]~ - 即可顺利编译并默认代表您已同意本协议.~ 祝君科研顺利!~ - 如遇问题,可邮件反馈至📮xiamyphys@gmail.com. + 编译受阻!~ 使用模板前请阅读用户手册封面上的「用户协议」~ + !!!模板作者(@myhsia)不对使用本模板产生的格式审查问题负责!!!~ + 如果您同意用户协议,在全局选项中添加 `agreed' 即可解除本错误~ + 欢迎您通过邮件(myhsia@hdu.edu.cn)或GitHub提交反馈意见 } } - -\cs_generate_variant:Nn \hduthesis_msg_error:nn { nx } -\hduthesis_msg_new:nn { not found module } - { The~hduthesis~module~`#1'~not~found. } \cs_new_protected_nopar:Npn \hduthesis_load_module:n #1 { \clist_map_inline:nn {#1} @@ -76,19 +78,13 @@ {hduThesiS~ \text_titlecase:n {#1} ~Module} } -% global options \clist_new:N \g__hdu_base_class_options_clist \keys_define:nn { hduthesis / classoption } { agreed .bool_set:N = \g__hduthesis_agreement_bool, agreed .initial:n = false, agreed .default:n = true, - l3doc .bool_set:N = \g__hduthesis_doc_bool, - l3doc .initial:n = false, - l3doc .default:n = true, - stationery .bool_set:N = \g__hduthesis_stationery_bool, - stationery .initial:n = false, - stationery .default:n = true, + mode .tl_set:N = \g__hduthesis_mode_tl, math-font .tl_set:N = \g__hduthesis_math_font, CJKmain-font .tl_set:N = \g__hduthesis_main_CJK_font, CJKsans-font .tl_set:N = \g__hduthesis_sans_CJK_font, @@ -108,15 +104,26 @@ } \ProcessKeyOptions [ hduthesis / classoption ] -\bool_if:NT \g__hduthesis_doc_bool +\bool_if:nT { - \PassOptionsToClass { 11pt, letterpaper, kernel } { l3doc } - \exp_args:NNV \LoadClass [ \g__hdu_base_class_options_clist ] { l3doc } - \hduthesis_load_module:n { hdu.l3doc } + !\str_if_empty_p:N \g__hduthesis_mode_tl && + !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { thesis } && + !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { beamer } && + !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { stationery } && + % !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { exam } && + !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { l3doc } + } + { \hduthesis_msg_warning:nx { unknown mode } { \g__hduthesis_mode_tl } } + +\str_if_eq:eeT { \g__hduthesis_mode_tl } { beamer } + { + \PassOptionsToClass { aspectratio = 2013 } { beamer } + \exp_args:NNV \LoadClass [ \g__hdu_base_class_options_clist ] { beamer } + \usetheme{hdu} \endinput } -\bool_if:NT \g__hduthesis_stationery_bool +\str_if_eq:eeT { \g__hduthesis_mode_tl } { stationery } { \PassOptionsToClass { 12pt } { letter } \exp_args:NNV \LoadClass [ \g__hdu_base_class_options_clist ] { letter } @@ -124,37 +131,53 @@ \endinput } -\PassOptionsToClass { a4paper, zihao = -4 } { ctexrep } -\PassOptionsToPackage { quiet, no-math } { xeCJK } -\exp_args:NNV \LoadClass [ \g__hdu_base_class_options_clist ] { ctexrep } -\bool_if:NTF \g__hduthesis_agreement_bool +% \str_if_eq:eeT { \g__hduthesis_mode_tl } { exam } +% { +% \exp_args:NNV \LoadClass [ \g__hdu_base_class_options_clist ] { article } +% \hduthesis_load_module:n { hdu.exam } +% \endinput +% } + +\str_if_eq:eeT { \g__hduthesis_mode_tl } { l3doc } { - \RequirePackage{hyperref} - \pdfstringdefDisableCommands - { - \def \cite#1 {<#1>} - \def \hologoRobust#1 {<#1>} - } - \AtBeginDocument - { \hypersetup { hidelinks, pdfproducer = hduThesiS~by~Mingyu~Xia } } - } { \hduthesis_msg_error:nn { 用户协议 } { 未确认 } } + \PassOptionsToClass { 11pt, letterpaper, kernel } { l3doc } + \exp_args:NNV \LoadClass [ \g__hdu_base_class_options_clist ] { l3doc } + \hduthesis_load_module:n { hdu.l3doc } + \endinput + } -\RequirePackage { siunitx, circuitikz, pgfplots, listings, - hologo, lipsum, zhlipsum, booktabs, multicol } -\pgfplotsset { compat = newest } -\hologoFontSetup { general = \sffamily } -\graphicspath +\bool_if:nT { - {./figure/}{./figures/}{./image/}{./images/} - {./graphics/}{./graphic/}{./pictures/}{./picture/} + \str_if_eq_p:ee { \g__hduthesis_mode_tl } { thesis } || + !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { beamer } || + !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { stationery } || + % !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { exam } || + !\str_if_eq_p:ee { \g__hduthesis_mode_tl } { l3doc } } -\hduthesis_load_module:n { typeset } -\hduthesis_load_module:n { layout } -\cs_new_protected:Nn \__hduthesis_docinfo_degree_if_aux: { - \int_compare:nNnTF { \tl_count:N \l__docinfo_stdntid_tl } = { 8 } - { \hduthesis_load_module:n { bc.config } } - { \hduthesis_load_module:n { pg.config } } + \PassOptionsToClass { a4paper, zihao = -4 } { ctexrep } + \PassOptionsToPackage { quiet, no-math } { xeCJK } + \exp_args:NNV \LoadClass [ \g__hdu_base_class_options_clist ] { ctexrep } + \bool_if:NTF \g__hduthesis_agreement_bool + { + \RequirePackage{hyperref} + \pdfstringdefDisableCommands + { + \def \cite#1 {<#1>} + \def \hologoRobust#1 {<#1>} + } + \AtBeginDocument + { \hypersetup { hidelinks, pdfproducer = hduThesiS~by~Mingyu~Xia } } + } { \hduthesis_msg_error:nn { Users Agreement } { Unconfirmed } } + \hduthesis_load_module:n { typeset } + \hduthesis_load_module:n { layout } + \cs_new_protected:Nn \__hduthesis_docinfo_degree_if_aux: + { + \int_compare:nNnTF { \tl_count:N \l__docinfo_stdntid_tl } = { 8 } + { \hduthesis_load_module:n { bc.config } } + { \hduthesis_load_module:n { pg.config } } + } + \endinput } \endinput diff --git a/Master/texmf-dist/tex/xelatex/xepersian/algorithm-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/algorithm-xetex-xepersian.def index c3019ef73f6..9b138800adf 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/algorithm-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/algorithm-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `algorithm-xepersian.def', +%% This is file `algorithm-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,algorithm-xepersian.def') +%% xepersian.dtx (with options: `table,algorithm-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,10 +37,10 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{algorithm-xepersian.def}[2010/07/25 v0.2 adaptations for algorithm package] +\ProvidesFile{algorithm-xetex-xepersian.def}[2010/07/25 v0.2 xepersian adaptations for algorithm package for XeTeX engine] \def\ALG@name{\if@RTL الگوریتم\else Algorithm\fi} \def\ALGS@name{الگوریتمها} \def\listalgorithmname{\if@RTL فهرست \ALGS@name\else List of \ALG@name s\fi} \endinput %% -%% End of file `algorithm-xepersian.def'. +%% End of file `algorithm-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/algorithmic-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/algorithmic-xetex-xepersian.def index a3f33160d12..78c8e4cd34f 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/algorithmic-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/algorithmic-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `algorithmic-xepersian.def', +%% This is file `algorithmic-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,algorithmic-xepersian.def') +%% xepersian.dtx (with options: `table,algorithmic-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,9 +37,9 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{algorithmic-xepersian.def}[2010/07/25 v0.2 adaptations for algorithmic package] +\ProvidesFile{algorithmic-xetex-xepersian.def}[2010/07/25 v0.2 xepersian adaptations for algorithmic package for XeTeX engine] \def\algorithmicrequire{\if@RTL\textbf{ورودی:}\else\textbf{Require:}\fi} \def\algorithmicensure{\if@RTL\textbf{خروجی:}\else\textbf{Ensure:}\fi} \endinput %% -%% End of file `algorithmic-xepersian.def'. +%% End of file `algorithmic-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/imsproc-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/amsart-xetex-xepersian.def index 51a20576b5d..875a32de378 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/imsproc-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/amsart-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `imsproc-xepersian.def', +%% This is file `amsart-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,imsproc-xepersian.def') +%% xepersian.dtx (with options: `table,amsart-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,8 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{imsproc-xepersian.def}[2017/06/09 v0.5 xepersian adaptations for imsproc class for XeTeX engine] - +\ProvidesFile{amsart-xetex-xepersian.def}[2017/02/04 v0.4 xepersian adaptations for amsart class for XeTeX engine] \renewcommand \thepart {\@tartibi\c@part} \def\appendix{\par\c@section\z@ \c@subsection\z@ \let\sectionname\appendixname @@ -46,4 +45,4 @@ \endinput %% -%% End of file `imsproc-xepersian.def'. +%% End of file `amsart-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/amsbook-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/amsbook-xetex-xepersian.def index 0e87c646c78..5cec7479c4a 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/amsbook-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/amsbook-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `amsbook-xepersian.def', +%% This is file `amsbook-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,amsbook-xepersian.def') +%% xepersian.dtx (with options: `table,amsbook-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{amsbook-xepersian.def}[2017/02/04 v0.5 adaptations for amsbook class] +\ProvidesFile{amsbook-xetex-xepersian.def}[2017/02/04 v0.5 xepersian adaptations for amsbook class for XeTeX engine] \def\frontmatter{\cleardoublepage\pagenumbering{harfi}} \renewcommand \thepart {\@tartibi\c@part} \def\appendix{\par @@ -47,4 +47,4 @@ \endinput %% -%% End of file `amsbook-xepersian.def'. +%% End of file `amsbook-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/appendix-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/appendix-xetex-xepersian.def index a5fb1d9a368..a989f339301 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/appendix-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/appendix-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `appendix-xepersian.def', +%% This is file `appendix-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,appendix-xepersian.def') +%% xepersian.dtx (with options: `table,appendix-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{appendix-xepersian.def}[2015/02/01 v0.1 adaptations for appendix package] +\ProvidesFile{appendix-xetex-xepersian.def}[2015/02/01 v0.1 xepersian adaptations for appendix package for XeTeX engine] \renewcommand{\@resets@pp}{\par \@ppsavesec \stepcounter{@pps} @@ -54,4 +54,4 @@ } \endinput %% -%% End of file `appendix-xepersian.def'. +%% End of file `appendix-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/article-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/article-xetex-xepersian.def index 9800e69949a..e29e8c60bc1 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/article-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/article-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `article-xepersian.def', +%% This is file `article-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,article-xepersian.def') +%% xepersian.dtx (with options: `table,article-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{article-xepersian.def}[2010/07/25 v0.2 adaptations for standard article class] +\ProvidesFile{article-xetex-xepersian.def}[2010/07/25 v0.2 xepersian adaptations for standard article class for XeTeX engine] \renewcommand \thepart {\@tartibi\c@part} \renewcommand\appendix{\par \setcounter{section}{0}% @@ -45,4 +45,4 @@ \gdef\thesection{\@harfi\c@section}} \endinput %% -%% End of file `article-xepersian.def'. +%% End of file `article-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/artikel1-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/artikel1-xetex-xepersian.def index 335e042a914..03b30f8519e 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/artikel1-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/artikel1-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `artikel1-xepersian.def', +%% This is file `artikel1-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,artikel1-xepersian.def') +%% xepersian.dtx (with options: `table,artikel1-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{artikel1-xepersian.def}[2010/07/25 v0.1 adaptations for artikel1 class] +\ProvidesFile{artikel1-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for artikel1 class for XeTeX engine] \renewcommand*\thepart{\@tartibi\c@part} \renewcommand*\appendix{\par \setcounter{section}{0}% @@ -45,4 +45,4 @@ \gdef\thesection{\@harfi\c@section}} \endinput %% -%% End of file `artikel1-xepersian.def'. +%% End of file `artikel1-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/artikel2-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/artikel2-xetex-xepersian.def index a4238fd4eb8..495ec0f9bf3 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/artikel2-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/artikel2-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `artikel2-xepersian.def', +%% This is file `artikel2-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,artikel2-xepersian.def') +%% xepersian.dtx (with options: `table,artikel2-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{artikel2-xepersian.def}[2010/07/25 v0.1 adaptations for artikel2 class] +\ProvidesFile{artikel2-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for artikel2 class for XeTeX engine] \renewcommand*\thepart{\@tartibi\c@part} \renewcommand*\appendix{\par \setcounter{section}{0}% @@ -45,4 +45,4 @@ \gdef\thesection{\@harfi\c@section}} \endinput %% -%% End of file `artikel2-xepersian.def'. +%% End of file `artikel2-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/artikel3-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/artikel3-xetex-xepersian.def index c53176c0bef..59fc567e4be 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/artikel3-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/artikel3-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `artikel3-xepersian.def', +%% This is file `artikel3-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,artikel3-xepersian.def') +%% xepersian.dtx (with options: `table,artikel3-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{artikel3-xepersian.def}[2010/07/25 v0.1 adaptations for artikel3 class] +\ProvidesFile{artikel3-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for artikel3 class for XeTeX engine] \renewcommand*\thepart{\@tartibi\c@part} \renewcommand*\appendix{\par \setcounter{section}{0}% @@ -45,4 +45,4 @@ \gdef\thesection{\@harfi\c@section}} \endinput %% -%% End of file `artikel3-xepersian.def'. +%% End of file `artikel3-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/backref-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/backref-xetex-xepersian.def index 50032b284d3..22f9a651c23 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/backref-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/backref-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `backref-xepersian.def', +%% This is file `backref-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,backref-xepersian.def') +%% xepersian.dtx (with options: `table,backref-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{backref-xepersian.def}[2010/07/25 v0.1 adaptations for backref package] +\ProvidesFile{backref-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for backref package for XeTeX engine] \def\backrefpagesname{\if@RTL صفحات\else pages\fi} \def\BR@Latincitex[#1]#2{% \BRorg@Latincitex[{#1}]{#2}% @@ -59,4 +59,4 @@ }% \endinput %% -%% End of file `backref-xepersian.def'. +%% End of file `backref-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/beamer-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/beamer-xetex-xepersian.def index 7a718434c69..3e56f1058f9 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/beamer-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/beamer-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `beamer-xepersian.def', +%% This is file `beamer-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,beamer-xepersian.def') +%% xepersian.dtx (with options: `table,beamer-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{beamer-xepersian.def}[2022/06/27 v0.2 xepersian changes to beamer class] +\ProvidesFile{beamer-xetex-xepersian.def}[2022/06/27 v0.2 xepersian adaptations for beamer class for XeTeX engine] \usefonttheme[stillsansserifmath]{serif} \renewcommand*{\bidi@beamer@today}{% @@ -45,4 +45,4 @@ \endinput %% -%% End of file `beamer-xepersian.def'. +%% End of file `beamer-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/beamerbasetranslator-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/beamerbasetranslator-xetex-xepersian.def index e5cd225d821..416696107c9 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/beamerbasetranslator-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/beamerbasetranslator-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `beamerbasetranslator-xepersian.def', +%% This is file `beamerbasetranslator-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,beamerbasetranslator-xepersian.def') +%% xepersian.dtx (with options: `table,beamerbasetranslator-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{beamerbasetranslator-xepersian.def}[2022/06/27 v0.3 xepersian changes to beamerbasetranslator package] +\ProvidesFile{beamerbasetranslator-xetex-xepersian.def}[2022/06/27 v0.3 xepersian adaptations for beamerbasetranslator package for XeTeX engine] \newcommand*{\ProvidePersianTranslation}[2]{% \providetranslation{#1}{\ifRtoL{#2}{#1}}% } @@ -60,4 +60,4 @@ \endinput %% -%% End of file `beamerbasetranslator-xepersian.def'. +%% End of file `beamerbasetranslator-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/bidimoderncv-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/bidimoderncv-xetex-xepersian.def index 60e3d10008e..2686d93843e 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/bidimoderncv-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/bidimoderncv-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `bidimoderncv-xepersian.def', +%% This is file `bidimoderncv-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,bidimoderncv-xepersian.def') +%% xepersian.dtx (with options: `table,bidimoderncv-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,8 +37,8 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{bidimoderncv-xepersian.def}[2010/07/25 v0.1 adaptations for bidimoderncv class] +\ProvidesFile{bidimoderncv-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for bidimoderncv class for XeTeX engine] \def\refname{\if@RTL تألیفات\else Publications\fi} \endinput %% -%% End of file `bidimoderncv-xepersian.def'. +%% End of file `bidimoderncv-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xetex-xepersian.def index 5af7d31d86d..4f8d5b529bd 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `bidituftesidenote-xepersian.def', +%% This is file `bidituftesidenote-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,bidituftesidenote-xepersian.def') +%% xepersian.dtx (with options: `table,bidituftesidenote-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{bidituftesidenote-xepersian.def}[2017/02/04 v0.3 xepersian changes to bidituftesidenote package] +\ProvidesFile{bidituftesidenote-xetex-xepersian.def}[2017/02/04 v0.3 xepersian adaptations for bidituftesidenote package for XeTeX engine] \setLTRcitationfont{\resetlatinfont\footnotesize} @@ -47,4 +47,4 @@ \endinput %% -%% End of file `bidituftesidenote-xepersian.def'. +%% End of file `bidituftesidenote-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/boek3-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/boek-xetex-xepersian.def index c24312d1672..034b2029bcf 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/boek3-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/boek-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `boek3-xepersian.def', +%% This is file `boek-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,boek3-xepersian.def') +%% xepersian.dtx (with options: `table,boek-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{boek3-xepersian.def}[2010/07/25 v0.1 adaptations for boek3 class] +\ProvidesFile{boek-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for boek class for XeTeX engine] \renewcommand*\thepart{\@tartibi\c@part} \renewcommand*\frontmatter{% \cleardoublepage @@ -50,4 +50,4 @@ \gdef\thechapter{\@harfi\c@chapter}} \endinput %% -%% End of file `boek3-xepersian.def'. +%% End of file `boek-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/boek-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/boek3-xetex-xepersian.def index 612f6122991..233edbe4832 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/boek-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/boek3-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `boek-xepersian.def', +%% This is file `boek3-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,boek-xepersian.def') +%% xepersian.dtx (with options: `table,boek3-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{boek-xepersian.def}[2010/07/25 v0.1 adaptations for boek class] +\ProvidesFile{boek3-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for boek3 class for XeTeX engine] \renewcommand*\thepart{\@tartibi\c@part} \renewcommand*\frontmatter{% \cleardoublepage @@ -50,4 +50,4 @@ \gdef\thechapter{\@harfi\c@chapter}} \endinput %% -%% End of file `boek-xepersian.def'. +%% End of file `boek3-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/extbook-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/book-xetex-xepersian.def index 580ca3fd76f..3e9aa40b00c 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/extbook-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/book-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `extbook-xepersian.def', +%% This is file `book-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,extbook-xepersian.def') +%% xepersian.dtx (with options: `table,book-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{extbook-xepersian.def}[2010/07/25 v0.1 adaptations for extbook class] +\ProvidesFile{book-xetex-xepersian.def}[2010/07/25 v0.2 xepersian adaptations for book class for XeTeX engine] \renewcommand\frontmatter{% \cleardoublepage \@mainmatterfalse @@ -51,4 +51,4 @@ }%end appendix \endinput %% -%% End of file `extbook-xepersian.def'. +%% End of file `book-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/report-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/bookest-xetex-xepersian.def index 0664457bc9a..16ab35d39e3 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/report-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/bookest-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `report-xepersian.def', +%% This is file `bookest-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,report-xepersian.def') +%% xepersian.dtx (with options: `table,bookest-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{report-xepersian.def}[2010/07/25 v0.2 adaptations for standard report class] +\ProvidesFile{bookest-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for bookest class for XeTeX engine] \renewcommand \thepart {\@tartibi\c@part} \renewcommand\appendix{\par \setcounter{chapter}{0}% @@ -47,4 +47,4 @@ }%end appendix \endinput %% -%% End of file `report-xepersian.def'. +%% End of file `bookest-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/breqn-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/breqn-xetex-xepersian.def index b2c854d5e9c..3de7279d8ac 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/breqn-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/breqn-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `breqn-xepersian.def', +%% This is file `breqn-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,breqn-xepersian.def') +%% xepersian.dtx (with options: `table,breqn-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{breqn-xepersian.def}[2010/07/25 v0.1 adaptations for breqn package] +\ProvidesFile{breqn-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for breqn package for XeTeX engine] \def\@dmath[#1]{\if@RTL\@RTLfalse\addfontfeatures{Mapping=farsidigits}\fi% \everydisplay\expandafter{\the\everydisplay \display@setup}% \if@noskipsec \leavevmode \fi @@ -79,4 +79,4 @@ } \endinput %% -%% End of file `breqn-xepersian.def'. +%% End of file `breqn-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/color-localise-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/color-localize-xetex-xepersian.def index d75705b727d..206bf2db777 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/color-localise-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/color-localize-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `color-localise-xepersian.def', +%% This is file `color-localize-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,color-localise-xepersian.def') +%% xepersian.dtx (with options: `table,color-localize-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\آمادهسازیپرونده{color-localise-xepersian.def}[2011/03/01 v0.1 localising color package] +\آمادهسازیپرونده{color-localize-xetex-xepersian.def}[2011/03/01 v0.1 localizing color package for XeTeX engine] \تعریفرنگ{سیاه}{rgb}{0,0,0} \تعریفرنگ{سفید}{rgb}{1,1,1} \تعریفرنگ{قرمز}{rgb}{1,0,0} @@ -48,4 +48,4 @@ \تعریفرنگ{زرد}{cmyk}{0,0,1,0} \endinput %% -%% End of file `color-localise-xepersian.def'. +%% End of file `color-localize-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/enumerate-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/enumerate-xetex-xepersian.def index 159f6c49ac0..3cd620a6c74 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/enumerate-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/enumerate-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `enumerate-xepersian.def', +%% This is file `enumerate-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,enumerate-xepersian.def') +%% xepersian.dtx (with options: `table,enumerate-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{enumerate-xepersian.def}[2010/07/25 v0.1 adaptations for enumerate package] +\ProvidesFile{enumerate-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for enumerate package for XeTeX engine] \def\@enloop@{% \ifx ا\@entemp \def\@tempa{\@enLabel\harfi }\else \ifx ی\@entemp \def\@tempa{\@enLabel\adadi }\else @@ -56,4 +56,4 @@ \@tempa} \endinput %% -%% End of file `enumerate-xepersian.def'. +%% End of file `enumerate-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/enumitem-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/enumitem-xetex-xepersian.def index fde83bb2686..116db0f2b09 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/enumitem-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/enumitem-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `enumitem-xepersian.def', +%% This is file `enumitem-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,enumitem-xepersian.def') +%% xepersian.dtx (with options: `table,enumitem-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{enumitem-xepersian.def}[2017/09/06 v0.1 adaptations for enumitem package] +\ProvidesFile{enumitem-xetex-xepersian.def}[2017/09/06 v0.1 xepersian adaptations for enumitem package for XeTeX engine] \AddEnumerateCounter*\tartibi\@tartibi{999999999} \AddEnumerateCounter*\adadi\@adadi{999999999} \AddEnumerateCounter\harfi\@harfi{گ} @@ -50,4 +50,4 @@ \SetEnumerateShortLabel{ج}{\abjad*} \endinput %% -%% End of file `enumitem-xepersian.def'. +%% End of file `enumitem-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/extarticle-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/extarticle-xetex-xepersian.def index f64cd51d239..d1efab09ee7 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/extarticle-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/extarticle-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `extarticle-xepersian.def', +%% This is file `extarticle-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,extarticle-xepersian.def') +%% xepersian.dtx (with options: `table,extarticle-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{extarticle-xepersian.def}[2010/07/25 v0.1 adaptations for extarticle class] +\ProvidesFile{extarticle-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for extarticle class for XeTeX engine] \renewcommand\thepart {\@tartibi\c@part} \renewcommand\appendix{\par \setcounter{section}{0}% @@ -45,4 +45,4 @@ \gdef\thesection{\@harfi\c@section}} \endinput %% -%% End of file `extarticle-xepersian.def'. +%% End of file `extarticle-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/book-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/extbook-xetex-xepersian.def index a05253116c5..25eaf279db4 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/book-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/extbook-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `book-xepersian.def', +%% This is file `extbook-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,book-xepersian.def') +%% xepersian.dtx (with options: `table,extbook-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{book-xepersian.def}[2010/07/25 v0.2 adaptations for standard book class] +\ProvidesFile{extbook-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for extbook class for XeTeX engine] \renewcommand\frontmatter{% \cleardoublepage \@mainmatterfalse @@ -51,4 +51,4 @@ }%end appendix \endinput %% -%% End of file `book-xepersian.def'. +%% End of file `extbook-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xetex-bidi-xetex-xepersian.def index 9d1386d9bcc..faf158b1d5a 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xetex-bidi-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `extrafootnotefeatures-xepersian.def', +%% This is file `extrafootnotefeatures-xetex-bidi-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,extrafootnotefeatures-xepersian.def') +%% xepersian.dtx (with options: `table,extrafootnotefeatures-xetex-bidi-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,10 +37,10 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{extrafootnotefeatures-xepersian.def}[2012/01/01 v0.2 footnote macros for extrafootnotefeatures option of xepersian package] +\ProvidesFile{extrafootnotefeatures-xetex-bidi-xetex-xepersian.def}[2012/01/01 v0.2 xepersian adaptations for extrafootnotefeatures option for XeTeX engine] \renewcommand{\foottextfont}{\footnotesize\if@RTL@footnote\else\resetlatinfont\fi} \renewcommand{\LTRfoottextfont}{\footnotesize\resetlatinfont} \renewcommand{\RTLfoottextfont}{\footnotesize\setpersianfont} \endinput %% -%% End of file `extrafootnotefeatures-xepersian.def'. +%% End of file `extrafootnotefeatures-xetex-bidi-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/extreport-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/extreport-xetex-xepersian.def index f5f536496d6..b85b58c2422 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/extreport-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/extreport-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `extreport-xepersian.def', +%% This is file `extreport-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,extreport-xepersian.def') +%% xepersian.dtx (with options: `table,extreport-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{extreport-xepersian.def}[2010/07/25 v0.1 adaptations for extreport class] +\ProvidesFile{extreport-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for extreport class for XeTeX engine] \renewcommand\thepart {\@tartibi\c@part} \renewcommand\appendix{\par \setcounter{chapter}{0}% @@ -46,4 +46,4 @@ \gdef\thechapter{\@harfi\c@chapter}} \endinput %% -%% End of file `extreport-xepersian.def'. +%% End of file `extreport-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/fancyref-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/fancyref-xetex-xepersian.def index 855a3198ae7..2e4e1266fdc 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/fancyref-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/fancyref-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `fancyref-xepersian.def', +%% This is file `fancyref-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,fancyref-xepersian.def') +%% xepersian.dtx (with options: `table,fancyref-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{fancyref-xepersian.def}[2018/09/29 v0.1 bilingual captions for fancyref package] +\ProvidesFile{fancyref-xetex-xepersian.def}[2018/09/29 v0.1 xepersian adaptations for fancyref package for XeTeX engine] \renewcommand*{\Frefchapname}{\chaptername} \renewcommand*{\Frefenumname}{% \if@RTL @@ -198,4 +198,4 @@ } \endinput %% -%% End of file `fancyref-xepersian.def'. +%% End of file `fancyref-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/footnote-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/footnote-xetex-bidi-xetex-xepersian.def index 48ea4399e9c..0603e143ff2 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/footnote-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/footnote-xetex-bidi-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `footnote-xepersian.def', +%% This is file `footnote-xetex-bidi-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,footnote-xepersian.def') +%% xepersian.dtx (with options: `table,footnote-xetex-bidi-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{footnote-xepersian.def}[2017/08/09 v0.6 footnote macros for xepersian package] +\ProvidesFile{footnote-xetex-bidi-xetex-xepersian.def}[2017/08/09 v0.6 xepersian adaptations for footnotes for XeTeX engine] \renewcommand*{\bidi@@footnotetext@font}{\footnotesize\if@RTL@footnote\else\resetlatinfont\fi} @@ -47,4 +47,4 @@ \endinput %% -%% End of file `footnote-xepersian.def'. +%% End of file `footnote-xetex-bidi-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/framed-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/framed-xetex-xepersian.def index def5d33fa10..fe54cc25f13 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/framed-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/framed-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `framed-xepersian.def', +%% This is file `framed-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,framed-xepersian.def') +%% xepersian.dtx (with options: `table,framed-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{framed-xepersian.def}[2012/06/05 v0.1 xepersian adaptations for framed package for XeTeX engine] +\ProvidesFile{framed-xetex-xepersian.def}[2012/06/05 v0.1 xepersian adaptations for framed package for XeTeX engine] \renewenvironment{titled-frame}[1]{% \def\FrameCommand{\fboxsep8pt\fboxrule2pt \TitleBarFrame{\textbf{#1}}}% @@ -51,4 +51,4 @@ {\endMakeFramed} \endinput %% -%% End of file `framed-xepersian.def'. +%% End of file `framed-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/glossaries-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/glossaries-xetex-xepersian.def index 30a4fb4433f..36165c6e408 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/glossaries-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/glossaries-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `glossaries-xepersian.def', +%% This is file `glossaries-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,glossaries-xepersian.def') +%% xepersian.dtx (with options: `table,glossaries-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,10 +37,10 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{glossaries-xepersian.def}[2014/09/04 v0.4 xepersian adaptations for glossaries package for XeTeX engine] +\ProvidesFile{glossaries-xetex-xepersian.def}[2014/09/04 v0.4 xepersian adaptations for glossaries package for XeTeX engine] \glsaddprotectedpagefmt{@harfi} \glsaddprotectedpagefmt{@tartibi} \glsaddprotectedpagefmt{@adadi} \endinput %% -%% End of file `glossaries-xepersian.def'. +%% End of file `glossaries-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/hyperref-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/hyperref-xetex-xepersian.def index aad9f12731b..54071b24662 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/hyperref-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/hyperref-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `hyperref-xepersian.def', +%% This is file `hyperref-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,hyperref-xepersian.def') +%% xepersian.dtx (with options: `table,hyperref-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{hyperref-xepersian.def}[2022/10/30 v0.8 xepersian adaptations for hyperref package] +\ProvidesFile{hyperref-xetex-xepersian.def}[2022/10/30 v0.8 xepersian adaptations for hyperref package for XeTeX engine] \def\equationautorefname{\if@RTL معادله\else Equation\fi}% \def\footnoteautorefname{\if@RTL زیرنویس\else footnote\fi}% \def\itemautorefname{\if@RTL فقره\else item\fi}% @@ -86,4 +86,4 @@ } \endinput %% -%% End of file `hyperref-xepersian.def'. +%% End of file `hyperref-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/amsart-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/imsproc-xetex-xepersian.def index 6b13471e47d..70597e07c0f 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/amsart-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/imsproc-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `amsart-xepersian.def', +%% This is file `imsproc-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,amsart-xepersian.def') +%% xepersian.dtx (with options: `table,imsproc-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,8 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{amsart-xepersian.def}[2017/02/04 v0.4 adaptations for amsart class] +\ProvidesFile{imsproc-xetex-xepersian.def}[2017/06/09 v0.5 xepersian adaptations for imsproc class for XeTeX engine] + \renewcommand \thepart {\@tartibi\c@part} \def\appendix{\par\c@section\z@ \c@subsection\z@ \let\sectionname\appendixname @@ -45,4 +46,4 @@ \endinput %% -%% End of file `amsart-xepersian.def'. +%% End of file `imsproc-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/kashida-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/kashida-xetex-xepersian.def index cf23de1c3b8..0f16f641832 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/kashida-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/kashida-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `kashida-xepersian.def', +%% This is file `kashida-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,kashida-xepersian.def') +%% xepersian.dtx (with options: `table,kashida-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{kashida-xepersian.def}[2024/12/20 v1.0 implementation of Kashida for xepersian package] +\ProvidesFile{kashida-xetex-xepersian.def}[2024/12/20 v1.0 implementation of Kashida for XeTeX engine] \chardef\xepersian@zwj="200D % zero-width joiner \chardef\xepersian@kashidachar="0640 % kashida @@ -94,4 +94,4 @@ \KashidaOn \endinput %% -%% End of file `kashida-xepersian.def'. +%% End of file `kashida-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-commands-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-commands-xetex-xepersian.def index 25c3ee3d27a..c5d14967198 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-commands-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-commands-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `latex-localise-commands-xepersian.def', +%% This is file `latex-localize-commands-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,latex-localise-commands-xepersian.def') +%% xepersian.dtx (with options: `table,latex-localize-commands-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{latex-localise-commands-xepersian.def}[2014/02/05 v0.3 Persian localisation of LaTeX2e commands] +\ProvidesFile{latex-localize-commands-xetex-xepersian.def}[2014/02/05 v0.3 Persian localization of LaTeX2e commands for XeTeX engine] \eqcommand{شمعجدول}{@arstrut} \eqcommand{فوق}{above} \eqcommand{فاصلهکوتاهبالاینمایش}{abovedisplayshortskip} @@ -983,4 +983,4 @@ \eqcommand{@فرفاصله}{z@skip} \endinput %% -%% End of file `latex-localise-commands-xepersian.def'. +%% End of file `latex-localize-commands-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-environments-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-environments-xetex-xepersian.def index 80c2c34d578..916b59909e7 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-environments-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-environments-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `latex-localise-environments-xepersian.def', +%% This is file `latex-localize-environments-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,latex-localise-environments-xepersian.def') +%% xepersian.dtx (with options: `table,latex-localize-environments-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{latex-localise-environments-xepersian.def}[2022/06/06 v0.3 Persian localisation of LaTeX2e environments] +\ProvidesFile{latex-localize-environments-xetex-xepersian.def}[2022/06/06 v0.3 Persian localization of LaTeX2e environments for XeTeX engine] \eqenvironment{چکیده}{abstract} \eqenvironment{پیوست}{appendix} \eqenvironment{آرایه}{array} @@ -82,4 +82,4 @@ \eqenvironment{شعر}{verse} \endinput %% -%% End of file `latex-localise-environments-xepersian.def'. +%% End of file `latex-localize-environments-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-messages-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-messages-xetex-xepersian.def index 2856ac686b6..cc86ca32870 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-messages-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-messages-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `latex-localise-messages-xepersian.def', +%% This is file `latex-localize-messages-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,latex-localise-messages-xepersian.def') +%% xepersian.dtx (with options: `table,latex-localize-messages-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\آمادهسازیپرونده{latex-localise-messages-xepersian.def}[2011/03/01 v0.1 localising LaTeX2e messages] +\آمادهسازیپرونده{latex-localize-messages-xetex-xepersian.def}[2011/03/01 v0.1 localizing LaTeX2e messages for XeTeX engine] \endinput %% -%% End of file `latex-localise-messages-xepersian.def'. +%% End of file `latex-localize-messages-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-misc-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-misc-xetex-xepersian.def index d9d726c565d..9e3243ed36b 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-misc-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-misc-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `latex-localise-misc-xepersian.def', +%% This is file `latex-localize-misc-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,latex-localise-misc-xepersian.def') +%% xepersian.dtx (with options: `table,latex-localize-misc-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{latex-localise-misc-xepersian.def}[2012/01/01 v0.2 miscellaneous Persian localisation of LaTeX2e] +\ProvidesFile{latex-localize-misc-xetex-xepersian.def}[2025/01/03 v0.3 miscellaneous Persian localization of LaTeX2e for XeTeX engine] \تر\گرجدید#1{% \شمار@\نویسهویژه \نویسهویژه\من@ا \بگذار#1\گرنادرست @@ -63,7 +63,7 @@ } \بگذار\ازنو=\رگ -\@ifdefinitionfileloaded{latex-xetex-bidi}{% +\ApplyPatchCodeToFile{latex-xetex-bidi}{% \def\@xfloat #1[#2]{% \@nodocument \def \@captype {#1}% @@ -205,8 +205,8 @@ \if #1پ3 \else \z@ \@preamerr 0\fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi}% -}{} -\@ifdefinitionfileloaded{array-xetex-bidi}{% +} +\ApplyPatchCodeToFile{array-xetex-bidi}{% \def\@testpach{\@chclass \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else \ifnum \@lastchclass=7 5 \else @@ -238,8 +238,8 @@ \if \@nextchar ز5 \else \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi}% -}{} -\@ifdefinitionfileloaded{arydshln-xetex-bidi}{ +} +\ApplyPatchCodeToFile{arydshln-xetex-bidi}{ \ifadl@usingarypkg \def\@testpach{\@chclass \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else @@ -328,8 +328,8 @@ \def\adl@class@start{6} \def\adl@class@iiiorvii{3} \fi -}{} -\@ifdefinitionfileloaded{tabulary-xetex-bidi}{% +} +\ApplyPatchCodeToFile{tabulary-xetex-bidi}{% \def\@testpach{\@chclass \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else \ifnum \@lastchclass=7 5 \else @@ -369,8 +369,8 @@ \if \@nextchar ز5 \else \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi\fi \fi \fi\fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi}% -}{} -\@ifdefinitionfileloaded{float-xetex-bidi}{% +} +\ApplyPatchCodeToFile{float-xetex-bidi}{% \let\@float@Hx\@xfloat \def\@xfloat#1[{\@ifnextchar{H}{\@float@HH{#1}[}{\@ifnextchar{آ}{\@float@آآ{#1}[}{\@float@Hx{#1}[}}} \def\@float@HH#1[H]{% @@ -393,7 +393,7 @@ \vbox\bgroup \hsize\columnwidth \@parboxrestore \@floatboxreset \@setnobreak \ignorespaces} -}{} +} \begingroup \catcode `|=0 \catcode `[= 1 \catcode`]=2 \catcode `\{=12 \catcode `\}=12 \catcode`\\=12 |gdef|@x@xepersian@localize@verbatim#1\پایان{همانطورکههست}[#1|پایان[همانطورکههست]] @@ -407,4 +407,4 @@ \expandafter\let\csname endهمانطورکههست*\endcsname =\endهمانطورکههست \endinput %% -%% End of file `latex-localise-misc-xepersian.def'. +%% End of file `latex-localize-misc-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/listings-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/listings-xetex-xepersian.def index e22ba4e1281..15c8485de5f 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/listings-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/listings-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `listings-xepersian.def', +%% This is file `listings-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,listings-xepersian.def') +%% xepersian.dtx (with options: `table,listings-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,9 +37,9 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{listings-xepersian.def}[2014/07/17 v0.3 bilingual captions for listings package] +\ProvidesFile{listings-xetex-xepersian.def}[2014/07/17 v0.3 xepersian adaptations for listings package for XeTeX engine] \def\lstlistingname{\if@RTL برنامهٔ\else Listing\fi} \def\lstlistlistingname{\if@RTL فهرست برنامهها\else Listings\fi} \endinput %% -%% End of file `listings-xepersian.def'. +%% End of file `listings-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/loadingorder-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/loadingorder-xepersian.def deleted file mode 100644 index e15ca276f9e..00000000000 --- a/Master/texmf-dist/tex/xelatex/xepersian/loadingorder-xepersian.def +++ /dev/null @@ -1,81 +0,0 @@ -%% -%% This is file `loadingorder-xepersian.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% xepersian.dtx (with options: `table,loadingorder-xepersian.def') -%% -%% __________________________________________________ -%% Vafa Khalighi -%% -%% Copyright (c) 2008--2025 Vafa Khalighi -%% Copyright (c) 2018--2020 bidi-tex GitHub Organization -%% -%% It may be distributed and/or modified under the LaTeX Project Public License, -%% version 1.3c or higher (your choice). The latest version of -%% this license is at: http://www.latex-project.org/lppl.txt -%% -%% This work is “author-maintained” (as per LPPL maintenance status) -%% by Vafa Khalighi. -%% -%% -%% \CheckSum{10999} -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} -%% -\ProvidesFile{loadingorder-xepersian.def}[2018/09/29 v0.5 making sure that xepersian is the last package loaded] -\bidi@isloaded{algorithmic} -\bidi@isloaded{algorithm} -\bidi@isloaded{backref} -\bidi@isloaded{enumerate} -\bidi@isloaded{enumitem} -\bidi@isloaded{fancyref} -\bidi@isloaded{tocloft} -\bidi@isloaded{url} -\bidi@isloaded{varioref} -\AtBeginDocument{ - \if@bidi@algorithmicloaded@\else - \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package algorithmic after xepersian package. Please load package algorithmic before xepersian package, and then try to run xelatex on your document again}{}]{algorithmic} - \fi% - \if@bidi@algorithmloaded@\else - \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package algorithm after xepersian package. Please load package algorithm before xepersian package, and then try to run xelatex on your document again}{}]{algorithm} - \fi% - \if@bidi@backrefloaded@\else - \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package backref after xepersian package. Please load package backref before xepersian package, and then try to run xelatex on your document again}{}]{backref} - \fi% - \if@bidi@enumerateloaded@\else - \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package enumerate after xepersian package. Please load package enumerate before xepersian package, and then try to run xelatex on your document again}{}]{enumerate} - \fi% - \if@bidi@enumitemloaded@\else - \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package enumitem after xepersian package. Please load package enumitem before xepersian package, and then try to run xelatex on your document again}{}]{enumitem} - \fi% - \if@bidi@fancyrefloaded@\else - \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package fancyref after xepersian package. Please load package fancyref before xepersian package, and then try to run xelatex on your document again}{}]{fancyref} - \fi% - \if@bidi@tocloftloaded@\else - \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package tocloft after xepersian package. Please load package tocloft before xepersian package, and then try to run xelatex on your document again}{}]{tocloft} - \fi% - \if@bidi@urlloaded@\else - \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package url after xepersian package. Please load package url before xepersian package, and then try to run xelatex on your document again}{}]{url} - \fi% - \if@bidi@variorefloaded@\else - \bidi@isloaded[\PackageError{xepersian}{Oops! you have loaded package varioref after xepersian package. Please load package varioref before xepersian package, and then try to run xelatex on your document again}{}]{varioref} - \fi% -} -\endinput -%% -%% End of file `loadingorder-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/localise-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/localize-xetex-xepersian.def index 404a17f54ba..b86780d6e6e 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/localise-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/localize-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `localise-xepersian.def', +%% This is file `localize-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,localise-xepersian.def') +%% xepersian.dtx (with options: `table,localize-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{localise-xepersian.def}[2022/06/06 v0.2c Persian localisation of LaTeX2e] +\ProvidesFile{localize-xetex-xepersian.def}[2025/01/06 v0.2e Persian localization of LaTeX2e for XeTeX engine] \newcommand{\makezwnjletter}{\catcode`=11\relax} \makezwnjletter \newcommand*{\eqcommand}[2]{\if@bidi@csprimitive{#2}{\bidi@csletcs{#1}{#2}}{\bidi@csdefcs{#1}{#2}}} @@ -47,22 +47,17 @@ \expandafter\let\csname #1\expandafter\endcsname\csname #2\endcsname \expandafter\let\csname end#1\expandafter\endcsname\csname end#2\endcsname } -\@ifpackageloaded{keyval}{% \newcommand*\keyval@eq@alias@key[4][KV]{% \bidi@csletcs{#1@#2@#3}{#1@#2@#4}% - \bidi@csletcs{#1@#2@#3@default}{#1@#2@#4@default}}% -}{\@ifpackageloaded{xkeyval}{% -\newcommand*\keyval@eq@alias@key[4][KV]{% - \bidi@csletcs{#1@#2@#3}{#1@#2@#4}% - \bidi@csletcs{#1@#2@#3@default}{#1@#2@#4@default}}% -}{}} -\input{latex-localise-commands-xepersian.def} -\input{xepersian-localise-commands-xepersian.def} -\input{latex-localise-environments-xepersian.def} -\input{xepersian-localise-environments-xepersian.def} -\input{latex-localise-messages-xepersian.def} -\input{latex-localise-misc-xepersian.def} -\input{packages-localise-xepersian.def} + \bidi@csletcs{#1@#2@#3@default}{#1@#2@#4@default}% +} +\input{latex-localize-commands-xetex-xepersian.def} +\input{xepersian-localize-commands-xetex-xepersian.def} +\input{latex-localize-environments-xetex-xepersian.def} +\input{xepersian-localize-environments-xetex-xepersian.def} +\input{latex-localize-messages-xetex-xepersian.def} +\input{latex-localize-misc-xetex-xepersian.def} +\input{packages-localize-xetex-xepersian.def} \aliasfontfeature{ExternalLocation}{مکانخارجی} \aliasfontfeature{Path}{مسیر} \aliasfontfeature{Renderer}{تحویلدهنده} @@ -124,4 +119,4 @@ \aliasfontfeatureoption{Style}{MathScriptScript}{اسکریپتاسکریپتریاضی} \endinput %% -%% End of file `localise-xepersian.def'. +%% End of file `localize-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/memoir-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/memoir-xetex-xepersian.def index 20d577f6c02..80521cd9d64 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/memoir-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/memoir-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `memoir-xepersian.def', +%% This is file `memoir-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,memoir-xepersian.def') +%% xepersian.dtx (with options: `table,memoir-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{memoir-xepersian.def}[2010/07/25 v0.1 adaptations for memoir class] +\ProvidesFile{memoir-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for memoir class for XeTeX engine] \renewcommand{\@memfront}{% \@smemfront\pagenumbering{harfi}} \renewcommand{\setthesection}{\thechapter\@SepMark\harfi{section}} @@ -51,4 +51,4 @@ \anappendixtrue} \endinput %% -%% End of file `memoir-xepersian.def'. +%% End of file `memoir-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/minitoc-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/minitoc-xetex-xepersian.def index e50e6515927..bbc42fb5e45 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/minitoc-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/minitoc-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `minitoc-xepersian.def', +%% This is file `minitoc-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,minitoc-xepersian.def') +%% xepersian.dtx (with options: `table,minitoc-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{minitoc-xepersian.def}[2010/07/25 v0.1 bilingual captions for minitoc package] +\ProvidesFile{minitoc-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for minitoc package for XeTeX engine] \def\ptctitle{\if@RTL فهرست مطالب\else Table of Contents\fi}% \def\plftitle{\if@RTL فهرست تصاویر\else List of Figures\fi}% \def\plttitle{\if@RTL فهرست جداول\else List of Tables\fi}% @@ -49,4 +49,4 @@ \def\slttitle{\if@RTL جداول\else Tables\fi}% \endinput %% -%% End of file `minitoc-xepersian.def'. +%% End of file `minitoc-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/natbib-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/natbib-xetex-xepersian.def index b32ade1507b..9c8ee98f01f 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/natbib-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/natbib-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `natbib-xepersian.def', +%% This is file `natbib-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,natbib-xepersian.def') +%% xepersian.dtx (with options: `table,natbib-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{natbib-xepersian.def}[2011/08/01 v0.1 adaptations for natbib package] +\ProvidesFile{natbib-xetex-xepersian.def}[2011/08/01 v0.1 xepersian adaptations for natbib package for XeTeX engine] \renewcommand\NAT@set@cites{% \ifNAT@numbers \ifNAT@super \let\@cite\NAT@citesuper @@ -254,4 +254,4 @@ \def\NAT@@Latin@@citetp[#1]{\@ifnextchar[{\@Latincitex[#1]}{\@Latincitex[][#1]}} \endinput %% -%% End of file `natbib-xepersian.def'. +%% End of file `natbib-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/packages-localise-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/packages-localize-xetex-xepersian.def index 1cbbd7069f5..0bc5f493f36 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/packages-localise-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/packages-localize-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `packages-localise-xepersian.def', +%% This is file `packages-localize-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,packages-localise-xepersian.def') +%% xepersian.dtx (with options: `table,packages-localize-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,13 +37,13 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\آمادهسازیپرونده{packages-localise-xepersian.def}[2013/04/24 v0.2 localising LaTeX2e Packages] -\@گرسبکفراخوانیشده{color}{\ورودی{color-localise-xepersian.def}}{} -\@ifpackageloaded{multicol}{% +\آمادهسازیپرونده{packages-localize-xetex-xepersian.def}[2025/01/03 v0.3 localizing LaTeX2e Packages for XeTeX engine] +\@گرسبکفراخوانیشده{color}{\ورودی{color-localize-xetex-xepersian.def}}{} +\ApplyPatchCodeToPackage{multicol}{% \newenvironment{چندستونیها}{\begin{multicols}}{\end{multicols}}% \newenvironment{چندستونیها*}{\begin{multicols*}}{\end{multicols*}}% -}{} -\@ifpackageloaded{verbatim}{% +} +\ApplyPatchCodeToPackage{verbatim}{% \begingroup \vrb@catcodes \lccode`\!=`\\ \lccode`\[=`\{ \lccode`\]=`\} @@ -129,21 +129,20 @@ \@namedef{همانطورکههست*}{\begingroup\@verbatim\xepersian@localize@verbatim@start} \def\endهمانطورکههست{\endtrivlist\endgroup\@doendpe} \expandafter\let\csname endهمانطورکههست*\endcsname =\endهمانطورکههست -}{} +} \ExplSyntaxOn \AtBeginDocument{ \xepersian_localize_patch_verbatim: } \cs_set:Npn \xepersian_localize_patch_verbatim: { - \@ifpackageloaded{verbatim}{ + \ApplyPatchCodeToPackage{verbatim}{ \cs_set:cpn {همانطورکههست*} { \group_begin: \@verbatim \fontspec_print_visible_spaces: \xepersian@localize@verbatim@start } - }{ } } \ExplSyntaxOff -\@ifpackageloaded{graphicx}{% +\ApplyPatchCodeToPackage{graphicx}{% \def\Gin@boolkey#1#2{% \expandafter\@ifdefinable \csname Gin@#2درست\endcsname{% \expandafter\let\csname Gin@#2درست\expandafter\endcsname\csname Gin@#2true\endcsname}% @@ -184,7 +183,7 @@ \معادل@کلید{Grot}{طول}{x} \معادل@کلید{Grot}{عرض}{y} \معادل@کلید{Grot}{واحد}{units} -}{} +} \endinput %% -%% End of file `packages-localise-xepersian.def'. +%% End of file `packages-localize-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/rapport3-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/rapport1-xetex-xepersian.def index 52d491fae10..ab2a65f713f 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/rapport3-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/rapport1-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `rapport3-xepersian.def', +%% This is file `rapport1-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,rapport3-xepersian.def') +%% xepersian.dtx (with options: `table,rapport1-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{rapport3-xepersian.def}[2010/07/25 v0.2 adaptations for rapport3 class] +\ProvidesFile{rapport1-xetex-xepersian.def}[2010/07/25 v0.1 xepersian adaptations for rapport1 class for XeTeX engine] \renewcommand*\thepart{\@tartibi\c@part} \renewcommand*\appendix{\par \setcounter{chapter}{0}% @@ -46,4 +46,4 @@ \gdef\thechapter{\@harfi\c@chapter}} \endinput %% -%% End of file `rapport3-xepersian.def'. +%% End of file `rapport1-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/rapport1-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/rapport3-xetex-xepersian.def index 0246ebec0c2..497cac76408 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/rapport1-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/rapport3-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `rapport1-xepersian.def', +%% This is file `rapport3-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,rapport1-xepersian.def') +%% xepersian.dtx (with options: `table,rapport3-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{rapport1-xepersian.def}[2010/07/25 v0.1 adaptations for rapport1 class] +\ProvidesFile{rapport3-xetex-xepersian.def}[2010/07/25 v0.2 xepersian adaptations for rapport3 class for XeTeX engine] \renewcommand*\thepart{\@tartibi\c@part} \renewcommand*\appendix{\par \setcounter{chapter}{0}% @@ -46,4 +46,4 @@ \gdef\thechapter{\@harfi\c@chapter}} \endinput %% -%% End of file `rapport1-xepersian.def'. +%% End of file `rapport3-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/bookest-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/refrep-xetex-xepersian.def index 7228e21940f..6b719e76c33 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/bookest-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/refrep-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `bookest-xepersian.def', +%% This is file `refrep-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,bookest-xepersian.def') +%% xepersian.dtx (with options: `table,refrep-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{bookest-xepersian.def}[2010/07/25 v0.1 adaptations for bookest class] +\ProvidesFile{refrep-xetex-xepersian.def}[2010/07/25 v0.2 xepersian adaptations for refrep class for XeTeX engine] \renewcommand \thepart {\@tartibi\c@part} \renewcommand\appendix{\par \setcounter{chapter}{0}% @@ -47,4 +47,4 @@ }%end appendix \endinput %% -%% End of file `bookest-xepersian.def'. +%% End of file `refrep-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/refrep-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/report-xetex-xepersian.def index f1d5cbda4af..dc7097ea149 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/refrep-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/report-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `refrep-xepersian.def', +%% This is file `report-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,refrep-xepersian.def') +%% xepersian.dtx (with options: `table,report-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{refrep-xepersian.def}[2010/07/25 v0.2 adaptations for refrep class] +\ProvidesFile{report-xetex-xepersian.def}[2010/07/25 v0.2 xepersian adaptations for report class for XeTeX engine] \renewcommand \thepart {\@tartibi\c@part} \renewcommand\appendix{\par \setcounter{chapter}{0}% @@ -47,4 +47,4 @@ }%end appendix \endinput %% -%% End of file `refrep-xepersian.def'. +%% End of file `report-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/scrartcl-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/scrartcl-xetex-xepersian.def index b6f02d5c112..00651f0959c 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/scrartcl-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/scrartcl-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `scrartcl-xepersian.def', +%% This is file `scrartcl-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,scrartcl-xepersian.def') +%% xepersian.dtx (with options: `table,scrartcl-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{scrartcl-xepersian.def}[2022/05/22 v0.3 adaptations for scrartcl class] +\ProvidesFile{scrartcl-xetex-xepersian.def}[2022/05/22 v0.3 xepersian adaptations for scrartcl class for XeTeX engine] \renewcommand*{\thepart}{\@tartibi\c@part} \renewcommand*\appendix{% \Ifstr{\@currenvir}{appendix}{% @@ -90,4 +90,4 @@ } \endinput %% -%% End of file `scrartcl-xepersian.def'. +%% End of file `scrartcl-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/scrbook-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/scrbook-xetex-xepersian.def index 09f13b0d8ba..a0df8a1ad7f 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/scrbook-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/scrbook-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `scrbook-xepersian.def', +%% This is file `scrbook-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,scrbook-xepersian.def') +%% xepersian.dtx (with options: `table,scrbook-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{scrbook-xepersian.def}[2022/05/22 v0.3 adaptations for scrbook class] +\ProvidesFile{scrbook-xetex-xepersian.def}[2022/05/22 v0.3 xepersian adaptations for scrbook class for XeTeX engine] \renewcommand*\frontmatter{% \if@twoside\cleardoubleoddpage\else\clearpage\fi \@mainmatterfalse\pagenumbering{harfi}% @@ -95,4 +95,4 @@ } \endinput %% -%% End of file `scrbook-xepersian.def'. +%% End of file `scrbook-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/scrreprt-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/scrreprt-xetex-xepersian.def index c90dd130519..058a45582e1 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/scrreprt-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/scrreprt-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `scrreprt-xepersian.def', +%% This is file `scrreprt-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,scrreprt-xepersian.def') +%% xepersian.dtx (with options: `table,scrreprt-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{scrreprt-xepersian.def}[2022/05/22 v0.3 adaptations for scrreprt class] +\ProvidesFile{scrreprt-xetex-xepersian.def}[2022/05/22 v0.3 xepersian adaptations for scrreprt class for XeTeX engine] \renewcommand*{\thepart}{\@tartibi\c@part} \renewcommand*\appendix{% \Ifstr{\@currenvir}{appendix}{% @@ -91,4 +91,4 @@ } \endinput %% -%% End of file `scrreprt-xepersian.def'. +%% End of file `scrreprt-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/soul-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/soul-xetex-xepersian.def index 23de96c8750..8637c329a79 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/soul-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/soul-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `soul-xepersian.def', +%% This is file `soul-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,soul-xepersian.def') +%% xepersian.dtx (with options: `table,soul-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{soul-xepersian.def}[2018/12/12 v0.2 adaptations for soul package] +\ProvidesFile{soul-xetex-xepersian.def}[2018/12/12 v0.2 xepersian adaptations for soul package for XeTeX engine] \let\SOUL@tt@latin\SOUL@tt \newfontface{\SOUL@tt@nonlatin}{Times New Roman} \def\SOUL@tt{% @@ -57,4 +57,4 @@ } \endinput %% -%% End of file `soul-xepersian.def'. +%% End of file `soul-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xetex-xepersian.def index bb8700f014e..38d0bc801ae 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `tkz-linknodes-xepersian.def', +%% This is file `tkz-linknodes-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,tkz-linknodes-xepersian.def') +%% xepersian.dtx (with options: `table,tkz-linknodes-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{tkz-linknodes-xepersian.def}[2012/06/13 v0.1 adaptations for tkz-linknodes package] +\ProvidesFile{tkz-linknodes-xetex-xepersian.def}[2012/06/13 v0.1 xepersian adaptations for tkz-linknodes package for XeTeX engine] \renewcommand*{\@SetTab}{% \let\@alph\@latinalph% \ifnum \value{C@NumTab}>25\relax% @@ -59,4 +59,4 @@ }% \endinput %% -%% End of file `tkz-linknodes-xepersian.def'. +%% End of file `tkz-linknodes-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/tocloft-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/tocloft-xetex-xepersian.def index d6d32ecc2a9..eb4d759c242 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/tocloft-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/tocloft-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `tocloft-xepersian.def', +%% This is file `tocloft-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,tocloft-xepersian.def') +%% xepersian.dtx (with options: `table,tocloft-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,8 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{tocloft-xepersian.def}[2010/07/25 v0.1 bilingual captions for tocloft package] +\ProvidesFile{tocloft-xetex-xepersian.def}[2025/01/03 v0.2 xepersian adaptations for tocloft package for XeTeX engine] +\IfClassLoadedT{memoir}{\endinput} \renewcommand*{\cftchapname}{\if@RTL فصل\else chapter\fi} \renewcommand*{\cftsecname}{\if@RTL قسمت\else section\fi} \renewcommand*{\cftsubsecname}{\if@RTL زیرقسمت\else subsection\fi} @@ -50,4 +51,4 @@ \renewcommand*{\cftsubtabname}{\if@RTL زیرجدول\else subtable\fi} \endinput %% -%% End of file `tocloft-xepersian.def'. +%% End of file `tocloft-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/url-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/url-xetex-xepersian.def index 33548687372..3c9181ca196 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/url-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/url-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `url-xepersian.def', +%% This is file `url-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,url-xepersian.def') +%% xepersian.dtx (with options: `table,url-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{url-xepersian.def}[2022/02/18 v0.1 adaptations for url package] +\ProvidesFile{url-xetex-xepersian.def}[2022/02/18 v0.1 xepersian adaptations for url package for XeTeX engine] \begingroup \lccode`+=`\% \lccode`\~=`\% \lowercase {\long\gdef\Url@actpercent{\Url@Edit\Url@String{+}{~}% @@ -45,4 +45,4 @@ \endgroup% \endinput %% -%% End of file `url-xepersian.def'. +%% End of file `url-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/varioref-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/varioref-xetex-xepersian.def index cd8cf8b5b92..f854a20047b 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/varioref-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/varioref-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `varioref-xepersian.def', +%% This is file `varioref-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,varioref-xepersian.def') +%% xepersian.dtx (with options: `table,varioref-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{varioref-xepersian.def}[2018/09/29 v0.1 bilingual captions for varioref package] +\ProvidesFile{varioref-xetex-xepersian.def}[2018/09/29 v0.1 xepersian adaptations for varioref package for XeTeX engine] \def\reftextfaceafter{% \if@RTL در صفحه @@ -103,4 +103,4 @@ } \endinput %% -%% End of file `varioref-xepersian.def'. +%% End of file `varioref-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-commands-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localize-commands-xetex-xepersian.def index 9796175048f..e45e203f970 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-commands-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localize-commands-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `xepersian-localise-commands-xepersian.def', +%% This is file `xepersian-localize-commands-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,xepersian-localise-commands-xepersian.def') +%% xepersian.dtx (with options: `table,xepersian-localize-commands-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{xepersian-localise-commands-xepersian.def}[2012/07/25 v0.2 Persian localisation of XePersian commands] +\ProvidesFile{xepersian-localize-commands-xetex-xepersian.def}[2012/07/25 v0.2 Persian localization of XePersian commands for XeTeX engine] \eqcommand{خطزیرنویسخودکار}{autofootnoterule} \eqcommand{اعدادفرمولهاخودکار}{AutoMathDigits} \eqcommand{اعدادفرمولهالاتین}{DefaultMathDigits} @@ -99,4 +99,4 @@ \eqcommand{زیتک}{XeTeX} \endinput %% -%% End of file `xepersian-localise-commands-xepersian.def'. +%% End of file `xepersian-localize-commands-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-environments-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localize-environments-xetex-xepersian.def index a6e62eea7d2..e1b8f59b8c3 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-environments-xepersian.def +++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localize-environments-xetex-xepersian.def @@ -1,10 +1,10 @@ %% -%% This is file `xepersian-localise-environments-xepersian.def', +%% This is file `xepersian-localize-environments-xetex-xepersian.def', %% generated with the docstrip utility. %% %% The original source files were: %% -%% xepersian.dtx (with options: `table,xepersian-localise-environments-xepersian.def') +%% xepersian.dtx (with options: `table,xepersian-localize-environments-xetex-xepersian.def') %% %% __________________________________________________ %% Vafa Khalighi @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -37,7 +37,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% -\ProvidesFile{xepersian-localise-environments-xepersian.def}[2010/07/25 v0.1 Persian localisation of XePersian and bidi environments] +\ProvidesFile{xepersian-localize-environments-xetex-xepersian.def}[2010/07/25 v0.1 Persian localization of XePersian and bidi environments for XeTeX engine] \eqenvironment{لاتین}{latin} \eqenvironment{متنچپ}{LTR} \eqenvironment{دستهبندیچپ}{LTRitems} @@ -50,4 +50,4 @@ \eqenvironment{شعرسنتی*}{traditionalpoem*} \endinput %% -%% End of file `xepersian-localise-environments-xepersian.def'. +%% End of file `xepersian-localize-environments-xetex-xepersian.def'. diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-magazine.cls b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-magazine.cls index 41010969615..be2c3302be0 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-magazine.cls +++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-magazine.cls @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathdigitspec.sty b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathdigitspec.sty index 3c95d83a128..241bac560fc 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathdigitspec.sty +++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathdigitspec.sty @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-multiplechoice.sty b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-multiplechoice.sty index ac83521575b..57c2082357d 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-multiplechoice.sty +++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-multiplechoice.sty @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty index d120b5e1b13..b29bf4648f1 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty +++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty b/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty index 20dab01b2c7..daa9e0a697d 100644 --- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty +++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty @@ -20,7 +20,7 @@ %% by Vafa Khalighi. %% %% -%% \CheckSum{10999} +%% \CheckSum{10845} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z @@ -38,10 +38,10 @@ %% Right brace \} Tilde \~} %% \NeedsTeXFormat{LaTeX2e} -\def\xepersian@version{25.8} -\def\xepersiandate{2025/01/01} -\def\xepersian@releasename{Mount Alvand} -\def\xepersian@persian@@releasename{کوه الوند} +\def\xepersian@version{26.0} +\def\xepersiandate{2025/01/06} +\def\xepersian@releasename{Persian Gate} +\def\xepersian@persian@@releasename{دربند پارس} \newcommand*{\xepersianreleasename}{\if@RTL\xepersian@persian@@releasename\else\xepersian@releasename\fi} \ProvidesPackage{xepersian}[\xepersiandate\space v\xepersian@version\space (Release \xepersian@releasename)\space Persian typesetting in XeLaTeX] @@ -86,16 +86,16 @@ Persian typesetting in XeLaTeX] \keys_define:nn { xepersian } { Kashida .choice: , - Kashida / on .code:n = \AtEndOfPackage{\input{kashida-xepersian.def}} , + Kashida / on .code:n = \AtEndOfPackage{\input{kashida-xetex-xepersian.def}} , Kashida / off .code:n = \relax , Kashida .default:n = on } \keys_define:nn { xepersian } { - localise .choice: , - localise / on .code:n = \AtEndOfPackage{\input{localise-xepersian.def}} , - localise / off .code:n = \relax , - localise .default:n = on + localize .choice: , + localize / on .code:n = \AtEndOfPackage{\input{localize-xetex-xepersian.def}} , + localize / off .code:n = \relax , + localize .default:n = on } \cs_new_protected:Npn \__xepersian_quickindex_variant:n #1 { @@ -1044,7 +1044,7 @@ Persian typesetting in XeLaTeX] \newcommand*{\@xepersian@pdfcustomproperties}{% This is the xepersian package, Version \xepersian@version\space (Release \xepersian@releasename), - Released January 1, 2025. + Released January 6, 2025. } \newcommand\twocolumnstableofcontents{% @@ -1358,54 +1358,62 @@ number is 999,999,999.}% \PackageError{xepersian}{You have not specified any font\MessageBreak for the main Persian text}{Use `\settextfont' to load a font.}% }{}} -\@ifdefinitionfileloaded{loadingorder-xetex-bidi}{\input{loadingorder-xepersian.def}}{} -\@ifdefinitionfileloaded{footnote-xetex-bidi}{\input{footnote-xepersian.def}}{} -\@ifpackageloaded{appendix}{\input{appendix-xepersian.def}}{} -\@ifpackageloaded{listings}{\input{listings-xepersian.def}}{} -\@ifpackageloaded{algorithmic}{\input{algorithmic-xepersian.def}}{} -\@ifpackageloaded{algorithm}{\input{algorithm-xepersian.def}}{} -\@ifpackageloaded{backref}{\input{backref-xepersian.def}}{} -\@ifpackageloaded{beamerbasetranslator}{\input{beamerbasetranslator-xepersian.def}}{} -\@ifpackageloaded{fancyref}{\input{fancyref-xepersian.def}}{} -\@ifpackageloaded{bidituftesidenote}{\input{bidituftesidenote-xepersian.def}}{} -\@ifpackageloaded{breqn}{\input{breqn-xepersian.def}}{} -\@ifpackageloaded{enumerate}{\input{enumerate-xepersian.def}}{} -\@ifpackageloaded{enumitem}{\input{enumitem-xepersian.def}}{} -\@ifpackageloaded{framed}{\input{framed-xepersian.def}}{} -\@ifpackageloaded{glossaries}{\input{glossaries-xepersian.def}}{} -\@ifpackageloaded{hyperref}{\input{hyperref-xepersian.def}}{} -\@ifpackageloaded{minitoc}{\input{minitoc-xepersian.def}}{} -\@ifpackageloaded{natbib}{\input{natbib-xepersian.def}}{} -\@ifpackageloaded{soul}{\input{soul-xepersian.def}}{} -\@ifpackageloaded{tkz-linknodes}{\input{tkz-linknodes-xepersian.def}}{} -\@ifpackageloaded{tocloft}{\@ifclassloaded{memoir}{}{\input{tocloft-xepersian.def}}}{} -\@ifpackageloaded{url}{\input{url-xepersian.def}}{} -\@ifpackageloaded{varioref}{\input{varioref-xepersian.def}}{} -\@ifclassloaded{article}{\input{article-xepersian.def}}{} -\@ifclassloaded{extarticle}{\input{extarticle-xepersian.def}}{} -\@ifclassloaded{artikel1}{\input{artikel1-xepersian.def}}{} -\@ifclassloaded{artikel2}{\input{artikel2-xepersian.def}}{} -\@ifclassloaded{artikel3}{\input{artikel3-xepersian.def}}{} -\@ifclassloaded{amsart}{\input{amsart-xepersian.def}}{} -\@ifclassloaded{beamer}{\input{beamer-xepersian.def}}{} -\@ifclassloaded{bidimoderncv}{\input{bidimoderncv-xepersian.def}}{} -\@ifclassloaded{report}{\input{report-xepersian.def}}{} -\@ifclassloaded{extreport}{\input{extreport-xepersian.def}}{} -\@ifclassloaded{rapport1}{\input{rapport1-xepersian.def}}{} -\@ifclassloaded{rapport3}{\input{rapport3-xepersian.def}}{} -\@ifclassloaded{scrartcl}{\input{scrartcl-xepersian.def}}{} -\@ifclassloaded{scrbook}{\input{scrbook-xepersian.def}}{} -\@ifclassloaded{scrreprt}{\input{scrreprt-xepersian.def}}{} -\@ifclassloaded{amsbook}{\input{amsbook-xepersian.def}}{} -\@ifclassloaded{boek3}{\input{boek3-xepersian.def}}{} -\@ifclassloaded{boek}{\input{boek-xepersian.def}}{} -\@ifclassloaded{bookest}{\input{bookest-xepersian.def}}{} -\@ifclassloaded{extbook}{\input{extbook-xepersian.def}}{} -\@ifclassloaded{book}{\input{book-xepersian.def}}{} -\@ifclassloaded{refrep}{\input{refrep-xepersian.def}}{} -\@ifclassloaded{memoir}{\input{memoir-xepersian.def}}{} -\@ifclassloaded{imsproc}{\input{imsproc-xepersian.def}}{} -\@ifdefinitionfileloaded{extrafootnotefeatures-xetex-bidi}{\input{extrafootnotefeatures-xepersian.def}}{} + +\ApplyPatchToFiles{% + footnote-xetex-bidi, % + extrafootnotefeatures-xetex-bidi % +}[def][xepersian] + +\ApplyPatchToClasses{% + article, % + amsart, % + amsbook, % + artikel1, % + artikel2, % + artikel3, % + beamer, % + bidimoderncv, % + boek, % + boek3, % + book, % + bookest, % + extbook, % + extarticle, % + extreport, % + imsproc, % + memoir, % + rapport1, % + rapport3, % + refrep, % + report, % + scrartcl, % + scrbook, % + scrreprt % +}[xepersian] + +\ApplyPatchToPackages{% + algorithm, % + algorithmic, % + appendix, % + backref, % + beamerbasetranslator, % + bidituftesidenote, % + breqn, % + enumerate, % + enumitem, % + fancyref, % + framed, % + glossaries, % + hyperref, % + listings, % + minitoc, % + natbib, % + soul, % + tkz-linknodes, % + tocloft, % + url, % + varioref % +}[xepersian] \newtoks\xepersian@toks \def\xepersian@tempa#1{% diff --git a/Master/tlpkg/TeXLive/TLPSRC.pm b/Master/tlpkg/TeXLive/TLPSRC.pm index 1b79f239b07..6a9f11bfbb6 100644 --- a/Master/tlpkg/TeXLive/TLPSRC.pm +++ b/Master/tlpkg/TeXLive/TLPSRC.pm @@ -229,6 +229,9 @@ sub from_file { } elsif ($line =~ /^(depend|hard)\s+(.*)$/) { push (@depends, $2) if ($2 ne ""); + } elsif ($line =~ /^soft\s+(.*)$/) { + ; # accept and ignore + } elsif ($line =~ /^postaction\s+(.*)$/) { push (@postactions, $1) if ($1 ne ""); diff --git a/Master/tlpkg/bin/tl-update-linked-scripts b/Master/tlpkg/bin/tl-update-linked-scripts index d2c6c814008..fd6b0a01b8e 100755 --- a/Master/tlpkg/bin/tl-update-linked-scripts +++ b/Master/tlpkg/bin/tl-update-linked-scripts @@ -15,7 +15,7 @@ compare_and_copy () { echo "updating $Src/$file -> $Dest/$file" diff -u0 $Src/$file $Dest/$file - cp $Src/$file $Dest/$file || exit 1 + cp -pv $Src/$file $Dest/$file || exit 1 done } @@ -29,30 +29,7 @@ test -r $Dest/scripts.lst || { exit 1 } -# echo "$Src => $Dest" - . $Dest/scripts.lst compare_and_copy $texmf_scripts exit $? - -# Here is how we handled a second directory, that copied in the other -# direction. As of January 2020, all the scripts in tl_scripts are gone, -# now maintained in Master with slaves in the normal linked_scripts -# handled above. -# -## Build/source/texk/texlive/tl_scripts => Master/texmf-dist/scripts/texlive -# -#Src=`cd $Dest/../tl_scripts && pwd` -#Dest=$Master/texmf-dist/scripts/texlive -# -#test -r $Src/scripts.lst || { -# echo "$0: \`$Src/scripts.lst' missing'" -# exit 1 -#} -# -## echo "$Src => $Dest" -# -#. $Src/scripts.lst -# -#compare_and_copy $tl_scripts diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index 8c921ee3d38..8d92dd8d881 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -116,7 +116,7 @@ my @TLP_working = qw( biblatex-archaeology biblatex-arthistory-bonn biblatex-bath biblatex-bookinarticle biblatex-bookinother biblatex-bwl biblatex-caspervector biblatex-cheatsheet biblatex-chem - biblatex-chicago biblatex-claves biblatex-cv + biblatex-chicago biblatex-claves biblatex-cse biblatex-cv biblatex-dw biblatex-enc biblatex-ext biblatex-fiwi biblatex-gb7714-2015 biblatex-german-legal biblatex-gost biblatex-historian @@ -187,7 +187,7 @@ my @TLP_working = qw( chhaya chicago chicagoa chicagolinks chicago-annote chickenize chifoot childdoc chinese-jfm chinesechess chivo chkfloat chklref chletter chngcntr chordbars chordbox chronology - chronosys chs-physics-report chscite churchslavonic + chronosys chs-physics-report chscite churchslavonic chuushaku cidarticle cinzel circ circledsteps circledtext circuit-macros circuitikz circularglyphs citation-style-language cite citeall citeref cje cjhebrew cjk cjk-gs-integrate cjk-ko cjkpunct cjs-rcs-article @@ -514,7 +514,8 @@ my @TLP_working = qw( libertine libertinegc libertinus libertinus-fonts libertinus-otf libertinus-type1 libertinust1math libgreek librarian librebaskerville librebodoni librecaslon librefranklin - libris lie-hasse liftarm light-latex-make ligtype lilyglyphs limap limecv + libris lie-hasse liederbuch liftarm + light-latex-make ligtype lilyglyphs limap limecv lineara linearregression linebreaker linegoal lineno ling-macros linguex linguisticspro linop lion-msc lipsum lisp-on-tex @@ -547,7 +548,8 @@ my @TLP_working = qw( luamesh luamml luamodulartables luamplib luanumint luaoptions luaotfload luapackageloader luaplot luaprogtable luapstricks luaquotes luarandom - luaset luasseq luatex85 luatexbase luatexja luatexko luatextra luatikz + luaset luasseq + luatbls luatex85 luatexbase luatexja luatexko luatextra luatikz luatodonotes luatruthtable luavlna luaxml lutabulartools luwiantype lwarp lxfonts ly1 lyluatex macrolist macros2e macroswap mafr magaz magicnum magicwatermark magra @@ -828,7 +830,7 @@ my @TLP_working = qw( tabbing tabfigures table-fct tableaux tablefootnote tableof tablists tablor tabls tablvar tabriz-thesis tabstackengine tabto-generic tabto-ltx - tabu tabularborder tabularray tabularcalc tabularew + tabu tabularborder tabularray tabularcalc tabularew tabularray-abnt tabulary tabvar tagging tagpair tagpdf talk talos tamefloats tamethebeast tango tangocolors tangramtikz tap tapir tasks tblr-extras tcldoc tcolorbox tdclock tds tdsfrmath diff --git a/Master/tlpkg/installer/ctan-mirrors.pl b/Master/tlpkg/installer/ctan-mirrors.pl index 0f3f9ab706d..40c3c84be89 100644 --- a/Master/tlpkg/installer/ctan-mirrors.pl +++ b/Master/tlpkg/installer/ctan-mirrors.pl @@ -10,6 +10,7 @@ $mirrors = { }, 'Asia' => { 'China' => { + 'https://mirror.bjtu.edu.cn/CTAN/' => 1, 'https://mirror.nyist.edu.cn/CTAN/' => 1, 'https://mirrors.aliyun.com/CTAN/' => 1, 'https://mirrors.bfsu.edu.cn/CTAN/' => 1, diff --git a/Master/tlpkg/installer/install-tl-gui.tcl b/Master/tlpkg/installer/install-tl-gui.tcl index e654ce1b687..4249aa6e7a3 100755 --- a/Master/tlpkg/installer/install-tl-gui.tcl +++ b/Master/tlpkg/installer/install-tl-gui.tcl @@ -1,6 +1,6 @@ #!/usr/bin/env wish -# Copyright 2018-2022 Siep Kroonenberg +# Copyright 2018-2025 Siep Kroonenberg # This file is licensed under the GNU General Public License version 2 # or any later version. @@ -334,7 +334,7 @@ proc pre_splash {} { } # wallpaper for remaining widgets - pack [ttk::frame .bg -padding 3pt] -fill both -expand 1 + pack [ttk::frame .bg -padding 3p] -fill both -expand 1 # frame for buttons (abort button, mirrors dropdown menu) pack [ttk::frame .splfb] -in .bg -side bottom -fill x @@ -389,7 +389,7 @@ proc show_log {{do_abort 0}} { } # wallpaper - pack [ttk::frame .bg -padding 3pt] -fill both -expand 1 + pack [ttk::frame .bg -padding 3p] -fill both -expand 1 # buttons at bottom pack [ttk::frame .bottom] -in .bg -side bottom -fill x @@ -471,14 +471,14 @@ proc edit_name {} { if $::plain_unix {wm attributes .tled -type dialog} # wallpaper - pack [ttk::frame .tled.bg -padding 3pt] -fill both -expand 1 + pack [ttk::frame .tled.bg -padding 3p] -fill both -expand 1 # widgets ttk::label .tled.l -text [__ "Change name (slashes not allowed)"] - pack .tled.l -in .tled.bg -padx 5pt -pady 5pt + pack .tled.l -in .tled.bg -padx 5p -pady 5p ttk::entry .tled.e -width 20 .tled.e state !disabled - pack .tled.e -in .tled.bg -pady 5pt + pack .tled.e -in .tled.bg -pady 5p .tled.e insert 0 [.tltd.name_l cget -text] # now frame with ok and cancel buttons @@ -492,9 +492,9 @@ proc edit_name {} { end_dlg "" .tled } } - ppack .tled.ok_b -in .tled.buttons -side right -padx 5pt -pady 5pt + ppack .tled.ok_b -in .tled.buttons -side right -padx 5p -pady 5p ttk::button .tled.cancel_b -text [__ "Cancel"] -command {end_dlg "" .tled} - ppack .tled.cancel_b -in .tled.buttons -side right -padx 5pt -pady 5pt + ppack .tled.cancel_b -in .tled.buttons -side right -padx 5p -pady 5p bind .tled <Escape> {.tled.cancel_b invoke} wm protocol .tled WM_DELETE_WINDOW \ @@ -570,14 +570,14 @@ proc texdir_setup {} { wm title .tltd [__ "Installation root"] # wallpaper - pack [ttk::frame .tltd.bg -padding 3pt] -expand 1 -fill both + pack [ttk::frame .tltd.bg -padding 3p] -expand 1 -fill both # full path pack [ttk::label .tltd.path_l -font lfont -anchor center] \ - -in .tltd.bg -pady 10pt -fill x -expand 1 + -in .tltd.bg -pady 10p -fill x -expand 1 # installation root components, gridded - pack [ttk::frame .tltd.fr1 -borderwidth 2pt -relief groove] \ + pack [ttk::frame .tltd.fr1 -borderwidth 2p -relief groove] \ -in .tltd.bg -fill x -expand 1 grid columnconfigure .tltd.fr1 0 -weight 1 grid columnconfigure .tltd.fr1 2 -weight 1 @@ -620,7 +620,7 @@ proc texdir_setup {} { } # ok/cancel buttons - pack [ttk::frame .tltd.frbt] -in .tltd.bg -pady {10pt 0pt} -fill x + pack [ttk::frame .tltd.frbt] -in .tltd.bg -pady {10p 0p} -fill x ttk::button .tltd.ok_b -text [__ "Ok"] -command commit_root ppack .tltd.ok_b -in .tltd.frbt -side right ttk::button .tltd.cancel_b -text [__ "Cancel"] \ @@ -684,7 +684,7 @@ proc edit_dir {d} { if $::plain_unix {wm attributes .td -type dialog} # wallpaper - pack [ttk::frame .td.bg -padding 3pt] -fill both -expand 1 + pack [ttk::frame .td.bg -padding 3p] -fill both -expand 1 if {$d eq "TEXMFHOME"} { # explain tilde @@ -889,7 +889,7 @@ proc select_binaries {} { wm title .tlbin [__ "Binaries"] # wallpaper - pack [ttk::frame .tlbin.bg -padding 3pt] -expand 1 -fill both + pack [ttk::frame .tlbin.bg -padding 3p] -expand 1 -fill both # ok, cancel buttons pack [ttk::frame .tlbin.buts] -in .tlbin.bg -side bottom -fill x @@ -939,7 +939,7 @@ proc select_scheme {} { wm title .tlschm [__ "Schemes"] # wallpaper - pack [ttk::frame .tlschm.bg -padding 3pt] -fill both -expand 1 + pack [ttk::frame .tlschm.bg -padding 3p] -fill both -expand 1 # buttons at bottom pack [ttk::frame .tlschm.buts] -in .tlschm.bg -side bottom -fill x @@ -1027,7 +1027,7 @@ proc select_collections {} { wm title .tlcoll [__ "Collections"] # wallpaper - pack [ttk::frame .tlcoll.bg -padding 3pt] -fill both -expand 1 + pack [ttk::frame .tlcoll.bg -padding 3p] -fill both -expand 1 # frame at bottom with ok and cancel buttons pack [ttk::frame .tlcoll.butf] -in .tlcoll.bg -side bottom -fill x @@ -1047,14 +1047,14 @@ proc select_collections {} { set wgb .tlcoll.b$t ttk::frame $wgb ttk::label ${wgb}sel -text [__ "Select"] - ttk::button ${wgb}all -text [__ "All"] -padding 1pt -command \ + ttk::button ${wgb}all -text [__ "All"] -padding 1p -command \ "foreach c \[.tlcoll.$t children {}\] \{ .tlcoll.$t set \$c mk \[mark_sym 1\]\}" - ttk::button ${wgb}none -text [__ "None"] -padding 1pt -command \ + ttk::button ${wgb}none -text [__ "None"] -padding 1p -command \ "foreach c \[.tlcoll.$t children {}\] \{ .tlcoll.$t set \$c mk \[mark_sym 0\]\}" pack ${wgb}sel ${wgb}all ${wgb}none -in $wgb \ - -side left -padx 3pt -pady 3pt + -side left -padx 3p -pady 3p # trees with collections and markers, lang and other separately set wgt ".tlcoll.$t" @@ -1213,7 +1213,7 @@ if {$::tcl_platform(platform) ne "windows"} { create_dlg .edsyms . wm title .edsyms [__ "Symlinks"] - pack [ttk::frame .edsyms.bg -padding 3pt] -expand 1 -fill both + pack [ttk::frame .edsyms.bg -padding 3p] -expand 1 -fill both set rw -1 pack [ttk::frame .edsyms.fr0] -in .edsyms.bg -expand 1 -fill both @@ -1345,7 +1345,7 @@ proc run_menu {} { menu .mn . configure -menu .mn if $::plain_unix { - .mn configure -borderwidth 1pt + .mn configure -borderwidth 1p .mn configure -background $::default_bg } .mn add command -command abort_menu -label [__ "Abort"] @@ -1387,20 +1387,20 @@ proc run_menu {} { } # wallpaper, for a uniform background - pack [ttk::frame .bg -padding 3pt] -fill both -expand 1 + pack [ttk::frame .bg -padding 3p] -fill both -expand 1 # title ttk::label .title -text [__ "TeX Live %s Installer" $::release_year] \ -font titlefont - pack .title -pady {10pt 1pt} -in .bg + pack .title -pady {10p 1p} -in .bg pack [ttk::label .svn -text "r. $::svn"] -in .bg pack [ttk::separator .seph0 -orient horizontal] \ - -in .bg -pady 3pt -fill x + -in .bg -pady 3p -fill x # frame at bottom with install/quit buttons pack [ttk::frame .final] \ - -in .bg -side bottom -pady {5pt 2pt} -fill x + -in .bg -side bottom -pady {5p 2p} -fill x ppack [ttk::button .install -text [__ "Install"] -command maybe_install] \ -in .final -side right ppack [ttk::button .quit -text [__ "Quit"] -command { @@ -1414,7 +1414,7 @@ proc run_menu {} { }] -in .final -side left } pack [ttk::separator .seph1 -orient horizontal] \ - -in .bg -side bottom -pady 3pt -fill x + -in .bg -side bottom -pady 3p -fill x # directories, selections # advanced and basic have different frame setups @@ -1610,7 +1610,7 @@ proc run_menu {} { if $::advanced { pack [ttk::separator .sepv -orient vertical] \ - -in .bg -side left -padx 3pt -fill y + -in .bg -side left -padx 3p -fill y pack [ttk::frame .options] -in .bg -side right -fill both -expand 1 set curf .options diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index bfb022e023a..62a01de8b96 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -2102,6 +2102,7 @@ $standardtex 'acro', 'definitions\.tex|' . $standardtex, 'algxpar', '\.kw\.tex|' . $standardtex, 'aobs-tikz', 'tikz.*tex', + 'aomart', 'aom_orcid_logo\.|' . $standardtex, 'ae', '\.fd$|\.sty', 'alchemist', 'alchemist.sty', # not manual.sty 'alertmessage','img|' . $standardtex, diff --git a/Master/tlpkg/texlive.tlpdb b/Master/tlpkg/texlive.tlpdb index 054ec51d539..91366957861 100644 --- a/Master/tlpkg/texlive.tlpdb +++ b/Master/tlpkg/texlive.tlpdb @@ -26,11 +26,11 @@ depend container_split_src_files/1 depend frozen/0 depend minrelease/2016 depend release/2024 -depend revision/73252 +depend revision/73328 name 00texlive.image category TLCore -revision 73234 +revision 73327 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 @@ -780,6 +780,7 @@ runfiles size=14492 tlpkg/tlpsrc/biblatex-chem.tlpsrc tlpkg/tlpsrc/biblatex-chicago.tlpsrc tlpkg/tlpsrc/biblatex-claves.tlpsrc + tlpkg/tlpsrc/biblatex-cse.tlpsrc tlpkg/tlpsrc/biblatex-cv.tlpsrc tlpkg/tlpsrc/biblatex-dw.tlpsrc tlpkg/tlpsrc/biblatex-enc.tlpsrc @@ -1084,6 +1085,7 @@ runfiles size=14492 tlpkg/tlpsrc/chs-physics-report.tlpsrc tlpkg/tlpsrc/chscite.tlpsrc tlpkg/tlpsrc/churchslavonic.tlpsrc + tlpkg/tlpsrc/chuushaku.tlpsrc tlpkg/tlpsrc/cidarticle.tlpsrc tlpkg/tlpsrc/cinzel.tlpsrc tlpkg/tlpsrc/circ.tlpsrc @@ -2710,6 +2712,7 @@ runfiles size=14492 tlpkg/tlpsrc/librefranklin.tlpsrc tlpkg/tlpsrc/libris.tlpsrc tlpkg/tlpsrc/lie-hasse.tlpsrc + tlpkg/tlpsrc/liederbuch.tlpsrc tlpkg/tlpsrc/liftarm.tlpsrc tlpkg/tlpsrc/light-latex-make.tlpsrc tlpkg/tlpsrc/ligtype.tlpsrc @@ -2867,6 +2870,7 @@ runfiles size=14492 tlpkg/tlpsrc/luarandom.tlpsrc tlpkg/tlpsrc/luaset.tlpsrc tlpkg/tlpsrc/luasseq.tlpsrc + tlpkg/tlpsrc/luatbls.tlpsrc tlpkg/tlpsrc/luatex.tlpsrc tlpkg/tlpsrc/luatex85.tlpsrc tlpkg/tlpsrc/luatexbase.tlpsrc @@ -4244,6 +4248,7 @@ runfiles size=14492 tlpkg/tlpsrc/tabularborder.tlpsrc tlpkg/tlpsrc/tabularcalc.tlpsrc tlpkg/tlpsrc/tabularew.tlpsrc + tlpkg/tlpsrc/tabularray-abnt.tlpsrc tlpkg/tlpsrc/tabularray.tlpsrc tlpkg/tlpsrc/tabulary.tlpsrc tlpkg/tlpsrc/tabvar.tlpsrc @@ -4981,7 +4986,7 @@ depend setting_available_architectures:aarch64-linux amd64-freebsd amd64-netbsd name 00texlive.installer category TLCore -revision 73252 +revision 73328 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 @@ -9067,11 +9072,11 @@ catalogue-version 3.13g name acmart category Package -revision 73187 +revision 73261 shortdesc Class for typesetting publications of ACM longdesc This package provides a class for typesetting publications of longdesc the Association for Computing Machinery (ACM). -docfiles size=3505 +docfiles size=3482 texmf-dist/doc/latex/acmart/README details="Readme" texmf-dist/doc/latex/acmart/acm-jdslogo.png texmf-dist/doc/latex/acmart/acmart.bib @@ -9091,6 +9096,7 @@ docfiles size=3505 texmf-dist/doc/latex/acmart/samples/sample-acmsmall-conf.tex texmf-dist/doc/latex/acmart/samples/sample-acmsmall-submission.pdf texmf-dist/doc/latex/acmart/samples/sample-acmsmall-submission.tex + texmf-dist/doc/latex/acmart/samples/sample-acmsmall-tagged-luamml-mathml.html texmf-dist/doc/latex/acmart/samples/sample-acmsmall-tagged.pdf texmf-dist/doc/latex/acmart/samples/sample-acmsmall-tagged.tex texmf-dist/doc/latex/acmart/samples/sample-acmsmall.pdf @@ -9119,11 +9125,11 @@ docfiles size=3505 texmf-dist/doc/latex/acmart/samples/samples.ins texmf-dist/doc/latex/acmart/samples/sampleteaser.pdf texmf-dist/doc/latex/acmart/samples/software.bib -srcfiles size=75 +srcfiles size=76 texmf-dist/source/latex/acmart/Makefile texmf-dist/source/latex/acmart/acmart.dtx texmf-dist/source/latex/acmart/acmart.ins -runfiles size=96 +runfiles size=97 texmf-dist/bibtex/bst/acmart/ACM-Reference-Format.bst texmf-dist/tex/latex/acmart/acmart-tagged.cls texmf-dist/tex/latex/acmart/acmart.cls @@ -9138,7 +9144,7 @@ catalogue-contact-repository https://github.com/borisveytsman/acmart/ catalogue-ctan /macros/latex/contrib/acmart catalogue-license lppl1.3 catalogue-topics class comp-sci comp-theory engineering journalpub -catalogue-version 2.11 +catalogue-version 2.12 name acmconf category Package @@ -19664,14 +19670,12 @@ catalogue-version 1.01 name aomart category Package -revision 72865 +revision 73310 shortdesc Typeset articles for the Annals of Mathematics longdesc The package provides a class for typesetting articles for The longdesc Annals of Mathematics. -docfiles size=477 +docfiles size=473 texmf-dist/doc/latex/aomart/README details="Readme" - texmf-dist/doc/latex/aomart/aom_orcid_logo.eps - texmf-dist/doc/latex/aomart/aom_orcid_logo.pdf texmf-dist/doc/latex/aomart/aomart.bib texmf-dist/doc/latex/aomart/aomart.pdf details="Package documentation" texmf-dist/doc/latex/aomart/aomfrench.pdf @@ -19686,9 +19690,11 @@ srcfiles size=23 texmf-dist/source/latex/aomart/Makefile texmf-dist/source/latex/aomart/aomart.dtx texmf-dist/source/latex/aomart/aomart.ins -runfiles size=21 +runfiles size=25 texmf-dist/bibtex/bst/aomart/aomalpha.bst texmf-dist/bibtex/bst/aomart/aomplain.bst + texmf-dist/tex/latex/aomart/aom_orcid_logo.eps + texmf-dist/tex/latex/aomart/aom_orcid_logo.pdf texmf-dist/tex/latex/aomart/aomart.cls catalogue-ctan /macros/latex/contrib/aomart catalogue-license lppl1.3 @@ -27300,7 +27306,7 @@ catalogue-version 1.0 name babel category Package -revision 73182 +revision 73268 shortdesc Multilingual support for LaTeX, LuaLaTeX, XeLaTeX, and Plain TeX longdesc This package manages culturally-determined typographical (and longdesc other) rules for a wide range of languages. A document may @@ -27317,13 +27323,13 @@ docfiles size=309 texmf-dist/doc/latex/babel/README.md details="Readme" texmf-dist/doc/latex/babel/babel-code.pdf details="Code documentation" texmf-dist/doc/latex/babel/babel.pdf details="User guide" -srcfiles size=478 +srcfiles size=479 texmf-dist/source/latex/babel/babel.dtx texmf-dist/source/latex/babel/babel.ins texmf-dist/source/latex/babel/bbcompat.dtx texmf-dist/source/latex/babel/bbidxglo.dtx texmf-dist/source/latex/babel/locale.zip -runfiles size=1278 +runfiles size=1281 texmf-dist/makeindex/babel/bbglo.ist texmf-dist/makeindex/babel/bbind.ist texmf-dist/tex/generic/babel/UKenglish.sty @@ -28299,7 +28305,7 @@ catalogue-contact-repository https://github.com/latex3/babel catalogue-ctan /macros/latex/required/babel/base catalogue-license lppl1.3 catalogue-topics multilingual expl3 -catalogue-version 24.15 +catalogue-version 25.1 name babel-albanian category Package @@ -34767,7 +34773,7 @@ catalogue-version 1.5 name bib2gls category Package -revision 73143 +revision 73299 shortdesc Command line application to convert .bib files to glossaries-extra.sty resource files longdesc This Java command line application may be used to extract longdesc glossary information stored in a .bib file and convert it into @@ -34785,7 +34791,7 @@ longdesc containing definitions (\newglossaryentry etc.) to the .bib longdesc format required by bib2gls. depend bib2gls.ARCH depend glossaries-extra -docfiles size=2074 +docfiles size=2096 texmf-dist/doc/man/man1/bib2gls.1 texmf-dist/doc/man/man1/bib2gls.man1.pdf texmf-dist/doc/man/man1/convertgls2bib.1 @@ -34863,19 +34869,19 @@ docfiles size=2074 texmf-dist/doc/support/bib2gls/examples/unaryoperators.bib texmf-dist/doc/support/bib2gls/examples/usergroups.bib texmf-dist/doc/support/bib2gls/examples/vegetables.bib -srcfiles size=1003 - texmf-dist/source/support/bib2gls/src/bib2gls-begin.tex - texmf-dist/source/support/bib2gls/src/bib2gls-cite.bib - texmf-dist/source/support/bib2gls/src/bib2gls-src.zip - texmf-dist/source/support/bib2gls/src/bib2gls-terms.bib - texmf-dist/source/support/bib2gls/src/bib2gls.bib - texmf-dist/source/support/bib2gls/src/bib2gls.pod - texmf-dist/source/support/bib2gls/src/bib2gls.tex - texmf-dist/source/support/bib2gls/src/convertgls2bib.pod - texmf-dist/source/support/bib2gls/src/datatool2bib.pod - texmf-dist/source/support/bib2gls/src/gls2bib-src.zip - texmf-dist/source/support/bib2gls/src/texparser-src.zip -runfiles size=633 +srcfiles size=1019 + texmf-dist/source/support/bib2gls/bib2gls-begin.tex + texmf-dist/source/support/bib2gls/bib2gls-cite.bib + texmf-dist/source/support/bib2gls/bib2gls-src.zip + texmf-dist/source/support/bib2gls/bib2gls-terms.bib + texmf-dist/source/support/bib2gls/bib2gls.bib + texmf-dist/source/support/bib2gls/bib2gls.pod + texmf-dist/source/support/bib2gls/bib2gls.tex + texmf-dist/source/support/bib2gls/convertgls2bib.pod + texmf-dist/source/support/bib2gls/datatool2bib.pod + texmf-dist/source/support/bib2gls/texparser-src.zip + texmf-dist/source/support/bib2gls/version.tex +runfiles size=628 texmf-dist/scripts/bib2gls/bib2gls.jar texmf-dist/scripts/bib2gls/bib2gls.sh texmf-dist/scripts/bib2gls/bibglscommon.jar @@ -34893,7 +34899,7 @@ catalogue-contact-repository https://github.com/nlct/bib2gls catalogue-ctan /support/bib2gls catalogue-license gpl3+ catalogue-topics bibtex-util glossary -catalogue-version 4.0a +catalogue-version 4.1 name bib2gls.aarch64-linux category Package @@ -36966,6 +36972,40 @@ catalogue-license lppl1.3 catalogue-topics biblatex catalogue-version 1.2.1 +name biblatex-cse +category Package +revision 73262 +shortdesc Council of Science Editors (CSE) style file for BibLaTeX +longdesc This is a BibLaTeX style that implements the bibliography style +longdesc of the Council of Science Editors (CSE) for BibLaTeX. I did +longdesc this style file by request of a user of my LaTeX template +longdesc novathesis. He was quite thorough, double and triple checking +longdesc that the output was conforming to the requirements of his +longdesc University (Faculty of Veterinary from the University of +longdesc Lisbon). Although this biblatex-cse style served the +longdesc requirements from his University, there may still be some +longdesc unconformities to the CSE style. If you find any, please open +longdesc an issue in the project's page on GitHub or, even better, +longdesc submit a pull request. +docfiles size=40 + texmf-dist/doc/latex/biblatex-cse/README.md details="Readme" + texmf-dist/doc/latex/biblatex-cse/biblatex-cse-doc.pdf details="Package documentation" + texmf-dist/doc/latex/biblatex-cse/biblatex-cse-doc.tex + texmf-dist/doc/latex/biblatex-cse/bibliography.bib +runfiles size=2 + texmf-dist/tex/latex/biblatex-cse/biblatex-cse.bbx + texmf-dist/tex/latex/biblatex-cse/biblatex-cse.cbx +catalogue-contact-announce https://github.com/joaomlourenco/biblatex-cse +catalogue-contact-bugs https://github.com/joaomlourenco/biblatex-cse/issues +catalogue-contact-development https://github.com/joaomlourenco/biblatex-cse +catalogue-contact-home https://github.com/joaomlourenco/biblatex-cse +catalogue-contact-repository https://github.com/joaomlourenco/biblatex-cse +catalogue-contact-support https://github.com/joaomlourenco/biblatex-cse/discussions +catalogue-ctan /macros/latex/contrib/biblatex-contrib/biblatex-cse +catalogue-license lppl1.3c +catalogue-topics biblatex +catalogue-version 1.1.0 + name biblatex-cv category Package revision 59433 @@ -38528,16 +38568,16 @@ catalogue-version 0.0.1 name biblatex-software category Package -revision 64030 +revision 73321 shortdesc BibLaTeX stylefiles for software products longdesc This package implements software entry types for BibLaTeX in longdesc the form of a bibliography style extension. It requires the longdesc Biber backend. -docfiles size=94 - texmf-dist/doc/latex/biblatex-software/Changes +docfiles size=97 texmf-dist/doc/latex/biblatex-software/LICENSE texmf-dist/doc/latex/biblatex-software/README.md details="Readme" texmf-dist/doc/latex/biblatex-software/biblio.bib + texmf-dist/doc/latex/biblatex-software/history.tex texmf-dist/doc/latex/biblatex-software/manual.bib texmf-dist/doc/latex/biblatex-software/mkbiblatexstubs.sh texmf-dist/doc/latex/biblatex-software/sample-content.tex @@ -38561,7 +38601,7 @@ catalogue-contact-repository https://gitlab.inria.fr/gt-sw-citation/bibtex-sw-en catalogue-ctan /macros/latex/contrib/biblatex-contrib/biblatex-software catalogue-license lppl1.3 catalogue-topics biblatex -catalogue-version 1.2-5 +catalogue-version 1.2-6 name biblatex-source-division category Package @@ -39762,14 +39802,13 @@ catalogue-version 2.2 name bidi category Package -revision 73226 +revision 73316 shortdesc Bidirectional typesetting in plain TeX and LaTeX, using XeTeX longdesc A convenient interface for typesetting bidirectional texts with longdesc plain TeX and LaTeX. The package includes adaptations for use longdesc with many other commonly-used packages. -docfiles size=1166 +docfiles size=1146 texmf-dist/doc/xelatex/bidi/README details="Readme" - texmf-dist/doc/xelatex/bidi/bidi-bibitem.pdf texmf-dist/doc/xelatex/bidi/bidi-doc.pdf details="Package user documentation" texmf-dist/doc/xelatex/bidi/bidi-logo.tex texmf-dist/doc/xelatex/bidi/bidi.pdf details="Package source documentation" @@ -39792,7 +39831,7 @@ docfiles size=1166 texmf-dist/doc/xelatex/bidi/test2-colortbl.tex texmf-dist/doc/xelatex/bidi/test2-wrapfig.tex texmf-dist/doc/xelatex/bidi/test3-wrapfig.tex -srcfiles size=289 +srcfiles size=281 texmf-dist/source/xelatex/bidi/bidi-doc-intro.ltx texmf-dist/source/xelatex/bidi/bidi-doc-latex-basics.ltx texmf-dist/source/xelatex/bidi/bidi-doc-latex-pkgs.ltx @@ -39805,7 +39844,7 @@ srcfiles size=289 texmf-dist/source/xelatex/bidi/bidi-doc.ltx texmf-dist/source/xelatex/bidi/bidi.dtx texmf-dist/source/xelatex/bidi/bidi.ins -runfiles size=368 +runfiles size=360 texmf-dist/tex/xelatex/bidi/adjmulticol-xetex-bidi.def texmf-dist/tex/xelatex/bidi/algorithm2e-xetex-bidi.def texmf-dist/tex/xelatex/bidi/amsart-xetex-bidi.def @@ -39850,6 +39889,7 @@ runfiles size=368 texmf-dist/tex/xelatex/bidi/beamerouterthemetree-xetex-bidi.def texmf-dist/tex/xelatex/bidi/beamerthemeHannover-xetex-bidi.def texmf-dist/tex/xelatex/bidi/beamerthemeSingapore-xetex-bidi.def + texmf-dist/tex/xelatex/bidi/bidi-bibitem.pdf texmf-dist/tex/xelatex/bidi/bidi-logo.pdf texmf-dist/tex/xelatex/bidi/bidi-media9.sty texmf-dist/tex/xelatex/bidi/bidi-perpage.sty @@ -39917,11 +39957,11 @@ runfiles size=368 texmf-dist/tex/xelatex/bidi/lettrine-xetex-bidi.def texmf-dist/tex/xelatex/bidi/lineno-xetex-bidi.def texmf-dist/tex/xelatex/bidi/listings-xetex-bidi.def - texmf-dist/tex/xelatex/bidi/loadingorder-xetex-bidi.def texmf-dist/tex/xelatex/bidi/longtable-xetex-bidi.def texmf-dist/tex/xelatex/bidi/lscape-xetex-bidi.def texmf-dist/tex/xelatex/bidi/mathtools-xetex-bidi.def texmf-dist/tex/xelatex/bidi/mdframed-xetex-bidi.def + texmf-dist/tex/xelatex/bidi/media9-xetex-bidi.def texmf-dist/tex/xelatex/bidi/memoir-xetex-bidi.def texmf-dist/tex/xelatex/bidi/midfloat-xetex-bidi.def texmf-dist/tex/xelatex/bidi/minitoc-xetex-bidi.def @@ -39937,7 +39977,7 @@ runfiles size=368 texmf-dist/tex/xelatex/bidi/pdflscape-xetex-bidi.def texmf-dist/tex/xelatex/bidi/pdfpages-xetex-bidi.def texmf-dist/tex/xelatex/bidi/pgfcorescopes.code-xetex-bidi.def - texmf-dist/tex/xelatex/bidi/pgfsys.code-xetex-bidi.def + texmf-dist/tex/xelatex/bidi/pgfsys-xetex-bidi.def texmf-dist/tex/xelatex/bidi/picinpar-xetex-bidi.def texmf-dist/tex/xelatex/bidi/plain-xetex-bidi.def texmf-dist/tex/xelatex/bidi/pstricks-xetex-bidi.def @@ -39977,7 +40017,7 @@ catalogue-contact-support https://github.com/xepersian/bidi/discussions catalogue-ctan /macros/xetex/latex/bidi catalogue-license lppl1.3c catalogue-topics typesetting xetex bidi class -catalogue-version 40.9 +catalogue-version 41.3 name bidi-atbegshi category Package @@ -40364,7 +40404,7 @@ catalogue-version 0.1 name bithesis category Package -revision 72491 +revision 73285 shortdesc Templates for the Beijing Institute of Technology longdesc This package establishes a simple and easy-to-use LaTeX longdesc template for Beijing Institute of Technology dissertations, @@ -40390,7 +40430,7 @@ catalogue-contact-support https://github.com/BITNP/BIThesis/discussions catalogue-ctan /macros/unicodetex/latex/bithesis catalogue-license lppl1.3c catalogue-topics class dissertation doc-templ chinese expl3 -catalogue-version 3.8.0 +catalogue-version 3.8.1 name bitpattern category Package @@ -55779,6 +55819,29 @@ catalogue-license mit catalogue-topics churchslavonic multilingual-addon catalogue-version 0.2.4 +name chuushaku +category Package +revision 73263 +shortdesc Flexible book notes in Japanese +longdesc This style file is designed for compiling book notes in +longdesc Japanese as part of the body text. ("Chuushaku" means +longdesc "booknotes" in Japanese.) The "remember picture" feature +longdesc automatically calculates coordinates, eliminating the need for +longdesc manual adjustment of note positions. The main packages used in +longdesc chuushaku.sty are TikZ, amsmath, framed, and calc. +docfiles size=47 + texmf-dist/doc/latex/chuushaku/README.txt details="Readme" + texmf-dist/doc/latex/chuushaku/chuushaku-sample.pdf details="Example of use" language="ja" + texmf-dist/doc/latex/chuushaku/chuushaku-sample.tex + texmf-dist/doc/latex/chuushaku/chuushaku.pdf details="Package documentation" language="ja" + texmf-dist/doc/latex/chuushaku/chuushaku.tex +runfiles size=1 + texmf-dist/tex/latex/chuushaku/chuushaku.sty +catalogue-ctan /macros/latex/contrib/chuushaku +catalogue-license lppl1.3c +catalogue-topics notes japanese +catalogue-version 1.0.1 + name cidarticle category Package revision 68976 @@ -64637,7 +64700,7 @@ catalogue-version 0.3 name codehigh category Package -revision 72909 +revision 73306 shortdesc Highlight code and demos with l3regex and lpeg longdesc This package uses the l3regex package from the LaTeX3 longdesc Programming Layer to parse and highlight source code and demos. @@ -64646,7 +64709,7 @@ longdesc use than minted. But it is slower than both of them. Therefore longdesc in LuaTeX the package provides another way to highlight code: longdesc using LPeg (Parsing Expression Grammars for Lua). LPeg is much longdesc more powerful and faster than l3regex. -docfiles size=34 +docfiles size=28 texmf-dist/doc/latex/codehigh/README.txt details="Readme" texmf-dist/doc/latex/codehigh/codehigh.pdf details="Package documentation" texmf-dist/doc/latex/codehigh/codehigh.tex @@ -64658,7 +64721,7 @@ catalogue-contact-repository https://github.com/lvjr/codehigh catalogue-ctan /macros/latex/contrib/codehigh catalogue-license lppl1.3c catalogue-topics listing synt-hlt expl3 use-luatex -catalogue-version 2024A +catalogue-version 2025A name codepage category Package @@ -65560,7 +65623,7 @@ depend xdvi name collection-bibtexextra category Collection -revision 72943 +revision 73262 shortdesc BibTeX additional styles longdesc Additional BibTeX styles and bibliography data(bases), notably longdesc including BibLaTeX. @@ -65601,6 +65664,7 @@ depend biblatex-caspervector depend biblatex-chem depend biblatex-chicago depend biblatex-claves +depend biblatex-cse depend biblatex-cv depend biblatex-dw depend biblatex-enc @@ -66996,7 +67060,7 @@ depend verifica name collection-langjapanese category Collection -revision 72817 +revision 73263 shortdesc Japanese longdesc Support for Japanese; additional packages are in longdesc collection-langcjk. @@ -67014,6 +67078,7 @@ depend bxjatoucs depend bxjscls depend bxorigcapt depend bxwareki +depend chuushaku depend collection-langcjk depend convbkmk depend endnotesj @@ -67185,9 +67250,9 @@ depend utf8mex name collection-langportuguese category Collection -revision 67125 +revision 73303 shortdesc Portuguese -longdesc Support for Portuguese. +longdesc Support for Portuguese and Brazilian Portuguese. depend babel-portuges depend beamer-tut-pt depend collection-basic @@ -67200,6 +67265,7 @@ depend lshort-portuguese depend numberpt depend ordinalpt depend ptlatexcommands +depend tabularray-abnt depend xypic-tut-pt name collection-langspanish @@ -68962,7 +69028,7 @@ depend xunicode name collection-luatex category Collection -revision 73087 +revision 73266 shortdesc LuaTeX packages longdesc Packages for LuaTeX, a TeX engine using Lua as an embedded longdesc scripting and extension language, with native support for @@ -69035,6 +69101,7 @@ depend luaprogtable depend luaquotes depend luarandom depend luaset +depend luatbls depend luatex85 depend luatexbase depend luatexko @@ -69419,7 +69486,7 @@ depend threeddice name collection-music category Collection -revision 69613 +revision 73288 shortdesc Music packages longdesc Music-related fonts and packages. depend abc @@ -69439,6 +69506,7 @@ depend guitartabs depend harmony depend latex4musicians depend leadsheets +depend liederbuch depend lilyglyphs depend lyluatex depend m-tx @@ -70519,11 +70587,11 @@ catalogue-version 0.1.1 name coloredtheorem category Package -revision 72298 +revision 73320 shortdesc A colourful boxed theorem environment longdesc This packages provides a colourful boxed theorem environment, longdesc combining tcolorbox and breakable boxes. -docfiles size=63 +docfiles size=70 texmf-dist/doc/latex/coloredtheorem/LICENSE texmf-dist/doc/latex/coloredtheorem/README.md details="Readme" texmf-dist/doc/latex/coloredtheorem/coloredtheorem-doc.pdf details="Package documentation" @@ -70537,7 +70605,7 @@ catalogue-contact-support https://github.com/joaomlourenco/coloredtheorem/discus catalogue-ctan /macros/latex/contrib/coloredtheorem catalogue-license lppl1.3c catalogue-topics maths-theorem decoration boxing box-breaking colour -catalogue-version 1.0.4 +catalogue-version 1.1.0 name colorframed category Package @@ -86010,7 +86078,7 @@ catalogue-version 1.1.0 name cweb category Package -revision 73246 +revision 73259 catalogue cwebbin shortdesc CWEB for ANSI-C/C++ compilers longdesc A highly portable and extended version of Levy/Knuth CWEB 3.64c @@ -89975,16 +90043,16 @@ catalogue-version 2.0 name delimset category Package -revision 71829 +revision 73319 shortdesc Typeset and declare sets of delimiters with convenient size control longdesc delimset is a LaTeX2e package to typeset and declare sets of longdesc delimiters in math mode whose size can be adjusted longdesc conveniently. -docfiles size=94 +docfiles size=93 texmf-dist/doc/latex/delimset/README.txt details="Readme" texmf-dist/doc/latex/delimset/delimset.pdf details="Package documentation" texmf-dist/doc/latex/delimset/dlmssamp.tex -srcfiles size=17 +srcfiles size=18 texmf-dist/source/latex/delimset/delimset.dtx texmf-dist/source/latex/delimset/delimset.ins runfiles size=3 @@ -89993,7 +90061,7 @@ catalogue-also delim delimseasy catalogue-ctan /macros/latex/contrib/delimset catalogue-license lppl1.3 catalogue-topics maths -catalogue-version 2.0 +catalogue-version 2.1 name delimtxt category Package @@ -96529,16 +96597,16 @@ catalogue-version 2.10f name dtk-bibliography category Package -revision 72281 +revision 73293 shortdesc Bibliography of "Die TeXnische Komodie" longdesc This package contains the bibliography for "Die TeXnische longdesc Komodie", the journal of the German-speaking TeX User Group. It longdesc is updated on a quarterly basis. -docfiles size=73 +docfiles size=74 texmf-dist/doc/bibtex/dtk-bibliography/README.md details="Readme" texmf-dist/doc/bibtex/dtk-bibliography/dtk-bibliography.pdf details="The document itself" texmf-dist/doc/bibtex/dtk-bibliography/dtk-bibliography.tex -runfiles size=142 +runfiles size=143 texmf-dist/bibtex/bib/dtk-bibliography/dtk-bibliography.bib texmf-dist/tex/latex/dtk-bibliography/dtk-authoryear.bbx texmf-dist/tex/latex/dtk-bibliography/dtk-authoryear.dbx @@ -96549,7 +96617,7 @@ catalogue-contact-support https://github.com/dante-ev/dtk-bibliography/issues catalogue-ctan /info/dtk-bibliography catalogue-license lppl1.3c catalogue-topics journ-digest review-document german-doc -catalogue-version 2024-03 +catalogue-version 2024-04 name dtl category TLCore @@ -99622,7 +99690,7 @@ catalogue-topics notes editorial name easybook category Package -revision 73214 +revision 73290 shortdesc Easily typesetting Chinese theses or books longdesc easybook is a pure academic template created based on the longdesc ctexbook book document class. It also has the functions of book @@ -99648,7 +99716,7 @@ catalogue-contact-repository https://gitee.com/texno3/easybook catalogue-ctan /macros/latex/contrib/easybook catalogue-license lppl1.3c catalogue-topics book-pub dissertation class doc-templ chinese expl3 -catalogue-version 2024last +catalogue-version 2025b name easydtx category Package @@ -113400,19 +113468,20 @@ catalogue-topics class presentation name fancyhdr category Package -revision 73133 +revision 73273 shortdesc Extensive control of page headers and footers in LaTeX2e longdesc The package provides extensive facilities, both for longdesc constructing headers and footers, and for controlling their use longdesc (for example, at times when LaTeX would automatically change longdesc the heading style in use). -docfiles size=222 +docfiles size=327 texmf-dist/doc/latex/fancyhdr/README details="Readme" texmf-dist/doc/latex/fancyhdr/fancyhdr.pdf details="Users' manual (English)" -srcfiles size=55 +srcfiles size=87 texmf-dist/source/latex/fancyhdr/fancyhdr.dtx texmf-dist/source/latex/fancyhdr/fancyhdr.ins -runfiles size=8 +runfiles size=11 + texmf-dist/tex/latex/fancyhdr/extramarks-v4.sty texmf-dist/tex/latex/fancyhdr/extramarks.sty texmf-dist/tex/latex/fancyhdr/fancyhdr.sty texmf-dist/tex/latex/fancyhdr/fancyheadings.sty @@ -113422,7 +113491,7 @@ catalogue-contact-repository https://github.com/pietvo/fancyhdr catalogue-ctan /macros/latex/contrib/fancyhdr catalogue-license lppl1.3 catalogue-topics page-hf -catalogue-version 4.5 +catalogue-version 5.0 name fancyhdr-it category Package @@ -116972,24 +117041,21 @@ catalogue-version 1.1 name ffcode category Package -revision 70740 +revision 73318 shortdesc Fixed-font code blocks formatted nicely longdesc This LaTeX package helps you write source code in your academic longdesc papers and make it looks neat. It uses minted and tcolorbox, longdesc configuring them the right way, to ensure that code fragments longdesc and code blocks look nicer. -depend environ -depend microtype -depend minted -depend pgf +depend listings +depend pgfopts depend tcolorbox -depend xkeyval -docfiles size=130 +docfiles size=111 texmf-dist/doc/latex/ffcode/DEPENDS.txt texmf-dist/doc/latex/ffcode/LICENSE.txt texmf-dist/doc/latex/ffcode/README.md details="Readme" texmf-dist/doc/latex/ffcode/ffcode.pdf details="Package documentation" -srcfiles size=4 +srcfiles size=5 texmf-dist/source/latex/ffcode/ffcode.dtx texmf-dist/source/latex/ffcode/ffcode.ins runfiles size=1 @@ -116998,7 +117064,7 @@ catalogue-contact-repository https://github.com/yegor256/ffcode catalogue-ctan /macros/latex/contrib/ffcode catalogue-license mit catalogue-topics listing verbatim line-nos -catalogue-version 0.9.3 +catalogue-version 0.10.1 name ffslides category Package @@ -123335,11 +123401,11 @@ catalogue-version 0.7.3 name fontscale category Package -revision 73189 +revision 73289 shortdesc A flexible interface for setting font sizes longdesc This package provides an interface for selecting (arbitrary) longdesc font sizes and associated values. -docfiles size=41 +docfiles size=43 texmf-dist/doc/latex/fontscale/CHANGELOG.md texmf-dist/doc/latex/fontscale/README.txt details="Readme" texmf-dist/doc/latex/fontscale/beery.cls @@ -123355,7 +123421,7 @@ catalogue-contact-repository https://github.com/beeryoliver/fontscale catalogue-ctan /macros/latex/contrib/fontscale catalogue-license lppl1.3c catalogue-topics expl3 font-sel -catalogue-version 3.0.4 +catalogue-version 3.0.5 name fontscripts category Package @@ -135421,12 +135487,12 @@ catalogue-topics class presentation letter name hduthesis category Package -revision 73248 +revision 73300 shortdesc LaTeX class for bachelor and MPhil theses in Hangzhou Dianzi University longdesc This package provides a LaTeX template for graduation theses longdesc from Hangzhou Dianzi University. It supports the formatting of longdesc bachelor and MPhil degree theses. -docfiles size=628 +docfiles size=731 texmf-dist/doc/xelatex/hduthesis/License texmf-dist/doc/xelatex/hduthesis/README.md details="Readme" texmf-dist/doc/xelatex/hduthesis/cha/abstract.tex @@ -135489,9 +135555,9 @@ catalogue-contact-home https://github.com/myhsia/hduthesis catalogue-contact-repository https://github.com/myhsia/hduthesis catalogue-contact-support https://qm.qq.com/q/RGFmHwBecC catalogue-ctan /macros/xetex/latex/hduthesis -catalogue-license lppl1.3c +catalogue-license lppl1.3 catalogue-topics dissertation class doc-templ chinese expl3 -catalogue-version 0.5.1 +catalogue-version 0.5.2 name he-she category Package @@ -161182,7 +161248,7 @@ catalogue-topics numbers name kaytannollista-latexia category Package -revision 71784 +revision 73292 shortdesc Practical manual for LaTeX (Finnish) longdesc "Kaytannollista Latexia" is a practical manual for LaTeX longdesc written in the Finnish language. The manual covers most of the @@ -161210,7 +161276,7 @@ catalogue-contact-support https://github.com/tlikonen/latex-opas/discussions catalogue-ctan /info/kaytannollista-latexia catalogue-license cc-by-sa-4 catalogue-topics tut-latex finnish-doc -catalogue-version 2024.7 +catalogue-version 2025 name kblocks category Package @@ -161270,7 +161336,7 @@ catalogue-version 1.0 name kdpcover category Package -revision 65150 +revision 73278 shortdesc Covers for books published by Kindle Direct Publishing longdesc The problem this class solves is the necessity to change the longdesc size of the cover PDF according to the number of pages in the @@ -161280,16 +161346,15 @@ longdesc on-the-fly, using the qpdf tool. Obviously, you need to have it longdesc installed. Also, you must run pdflatex with the --shell-escape longdesc option, in order to allow LaTeX to run qpdf. depend anyfontsize +depend etoolbox depend geometry -depend graphics +depend iexec depend microtype depend pgf +depend pgfopts depend setspace depend textpos -depend tools depend xcolor -depend xifthen -depend xkeyval docfiles size=107 texmf-dist/doc/latex/kdpcover/DEPENDS.txt texmf-dist/doc/latex/kdpcover/LICENSE.txt @@ -161312,7 +161377,7 @@ catalogue-contact-repository https://github.com/yegor256/kdpcover catalogue-ctan /macros/latex/contrib/kdpcover catalogue-license mit catalogue-topics covers class doc-templ std-conform -catalogue-version 0.5.1 +catalogue-version 0.6.0 name kerkis category Package @@ -172004,11 +172069,11 @@ catalogue-version 0.7 name latex-via-exemplos category Package -revision 73237 +revision 73260 shortdesc A LaTeX course written in brazilian portuguese language longdesc This is a LaTeX2e course written in brazilian portuguese longdesc language. -docfiles size=578 +docfiles size=585 texmf-dist/doc/latex/latex-via-exemplos/README.md details="Readme" texmf-dist/doc/latex/latex-via-exemplos/changelog.txt texmf-dist/doc/latex/latex-via-exemplos/latex-via-exemplos-abntex2.tex @@ -182736,6 +182801,47 @@ catalogue-license lppl1.3c catalogue-topics diagram pgf-tikz catalogue-version 1.02 +name liederbuch +category Package +revision 73288 +shortdesc A LaTeX package for storing songs or other content, and repeated reuse in documents +longdesc This package is meant for content which you reuse regularly, +longdesc like songs in small booklets. For example the booklets used at +longdesc church, weddings or similar events. It has two major parts: You +longdesc typeset your content once (most likely a song), garnish it with +longdesc some meta data and put it into a sty-file. From there you can +longdesc insert this content into your document with one single line. +longdesc The inserted content can have header and footer that use the +longdesc meta data (i.e. title, composer, lyricist). Inside these +longdesc content fragments, you can use the \notenzeile (stave line) +longdesc command to combine an image of a stave line with song lyrics. +longdesc If correctly used, the lyrics are placed correctly below the +longdesc notes and need most often no or only minor adjustments. With +longdesc that you can combine any stave image with LaTeX fonts. You can +longdesc find resources and inspiration in a DemoProject. +docfiles size=122 + texmf-dist/doc/latex/liederbuch/DemoProjekt/DemoProjekt.pdf + texmf-dist/doc/latex/liederbuch/DemoProjekt/DemoProjekt.tex + texmf-dist/doc/latex/liederbuch/DemoProjekt/Readme_Demoprojekt.txt + texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuch.sty + texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuchSnippets/CVLB80-OhAlteBurschenherrlichkeit.ly + texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuchSnippets/CVLB80-OhAlteBurschenherrlichkeit.pdf + texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuchSnippets/haenschenKlein.ly + texmf-dist/doc/latex/liederbuch/DemoProjekt/TestLiederbuchSnippets/haenschenKlein.pdf + texmf-dist/doc/latex/liederbuch/DemoProjekt/printTestLiederbuch.pdf + texmf-dist/doc/latex/liederbuch/DemoProjekt/printTestLiederbuch.tex + texmf-dist/doc/latex/liederbuch/README.md details="Readme" + texmf-dist/doc/latex/liederbuch/liederbuch-documentation.pdf details="Package documentation" + texmf-dist/doc/latex/liederbuch/liederbuch-documentation.tex +runfiles size=5 + texmf-dist/tex/latex/liederbuch/liederbuch.sty + texmf-dist/tex/latex/liederbuch/printliederbuch.sty +catalogue-contact-repository https://bitbucket.org/maestro-glanz/liederbuch-package/src/master +catalogue-ctan /macros/latex/contrib/liederbuch +catalogue-license lppl1.3c +catalogue-topics music expl3 +catalogue-version 1.0 + name liftarm category Package revision 71309 @@ -189950,6 +190056,27 @@ catalogue-ctan /macros/luatex/latex/luasseq catalogue-license lppl1.3 catalogue-topics maths luatex +name luatbls +category Package +revision 73266 +shortdesc Lua tables made accessible in LaTeX +longdesc This package provides a LaTeX interface to create, modify, and +longdesc use the Lua data structure >>tables<<. Lua tables can be +longdesc declared with the help of luakeys, and this package provides +longdesc facilities to set, get, check, iterate, apply, etc. to the +longdesc table. +docfiles size=23 + texmf-dist/doc/lualatex/luatbls/README.md details="Readme" + texmf-dist/doc/lualatex/luatbls/luatbls.pdf details="Package documentation" + texmf-dist/doc/lualatex/luatbls/luatbls.tex +runfiles size=5 + texmf-dist/tex/lualatex/luatbls/luatbls.lua + texmf-dist/tex/lualatex/luatbls/luatbls.sty +catalogue-contact-repository https://github.com/kalekje/luatbls +catalogue-ctan /macros/luatex/latex/luatbls +catalogue-license mit +catalogue-topics luatex parser + name luatex category TLCore revision 71409 @@ -196062,12 +196189,12 @@ catalogue-version 0.5 name mcf2graph category Package -revision 73011 +revision 73324 shortdesc Draw chemical structure diagrams with MetaPost longdesc The Molecular Coding Format (MCF) is a linear notation for longdesc describing chemical structure diagrams. This package converts longdesc MCF to graphic files using MetaPost. -docfiles size=295 +docfiles size=421 texmf-dist/doc/metapost/mcf2graph/CHANGELOG texmf-dist/doc/metapost/mcf2graph/README details="Readme" texmf-dist/doc/metapost/mcf2graph/mcf_exa_soc.mp @@ -196078,13 +196205,13 @@ docfiles size=295 texmf-dist/doc/metapost/mcf2graph/mcf_to_graph.cmd texmf-dist/doc/metapost/mcf2graph/template_lib.mcf texmf-dist/doc/metapost/mcf2graph/template_soc.mp -runfiles size=51 +runfiles size=52 texmf-dist/metapost/mcf2graph/main_lib.mcf texmf-dist/metapost/mcf2graph/mcf2graph.mp catalogue-ctan /graphics/mcf2graph catalogue-license mit catalogue-topics graphics graphics-mpost chemistry -catalogue-version 5.15 +catalogue-version 5.16 name mcite category Package @@ -219121,7 +219248,7 @@ catalogue-version 1.0 name nlctdoc category Package -revision 72810 +revision 73305 shortdesc Package documentation class longdesc The class provides support for the documentation of the longdesc author's packages, using koma-script. This class is provided @@ -219133,9 +219260,9 @@ runfiles size=36 texmf-dist/tex/latex/nlctdoc/nlctdoc.cls texmf-dist/tex/latex/nlctdoc/nlctuserguide.sty catalogue-ctan /macros/latex/contrib/nlctdoc -catalogue-license lppl +catalogue-license lppl1.3 catalogue-topics doc-supp class -catalogue-version 1.11 +catalogue-version 1.12 name nmbib category Package @@ -237825,6 +237952,7 @@ docfiles size=9 runfiles size=106 texmf-dist/tex/luatex/penlight/penlight.lua texmf-dist/tex/luatex/penlight/penlight.sty +catalogue-also penlightplus catalogue-contact-repository https://github.com/kalekje/penlight catalogue-ctan /macros/luatex/generic/penlight catalogue-license mit @@ -237832,15 +237960,15 @@ catalogue-topics luatex name penlightplus category Package -revision 72426 +revision 73267 shortdesc Additions to the Penlight Lua libraries longdesc This package extends the penlight package by adding useful longdesc functions for interfacing with LaTeX. -docfiles size=29 +docfiles size=26 texmf-dist/doc/luatex/penlightplus/README.md details="Readme" texmf-dist/doc/luatex/penlightplus/penlightplus.pdf details="Package documentation" texmf-dist/doc/luatex/penlightplus/penlightplus.tex -runfiles size=12 +runfiles size=10 texmf-dist/tex/luatex/penlightplus/penlightplus.lua texmf-dist/tex/luatex/penlightplus/penlightplus.sty catalogue-contact-repository https://github.com/kalekje/penlight @@ -241440,11 +241568,11 @@ catalogue-version 1.0.2 name pixelarttikz category Package -revision 73069 +revision 73309 shortdesc Work with PixelArts, with TikZ longdesc The package defines commands and an environment for displaying longdesc pixel arts. -docfiles size=403 +docfiles size=417 texmf-dist/doc/latex/pixelarttikz/PAkoala.csv texmf-dist/doc/latex/pixelarttikz/PAsorciere.csv texmf-dist/doc/latex/pixelarttikz/PAyoda.csv @@ -241457,12 +241585,14 @@ docfiles size=403 texmf-dist/doc/latex/pixelarttikz/cap.csv texmf-dist/doc/latex/pixelarttikz/test1.csv texmf-dist/doc/latex/pixelarttikz/testlist.csv -runfiles size=9 +runfiles size=11 texmf-dist/tex/latex/pixelarttikz/PixelArtTikz.sty +catalogue-contact-home https://forge.apps.education.fr/pierquetcedric/packages-latex +catalogue-contact-repository https://forge.apps.education.fr/pierquetcedric/packages-latex catalogue-ctan /graphics/pgf/contrib/pixelarttikz catalogue-license lppl1.3c catalogue-topics graphics pgf-tikz -catalogue-version 0.1.5 +catalogue-version 0.1.6 name pkfix category Package @@ -244874,30 +245004,18 @@ catalogue-topics font font-proportional font-body font-mono font-sans font-type1 name plex-otf category Package -revision 73042 +revision 73272 shortdesc Support for the OpenType font IBM Plex longdesc This package supports the free otf fonts from the IBM Plex longdesc project which are available from GitHub or already part of your longdesc system (Windows/Linux/...). This package supports only XeLaTeX longdesc or LuaLaTeX; for pdfLaTeX use plex-mono.sty, plex-sans.sty, -longdesc and/or plex-serif.sty from the plex package. IBM Plex has no -longdesc math symbols. You will have to use one of the existing math -longdesc fonts if you need them. -docfiles size=198 +longdesc and/or plex-serif.sty from the plex package. +docfiles size=186 texmf-dist/doc/fonts/plex-otf/Changes - texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-1.tex - texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-10.tex - texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-11.tex - texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-2.tex - texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-3.tex - texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-4.tex - texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-5.tex - texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-6.tex - texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-7.tex - texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-8.tex - texmf-dist/doc/fonts/plex-otf/Examples/plex-otf-9.tex texmf-dist/doc/fonts/plex-otf/README.md details="Readme" texmf-dist/doc/fonts/plex-otf/plex-otf-doc.bib + texmf-dist/doc/fonts/plex-otf/plex-otf-doc.fonts texmf-dist/doc/fonts/plex-otf/plex-otf-doc.pdf details="Package documentation" texmf-dist/doc/fonts/plex-otf/plex-otf-doc.tex runfiles size=4 @@ -244906,7 +245024,7 @@ catalogue-also plex catalogue-ctan /fonts/plex-otf catalogue-license lppl1.3 catalogue-topics font-absent font-serif font-sans font-proportional font-mono font-otf -catalogue-version 0.09 +catalogue-version 0.10 name plimsoll category Package @@ -248571,7 +248689,7 @@ catalogue-version 0.99-k name profsio category Package -revision 73069 +revision 73308 shortdesc Commands (with TikZ) to work with French "BTS SIO" maths themes longdesc This package provides some commands (in French) to work with: longdesc tables of Karnaugh ; MPM graphs ; simple graphs. @@ -248587,10 +248705,12 @@ docfiles size=184 texmf-dist/doc/latex/profsio/README.md details="Readme" runfiles size=40 texmf-dist/tex/latex/profsio/ProfSio.sty +catalogue-contact-home https://forge.apps.education.fr/pierquetcedric/packages-latex +catalogue-contact-repository https://forge.apps.education.fr/pierquetcedric/packages-latex catalogue-ctan /graphics/pgf/contrib/profsio catalogue-license lppl1.3c catalogue-topics graphics pgf-tikz maths -catalogue-version 0.2.8 +catalogue-version 0.2.9 name program category Package @@ -259002,13 +259122,13 @@ catalogue-version 2024F name randintlist category Package -revision 73069 -shortdesc Creating random integer number lists , with repeating and sorting options +revision 73304 +shortdesc Creating random integer number lists, with repeating and sorting options longdesc This package (like luarandom, but without the obligation to use longdesc LuaLaTeX) provides some macros for creating random integer longdesc number lists between a and b. This list can have multiple longdesc numbers or not, and this list can be sorted or not. -docfiles size=25 +docfiles size=27 texmf-dist/doc/latex/randintlist/README.md details="Readme" texmf-dist/doc/latex/randintlist/randintlist-doc.pdf details="Package documentation" texmf-dist/doc/latex/randintlist/randintlist-doc.tex @@ -259017,7 +259137,7 @@ runfiles size=2 catalogue-ctan /macros/latex/contrib/randintlist catalogue-license lppl1.3c catalogue-topics random calculation -catalogue-version 0.1.2 +catalogue-version 0.1.3 name random category Package @@ -268926,7 +269046,7 @@ catalogue-version 1.8 name scaletextbullet category Package -revision 73082 +revision 73287 shortdesc Resize the \textbullet without changing its vertical center longdesc This package enables the user to resize the \textbullet without longdesc moving its vertical center. This process is not fully automated @@ -268939,12 +269059,12 @@ docfiles size=25 texmf-dist/doc/latex/scaletextbullet/beery.cls texmf-dist/doc/latex/scaletextbullet/scaletextbullet.pdf details="Package documentation" texmf-dist/doc/latex/scaletextbullet/scaletextbullet.tex -runfiles size=2 +runfiles size=3 texmf-dist/tex/latex/scaletextbullet/scaletextbullet.sty catalogue-ctan /macros/latex/contrib/scaletextbullet catalogue-license lppl1.3c catalogue-topics list-bull font-supp-misc expl3 -catalogue-version 1.0.3 +catalogue-version 1.0.4 name scanpages category Package @@ -270849,7 +270969,7 @@ catalogue-version 3.42 name scripture category Package -revision 69232 +revision 73276 shortdesc A LaTeX style for typesetting Bible quotations longdesc The scripture package provides a set of macros for typesetting longdesc quotations from the Bible. It provides many features commonly @@ -270857,20 +270977,20 @@ longdesc seen in Bibles such as dropped text for chapter numbers, longdesc superscripts for verse numbers, indented lines for poetry longdesc sections, narrow sections and hanging paragraphs. A reference longdesc for the quotation can optionally be added. -docfiles size=237 +docfiles size=283 texmf-dist/doc/latex/scripture/README.md details="Readme" texmf-dist/doc/latex/scripture/scripture.pdf details="Package documentation" -srcfiles size=42 +srcfiles size=66 texmf-dist/source/latex/scripture/scripture.dtx texmf-dist/source/latex/scripture/scripture.ins -runfiles size=19 +runfiles size=34 texmf-dist/tex/latex/scripture/scripture.sty catalogue-contact-bugs https://github.com/dcpurton/scripture/issues catalogue-contact-repository https://github.com/dcpurton/scripture catalogue-ctan /macros/latex/contrib/scripture catalogue-license lppl1.3c catalogue-topics theology expl3 -catalogue-version 2.0 +catalogue-version 2.1 name scrjrnl category Package @@ -273647,14 +273767,14 @@ catalogue-version 1.6a name simpleicons category Package -revision 73221 +revision 73294 shortdesc Simple Icons for LaTeX longdesc Similar to FontAwesome icons being provided on LaTeX by the longdesc fontawesome package, this package aims to do the same with longdesc Simple Icons. For reference, visit their website: longdesc https://simpleicons.org/. execute addMap simpleicons.map -docfiles size=673 +docfiles size=674 texmf-dist/doc/fonts/simpleicons/README.md details="Readme" texmf-dist/doc/fonts/simpleicons/bindings.tex texmf-dist/doc/fonts/simpleicons/simpleicons.pdf details="Package documentation" @@ -273710,7 +273830,7 @@ catalogue-contact-repository https://github.com/ineshbose/simple-icons-latex catalogue-ctan /fonts/simpleicons catalogue-license cc-by-1 catalogue-topics font font-symbol font-supp-symbol font-otf font-type1 -catalogue-version 14.0.0 +catalogue-version 14.0.1 name simpleinvoice category Package @@ -286778,6 +286898,29 @@ catalogue-license lppl1.3c catalogue-topics table table-long expl3 catalogue-version 2024A +name tabularray-abnt +category Package +revision 73303 +shortdesc An ABNT (Brazilian standard) theme for tabularray +longdesc This is the abnt Brazilian standard style for tabularray. It +longdesc provides the themes abnt (for tables with numerical data) and +longdesc quadro (for tables with text information). Additional +longdesc environments abnttblr, tallabnttblr, and longabnttblr are +longdesc wrappers to tblr, talltblr, and longtblr that apply the abnt +longdesc theme automatically and permit to set the table font using +longdesc \SetAbntTblrFont{} provided here. +docfiles size=29 + texmf-dist/doc/latex/tabularray-abnt/README.md details="Readme" + texmf-dist/doc/latex/tabularray-abnt/changelog.txt + texmf-dist/doc/latex/tabularray-abnt/tabularray-abnt-pt-br.pdf details="Package documentation" language="pt-br" + texmf-dist/doc/latex/tabularray-abnt/tabularray-abnt-pt-br.tex + texmf-dist/doc/latex/tabularray-abnt/tabularray-abnt.bib +runfiles size=3 + texmf-dist/tex/latex/tabularray-abnt/tabularray-abnt.sty +catalogue-ctan /macros/latex/contrib/tabularray-abnt +catalogue-license lppl1.3c +catalogue-topics table portuguese-br std-conform expl3 + name tabulary category Package revision 71463 @@ -290354,7 +290497,7 @@ binfiles arch=x86_64-solaris size=1 name tex4ht category Package -revision 73104 +revision 73325 shortdesc Convert (La)TeX to HTML/XML longdesc A converter from TeX and LaTeX to SGML-based formats such as longdesc (X)HTML, MathML, OpenDocument, and Docbook, providing a @@ -290526,7 +290669,7 @@ srcfiles size=4665 texmf-dist/source/generic/tex4ht/update-htfonts texmf-dist/source/generic/tex4ht/wripro.tex texmf-dist/source/generic/tex4ht/xtpipes.tex -runfiles size=13132 +runfiles size=13133 texmf-dist/scripts/tex4ht/ht.sh texmf-dist/scripts/tex4ht/htcopy.pl texmf-dist/scripts/tex4ht/htlatex.sh @@ -302376,7 +302519,7 @@ docfiles size=748 name texlive-msg-translations category TLCore -revision 71858 +revision 73313 shortdesc translations of the TeX Live installer and TeX Live Manager longdesc This package contains the translated messages of the TeX Live longdesc installer and TeX Live Manager. For information on creating or @@ -302433,7 +302576,7 @@ docfiles size=376 name texlive-scripts category TLCore -revision 73252 +revision 73328 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. @@ -302441,7 +302584,7 @@ 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 -docfiles size=575 +docfiles size=576 doc.html texmf-dist/doc/man/man1/fmtutil-sys.1 texmf-dist/doc/man/man1/fmtutil-sys.man1.pdf @@ -303248,7 +303391,7 @@ docfiles size=329 name texlive.infra category TLCore -revision 73252 +revision 73278 shortdesc basic TeX Live infrastructure longdesc This package contains the files needed to get tlmgr running: longdesc perl modules, xz binaries, plus (sometimes) tar, wget, lz4, and @@ -307380,22 +307523,23 @@ catalogue-version 1.0 name tikz-decofonts category Package -revision 73069 -shortdesc Simple decoration fontes, made with TikZ, for short texts -longdesc Three simple "decoration" fonts made with TikZ, for short -longdesc texts: paint brush; ink brush; pixelart brush. -docfiles size=43 +revision 73307 +shortdesc Simple decoration fonts, made with TikZ, for short texts +longdesc Some simple "decoration" fonts made with TikZ, for short texts: +longdesc paint brush; ink brush; pixelart brush; bicolor texts. +docfiles size=56 texmf-dist/doc/latex/tikz-decofonts/README.md details="Readme" texmf-dist/doc/latex/tikz-decofonts/tikz-decofonts-doc.pdf details="Package documentation" texmf-dist/doc/latex/tikz-decofonts/tikz-decofonts-doc.tex texmf-dist/doc/latex/tikz-decofonts/tkzbrushA.pdf texmf-dist/doc/latex/tikz-decofonts/tkzbrushA.tex -runfiles size=10 +runfiles size=11 texmf-dist/tex/latex/tikz-decofonts/tikz-decofonts.sty +catalogue-contact-repository https://forge.apps.education.fr/pierquetcedric/packages-latex catalogue-ctan /graphics/pgf/contrib/tikz-decofonts catalogue-license lppl1.3c cc-by-sa-4 -catalogue-topics amusements pgf-tikz graphics -catalogue-version 0.1.0 +catalogue-topics amusements pgf-tikz graphics font-decor +catalogue-version 0.1.1 name tikz-dependency category Package @@ -308477,7 +308621,7 @@ catalogue-version 1.2 name tikzducks category Package -revision 73095 +revision 73323 shortdesc A little fun package for using rubber ducks in TikZ longdesc The package is a LaTeX package for ducks to be used in TikZ longdesc pictures. This project is a continuation of an answer at @@ -308503,7 +308647,7 @@ catalogue-contact-support https://github.com/samcarter/tikzducks/issues catalogue-ctan /graphics/pgf/contrib/tikzducks catalogue-license lppl1.3c catalogue-topics amusements graphics pgf-tikz expl3 -catalogue-version 1.9 +catalogue-version 1.10 name tikzfill category Package @@ -308558,7 +308702,7 @@ catalogue-version 1.0 name tikzlings category Package -revision 73108 +revision 73322 shortdesc A collection of cute little animals and similar creatures longdesc A collection of LaTeX packages for drawing cute little animals longdesc and similar creatures using TikZ. Currently, the following @@ -308570,9 +308714,10 @@ depend epstopdf-pkg depend iftex depend pgf depend pgf-blur -docfiles size=208 +docfiles size=226 texmf-dist/doc/latex/tikzlings/DEPENDS.txt texmf-dist/doc/latex/tikzlings/README.md details="Readme" + texmf-dist/doc/latex/tikzlings/README.pdf texmf-dist/doc/latex/tikzlings/tikzlings-doc-settings.sty texmf-dist/doc/latex/tikzlings/tikzlings-doc.pdf details="Package documentation" texmf-dist/doc/latex/tikzlings/tikzlings-doc.tex @@ -308613,7 +308758,7 @@ catalogue-contact-support https://github.com/samcarter/tikzlings/issues catalogue-ctan /graphics/pgf/contrib/tikzlings catalogue-license lppl1.3c catalogue-topics amusements graphics pgf-tikz expl3 -catalogue-version 2.1 +catalogue-version 2.2 name tikzmark category Package @@ -309981,7 +310126,7 @@ catalogue-version 3.1 name titlesec category Package -revision 68677 +revision 73302 shortdesc Select alternative section titles longdesc A package providing an interface to sectioning commands for longdesc selection from various title styles. E.g., marginal titles and @@ -310006,7 +310151,7 @@ catalogue-contact-repository https://github.com/jbezos/titlesec catalogue-ctan /macros/latex/contrib/titlesec catalogue-license mit catalogue-topics headings page-hf -catalogue-version 2.16 +catalogue-version 2.17 name titling category Package @@ -315669,7 +315814,7 @@ runfiles size=21850 name tlshell category TLCore -revision 70419 +revision 73297 shortdesc GUI frontend (tcl/tk-based) for tlmgr depend tlshell.ARCH postaction shortcut type=menu name="TLShell TeX Live Manager" cmd=TEXDIR/bin/windows/tlshell.exe @@ -327520,7 +327665,7 @@ catalogue-topics engine japanese chinese korean multilingual name uptex-base category Package -revision 73228 +revision 73291 shortdesc Plain TeX formats and documents for upTeX longdesc The bundle contains plain TeX format files and documents for longdesc upTeX and and e-upTeX. @@ -335326,7 +335471,7 @@ catalogue-version 0.8 name warning category Package -revision 66616 +revision 73265 shortdesc Global warnings at the end of the logfile longdesc This package is obsolete. For LaTeX-format 2020-10-01 and longdesc newer: Instead of \addglobalwarning{ something } use @@ -335345,7 +335490,7 @@ runfiles size=1 catalogue-ctan /macros/latex/contrib/warning catalogue-license lppl1.3c catalogue-topics comp-supp -catalogue-version 0.10 +catalogue-version 0.11 name warpcol category Package @@ -340033,11 +340178,11 @@ catalogue-version 2.0 name xepersian category Package -revision 73247 +revision 73315 shortdesc Persian for LaTeX, using XeTeX longdesc This package provides a convenient interface for typesetting longdesc Persian and English texts in LaTeX, using the XeTeX engine. -docfiles size=319 +docfiles size=316 texmf-dist/doc/xelatex/xepersian/README details="Readme" texmf-dist/doc/xelatex/xepersian/dkun-0.3.py texmf-dist/doc/xelatex/xepersian/dkun-0.4.py @@ -340068,69 +340213,68 @@ srcfiles size=120 texmf-dist/source/xelatex/xepersian/xepersian-doc.ltx texmf-dist/source/xelatex/xepersian/xepersian.dtx texmf-dist/source/xelatex/xepersian/xepersian.ins -runfiles size=116 +runfiles size=114 texmf-dist/fonts/misc/xetex/fontmapping/xepersian/persian-tex-text-nonumbers.map texmf-dist/fonts/misc/xetex/fontmapping/xepersian/persian-tex-text-nonumbers.tec texmf-dist/fonts/misc/xetex/fontmapping/xepersian/persian-tex-text.map texmf-dist/fonts/misc/xetex/fontmapping/xepersian/persian-tex-text.tec - texmf-dist/tex/xelatex/xepersian/algorithm-xepersian.def - texmf-dist/tex/xelatex/xepersian/algorithmic-xepersian.def - texmf-dist/tex/xelatex/xepersian/amsart-xepersian.def - texmf-dist/tex/xelatex/xepersian/amsbook-xepersian.def - texmf-dist/tex/xelatex/xepersian/appendix-xepersian.def - texmf-dist/tex/xelatex/xepersian/article-xepersian.def - texmf-dist/tex/xelatex/xepersian/artikel1-xepersian.def - texmf-dist/tex/xelatex/xepersian/artikel2-xepersian.def - texmf-dist/tex/xelatex/xepersian/artikel3-xepersian.def - texmf-dist/tex/xelatex/xepersian/backref-xepersian.def - texmf-dist/tex/xelatex/xepersian/beamer-xepersian.def - texmf-dist/tex/xelatex/xepersian/beamerbasetranslator-xepersian.def - texmf-dist/tex/xelatex/xepersian/bidimoderncv-xepersian.def - texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xepersian.def - texmf-dist/tex/xelatex/xepersian/boek-xepersian.def - texmf-dist/tex/xelatex/xepersian/boek3-xepersian.def - texmf-dist/tex/xelatex/xepersian/book-xepersian.def - texmf-dist/tex/xelatex/xepersian/bookest-xepersian.def - texmf-dist/tex/xelatex/xepersian/breqn-xepersian.def - texmf-dist/tex/xelatex/xepersian/color-localise-xepersian.def - texmf-dist/tex/xelatex/xepersian/enumerate-xepersian.def - texmf-dist/tex/xelatex/xepersian/enumitem-xepersian.def - texmf-dist/tex/xelatex/xepersian/extarticle-xepersian.def - texmf-dist/tex/xelatex/xepersian/extbook-xepersian.def - texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xepersian.def - texmf-dist/tex/xelatex/xepersian/extreport-xepersian.def - texmf-dist/tex/xelatex/xepersian/fancyref-xepersian.def - texmf-dist/tex/xelatex/xepersian/footnote-xepersian.def - texmf-dist/tex/xelatex/xepersian/framed-xepersian.def - texmf-dist/tex/xelatex/xepersian/glossaries-xepersian.def - texmf-dist/tex/xelatex/xepersian/hyperref-xepersian.def - texmf-dist/tex/xelatex/xepersian/imsproc-xepersian.def - texmf-dist/tex/xelatex/xepersian/kashida-xepersian.def - texmf-dist/tex/xelatex/xepersian/latex-localise-commands-xepersian.def - texmf-dist/tex/xelatex/xepersian/latex-localise-environments-xepersian.def - texmf-dist/tex/xelatex/xepersian/latex-localise-messages-xepersian.def - texmf-dist/tex/xelatex/xepersian/latex-localise-misc-xepersian.def - texmf-dist/tex/xelatex/xepersian/listings-xepersian.def - texmf-dist/tex/xelatex/xepersian/loadingorder-xepersian.def - texmf-dist/tex/xelatex/xepersian/localise-xepersian.def - texmf-dist/tex/xelatex/xepersian/memoir-xepersian.def - texmf-dist/tex/xelatex/xepersian/minitoc-xepersian.def - texmf-dist/tex/xelatex/xepersian/natbib-xepersian.def - texmf-dist/tex/xelatex/xepersian/packages-localise-xepersian.def - texmf-dist/tex/xelatex/xepersian/rapport1-xepersian.def - texmf-dist/tex/xelatex/xepersian/rapport3-xepersian.def - texmf-dist/tex/xelatex/xepersian/refrep-xepersian.def - texmf-dist/tex/xelatex/xepersian/report-xepersian.def - texmf-dist/tex/xelatex/xepersian/scrartcl-xepersian.def - texmf-dist/tex/xelatex/xepersian/scrbook-xepersian.def - texmf-dist/tex/xelatex/xepersian/scrreprt-xepersian.def - texmf-dist/tex/xelatex/xepersian/soul-xepersian.def - texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xepersian.def - texmf-dist/tex/xelatex/xepersian/tocloft-xepersian.def - texmf-dist/tex/xelatex/xepersian/url-xepersian.def - texmf-dist/tex/xelatex/xepersian/varioref-xepersian.def - texmf-dist/tex/xelatex/xepersian/xepersian-localise-commands-xepersian.def - texmf-dist/tex/xelatex/xepersian/xepersian-localise-environments-xepersian.def + texmf-dist/tex/xelatex/xepersian/algorithm-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/algorithmic-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/amsart-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/amsbook-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/appendix-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/article-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/artikel1-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/artikel2-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/artikel3-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/backref-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/beamer-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/beamerbasetranslator-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/bidimoderncv-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/boek-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/boek3-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/book-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/bookest-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/breqn-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/color-localize-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/enumerate-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/enumitem-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/extarticle-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/extbook-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xetex-bidi-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/extreport-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/fancyref-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/footnote-xetex-bidi-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/framed-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/glossaries-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/hyperref-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/imsproc-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/kashida-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/latex-localize-commands-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/latex-localize-environments-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/latex-localize-messages-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/latex-localize-misc-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/listings-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/localize-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/memoir-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/minitoc-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/natbib-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/packages-localize-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/rapport1-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/rapport3-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/refrep-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/report-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/scrartcl-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/scrbook-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/scrreprt-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/soul-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/tocloft-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/url-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/varioref-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/xepersian-localize-commands-xetex-xepersian.def + texmf-dist/tex/xelatex/xepersian/xepersian-localize-environments-xetex-xepersian.def texmf-dist/tex/xelatex/xepersian/xepersian-logo.pdf texmf-dist/tex/xelatex/xepersian/xepersian-magazine.cls texmf-dist/tex/xelatex/xepersian/xepersian-mathdigitspec.sty @@ -340144,7 +340288,7 @@ catalogue-contact-support https://github.com/xepersian/xepersian/discussions catalogue-ctan /macros/xetex/latex/xepersian catalogue-license lppl1.3c catalogue-topics persian xetex class -catalogue-version 25.8 +catalogue-version 26.0 name xepersian-hm category Package @@ -343974,7 +344118,7 @@ catalogue-version 0.3 name yb-book category Package -revision 70740 +revision 73317 shortdesc Template for YB Branded Books longdesc This template helps the author design books published on Amazon longdesc under the "Y.B." brand. You are welcome to use it too for your @@ -343984,24 +344128,31 @@ depend biblatex depend bigfoot depend changepage depend chngcntr +depend collection-fontsextra +depend collection-fontsrecommended depend csquotes +depend cyrillic depend enumitem depend fancyhdr depend float depend footmisc depend geometry +depend hypdoc depend ifmtarg depend imakeidx depend lastpage +depend lh depend libertine depend mdframed depend microtype depend needspace depend paralist depend pgf +depend pgfopts depend qrcode depend setspace depend soul +depend textpos depend titlesec depend titlesec depend ulem @@ -344011,7 +344162,7 @@ depend xcolor depend xifthen depend xkeyval depend zref -docfiles size=75 +docfiles size=76 texmf-dist/doc/latex/yb-book/DEPENDS.txt texmf-dist/doc/latex/yb-book/LICENSE.txt texmf-dist/doc/latex/yb-book/README.md details="Readme" @@ -344026,7 +344177,7 @@ catalogue-contact-repository https://github.com/yegor256/yb-book catalogue-ctan /macros/latex/contrib/yb-book catalogue-license mit catalogue-topics class doc-templ book-pub -catalogue-version 0.4.1 +catalogue-version 0.5.1 name ycbook category Package @@ -357886,7 +358037,7 @@ catalogue-version 0.1.12 name zugferd category Package -revision 73081 +revision 73286 shortdesc ZUGFeRD and Faktur-X invoicing using LaTeX longdesc This package provides interfaces to allow creating ZUGFeRD or longdesc Faktur-X invoices with LaTeX including the XML file. It can be @@ -357894,14 +358045,14 @@ longdesc used to modify personal invoicing templates to fulfil the longdesc requirements for digital invoicing without further modification longdesc of the invoicing processes. depend siunitx -docfiles size=140 +docfiles size=143 texmf-dist/doc/latex/zugferd/DEMO-rechnung-zugferd.pdf details="Example of use" texmf-dist/doc/latex/zugferd/DEMO-rechnung-zugferd.tex texmf-dist/doc/latex/zugferd/DEPENDS.txt texmf-dist/doc/latex/zugferd/INSTALL.md texmf-dist/doc/latex/zugferd/README.md details="Readme" texmf-dist/doc/latex/zugferd/zugferd.pdf details="Package documentation" -srcfiles size=26 +srcfiles size=27 texmf-dist/source/latex/zugferd/zugferd.dtx texmf-dist/source/latex/zugferd/zugferd.ins runfiles size=14 @@ -357912,7 +358063,7 @@ catalogue-contact-support https://github.com/TeXhackse/LaTeX-ZUGFeRD/issues catalogue-ctan /macros/latex/contrib/zugferd catalogue-license lppl1.3c catalogue-topics invoice expl3 -catalogue-version 0.9c +catalogue-version 0.9d name zwgetfdate category Package diff --git a/Master/tlpkg/tlpsrc/biblatex-cse.tlpsrc b/Master/tlpkg/tlpsrc/biblatex-cse.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/biblatex-cse.tlpsrc diff --git a/Master/tlpkg/tlpsrc/chuushaku.tlpsrc b/Master/tlpkg/tlpsrc/chuushaku.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/chuushaku.tlpsrc diff --git a/Master/tlpkg/tlpsrc/collection-bibtexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-bibtexextra.tlpsrc index 5d751afeefe..fd04fad491c 100644 --- a/Master/tlpkg/tlpsrc/collection-bibtexextra.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-bibtexextra.tlpsrc @@ -42,6 +42,7 @@ depend biblatex-caspervector depend biblatex-chem depend biblatex-chicago depend biblatex-claves +depend biblatex-cse depend biblatex-cv depend biblatex-dw depend biblatex-enc diff --git a/Master/tlpkg/tlpsrc/collection-langjapanese.tlpsrc b/Master/tlpkg/tlpsrc/collection-langjapanese.tlpsrc index 3095c4cb4b5..8e394e112fd 100644 --- a/Master/tlpkg/tlpsrc/collection-langjapanese.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-langjapanese.tlpsrc @@ -18,6 +18,7 @@ depend bxjatoucs depend bxjscls depend bxorigcapt depend bxwareki +depend chuushaku depend convbkmk depend endnotesj depend gckanbun diff --git a/Master/tlpkg/tlpsrc/collection-langportuguese.tlpsrc b/Master/tlpkg/tlpsrc/collection-langportuguese.tlpsrc index f0fa3e9b145..f9d20db60f7 100644 --- a/Master/tlpkg/tlpsrc/collection-langportuguese.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-langportuguese.tlpsrc @@ -1,6 +1,6 @@ category Collection shortdesc Portuguese -longdesc Support for Portuguese. +longdesc Support for Portuguese and Brazilian Portuguese. # depend collection-basic # @@ -15,4 +15,5 @@ depend lshort-portuguese depend numberpt depend ordinalpt depend ptlatexcommands +depend tabularray-abnt depend xypic-tut-pt diff --git a/Master/tlpkg/tlpsrc/collection-luatex.tlpsrc b/Master/tlpkg/tlpsrc/collection-luatex.tlpsrc index 9e1c720cb8a..85cba19fb02 100644 --- a/Master/tlpkg/tlpsrc/collection-luatex.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-luatex.tlpsrc @@ -72,6 +72,7 @@ depend luaprogtable depend luaquotes depend luarandom depend luaset +depend luatbls depend luatex85 depend luatexbase depend luatexko diff --git a/Master/tlpkg/tlpsrc/collection-music.tlpsrc b/Master/tlpkg/tlpsrc/collection-music.tlpsrc index b0122fdde79..960f6cb6620 100644 --- a/Master/tlpkg/tlpsrc/collection-music.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-music.tlpsrc @@ -20,6 +20,7 @@ depend guitartabs depend harmony depend leadsheets depend latex4musicians +depend liederbuch depend lilyglyphs depend lyluatex depend m-tx diff --git a/Master/tlpkg/tlpsrc/ffcode.tlpsrc b/Master/tlpkg/tlpsrc/ffcode.tlpsrc index a772de85b4a..6684dbd5abe 100644 --- a/Master/tlpkg/tlpsrc/ffcode.tlpsrc +++ b/Master/tlpkg/tlpsrc/ffcode.tlpsrc @@ -1,6 +1,22 @@ -hard microtype -hard xkeyval -hard minted +hard listings +hard pgfopts hard tcolorbox -hard pgf -hard environ +soft docshots +soft environ +soft etoolbox +soft fvextra +soft href-ul +soft hypdoc +soft iexec +soft l3build +soft libertine +soft mathtools +soft microtype +soft pdfcrop +soft pgf +soft pgfopts +soft scheme-basic +soft silence +soft tools +soft upquote +soft xetex
\ No newline at end of file diff --git a/Master/tlpkg/tlpsrc/kdpcover.tlpsrc b/Master/tlpkg/tlpsrc/kdpcover.tlpsrc index 7bfc2343211..9ec3ba03e56 100644 --- a/Master/tlpkg/tlpsrc/kdpcover.tlpsrc +++ b/Master/tlpkg/tlpsrc/kdpcover.tlpsrc @@ -1,14 +1,18 @@ -#depend shellesc -depend tools -depend xkeyval -depend anyfontsize -#depend tikz -depend pgf -depend microtype -depend xifthen -depend xcolor -#depend graphicx -depend graphics -depend setspace -depend geometry -depend textpos +hard anyfontsize +hard etoolbox +hard geometry +hard iexec +hard microtype +hard pgf +hard pgfopts +hard setspace +hard textpos +hard xcolor +soft docshots +soft href-ul +soft hypdoc +soft l3build +soft libertine +soft scheme-basic +soft tools +soft xetex diff --git a/Master/tlpkg/tlpsrc/liederbuch.tlpsrc b/Master/tlpkg/tlpsrc/liederbuch.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/liederbuch.tlpsrc diff --git a/Master/tlpkg/tlpsrc/luatbls.tlpsrc b/Master/tlpkg/tlpsrc/luatbls.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/luatbls.tlpsrc diff --git a/Master/tlpkg/tlpsrc/tabularray-abnt.tlpsrc b/Master/tlpkg/tlpsrc/tabularray-abnt.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/tabularray-abnt.tlpsrc diff --git a/Master/tlpkg/tlpsrc/yb-book.tlpsrc b/Master/tlpkg/tlpsrc/yb-book.tlpsrc index 61cda33dd8c..3d880587be3 100644 --- a/Master/tlpkg/tlpsrc/yb-book.tlpsrc +++ b/Master/tlpkg/tlpsrc/yb-book.tlpsrc @@ -1,32 +1,47 @@ -depend pgf -depend xkeyval -depend geometry -depend anyfontsize -depend chngcntr -depend lastpage -depend paralist -depend xcolor -depend setspace -depend enumitem -depend float -depend ulem -depend qrcode -depend wrapfig -depend soul -depend xifthen -depend csquotes -depend biblatex -depend imakeidx -depend microtype -depend libertine -depend footmisc -depend titlesec -depend titlesec -depend fancyhdr -depend wrapfig -depend mdframed -depend changepage -depend ifmtarg -depend bigfoot -depend zref -depend needspace +hard anyfontsize +hard biblatex +hard bigfoot +hard changepage +hard chngcntr +hard collection-fontsextra +hard collection-fontsrecommended +hard csquotes +hard cyrillic +hard enumitem +hard fancyhdr +hard float +hard footmisc +hard geometry +hard hypdoc +hard ifmtarg +hard imakeidx +hard lastpage +hard lh +hard libertine +hard mdframed +hard microtype +hard needspace +hard paralist +hard pgf +hard pgfopts +hard qrcode +hard setspace +hard soul +hard textpos +hard titlesec +hard titlesec +hard ulem +hard wrapfig +hard wrapfig +hard xcolor +hard xifthen +hard xkeyval +hard zref +soft biblatex +soft href-ul +soft imakeidx +soft l3build +soft pgfopts +soft scheme-basic +soft silence +soft xetex diff --git a/Master/tlpkg/tltcl/tltcl.tcl b/Master/tlpkg/tltcl/tltcl.tcl index b43b36e421b..540d69dd4bf 100644 --- a/Master/tlpkg/tltcl/tltcl.tcl +++ b/Master/tlpkg/tltcl/tltcl.tcl @@ -1,6 +1,6 @@ #!/usr/bin/env wish -# Copyright 2018-2020 Siep Kroonenberg +# Copyright 2018-2025 Siep Kroonenberg # This file is licensed under the GNU General Public License version 2 # or any later version. @@ -8,7 +8,8 @@ # common declarations for tlshell.tcl and install-tl-gui.tcl set ::plain_unix 0 -if {$::tcl_platform(platform) eq "unix" && $::tcl_platform(os) ne "Darwin"} { +if {$::tcl_platform(platform) eq "unix" && + [string range $::tcl_version 0 1] eq "8." && $::tcl_platform(os) ne "Darwin"} { set ::plain_unix 1 } @@ -495,11 +496,11 @@ set gry [ttk::style lookup TButton -foreground disabled] # 'default' padding proc ppack {wdg args} { ; # pack command with padding - pack $wdg {*}$args -padx 3pt -pady 3pt + pack $wdg {*}$args -padx 3p -pady 3p } proc pgrid {wdg args} { ; # grid command with padding - grid $wdg {*}$args -padx 3pt -pady 3pt + grid $wdg {*}$args -padx 3p -pady 3p } # unicode symbols as fake checkboxes in ttk::treeview widgets @@ -682,7 +683,7 @@ if {$::tcl_platform(platform) eq "unix"} { wm title .browser [__ "Browse..."] # wallpaper - pack [ttk::frame .browser.bg -padding 3pt] -fill both -expand 1 + pack [ttk::frame .browser.bg -padding 3p] -fill both -expand 1 # ok and cancel buttons pack [ttk::frame .browser.fr1] \ diff --git a/Master/tlpkg/translations/cs.po b/Master/tlpkg/translations/cs.po index ee7a612a0b4..8f60a4540fb 100644 --- a/Master/tlpkg/translations/cs.po +++ b/Master/tlpkg/translations/cs.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: TeX Live translation\n" "Report-Msgid-Bugs-To: tex-live@tug.org\n" -"POT-Creation-Date: 2024-07-21 01:41+0200\n" +"POT-Creation-Date: 2025-01-05 01:40+0100\n" "PO-Revision-Date: 2022-03-21 13:54+0100\n" "Last-Translator: Petr Sojka <sojka@fi.muni.cz>\n" "Language-Team: Czech <>\n" @@ -112,7 +112,7 @@ msgstr "" #: tlpkg/installer/install-tl-gui.tcl:896 #: tlpkg/installer/install-tl-gui.tcl:946 #: tlpkg/installer/install-tl-gui.tcl:1034 -#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:690 +#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:691 #: texmf-dist/scripts/tlshell/tlshell.tcl:223 msgid "Ok" msgstr "OK" @@ -401,7 +401,7 @@ msgstr "Odstranit TeX Live %s" #: tlpkg/installer/install-tl-gui.tcl:899 #: tlpkg/installer/install-tl-gui.tcl:963 #: tlpkg/installer/install-tl-gui.tcl:1037 -#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:692 +#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:693 #: texmf-dist/scripts/tlshell/tlshell.tcl:233 #: texmf-dist/scripts/tlshell/tlshell.tcl:1386 msgid "Cancel" @@ -458,14 +458,14 @@ msgstr "Nainstalováno:" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:372 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:373 #: texmf-dist/scripts/tlshell/tlshell.tcl:227 msgid "Yes" msgstr "Ano" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:374 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:375 #: texmf-dist/scripts/tlshell/tlshell.tcl:229 msgid "No" msgstr "Ne" @@ -1072,7 +1072,7 @@ msgstr "Varování. Ne všechny konfigurovatelné adresáře jsou zapisovatelné msgid "Symlinks" msgstr "Symbolické odkazy" -#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:682 +#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:683 msgid "Browse..." msgstr "Procházej..." @@ -1255,15 +1255,15 @@ msgstr "%s není lokální nebo vzdálený repozitář" msgid "%s requires an argument" msgstr "%s vyžaduje argument" -#: tlpkg/tltcl/tltcl.tcl:135 +#: tlpkg/tltcl/tltcl.tcl:136 msgid "Specific mirror..." msgstr "Specifické zrcadlo..." -#: tlpkg/tltcl/tltcl.tcl:152 +#: tlpkg/tltcl/tltcl.tcl:153 msgid "No mirror list available" msgstr "Není k dispozici žádný seznam zrcadel" -#: tlpkg/tltcl/tltcl.tcl:765 +#: tlpkg/tltcl/tltcl.tcl:766 msgid "Select or type" msgstr "Vyberte nebo napište" diff --git a/Master/tlpkg/translations/da.po b/Master/tlpkg/translations/da.po index 427474728bb..10403870e23 100644 --- a/Master/tlpkg/translations/da.po +++ b/Master/tlpkg/translations/da.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: TeX Live 2021\n" "Report-Msgid-Bugs-To: tex-live@tug.org\n" -"POT-Creation-Date: 2024-07-21 01:41+0200\n" +"POT-Creation-Date: 2025-01-05 01:40+0100\n" "PO-Revision-Date: 2021-05-05 10:13+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -114,7 +114,7 @@ msgstr "" #: tlpkg/installer/install-tl-gui.tcl:896 #: tlpkg/installer/install-tl-gui.tcl:946 #: tlpkg/installer/install-tl-gui.tcl:1034 -#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:690 +#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:691 #: texmf-dist/scripts/tlshell/tlshell.tcl:223 msgid "Ok" msgstr "Ok" @@ -403,7 +403,7 @@ msgstr "Afinstaller TeX Live %s" #: tlpkg/installer/install-tl-gui.tcl:899 #: tlpkg/installer/install-tl-gui.tcl:963 #: tlpkg/installer/install-tl-gui.tcl:1037 -#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:692 +#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:693 #: texmf-dist/scripts/tlshell/tlshell.tcl:233 #: texmf-dist/scripts/tlshell/tlshell.tcl:1386 msgid "Cancel" @@ -460,14 +460,14 @@ msgstr "Installerede:" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:372 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:373 #: texmf-dist/scripts/tlshell/tlshell.tcl:227 msgid "Yes" msgstr "Ja" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:374 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:375 #: texmf-dist/scripts/tlshell/tlshell.tcl:229 msgid "No" msgstr "Nej" @@ -1072,7 +1072,7 @@ msgstr "Advarsel. Ikke alle konfigurerede biblioteker er skrivbare!" msgid "Symlinks" msgstr "Symbolske lænker" -#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:682 +#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:683 msgid "Browse..." msgstr "Gennemse..." @@ -1255,15 +1255,15 @@ msgstr "%s er ikke et lokalt eller datalager" msgid "%s requires an argument" msgstr "%s kræver et argument" -#: tlpkg/tltcl/tltcl.tcl:135 +#: tlpkg/tltcl/tltcl.tcl:136 msgid "Specific mirror..." msgstr "Specifik afspejling..." -#: tlpkg/tltcl/tltcl.tcl:152 +#: tlpkg/tltcl/tltcl.tcl:153 msgid "No mirror list available" msgstr "Ingen liste af afspejlinger tilængelig" -#: tlpkg/tltcl/tltcl.tcl:765 +#: tlpkg/tltcl/tltcl.tcl:766 msgid "Select or type" msgstr "Vælg eller indtast" diff --git a/Master/tlpkg/translations/de.po b/Master/tlpkg/translations/de.po index 34efa57001d..efcf049c0be 100644 --- a/Master/tlpkg/translations/de.po +++ b/Master/tlpkg/translations/de.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: TeX Live translation\n" "Report-Msgid-Bugs-To: tex-live@tug.org\n" -"POT-Creation-Date: 2024-07-21 01:41+0200\n" +"POT-Creation-Date: 2025-01-05 01:40+0100\n" "PO-Revision-Date: 2024-03-16 09:53+0100\n" "Last-Translator: Uwe Ziegenhagen <ziegenhagen@gmail.com>\n" "Language-Team: TL German Translation Team <tex-live@tug.org>\n" @@ -107,7 +107,7 @@ msgstr "" #: tlpkg/installer/install-tl-gui.tcl:896 #: tlpkg/installer/install-tl-gui.tcl:946 #: tlpkg/installer/install-tl-gui.tcl:1034 -#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:690 +#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:691 #: texmf-dist/scripts/tlshell/tlshell.tcl:223 msgid "Ok" msgstr "Ok" @@ -396,7 +396,7 @@ msgstr "TeX Live %s entfernen" #: tlpkg/installer/install-tl-gui.tcl:899 #: tlpkg/installer/install-tl-gui.tcl:963 #: tlpkg/installer/install-tl-gui.tcl:1037 -#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:692 +#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:693 #: texmf-dist/scripts/tlshell/tlshell.tcl:233 #: texmf-dist/scripts/tlshell/tlshell.tcl:1386 msgid "Cancel" @@ -453,14 +453,14 @@ msgstr "Installiert:" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:372 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:373 #: texmf-dist/scripts/tlshell/tlshell.tcl:227 msgid "Yes" msgstr "Ja" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:374 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:375 #: texmf-dist/scripts/tlshell/tlshell.tcl:229 msgid "No" msgstr "Nein" @@ -1065,7 +1065,7 @@ msgstr "Warnung: Nicht alle konfigurierten Verzeichnisse sind beschreibbar!" msgid "Symlinks" msgstr "Symbolische Links" -#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:682 +#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:683 msgid "Browse..." msgstr "Browse..." @@ -1248,15 +1248,15 @@ msgstr "%s ist kein lokales oder remote Repository" msgid "%s requires an argument" msgstr "%s erfordert ein Argument" -#: tlpkg/tltcl/tltcl.tcl:135 +#: tlpkg/tltcl/tltcl.tcl:136 msgid "Specific mirror..." msgstr "Spezifischer CTAN-Mirror..." -#: tlpkg/tltcl/tltcl.tcl:152 +#: tlpkg/tltcl/tltcl.tcl:153 msgid "No mirror list available" msgstr "Liste der Spiegelserver nicht verfügbar" -#: tlpkg/tltcl/tltcl.tcl:765 +#: tlpkg/tltcl/tltcl.tcl:766 msgid "Select or type" msgstr "Wähle aus oder tippe ein" diff --git a/Master/tlpkg/translations/es.po b/Master/tlpkg/translations/es.po index 538c040f197..62dbb393109 100644 --- a/Master/tlpkg/translations/es.po +++ b/Master/tlpkg/translations/es.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: TeX Live translation\n" "Report-Msgid-Bugs-To: tex-live@tug.org\n" -"POT-Creation-Date: 2024-07-21 01:41+0200\n" +"POT-Creation-Date: 2025-01-05 01:40+0100\n" "PO-Revision-Date: 2019-03-30 17:58-0400\n" "Last-Translator: linguafalsa <linguafalsa@gmail.com>\n" "Language-Team: TL Translation Team <tex-live@tug.org>\n" @@ -110,7 +110,7 @@ msgstr "" #: tlpkg/installer/install-tl-gui.tcl:896 #: tlpkg/installer/install-tl-gui.tcl:946 #: tlpkg/installer/install-tl-gui.tcl:1034 -#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:690 +#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:691 #: texmf-dist/scripts/tlshell/tlshell.tcl:223 msgid "Ok" msgstr "Aceptar" @@ -399,7 +399,7 @@ msgstr "Remover Tex Live %s" #: tlpkg/installer/install-tl-gui.tcl:899 #: tlpkg/installer/install-tl-gui.tcl:963 #: tlpkg/installer/install-tl-gui.tcl:1037 -#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:692 +#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:693 #: texmf-dist/scripts/tlshell/tlshell.tcl:233 #: texmf-dist/scripts/tlshell/tlshell.tcl:1386 msgid "Cancel" @@ -456,14 +456,14 @@ msgstr "Instalado:" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:372 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:373 #: texmf-dist/scripts/tlshell/tlshell.tcl:227 msgid "Yes" msgstr "Sí" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:374 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:375 #: texmf-dist/scripts/tlshell/tlshell.tcl:229 msgid "No" msgstr "No" @@ -1078,7 +1078,7 @@ msgstr "" msgid "Symlinks" msgstr "Enlaces simbólicos" -#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:682 +#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:683 msgid "Browse..." msgstr "Ojear..." @@ -1264,15 +1264,15 @@ msgstr "%s no es un repositorio remoto o local" msgid "%s requires an argument" msgstr "%s requiere un argumento" -#: tlpkg/tltcl/tltcl.tcl:135 +#: tlpkg/tltcl/tltcl.tcl:136 msgid "Specific mirror..." msgstr "Espejo específico..." -#: tlpkg/tltcl/tltcl.tcl:152 +#: tlpkg/tltcl/tltcl.tcl:153 msgid "No mirror list available" msgstr "No list de espejos disponibles" -#: tlpkg/tltcl/tltcl.tcl:765 +#: tlpkg/tltcl/tltcl.tcl:766 msgid "Select or type" msgstr "Seleccionar o ingresar" diff --git a/Master/tlpkg/translations/fr.po b/Master/tlpkg/translations/fr.po index a338206dd59..9100d87953a 100644 --- a/Master/tlpkg/translations/fr.po +++ b/Master/tlpkg/translations/fr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: TeX Live translation\n" "Report-Msgid-Bugs-To: tex-live@tug.org\n" -"POT-Creation-Date: 2024-07-21 01:41+0200\n" +"POT-Creation-Date: 2025-01-05 01:40+0100\n" "PO-Revision-Date: 2024-02-22 22:35+0100\n" "Last-Translator: Denis Bitouzé <denis.bitouze@univ-littoral.fr>\n" "Language-Team: French <kde-i18n-doc@kde.org>\n" @@ -113,7 +113,7 @@ msgstr "" #: tlpkg/installer/install-tl-gui.tcl:896 #: tlpkg/installer/install-tl-gui.tcl:946 #: tlpkg/installer/install-tl-gui.tcl:1034 -#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:690 +#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:691 #: texmf-dist/scripts/tlshell/tlshell.tcl:223 msgid "Ok" msgstr "Ok" @@ -402,7 +402,7 @@ msgstr "Désinstaller TeX Live %s" #: tlpkg/installer/install-tl-gui.tcl:899 #: tlpkg/installer/install-tl-gui.tcl:963 #: tlpkg/installer/install-tl-gui.tcl:1037 -#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:692 +#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:693 #: texmf-dist/scripts/tlshell/tlshell.tcl:233 #: texmf-dist/scripts/tlshell/tlshell.tcl:1386 msgid "Cancel" @@ -459,14 +459,14 @@ msgstr "Installé :" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:372 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:373 #: texmf-dist/scripts/tlshell/tlshell.tcl:227 msgid "Yes" msgstr "Oui" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:374 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:375 #: texmf-dist/scripts/tlshell/tlshell.tcl:229 msgid "No" msgstr "Non" @@ -1078,7 +1078,7 @@ msgstr "" msgid "Symlinks" msgstr "Liens symboliques" -#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:682 +#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:683 msgid "Browse..." msgstr "Parcourir..." @@ -1262,15 +1262,15 @@ msgstr "%s n'est pas un dépôt local ou distant" msgid "%s requires an argument" msgstr "%s requiert un argument" -#: tlpkg/tltcl/tltcl.tcl:135 +#: tlpkg/tltcl/tltcl.tcl:136 msgid "Specific mirror..." msgstr "Miroir spécifique..." -#: tlpkg/tltcl/tltcl.tcl:152 +#: tlpkg/tltcl/tltcl.tcl:153 msgid "No mirror list available" msgstr "Aucune liste de miroirs disponible" -#: tlpkg/tltcl/tltcl.tcl:765 +#: tlpkg/tltcl/tltcl.tcl:766 msgid "Select or type" msgstr "Sélectionner ou saisir" diff --git a/Master/tlpkg/translations/it.po b/Master/tlpkg/translations/it.po index 7d944877ac6..8c43e4dcb3c 100644 --- a/Master/tlpkg/translations/it.po +++ b/Master/tlpkg/translations/it.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Tex Live translation\n" "Report-Msgid-Bugs-To: tex-live@tug.org\n" -"POT-Creation-Date: 2024-07-21 01:41+0200\n" +"POT-Creation-Date: 2025-01-05 01:40+0100\n" "PO-Revision-Date: 2021-03-22 06:20+0100\n" "Last-Translator: Marco Pallante\n" "Language-Team: <>\n" @@ -107,7 +107,7 @@ msgstr "" #: tlpkg/installer/install-tl-gui.tcl:896 #: tlpkg/installer/install-tl-gui.tcl:946 #: tlpkg/installer/install-tl-gui.tcl:1034 -#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:690 +#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:691 #: texmf-dist/scripts/tlshell/tlshell.tcl:223 msgid "Ok" msgstr "Ok" @@ -396,7 +396,7 @@ msgstr "Rimozione di TeX Live %s" #: tlpkg/installer/install-tl-gui.tcl:899 #: tlpkg/installer/install-tl-gui.tcl:963 #: tlpkg/installer/install-tl-gui.tcl:1037 -#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:692 +#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:693 #: texmf-dist/scripts/tlshell/tlshell.tcl:233 #: texmf-dist/scripts/tlshell/tlshell.tcl:1386 msgid "Cancel" @@ -453,14 +453,14 @@ msgstr "Installato:" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:372 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:373 #: texmf-dist/scripts/tlshell/tlshell.tcl:227 msgid "Yes" msgstr "Sì" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:374 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:375 #: texmf-dist/scripts/tlshell/tlshell.tcl:229 msgid "No" msgstr "No" @@ -1067,7 +1067,7 @@ msgstr "Attenzione. Non è possibile scrivere in tutte le cartelle configurate!" msgid "Symlinks" msgstr "Collegamenti simbolici" -#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:682 +#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:683 msgid "Browse..." msgstr "Sfoglia…" @@ -1253,15 +1253,15 @@ msgstr "%s non è un archivio locale o remoto" msgid "%s requires an argument" msgstr "%s richiede un argomento" -#: tlpkg/tltcl/tltcl.tcl:135 +#: tlpkg/tltcl/tltcl.tcl:136 msgid "Specific mirror..." msgstr "Mirror specifico..." -#: tlpkg/tltcl/tltcl.tcl:152 +#: tlpkg/tltcl/tltcl.tcl:153 msgid "No mirror list available" msgstr "Nessuna lista di mirror disponibile" -#: tlpkg/tltcl/tltcl.tcl:765 +#: tlpkg/tltcl/tltcl.tcl:766 msgid "Select or type" msgstr "Seleziona o digita" diff --git a/Master/tlpkg/translations/ja.po b/Master/tlpkg/translations/ja.po index 9554f11b8e7..0b184a07949 100644 --- a/Master/tlpkg/translations/ja.po +++ b/Master/tlpkg/translations/ja.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: TeX Live translation\n" "Report-Msgid-Bugs-To: tex-live@tug.org\n" -"POT-Creation-Date: 2024-07-21 01:41+0200\n" +"POT-Creation-Date: 2025-01-05 01:40+0100\n" "PO-Revision-Date: 2024-02-04 15:32+0900\n" "Last-Translator: Takuto Asakura <tkt.asakura@gmail.com>\n" "Language-Team: TL Translation Team <tex-live@tug.org>\n" @@ -112,7 +112,7 @@ msgstr "" #: tlpkg/installer/install-tl-gui.tcl:896 #: tlpkg/installer/install-tl-gui.tcl:946 #: tlpkg/installer/install-tl-gui.tcl:1034 -#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:690 +#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:691 #: texmf-dist/scripts/tlshell/tlshell.tcl:223 msgid "Ok" msgstr "OK" @@ -401,7 +401,7 @@ msgstr "TeX Live %sをアンインストール" #: tlpkg/installer/install-tl-gui.tcl:899 #: tlpkg/installer/install-tl-gui.tcl:963 #: tlpkg/installer/install-tl-gui.tcl:1037 -#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:692 +#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:693 #: texmf-dist/scripts/tlshell/tlshell.tcl:233 #: texmf-dist/scripts/tlshell/tlshell.tcl:1386 msgid "Cancel" @@ -458,14 +458,14 @@ msgstr "インストール済み:" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:372 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:373 #: texmf-dist/scripts/tlshell/tlshell.tcl:227 msgid "Yes" msgstr "はい" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:374 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:375 #: texmf-dist/scripts/tlshell/tlshell.tcl:229 msgid "No" msgstr "いいえ" @@ -1069,7 +1069,7 @@ msgstr "警告。指定したディレクトリの一部が書き込み不能で msgid "Symlinks" msgstr "シンボリックリンク" -#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:682 +#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:683 msgid "Browse..." msgstr "開く…" @@ -1252,15 +1252,15 @@ msgstr "%sはローカルリポジトリでもリモートリポジトリでも msgid "%s requires an argument" msgstr "%sには引数が必要です" -#: tlpkg/tltcl/tltcl.tcl:135 +#: tlpkg/tltcl/tltcl.tcl:136 msgid "Specific mirror..." msgstr "特定のミラーを選択…" -#: tlpkg/tltcl/tltcl.tcl:152 +#: tlpkg/tltcl/tltcl.tcl:153 msgid "No mirror list available" msgstr "利用可能なミラーリストがありません" -#: tlpkg/tltcl/tltcl.tcl:765 +#: tlpkg/tltcl/tltcl.tcl:766 msgid "Select or type" msgstr "選択または入力" diff --git a/Master/tlpkg/translations/messages.pot b/Master/tlpkg/translations/messages.pot index 573db35c94e..67879193994 100644 --- a/Master/tlpkg/translations/messages.pot +++ b/Master/tlpkg/translations/messages.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: TeX Live 2024\n" "Report-Msgid-Bugs-To: tex-live@tug.org\n" -"POT-Creation-Date: 2024-07-21 01:41+0200\n" +"POT-Creation-Date: 2025-01-05 01:40+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -106,7 +106,7 @@ msgstr "" #: tlpkg/installer/install-tl-gui.tcl:896 #: tlpkg/installer/install-tl-gui.tcl:946 #: tlpkg/installer/install-tl-gui.tcl:1034 -#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:690 +#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:691 #: texmf-dist/scripts/tlshell/tlshell.tcl:223 msgid "Ok" msgstr "" @@ -395,7 +395,7 @@ msgstr "" #: tlpkg/installer/install-tl-gui.tcl:899 #: tlpkg/installer/install-tl-gui.tcl:963 #: tlpkg/installer/install-tl-gui.tcl:1037 -#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:692 +#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:693 #: texmf-dist/scripts/tlshell/tlshell.tcl:233 #: texmf-dist/scripts/tlshell/tlshell.tcl:1386 msgid "Cancel" @@ -450,14 +450,14 @@ msgstr "" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:372 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:373 #: texmf-dist/scripts/tlshell/tlshell.tcl:227 msgid "Yes" msgstr "" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:374 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:375 #: texmf-dist/scripts/tlshell/tlshell.tcl:229 msgid "No" msgstr "" @@ -1035,7 +1035,7 @@ msgstr "" msgid "Symlinks" msgstr "" -#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:682 +#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:683 msgid "Browse..." msgstr "" @@ -1215,15 +1215,15 @@ msgstr "" msgid "%s requires an argument" msgstr "" -#: tlpkg/tltcl/tltcl.tcl:135 +#: tlpkg/tltcl/tltcl.tcl:136 msgid "Specific mirror..." msgstr "" -#: tlpkg/tltcl/tltcl.tcl:152 +#: tlpkg/tltcl/tltcl.tcl:153 msgid "No mirror list available" msgstr "" -#: tlpkg/tltcl/tltcl.tcl:765 +#: tlpkg/tltcl/tltcl.tcl:766 msgid "Select or type" msgstr "" diff --git a/Master/tlpkg/translations/nl.po b/Master/tlpkg/translations/nl.po index 6a3bbf35da9..df9b84fd3a1 100644 --- a/Master/tlpkg/translations/nl.po +++ b/Master/tlpkg/translations/nl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: TeX Live translation\n" "Report-Msgid-Bugs-To: tex-live@tug.org\n" -"POT-Creation-Date: 2024-07-21 01:41+0200\n" +"POT-Creation-Date: 2025-01-05 01:40+0100\n" "PO-Revision-Date: 2023-03-10 09:39+0100\n" "Last-Translator: Siep Kroonenberg <siepo@bitmuis.nl>\n" "Language-Team: TL Translation Team <tex-live@tug.org>\n" @@ -108,7 +108,7 @@ msgstr "" #: tlpkg/installer/install-tl-gui.tcl:896 #: tlpkg/installer/install-tl-gui.tcl:946 #: tlpkg/installer/install-tl-gui.tcl:1034 -#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:690 +#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:691 #: texmf-dist/scripts/tlshell/tlshell.tcl:223 msgid "Ok" msgstr "Ok" @@ -399,7 +399,7 @@ msgstr "Verwijder TeX Live %s" #: tlpkg/installer/install-tl-gui.tcl:899 #: tlpkg/installer/install-tl-gui.tcl:963 #: tlpkg/installer/install-tl-gui.tcl:1037 -#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:692 +#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:693 #: texmf-dist/scripts/tlshell/tlshell.tcl:233 #: texmf-dist/scripts/tlshell/tlshell.tcl:1386 msgid "Cancel" @@ -456,14 +456,14 @@ msgstr "Geïnstalleerd:" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:372 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:373 #: texmf-dist/scripts/tlshell/tlshell.tcl:227 msgid "Yes" msgstr "Ja" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:374 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:375 #: texmf-dist/scripts/tlshell/tlshell.tcl:229 msgid "No" msgstr "Nee" @@ -1067,7 +1067,7 @@ msgstr "Waarschuwing. Niet alle geconfigureerde folders zijn schrijfbaar!" msgid "Symlinks" msgstr "Symlinks" -#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:682 +#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:683 msgid "Browse..." msgstr "Bladeren..." @@ -1250,15 +1250,15 @@ msgstr "%s is niet een lokale of online installatie-bron" msgid "%s requires an argument" msgstr "%s vereist een argument" -#: tlpkg/tltcl/tltcl.tcl:135 +#: tlpkg/tltcl/tltcl.tcl:136 msgid "Specific mirror..." msgstr "Specifieke CTAN mirror..." -#: tlpkg/tltcl/tltcl.tcl:152 +#: tlpkg/tltcl/tltcl.tcl:153 msgid "No mirror list available" msgstr "Geen lijst van mirrors beschikbaar" -#: tlpkg/tltcl/tltcl.tcl:765 +#: tlpkg/tltcl/tltcl.tcl:766 msgid "Select or type" msgstr "Kies of type" diff --git a/Master/tlpkg/translations/pl.po b/Master/tlpkg/translations/pl.po index 594ea098564..1ed9a5c5951 100644 --- a/Master/tlpkg/translations/pl.po +++ b/Master/tlpkg/translations/pl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: TeX Live 2023\n" "Report-Msgid-Bugs-To: tex-live@tug.org\n" -"POT-Creation-Date: 2024-07-21 01:41+0200\n" +"POT-Creation-Date: 2025-01-05 01:40+0100\n" "PO-Revision-Date: 2023-03-18 16:47+0100\n" "Last-Translator: Zofia Walczak <zofia.walczak@wmii.uni.lodz.pl>\n" "Language-Team: \n" @@ -113,7 +113,7 @@ msgstr "" #: tlpkg/installer/install-tl-gui.tcl:896 #: tlpkg/installer/install-tl-gui.tcl:946 #: tlpkg/installer/install-tl-gui.tcl:1034 -#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:690 +#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:691 #: texmf-dist/scripts/tlshell/tlshell.tcl:223 msgid "Ok" msgstr "Ok" @@ -403,7 +403,7 @@ msgstr "Usuń TeX Live %s" #: tlpkg/installer/install-tl-gui.tcl:899 #: tlpkg/installer/install-tl-gui.tcl:963 #: tlpkg/installer/install-tl-gui.tcl:1037 -#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:692 +#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:693 #: texmf-dist/scripts/tlshell/tlshell.tcl:233 #: texmf-dist/scripts/tlshell/tlshell.tcl:1386 msgid "Cancel" @@ -460,14 +460,14 @@ msgstr "Zainstalowane:" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:372 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:373 #: texmf-dist/scripts/tlshell/tlshell.tcl:227 msgid "Yes" msgstr "Tak" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:374 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:375 #: texmf-dist/scripts/tlshell/tlshell.tcl:229 msgid "No" msgstr "Nie" @@ -1075,7 +1075,7 @@ msgstr "Uwaga. Nie wszystkie skonfigurowane katalogi są zapisywalne!" msgid "Symlinks" msgstr "Dowiązania symboliczne" -#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:682 +#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:683 msgid "Browse..." msgstr "Przeglądaj ..." @@ -1258,15 +1258,15 @@ msgstr "%s nie lokalne lub zdalne repozytorium" msgid "%s requires an argument" msgstr "%s wymaga podania argumentu" -#: tlpkg/tltcl/tltcl.tcl:135 +#: tlpkg/tltcl/tltcl.tcl:136 msgid "Specific mirror..." msgstr "Konkretna kopia zasobów (mirror) ..." -#: tlpkg/tltcl/tltcl.tcl:152 +#: tlpkg/tltcl/tltcl.tcl:153 msgid "No mirror list available" msgstr "Żadna kopia zasobów (mirror) nie jest dostępna" -#: tlpkg/tltcl/tltcl.tcl:765 +#: tlpkg/tltcl/tltcl.tcl:766 msgid "Select or type" msgstr "Wybierz lub wpisz" diff --git a/Master/tlpkg/translations/pt_BR.po b/Master/tlpkg/translations/pt_BR.po index f6c53309844..2cc0eeb0aec 100644 --- a/Master/tlpkg/translations/pt_BR.po +++ b/Master/tlpkg/translations/pt_BR.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: TeX Live translation\n" "Report-Msgid-Bugs-To: tex-live@tug.org\n" -"POT-Creation-Date: 2024-07-21 01:41+0200\n" +"POT-Creation-Date: 2025-01-05 01:40+0100\n" "PO-Revision-Date: 2022-02-21 07:43-0300\n" "Last-Translator: Paulo Roberto Massa Cereda <cereda.paulo@gmail.com>\n" "Language-Team: Paulo Roberto Massa Cereda <cereda.paulo@gmail.com>\n" @@ -109,7 +109,7 @@ msgstr "" #: tlpkg/installer/install-tl-gui.tcl:896 #: tlpkg/installer/install-tl-gui.tcl:946 #: tlpkg/installer/install-tl-gui.tcl:1034 -#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:690 +#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:691 #: texmf-dist/scripts/tlshell/tlshell.tcl:223 msgid "Ok" msgstr "Ok" @@ -398,7 +398,7 @@ msgstr "Remover o TeX Live %s" #: tlpkg/installer/install-tl-gui.tcl:899 #: tlpkg/installer/install-tl-gui.tcl:963 #: tlpkg/installer/install-tl-gui.tcl:1037 -#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:692 +#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:693 #: texmf-dist/scripts/tlshell/tlshell.tcl:233 #: texmf-dist/scripts/tlshell/tlshell.tcl:1386 msgid "Cancel" @@ -456,14 +456,14 @@ msgstr "Instalado:" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:372 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:373 #: texmf-dist/scripts/tlshell/tlshell.tcl:227 msgid "Yes" msgstr "Sim" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:374 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:375 #: texmf-dist/scripts/tlshell/tlshell.tcl:229 msgid "No" msgstr "Não" @@ -1073,7 +1073,7 @@ msgstr "Aviso. Nem todos os diretórios configurados têm permissão de escrita! msgid "Symlinks" msgstr "Ligações simbólicas" -#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:682 +#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:683 msgid "Browse..." msgstr "Procurar..." @@ -1256,15 +1256,15 @@ msgstr "%s não é um repositório local ou remoto" msgid "%s requires an argument" msgstr "%s requer um argumento" -#: tlpkg/tltcl/tltcl.tcl:135 +#: tlpkg/tltcl/tltcl.tcl:136 msgid "Specific mirror..." msgstr "Especificar espelho..." -#: tlpkg/tltcl/tltcl.tcl:152 +#: tlpkg/tltcl/tltcl.tcl:153 msgid "No mirror list available" msgstr "A lista de espelhos não está disponível" -#: tlpkg/tltcl/tltcl.tcl:765 +#: tlpkg/tltcl/tltcl.tcl:766 msgid "Select or type" msgstr "Selecione ou digite" diff --git a/Master/tlpkg/translations/ru.po b/Master/tlpkg/translations/ru.po index 325c1145127..a9a276a705e 100644 --- a/Master/tlpkg/translations/ru.po +++ b/Master/tlpkg/translations/ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: TeX Live translation\n" "Report-Msgid-Bugs-To: tex-live@tug.org\n" -"POT-Creation-Date: 2024-07-21 01:41+0200\n" +"POT-Creation-Date: 2025-01-05 01:40+0100\n" "PO-Revision-Date: 2022-03-23 09:50+0800\n" "Last-Translator: Vladimir Lomov <irk.translator@yandex.ru>\n" "Language-Team: Russian <tldoc@tug.org>\n" @@ -114,7 +114,7 @@ msgstr "" #: tlpkg/installer/install-tl-gui.tcl:896 #: tlpkg/installer/install-tl-gui.tcl:946 #: tlpkg/installer/install-tl-gui.tcl:1034 -#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:690 +#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:691 #: texmf-dist/scripts/tlshell/tlshell.tcl:223 msgid "Ok" msgstr "Ок" @@ -404,7 +404,7 @@ msgstr "Удалить TeX Live %s" #: tlpkg/installer/install-tl-gui.tcl:899 #: tlpkg/installer/install-tl-gui.tcl:963 #: tlpkg/installer/install-tl-gui.tcl:1037 -#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:692 +#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:693 #: texmf-dist/scripts/tlshell/tlshell.tcl:233 #: texmf-dist/scripts/tlshell/tlshell.tcl:1386 msgid "Cancel" @@ -461,14 +461,14 @@ msgstr "Установлен:" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:372 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:373 #: texmf-dist/scripts/tlshell/tlshell.tcl:227 msgid "Yes" msgstr "Да" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:374 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:375 #: texmf-dist/scripts/tlshell/tlshell.tcl:229 msgid "No" msgstr "Нет" @@ -1074,7 +1074,7 @@ msgstr "Предупреждение. Не все каталоги доступ msgid "Symlinks" msgstr "Символьные ссылки" -#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:682 +#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:683 msgid "Browse..." msgstr "Обзор..." @@ -1257,15 +1257,15 @@ msgstr "%s не является ни локальным, ни удалённы msgid "%s requires an argument" msgstr "для %s требуется аргумент" -#: tlpkg/tltcl/tltcl.tcl:135 +#: tlpkg/tltcl/tltcl.tcl:136 msgid "Specific mirror..." msgstr "Определённое зеркало..." -#: tlpkg/tltcl/tltcl.tcl:152 +#: tlpkg/tltcl/tltcl.tcl:153 msgid "No mirror list available" msgstr "Нет списка зеркал" -#: tlpkg/tltcl/tltcl.tcl:765 +#: tlpkg/tltcl/tltcl.tcl:766 msgid "Select or type" msgstr "Выберите или введите" diff --git a/Master/tlpkg/translations/sk.po b/Master/tlpkg/translations/sk.po index 50f46a1b40e..4d885f8f4ed 100644 --- a/Master/tlpkg/translations/sk.po +++ b/Master/tlpkg/translations/sk.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: TeX Live translation\n" "Report-Msgid-Bugs-To: tex-live@tug.org\n" -"POT-Creation-Date: 2024-07-21 01:41+0200\n" +"POT-Creation-Date: 2025-01-05 01:40+0100\n" "PO-Revision-Date: 2022-03-21 13:59+0100\n" "Last-Translator: Ján Buša <jan.busa@tuke.sk>\n" "Language-Team: tex-live@tug.org\n" @@ -108,7 +108,7 @@ msgstr "" #: tlpkg/installer/install-tl-gui.tcl:896 #: tlpkg/installer/install-tl-gui.tcl:946 #: tlpkg/installer/install-tl-gui.tcl:1034 -#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:690 +#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:691 #: texmf-dist/scripts/tlshell/tlshell.tcl:223 msgid "Ok" msgstr "OK" @@ -397,7 +397,7 @@ msgstr "Odstrániť TeX Live %s" #: tlpkg/installer/install-tl-gui.tcl:899 #: tlpkg/installer/install-tl-gui.tcl:963 #: tlpkg/installer/install-tl-gui.tcl:1037 -#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:692 +#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:693 #: texmf-dist/scripts/tlshell/tlshell.tcl:233 #: texmf-dist/scripts/tlshell/tlshell.tcl:1386 msgid "Cancel" @@ -454,14 +454,14 @@ msgstr "Nainštalované:" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:372 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:373 #: texmf-dist/scripts/tlshell/tlshell.tcl:227 msgid "Yes" msgstr "Áno" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:374 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:375 #: texmf-dist/scripts/tlshell/tlshell.tcl:229 msgid "No" msgstr "Nie" @@ -1069,7 +1069,7 @@ msgstr "Varovanie. Nie všetky nakonfigurované adresáre sú zapisovateľné!" msgid "Symlinks" msgstr "Symbolické odkazy" -#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:682 +#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:683 msgid "Browse..." msgstr "Prezerať ..." @@ -1255,15 +1255,15 @@ msgstr "%s nie je lokálne alebo vzdialené úložisko" msgid "%s requires an argument" msgstr "%s požaduje argument" -#: tlpkg/tltcl/tltcl.tcl:135 +#: tlpkg/tltcl/tltcl.tcl:136 msgid "Specific mirror..." msgstr "Konkrétne zrkadlo..." -#: tlpkg/tltcl/tltcl.tcl:152 +#: tlpkg/tltcl/tltcl.tcl:153 msgid "No mirror list available" msgstr "Žiadne zrkadlo nie je dostupné" -#: tlpkg/tltcl/tltcl.tcl:765 +#: tlpkg/tltcl/tltcl.tcl:766 msgid "Select or type" msgstr "Zvoliť alebo napísať" diff --git a/Master/tlpkg/translations/sl.po b/Master/tlpkg/translations/sl.po index a69fe2f1911..d48612ecd64 100644 --- a/Master/tlpkg/translations/sl.po +++ b/Master/tlpkg/translations/sl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: TeX Live translation\n" "Report-Msgid-Bugs-To: tex-live@tug.org\n" -"POT-Creation-Date: 2024-07-21 01:41+0200\n" +"POT-Creation-Date: 2025-01-05 01:40+0100\n" "PO-Revision-Date: 2022-03-21 13:45+0100\n" "Last-Translator: Mojca Miklavec <mojca.miklavec.lists@gmail.com>\n" "Language-Team: TL Translation Team <tex-live@tug.org>\n" @@ -110,7 +110,7 @@ msgstr "" #: tlpkg/installer/install-tl-gui.tcl:896 #: tlpkg/installer/install-tl-gui.tcl:946 #: tlpkg/installer/install-tl-gui.tcl:1034 -#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:690 +#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:691 #: texmf-dist/scripts/tlshell/tlshell.tcl:223 msgid "Ok" msgstr "V redu" @@ -425,7 +425,7 @@ msgstr "Odstrani TeX Live %s" #: tlpkg/installer/install-tl-gui.tcl:899 #: tlpkg/installer/install-tl-gui.tcl:963 #: tlpkg/installer/install-tl-gui.tcl:1037 -#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:692 +#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:693 #: texmf-dist/scripts/tlshell/tlshell.tcl:233 #: texmf-dist/scripts/tlshell/tlshell.tcl:1386 msgid "Cancel" @@ -484,14 +484,14 @@ msgstr "Nameščen:" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:372 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:373 #: texmf-dist/scripts/tlshell/tlshell.tcl:227 msgid "Yes" msgstr "Da" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:374 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:375 #: texmf-dist/scripts/tlshell/tlshell.tcl:229 msgid "No" msgstr "Ne" @@ -1127,7 +1127,7 @@ msgstr "Opozorilo: V nekatere od map ni moč pisati!" msgid "Symlinks" msgstr "Simbolne povezave" -#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:682 +#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:683 #, fuzzy msgid "Browse..." msgstr "Brskaj …" @@ -1318,16 +1318,16 @@ msgstr "%s ni lokalni ali oddaljeni repozitorij" msgid "%s requires an argument" msgstr "%s potrebuje parameter" -#: tlpkg/tltcl/tltcl.tcl:135 +#: tlpkg/tltcl/tltcl.tcl:136 #, fuzzy msgid "Specific mirror..." msgstr "Izberi zrcalni strežnik …" -#: tlpkg/tltcl/tltcl.tcl:152 +#: tlpkg/tltcl/tltcl.tcl:153 msgid "No mirror list available" msgstr "Seznam zrcalnih strežnikov ni na voljo" -#: tlpkg/tltcl/tltcl.tcl:765 +#: tlpkg/tltcl/tltcl.tcl:766 #, fuzzy msgid "Select or type" msgstr "Izberi ali napiši" diff --git a/Master/tlpkg/translations/sr.po b/Master/tlpkg/translations/sr.po index bbccd104d8a..9a27e3bf86b 100644 --- a/Master/tlpkg/translations/sr.po +++ b/Master/tlpkg/translations/sr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: TeX Live translation\n" "Report-Msgid-Bugs-To: tex-live@tug.org\n" -"POT-Creation-Date: 2024-07-21 01:41+0200\n" +"POT-Creation-Date: 2025-01-05 01:40+0100\n" "PO-Revision-Date: 2019-10-23 02:13+0300\n" "Last-Translator: Nikola Lečić <nikola.lecic@anthesphoria.net>\n" "Language-Team: TL Translation Team <tex-live@tug.org>\n" @@ -113,7 +113,7 @@ msgstr "" #: tlpkg/installer/install-tl-gui.tcl:896 #: tlpkg/installer/install-tl-gui.tcl:946 #: tlpkg/installer/install-tl-gui.tcl:1034 -#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:690 +#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:691 #: texmf-dist/scripts/tlshell/tlshell.tcl:223 msgid "Ok" msgstr "У реду" @@ -402,7 +402,7 @@ msgstr "TeX Live %s: уклањање" #: tlpkg/installer/install-tl-gui.tcl:899 #: tlpkg/installer/install-tl-gui.tcl:963 #: tlpkg/installer/install-tl-gui.tcl:1037 -#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:692 +#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:693 #: texmf-dist/scripts/tlshell/tlshell.tcl:233 #: texmf-dist/scripts/tlshell/tlshell.tcl:1386 msgid "Cancel" @@ -460,14 +460,14 @@ msgstr "Инсталиран:" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:372 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:373 #: texmf-dist/scripts/tlshell/tlshell.tcl:227 msgid "Yes" msgstr "да" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:374 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:375 #: texmf-dist/scripts/tlshell/tlshell.tcl:229 msgid "No" msgstr "не" @@ -1075,7 +1075,7 @@ msgstr "Упозорење: у неке од изабраних директор msgid "Symlinks" msgstr "Симболички линкови" -#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:682 +#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:683 msgid "Browse..." msgstr "Изабрати директоријум..." @@ -1258,15 +1258,15 @@ msgstr "%s није ни локални и удаљени репозиториј msgid "%s requires an argument" msgstr "Уз %s је потребан аргумент" -#: tlpkg/tltcl/tltcl.tcl:135 +#: tlpkg/tltcl/tltcl.tcl:136 msgid "Specific mirror..." msgstr "Специјални сајт-огледало (mirror)" -#: tlpkg/tltcl/tltcl.tcl:152 +#: tlpkg/tltcl/tltcl.tcl:153 msgid "No mirror list available" msgstr "Недоступан списак сајтова-огледала (mirror)" -#: tlpkg/tltcl/tltcl.tcl:765 +#: tlpkg/tltcl/tltcl.tcl:766 msgid "Select or type" msgstr "Изаберите или откуцајте" diff --git a/Master/tlpkg/translations/uk.po b/Master/tlpkg/translations/uk.po index e1431aec807..f6aba6abaab 100644 --- a/Master/tlpkg/translations/uk.po +++ b/Master/tlpkg/translations/uk.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: TeX Live 2010\n" "Report-Msgid-Bugs-To: tex-live@tug.org\n" -"POT-Creation-Date: 2024-07-21 01:41+0200\n" +"POT-Creation-Date: 2025-01-05 01:40+0100\n" "PO-Revision-Date: 2019-03-23 09:02+0200\n" "Last-Translator: Andriy Bandura <andriykopanytsia@gmail.com>\n" "Language-Team: Ukrainian <andriykopanytsia@gmail.com>\n" @@ -113,7 +113,7 @@ msgstr "" #: tlpkg/installer/install-tl-gui.tcl:896 #: tlpkg/installer/install-tl-gui.tcl:946 #: tlpkg/installer/install-tl-gui.tcl:1034 -#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:690 +#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:691 #: texmf-dist/scripts/tlshell/tlshell.tcl:223 msgid "Ok" msgstr "Гаразд" @@ -402,7 +402,7 @@ msgstr "Вилучення TeX Live %s" #: tlpkg/installer/install-tl-gui.tcl:899 #: tlpkg/installer/install-tl-gui.tcl:963 #: tlpkg/installer/install-tl-gui.tcl:1037 -#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:692 +#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:693 #: texmf-dist/scripts/tlshell/tlshell.tcl:233 #: texmf-dist/scripts/tlshell/tlshell.tcl:1386 msgid "Cancel" @@ -459,14 +459,14 @@ msgstr "Встановлено:" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:372 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:373 #: texmf-dist/scripts/tlshell/tlshell.tcl:227 msgid "Yes" msgstr "Так" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:374 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:375 #: texmf-dist/scripts/tlshell/tlshell.tcl:229 msgid "No" msgstr "Ні" @@ -1065,7 +1065,7 @@ msgstr "Попередження. Не всі налаштовані катал msgid "Symlinks" msgstr "Символьні посилання" -#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:682 +#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:683 msgid "Browse..." msgstr "Огляд..." @@ -1248,15 +1248,15 @@ msgstr "" msgid "%s requires an argument" msgstr "" -#: tlpkg/tltcl/tltcl.tcl:135 +#: tlpkg/tltcl/tltcl.tcl:136 msgid "Specific mirror..." msgstr "Особливе дзеркало" -#: tlpkg/tltcl/tltcl.tcl:152 +#: tlpkg/tltcl/tltcl.tcl:153 msgid "No mirror list available" msgstr "" -#: tlpkg/tltcl/tltcl.tcl:765 +#: tlpkg/tltcl/tltcl.tcl:766 msgid "Select or type" msgstr "Виберіть або введіть" diff --git a/Master/tlpkg/translations/vi.po b/Master/tlpkg/translations/vi.po index 51e240dd4e0..1efefdaf1f2 100644 --- a/Master/tlpkg/translations/vi.po +++ b/Master/tlpkg/translations/vi.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: TeX Live translation\n" "Report-Msgid-Bugs-To: tex-live@tug.org\n" -"POT-Creation-Date: 2024-07-21 01:41+0200\n" +"POT-Creation-Date: 2025-01-05 01:40+0100\n" "PO-Revision-Date: 2021-03-13 11:02+0100\n" "Last-Translator: Anh K. Huỳnh <kyanh@viettug.org>\n" "Language-Team: TL Translation Team <tex-live@tug.org>\n" @@ -111,7 +111,7 @@ msgstr "" #: tlpkg/installer/install-tl-gui.tcl:896 #: tlpkg/installer/install-tl-gui.tcl:946 #: tlpkg/installer/install-tl-gui.tcl:1034 -#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:690 +#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:691 #: texmf-dist/scripts/tlshell/tlshell.tcl:223 msgid "Ok" msgstr "Đồng ý" @@ -400,7 +400,7 @@ msgstr "Gỡ bỏ TeX Live %s" #: tlpkg/installer/install-tl-gui.tcl:899 #: tlpkg/installer/install-tl-gui.tcl:963 #: tlpkg/installer/install-tl-gui.tcl:1037 -#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:692 +#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:693 #: texmf-dist/scripts/tlshell/tlshell.tcl:233 #: texmf-dist/scripts/tlshell/tlshell.tcl:1386 msgid "Cancel" @@ -457,14 +457,14 @@ msgstr "Đã cài đặt:" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:372 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:373 #: texmf-dist/scripts/tlshell/tlshell.tcl:227 msgid "Yes" msgstr "Đồng ý" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:374 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:375 #: texmf-dist/scripts/tlshell/tlshell.tcl:229 msgid "No" msgstr "Không" @@ -1070,7 +1070,7 @@ msgstr "Cảnh báo: Không thể ghi vào một số thư mục!" msgid "Symlinks" msgstr "Liên kết mềm" -#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:682 +#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:683 msgid "Browse..." msgstr "Duyệt tìm..." @@ -1253,15 +1253,15 @@ msgstr "%s không phải kho ở dưới máy hay trên mạng" msgid "%s requires an argument" msgstr "%s thiếu một tham số" -#: tlpkg/tltcl/tltcl.tcl:135 +#: tlpkg/tltcl/tltcl.tcl:136 msgid "Specific mirror..." msgstr "Chọn kho đệm..." -#: tlpkg/tltcl/tltcl.tcl:152 +#: tlpkg/tltcl/tltcl.tcl:153 msgid "No mirror list available" msgstr "Không thấy danh sách mirror nào" -#: tlpkg/tltcl/tltcl.tcl:765 +#: tlpkg/tltcl/tltcl.tcl:766 msgid "Select or type" msgstr "Chọn hoặc nhập vào" diff --git a/Master/tlpkg/translations/zh_CN.po b/Master/tlpkg/translations/zh_CN.po index bd9286a3daf..cdfbffe44c1 100644 --- a/Master/tlpkg/translations/zh_CN.po +++ b/Master/tlpkg/translations/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: TeX Live translation\n" "Report-Msgid-Bugs-To: tex-live@tug.org\n" -"POT-Creation-Date: 2024-07-21 01:41+0200\n" +"POT-Creation-Date: 2025-01-05 01:40+0100\n" "PO-Revision-Date: 2009-09-22 12:54+0800\n" "Last-Translator: Jiang Jiang <gzjjgod@gmail.com>\n" "Language-Team: TL Translation Team <tex-live@tug.org>\n" @@ -101,7 +101,7 @@ msgstr "" #: tlpkg/installer/install-tl-gui.tcl:896 #: tlpkg/installer/install-tl-gui.tcl:946 #: tlpkg/installer/install-tl-gui.tcl:1034 -#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:690 +#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:691 #: texmf-dist/scripts/tlshell/tlshell.tcl:223 msgid "Ok" msgstr "确定" @@ -392,7 +392,7 @@ msgstr "删除 TeX Live %s" #: tlpkg/installer/install-tl-gui.tcl:899 #: tlpkg/installer/install-tl-gui.tcl:963 #: tlpkg/installer/install-tl-gui.tcl:1037 -#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:692 +#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:693 #: texmf-dist/scripts/tlshell/tlshell.tcl:233 #: texmf-dist/scripts/tlshell/tlshell.tcl:1386 msgid "Cancel" @@ -449,14 +449,14 @@ msgstr "已安装的:" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:372 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:373 #: texmf-dist/scripts/tlshell/tlshell.tcl:227 msgid "Yes" msgstr "是" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:374 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:375 #: texmf-dist/scripts/tlshell/tlshell.tcl:229 msgid "No" msgstr "否" @@ -1038,7 +1038,7 @@ msgstr "" msgid "Symlinks" msgstr "" -#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:682 +#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:683 msgid "Browse..." msgstr "" @@ -1219,15 +1219,15 @@ msgstr "" msgid "%s requires an argument" msgstr "" -#: tlpkg/tltcl/tltcl.tcl:135 +#: tlpkg/tltcl/tltcl.tcl:136 msgid "Specific mirror..." msgstr "" -#: tlpkg/tltcl/tltcl.tcl:152 +#: tlpkg/tltcl/tltcl.tcl:153 msgid "No mirror list available" msgstr "" -#: tlpkg/tltcl/tltcl.tcl:765 +#: tlpkg/tltcl/tltcl.tcl:766 msgid "Select or type" msgstr "" diff --git a/Master/tlpkg/translations/zh_TW.po b/Master/tlpkg/translations/zh_TW.po index 4bd4a771fc8..3823a446980 100644 --- a/Master/tlpkg/translations/zh_TW.po +++ b/Master/tlpkg/translations/zh_TW.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: TeX Live translation\n" "Report-Msgid-Bugs-To: tex-live@tug.org\n" -"POT-Creation-Date: 2024-07-21 01:41+0200\n" +"POT-Creation-Date: 2025-01-05 01:40+0100\n" "PO-Revision-Date: 2023-03-02 16:26+0800\n" "Last-Translator: Kung-chih Jen <kaitul@outlook.com>\n" "Language-Team: TL Translation Team <tex-live@tug.org>\n" @@ -107,7 +107,7 @@ msgstr "" #: tlpkg/installer/install-tl-gui.tcl:896 #: tlpkg/installer/install-tl-gui.tcl:946 #: tlpkg/installer/install-tl-gui.tcl:1034 -#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:690 +#: tlpkg/installer/install-tl-gui.tcl:1257 tlpkg/tltcl/tltcl.tcl:691 #: texmf-dist/scripts/tlshell/tlshell.tcl:223 msgid "Ok" msgstr "確定" @@ -396,7 +396,7 @@ msgstr "移除 TeX Live %s" #: tlpkg/installer/install-tl-gui.tcl:899 #: tlpkg/installer/install-tl-gui.tcl:963 #: tlpkg/installer/install-tl-gui.tcl:1037 -#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:692 +#: tlpkg/installer/install-tl-gui.tcl:1259 tlpkg/tltcl/tltcl.tcl:693 #: texmf-dist/scripts/tlshell/tlshell.tcl:233 #: texmf-dist/scripts/tlshell/tlshell.tcl:1386 msgid "Cancel" @@ -453,14 +453,14 @@ msgstr "已安裝:" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:372 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:373 #: texmf-dist/scripts/tlshell/tlshell.tcl:227 msgid "Yes" msgstr "是" #: texmf-dist/scripts/texlive/tlmgrgui.pl:694 #: texmf-dist/scripts/texlive/tlmgrgui.pl:1103 -#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:374 +#: texmf-dist/scripts/texlive/tlmgrgui.pl:1724 tlpkg/tltcl/tltcl.tcl:375 #: texmf-dist/scripts/tlshell/tlshell.tcl:229 msgid "No" msgstr "否" @@ -1060,7 +1060,7 @@ msgstr "警告。不是所有的已設定的目錄皆可寫入!" msgid "Symlinks" msgstr "符號連結" -#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:682 +#: tlpkg/installer/install-tl-gui.tcl:1237 tlpkg/tltcl/tltcl.tcl:683 msgid "Browse..." msgstr "瀏覽…" @@ -1243,15 +1243,15 @@ msgstr "%s 不是本機或遠端存放庫" msgid "%s requires an argument" msgstr "%s 需要引數" -#: tlpkg/tltcl/tltcl.tcl:135 +#: tlpkg/tltcl/tltcl.tcl:136 msgid "Specific mirror..." msgstr "指定鏡像…" -#: tlpkg/tltcl/tltcl.tcl:152 +#: tlpkg/tltcl/tltcl.tcl:153 msgid "No mirror list available" msgstr "沒有可用的鏡像清單" -#: tlpkg/tltcl/tltcl.tcl:765 +#: tlpkg/tltcl/tltcl.tcl:766 msgid "Select or type" msgstr "選取或類型" |