summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-07-09 03:01:16 +0000
committerNorbert Preining <norbert@preining.info>2022-07-09 03:01:16 +0000
commit7891283a2f2fb8a8a884bb212c36da8082764a9b (patch)
tree98a050dec8439492144177997c6f66e4f9543d62 /macros
parentc600912bde983d6a04c7ce42321d50d4c7c1a50b (diff)
CTAN sync 202207090301
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/acmart/README4
-rw-r--r--macros/latex/contrib/acmart/acmart.dtx51
-rw-r--r--macros/latex/contrib/acmart/acmart.pdfbin906902 -> 909624 bytes
-rw-r--r--macros/latex/contrib/acmart/acmguide.pdfbin427386 -> 427632 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmengage.pdfbin397498 -> 395777 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmlarge.pdfbin605879 -> 605879 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdfbin628602 -> 628602 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdfbin1049943 -> 1049943 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdfbin618221 -> 618221 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmsmall.pdfbin615731 -> 615731 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-acmtog.pdfbin563350 -> 563350 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-authordraft.pdfbin1043035 -> 1043038 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-lualatex.pdfbin780062 -> 780062 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-manuscript.pdfbin617941 -> 617941 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdfbin615270 -> 615270 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdfbin1054983 -> 1054983 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-sigconf.pdfbin1039228 -> 1039228 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-sigplan.pdfbin1048048 -> 1048048 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/sample-xelatex.pdfbin659076 -> 659074 bytes
-rw-r--r--macros/latex/contrib/acmart/samples/samples.dtx36
-rw-r--r--macros/latex/contrib/asternote/README.md23
-rw-r--r--macros/latex/contrib/asternote/asternote-en.md74
-rw-r--r--macros/latex/contrib/asternote/asternote-ja.md74
-rw-r--r--macros/latex/contrib/asternote/asternote.pdfbin0 -> 120160 bytes
-rw-r--r--macros/latex/contrib/asternote/asternote.sty62
-rw-r--r--macros/latex/contrib/asternote/asternote.tex427
-rw-r--r--macros/latex/contrib/asternote/asternote_example.tex19
-rw-r--r--macros/latex/contrib/hideanswer/README.md19
-rw-r--r--macros/latex/contrib/hideanswer/hideanswer-en.md77
-rw-r--r--macros/latex/contrib/hideanswer/hideanswer-ja.md79
-rw-r--r--macros/latex/contrib/hideanswer/hideanswer.pdfbin0 -> 122619 bytes
-rw-r--r--macros/latex/contrib/hideanswer/hideanswer.sty5
-rw-r--r--macros/latex/contrib/hideanswer/hideanswer.tex446
-rw-r--r--macros/latex/contrib/hideanswer/hideanswer_example.tex38
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md10
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/README.md2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/fontspec-luatex-tmp-ltx.sty2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx33
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdfbin953783 -> 952309 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty5
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx14
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdfbin682784 -> 682520 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdfbin578204 -> 577920 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdfbin506128 -> 505882 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdfbin547234 -> 546973 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdfbin530285 -> 530024 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdfbin533482 -> 533213 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdfbin525675 -> 525406 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdfbin581124 -> 580848 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdfbin504914 -> 504654 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx18
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdfbin739385 -> 738986 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdfbin552527 -> 552584 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdfbin674451 -> 673774 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdfbin672805 -> 672516 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdfbin517685 -> 517558 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdfbin417902 -> 417757 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdfbin573866 -> 573773 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdfbin385316 -> 385493 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdflscape-ltx.sty2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx6
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdfbin426234 -> 425881 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx6
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdfbin447021 -> 446714 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/transparent-ltx.sty2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty2
-rw-r--r--macros/latex/contrib/postnotes/CHANGELOG.md7
-rw-r--r--macros/latex/contrib/postnotes/postnotes-code.pdfbin813102 -> 812284 bytes
-rw-r--r--macros/latex/contrib/postnotes/postnotes.dtx2
-rw-r--r--macros/latex/contrib/postnotes/postnotes.pdfbin178034 -> 176560 bytes
-rw-r--r--macros/latex/contrib/postnotes/postnotes.tex46
-rw-r--r--macros/latex/contrib/prettytok/DEPENDS.txt3
-rw-r--r--macros/latex/contrib/prettytok/README6
-rw-r--r--macros/latex/contrib/prettytok/prettytok.lua98
-rw-r--r--macros/latex/contrib/prettytok/prettytok.pdfbin335928 -> 369580 bytes
-rw-r--r--macros/latex/contrib/prettytok/prettytok.sty729
-rw-r--r--macros/latex/contrib/prettytok/prettytok.tex171
-rw-r--r--macros/latex/contrib/prettytok/prettytok_template.html283
-rw-r--r--macros/latex/contrib/qrbill/README.md10
-rw-r--r--macros/latex/contrib/qrbill/qrbill.dtx180
-rw-r--r--macros/latex/contrib/qrbill/qrbill.ins13
-rw-r--r--macros/latex/contrib/qrbill/qrbill.pdfbin75678 -> 80077 bytes
-rw-r--r--macros/latex/contrib/saveenv/DEPENDS.txt1
-rw-r--r--macros/latex/contrib/saveenv/README24
-rw-r--r--macros/latex/contrib/saveenv/saveenv.pdfbin0 -> 384203 bytes
-rw-r--r--macros/latex/contrib/saveenv/saveenv.sty147
-rw-r--r--macros/latex/contrib/saveenv/saveenv.tex189
-rw-r--r--macros/latex/contrib/scrlayer-fancyhdr/MANIFEST.md101
-rw-r--r--macros/latex/contrib/scrlayer-fancyhdr/README.md4
-rw-r--r--macros/latex/contrib/scrlayer-fancyhdr/scrlayer-fancyhdr.dtx887
-rw-r--r--macros/latex/contrib/scrlayer-fancyhdr/scrlayer-fancyhdr.pdfbin243390 -> 330252 bytes
-rw-r--r--macros/xetex/latex/bidi/README4
-rw-r--r--macros/xetex/latex/bidi/bidi-doc-intro.ltx2
-rw-r--r--macros/xetex/latex/bidi/bidi-doc-title.ltx4
-rw-r--r--macros/xetex/latex/bidi/bidi-doc.ltx2
-rw-r--r--macros/xetex/latex/bidi/bidi-doc.pdfbin176523 -> 176529 bytes
-rw-r--r--macros/xetex/latex/bidi/bidi.dtx27
-rw-r--r--macros/xetex/latex/bidi/bidi.pdfbin3471049 -> 3471206 bytes
114 files changed, 2850 insertions, 1676 deletions
diff --git a/macros/latex/contrib/acmart/README b/macros/latex/contrib/acmart/README
index 0b833bdd1b..b84560af24 100644
--- a/macros/latex/contrib/acmart/README
+++ b/macros/latex/contrib/acmart/README
@@ -12,6 +12,10 @@ The production version is the one on CTAN and ACM sites.
Changes
+Version 1.86. Empty country in affiliation now produces an error
+ Bug fixes
+ New samples for acmengage
+
Version 1.85. Bug fixes
Added support for Creative Commons licenses (requires
doclicense images)
diff --git a/macros/latex/contrib/acmart/acmart.dtx b/macros/latex/contrib/acmart/acmart.dtx
index dcb00ec66c..da94d187c5 100644
--- a/macros/latex/contrib/acmart/acmart.dtx
+++ b/macros/latex/contrib/acmart/acmart.dtx
@@ -2142,7 +2142,7 @@
\ProvidesFile{acmart.dtx}
%</gobble>
%<class>\ProvidesClass{acmart}
-[2022/05/10 v1.85 Typesetting articles for the Association for Computing Machinery]
+[2022/06/26 v1.86 Typesetting articles for the Association for Computing Machinery]
% \end{macrocode}
%
% \changes{v1.00}{2016/04/14}{First released version}
@@ -6394,6 +6394,7 @@
% \changes{v1.43}{2017/07/11}{Added comma before country for journals}
% \changes{v1.46}{2017/08/30}{Corrected spacing for institution}
% \changes{v1.73}{2020/09/07}{Check the presence in affil}
+% \changes{v1.86}{2022/06/26}{Error if country is empty}
% Theoretically we can define the macros for \cs{affiliation} inside
% the \cs{@mkauthors}-style commands. However, this would lead to a
% strange error if an author uses them outside \cs{affiliation}. Of
@@ -6408,7 +6409,9 @@
\def\city#1{\global\@ACM@citypresenttrue\unskip\ignorespaces}
\def\state#1{\unskip\ignorespaces}
\newcommand\department[2][0]{\unskip\ignorespaces}
- \def\country#1{\global\@ACM@countrypresenttrue
+ \def\country#1{\StrDel{#1}{ }[\@tempa]%
+ \ifx\@tempa\@empty\else
+ \global\@ACM@countrypresenttrue\fi
\if@ACM@affiliation@obeypunctuation\else, \fi#1\ignorespaces}
\else
\def\position#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
@@ -7257,7 +7260,9 @@
% \changes{v1.59}{2019/04/20}{Added logic for conference papers using
% journal format}
% \changes{v1.59}{2019/04/20}{Moved page styles to \cs{AtBeginDocument}}
-% \changes{v1.76}{2021/02/21}{Fixed bug with no line numbers for nonacm}
+% \changes{v1.76}{2021/02/21}{Fixed bug with no line numbers for
+% nonacm}
+% \changes{v1.86}{2022/06/26}{Special treatment of ACM Engage materials}
% The page style for all pages but the first one
% \begin{macrocode}
\AtBeginDocument{%
@@ -7320,12 +7325,20 @@
\fancyhead[LE]{\ACM@linecountL}%
\fancyhead[RO]{\ACM@linecountR}%
\else%
- \fancyhead[LE]{\ACM@linecountL\@headfootfont\footnotesize
- \acmConference@shortname,
- \acmConference@date, \acmConference@venue}%
- \fancyhead[RO]{\@headfootfont
- \acmConference@shortname,
- \acmConference@date, \acmConference@venue\ACM@linecountR}%
+ \if@ACM@engage
+ \fancyhead[LE]{\ACM@linecountL\@headfootfont\footnotesize
+ EngageCSEdu. \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi}%
+ \fancyhead[RO]{\@headfootfont
+ EngageCSEdu. \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi
+ \ACM@linecountR}%
+ \else
+ \fancyhead[LE]{\ACM@linecountL\@headfootfont\footnotesize
+ \acmConference@shortname,
+ \acmConference@date, \acmConference@venue}%
+ \fancyhead[RO]{\@headfootfont
+ \acmConference@shortname,
+ \acmConference@date, \acmConference@venue\ACM@linecountR}%
+ \fi
\fi
\fi
\else % Proceedings
@@ -7336,12 +7349,20 @@
\fancyhead[LE]{\ACM@linecountL}%
\fancyhead[RO]{\ACM@linecountR}%
\else%
- \fancyhead[LE]{\ACM@linecountL\@headfootfont
- \acmConference@shortname,
- \acmConference@date, \acmConference@venue}%
- \fancyhead[RO]{\@headfootfont
- \acmConference@shortname,
- \acmConference@date, \acmConference@venue\ACM@linecountR}%
+ \if@ACM@engage
+ \fancyhead[LE]{\ACM@linecountL\@headfootfont
+ EngageCSEdu. \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi}%
+ \fancyhead[RO]{\@headfootfont
+ EngageCSEdu. \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi
+ \ACM@linecountR}%
+ \else
+ \fancyhead[LE]{\ACM@linecountL\@headfootfont
+ \acmConference@shortname,
+ \acmConference@date, \acmConference@venue}%
+ \fancyhead[RO]{\@headfootfont
+ \acmConference@shortname,
+ \acmConference@date, \acmConference@venue\ACM@linecountR}%
+ \fi
\fi
\fi
\if@ACM@sigchiamode
diff --git a/macros/latex/contrib/acmart/acmart.pdf b/macros/latex/contrib/acmart/acmart.pdf
index 1ea8df54c4..d7d29d8279 100644
--- a/macros/latex/contrib/acmart/acmart.pdf
+++ b/macros/latex/contrib/acmart/acmart.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/acmguide.pdf b/macros/latex/contrib/acmart/acmguide.pdf
index 2ad7f38b26..2c96654fa5 100644
--- a/macros/latex/contrib/acmart/acmguide.pdf
+++ b/macros/latex/contrib/acmart/acmguide.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmengage.pdf b/macros/latex/contrib/acmart/samples/sample-acmengage.pdf
index cd50ae2a4e..f9caa582b9 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmengage.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmengage.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf b/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf
index 63c033e8ea..1d17b01c8e 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmlarge.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf
index 8ca28a339b..71f6045226 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmsmall-biblatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf
index 7ce11c18ef..72f5f4d98d 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmsmall-conf.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf
index a669bf6e70..a01026bcb6 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmsmall-submission.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf b/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf
index 1d4570b898..a966e4d256 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmsmall.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-acmtog.pdf b/macros/latex/contrib/acmart/samples/sample-acmtog.pdf
index 78e6c02e70..d42901423d 100644
--- a/macros/latex/contrib/acmart/samples/sample-acmtog.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-acmtog.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-authordraft.pdf b/macros/latex/contrib/acmart/samples/sample-authordraft.pdf
index a1894beb3a..654952f224 100644
--- a/macros/latex/contrib/acmart/samples/sample-authordraft.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-authordraft.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-lualatex.pdf b/macros/latex/contrib/acmart/samples/sample-lualatex.pdf
index 678fa91b4c..a488510535 100644
--- a/macros/latex/contrib/acmart/samples/sample-lualatex.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-lualatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-manuscript.pdf b/macros/latex/contrib/acmart/samples/sample-manuscript.pdf
index 1e4e320907..7ab5447a4f 100644
--- a/macros/latex/contrib/acmart/samples/sample-manuscript.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-manuscript.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf b/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf
index 830091259d..5b32f3eb2f 100644
--- a/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-sigconf-biblatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf b/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf
index d809b00c0c..312f44903c 100644
--- a/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-sigconf-i13n.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-sigconf.pdf b/macros/latex/contrib/acmart/samples/sample-sigconf.pdf
index c2405c25d6..ee926cd110 100644
--- a/macros/latex/contrib/acmart/samples/sample-sigconf.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-sigconf.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-sigplan.pdf b/macros/latex/contrib/acmart/samples/sample-sigplan.pdf
index 126b953ab3..c77f003baf 100644
--- a/macros/latex/contrib/acmart/samples/sample-sigplan.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-sigplan.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/sample-xelatex.pdf b/macros/latex/contrib/acmart/samples/sample-xelatex.pdf
index 246ab3e7be..77dcd18b8a 100644
--- a/macros/latex/contrib/acmart/samples/sample-xelatex.pdf
+++ b/macros/latex/contrib/acmart/samples/sample-xelatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/acmart/samples/samples.dtx b/macros/latex/contrib/acmart/samples/samples.dtx
index a6738fc897..e5ab6b4399 100644
--- a/macros/latex/contrib/acmart/samples/samples.dtx
+++ b/macros/latex/contrib/acmart/samples/samples.dtx
@@ -1091,10 +1091,16 @@ This section is included in the template to explain the choices for the meta-dat
Current courses are:
\begin{itemize}
- \item CS0 -- a breadth first introductory computing course similar to Exploring Computer Science or AP CS Principles
- \item CS1 -- an introductory programming course covering topics normally associated with an imperative or functional programming course. Similar to an AP CS A course
- \item Data Structures -- a follow-on course occurring after CS1 that introduces linear and non-linear data structures including implementation and usage
- \item Discrete Math -- a course covering discrete mathematical structures such as integers, graphs and logic statements. This may include logic, set theory, combinatorics, graphy theory, number theory, topology, etc.
+ \item CS0---a breadth first introductory computing course similar to Exploring Computer Science or AP CS Principles
+ \item CS1---an introductory programming course covering topics normally associated with an imperative or functional programming course. Similar to an AP CS A course
+ \item Data Structures---a follow-on course occurring after CS1 that introduces linear and non-linear data structures including implementation and usage
+ \item Discrete Math---a course covering discrete mathematical
+ structures such as integers, graphs and logic statements. This
+ may include logic, set theory, combinatorics, graphy theory,
+ number theory, topology, etc.
+ \item HCI---a course in the general area of human computer
+ interaction. This might be a general HCI course or a course in a
+ specific subdiscipline such as user-centred design.
\end{itemize}
More than one course may be selected. If you are submitting an OER for a special topics issue of Engage, please discuss the appropriate course choice with the guest editors of the special issue.
@@ -1121,12 +1127,12 @@ Authors may select all that apply from the following list:
One resource type must be selected. Current list to select from includes:
\begin{itemize}
- \item Assignment -- the most common OER type. Typically represents a task assigned to individual or groups of students that will be completed outside of class time.
- \item Lecture slides -- an annotated set of presentation slides to introduce or explain a topic, typically a cutting-edge research topic, to a more lay audience. An example might be explaining a specific cryptography algorithm, blockchain, or an AI / ML solution to a problem.
- \item Lab -- this represents a task assigned to an individual or group of students to be completed under supervision, usually during a closed-lab model
- \item Project -- an assignment that is of a longer duration, perhaps multiple weeks to an entire term
- \item Tutorial -- a task usually completed by an individual to learn some material on their own
- \item Other -- any other type of OER that does not fit into one of the above categories
+ \item Assignment---the most common OER type. Typically represents a task assigned to individual or groups of students that will be completed outside of class time.
+ \item Lecture slides---an annotated set of presentation slides to introduce or explain a topic, typically a cutting-edge research topic, to a more lay audience. An example might be explaining a specific cryptography algorithm, blockchain, or an AI / ML solution to a problem.
+ \item Lab---this represents a task assigned to an individual or group of students to be completed under supervision, usually during a closed-lab model
+ \item Project---an assignment that is of a longer duration, perhaps multiple weeks to an entire term
+ \item Tutorial---a task usually completed by an individual to learn some material on their own
+ \item Other---any other type of OER that does not fit into one of the above categories
\end{itemize}
\subsection{CS Concepts}
@@ -1136,11 +1142,11 @@ This is selectable from the ontology of topics found at \url{https://www.engage-
Authors will select the most appropriate one from the following list:
\begin{itemize}
- \item Programming Concepts -- anything involving programming
- \item Data Structures -- anything involving data structures
- \item Software Development Methods -- if the OER centers around software development (i.e., requirements gathering, testing, maintenance, code reviews) rather than the actual programming content
- \item Discrete Math -- anything involving discrete math
- \item N/A -- not applicable
+ \item Programming Concepts---anything involving programming
+ \item Data Structures---anything involving data structures
+ \item Software Development Methods---if the OER centers around software development (i.e., requirements gathering, testing, maintenance, code reviews) rather than the actual programming content
+ \item Discrete Math---anything involving discrete math
+ \item N/A---not applicable
\end{itemize}
\subsection{Creative Commons License}
diff --git a/macros/latex/contrib/asternote/README.md b/macros/latex/contrib/asternote/README.md
index 43e5e01623..2e3274c80e 100644
--- a/macros/latex/contrib/asternote/README.md
+++ b/macros/latex/contrib/asternote/README.md
@@ -1,30 +1,29 @@
-# Asternote Package
+# asternote
This package can output annotation symbols enclosed in square brackets and marked with an asterisk.
-## System Requirements
+## Documents
-+ TeX format: LaTeX2e
-+ TeX engine: pTeX, upTeX
-
-Since the unit zw is used, it can be used only in the pTeX series.
-
-
-## Installation
-
-Move asternote.sty file to $TEXMF/tex/latex/asternote.
+Documents for this package are available in English and Japanese.
## License
This package released under [the MIT license](https://ctan.org/license/mit).
+(C) 2022 Yukoh KUSAKABE
+
## Revision History
++ Version 1.1 2022-07-08
+ + Rewrite README.
+ + Add the document (asternote.pdf).
+ + Add the [japanese] option.
+ + Add the [luajapanese] option.
+ Version 1.0 2022-06-28
- + The first public version.
+ + The first public version.
---
diff --git a/macros/latex/contrib/asternote/asternote-en.md b/macros/latex/contrib/asternote/asternote-en.md
deleted file mode 100644
index 43655aa485..0000000000
--- a/macros/latex/contrib/asternote/asternote-en.md
+++ /dev/null
@@ -1,74 +0,0 @@
-# Asternote Package
-
-This package can output annotation symbols enclosed in square brackets and marked with an asterisk.
-
-
-## System Requirements
-
-+ TeX format: LaTeX2e
-+ TeX engine: pTeX, upTeX
-
-Since the unit zw is used, it can be used only in the pTeX series.
-
-
-## Installation
-
-Move asternote.sty file to $TEXMF/tex/latex/asternote.
-
-
-## Usage
-
-### \setasternotenoindent \setasternoteindent
-
-Determines whether or not the annotation symbol is indented at the beginning of a paragraph. The default is \setasternotenoindent. Whether parentheses are considered half-width or full-width is different between text and superscript.
-
-
-### \setasternotetext \setasternotesuperscript
-
-Decide whether the annotation symbols are written in the same size as the body text or in superscript. The default is \setasternotesuperscript.
-
-
-### \setasterreftext \setasterrefsuperscript
-
-Decide whether the annotation reference are written in the same size as the body text or in superscript. The default is \setasterreftext.
-
-
-### \setasternumbertext \asternumbersetsuperscript
-
-Determines whether the manual annotation symbols are written in the same size as the body text or in superscript. The default is \setasternumbertext.
-
-
-### \asternotereset
-
-Reset the annotation symbol number to 1.
-
-
-### \asternote{<LABEL>} \asternotetext{<LABEL>} \asternotesuperscript{<LABEL>}
-
-Put an annotation symbol. You can manually choose to write the annotation in the same size as the body text or in superscript.
-
-
-### \asterref{<LABEL>} \asterreftext{<LABEL>} \asterrefsuperscript{<LABEL>}
-
-Put an annotation reference. You can manually choose to write the annotation in the same size as the body text or in superscript.
-
-
-### \asternumber{<LABEL>} \asternumbertext{<LABEL>} \asternumbersuperscript{<LABEL>}
-
-Put a manual annotation symbol. You can manually choose to write the annotation in the same size as the body text or in superscript.
-
-
-## License
-
-This package released under [the MIT license](https://ctan.org/license/mit).
-
-
-## Revision History
-
-+ Version 1.0 2022-06-28
- + The first public version.
-
-
----
-
-Yukoh KUSAKABE (screen-name) at [metaphysica.info](https://www.metaphysica.info/) \ No newline at end of file
diff --git a/macros/latex/contrib/asternote/asternote-ja.md b/macros/latex/contrib/asternote/asternote-ja.md
deleted file mode 100644
index 0154cf238f..0000000000
--- a/macros/latex/contrib/asternote/asternote-ja.md
+++ /dev/null
@@ -1,74 +0,0 @@
-# Asternote パッケージ
-
-このパッケージは,角括弧囲い・アスタリスク付きの注釈記号を出力することができます。
-
-
-## 前提条件
-
-+ TeX format: LaTeX2e
-+ TeX engine: pTeX, upTeX
-
-単位 zw を用いていますので,pTeX 系列でのみ使用できます。
-
-
-## インストール
-
-asternote.sty を $TEXMF/tex/latex/asternote (TeXが見つけられる場所)に置いてください。
-
-
-## 使用方法
-
-### \setasternotenoindent \setasternoteindent
-
-注釈記号に対して,段落初めの字下げをする否かを決めます。既定は \setasternotenoindent です。text と superscript で括弧を半角とみなすか全角とみなすかが異なります。
-
-
-### \setasternotetext \setasternotesuperscript
-
-注釈記号に対して,本文と同じ大きさで書かれるか上付き文字で書かれるかを決めます。既定は \setasternotesuperscript です。
-
-
-### \setasterreftext \setasterrefsuperscript
-
-注釈参照に対して,本文と同じ大きさで書かれるか上付き文字で書かれるかを決めます。既定は \setasterreftext です。
-
-
-### \setasternumbertext \asternumbersetsuperscript
-
-手動の注釈記号に対して,本文と同じ大きさで書かれるか上付き文字で書かれるかを決めます。既定は \setasternumbertext です。
-
-
-### \asternotereset
-
-注釈記号の番号を 1 に戻します。
-
-
-### \asternote{<LABEL>} \asternotetext{<LABEL>} \asternotesuperscript{<LABEL>}
-
-注釈記号を置きます。本文と同じ大きさで書くこと,上付き文字で書くことを手動で指定することができます。
-
-
-### \asterref{<LABEL>} \asterreftext{<LABEL>} \asterrefsuperscript{<LABEL>}
-
-注釈参照を置きます。本文と同じ大きさで書くこと,上付き文字で書くことを手動で指定することができます。
-
-
-### \asternumber{<LABEL>} \asternumbertext{<LABEL>} \asternumbersuperscript{<LABEL>}
-
-手動の注釈記号を置きます。本文と同じ大きさで書くこと,上付き文字で書くことを手動で指定することができます。
-
-
-## ライセンス
-
-このパッケージは[MITライセンス](https://ctan.org/license/mit)のもとで配布しています。
-
-
-## 更新履歴
-
-+ Version 1.0 2022-06-28
- + The first public version.
-
-
----
-
-Yukoh KUSAKABE (screen-name) at [metaphysica.info](https://www.metaphysica.info/) \ No newline at end of file
diff --git a/macros/latex/contrib/asternote/asternote.pdf b/macros/latex/contrib/asternote/asternote.pdf
new file mode 100644
index 0000000000..0984d34585
--- /dev/null
+++ b/macros/latex/contrib/asternote/asternote.pdf
Binary files differ
diff --git a/macros/latex/contrib/asternote/asternote.sty b/macros/latex/contrib/asternote/asternote.sty
index bd6639f7ed..ee5b005184 100644
--- a/macros/latex/contrib/asternote/asternote.sty
+++ b/macros/latex/contrib/asternote/asternote.sty
@@ -9,8 +9,26 @@
%% [the MIT license](https://ctan.org/license/mit).
%%
%
-\NeedsTeXFormat{pLaTeX2e}
-\ProvidesPackage{asternote}[2022/06/28 v1.0]
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{asternote}[2022/07/08 v1.1]
+%
+%% \if@asternote@japanese
+\newif\if@asternote@japanese
+\@asternote@japanesefalse
+%
+%% [japanese]
+\DeclareOption{japanese}{\@asternote@japanesetrue}
+%
+%% \if@asternote@luajapanese
+\newif\if@asternote@luajapanese
+\@asternote@luajapanesefalse
+%
+%% [luajapanese]
+\DeclareOption{luajapanese}{\@asternote@luajapanesetrue}
+%
+%
+\ExecuteOptions{}
+\ProcessOptions\relax
%
%% \@astnt@noindent@switch
\newif\if@astnt@noindent@switch
@@ -57,8 +75,26 @@
%
%% \asternotetext{<LABEL>}
%% \asternotesuperscript{<LABEL>}
+%%% NO OPTIONS
+\DeclareRobustCommand{\asternotetext}[1]{\refstepcounter{asternotecounter}\textsf{[*\theasternotecounter ]}\expandafter\label{#1}}
+%%% [japanese]
+\if@asternote@japanese
+\DeclareRobustCommand{\asternotetext}[1]{\refstepcounter{asternotecounter}\textsf{[*\theasternotecounter ]}\expandafter\label{#1}}
+\fi
+%%% [luajapanese]
+\if@asternote@luajapanese
\DeclareRobustCommand{\asternotetext}[1]{\refstepcounter{asternotecounter}\textsf{[*\theasternotecounter ]}\expandafter\label{#1}}
+\fi
+%%% NO OPTIONS
+\DeclareRobustCommand{\asternotesuperscript}[1]{\refstepcounter{asternotecounter}\makebox{\@textsuperscript{\scriptsize\textsf{[*\theasternotecounter ]}}\expandafter\label{#1}}}
+%%% [japanese]
+\if@asternote@japanese
\DeclareRobustCommand{\asternotesuperscript}[1]{\refstepcounter{asternotecounter}\makebox[2zw]{\@textsuperscript{\scriptsize\!\!\textsf{[*\theasternotecounter ]}}\expandafter\label{#1}}}
+\fi
+%%% [luajapanese]
+\if@asternote@luajapanese
+\DeclareRobustCommand{\asternotesuperscript}[1]{\refstepcounter{asternotecounter}\makebox[2\zw]{\@textsuperscript{\scriptsize\!\!\textsf{[*\theasternotecounter ]}}\expandafter\label{#1}}}
+\fi
%
%% \asternote{<LABEL>}
\DeclareRobustCommand{\asternote}[1]{%
@@ -85,8 +121,19 @@
%
%% \asterreftext{<LABEL>}
%% \asterrefsuperscript{<LABEL>}
+%%% NO OPTIONS
+\DeclareRobustCommand{\asterreftext}[1]{{\textsf{[*\ref{#1}]}}}
+\DeclareRobustCommand{\asterrefsuperscript}[1]{\@textsuperscript{\scriptsize\textsf{[*\ref{#1}]}}}
+%%% [japanese]
+\if@asternote@japanese
\DeclareRobustCommand{\asterreftext}[1]{{\textsf{[*\ref{#1}]}}}
\DeclareRobustCommand{\asterrefsuperscript}[1]{\@textsuperscript{\scriptsize\!\!\textsf{[*\ref{#1}]}}}
+\fi
+%%% [luajapanese]
+\if@asternote@luajapanese
+\DeclareRobustCommand{\asterreftext}[1]{{\textsf{[*\ref{#1}]}}}
+\DeclareRobustCommand{\asterrefsuperscript}[1]{\@textsuperscript{\scriptsize\!\!\textsf{[*\ref{#1}]}}}
+\fi
%
%% \asterref{<LABEL>}
\DeclareRobustCommand{\asterref}[1]{%
@@ -114,8 +161,19 @@
%% \asternumbertext{<LABEL>}
%% \asternumbersuperscript{<LABEL>}
%
+%%% NO OPTIONS
+\DeclareRobustCommand{\asternumbertext}[1]{{\textsf{[*{#1}]}}}
+\DeclareRobustCommand{\asternumbersuperscript}[1]{\@textsuperscript{\scriptsize\textsf{[*{#1}]}}}
+%%% [japanese]
+\if@asternote@japanese
\DeclareRobustCommand{\asternumbertext}[1]{{\textsf{[*{#1}]}}}
\DeclareRobustCommand{\asternumbersuperscript}[1]{\@textsuperscript{\scriptsize\!\!\textsf{[*{#1}]}}}
+\fi
+%%% [luajapanese]
+\if@asternote@luajapanese
+\DeclareRobustCommand{\asternumbertext}[1]{{\textsf{[*{#1}]}}}
+\DeclareRobustCommand{\asternumbersuperscript}[1]{\@textsuperscript{\scriptsize\!\!\textsf{[*{#1}]}}}
+\fi
%
%% \asternumber{<LABEL>}
\DeclareRobustCommand{\asternumber}[1]{%
diff --git a/macros/latex/contrib/asternote/asternote.tex b/macros/latex/contrib/asternote/asternote.tex
new file mode 100644
index 0000000000..ea889f452b
--- /dev/null
+++ b/macros/latex/contrib/asternote/asternote.tex
@@ -0,0 +1,427 @@
+\documentclass[%
+fleqn,%
+paper=a4paper,%
+fontsize=10pt,%
+open_bracket_pos=zenkakunibu_nibu,%
+hanging_punctuation,%
+]%
+{jlreq}
+\jlreqsetup{%
+itemization_beforeafter_space=0pt,%
+itemization_itemsep=0pt%
+}
+\makeatletter
+\RequirePackage{luatexja}
+\RequirePackage{luatexja-otf}
+\RequirePackage{graphicx}
+\RequirePackage{amsmath}
+\DeclareRobustCommand{\metaphysicaicon}{\raisebox{-4.0pt}{\includegraphics[width=16pt]{metaphysicaicon.pdf}}}
+\RequirePackage[normalem]{ulem}
+\RequirePackage[explicit]{titlesec}
+\titleformat{\section}[hang]{}{}{0pt}{\uuline{\raisebox{1pt}{\textsf{\thesection\quad #1}}}}[\vspace{0.35\baselineskip}]
+\renewcommand{\thesection}{\S\,\arabic{section}}
+\let\originalsection\section
+\DeclareRobustCommand{\section}{\@ifstar{\@metaphysica@section@star}{\@metaphysica@section@nostar}}
+\DeclareRobustCommand{\@metaphysica@section@star}[1]{\vspace{0.5\baselineskip}\originalsection{#1}\vspace*{-\baselineskip}}
+\DeclareRobustCommand{\@metaphysica@section@nostar}[1]{\vspace{0.5\baselineskip}\originalsection{#1}}
+\RequirePackage[%
+truedimen,%
+margin=30truemm,
+includehead%
+]{geometry}
+\RequirePackage{lastpage}
+\RequirePackage{fancyhdr}
+\pagestyle{fancy}
+\DeclareRobustCommand{\headertitle}[2][\metaphysicaicon]{%
+\rhead[#2]{#1{}\quad\thepage{}/{}\pageref{LastPage}}%
+\lhead[\thepage{}/{}\pageref{LastPage}\quad{}#1]{#2}%
+\cfoot{}%
+}
+\RequirePackage{setspace}
+\setstretch{1.155}
+\DeclareRobustCommand{\linespace}{\@ifstar{\vspace{\baselineskip}}{\vspace{0.25\baselineskip}}}
+\DeclareRobustCommand{\linesmash}{\@ifstar{\vspace{-\baselineskip}}{\vspace{-0.25\baselineskip}}}
+\AtBeginDocument{%
+\abovedisplayskip =0.125\abovedisplayskip
+\abovedisplayshortskip=0.125\abovedisplayshortskip
+\belowdisplayskip =0.125\belowdisplayskip
+\belowdisplayshortskip=0.125\belowdisplayshortskip}
+\setlength{\jot}{0pt}%
+\setlength{\mathindent}{2\zw}%
+\renewcommand{\floatpagefraction}{0.75}
+\allowdisplaybreaks[2]
+\RequirePackage[no-math]{fontspec}
+\RequirePackage[no-math,deluxe,haranoaji]{luatexja-preset}
+\RequirePackage{multicolpar}
+\RequirePackage[style=iso]{datetime2}
+\RequirePackage[unicode]{hyperref}
+\RequirePackage{xparse}
+\RequirePackage{dashbox}
+\newcounter{psuedosectioncounter}
+\setcounter{psuedosectioncounter}{1}
+\newcounter{psuedocontentscounter}
+\setcounter{psuedocontentscounter}{1}
+\DeclareRobustCommand{\psuedosection}[3]{%
+\hypertarget{#1}{\mbox{}}\begin{multicolpar}{2}%
+\noindent\uuline{{\raisebox{1pt}{\textsf{\S\ \thepsuedosectioncounter\quad #2}}}}
+
+\noindent\uuline{{\raisebox{1pt}{\textsf{\S\ \thepsuedosectioncounter\quad #3}}}}
+\end{multicolpar}%
+\stepcounter{psuedosectioncounter}%
+\vspace{\baselineskip}%
+}
+\DeclareRobustCommand{\psuedocontents}[3]{%
+\begin{multicolpar}{2}%
+\noindent{\textsf{\hyperlink{#1}{\S\ \thepsuedocontentscounter\quad #2}}}
+
+\noindent{\textsf{\hyperlink{#1}{\S\ \thepsuedocontentscounter\quad #3}}}\end{multicolpar}%
+\stepcounter{psuedocontentscounter}%
+}
+\newenvironment{translateing}%
+{\begin{multicolpar}{2}}
+{\end{multicolpar}\vspace{\baselineskip}}
+\DeclareRobustCommand{\maketitletranslating}%
+{\maketitle\thispagestyle{fancy}
+\vspace{\baselineskip}\begin{multicolpar}{2}
+\textsf{English}
+
+\noindent
+\textsf{日本語 (Japanese)}
+\end{multicolpar}\vspace{\baselineskip}}
+\NewDocumentCommand\macroexplanation{v}{%
+\centering{\texttt{#1}}\linespace%
+}
+\NewDocumentEnvironment{macroexample}{O{0.625} +b}{%
+\dbox{\parbox{#1\textwidth}{%
+#2%
+}}}%
+{\vspace{\baselineskip}}
+\NewDocumentEnvironment{macroexample*}{O{0.625} m +b}{%
+\dbox{\parbox{#1\textwidth}{%
+\vspace{-0.5\baselineskip}\begin{#2}%
+#3
+\end{#2}%
+}}}
+{\vspace{\baselineskip}}
+\let\code\texttt
+\setlength{\fboxsep}{1em}
+\setstretch{1.05}
+\DeclareRobustCommand{\commandtojskip}{\hspace{2.40554pt plus 1.49994pt minus 0.59998pt}}
+\RequirePackage{listings, jlisting}
+\lstset{
+ language=[LaTeX]TeX,
+ basicstyle={\ttfamily},
+ identifierstyle={\small},
+ commentstyle={\small\itshape},
+ keywordstyle={\small\bfseries},
+ ndkeywordstyle={\small},
+ stringstyle={\small\ttfamily},
+ frame=single,
+ breaklines=true,
+ columns=[l]{fullflexible},
+ stepnumber=1,
+ xrightmargin=0.1709\textwidth,
+ xleftmargin=0.1709\textwidth,
+ lineskip=-0.5ex
+}
+\RequirePackage{bxtexlogo}
+\RequirePackage{shortvrb}
+\MakeShortVerb{\|}
+\RequirePackage[luajapanese]{asternote}
+\makeatother
+%
+\hypersetup{%
+bookmarksnumbered=true,%
+colorlinks=true,%
+linkcolor=blue,%
+urlcolor=blue,%
+setpagesize=false,%
+pdftitle={The asternote package},%
+pdfauthor={Yukoh KUSAKABE},%
+pdfsubject={The asternote package},%
+pdfkeywords={TeX LaTeX footnote endnote annotation}}
+\title{The \code{asternote} package:\\[0.25\baselineskip]
+annotation symbols enclosed\\[0.25\baselineskip]in square brackets and marked with an asterisk}
+\author{Yukoh KUSAKABE}
+\date{\today}
+\headertitle[Yukoh KUSAKABE\quad\metaphysicaicon]{The \code{asternote} package}
+\makeatletter
+\DeclareRobustCommand{\asterreftext}[1]{{\textsf{[*\ref*{#1}]}}}
+\DeclareRobustCommand{\asterrefsuperscript}[1]{\@textsuperscript{\scriptsize\!\!\textsf{[*\ref*{#1}]}}}
+\makeatother
+\begin{document}
+\maketitletranslating
+
+\begin{translateing}
+This package can output annotation symbols enclosed in square brackets and marked with an asterisk.
+
+このパッケージは,角括弧囲い・アスタリスク付きの注釈記号を出力することができます。
+\end{translateing}
+
+\psuedocontents{Requirements}{System Requirements}{前提条件}
+
+\psuedocontents{Installation}{Installation}{インストール}
+
+\psuedocontents{Loading}{Loading}{読み込み}
+
+\psuedocontents{Usage}{Usage}{使用方法}
+
+\psuedocontents{moreinfo}{For More Information}{問い合わせ・詳しくは}
+
+\psuedosection{Requirements}{System Requirements}{前提条件}
+
+\begin{translateing}
+\textbullet\ \LaTeXe\ format\\
+\textbullet\ \pTeX/\upTeX\ engine (\code{[japanese]} only)\\
+\textbullet\ \LuaTeX\ engine (\code{[luajapanese]} only)\\
+\textbullet\ \code{luatexja} package (\code{[luajapanese]} only)
+
+\noindent
+\textbullet\ \LaTeXe フォーマット\\
+\textbullet\ \scalebox{0.95}[1]{\pTeX/\upTeX エンジン(\code{[japanese]}使用時)}\\
+\textbullet\ \LuaTeX エンジン(\code{[luajapanese]}使用時)\\
+\textbullet\ \scalebox{0.9}[1]{\code{luatexja} パッケージ(\code{[luajapanese]}使用時)}
+
+Since the unit |zw| is used when the \code{[japanese]} loaded, it can be used only in the \pTeX/\upTeX\ series.
+Since the unit |\zw| is used when the \code{[luajapanese]} loaded, it can be used only in the \LuaTeX\ series and \LuaTeX-ja.
+
+\code{[japanese]}を読み込むと単位|zw|を用いますので,\pTeX/\upTeX 系列でのみ使用できます。
+\code{[luajapanese]}を読み込むと単位\commandtojskip|\zw|を用いますので,\LuaTeX 系列でのみ使用できます。
+\end{translateing}
+
+\newpage
+\psuedosection{Installation}{Installation}{インストール}
+
+\begin{translateing}
+If not available, move asternote.sty file to\\\code{\$TEXMF/tex/latex/asternote}.
+
+直ちに使えなければ,asternote.sty を\\\code{\$TEXMF/tex/latex/asternote}\\%(\TeX が見つけられる場所)
+に置いてください。
+\end{translateing}
+
+\psuedosection{Loading}{Loading}{読み込み}
+
+\begin{translateing}
+To use this package, load .sty file with |\usepackage{asternote}| command in preamble.
+
+このパッケージを使用するには,プリアンブルに\commandtojskip|\usepackage{asternote}| と書いてください。
+%\end{translateing}
+
+%\begin{translateing}
+There are two options:\\
+\textbullet\ |[japanese]| changes square brackets to full-width and makes superscript annotation symbols two full characters wide on \pLaTeX, which is an engine for Japanese.\\
+\textbullet\ |[luajapanese]| changes square brackets to full-width and makes superscript annotation symbols two full characters wide on \LuaLaTeX\ (and Japanese environment required).
+
+2つのオプションがあります。\\
+\textbullet\ |[japanese]|は角括弧を全角幅に変え,さらに上付きの注釈記号を全角2文字の幅にします(\pLaTeX 用)。\\
+\textbullet\ |[luajapanese]|は角括弧を全角幅に変え,さらに上付きの注釈記号を全角2文字の幅にします(\LuaLaTeX 用)。
+\end{translateing}
+
+\psuedosection{Usage}{Usage}{使用方法}
+
+\macroexplanation{\setasternotenoindent}
+\quad
+\macroexplanation{\setasternoteindent}
+
+\begin{translateing}
+Determines whether or not the annotation symbol is indented at the beginning of a paragraph (to use as itemization). The default is |\setasternotenoindent|.
+Whether parentheses are considered half-width or full-width is different between text and superscript when the \code{[japanese]} or \code{[luajapanese]} options loaded.
+
+注釈記号に対して,段落初めの字下げをする否かを決めます(箇条書き風に使う場合など)。
+既定は\commandtojskip|\setasternotenoindent|です。
+\code{[japanese]}または\code{[luajapanese]}オプションを読み込んでいるときは,textとsuperscriptで括弧を半角とみなすか全角とみなすかが異なります。
+\end{translateing}
+
+\newpage
+\macroexplanation{\setasternotetext}
+\quad
+\macroexplanation{\setasternotesuperscript}
+
+\begin{translateing}
+Decide whether the annotation symbols are written in the same size as the body text or in superscript.
+The default is |\setasternotesuperscript|.
+
+注釈記号に対して,本文と同じ大きさで書かれるか上付き文字で書かれるかを決めます。
+既定は\commandtojskip|\setasternotesuperscript|です。
+\end{translateing}
+
+\macroexplanation{\setasterreftext}
+\quad
+\macroexplanation{\setasterrefsuperscript}
+
+\begin{translateing}
+Decide whether the annotation reference are written in the same size as the body text or in superscript.
+The default is |\setasterreftext|.
+
+注釈参照に対して,本文と同じ大きさで書かれるか上付き文字で書かれるかを決めます。
+既定は\commandtojskip|\setasterreftext|です。
+\end{translateing}
+
+\macroexplanation{\setasternumbertext}
+\quad
+\macroexplanation{\setasternumbersuperscript}
+
+\begin{translateing}
+Determines whether the manual annotation symbols are written in the same size as the body text or in superscript.
+The default is |\setasternumbertext|.
+
+手動の注釈記号に対して,本文と同じ大きさで書かれるか上付き文字で書かれるかを決めます。
+既定は\commandtojskip|\setasternumbertext|です。
+\end{translateing}
+
+\macroexplanation{\asternotereset}
+
+\begin{translateing}
+Reset the annotation symbol number to 1.
+
+注釈記号の番号を1に戻します。
+\end{translateing}
+
+\macroexplanation{\asternote{<label>}}
+\quad
+\macroexplanation{\asternotetext{<label>}}
+\quad
+\macroexplanation{\asternotesuperscript{<label>}}
+
+\begin{translateing}
+Put an annotation symbol.
+You can manually choose to write the annotation in the same size as the body text or in superscript.
+
+注釈記号を置きます。
+本文と同じ大きさで書くこと,上付き文字で書くことを手動で指定することができます。
+\end{translateing}
+
+\begin{lstlisting}
+A \asternote{A},
+B \asternotetext{B} and
+C \asternotesuperscript{C}.
+\end{lstlisting}
+
+No options loaded:\\
+\makeatletter
+\begin{macroexample}
+A \@textsuperscript{\scriptsize\textsf{[*{1}]}},
+B {\textsf{[*{2}]}} and
+C \@textsuperscript{\scriptsize\textsf{[*{3}]}}.
+\end{macroexample}
+\makeatother
+
+\linesmash
+\code{[japanese]} or \code{[luajapanese]} options loaded:\\
+\begin{macroexample}
+あ\asternote{A},
+い\asternotetext{B}そして
+う\asternotesuperscript{C}。
+\end{macroexample}
+
+\newpage
+\macroexplanation{\asterref{<label>}}
+\quad
+\macroexplanation{\asterreftext{<label>}}
+\quad
+\macroexplanation{\asterrefsuperscript{<label>}}
+
+\begin{translateing}
+Put an annotation reference.
+You can manually choose to write the annotation in the same size as the body text or in superscript.
+
+注釈参照を置きます。
+本文と同じ大きさで書くこと,上付き文字で書くことを手動で指定することができます。
+\end{translateing}
+
+\begin{lstlisting}
+\asterref{A} A is a capital of a.\\
+\asterref{B} B is a capital of b.\\
+\asterref{C} C is a capital of c.
+\end{lstlisting}
+
+No options loaded:\\
+\makeatletter
+\begin{macroexample}
+{\textsf{[*{1}]}} A is a capital of a.\\
+{\textsf{[*{2}]}} B is a capital of b.\\
+\@textsuperscript{\scriptsize\textsf{[*{3}]}} C is a capital of c.
+\end{macroexample}
+\makeatother
+
+\linesmash
+\code{[japanese]} or \code{[luajapanese]} options loaded:\\
+\begin{macroexample}
+\asterref{A} あはアのひらがなです。\\
+\asterreftext{B} いはイのひらがなです。\\
+\asterrefsuperscript{C} うはウのひらがなです。
+\end{macroexample}
+
+\linespace
+\macroexplanation{\asternumber{<label>}}
+\
+\macroexplanation{\asternumbertext{<label>}}
+\
+\macroexplanation{\asternumbersuperscript{<label>}}
+
+\begin{translateing}
+Put a manual annotation symbol.
+You can manually choose to write the annotation in the same size as the body text or in superscript.
+
+手動の注釈記号を置きます。
+本文と同じ大きさで書くこと,上付き文字で書くことを手動で指定することができます。
+\end{translateing}
+
+\begin{lstlisting}
+A \asternumber{1},
+B \asternumbertext{2} and
+C \asternumbersuperscript{9}.
+\end{lstlisting}
+
+No options loaded:\\
+\makeatletter
+\begin{macroexample}
+A {\textsf{[*{1}]}},
+B {\textsf{[*{2}]}} and
+C \@textsuperscript{\scriptsize\textsf{[*{9}]}}.
+\end{macroexample}
+\makeatother
+
+\linesmash
+\code{[japanese]} or \code{[luajapanese]} options loaded:\\
+\begin{macroexample}
+あ\asternumber{1},
+い\asternumbertext{2}そして
+う\asternumbersuperscript{9}。
+\end{macroexample}
+
+\begin{translateing}
+Using the commands up to this point, you can create side notes that are automatically numbered.
+For example:
+
+ここまでの命令を使って,自動で番号を振る傍注を作ることができます。たとえば,次のようにします。
+\end{translateing}
+
+At the preamble:
+\begin{lstlisting}
+\newcommand{\annotation}[2]
+{\asternote{#1}\marginpar{\footnotesize\asterref{#1}#2}}
+\end{lstlisting}
+
+In the body of the text:
+\begin{lstlisting}
+A \annotation{A}{A is a capital of a.},
+B \annotation{B}{B is a capital of b.} and
+C \annotation{C}{C is a capital of c.}.
+\end{lstlisting}
+
+\begin{translateing}
+The same idea can be used to create similar commands for footnotes and endnotes.
+
+これと同じ発想で,脚注や後注でも同様の命令を作ることができます。
+\end{translateing}
+
+\psuedosection{moreinfo}{For More Information}{問い合わせ・詳しくは}
+
+\centering\begin{tabular}{rl}
+The asternote package:&\url{https://www.metaphysica.info/technote/package_asternote/}\\
+Yukoh KUSAKABE:&\url{https://www.metaphysica.info/}\\
+&\url{https://twitter.com/metaphysicainfo/}\\
+&(screen-name, 日下部幽考 in Japanese)
+\end{tabular}
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/asternote/asternote_example.tex b/macros/latex/contrib/asternote/asternote_example.tex
deleted file mode 100644
index 1510541ff2..0000000000
--- a/macros/latex/contrib/asternote/asternote_example.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[uplatex]{article}
-\usepackage{asternote}
-\begin{document}
-%\setasternoteindent
-
-\asternote{a}a
-
-\asternote{b}b
-
-\asternotereset
-
-\asternote{c}c
-
-\asterref{a}A
-
-\asterref{b}B
-
-\asterref{c}C
-\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/hideanswer/README.md b/macros/latex/contrib/hideanswer/README.md
index 4fff4489ae..b9d505a127 100644
--- a/macros/latex/contrib/hideanswer/README.md
+++ b/macros/latex/contrib/hideanswer/README.md
@@ -1,28 +1,27 @@
-# Hideanswer Package
+# hideanswer
This package can generate documents with and without answers from a single file by toggling a switch. However, it can only be used to create documents to be printed on paper.
-## System Requirements
+## Documents
-+ TeX format: LaTeX
-+ Prerequisite package: color and graphicx
-
-
-## Installation
-
-Move hideanswer.sty file to $TEXMF/tex/latex/hideanswer.
+Documents for this package are available in English and Japanese.
## License
This package released under [the MIT license](https://ctan.org/license/mit).
+(C) 2022 Yukoh KUSAKABE
+
## Revision History
++ Version 1.1 2022-07-09
+ + Rewrite README.
+ + Add the document (hideanswer.pdf).
+ Version 1.0 2022-06-28
- + The first public version.
+ + The first public version.
---
diff --git a/macros/latex/contrib/hideanswer/hideanswer-en.md b/macros/latex/contrib/hideanswer/hideanswer-en.md
deleted file mode 100644
index 0f165a079c..0000000000
--- a/macros/latex/contrib/hideanswer/hideanswer-en.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# Hideanswer Package 1.0
-
-This package can generate documents with and without answers from a single file by toggling a switch. However, it can only be used to create documents to be printed on paper.
-
-
-## System Requirements
-
-+ TeX format: LaTeX
-+ Prerequisite package: color and graphicx
-
-
-## Installation
-
-Move hideanswer.sty file to $TEXMF/tex/latex/hideanswer.
-
-
-## Usage
-
-### \sethideanswer
-
-After this command, the answer is hidden. Usually, this instruction is used to switch the generation of question and answer sheets, depending on whether or not this instruction is written at the beginning of the document.
-
-
-### \unsethideanswer
-
-After this command, the answer appears.
-
-
-### \hideanswer{<text>}
-
-<text> is hidden. In \hideanswer*{<text>}, the hidden and visible parts are reversed.
-
-
-### environment hideanswerdiv
-
-The written part inside the environment is hidden. It may be used to hide long answers. In hideanswerdiv*, the hidden and visible parts are reversed.
-
-
-### \smashanswer{<text>}
-
-<text> is hidden and the next sentence is placed as if it were not there. In \smashanswer*{<text>}, the hidden and visible parts are reversed.
-
-
-### environment smashanswerdiv
-
-The written part inside the environment is hidden and the next sentence is placed as if it were not there. It may be used to hide long answers. In smashanswerdiv*, the hidden and visible parts are reversed.
-
-
-### \hidegraphics[<includegraphics option>]{<file>}
-
-The graphic is hidden. The options are the same as for \includegraphics since \includegraphics is loaded internally. In \hidegraphics*[<includegraphics option>]{<file>}, the hidden and visible parts are reversed.
-
-
-### \smashraphics[<includegraphics option>]{<file>}
-
-The graphic is hidden and the next sentence is placed as if it were not there. The options are the same as for \includegraphics since \includegraphics is loaded internally. In \hidegraphics*[<includegraphics option>]{<file>}, the hidden and visible parts are reversed.
-
-
-### \switchanswer{<text when sethide>}{<text when unsethide>}
-
-Switching between hidden and visible sentences. Since \switchanswer does not remember the length of the sentence, the position of the next sentence moves. In \switchanswer*{<text when unsethide>}{<text when sethide>}, the hidden and visible parts are reversed.
-
-
-## License
-
-This package released under [the MIT license](https://ctan.org/license/mit).
-
-
-## Revision History
-
-+ Version 1.0 2022-06-28
- + The first public version.
-
-
----
-
-Yukoh KUSAKABE (screen-name) at [metaphysica.info](https://www.metaphysica.info/) \ No newline at end of file
diff --git a/macros/latex/contrib/hideanswer/hideanswer-ja.md b/macros/latex/contrib/hideanswer/hideanswer-ja.md
deleted file mode 100644
index 3de48be8ca..0000000000
--- a/macros/latex/contrib/hideanswer/hideanswer-ja.md
+++ /dev/null
@@ -1,79 +0,0 @@
-# Hideanswer パッケージ
-
-このパッケージは,スイッチ切り替えによって単一のファイルから答えが書かれている文書と答えが書かれていない文書を生成することができます。ただし,紙に印刷する文書を作成するときにしか使えません。
-
-
-## 前提条件
-
-+ TeX format: LaTeX
-+ Prerequisite package: color and graphicx
-
-
-## インストール
-
-hideanswer.sty を $TEXMF/tex/latex/hideanswer (TeXが見つけられる場所)に置いてください。
-
-
-## 使用方法
-
-### \sethideanswer
-
-この命令以降では答えが隠されます。ふつう,文書の最初にこの命令を書くか否かで問題用紙と解答用紙の生成を切り替えるために使います。
-
-
-### \unsethideanswer
-
-この命令以降では答えが現れます。
-
-
-### \hideanswer{<text>}
-
-<text> と書かれた部分が隠されます。\hideanswer*{<text>} では,隠されるときと現れるときが逆になります。
-
-
-### hideanswerdiv 環境
-
-環境の内側に書かれた部分が隠されます。長い答えを隠すために用いるとよいでしょう。
-hideanswerdiv* では,隠されるときと現れるときが逆になります。
-
-
-### \smashanswer{<text>}
-
-<text> と書かれた部分が隠され,それがないかのように次の文が置かれます。\smashanswer*{<text>} では,隠されるときと現れるときが逆になります。
-
-
-### smashanswerdiv 環境
-
-環境の内側に書かれた部分が隠され,それがないかのように次の文が置かれます。長い答えを隠すために用いるとよいでしょう。
-smashanswerdiv* では,隠されるときと現れるときが逆になります。
-
-
-### \hidegraphics[<includegraphics option>]{<file>}
-
-読み込んだ画像が隠されます。\includegraphics を内部で読み込みますので,オプションは \includegraphics のものと同様です。\hidegraphics*[<includegraphics option>]{<file>} では,隠されるときと現れるときが逆になります。
-
-
-### \smashraphics[<includegraphics option>]{<file>}
-
-読み込んだ画像が隠され,それがないかのように次の文が置かれます。\includegraphics を内部で読み込みますので,オプションは \includegraphics のものと同様です。\smashraphics*[<includegraphics option>]{<file>} では,隠されるときと現れるときが逆になります。
-
-
-### \switchanswer{<text when sethide>}{<text when unsethide>}
-
-隠されているときと現れているときで文章を切り替えます。\switchanswer は文章の長さを覚えませんから,次の文の位置が動きます。\switchanswer*{<text when unsethide>}{<text when sethide>} では,隠されるときと現れるときが逆になります。
-
-
-## ライセンス
-
-このパッケージは[MITライセンス](https://ctan.org/license/mit)のもとで配布しています。
-
-
-## 更新履歴
-
-+ Version 1.0 2022-06-28
- + The first public version.
-
-
----
-
-Yukoh KUSAKABE (screen-name) at [metaphysica.info](https://www.metaphysica.info/) \ No newline at end of file
diff --git a/macros/latex/contrib/hideanswer/hideanswer.pdf b/macros/latex/contrib/hideanswer/hideanswer.pdf
new file mode 100644
index 0000000000..b81f143fb0
--- /dev/null
+++ b/macros/latex/contrib/hideanswer/hideanswer.pdf
Binary files differ
diff --git a/macros/latex/contrib/hideanswer/hideanswer.sty b/macros/latex/contrib/hideanswer/hideanswer.sty
index 25a6264b50..ea1bc70983 100644
--- a/macros/latex/contrib/hideanswer/hideanswer.sty
+++ b/macros/latex/contrib/hideanswer/hideanswer.sty
@@ -10,11 +10,14 @@
%%
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{hideanswer}[2022/06/28 v1.0]
+\ProvidesPackage{hideanswer}[2022/07/09 v1.1]
%
%% for \color
\RequirePackage{color}
%
+%% for \includegraphics
+\RequirePackage{graphicx}
+%
% for \NewDocumentEnvironment
\RequirePackage{xparse}
%
diff --git a/macros/latex/contrib/hideanswer/hideanswer.tex b/macros/latex/contrib/hideanswer/hideanswer.tex
new file mode 100644
index 0000000000..ed8d847a81
--- /dev/null
+++ b/macros/latex/contrib/hideanswer/hideanswer.tex
@@ -0,0 +1,446 @@
+\documentclass[%
+fleqn,%
+paper=a4paper,%
+fontsize=10pt,%
+open_bracket_pos=zenkakunibu_nibu,%
+hanging_punctuation,%
+]%
+{jlreq}
+\jlreqsetup{%
+itemization_beforeafter_space=0pt,%
+itemization_itemsep=0pt%
+}
+\makeatletter
+\RequirePackage{luatexja}
+\RequirePackage{luatexja-otf}
+\RequirePackage{graphicx}
+\RequirePackage{amsmath}
+\DeclareRobustCommand{\metaphysicaicon}{\raisebox{-4.0pt}{\includegraphics[width=16pt]{metaphysicaicon.pdf}}}
+\RequirePackage[normalem]{ulem}
+\RequirePackage[explicit]{titlesec}
+\titleformat{\section}[hang]{}{}{0pt}{\uuline{\raisebox{1pt}{\textsf{\thesection\quad #1}}}}[\vspace{0.35\baselineskip}]
+\renewcommand{\thesection}{\S\,\arabic{section}}
+\let\originalsection\section
+\DeclareRobustCommand{\section}{\@ifstar{\@metaphysica@section@star}{\@metaphysica@section@nostar}}
+\DeclareRobustCommand{\@metaphysica@section@star}[1]{\vspace{0.5\baselineskip}\originalsection{#1}\vspace*{-\baselineskip}}
+\DeclareRobustCommand{\@metaphysica@section@nostar}[1]{\vspace{0.5\baselineskip}\originalsection{#1}}
+\RequirePackage[%
+truedimen,%
+margin=30truemm,
+includehead%
+]{geometry}
+\RequirePackage{lastpage}
+\RequirePackage{fancyhdr}
+\pagestyle{fancy}
+\DeclareRobustCommand{\headertitle}[2][\metaphysicaicon]{%
+\rhead[#2]{#1{}\quad\thepage{}/{}\pageref{LastPage}}%
+\lhead[\thepage{}/{}\pageref{LastPage}\quad{}#1]{#2}%
+\cfoot{}%
+}
+\RequirePackage{setspace}
+\setstretch{1.155}
+\DeclareRobustCommand{\linespace}{\@ifstar{\vspace{\baselineskip}}{\vspace{0.25\baselineskip}}}
+\DeclareRobustCommand{\linesmash}{\@ifstar{\vspace{-\baselineskip}}{\vspace{-0.25\baselineskip}}}
+\AtBeginDocument{%
+\abovedisplayskip =0.125\abovedisplayskip
+\abovedisplayshortskip=0.125\abovedisplayshortskip
+\belowdisplayskip =0.125\belowdisplayskip
+\belowdisplayshortskip=0.125\belowdisplayshortskip}
+\setlength{\jot}{0pt}%
+\setlength{\mathindent}{2\zw}%
+\renewcommand{\floatpagefraction}{0.75}
+\allowdisplaybreaks[2]
+\RequirePackage[no-math]{fontspec}
+\RequirePackage[no-math,deluxe,haranoaji]{luatexja-preset}
+\RequirePackage{multicolpar}
+\RequirePackage[style=iso]{datetime2}
+\RequirePackage[unicode]{hyperref}
+\RequirePackage{xparse}
+\RequirePackage{dashbox}
+\newcounter{psuedosectioncounter}
+\setcounter{psuedosectioncounter}{1}
+\newcounter{psuedocontentscounter}
+\setcounter{psuedocontentscounter}{1}
+\DeclareRobustCommand{\psuedosection}[3]{%
+\hypertarget{#1}{\mbox{}}\begin{multicolpar}{2}%
+\noindent\uuline{{\raisebox{1pt}{\textsf{\S\ \thepsuedosectioncounter\quad #2}}}}
+
+\noindent\uuline{{\raisebox{1pt}{\textsf{\S\ \thepsuedosectioncounter\quad #3}}}}
+\end{multicolpar}%
+\stepcounter{psuedosectioncounter}%
+\vspace{\baselineskip}%
+}
+\DeclareRobustCommand{\psuedocontents}[3]{%
+\begin{multicolpar}{2}%
+\noindent{\textsf{\hyperlink{#1}{\S\ \thepsuedocontentscounter\quad #2}}}
+
+\noindent{\textsf{\hyperlink{#1}{\S\ \thepsuedocontentscounter\quad #3}}}\end{multicolpar}%
+\stepcounter{psuedocontentscounter}%
+}
+\newenvironment{translateing}%
+{\begin{multicolpar}{2}}
+{\end{multicolpar}\vspace{\baselineskip}}
+\DeclareRobustCommand{\maketitletranslating}%
+{\maketitle\thispagestyle{fancy}
+\vspace{\baselineskip}\begin{multicolpar}{2}
+\textsf{English}
+
+\noindent
+\textsf{日本語 (Japanese)}
+\end{multicolpar}\vspace{\baselineskip}}
+\NewDocumentCommand\macroexplanation{v}{%
+\noindent\hspace*{\fill}{\texttt{#1}}\hspace*{\fill}\linespace%
+}
+\NewDocumentEnvironment{macroexample}{O{0.625} +b}{%
+\noindent\hspace*{\fill}\dbox{\parbox{#1\textwidth}{%
+#2%
+}}\hspace*{\fill}}%
+{\vspace{\baselineskip}}
+\NewDocumentEnvironment{macroexample*}{O{0.625} m +b}{%
+\noindent\hspace*{\fill}\dbox{\parbox{#1\textwidth}{%
+\vspace{-0.5\baselineskip}\begin{#2}%
+#3
+\end{#2}%
+}}\hspace*{\fill}}
+{\vspace{\baselineskip}}
+\let\code\texttt
+\setlength{\fboxsep}{1em}
+\setstretch{1.05}
+\DeclareRobustCommand{\commandtojskip}{\hspace{2.40554pt plus 1.49994pt minus 0.59998pt}}
+\RequirePackage{listings, jlisting}
+\lstset{
+ language=[LaTeX]TeX,
+ basicstyle={\ttfamily},
+ identifierstyle={\small},
+ commentstyle={\small\itshape},
+ keywordstyle={\small\bfseries},
+ ndkeywordstyle={\small},
+ stringstyle={\small\ttfamily},
+ frame=single,
+ breaklines=true,
+ columns=[l]{fullflexible},
+ stepnumber=1,
+ xrightmargin=0.1709\textwidth,
+ xleftmargin=0.1709\textwidth,
+ lineskip=-0.5ex
+}
+\RequirePackage{bxtexlogo}
+\RequirePackage{shortvrb}
+\MakeShortVerb{\|}
+\RequirePackage{hideanswer}
+\makeatother
+\hypersetup{%
+bookmarksnumbered=true,%
+colorlinks=true,%
+linkcolor=blue,%
+urlcolor=blue,%
+setpagesize=false,%
+pdftitle={The hideanswer package},%
+pdfauthor={Yukoh KUSAKABE},%
+pdfsubject={The hideanswer package},%
+pdfkeywords={TeX LaTeX answer exam}}
+\title{The \code{hideanswer} package:\\[0.25\baselineskip]
+generate documents with and without answers\\[0.25\baselineskip]
+by toggling a switch}
+\author{Yukoh KUSAKABE}
+\date{\today}
+\headertitle[Yukoh KUSAKABE\quad\metaphysicaicon]{The \code{hideanswer} package}
+\begin{document}
+\maketitletranslating
+
+\begin{translateing}
+This package can generate documents with and without answers from a single file by toggling a switch.
+However, it can only be used to create documents to be printed on paper.
+
+このパッケージは,スイッチ切り替えによって単一のファイルから答えが書かれている文書と答えが書かれていない文書を生成することができます。ただし,紙に印刷する文書を作成するときにしか使えません。
+\end{translateing}
+
+\psuedocontents{Requirements}{System Requirements}{前提条件}
+
+\psuedocontents{Installation}{Installation}{インストール}
+
+\psuedocontents{Loading}{Loading}{読み込み}
+
+\psuedocontents{Usage}{Usage}{使用方法}
+
+\psuedocontents{moreinfo}{For More Information}{問い合わせ・詳しくは}
+
+\psuedosection{Requirements}{System Requirements}{前提条件}
+
+\begin{translateing}
+\textbullet\ \LaTeXe\ format\\
+\textbullet\ \code{color} package\\
+\textbullet\ \code{graphicx} package\\
+\textbullet\ \code{xparse} package
+
+\noindent
+\textbullet\ \LaTeXe フォーマット\\
+\textbullet\ \code{color} パッケージ\\
+\textbullet\ \code{graphicx} パッケージ\\
+\textbullet\ \code{xparse} パッケージ
+\end{translateing}
+
+\newpage
+\psuedosection{Installation}{Installation}{インストール}
+
+\begin{translateing}
+If not available, move hideanswer.sty file to\\\code{\$TEXMF/tex/latex/hideanswer}.
+
+直ちに使えなければ,hideanswer.sty を\\\code{\$TEXMF/tex/latex/hideanswer}\\%(\TeX が見つけられる場所)
+に置いてください。
+\end{translateing}
+
+\psuedosection{Loading}{Loading}{読み込み}
+
+\begin{translateing}
+To use this package, load .sty file with |\usepackage{hideanswer}| command in preamble.
+
+このパッケージを使用するには,プリアンブルに\commandtojskip|\usepackage{hideanswer}| と書いてください。
+
+No package option is available.
+
+オプションはありません。
+\end{translateing}
+
+\psuedosection{Usage}{Usage}{使用方法}
+
+\begin{translateing}
+\textsf{PRECAUTIONS:}\\
+In this package, hiding text is accomplished by changing the color to white.
+Therefore, the hidden content will be known to the recipient in the PDF file.
+This package was developed for printing on paper.
+
+\noindent\textsf{使用前の注意:}\\
+このパッケージにおいて,文字を非表示にすることは色を白に変えることによって実現しています。
+したがって,PDFファイルでは隠した内容が相手に伝わってしまいます。
+このパッケージは紙に印刷して使うために開発されました。
+\end{translateing}
+
+\macroexplanation{\sethideanswer}
+
+\begin{translateing}
+After this command, the answer is hidden.
+Usually, this instruction is used to switch the generation of question and answer sheets, depending on whether or not this instruction is written at the beginning of the document.
+
+この命令以降では答えが隠されます。ふつう,文書の最初にこの命令を書くか否かで問題用紙と解答用紙の生成を切り替えるために使います。
+\end{translateing}
+
+\macroexplanation{\unsethideanswer}
+
+\begin{translateing}
+After this command, the answer appears.
+
+この命令以降では答えが現れます。
+\end{translateing}
+
+\newpage
+\macroexplanation{\hideanswer{<text>}}
+
+\begin{translateing}
+|<text>| is hidden. In |\hideanswer*{<text>}|, the hidden and visible parts are reversed.
+
+|<text>|\commandtojskip と書かれた部分が隠されます。
+|\hideanswer*{<text>}|\commandtojskip では,隠されるときと現れるときが逆になります。
+\end{translateing}
+
+\begin{lstlisting}
+A\hideanswer{B}A, C\hideanswer*{D}C.
+\end{lstlisting}
+
+\hspace*{0.14\textwidth}Under |\unsethideanswer| (or default):\\
+\unsethideanswer
+\begin{macroexample}
+A\hideanswer{B}A, C\hideanswer*{D}C.
+\end{macroexample}
+
+\hspace*{0.14\textwidth}Under |\sethideanswer|:\\
+\sethideanswer
+\begin{macroexample}
+A\hideanswer{B}A, C\hideanswer*{D}C.
+\end{macroexample}
+
+\newpage
+\macroexplanation{environment hideanswerdiv}
+
+\begin{translateing}
+The written part inside the environment is hidden. It may be used to hide long answers. In |hideanswerdiv*|, the hidden and visible parts are reversed.
+
+環境の内側に書かれた部分が隠されます。長い答えを隠すために用いるとよいでしょう。
+|hideanswerdiv*|\commandtojskip では,隠されるときと現れるときが逆になります。
+\end{translateing}
+
+\begin{lstlisting}
+E
+\begin{hideanswerdiv}
+\[F\]
+\end{hideanswerdiv}%
+E
+
+G
+\begin{hideanswerdiv*}
+\[H\]
+\end{hideanswerdiv*}%
+G
+\end{lstlisting}
+
+\hspace*{0.14\textwidth}Under |\unsethideanswer| (or default):\\
+\unsethideanswer
+\begin{macroexample}
+E
+\begin{hideanswerdiv}
+\[F\]
+\end{hideanswerdiv}%
+E
+
+G
+\begin{hideanswerdiv*}
+\[H\]
+\end{hideanswerdiv*}%
+G
+\end{macroexample}
+
+\hspace*{0.14\textwidth}Under |\sethideanswer|:\\
+\sethideanswer
+\begin{macroexample}
+E
+\begin{hideanswerdiv}
+\[F\]
+\end{hideanswerdiv}%
+E
+
+G
+\begin{hideanswerdiv*}
+\[H\]
+\end{hideanswerdiv*}%
+G
+\end{macroexample}
+
+\newpage
+\macroexplanation{\smashanswer{<text>}}
+
+\begin{translateing}
+|<text>| is hidden and the next sentence is placed as if it were not there. In |\smashanswer*{<text>}|, the hidden and visible parts are reversed.
+
+|<text>|\commandtojskip と書かれた部分が隠され,それがないかのように次の文が置かれます。
+|\smashanswer*{<text>}|\commandtojskip では,隠されるときと現れるときが逆になります。
+\end{translateing}
+
+\begin{lstlisting}
+I\smashanswer{J}I, K\smashanswer*{L}K.
+\end{lstlisting}
+
+\hspace*{0.14\textwidth}Under |\unsethideanswer| (or default):\\
+\unsethideanswer
+\begin{macroexample}
+I\smashanswer{J}I, K\smashanswer*{L}K.
+\end{macroexample}
+
+\hspace*{0.14\textwidth}Under |\sethideanswer|:\\
+\sethideanswer
+\begin{macroexample}
+I\smashanswer{J}I, K\smashanswer*{L}K.
+\end{macroexample}
+
+\newpage
+\macroexplanation{environment smashanswerdiv}
+
+\begin{translateing}
+The written part inside the environment is hidden and the next sentence is placed as if it were not there.
+It may be used to hide long answers.
+In |smashanswerdiv*|, the hidden and visible parts are reversed.
+
+環境の内側に書かれた部分が隠され,それがないかのように次の文が置かれます。
+長い答えを隠すために用いるとよいでしょう。
+|smashanswerdiv*|\commandtojskip では,隠されるときと現れるときが逆になります。
+\end{translateing}
+
+\begin{lstlisting}
+M%
+\begin{smashanswerdiv}
+\[N\]
+\end{smashanswerdiv}%
+M
+
+O%
+\begin{smashanswerdiv*}
+\[P\]
+\end{smashanswerdiv*}%
+O
+\end{lstlisting}
+
+\hspace*{0.14\textwidth}Under |\unsethideanswer| (or default):\\
+\unsethideanswer
+\begin{macroexample}
+M%
+\begin{smashanswerdiv}
+\[N\]
+\end{smashanswerdiv}%
+M
+
+O%
+\begin{smashanswerdiv*}
+\[P\]
+\end{smashanswerdiv*}%
+O
+\end{macroexample}
+
+\hspace*{0.14\textwidth}Under |\sethideanswer|:\\
+\sethideanswer
+\begin{macroexample}
+M%
+\begin{smashanswerdiv}
+\[N\]
+\end{smashanswerdiv}%
+M
+
+O%
+\begin{smashanswerdiv*}
+\[P\]
+\end{smashanswerdiv*}%
+O
+\end{macroexample}
+
+\newpage
+\macroexplanation{\hidegraphics[<includegraphics option>]{<file>}}
+
+\begin{translateing}
+The graphic is hidden.
+The options are the same as for |\includegraphics| since |\includegraphics| is loaded internally.
+In |\hidegraphics*|, the hidden and visible parts are reversed.
+
+読み込んだ画像が隠されます。
+|\includegraphics|を内部で読み込みますので,オプションは\commandtojskip|\includegraphics|のものと同様です。
+|\hidegraphics*|\commandtojskip では,隠されるときと現れるときが逆になります。
+\end{translateing}
+
+\macroexplanation{\smashraphics[<includegraphics option>]{<file>}}
+
+\begin{translateing}
+The graphic is hidden and the next sentence is placed as if it were not there.
+The options are the same as for |\includegraphics| since |\includegraphics| is loaded internally.
+In |\hidegraphics*|, the hidden and visible parts are reversed.
+
+読み込んだ画像が隠され,それがないかのように次の文が置かれます。
+|\includegraphics|を内部で読み込みますので,オプションは\commandtojskip|\includegraphics|のものと同様です。
+|\smashraphics*|\commandtojskip では,隠されるときと現れるときが逆になります。
+\end{translateing}
+
+\macroexplanation{\switchanswer{<text under sethide>}{<text under unsethide>}}\\
+\macroexplanation{\switchanswer*{<text under unsethide>}{<text under sethide>}}
+
+\begin{translateing}
+Switching between hidden and visible sentences. Since |\switchanswer(*)| does not remember the length of the sentence, the position of the next sentence moves.
+
+隠されているときと現れているときで文章を切り替えます。
+|\switchanswer(*)|\commandtojskip は文章の長さを覚えませんから,次の文の位置が動きます。
+\end{translateing}
+
+\psuedosection{moreinfo}{For More Information}{問い合わせ・詳しくは}
+
+\noindent\hspace*{\fill}\begin{tabular}{rl}
+The hideanswer package:&\url{https://www.metaphysica.info/technote/package_hideanswer/}\\
+Yukoh KUSAKABE:&\url{https://www.metaphysica.info/}\\
+&\url{https://twitter.com/metaphysicainfo}\\
+&(screen-name, 日下部幽考 in Japanese)
+\end{tabular}\hspace*{\fill}
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/hideanswer/hideanswer_example.tex b/macros/latex/contrib/hideanswer/hideanswer_example.tex
deleted file mode 100644
index 5e35031c56..0000000000
--- a/macros/latex/contrib/hideanswer/hideanswer_example.tex
+++ /dev/null
@@ -1,38 +0,0 @@
-\documentclass[uplatex]{article}
-\usepackage{hideanswer}
-\begin{document}
-\sethideanswer
-\unsethideanswer
-
-A\hideanswer{B}A
-
-C\hideanswer*{D}C
-
-E%
-\begin{hideanswerdiv}
-$$F$$
-\end{hideanswerdiv}%
-E
-
-G%
-\begin{hideanswerdiv*}
-$$H$$
-\end{hideanswerdiv*}%
-G
-
-I\smashanswer{J}I
-
-K\smashanswer*{L}K
-
-M%
-\begin{smashanswerdiv}
-$$N$$
-\end{smashanswerdiv}%
-M
-
-O%
-\begin{smashanswerdiv*}
-$$P$$
-\end{smashanswerdiv*}%
-O
-\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md b/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
index 5ab0105eb4..14c0c77bde 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
+++ b/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
@@ -5,6 +5,16 @@ first release 0.95a, 2021-02-23 will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
this project uses date-based 'snapshot' version identifiers.
+## [2022-07-08]
+### Fixed
+ - link detection if french is active (issue #28)
+ - loop with \url if french is active
+ - remove pdfaid-rev is standard is less than A-4 (issue #33)
+ - quotes in messages are more consistent (PR #37)
+
+### Changed
+ - removed protection code for utf8 as they are now protected anyway (fixed #28 and loop)
+
## [2022-06-14]
### Fixed
- avoid errors with spot color models
diff --git a/macros/latex/contrib/pdfmanagement-testphase/README.md b/macros/latex/contrib/pdfmanagement-testphase/README.md
index 02fbfb8bfb..2eae8e6757 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/README.md
+++ b/macros/latex/contrib/pdfmanagement-testphase/README.md
@@ -1,6 +1,6 @@
# LaTeX PDF management testphase bundle
-Version: 0.95p, 2022-06-14
+Version: 0.95q, 2022-07-08
This package is used during a test phase to load the new PDF management code
of LaTeX.
diff --git a/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
index 6953affb0f..6873467166 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
@@ -24,7 +24,7 @@
%% This file has the LPPL maintenance status "maintained".
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{color-ltx}[2022-06-14 v0.95p
+\ProvidesPackage{color-ltx}[2022-07-08 v0.95q
Standard LaTeX Color (patched for l3color, part of pdfmanagement-testphase, original version 2022/01/06 v1.3d) (DPC)]
\edef\Gin@codes{%
\catcode`\noexpand\^^A\the\catcode`\^^A\relax
diff --git a/macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty
index 3e5c7f6d55..733b017008 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/colorspace-patches-tmp-ltx.sty
@@ -19,7 +19,7 @@
%
% for those people who are interested.
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesExplPackage{colorspace-patches-tmp-ltx}{2022-06-14}{0.95p}
+\ProvidesExplPackage{colorspace-patches-tmp-ltx}{2022-07-08}{0.95q}
{temporay patches to for the colorspace package to test pdfresource management ... UF}
\hook_gput_code:nnn {begindocument} {pdf}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/fontspec-luatex-tmp-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/fontspec-luatex-tmp-ltx.sty
index 913552ee05..366b860f22 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/fontspec-luatex-tmp-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/fontspec-luatex-tmp-ltx.sty
@@ -40,7 +40,7 @@
\RequirePackage{xparse}
\ProvidesExplPackage{fontspec-luatex-tmp-ltx}%
- {2022/01/15}{2022-06-14}{0.95p}
+ {2022/01/15}{2022-07-08}{0.95q}
%%^^A%% fontspec-code-load.dtx -- part of FONTSPEC <wspr.io/fontspec>
%%^^A%% fontspec-code-vars.dtx -- part of FONTSPEC <wspr.io/fontspec>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
index 9987eb268f..c0075f181a 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
@@ -83,7 +83,7 @@
% }^^A
% }
%
-% \date{Version 0.95p, released 2022-06-14}
+% \date{Version 0.95q, released 2022-07-08}
%
% \maketitle
% \begin{documentation}
@@ -959,7 +959,7 @@
%<@@=hyp>
% \end{macrocode}
% \begin{macrocode}
-\ProvidesFile{hgeneric-testphase.def}[2022-06-14 v0.95p %
+\ProvidesFile{hgeneric-testphase.def}[2022-07-08 v0.95q %
generic Hyperref driver for the LaTeX PDF management testphase bundle]
\RequirePackage{etoolbox} %why?
@@ -1057,7 +1057,7 @@
{ empty-destination-name }
{
Empty~destination~name,\\
- using~`#1'
+ using~'#1'
}
% \end{macrocode}
% A message if the destination check fails
@@ -1066,8 +1066,8 @@
{ hyp }
{ invalid-destination-value }
{
- Invalid~value~`#1'~of~`#2' \\
- is~replaced~by~`Fit'~\msg_line_context:.
+ Invalid~value~'#1'~of~'#2' \\
+ is~replaced~by~'Fit'~\msg_line_context:.
}
% \end{macrocode}
% Some options or values should not be used in older pdf versions
@@ -1076,22 +1076,22 @@
{ hyp }
{ ignore-deprecated-or-unknown-option-in-pdf-version }
{
- Option~`#1'~is~unknown~or~deprecated~in\\
+ Option~'#1'~is~unknown~or~deprecated~in\\
pdf~version~#2.~Ignored.
}
\msg_new:nnn
{ hyp }
{ ignore-deprecated-or-unknown-value-in-pdf-version }
{
- Value~`#1'~is~unknown~or~deprecated~in\\
+ Value~'#1'~is~unknown~or~deprecated~in\\
pdf~version~#2.~Ignored.
}
\msg_new:nnn
{ hyp }
{ replace-deprecated-or-unknown-value-in-pdf-version }
{
- Value~`#1'~is~unknown~or~deprecated~in\\
- pdf~version~#2. Value~`#3'~is used instead.
+ Value~'#1'~is~unknown~or~deprecated~in\\
+ pdf~version~#2. Value~'#3'~is used instead.
}
% \end{macrocode}
% During development not all standard hyperref keys are known and the
@@ -1102,7 +1102,7 @@
{ hyp }
{ unknown-key }
{
- unknown~key~#2~of~module~’#1’~set~to~’#3’.
+ unknown~key~#2~of~module~'#1'~set~to~'#3'.
}
\msg_new:nnn
{ hyp }
@@ -1143,7 +1143,7 @@
*~true\\
*~false \\
*~and~an~empty~value~which~removes~the~setting.\\
- No~value~is~equivalent~to~using~`true`.
+ No~value~is~equivalent~to~using~'true'.
}
% \end{macrocode}
% A message for creator and producer which can't be removed.
@@ -1319,7 +1319,6 @@
\hook_use:n{cmd/href/before}
\group_begin:
\keys_set:nn { hyp / href } {#1}
- \let\protect\@unexpandable@protect
\bool_if:NTF \l_@@_href_url_encode_bool
{
\tl_set:Nn \l_@@_text_enc_uri_print_tl {utf8/URI}
@@ -1349,7 +1348,6 @@
\hook_use:n{cmd/href/before}
\group_begin:
\keys_set:nn { hyp / href } {#1}
- \let\protect\@unexpandable@protect
\bool_if:NTF \l_@@_href_url_encode_bool
{
\tl_set:Nn \l_@@_text_enc_uri_print_tl {utf8/URI}
@@ -1373,7 +1371,6 @@
\hook_use:n{cmd/hrefpdf/before}
\group_begin:
\keys_set:nn { hyp / href } {#1}
- \let\protect\@unexpandable@protect
\hyper@normalise\@@_href_pdf_aux:nn
}
@@ -1391,7 +1388,6 @@
\hook_use:n{cmd/hrefrun/before}
\group_begin:
\keys_set:nn { hyp / href } {#1}
- \let\protect\@unexpandable@protect
\hyper@normalise\@@_href_run_aux:nn
}
@@ -1411,7 +1407,6 @@
\hook_use:n{cmd/url/before}
\group_begin:
\keys_set:nn {hyp / href } {#1}
- \let\protect \@unexpandable@protect
\bool_if:NTF \l_@@_href_url_encode_bool
{
\tl_set:Nn \l_@@_text_enc_uri_print_tl {utf8/URI}
@@ -1579,7 +1574,7 @@
\protect\G@refundefinedtrue
\@latex@warning
{
- Reference~`\tl_to_str:n {#1}'~with~attribute~`\tl_to_str:n {#2}'~
+ Reference~'\tl_to_str:n {#1}'~with~attribute~'\tl_to_str:n {#2}'~
on~page~\thepage~\space undefined
}
}
@@ -4119,7 +4114,7 @@
% |\hypersetup{pdfpagetransition={style=Fly,duration=2,direction=90,opaque=false}}|
%
% The keys allowed in the argument of |pdfpagetransition| are
-%
+%
% \begin{tabular}{l>{\raggedright\arraybackslash}p{6cm}}
% style & one of Split, Blinds, Box, Wipe, Dissolve, Glitter, R, Fly, Push, Cover, Uncover, Fade\\
% duration & a number, describes the duration of the transition\\
@@ -5402,7 +5397,7 @@
\expandafter\def\csname Parent3\endcsname{}
\expandafter\def\csname Parent4\endcsname{}
%%
-%% End of file `hgeneric-testphase.def'.
+%% End of file 'hgeneric-testphase.def'.
%</package>
% \end{macrocode}
% \begin{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
index 3328ad54ec..5555737530 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty
index 88e122785b..623388bcfc 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty
@@ -19,7 +19,7 @@
%
% for those people who are interested.
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesExplPackage{hyperxmp-patches-tmp-ltx}{2022-06-14}{0.95p}
+\ProvidesExplPackage{hyperxmp-patches-tmp-ltx}{2022-07-08}{0.95q}
{Store hyperref metadata in XMP format / temporay patches to test pdfresource management ... UF}
\cs_if_exist:NT \pdfmanagement_add:nnn
@@ -59,7 +59,8 @@
\ifHy@pdfa
\exp_args:Nnx\hyxmp@add@simple{pdfaid:part}{\pdfmeta_standard_item:n{level}}
\exp_args:Nnx\hyxmp@add@simple{pdfaid:conformance}{\pdfmeta_standard_item:n{conformance}}
- \exp_args:Nnx\hyxmp@add@simple{pdfaid:rev}{\pdfmeta_standard_item:n{year}}
+ \int_compare:nNnT{\pdfmeta_standard_item:n{level}}>{3}
+ { \exp_args:Nnx\hyxmp@add@simple{pdfaid:rev}{\pdfmeta_standard_item:n{year}} }
\fi
}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
index f781fa8906..88fd3a3fd5 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
@@ -45,7 +45,7 @@
% }^^A
% }
%
-% \date{Version 0.95p, released 2022-06-14}
+% \date{Version 0.95q, released 2022-07-08}
%
% \maketitle
%
@@ -56,27 +56,27 @@
% \begin{macrocode}
%<drivers>\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-testphase-dvipdfmx.def}{2022-06-14}{}
+ {l3backend-testphase-dvipdfmx.def}{2022-07-08}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-testphase-dvips.def}{2022-06-14}{}
+ {l3backend-testphase-dvips.def}{2022-07-08}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-testphase-dvisvgm.def}{2022-06-14}{}
+ {l3backend-testphase-dvisvgm.def}{2022-07-08}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-testphase-luatex.def}{2022-06-14}{}
+ {l3backend-testphase-luatex.def}{2022-07-08}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-testphase-pdftex.def}{2022-06-14}{}
+ {l3backend-testphase-pdftex.def}{2022-07-08}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (pdfTeX)}
%</pdftex>
%<*xdvipdfmx>
- {l3backend-testphase-xetex.def}{2022-06-14}{}
+ {l3backend-testphase-xetex.def}{2022-07-08}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: XeTeX}
%</xdvipdfmx>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
index b8798209eb..2b357b3eda 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
index 5b94eebc75..97c0c5e8d6 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.95p, released 2022-06-14}
+% \date{Version 0.95q, released 2022-07-08}
%
% \maketitle
% \begin{documentation}
@@ -433,7 +433,7 @@
% \begin{macrocode}
%<@@=pdfannot>
%<*header>
-\ProvidesExplPackage{l3pdfannot}{2022-06-14}{0.95p}
+\ProvidesExplPackage{l3pdfannot}{2022-07-08}{0.95q}
{PDF-annotations}
\RequirePackage{l3pdfdict}
%</header>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
index 5f661a49c1..5dbda679a0 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
index 3899d359c2..8d32eeed54 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
@@ -50,7 +50,7 @@
% }^^A
% }
%
-% \date{Version 0.95p, released 2022-06-14}
+% \date{Version 0.95q, released 2022-07-08}
%
% \maketitle
% \begin{documentation}
@@ -209,7 +209,7 @@
% \begin{macrocode}
%<@@=pdfdict>
%<*header>
-\ProvidesExplPackage{l3pdfdict}{2022-06-14}{0.95p}
+\ProvidesExplPackage{l3pdfdict}{2022-07-08}{0.95q}
{Tools for PDF dictionaries (LaTeX PDF management testphase bundle)}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
index 5c2d3af97b..4e5c0bd5c5 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
index 6b364a4371..4fdc0bac2f 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
@@ -50,7 +50,7 @@
% }^^A
% }
%
-% \date{Version 0.95p, released 2022-06-14}
+% \date{Version 0.95q, released 2022-07-08}
%
% \maketitle
% \begin{documentation}
@@ -481,7 +481,7 @@
% \begin{macrocode}
\msg_new:nnn {pdffield}{action-name-undefined}
{
- The~`#1`~action~name~`#2`~is~not~defined~and~
+ The~'#1'~action~name~'#2'~is~not~defined~and~
will~be~ignored.
}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
index 8a542322e4..6b5122c3d5 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
index e7184f7346..5acdcd5681 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
@@ -65,7 +65,7 @@
% }^^A
% }
%
-% \date{Version 0.95p, released 2022-06-14}
+% \date{Version 0.95q, released 2022-07-08}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
index 98be5529a3..20a6ae6185 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
index ed9fad214f..7723bd2326 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
@@ -50,7 +50,7 @@
% }^^A
% }
%
-% \date{Version 0.95p, released 2022-06-14}
+% \date{Version 0.95q, released 2022-07-08}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
index cb2d61803f..26c1f00116 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
index df796d0b25..8c7284694c 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
@@ -56,7 +56,7 @@
% }^^A
% }
%
-% \date{Version 0.95p, released 2022-06-14}
+% \date{Version 0.95q, released 2022-07-08}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
index ffe5b59af8..4795e9a50c 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
index 081b945fa3..bb9ae7b7bb 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
@@ -84,7 +84,7 @@
% }^^A
% }
%
-% \date{Version 0.95p, released 2022-06-14}
+% \date{Version 0.95q, released 2022-07-08}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
index 02c7d1e109..d177ccbf12 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
index f1b358046f..cb7de4a167 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
@@ -50,7 +50,7 @@
% }^^A
% }
%
-% \date{Version 0.95p, released 2022-06-14}
+% \date{Version 0.95q, released 2022-07-08}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
index 310ef3ff02..8a41e69f57 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
index 40a07ce1f8..9a2aa3c091 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
@@ -70,7 +70,7 @@
% }^^A
% }
%
-% \date{Version 0.95p, released 2022-06-14}
+% \date{Version 0.95q, released 2022-07-08}
%
% \maketitle
% \begin{documentation}
@@ -974,7 +974,7 @@
%<*package>
%<@@=pdffield>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{l3pdffield-testphase}{2022-06-14}{0.95p}%
+\ProvidesExplPackage{l3pdffield-testphase}{2022-07-08}{0.95q}%
{form fields}
% \end{macrocode}
% \subsection{hyperref specific command}
@@ -1031,17 +1031,17 @@
% \begin{macrocode}
\msg_new:nnn {pdffield}{no-period}
{
- The~field~name~`#1`~contains~a~period. \\
- This~is~not~allowed. `
+ The~field~name~'#1'~contains~a~period. \\
+ This~is~not~allowed.
}
\msg_new:nnn {pdffield}{empty-name}
{
The~field~name~is~empty. \\
- This~is~not~allowed. `
+ This~is~not~allowed.
}
\msg_new:nnn {pdffield}{appearance-missing}
{
- The~appearance~definition~`#1`~is~missing~for~the~#2~appearance.
+ The~appearance~definition~'#1'~is~missing~for~the~#2~appearance.
}
\msg_new:nnn {pdffield}{not-implemented}
{
@@ -1050,8 +1050,8 @@
}
\msg_new:nnn {pdffield}{key-disabled}
{
- key~`#2`~is~disabled~and~ignored~in~the~`#1`~command.\\
- Use~key~`#3`~instead.
+ key~'#2'~is~disabled~and~ignored~in~the~'#1'~command.\\
+ Use~key~'#3'~instead.
}
\msg_new:nnn {pdffield}{parent-field-missing}
{
@@ -1060,7 +1060,7 @@
}
\msg_new:nnn {pdffield}{key-ignored}
{
- key~`#1`~has~no~function~and~is~ignored
+ key~'#1'~has~no~function~and~is~ignored
}
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
index 2f04de5cd8..e9b37dfed0 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
index 1fd14a3cf8..c24f7b781d 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
@@ -50,7 +50,7 @@
% }^^A
% }
%
-% \date{Version 0.95p, released 2022-06-14}
+% \date{Version 0.95q, released 2022-07-08}
%
% \maketitle
% \begin{documentation}
@@ -397,7 +397,7 @@
%
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage{l3pdffile}{2022-06-14}{0.95p}
+\ProvidesExplPackage{l3pdffile}{2022-07-08}{0.95q}
{embedding and referencing files in PDF---LaTeX PDF management testphase bundle}
\RequirePackage{l3pdftools} %temporarly!!
%</header>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
index 08e82cf10b..83b9c83d09 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
index 57b34a6c1c..f29b7580fa 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
@@ -58,7 +58,7 @@
% }^^A
% }
%
-% \date{Version 0.95p, released 2022-06-14}
+% \date{Version 0.95q, released 2022-07-08}
%
% \maketitle
% \begin{documentation}
@@ -633,7 +633,7 @@
%<@@=pdfmanagement>
%<*header>
%
-\ProvidesExplPackage{l3pdfmanagement}{2022-06-14}{0.95p}
+\ProvidesExplPackage{l3pdfmanagement}{2022-07-08}{0.95q}
{Management of core PDF dictionaries (LaTeX PDF management testphase bundle)}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
index d1db815023..f3df93793e 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
index 45100b8e3d..5cb8101352 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
@@ -50,7 +50,7 @@
% }^^A
% }
%
-% \date{Version 0.95p, released 2022-06-14}
+% \date{Version 0.95q, released 2022-07-08}
%
% \maketitle
% \begin{documentation}
@@ -381,7 +381,7 @@
% \begin{macrocode}
%<@@=pdfmeta>
%<*header>
-\ProvidesExplPackage{l3pdfmeta}{2022-06-14}{0.95p}
+\ProvidesExplPackage{l3pdfmeta}{2022-07-08}{0.95q}
{PDF-Standards---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
index 27e0fcf9a3..a9f7e57966 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
index 3a76a28b3a..09885d9155 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
@@ -50,7 +50,7 @@
% }^^A
% }
%
-% \date{Version 0.95p, released 2022-06-14}
+% \date{Version 0.95q, released 2022-07-08}
%
% \maketitle
% \begin{documentation}
@@ -212,7 +212,7 @@
%
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage{l3pdftools}{2022-06-14}{0.95p}
+\ProvidesExplPackage{l3pdftools}{2022-07-08}{0.95q}
{candidate commands for l3pdf---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
index f3295a834d..dbce88a787 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
index df6817d49d..80aa5201c3 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Version 0.95p, released 2022-06-14}
+% \date{Version 0.95q, released 2022-07-08}
%
% \maketitle
% \begin{documentation}
@@ -133,7 +133,7 @@
% \begin{macrocode}
%<@@=pdf>
%<*header>
-\ProvidesExplPackage{l3pdfxform}{2022-06-14}{0.95p}
+\ProvidesExplPackage{l3pdfxform}{2022-07-08}{0.95q}
{command to create xforms (beta)---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
index 541ad45b7a..652c88ebba 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
index ca59e88344..1c21229b75 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.95p, released 2022-06-14}
+% \date{Version 0.95q, released 2022-07-08}
%
% \maketitle
% \begin{documentation}
@@ -217,7 +217,7 @@
% \begin{macrocode}
%<@@=pdfmanagement>
%<*header>
-\ProvidesExplPackage{ltdocinit}{2022-06-14}{0.95p}
+\ProvidesExplPackage{ltdocinit}{2022-07-08}{0.95q}
{Initialize document metadata}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
index 67c429b1b0..74f366d78f 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf b/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
index 446b1518cf..79ddec156f 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdflscape-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/pdflscape-ltx.sty
index 18520f9633..ff8088006c 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdflscape-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdflscape-ltx.sty
@@ -22,7 +22,7 @@
%% This work consists of the main source file pdflscape-ltx.sty
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{pdflscape-ltx}{2022-06-14}{0.95p}
+\ProvidesExplPackage{pdflscape-ltx}{2022-07-08}{0.95q}
{Display of landscape pages in PDF - adaption of pdflscape to the PDFmanagement bundle (testphase)}
\DeclareOption*{\PassOptionsToPackage\CurrentOption{graphics}}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
index 107c9150ab..0ddec54f3f 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.95p, released 2022-06-14}
+% \date{Version 0.95q, released 2022-07-08}
%
% \maketitle
% \begin{documentation}
@@ -64,7 +64,7 @@
% |debug={firstaidoff={name1,name2,...},...}|.
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{pdfmanagement-firstaid}{2022-06-14}{0.95p}
+\ProvidesExplPackage{pdfmanagement-firstaid}{2022-07-08}{0.95q}
{LaTeX PDF management testphase bundle / firstaid-patches}
%<@@=pdfmanagement>
@@ -100,7 +100,7 @@
{
if~not~luaotfload.set_transparent_colorstack~
then~
- tex.print("\\bool_set_false:N\\g_@@_firstaid_fontspec_bool")~
+ tex.print("\\bool_gset_false:N\\g_@@_firstaid_fontspec_bool")~
end
}
\bool_if:NT \g_@@_firstaid_fontspec_bool
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
index 37d1d1f6f4..bb0d5007de 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
index 64e80a0c5f..c503632465 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.95p, released 2022-06-14}
+% \date{Version 0.95q, released 2022-07-08}
%
% \maketitle
% \begin{documentation}
@@ -386,7 +386,7 @@
% \begin{macrocode}
%<@@=pdf>
%<*package>
-\ProvidesExplPackage{pdfmanagement-testphase}{2022-06-14}{0.95p}
+\ProvidesExplPackage{pdfmanagement-testphase}{2022-07-08}{0.95q}
{LaTeX PDF management testphase bundle}
\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
\IfFormatAtLeastTF{2020-10-01}{}{
@@ -414,7 +414,7 @@
% to allow to set it in the document.
% \begin{macrocode}
%<*header>
-\ProvidesExplFile{pdfmanagement-testphase.ltx}{2022-06-14}{0.95p}
+\ProvidesExplFile{pdfmanagement-testphase.ltx}{2022-07-08}{0.95q}
{PDF~management~code~(testphase)}
%</header>
%<*package>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
index f328826208..5cbb3a5591 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/transparent-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/transparent-ltx.sty
index 1a74613261..8218bd26d7 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/transparent-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/transparent-ltx.sty
@@ -3,7 +3,7 @@
%% a replacement for transparent sty from Heiko Oberdiek
%%
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesExplPackage{transparent-ltx}{2022-06-14}{0.95p}
+\ProvidesExplPackage{transparent-ltx}{2022-07-08}{0.95q}
{Transparency with color stacks (replacement for transparent.sty from Heiko Oberdiek)}%
\RequirePackage{l3opacity}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
index 459f471f5d..ad78d86b81 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
@@ -1,6 +1,6 @@
%% LaTeX2e file `xcolor-patches.sty'
%%
-\ProvidesPackage{xcolor-patches-tmp-ltx}[2022-06-14 v0.95p patch xcolor for l3color]
+\ProvidesPackage{xcolor-patches-tmp-ltx}[2022-07-08 v0.95q patch xcolor for l3color]
\@ifundefined{color_set:nn}{\RequirePackage{l3color}}{}
\ExplSyntaxOn
diff --git a/macros/latex/contrib/postnotes/CHANGELOG.md b/macros/latex/contrib/postnotes/CHANGELOG.md
index 42e0f5f7f7..c3cb3d525a 100644
--- a/macros/latex/contrib/postnotes/CHANGELOG.md
+++ b/macros/latex/contrib/postnotes/CHANGELOG.md
@@ -1,6 +1,11 @@
# Changelog
-## [Unreleased](https://github.com/gusbrs/postnotes/compare/v0.1.4...HEAD)
+## [Unreleased](https://github.com/gusbrs/postnotes/compare/v0.1.5...HEAD)
+
+## [v0.1.5](https://github.com/gusbrs/postnotes/compare/v0.1.4...v0.1.5) (2022-07-07)
+
+### Fixed
+- Recompiled documentation with workaround for upstream `l3doc` bug.
## [v0.1.4](https://github.com/gusbrs/postnotes/compare/v0.1.3...v0.1.4) (2022-07-06)
diff --git a/macros/latex/contrib/postnotes/postnotes-code.pdf b/macros/latex/contrib/postnotes/postnotes-code.pdf
index c364f3c9b7..e2b82b38c8 100644
--- a/macros/latex/contrib/postnotes/postnotes-code.pdf
+++ b/macros/latex/contrib/postnotes/postnotes-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/postnotes/postnotes.dtx b/macros/latex/contrib/postnotes/postnotes.dtx
index 489c40bf5d..f4cbdfe7a2 100644
--- a/macros/latex/contrib/postnotes/postnotes.dtx
+++ b/macros/latex/contrib/postnotes/postnotes.dtx
@@ -147,7 +147,7 @@
%
%
% \begin{macrocode}
-\ProvidesExplPackage {postnotes} {2022-07-06} {0.1.4}
+\ProvidesExplPackage {postnotes} {2022-07-07} {0.1.5}
{Endnotes for LaTeX}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/postnotes/postnotes.pdf b/macros/latex/contrib/postnotes/postnotes.pdf
index 6059ea2438..4d11b82c55 100644
--- a/macros/latex/contrib/postnotes/postnotes.pdf
+++ b/macros/latex/contrib/postnotes/postnotes.pdf
Binary files differ
diff --git a/macros/latex/contrib/postnotes/postnotes.tex b/macros/latex/contrib/postnotes/postnotes.tex
index c47a9d9cdf..e9fa40b215 100644
--- a/macros/latex/contrib/postnotes/postnotes.tex
+++ b/macros/latex/contrib/postnotes/postnotes.tex
@@ -157,6 +157,16 @@
\ExplSyntaxOff
\NewDocumentCommand\opt{m}{\texttt{#1}}
+% Temporary workaround for 'l3doc' bug.
+% https://github.com/latex3/latex3/issues/1111
+% FIXME Remove when fixed upstream.
+\NewDocElement[
+ macrolike = false ,
+ printtype = \textit{opt.} ,
+]{Option}{optiondesc}
+\NewDocElement[
+ macrolike = true ,
+]{UserMacro}{usermacro}
\begin{document}
@@ -321,7 +331,7 @@ receives options and values in \texttt{key=value} fashion.
\bigskip{}
\DescribeOption{heading} %
-\DescribeOption{\cs{pnheading}} %
+\DescribeUserMacro{\pnheading} %
The \opt{heading} option sets the heading for the printed notes or, more
generally put, that which is printed at the beginning of \cs{printpostnotes}.
Its default value depends on the document class in use. If \cs{chapter} is
@@ -364,7 +374,7 @@ different than the defaults.
\DescribeOption{makemark} %
\DescribeOption{maketextmark} %
-\DescribeOption{\cs{pnthepage}} %
+\DescribeUserMacro{\pnthepage} %
The \opt{makemark} and \opt{maketextmark} options control how the mark is to
be typeset, at the point \cs{postnote} is called and at the point the note's
text is printed at \cs{printpostnotes}, respectively. They both can receive
@@ -520,10 +530,10 @@ case, but be able to override it manually for an occasional unnumbered one.
For this reason, a more semantic name was chosen for it, instead of the
generic ``add to''.
-\DescribeOption{\cs{pnthechapter}} %
-\DescribeOption{\cs{pnthesection}} %
-\DescribeOption{\cs{pnthechapternextnote}} %
-\DescribeOption{\cs{pnthesectionnextnote}} %
+\DescribeUserMacro{\pnthechapter} %
+\DescribeUserMacro{\pnthesection} %
+\DescribeUserMacro{\pnthechapternextnote} %
+\DescribeUserMacro{\pnthesectionnextnote} %
Just like with \cs{postnote}, the contents of \cs{postnotesection} are not
expanded in place, but rather stored with ``no manipulation'' to be typeset
later at \cs{printpostnotes}. For this reason, some contextual information is
@@ -679,14 +689,14 @@ part of the definition:
\ExplSyntaxOff
\end{pnsnippet}
-\DescribeOption{\cs{pnhdpagefirst}} %
-\DescribeOption{\cs{pnhdpagelast}} %
-\DescribeOption{\cs{pnhdchapfirst}} %
-\DescribeOption{\cs{pnhdchaplast}} %
-\DescribeOption{\cs{pnhdsectfirst}} %
-\DescribeOption{\cs{pnhdsectlast}} %
-\DescribeOption{\cs{pnhdnamefirst}} %
-\DescribeOption{\cs{pnhdnamelast}} %
+\DescribeUserMacro{\pnhdpagefirst} %
+\DescribeUserMacro{\pnhdpagelast} %
+\DescribeUserMacro{\pnhdchapfirst} %
+\DescribeUserMacro{\pnhdchaplast} %
+\DescribeUserMacro{\pnhdsectfirst} %
+\DescribeUserMacro{\pnhdsectlast} %
+\DescribeUserMacro{\pnhdnamefirst} %
+\DescribeUserMacro{\pnhdnamelast} %
\cs{pnhdpagefirst} and \cs{pnhdpagelast} store the value of \cs{thepage} for
the first and the last notes (where these notes were originally placed) of the
current page (at the point they are being printed). These variables are
@@ -810,10 +820,10 @@ places, etc.
\section{Localization}
\zlabel{sec:localization}
-\DescribeOption{\cs{pntitle}} %
-\DescribeOption{\cs{pnhdnotes}} %
-\DescribeOption{\cs{pnhdtopage}} %
-\DescribeOption{\cs{pnhdtopages}} %
+\DescribeUserMacro{\pntitle} %
+\DescribeUserMacro{\pnhdnotes} %
+\DescribeUserMacro{\pnhdtopage} %
+\DescribeUserMacro{\pnhdtopages} %
\pkg{postnotes} uses a few localized strings, stored in the variables
\cs{pntitle}, \cs{pnhdnotes}, \cs{pnhdtopage}, and \cs{pnhdtopages}. The
first one is used in the default value of the \opt{heading} option and
diff --git a/macros/latex/contrib/prettytok/DEPENDS.txt b/macros/latex/contrib/prettytok/DEPENDS.txt
index 5e0ae3b076..dd4fa25323 100644
--- a/macros/latex/contrib/prettytok/DEPENDS.txt
+++ b/macros/latex/contrib/prettytok/DEPENDS.txt
@@ -1,2 +1 @@
-expl3
-filecontentsdef
+precattl
diff --git a/macros/latex/contrib/prettytok/README b/macros/latex/contrib/prettytok/README
index cefd81b493..531d9833dd 100644
--- a/macros/latex/contrib/prettytok/README
+++ b/macros/latex/contrib/prettytok/README
@@ -1,4 +1,8 @@
prettytok -- Pretty-print token list
+Pretty-print token lists to HTML file for debugging purposes.
+Open the file in any browser to view the result.
+
+Can be used to replace |\tl_analysis_show:n|.
Released under the LaTeX Project Public License v1.3c or later
See http://www.latex-project.org/lppl.txt
@@ -20,4 +24,4 @@ This work has the LPPL maintenance status `maintained'.
The Current Maintainer of this work is user202729.
-This work consists of the files prettytok.sty.
+This work consists of the files prettytok.sty, prettytok.lua, prettytok_template.html.
diff --git a/macros/latex/contrib/prettytok/prettytok.lua b/macros/latex/contrib/prettytok/prettytok.lua
new file mode 100644
index 0000000000..a0aba07243
--- /dev/null
+++ b/macros/latex/contrib/prettytok/prettytok.lua
@@ -0,0 +1,98 @@
+do
+local function looks_like_token(t)
+ return type(t)=="userdata" or (type(t)=="table" and t.cmdname~=nil and t.tok~=nil)
+end
+
+-- public API :: once the package is loaded, this holds the .tok value of the frozen relax token
+prettyprint_frozenrelaxtok=nil
+
+local function prettyprint_one_arg(tokenlist)
+
+ if looks_like_token(tokenlist) then
+ return prettyprint_one_arg({tokenlist})
+ end
+
+ local s=""
+
+ local function printstring(t)
+ -- this is just for debugging/convenience purpose. If the item is a string instead of a token...
+ t=tostring(t)
+ for _, c in utf8.codes(t) do
+ if c==32 then
+ s=s.."token("..c..',"A"),'
+ else
+ s=s.."token("..c..',"C"),'
+ end
+ end
+ end
+
+ if type(tokenlist)~="table" then
+ -- user give a string (or something similar). Print it as detokenized characters
+ printstring(tokenlist)
+
+ else
+
+ -- normal print of tokenlist
+ for i=1, #tokenlist do
+ local t=tokenlist[i]
+ if not looks_like_token(t) then
+ printstring(t)
+ elseif t.csname==nil then
+ s=s.."token("..t.mode..',"'..(({left_brace=1, right_brace=2, math_shift=3, tab_mark=4, mac_param=6, sup_mark=7, sub_mark=8, spacer="A", letter="B", other_char="C"})[t.cmdname])..'"),'
+ else
+ if t.active then
+ s=s.."token("..utf8.codepoint(t.csname)..',"D"),'
+ elseif t.tok==prettyprint_frozenrelaxtok then
+ s=s.."csfrozenrelax(),"
+ else
+ s=s.."cs("
+ for j=1, #t.csname do
+ s=s..t.csname:byte(j)..","
+ end
+ s=s.."),"
+ end
+ end
+ end
+
+ end
+ return s
+end
+
+local function check_file_opened()
+ -- if it's \relax then get_macro() also returns nil
+ if token.get_macro("pretty_check_already_init:") == nil then
+ error("Output file not initialized!")
+ end
+end
+
+local function get_file_number()
+ check_file_opened()
+ return token.get_mode(token.create("__prettyh_file"))
+end
+
+function prettyprint(...)
+ local prettyfilenumber=get_file_number()
+
+ local s="print_tl("
+ local args={...}
+ for i=1, select("#", ...) do
+ s=s..prettyprint_one_arg(args[i])
+ end
+
+ texio.write(prettyfilenumber, s..")//</script><script>\n")
+end
+
+function prettyprintw()
+ check_file_opened()
+ local extra=token.scan_toks()
+ local s={}
+ while true do
+ local n=token.get_next()
+ s[#s+1]=n
+ if n.csname=="prettystop" then break end
+ end
+
+ prettyprint(extra, s)
+ token.put_next(s)
+end
+end
diff --git a/macros/latex/contrib/prettytok/prettytok.pdf b/macros/latex/contrib/prettytok/prettytok.pdf
index 76ca759f67..5b10ffaf19 100644
--- a/macros/latex/contrib/prettytok/prettytok.pdf
+++ b/macros/latex/contrib/prettytok/prettytok.pdf
Binary files differ
diff --git a/macros/latex/contrib/prettytok/prettytok.sty b/macros/latex/contrib/prettytok/prettytok.sty
index e17eb204c6..3acea38c62 100644
--- a/macros/latex/contrib/prettytok/prettytok.sty
+++ b/macros/latex/contrib/prettytok/prettytok.sty
@@ -11,659 +11,204 @@
% This work has the LPPL maintenance status `maintained'.
%
% The Current Maintainer of this work is user202729.
-\RequirePackage{expl3}
-\ProvidesExplPackage{prettytok}{2022/05/28}{0.0.0}{Pretty-print token list}
-
-
-
-
-
-\@ifpackagelater{expl3}{2022/04/10} % https://github.com/latex3/latex3/blob/main/l3kernel/CHANGELOG.md#2022-04-10
- {
- }
-
- {
-
-\cs_set_protected:Npn \tl_analysis_map_inline:Nn #1
- { \exp_args:No \tl_analysis_map_inline:nn #1 }
-\cs_set_protected:Npn \tl_analysis_map_inline:nn #1
- {
- \__tl_analysis:n {#1}
- \int_gincr:N \g__kernel_prg_map_int
- \exp_args:Nc \__tl_analysis_map:Nn
- { _tl_analysis_map_inline_ \int_use:N \g__kernel_prg_map_int :wNw }
- }
-\cs_set_protected:Npn \__tl_analysis_map:Nn #1#2
- {
- \cs_gset_protected:Npn #1 ##1##2##3 {#2}
- \exp_after:wN \__tl_analysis_map:NwNw \exp_after:wN #1
- \g__tl_analysis_result_tl
- \s__tl { ? \tl_map_break: } \s__tl
- \prg_break_point:Nn \tl_map_break:
- { \int_gdecr:N \g__kernel_prg_map_int }
- }
-\cs_set_protected:Npn \__tl_analysis_map:NwNw #1 #2 \s__tl #3 #4 \s__tl
- {
- \use_none:n #3
- #1 {#2} {#4} {#3}
- \__tl_analysis_map:NwNw #1
- }
-
- }
-
-\cs_generate_variant:Nn \EI_append:n {x}
-\cs_generate_variant:Nn \int_compare:nNnTF {VNnTF}
-\cs_generate_variant:Nn \tl_set:Nn {Nx}
-\cs_generate_variant:Nn \int_compare:nNnT {VNnT}
-\cs_generate_variant:Nn \cs_if_exist_use:NT {cT}
-
-% ======== define handler functions.
-% a few things it can do:
-% • \tl_build_gput_right:Nn to \_EIresult (content being put there must be wrapped in \unexpanded i.e. x-expand to the desired result
-
-\cs_set_protected:Npn \EI_append_raw:n #1 {
- \tl_build_gput_right:Nn \_EIresult {#1}
-}
-
-\cs_set_protected:Npn \EI_append:n #1 {
- \EI_append_raw:n {\exp_not:n {#1}}
-}
-
-
-% handler can call this to collect following tokens in the input stream as argument.
-% #1: the function to pass argument in. (arguments are passed as brace-hack-included)
-% #2: number of arguments
-\cs_set_protected:Npn \EI_collect_arg:Nn #1 #2 {
- \def \_EIcollecting_balanced {#2}
- \def \_EIbalance_level {0}
- \tl_build_gbegin:N \_EIbalanced_content
- \tl_build_gput_right:Nn \_EIbalanced_content {\noexpand #1}
-}
-
-\cs_set_protected:Npn \EIhandler_EIexpand {
- \EI_collect_arg:Nn \EI_append:x {1}
-}
-
-\cs_set_protected:Npn \EIhandler_EIexecute {
- \EI_collect_arg:Nn \use:n {1}
-}
-
-\cs_set_protected:Npn \execinsideprepare:n #1 {
- \tl_build_gbegin:N \_EIresult
- \def \_EIcollecting_balanced {0}
- \tl_analysis_map_inline:nn {#1} {
- % reminder: ##1: token, ##2: char code (int), ##3: cat code (hex digit)
+\ProvidesExplPackage{prettytok}{2022/07/08}{0.0.1}{Pretty-print token list}
+\RequirePackage{precattl}
- \int_compare:VNnTF \_EIcollecting_balanced > 0 {
- % collecting content.
- \tl_build_gput_right:Nn \_EIbalanced_content {##1}
- \str_case:nn {##3} {
- {1} { \tl_set:Nx \_EIbalance_level {\_EIbalance_level+1} }
- {2} { \tl_set:Nx \_EIbalance_level {\_EIbalance_level-1} }
- }
-
- % we check this every time instead of only after egroup tokens...
- % so that if there's exactly one token to be collected it's still correctly passed through
- \int_compare:nNnT {\_EIbalance_level} = {0} {
-
- % done, call handler function and revert to normal mode.
-
- \tl_set:Nx \_EIcollecting_balanced {\int_eval:n{\_EIcollecting_balanced-1}}
- \int_compare:VNnT \_EIcollecting_balanced = 0 {
- \tl_build_gend:N \_EIbalanced_content
- \tl_set:Nx \_EIbalanced_content {\_EIbalanced_content}
- %\pretty:V \_EIbalanced_content
- \_EIbalanced_content % ← the handler function is embedded in here
- %\pretty:n {done}
- }
- }
- } {
- \let \_EIprocessed \c_false_bool
-
- % check for \EIexecute etc. and handle accordingly.
- \int_compare:nNnT {##2} = {-1} {
- \cs_if_exist_use:cT {
- EIhandler_ \expandafter \cs_to_str:N ##1
- } {
- \let \_EIprocessed \c_true_bool
- }
- }
+% ======== check tl_analysis bug.
+\msg_new:nnn {prettytok} {tl-analysis-bug}
+ {
+ Because~of~an~tl-analysis~bug~(see~https://github.com/latex3/latex3/issues/1073),~functions~will~not~be~usable~inside~tl-analysis~functions!~
+ Upgrade~your~LaTeX~version,~or~
+ define~macro~"prettyignoretlanalysisbug"~before~loading~the~package~to~ignore~this~error.
+ }
- % if not, just append to result.
- \bool_if:NF \_EIprocessed {
- \tl_build_gput_right:Nn \_EIresult {##1}
- }
+\ifdefined \prettyignoretlanalysisbug
+ \relax
+\else
+\begingroup
+ \tl_set:Nn \__test {}
+ \tl_analysis_map_inline:nn {ab} {
+ \tl_analysis_map_inline:nn {cd} {
+ \tl_put_right:Nx \__test {#1 ##1 .}
}
}
-
- \tl_build_gend:N \_EIresult
- \tl_set:Nx \_EIresult {\_EIresult}
-}
-
-\cs_set_protected:Npn \execinside:n #1 {
- \execinsideprepare:n {#1}
- \_EIresult
-}
-\let\execinside\execinside:n % normal-catcode alias
-
-\cs_set_protected:Npn \execinside_set:Nn #1 #2 {
- \execinsideprepare:n {#2}
- \let #1 \_EIresult
-}
-\let\execinsideSet\execinside_set:Nn
-
-\cs_set_protected:Npn \execinside_gset:Nn #1 #2 {
- \execinsideprepare:n {#2}
- \global \let #1 \_EIresult
-}
-\let\execinsideGset\execinside_gset:Nn
-
-\cs_generate_variant:Nn \exp_args:NN {Nc}
-\cs_generate_variant:Nn \EI_append:n {x}
-\cs_generate_variant:Nn \exp_args:Nn {No}
-\cs_generate_variant:Nn \EI_append:n {o}
-\cs_generate_variant:Nn \tl_put_right:Nn {Nx}
-\cs_generate_variant:Nn \use:nn {nV}
-\cs_generate_variant:Nn \execinside_set:Nn {NV}
-
-
-\def \_precattlappend_space #1 {
- \begingroup
- \lccode `\ =#1
- \lowercase{
- \def\_precattltmp{\endgroup \EI_append:n {~}}
+ \tl_if_eq:NnF \__test {ac.ad.bc.bd.} {
+ \msg_error:nn {prettytok} {tl-analysis-bug}
}
- \_precattltmp
-}
-
-\begingroup
-
-
-\global\def \_precattlappend_begin #1 {
- \begingroup
- \lccode `\{=#1
- \lowercase{\endgroup \EI_append_raw:n { \iftrue { \else } \fi }}
-}
-\global\def \_precattlappend_end #1 {
- \begingroup
- \lccode `\}=#1
- \lowercase{\endgroup \EI_append_raw:n { \iffalse { \else } \fi }}
-}
\endgroup
-
-\def \_precattldo_special_cC #1 { \exp_args:Nc \EI_append:n {#1} }
-\def \_precattldo_special_cB #1 { \str_map_inline:nn {#1} { \_precattlappend_begin {`##1} } }
-\def \_precattldo_special_cE #1 { \str_map_inline:nn {#1} { \_precattlappend_end {`##1} } }
-\def \_precattldo_special_cM #1 { \str_map_inline:nn {#1} { \EI_append:x {\char_generate:nn {`##1} {3}} } }
-\def \_precattldo_special_cT #1 { \str_map_inline:nn {#1} { \EI_append:x {\char_generate:nn {`##1} {4}} } }
-\def \_precattldo_special_cP #1 { \str_map_inline:nn {#1} { \exp_args:No \EI_append:o {\char_generate:nn {`##1} {6}} } }
-\def \_precattldo_special_cU #1 { \str_map_inline:nn {#1} { \EI_append:x {\char_generate:nn {`##1} {7}} } }
-\def \_precattldo_special_cD #1 { \str_map_inline:nn {#1} { \EI_append:x {\char_generate:nn {`##1} {8}} } }
-\def \_precattldo_special_cS #1 { \str_map_inline:nn {#1} { \_precattlappend_space {`##1} } }
-\def \_precattldo_special_cL #1 { \str_map_inline:nn {#1} { \EI_append:x {\char_generate:nn {`##1} {11}} } }
-\def \_precattldo_special_cO #1 { \str_map_inline:nn {#1} { \EI_append:x {\char_generate:nn {`##1} {12}} } }
-\def \_precattldo_special_cA #1 { \str_map_inline:nn {#1} {
- \exp_args:No \EI_append:o {\char_generate:nn {`##1} {13}}
-} }
-
-
-
-\def \_precattldo_special #1 #2 {
- % given #1 e.g. \cO, #2 e.g. {abc}, append <abc> in OTHER catcode to EI.
- {
- \escapechar=-1
+\fi
- % let \_precattltmp be the concatenation of \string of all tokens within #2.
- \def \_precattltmp {}
- \tl_analysis_map_inline:nn {#2} {
- \tl_put_right:Nx \_precattltmp {\exp_after:wN \string ##1}
- }
-
- % then pass it to the specific handler.
- \exp_args:Nc \exp_args:NV {_precattldo_special_\string #1} \_precattltmp
+% ======== load Lua module.
+\sys_if_engine_luatex:T{
+ \directlua{require("prettytok")}
+ \precattl_exec:n {
+ \directlua{prettyprint_frozenrelaxtok=token.get_next().tok}\cFrozenRelax
}
}
-\def \_precattldo_special_cC_outer { \_precattldo_special\cC }
-\def \_precattldo_special_cB_outer { \_precattldo_special\cB }
-\def \_precattldo_special_cE_outer { \_precattldo_special\cE }
-\def \_precattldo_special_cM_outer { \_precattldo_special\cM }
-\def \_precattldo_special_cT_outer { \_precattldo_special\cT }
-\def \_precattldo_special_cP_outer { \_precattldo_special\cP }
-\def \_precattldo_special_cU_outer { \_precattldo_special\cU }
-\def \_precattldo_special_cD_outer { \_precattldo_special\cD }
-\def \_precattldo_special_cS_outer { \_precattldo_special\cS }
-\def \_precattldo_special_cL_outer { \_precattldo_special\cL }
-\def \_precattldo_special_cO_outer { \_precattldo_special\cO }
-\def \_precattldo_special_cA_outer { \_precattldo_special\cA }
-
-\def \_precattl_tmp_help #1 {
- \def \_precattl_do_frozen_relax { \EI_append:n {#1} }
- % #1 here will be substituted by the frozen relax
-}
-\expandafter \_precattl_tmp_help \ifnum0=0\fi
-\let \_precattl_tmp_help \undefined
-
-
-
-\def \precattl_prepare:n #1 {
- \begingroup
- \let \EIhandler_EIexpand \undefined
- \let \EIhandler_EIexecute \undefined
- \def \EIhandler_cC { \EI_collect_arg:Nn \_precattldo_special_cC_outer 1 }
- \def \EIhandler_cB { \EI_collect_arg:Nn \_precattldo_special_cB_outer 1 }
- \def \EIhandler_cE { \EI_collect_arg:Nn \_precattldo_special_cE_outer 1 }
- \def \EIhandler_cM { \EI_collect_arg:Nn \_precattldo_special_cM_outer 1 }
- \def \EIhandler_cT { \EI_collect_arg:Nn \_precattldo_special_cT_outer 1 }
- \def \EIhandler_cP { \EI_collect_arg:Nn \_precattldo_special_cP_outer 1 }
- \def \EIhandler_cU { \EI_collect_arg:Nn \_precattldo_special_cU_outer 1 }
- \def \EIhandler_cD { \EI_collect_arg:Nn \_precattldo_special_cD_outer 1 }
- \def \EIhandler_cS { \EI_collect_arg:Nn \_precattldo_special_cS_outer 1 }
- \def \EIhandler_cL { \EI_collect_arg:Nn \_precattldo_special_cL_outer 1 }
- \def \EIhandler_cO { \EI_collect_arg:Nn \_precattldo_special_cO_outer 1 }
- \def \EIhandler_cA { \EI_collect_arg:Nn \_precattldo_special_cA_outer 1 }
- \let \EIhandler_cFrozenRelax \_precattl_do_frozen_relax
- \execinside_gset:Nn \_precattlvalueg {#1}
- \endgroup
- \let \_precattlvalue \_precattlvalueg
-}
-
-\def \precattl_set:Nn #1 #2 {
- \precattl_prepare:n {#2}
- \tl_set_eq:NN #1 \_precattlvalue
-}
-\let\precattlSet\precattl_set:Nn
-
-\def \precattl_exec:n #1 {
- \precattl_prepare:n {#1}
- \_precattlvalue
-}
-\let\precattlExec\precattl_exec:n
-
-
-
-
-
-\RequirePackage{filecontentsdef}
-
-%\sys_if_engine_luatex:T{\directlua{require("prettytok")}}
-
-% usage: \pretty:n, etc.
+% ======== main code start.
\cs_generate_variant:Nn \exp_args:NNn {NNx}
\cs_generate_variant:Nn \iow_open:Nn {NV}
\cs_generate_variant:Nn \exp_args:NNn {NNV}
\cs_generate_variant:Nn \iow_now:Nn {Nx}
\cs_generate_variant:Nn \tl_if_eq:nnF {xoF}
+\cs_generate_variant:Nn \tl_if_eq:nnTF {o}
\cs_generate_variant:Nn \use:N {c}
\cs_generate_variant:Nn \str_map_inline:nn {xn}
\cs_generate_variant:Nn \tl_build_put_right:Nn {Nx}
\cs_generate_variant:Nn \iow_now:Nn {NV}
-\iow_new:N \__prettyh_file
+\iow_new:N \_prettytok_file
+\ior_new:N \_prettytok_input_template_file
+
+
\exp_args:NNx \providecommand \prettyfilename {pretty-\jobname.html}
\providecommand \prettyrefreshstrategy {4}
\providecommand \prettyrefreshduration {1000}
+\msg_new:nnn {prettytok} {already-initialized} {Output~file~is~already~initialized!}
-\cs_new_protected:Npn \pretty:n #1 {
-
- % ======== first write out the preamble if it isn't written. Only do once. Delete the preamble macro if it's already written.
- \cs_if_exist:NT \prettypreamble {
- \iow_open:NV \__prettyh_file \prettyfilename
- {
- \str_set:NV \prettypreamble \prettypreamble
- \precattl_exec:n {
- \str_replace_all:Nnn \prettypreamble {\cO\^^M} {\cO\^^J}
- }
- \iow_now:NV \__prettyh_file \prettypreamble
- \iow_now:Nx \__prettyh_file {set_refresh_strategy(\prettyrefreshstrategy,\prettyrefreshduration)}
- }
- \cs_undefine:N \prettypreamble
- }
-
- % ======== the actual content. Collect to one \write to put them on the same line (also maybe for efficiency???)
- \tl_build_begin:N \__prettyh_content
- \tl_build_put_right:Nn \__prettyh_content {print_tl(}
- \tl_analysis_map_inline:nn {#1} {
- % by documentation of \tl_analysis_map_inline:nn: #1=token, #2=char code, #3=catcode
- \int_compare:nNnTF {##2} = {-1} {
- % token is control sequence
- \tl_build_put_right:Nn \__prettyh_content {cs(}
- \tl_if_eq:xoF {\use:c {}} {##1} {
- \str_map_inline:xn {\exp_after:wN \cs_to_str:N ##1} { % side note, must use str here to preserve spaces
- \tl_build_put_right:Nx \__prettyh_content {\int_eval:n {`####1},}
- }
- }
- \tl_build_put_right:Nn \__prettyh_content {),}
- }
- {
- % token is not control sequence
- \tl_build_put_right:Nn \__prettyh_content {token(##2, "##3"),}
- }
- }
- \tl_build_put_right:Nn \__prettyh_content {)//</script><script>}
- \tl_build_end:N \__prettyh_content
- \iow_now:NV \__prettyh_file \__prettyh_content
-}
-
-\cs_new_protected:Npn \pretty:w #1 \prettystop {
- \pretty:n {#1}
-}
-\cs_generate_variant:Nn \pretty:n {x, o, V}
-\let \pretty:N \pretty:n
+% See also Lua function: local function check_file_opened()
-% normal-catcode alias
-\let\prettyN\pretty:n
-\let\prettyX\pretty:x
-\let\prettyO\pretty:o
-\let\prettyV\pretty:V
+\global\let \pretty_check_already_init: \relax
-\cs_generate_variant:Nn \pretty:N {c}
+\precattl_exec:n {
+ \cs_new_protected:Npn \_prettyinit_unchecked: {
+ \global\protected\def \pretty_check_already_init: {\msg_error:nn {prettytok} {already-initialized}}
-\cs_new_protected:Nn \pretty:nn {
- \pretty:n {#1}
- \pretty:n {#2}
-}
+ \iow_open:NV \_prettytok_file \prettyfilename
-\cs_new_protected:Nn \pretty:nnn {
- \pretty:n {#1}
- \pretty:n {#2}
- \pretty:n {#3}
-}
-
-\cs_new_protected:Nn \pretty:nnnn {
- \pretty:n {#1}
- \pretty:n {#2}
- \pretty:n {#3}
- \pretty:n {#4}
-}
-
-\cs_new_protected:Nn \prettyshow:N {
- \exp_args:No \pretty:n {\meaning #1}
-}
-\let\prettyshowN\prettyshow:N
-
-
-
-
-
-\ExplSyntaxOff
-\begin{filecontentsdefmacro}{\prettypreamble}
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="utf-8">
-<link rel="icon" href="data:,">
-<style>
-body{
- background-color: black;
- color: white;
-}
-
-/* https://stackoverflow.com/questions/7011602/stretching-iframe-in-html5 */
-#wrap_all { display: none; position:fixed; width:100%; height:100%; top: 0px; left: 0px; }
-
-
-iframe{
- position: absolute;
- width: 100%;
- height: 100%;
- display: none;
-}
-#status{
- flex: 0 0 1.3em;
-}
+ % write the template
+ \begingroup
+ \ior_open:Nn \_prettytok_input_template_file {prettytok_template.html}
+ \ior_str_map_variable:NNn \_prettytok_input_template_file \_prettytok_line {
+ \str_replace_all:Nnn \_prettytok_line {\cO\^^I} {~} % workaround: XeTeX prints literal tab character as ^^I which obviously breaks JavaScript
+ \iow_now:NV \_prettytok_file \_prettytok_line
+ }
+ \ior_close:N \_prettytok_input_template_file
+ \endgroup
-#display_wrap{
- flex: 1 0 auto;
-}
-#controller{
- flex: 0 0 50px;
-}
+ % refresh strategy
+ \iow_now:Nx \_prettytok_file {set_refresh_strategy(\prettyrefreshstrategy,\prettyrefreshduration)}
+ }
-.control-button{
+ \cs_new_protected:Npn \prettyinit: {
+ \pretty_check_already_init:
+ \_prettyinit_unchecked:
+ }
}
+\cs_new_eq:NN \prettyinit \prettyinit:
-.tokenlist, .fileline{
- border: 1px solid gray;
- height: 2em;
- overflow: scroll;
- white-space: nowrap;
-}
-.tokenlist::-webkit-scrollbar, .fileline::-webkit-scrollbar { width: 0 !important }
+\precattl_exec:n {
-.fileline{
- background-color: #404040;
-}
-.explicit_char_target{
- background-color: #FF8080;
-}
-.explicit_char{
- background-color: #606060;
-}
+ \cs_new_protected:Npn \pretty:n #1 {
+ % ======== first write out the preamble if it isn't written. Only do once.
+ \ifx \pretty_check_already_init: \relax \prettyinit: \fi
-.cs, .active_char{
- color: #FFFF00;
-}
-.cs::before{
- content: "\\";
-}
-.cs::after{
- content: " ";
+ % ======== the actual content. Collect to one \write to put them on the same line (also maybe for efficiency???)
+ \tl_build_begin:N \_prettytok_content
+ \tl_build_put_right:Nn \_prettytok_content {print_tl(}
+ \tl_analysis_map_inline:nn {#1} {
+ % by documentation of \tl_analysis_map_inline:nn: #1=token, #2=char code, #3=catcode
+ \int_compare:nNnTF {##2} = {-1} {
+ % token is control sequence
+ \tl_if_eq:onTF {##1} {\cFrozenRelax} {
+ \tl_build_put_right:Nn \_prettytok_content {csfrozenrelax(),}
+ } {
+ \tl_build_put_right:Nn \_prettytok_content {cs(}
+ \tl_if_eq:xoF {\use:c {}} {##1} {
+ \str_map_inline:xn {\exp_after:wN \cs_to_str:N ##1} { % side note, must use str here to preserve spaces
+ \tl_build_put_right:Nx \_prettytok_content {\int_eval:n {`####1},}
+ }
+ }
+ \tl_build_put_right:Nn \_prettytok_content {),}
+ }
+ }
+ {
+ % token is not control sequence
+ \tl_build_put_right:Nn \_prettytok_content {token(##2, "##3"),}
+ }
+ }
+ \tl_build_put_right:Nn \_prettytok_content {)//</script><script>}
+ \tl_build_end:N \_prettytok_content
+ \iow_now:NV \_prettytok_file \_prettytok_content
+ }
}
-#popup{
- display: none;
- position: absolute;
- border: 1px solid gray;
- background-color: #000080ff;
-}
+% ======== Lua expandable variant.
+\sys_if_engine_luatex:T {
+ \cs_new:Npn \prettye:n #1 {
+ \directlua{prettyprint(token.scan_toks())}{#1}
+ }
-.cmd__left_brace_cmd, .cmd__right_brace_cmd, .cmd__mac_param_cmd{
- color: #FFAAAA;
-}
-.cmd__out_param_cmd{
- border: 1px solid #FFAAAA;
-}
-.out_param_expansion{
- border: 1px solid #FFAAAA;
- background-color: #000080;
-}
-.cmd__out_param_cmd::before{
- content: "#";
+ \cs_new:Npn \prettye:w {
+ \directlua{prettyprintw()} {}
+ }
+ \cs_new:Npn \prettye:nw #1 {
+ \directlua{prettyprintw()} {#1}
+ }
}
-.cmd__letter_cmd{
- color: #AAFFAA;
+\cs_new_protected:Npn \pretty:w #1 \prettystop {
+ \pretty:n {#1} #1 \prettystop
}
-.cmd__spacer_cmd{
- color: #808080;
-}
+\cs_new:Npn \prettystop {}
+\cs_generate_variant:Nn \pretty:n {x, o, V}
+\let \pretty:N \pretty:n
-input[type=button]{
- color: white;
- background-color: #0000ff;
- border: 0;
-}
+% ======== normal-catcode alias
+\let\prettyN\pretty:n
+\let\prettyX\pretty:x
+\let\prettyO\pretty:o
+\let\prettyV\pretty:V
+\let\prettyeN\prettye:n
+\let\prettyeW\prettye:w
-#log{
- display: flex;
- flex-direction: column-reverse;
- flex: 0 0 30%;
- overflow: scroll;
-}
-</style>
-</head>
-<body>
-
- <div id=output></div>
- <div id=wrap_all>
- <iframe id=iframe src="about:blank" frameborder=0></iframe>
- <iframe id=iframe2 src="about:blank" frameborder=0></iframe>
- </div>
- <script>
-"use strict"
-function show_html(s){
- return s.replace(/ /g, "␣")
- .replace(/\r|\n/g, "↵")
- .replace(/\t/g, "⇥")
-}
+\cs_generate_variant:Nn \pretty:N {c}
-output.innerHTML=""
-function print_tl(...tokens){
- const tl_div=document.createElement("div")
- tl_div.className="tokenlist"
- for(let token of tokens){
- tl_div.appendChild(token)
+% ======== generate \pretty:nn, \pretty:nnn, etc.
+\begingroup
+ \def \__tmp:NN #1 #2 { % #1: example \pretty:nn, #2: example \pretty:n (the latter has one more n than the former)
+ \cs_new_protected:Npn #1 ##1 ##2 { #2 {##1 ##2} }
}
- output.appendChild(tl_div)
-}
+ \cs_generate_variant:Nn \__tmp:NN {cc}
-function token(charcode /* single character string in hex */, catcode /* integer */){
- const token_span=document.createElement("span")
- const ch=String.fromCodePoint(charcode)
- token_span.innerText=show_html(ch)
- if(catcode==='D'){
- token_span.className="active_char"
- token_span.title=`active ${ch} # ${charcode}`
- }else{
- const cls={
- 1: 'cmd__left_brace_cmd',
- 2: 'cmd__right_brace_cmd',
- 3: 'cmd__math_shift_cmd',
- 4: 'cmd__tab_mark_cmd',
- 6: 'cmd__mac_param_cmd',
- 7: 'cmd__sup_mark_cmd',
- 8: 'cmd__sub_mark_cmd',
- A: 'cmd__spacer_cmd',
- B: 'cmd__letter_cmd',
- C: 'cmd__other_char_cmd',
- }[catcode]
- token_span.className="token "+cls
- token_span.title=`${cls} ${ch} # ${charcode}`
+ \def \__tmp {pretty:n}
+ \int_step_inline:nn {9} {
+ \__tmp:cc {\__tmp n} {\__tmp}
+ \tl_put_right:Nn \__tmp {n}
}
- return token_span
-}
-
-function cs(...codepoints){
- const token_span=document.createElement("span")
- const control_sequence_name=String.fromCodePoint(...codepoints)
- //const meaning_str=readstr()
+ \sys_if_engine_luatex:T {
+ \def \__tmp:NN #1 #2 { % #1: example \prettye:nn, #2: example \prettye:n (the latter has one more n than the former)
+ \cs_new:Npn #1 ##1 ##2 { #2 {##1 ##2} }
+ }
+ \def \__tmp {prettye:n}
+ \int_step_inline:nn {9} {
+ \__tmp:cc {\__tmp n} {\__tmp}
+ \__tmp:cc {\__tmp nw} {\__tmp w}
+ \tl_put_right:Nn \__tmp {n}
+ }
+ }
+\endgroup
- token_span.innerText=show_html(control_sequence_name)
- //token_span.title=`cs '${control_sequence_name}' → ${meaning_str}`
- token_span.className="cs"
- return token_span
+\cs_new_protected:Nn \prettyshow:N {
+ \exp_args:No \pretty:n {\meaning #1}
}
+\cs_generate_variant:Nn \prettyshow:N {c}
+\let\prettyshowN\prettyshow:N
+\let\prettyshowC\prettyshow:c
-var refresh_strategy_already_set=false
-function set_refresh_strategy(strategy, duration){
- if(refresh_strategy_already_set) return
- refresh_strategy_already_set=true
-
- switch(strategy){
- case 0: // do nothing
- return
-
- case 1: // refresh the sub-iframe
- if(window.parent===window){
- print_tl=function(...x) {}
- //output.style.display="none"
- iframe.src=location.href
- iframe.style.display="block"
- wrap_all.style.display="block"
- setInterval(function(){
- iframe.src=iframe.src
- }, duration)
- }
- return
-
- case 2: // refresh two sub-iframes
- if(window.parent===window){
- print_tl=function(...x) {}
- //output.style.display="none"
- iframe.src=iframe2.src=location.href
- iframe.style.display="block"
- iframe2.style.display="block"
- wrap_all.style.display="block"
- async function sleep(ms){
- await new Promise(resolve=>setTimeout(resolve, ms))
- }
- (async function(){
- while(true){
- await sleep(duration/2)
- iframe.src=iframe.src
-
- await sleep(duration/2)
- iframe2.style.zIndex=1
- iframe.style.zIndex=2
-
- await sleep(duration/2)
- iframe2.src=iframe2.src
-
- await sleep(duration/2)
- iframe.style.zIndex=1
- iframe2.style.zIndex=2
- }
- })()
- }
- return
-
- case 3: // refresh whole page
- setTimeout(function(){
- location.reload()
- }, duration)
- return
-
- case 4: // request own file
- window.addEventListener("load", async function(){
- async function get_code(){
- //let text=await (await fetch(location.href)).text()
- let text=await new Promise(function(resolve){
- let request = new XMLHttpRequest();
- request.responseType = "text"
- request.onload = function() {
- resolve(request.responseText)
- }
- request.onerror = function() {
- console.log("Error happened. Read documentation for more details.")
- }
- request.open("GET", location.href, true)
- request.send()
- })
- return text.replace(/.*?-end-template()-/s, "")
- }
- let text=await get_code()
- output.innerHTML=""
- try{ eval(text) }catch(e) {}
- setInterval(async function(){
- let text2=await get_code()
- if(text2!==text){
- output.innerHTML=""
- try{ eval(text2) }catch(e) {}
- text=text2
- }
- }, duration)
- })
- return
- }
-}
- </script>
-<script>
-// -end-template-
-\end{filecontentsdefmacro}
-\ExplSyntaxOn
diff --git a/macros/latex/contrib/prettytok/prettytok.tex b/macros/latex/contrib/prettytok/prettytok.tex
index d21af2d0fe..96878ec457 100644
--- a/macros/latex/contrib/prettytok/prettytok.tex
+++ b/macros/latex/contrib/prettytok/prettytok.tex
@@ -1,10 +1,6 @@
%! TEX program = lualatex
-\ProvidesFile{prettytok.tex} [2022/05/28 v0.0.0 Pretty-print token lists]
-% yes, this is not dtx
+\ProvidesFile{prettytok.tex} [2022/07/08 v0.0.1 ]
\documentclass{l3doc}
-%\usepackage[a4paper,margin=25mm,left=50mm,nohead]{geometry}
-%\usepackage[numbered]{hypdoc}
-%\usepackage{\jobname}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
@@ -13,7 +9,7 @@
\DoNotIndex{\newcommand,\newenvironment}
\title{\textsf{prettytok} --- Pretty-print token lists\thanks{This file
- describes version \fileversion, last revised \filedate.}
+ describes version \fileversion, last revised \filedate.}
}
\author{user202729%
%\thanks{E-mail: (not set)}
@@ -25,29 +21,76 @@
\changes{v0.0.0}{2022/05/18}{First public release}
\begin{abstract}
- Pretty-print token lists.
+Pretty-print token lists to HTML file for debugging purposes.
+Open the file in any browser to view the result.
+
+Can be used to replace |\tl_analysis_show:n|.
\end{abstract}
\section{Usage}
\subsection{Main function}
\begin{function}{\pretty:n,\pretty:x,\pretty:o,\pretty:V}
- \begin{syntax}
- \cs{pretty:n} \Arg{token list} \\
- \end{syntax}
- Print the content of \meta{token list}.
+ \begin{syntax}
+ \cs{pretty:n} \Arg{token list}
+ \end{syntax}
+ Print the content of \meta{token list}.
\end{function}
\begin{function}{\pretty:N,\pretty:c}
- \begin{syntax}
- \cs{pretty:N} \meta{token} \\
- \cs{pretty:c} \Arg{control sequence name} \\
- \end{syntax}
- Print \meta{token}. \\
- This function is not very useful. Usually it's preferable to use |\pretty:V| to print a token list variable's value,
- or |\prettyshow:N| to print a control sequence's meaning.
+ \begin{syntax}
+ \cs{pretty:N} \meta{token}
+ \cs{pretty:c} \Arg{control sequence name}
+ \end{syntax}
+ Print \meta{token}.
+
+ This function is not very useful. Usually it's preferable to use |\pretty:V| to print a token list variable's value,
+ or |\prettyshow:N| to print a control sequence's meaning.
+\end{function}
+
+\begin{function}{\prettyinit:}
+ \begin{syntax}
+ \cs{prettyinit:}
+ \end{syntax}
+ Do necessary initialization.
+
+ This should be called right after the package is loaded, after setting the configuration variables described below.
\end{function}
+\subsection{Expandable interface (\LuaTeX\ only)}
+
+\cs{prettyinit:} must be called before calling the functions in this section.
+
+\begin{function}[EXP]{\prettye:n}
+ \begin{syntax}
+ \cs{prettye:n} \Arg{token list}
+ \end{syntax}
+ Print the token list, similar to \cs{pretty:n}, but is fully expandable.
+\end{function}
+
+\begin{function}[EXP]{\prettye:w}
+ \begin{syntax}
+ \cs{prettye:w} \meta{tokens} \cs{prettystop}
+ \end{syntax}
+ Print the tokens until \cs{prettystop} is seen. Useful for inspecting the content of the input stream.
+
+ Note that the input stream will be tokenized and has catcode frozen. Use with care.
+\end{function}
+
+\subsection{Lua programming interface}
+
+\cs{prettyinit:} must also be called before calling the functions in this section.
+
+\begin{function}{prettyprint}
+ \begin{syntax}
+ |prettyprint(|\meta{content}|)|
+ \end{syntax}
+ Print the content, which should be a table of token objects.
+
+ For convenience, you can pass multiple arguments. Strings are also supported.
+\end{function}
+
+
\subsection{View result}
The result is printed to a HTML file named |pretty-|\meta{jobname}|.html| by default.
@@ -58,24 +101,17 @@ Note that the HTML file will not be touched if nothing is printed, as such it's
Why HTML file?
\begin{itemize}
- \item Because if the TeX program stops with error / has some error that corrupts the PDF output, the output will even with corrupted more by the debug print.
- \item Printing to the console is extremely limited (difficult syntax highlighting/scrolling/line wrapping), and most likely cluttered with the traceback/other TeX default output.
- \item Output to another \TeX\ file to be compiled is a bit absurd, and compiling \TeX\ file takes longer than loading a HTML file.
+ \item If the \TeX\ program stops with error / has some error that corrupts the PDF output, the output will even with corrupted more by the debug print.
+ \item Printing to the console is extremely limited (difficult syntax highlighting/scrolling/line wrapping), and most likely cluttered with the traceback/other \TeX\ default output.
+
+ (nevertheless, there might be plan to support output to console with syntax highlighting later.)
+ \item Output to another \TeX\ file to be compiled works as well; however it's necessary to run another instance of |latexmk| (or other tool used to compile \TeX\ code)
+ and compiling \TeX\ file takes longer than loading a HTML file.
\end{itemize}
-By default, the output refreshes whenever the TeX file is recompiled. The behavior
+By default, the output refreshes whenever the \TeX\ file is recompiled. The behavior
can be customized with \cs{prettyrefreshstrategy} and \cs{prettyrefreshduration}.
-\subsection{\LaTeX2 interface}
-
-
-\begin{function}{\prettyN,\prettyX,\prettyO,\prettyV}
- \begin{syntax}
- \cs{prettyN} \Arg{token list} \\
- \end{syntax}
- Alias of the correspondingly-named commands.
-\end{function}
-
\subsection{Additional functions}
There are also these functions, for convenience.
@@ -85,30 +121,82 @@ There are also these functions, for convenience.
\cs{pretty:nn} \Arg{token list} \Arg{token list}
\cs{pretty:nnn} \Arg{token list} \Arg{token list} \Arg{token list}
\end{syntax}
- Print multiple token lists.
+ Print multiple token lists. Its effect is similar to multiple consecutive calls to \cs{pretty:n}.
+\end{function}
+
+\begin{function}[EXP]{\prettye:nn, \prettye:nnn}
+ \begin{syntax}
+ \cs{prettye:nn} \Arg{token list} \Arg{token list}
+ \cs{prettye:nnn} \Arg{token list} \Arg{token list} \Arg{token list}
+ \end{syntax}
+ Similar to multiple consecutive calls to \cs{prettye:n}.
+\end{function}
+
+\begin{function}[EXP]{\prettye:nw, \prettye:nnw}
+ \begin{syntax}
+ \cs{prettye:nw} \Arg{token list} \meta{tokens} \cs{prettystop}
+ \cs{prettye:nnw} \Arg{token list} \Arg{token list} \meta{tokens} \cs{prettystop}
+ \end{syntax}
+ Similar to call(s) to \cs{prettye:n} followed by a call to \cs{prettye:w}.
\end{function}
\begin{function}{\pretty:w}
\begin{syntax}
\cs{pretty:w} \meta{token list} \cs{prettystop}
\end{syntax}
- Print the content of \meta{token list}. For now, it must be brace-balanced.
+ Print the content of \meta{token list}.
+
+ Same restriction applies -- the catcode is frozen.
+
+ In addition -- for now, it must be brace-balanced and if \meta{token list} has a surrounding brace group it will be removed. Use \cs{prettye:w} instead if possible.
\end{function}
-\begin{function}{\prettyshow:N}
+\begin{function}[EXP]{\prettystop}
+ \begin{syntax}
+ \cs{prettystop}
+ \end{syntax}
+ Only used as a delimiter for |:w| functions. For convenience, this function is defined to do nothing.
+\end{function}
+
+\begin{function}{\prettyshow:N,\prettyshow:c}
\begin{syntax}
\cs{prettyshow:N} \meta{token}
+ \cs{prettyshow:c} \Arg{control sequence name}
\end{syntax}
Show the meaning of a |N|-type argument.
\end{function}
+\subsection{\LaTeXe\ interface}
+
+\begin{function}{\prettyN,\prettyX,\prettyO,\prettyV,\prettyinit,\prettyshowN,\prettyshowC}
+ \begin{syntax}
+ \tn{prettyN} \Arg{token list}
+ \tn{prettyX} \Arg{token list}
+ \tn{prettyO} \Arg{token list}
+ \tn{prettyV} \meta{tl var}
+ \tn{prettyinit}
+ \tn{prettyshowN} \meta{token}
+ \tn{prettyshowC} \Arg{control sequence name}
+ \end{syntax}
+ Alias of the correspondingly-named commands.
+\end{function}
+
+\begin{function}[EXP]{\prettyeN,\prettyeW}
+ \begin{syntax}
+ \cs{prettyeN} \Arg{token list}
+ \cs{prettyeW} \meta{tokens} \cs{prettystop}
+ \end{syntax}
+ Alias of the correspondingly-named commands. Only available in \LuaTeX.
+\end{function}
+
+
\subsection{Customization}
These variables can be redefined before the
-first call to |\pretty:n| to customize the behavior.
+first call to \cs{pretty:n} or \cs{prettyinit:} to customize the behavior.
\begin{variable}{\prettyfilename}
- The output file name. Defaults to |pretty-|\meta{jobname}|.html|, as mentioned above.
+ The output file name. Defaults to |pretty-|\meta{jobname}|.html|, as mentioned above.
\end{variable}
\begin{variable}{\prettyrefreshstrategy}
@@ -121,18 +209,13 @@ first call to |\pretty:n| to customize the behavior.
The duration between two consecutive refresh check, in milliseconds. Defaults to 1000.
\end{variable}
-\begin{variable}{\prettypreamble}
- The HTML source code preamble. This can be redefined to change styles, but the
- behavior is not guaranteed.
-\end{variable}
-
\section{Implementation}
Unfortunately, the implementation is not typesetted in \TeX. Read the |.sty| file.
\StopEventually{^^A
- \PrintChanges
- \PrintIndex
+ \PrintChanges
+ \PrintIndex
}
\Finale
diff --git a/macros/latex/contrib/prettytok/prettytok_template.html b/macros/latex/contrib/prettytok/prettytok_template.html
new file mode 100644
index 0000000000..8764d49809
--- /dev/null
+++ b/macros/latex/contrib/prettytok/prettytok_template.html
@@ -0,0 +1,283 @@
+<!doctype html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<link rel="icon" href="data:,">
+<style>
+body{
+ background-color: black;
+ color: white;
+}
+
+/* https://stackoverflow.com/questions/7011602/stretching-iframe-in-html5 */
+#wrap_all { display: none; position:fixed; width:100%; height:100%; top: 0px; left: 0px; }
+
+
+iframe{
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ display: none;
+}
+#status{
+ flex: 0 0 1.3em;
+}
+
+#display_wrap{
+ flex: 1 0 auto;
+}
+#controller{
+ flex: 0 0 50px;
+}
+
+.control-button{
+}
+
+
+
+.tokenlist, .fileline{
+ border: 1px solid gray;
+ overflow: scroll;
+ white-space: nowrap;
+}
+.tokenlist::-webkit-scrollbar, .fileline::-webkit-scrollbar { width: 0 !important }
+
+.fileline{
+ background-color: #404040;
+}
+
+.explicit_char_target{
+ background-color: #FF8080;
+}
+.explicit_char{
+ background-color: #606060;
+}
+
+
+.cs, .active_char{
+ color: #FFFF00;
+}
+.cs::before{
+ content: "\\";
+}
+.cs::after{
+ content: " ";
+}
+
+#popup{
+ display: none;
+ position: absolute;
+ border: 1px solid gray;
+ background-color: #000080ff;
+}
+
+.cmd__left_brace_cmd, .cmd__right_brace_cmd, .cmd__mac_param_cmd, .frozenrelax{
+ color: #FFAAAA;
+}
+.cmd__out_param_cmd{
+ border: 1px solid #FFAAAA;
+}
+.out_param_expansion{
+ border: 1px solid #FFAAAA;
+ background-color: #000080;
+}
+.cmd__out_param_cmd::before{
+ content: "#";
+}
+
+.cmd__letter_cmd{
+ color: #AAFFAA;
+}
+
+.cmd__spacer_cmd{
+ color: #606060;
+}
+
+
+input[type=button]{
+ color: white;
+ background-color: #0000ff;
+ border: 0;
+}
+
+#log{
+ display: flex;
+ flex-direction: column-reverse;
+ flex: 0 0 30%;
+ overflow: scroll;
+}
+</style>
+</head>
+<body>
+
+ <div id=output></div>
+ <div id=wrap_all>
+ <iframe id=iframe src="about:blank" frameborder=0></iframe>
+ <iframe id=iframe2 src="about:blank" frameborder=0></iframe>
+ </div>
+ <script>
+"use strict"
+function show_html(s){
+ return s.replace(/ /g, "␣")
+ .replace(/\r|\n/g, "↵")
+ .replace(/\t/g, "⇥")
+}
+
+output.innerHTML=""
+
+function print_tl(...tokens){
+ const tl_div=document.createElement("div")
+ tl_div.className="tokenlist"
+ for(let token of tokens){
+ tl_div.appendChild(token)
+ if({13: true, 10: true}[token.data_charcode]){
+ tl_div.appendChild(document.createElement("br"))
+ }
+ }
+ output.appendChild(tl_div)
+}
+
+function token(charcode /* int */, catcode /* single character string in hex */){
+ const token_span=document.createElement("span")
+ const ch=String.fromCodePoint(charcode)
+ token_span.innerText=show_html(ch)
+ token_span.data_charcode=charcode
+ if(catcode==='D'){
+ token_span.className="active_char"
+ token_span.title=`active ${ch} # ${charcode}`
+ }else{
+ const cls={
+ 1: 'cmd__left_brace_cmd',
+ 2: 'cmd__right_brace_cmd',
+ 3: 'cmd__math_shift_cmd',
+ 4: 'cmd__tab_mark_cmd',
+ 6: 'cmd__mac_param_cmd',
+ 7: 'cmd__sup_mark_cmd',
+ 8: 'cmd__sub_mark_cmd',
+ A: 'cmd__spacer_cmd',
+ B: 'cmd__letter_cmd',
+ C: 'cmd__other_char_cmd',
+ }[catcode]
+ token_span.className="token "+cls
+ token_span.title=`${cls} ${ch} # ${charcode}`
+ }
+ return token_span
+}
+
+function cs(...codepoints){
+ const token_span=document.createElement("span")
+
+ const control_sequence_name=String.fromCodePoint(...codepoints)
+ //const meaning_str=readstr()
+
+ token_span.innerText=show_html(control_sequence_name)
+ //token_span.title=`cs '${control_sequence_name}' → ${meaning_str}`
+ token_span.className="cs"
+
+ return token_span
+}
+
+function csfrozenrelax(){
+ const token_span=document.createElement("span")
+ token_span.innerText="relax"
+ token_span.title="frozen relax"
+ token_span.className="cs frozenrelax"
+ return token_span
+}
+
+var refresh_strategy_already_set=false
+function set_refresh_strategy(strategy, duration){
+ if(refresh_strategy_already_set) return
+ refresh_strategy_already_set=true
+
+ switch(strategy){
+ case 0: // do nothing
+ return
+
+ case 1: // refresh the sub-iframe
+ if(window.parent===window){
+ print_tl=function(...x) {}
+ //output.style.display="none"
+ iframe.src=location.href
+ iframe.style.display="block"
+ wrap_all.style.display="block"
+ setInterval(function(){
+ iframe.src=iframe.src
+ }, duration)
+ }
+ return
+
+ case 2: // refresh two sub-iframes
+ if(window.parent===window){
+ print_tl=function(...x) {}
+ //output.style.display="none"
+ iframe.src=iframe2.src=location.href
+ iframe.style.display="block"
+ iframe2.style.display="block"
+ wrap_all.style.display="block"
+ async function sleep(ms){
+ await new Promise(resolve=>setTimeout(resolve, ms))
+ }
+ (async function(){
+ while(true){
+ await sleep(duration/2)
+ iframe.src=iframe.src
+
+ await sleep(duration/2)
+ iframe2.style.zIndex=1
+ iframe.style.zIndex=2
+
+ await sleep(duration/2)
+ iframe2.src=iframe2.src
+
+ await sleep(duration/2)
+ iframe.style.zIndex=1
+ iframe2.style.zIndex=2
+ }
+ })()
+ }
+ return
+
+ case 3: // refresh whole page
+ setTimeout(function(){
+ location.reload()
+ }, duration)
+ return
+
+ case 4: // request own file
+ window.addEventListener("load", async function(){
+ async function get_code(){
+ //let text=await (await fetch(location.href)).text()
+ let text=await new Promise(function(resolve){
+ let request = new XMLHttpRequest();
+ request.responseType = "text"
+ request.onload = function() {
+ resolve(request.responseText)
+ }
+ request.onerror = function() {
+ console.log("Error happened. Read documentation for more details.")
+ }
+ request.open("GET", location.href, true)
+ request.send()
+ })
+ return text.replace(/.*?-end-template()-/s, "")
+ }
+ let text=await get_code()
+ output.innerHTML=""
+ try{ eval(text) }catch(e) {}
+ setInterval(async function(){
+ let text2=await get_code()
+ if(text2!==text){
+ output.innerHTML=""
+ try{ eval(text2) }catch(e) {}
+ text=text2
+ }
+ }, duration)
+ })
+ return
+ }
+}
+ </script>
+
+<script>
+// -end-template-
diff --git a/macros/latex/contrib/qrbill/README.md b/macros/latex/contrib/qrbill/README.md
index d2de2374ae..9a218919db 100644
--- a/macros/latex/contrib/qrbill/README.md
+++ b/macros/latex/contrib/qrbill/README.md
@@ -1,10 +1,10 @@
# qrbill – create QR-bills based on the swiss payment standard
-Copyright (C) Marei Peischl (peiTeX) <marei@peitex.de>, 2020–2021
+Copyright (C) Marei Peischl (peiTeX) <marei@peitex.de>, 2020–2022
This work is part of a collaborative project of Marei Peischl (peiTeX) and Alex Antener (foobar LLC).
-qrbill 2021/05/10 v1.03
+qrbill 2022/07/02 v1.04
***************************************************************************
@@ -24,6 +24,7 @@ qrbill 2021/05/10 v1.03
The files
* qrbill.sty
* swiss.qrbill-cfg.tex
+* epc.qrbill-cfg.tex
as well as the demo files
* qrbill-standalone-demo.tex
* qrbill-letter-demo.tex
@@ -48,4 +49,7 @@ To simplify this, you can have a look at the qrbill.tds.zip, which provides an a
- Not on version number inconsistency
* v1.03 (2021-05-10)
- Update to swiss qrbill payments standard v2.2
- - Add seb-iban and sep-reference to the example files \ No newline at end of file
+ - Add seb-iban and sep-reference to the example files
+ * v1.04 (2022/07/02)
+ - add basic support for EPC QR codes
+ - add date parsing mechanism to preset the dates to values of `\today` \ No newline at end of file
diff --git a/macros/latex/contrib/qrbill/qrbill.dtx b/macros/latex/contrib/qrbill/qrbill.dtx
index 21126cf973..e2b228f2ae 100644
--- a/macros/latex/contrib/qrbill/qrbill.dtx
+++ b/macros/latex/contrib/qrbill/qrbill.dtx
@@ -2,7 +2,7 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
-% Copyright (C) 2020–2021 by Marei Peischl (peiTeX) <marei@peitex.de>
+% Copyright (C) 2020–2022 by Marei Peischl (peiTeX) <marei@peitex.de>
%
% This work is a collaboration of
% Marei Peischl (peiTeX) and Alex Antener (foobar LLC).
@@ -23,8 +23,8 @@
% This work consists of the files
% qrbill.dtx and qrbill.ins, qrbill-vocab.csv
% and the derived files
-% qrbill.sty, swiss.qrbill-cfg.tex, qrbill-letter-demo.tex,
-% qrbill-standalone-demo.tex .
+% qrbill.sty, swiss.qrbill-cfg.tex, epc.qrbill-cfg.tex,
+% qrbill-letter-demo.tex, qrbill-standalone-demo.tex.
%
% The development repository can be found at
% https://github.com/peitex/qrbill
@@ -54,13 +54,13 @@
% \fi
% \iffalse
%<*driver>
-\ProvidesFile{qrbill.dtx}[2021/05/10 v1.03 \ create QR-bills based on the Swiss standard]
+\ProvidesFile{qrbill.dtx}[2022/07/02 v1.04 \ create QR-bills based on the Swiss standard]
\documentclass[english, parskip=half-]{scrartcl}
\usepackage{iftex}
\ifPDFTeX
\usepackage[T1]{fontenc}
\fi
-\usepackage{doc}
+\usepackage[hyperref=false]{doc}
\usepackage[cache, langlinenos]{minted}
% Need to set the style here so that it is defined and brought in here.
% If the style is set later, then docstrip interferes with any comments in
@@ -79,10 +79,9 @@
\usepackage{babel}
\usepackage[babel]{csquotes}
-\EnableCrossrefs
\PageIndex
\RecordChanges
-\newmintinline[code]{latex}{}
+\newmintinline{latex}{}
\newcommand*\repl[1]{\meta{#1}}
\newcommand*\opt[1]{\colorbox{black!20}{\meta{#1}}}
@@ -215,7 +214,7 @@
% \end{doccode}
%
% \DescribeMacro{\QRbill}\oarg{Data Setup}
-% The macro \code{\QRbill} creates a box of 210\,mm${}\times{}$105\,mm size. It will include a qrbill as described in the design guide \cite{qrbill-design} and insert all available data.
+% The macro \latexinline{\QRbill} creates a box of 210\,mm${}\times{}$105\,mm size. It will include a qrbill as described in the design guide \cite{qrbill-design} and insert all available data.
%
% There is also an example in the appendix showing all data fields (see appendix \ref{standalone-complete} on page \pageref{standalone-complete}).
%
@@ -236,14 +235,14 @@
% \item numprint
% \end{itemize}
%
-% As a default font \enquote{Liberation Sans} will be used. This will be loaded using fontspec, which would require the use of Lua\LaTeX{} or Xe\LaTeX{} as a compiler. To have a workaround for this, see the \code{font} option on page \pageref{opt:font} for a custom font setup.
+% As a default font \enquote{Liberation Sans} will be used. This will be loaded using fontspec, which would require the use of Lua\LaTeX{} or Xe\LaTeX{} as a compiler. To have a workaround for this, see the \latexinline{font} option on page \pageref{opt:font} for a custom font setup.
%
% \section{Package options}
%
% \begin{optionlist}
%
% \item[billinginfo (true/false) (true)]
-% Activate/deactivate the automatic fill of the BillingInformation. If this is set to \code{false} one still can add data to this field using the \code{BillingInformation} key, as Described in section \ref{sec:data-setup}.
+% Activate/deactivate the automatic fill of the BillingInformation. If this is set to \latexinline{false} one still can add data to this field using the \latexinline{BillingInformation} key, as Described in section \ref{sec:data-setup}.
%
% \item[creditorprefix\\debtorprefix (String) (CR-/UD-)]
% For custom setups the predefined prefixes for the debtor and creditoraddress can be changes. The initial configuration is a requirement of the Swiss standards.
@@ -252,7 +251,7 @@
% \label{opt:font}
% The official guideline for the Swiss qrbill limits the choice of the font to the first four values of this option. The font selection and sizes currently hardcoded to fit to the size. Custom setups might be provided in the future.
%
-% In case one wants to use a custom font, you can set the option \code{font=custom}. This will disable all font setup and not prevent the fontspec package from being loaded. You can redefine the macro \code{qrbillfont} to use any font available on your system, for example:
+% In case one wants to use a custom font, you can set the option \latexinline{font=custom}. This will disable all font setup and not prevent the fontspec package from being loaded. You can redefine the macro \latexinline{qrbillfont} to use any font available on your system, for example:
% \begin{doccode}
% \usepackage{fontspec}
% % The Laconic font has to be installed
@@ -264,7 +263,7 @@
%
% \changes{v1.02}{2020/08/25}{add ibanseparator option}
% \item[ibanseparator (tokenlist) (\textbackslash,)]
-% Set the tokenlist to separate the account numbers. See option \code{sep-iban} for
+% Set the tokenlist to separate the account numbers. See option \latexinline{sep-iban} for
% further information.
%
% \item[icon (swiss-cross/filename) (<empty>)]
@@ -280,13 +279,13 @@
%
% \changes{v1.02}{2020/08/25}{add referenceseparator option}
% \item[referenceseparator (tokenlist) (\textbackslash,)]
-% Set the tokenlist to separate the reference codes. See option \code{sep-reference} for
+% Set the tokenlist to separate the reference codes. See option \latexinline{sep-reference} for
% further information.
%
% \changes{v1.02}{2020/08/25}{add sep-iban/sep-reference option}
% \item[sep-iban\\sep-reference (integer) (0)]
% Set the size of character groups to separate these. Positive values will be counted left to right. Negative ones the other way round.
-% The most variants of the Swiss QRbill use values of \code{sep-iban=4} and \code{sep-reference=-5} e.\,g.:
+% The most variants of the Swiss QRbill use values of \latexinline{sep-iban=4} and \latexinline{sep-reference=-5} e.\,g.:
%
% \ExplSyntaxOn
% \begingroup
@@ -304,11 +303,26 @@
%
% \section{Data setup}
% \label{sec:data-setup}
-% \DescribeMacro{\qrbillsetdata}
-% The data fields can be filled either using the optional argument of \code{\QRbill} or using the macro \code{\qrbillsetdata}. Section \ref{sec:data-complete} shows a list of all available fields and appendix \ref{standalone-complete} provides an example of use. For further information on the construction of the QRcode see the specification \cite{qrbill-spec}.
+% \changes{v1.04}{2022/07/02}{Add starrred variant of qrbillsetdata}
+% \DescribeMacro{\qrbillsetdata}\sarg\marg{data}
+% The data fields can be filled either using the optional argument of \latexinline{\QRbill} or using the macro \latexinline{\qrbillsetdata}. Section \ref{sec:data-complete} shows a list of all available fields and appendix \ref{standalone-complete} provides an example of use. For further information on the construction of the QRcode see the specification \cite{qrbill-spec}.
%
% To simplify the usage qrbill provides an interface to use the different types of address data and is able to create a \enquote{billing information} string as described in \cite{qrbill-spec} using the single data elements.
%
+% Version 1.04 adds a starred variant to expand the argument before setting the data. This might be usefull for using counters or other variables inside the command.
+%
+% \section{Parsing dates}
+% In version v1.04 qrbill introduced the functionality to parse dates. For the swiss data scheme the fields \latexinline{invoicedate} and \latexinline{vatdate} are prefilled with the compilation date.
+% \changes{v1.04}{2022/07/02}{Add date parsing mechanisms}
+% \DescribeMacro{\QRbillParseDate}\marg{year}\marg{month}\marg{day}
+% To be compatible with language specific setups the usage of \latexinline{\today} is not allowed directly but one can use
+% \begin{doccode}
+% \qrbillsetdata*{
+% invoicedate=\QRbillParseDate{\the\year}{\the\month}{\the\day}
+% }
+% \end{doccode}
+% By default this setting will return the ISO date (YYYY-MM-DD) but the swiss scheme is already changing this to the desired (YYMMDD) structure.
+%
% \section{Setup for the preconfigured Swiss QR-bill}
% \subsection{Preconfigured data}
% \changes{v1.03}{2021/05/07}{Update to swiss qrbill standard version 2.2}
@@ -324,18 +338,18 @@
% These fields are required to use these values for Version 2.2 of the QRbill standard. If any future changes on the standard would require changes, they can be overwritten or redefined by using a custom implementation file, similar to swiss.qrbill-cfg.tex.
%
% \changes{v1.02}{2020/08/25}{Note the version number inconsistency in the official guidelines}
-% Be aware that version 2.1 of the standard requested to use the versioncode \code{0210}.
-% With the update to version 2.2 of the standard this was changed to \code{0200}.
+% Be aware that version 2.1 of the standard requested to use the versioncode \latexinline{0210}.
+% With the update to version 2.2 of the standard this was changed to \latexinline{0200}.
% This change was caused by a discrepancy between the standard and the commong implementation.
-% Most of them continued to use the version code \code{0200} therefore SIX decided to keep this error and created a workaround with finally documenting this change in version 2.2 of the guildelines.
+% Most of them continued to use the version code \latexinline{0200} therefore SIX decided to keep this error and created a workaround with finally documenting this change in version 2.2 of the guildelines.
% \begin{quote}
%Note: In collaboration with representatives of the financial center, SIX has decided that only the version designation “0200” is permitted in master version 02. From master version 03 onwards, depiction of subversions is enabled.\\\hspace*{\fill}\cite{qrbill-spec}
% \end{quote}
% The corresponding issue and discussion concerning this especially for version 2.1 can be found at \url{https://github.com/peiTeX/qrbill/issues/3}.
%
-% Additionally the Currency has been initialized to use \enquote{CHF}. This also can be overwritten. Currently the Swiss standards only allow the values \code{CHF} or \code{EUR}.
+% Additionally the Currency has been initialized to use \enquote{CHF}. This also can be overwritten. Currently the Swiss standards only allow the values \latexinline{CHF} or \latexinline{EUR}.
% \subsection{Address data}
-% The Swiss payment standards for QR-bills require the following data for the address of creditor (Prefix \code{CR-}) and debtor (Prefix \code{UD-}):
+% The Swiss payment standards for QR-bills require the following data for the address of creditor (Prefix \latexinline{CR-}) and debtor (Prefix \latexinline{UD-}):
% \begin{center}
% \begin{tabular}{@{}>{\ttfamily}l>{\centering}p{.25\linewidth}>{\centering\arraybackslash}p{.25\linewidth}@{}}
% \toprule
@@ -348,7 +362,7 @@
% Country& \multicolumn{2}{c}{Country Code}\\\bottomrule
% \end{tabular}
% \end{center}
-% To set an address of type \enquote{K} one can use they option key \code{debtor} or \code{creditor}. Type \enquote{S} can be achieved using the starred variant (\code{debtor*}/\code{creditor*}).
+% To set an address of type \enquote{K} one can use they option key \latexinline{debtor} or \latexinline{creditor}. Type \enquote{S} can be achieved using the starred variant (\latexinline{debtor*}/\latexinline{creditor*}).
%
% \begin{minipage}{.5\linewidth}
% \begin{doccode}
@@ -390,7 +404,7 @@
% /31/180508/32/7.7/40/2:10;0:30
% \end{doccode}
% \subsection{AV-Parameters}
-% The QRcode can use 2 AV Parameters. They have to carry the Prefix of \enquote{Name AV1:}/\enquote{Name AV2:}. This will be automatically added if the keys \code{AV1}/\code{AV2} are used instead of \code{AV1-Parameters}/\code{AV2-Parameters}.
+% The QRcode can use 2 AV Parameters. They have to carry the Prefix of \enquote{Name AV1:}/\enquote{Name AV2:}. This will be automatically added if the keys \latexinline{AV1}/\latexinline{AV2} are used instead of \latexinline{AV1-Parameters}/\latexinline{AV2-Parameters}.
%
% \subsection{Remaining data elements}
% The remaining data elements should be set directly.
@@ -427,11 +441,40 @@
% \ExplSyntaxOn
% \prop_map_inline:Nn \g__qrbill_billing_info_prop {#2~(#1)\\}
% \ExplSyntaxOff
+%
+% \section{Setup for EPC QR codes}
+% EPC QR codes can be used for SEPA credit transfer (SCT).
+% They do not include any data about the debtor or tax information.
+% Therefore they may only be used with the starred variant of \latexinline{\QRbill*} or the user has to provide additional data interfaces.
+% \subsection{Preconfigured data}
+% \changes{v1.04}{2022/07/01}{Add basic support for EPC QR codes}
+% The epc qrscheme provided by this package preset the following data:
+% \begin{doccode}
+% \SetupQrBill{
+% QRType=BCD,
+% Version=002,
+% CodingType=1,% UTF-8, 2 would be ISO
+% Trailer=SCT,
+% }
+% \end{doccode}
+% These fields are required to use these values for the current version of the EPC QR code.
+%
+% \subsection{Required data}
+% The data fields required by the EPC QRcode can be set directly. A full example for an easy EPC qrcode would be
+% \begin{doccode}
+% \QRbill*[
+% BIC=BYLADEM1GLS,
+% Account=DE68430609671013251700,
+% Name=peiTeX,
+% Amount=EUR123.42,
+% Message={Invoice 2022:1337, customer 1337}
+% ]
+% \end{doccode}
% \iffalse
% \section{Implementation}
% \begin{macrocode}
\RequirePackage{expl3}
-\ProvidesExplPackage{qrbill}{2021/05/10}{1.03}{
+\ProvidesExplPackage{qrbill}{2022/07/02}{1.04}{
Template for QR-bills based on the Swiss Payment Standards
}
\RequirePackage{iftex}
@@ -538,7 +581,12 @@
\ProcessKeysOptions{qrbill}
\newcommand*{\qrbillsetup}[1]{\keys_set:nn {qrbill}{#1}}
-\newcommand*{\qrbillsetdata}[1]{\keys_set:nn {qrbill/data}{#1}}
+\NewDocumentCommand{\qrbillsetdata}{sm}{
+ \IfBooleanT {#1}
+ \exp_args:Nnx
+ \keys_set:nn
+ {qrbill/data}{#2}
+}
\tl_if_empty:NTF \g__qrbill_font_tl {
\def\qrbillfont{\normalfont}
@@ -781,11 +829,17 @@
\endgroup
}
-\newcommand{\QRbill}[1][]{
- \begingroup
- \tl_if_empty:nF {#1} {\keys_set:nn {qrbill/data} {#1}}
- \qrbill_bill_create:
- \endgroup
+\NewDocumentCommand{\QRbill}{so}{
+ \begingroup
+ \IfNoValueF{#2} {\keys_set:nn {qrbill/data} {#2}}
+ \IfBooleanTF {#1}
+ {
+ \qrcode_setup_QRcode:
+ \qrbill_parse_QRcode:V \l_qrbill_data_str
+ }{
+ \qrbill_bill_create:
+ }
+ \endgroup
}
\ior_new:N \qrbill_ior
@@ -987,6 +1041,18 @@
}
}
+\cs_set:Nn \qrbill_parse_date:nnn {
+ #1-
+ \int_compare:nNnT {#2} < {10} {0}#2-
+ \int_compare:nNnT {#3} < {10} {0}#3
+}
+
+\cs_generate_variant:Nn \qrbill_parse_date:nnn {eee}
+
+\cs_set:Npn \QRbillParseDate #1#2#3 {
+ \qrbill_parse_date:eee {#1}{#2}{#3}
+}
+
\cs_new:Nn \qrbill_insert_AV_parameters:NNn {
\clist_map_inline:nn {#3} {
\tl_if_empty:cF {l_qrbill_##1_tl}
@@ -1003,9 +1069,6 @@
%</qrbill.sty>
% \section{The file swiss.qrbill-cfg.tex as a custom qrbill scheme}
%<*swiss.qrbill-cfg.tex>
-% \end{macrocode}
-% \fi
-% \begin{macrocode}
\qrbillsetup{
creditorprefix =CR-,
debtorprefix =UD-,
@@ -1060,6 +1123,14 @@
40=conditions
}
+\ExplSyntaxOn
+\cs_set:Nn \qrbill_parse_date:nnn {
+ \str_range:nnn {#1} {3} {4}
+ \int_compare:nNnT {#2} < {10} {0}#2
+ \int_compare:nNnT {#3} < {10} {0}#3
+}
+\ExplSyntaxOff
+
\SetupQrBill{
QRType=SPC,
Version=0200,
@@ -1068,11 +1139,46 @@
Currency=CHF,
ReferenceType=NON,
}
+
+\qrbillsetdata*{
+ invoicedate=\QRbillParseDate{\the\year}{\the\month}{\the\day},
+ vatdate=\QRbillParseDate{\the\year}{\the\month}{\the\day}
+}
% \end{macrocode}
% \iffalse
% \begin{macrocode}
%</swiss.qrbill-cfg.tex>
% \end{macrocode}
+% \section{The file epc.qrbill-cfg.tex as a custom qrbill scheme}
+% This scheme supports much less variables in contrast to the swiss scheme.
+% Therefore the \latexinline{\QRbill} macro has to be used as the starred variant or additional variables have to be provided by the user.
+%<*epc.qrbill-cfg.tex>
+% \end{macrocode}
+% \fi
+% \begin{macrocode}
+\SetQrScheme{
+ QRType,
+ Version,
+ CodingType,
+ Trailer,
+ BIC,
+ Name,
+ Account,
+ Amount,
+ DTA,
+ Reference,
+ Message,
+ Note
+}
+
+\SetupQrBill{
+ QRType=BCD,
+ Version=002,
+ CodingType=1,
+ Trailer=SCT,
+}
+%</epc.qrbill-cfg.tex>
+% \end{macrocode}
% \fi
%
% \PrintChanges
@@ -1122,9 +1228,9 @@
Amount=1337.42,
Message=Bestellung vom 27.06.2020,
invoicenum=100-4242,
- invoicedate=200701,%yymmdd
+% invoicedate=200701,%yymmdd, preset to todays values
vatdetails=0,% 0% VAT
- vatdate=200701,%yymmdd
+% invoicedate=200701,%yymmdd, preset to todays values
AV1=LX;F00BAR;2342,
]
@@ -1178,9 +1284,9 @@
Amount=1337.42,
Message=Bestellung vom 27.06.2020,
invoicenum=100-4242,
- invoicedate=200701,%yymmdd
+% invoicedate=200701,%yymmdd, preset to todays values
vatdetails=0,% 0% VAT
- vatdate=200701,%yymmdd
+% vatdate=200701,%yymmdd, preset to todays values
AV1=LX;F00BAR;2342,
}
diff --git a/macros/latex/contrib/qrbill/qrbill.ins b/macros/latex/contrib/qrbill/qrbill.ins
index 26eec8166b..a2c98b2ab6 100644
--- a/macros/latex/contrib/qrbill/qrbill.ins
+++ b/macros/latex/contrib/qrbill/qrbill.ins
@@ -1,11 +1,11 @@
\input l3docstrip
-\def\filedate{2021/05/10}
-\def\fileversion{1.03}
+\def\filedate{2022/07/02}
+\def\fileversion{1.04}
\preamble
-Copyright (C) 2020–2021 by Marei Peischl (peiTeX) <marei@peitex.de>
+Copyright (C) 2020–2022 by Marei Peischl (peiTeX) <marei@peitex.de>
This work is a collaboration of
Marei Peischl (peiTeX) and Alex Antener (foobar LLC).
@@ -26,8 +26,8 @@ The Current Maintainer of this work is
This work consists of the files
qrbill.dtx and qrbill.ins, qrbill-vocab.csv
and the derived files
-qrbill.sty, swiss.qrbill-cfg.tex, qrbill-letter-demo.tex,
- qrbill-standalone-demo.tex .
+qrbill.sty, swiss.qrbill-cfg.tex, epc.qrbill-cfg.tex,
+qrbill-letter-demo.tex, qrbill-standalone-demo.tex.
The development repository can be found at
https://github.com/peitex/qrbill
@@ -46,6 +46,9 @@ Please use the issue tracker for feedback!
\file{swiss.qrbill-cfg.tex}{
\from{qrbill.dtx}{swiss.qrbill-cfg.tex}
}
+ \file{epc.qrbill-cfg.tex}{
+ \from{qrbill.dtx}{epc.qrbill-cfg.tex}
+ }
\file{qrbill-letter-demo.tex}{
\from{qrbill.dtx}{qrbill-letter-demo.tex}
}
diff --git a/macros/latex/contrib/qrbill/qrbill.pdf b/macros/latex/contrib/qrbill/qrbill.pdf
index cc5a14617d..5f9d5acd0a 100644
--- a/macros/latex/contrib/qrbill/qrbill.pdf
+++ b/macros/latex/contrib/qrbill/qrbill.pdf
Binary files differ
diff --git a/macros/latex/contrib/saveenv/DEPENDS.txt b/macros/latex/contrib/saveenv/DEPENDS.txt
new file mode 100644
index 0000000000..dd4fa25323
--- /dev/null
+++ b/macros/latex/contrib/saveenv/DEPENDS.txt
@@ -0,0 +1 @@
+precattl
diff --git a/macros/latex/contrib/saveenv/README b/macros/latex/contrib/saveenv/README
new file mode 100644
index 0000000000..e7e5d6d0e0
--- /dev/null
+++ b/macros/latex/contrib/saveenv/README
@@ -0,0 +1,24 @@
+saveenv -- Save environment content verbatim
+Allow users to collect environment content verbatim.
+
+Released under the LaTeX Project Public License v1.3c or later
+See http://www.latex-project.org/lppl.txt
+
+Report bugs at https://github.com/user202729/TeXlib
+
+========
+
+Copyright 2022 user202729
+
+This work may be distributed and/or modified under the conditions of the
+LaTeX Project Public License (LPPL), either version 1.3c of this license or
+(at your option) any later version. The latest version of this license is in
+the file:
+
+ http://www.latex-project.org/lppl.txt
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is user202729.
+
+This work consists of the files saveenv.sty.
diff --git a/macros/latex/contrib/saveenv/saveenv.pdf b/macros/latex/contrib/saveenv/saveenv.pdf
new file mode 100644
index 0000000000..20bf11c9fd
--- /dev/null
+++ b/macros/latex/contrib/saveenv/saveenv.pdf
Binary files differ
diff --git a/macros/latex/contrib/saveenv/saveenv.sty b/macros/latex/contrib/saveenv/saveenv.sty
new file mode 100644
index 0000000000..454275c878
--- /dev/null
+++ b/macros/latex/contrib/saveenv/saveenv.sty
@@ -0,0 +1,147 @@
+% File: saveenv.sty
+% Copyright 2022 user202729
+%
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License (LPPL), either version 1.3c of this license or
+% (at your option) any later version. The latest version of this license is in
+% the file:
+%
+% http://www.latex-project.org/lppl.txt
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is user202729.
+
+\ProvidesExplPackage{saveenv}{2022/07/08}{0.0.0}{Save environment content verbatim}
+\RequirePackage{precattl}
+\msg_new:nnn {saveenv} {trailing-content-or-pretokenized}
+ {Trailing~content~found~on~line,~or~content~pretokenized!}
+
+\msg_new:nnn {saveenv} {trailing-content-end-line}
+ {Trailing~content~found~on~environment~last~line}
+
+\msg_new:nnn {saveenv} {currfile-package-not-loaded}
+ {currfile~package~is~needed~for~this~functionality}
+
+\precattl_exec:n{
+% args: char code, content, environment name
+\msg_new:nnn {saveenv} {leading-content-last-line}
+ {Leading~content~found~on~\cO\\end{#3}~line,~first~char~code~=~#1,~content~=~'#2'}
+}
+
+\makeatletter
+
+\seq_new:N \_senv_lines
+\ior_new:N \_senv_file
+
+\precattl_exec:n {
+
+\NewDocumentEnvironment {saveenvghost} {m} {
+ \edef \_senv_firstline {\the\inputlineno}
+} {
+
+ \cs_if_free:NT \currfilename {
+ \msg_error:nn {saveenv} {currfile-package-not-loaded}
+ }
+ \ior_open:Nn \_senv_file {\currfilename}
+
+ \prg_replicate:nn {\_senv_firstline} {
+ \ior_str_get:NN \_senv_file \_senv_line
+ }
+
+ \tl_build_gbegin:N #1
+
+ \prg_replicate:nn {\the\inputlineno-\_senv_firstline-2} {
+ \ior_str_get:NN \_senv_file \_senv_line
+ \exp_args:NNo \tl_build_gput_right:Nn #1 {\_senv_line \cO\^^J}
+ }
+
+ \ior_str_get:NN \_senv_file \_senv_line
+ \exp_args:NNo \tl_build_gput_right:Nn #1 {\_senv_line}
+
+ \ior_close:N \_senv_file
+
+ \tl_build_gend:N #1
+
+}
+
+
+% #1: target macro
+\NewDocumentEnvironment {saveenvkeeplast} {m} {
+ \begingroup
+ \edef \_senv_old_endlinechar {\the\endlinechar}
+ \cctab_select:N \c_other_cctab % note that this changes the value of \endlinechar as well
+ \int_compare:nNnTF {\_senv_old_endlinechar} < {0} {
+ \_senv_start_get_body:N #1
+ } {
+ \exp_last_unbraced:Nf \peek_meaning_remove:NTF { \char_generate:nn{\_senv_old_endlinechar}{12} } %12 is other
+ {
+ \_senv_start_get_body:N #1
+ }
+ {
+ \msg_error:nn {saveenv} {trailing-content-or-pretokenized}
+ }
+ }
+} {
+}
+
+% #1: target macro
+\cs_new_protected:Npn \_senv_start_get_body:N #1 {
+ \endlinechar=10~
+ \str_set:NV \_senv_env \@currenvir
+ \tl_replace_all:Nnn \_senv_env {~} {\cO\ }
+ \exp_args:NNVV \_senv_helper #1 \_senv_env \@currenvir
+}
+
+% #1: target macro
+% #2: value of \@currenvir but with all tokens catcode 12 (other)
+% #3: value of \@currenvir
+\def \_senv_helper #1 #2 #3 {
+ \cs_set_protected:cpn {[saveenv]~verbatim~body~scanner~for~#2} ##1 \cO{ \\end\{ } #2 \cO\} {
+ % ##1: the body
+ \peek_meaning_remove:NTF \cO\^^J {
+ \endgroup
+ \str_gset:Nn #1 {##1}
+ \end{#3}
+ } {
+ \msg_error:nn {saveenv} {trailing-content-end-line}
+ }
+ }
+
+ \use:c {[saveenv]~verbatim~body~scanner~for~#2}
+}
+
+% set variable #1 to have content of #2, but with last line dropped.
+% lines are separated by \^^J.
+
+\cs_new_protected:Npn \saveenv_set_drop_last:Nn #1 #2 {
+ \tl_set:Nn \_senv_body {#2}
+ \tl_replace_all:Nnn \_senv_body {~} {\cO\ } % keep spaces in seq_set_split (support older expl3 versions)
+ \seq_set_split:NnV \_senv_lines {\cO\^^J} \_senv_body
+ \seq_pop_right:NN \_senv_lines \_senv_lastline
+ \tl_map_inline:Nn \_senv_lastline { % debug check, ensure last line is empty
+ \int_case:nnF {`##1} {
+ {32} {} %space
+ {9} {} %tab
+ }
+ {
+ \msg_error:nnoVV {saveenv} {leading-content-last-line} {\number`##1} \_senv_lastline \@currenvir
+ }
+ }
+ \str_gset:Nx #1 {\seq_use:Nn \_senv_lines {\cO\^^J}}
+}
+
+\cs_generate_variant:Nn \saveenv_set_drop_last:Nn {NV}
+
+
+\NewDocumentEnvironment {saveenv} {m} {
+ \saveenvkeeplast \_senv_content
+} {
+ \endsaveenvkeeplast
+ \saveenv_set_drop_last:NV #1 \_senv_content
+}
+
+
+}
+
+\cs_generate_variant:Nn \msg_error:nnnnn {nnoVV}
diff --git a/macros/latex/contrib/saveenv/saveenv.tex b/macros/latex/contrib/saveenv/saveenv.tex
new file mode 100644
index 0000000000..c6d4ba87bb
--- /dev/null
+++ b/macros/latex/contrib/saveenv/saveenv.tex
@@ -0,0 +1,189 @@
+%%! TEX program = lualatex
+\ProvidesFile{saveenv.tex} [2022/07/08 v0.0.0 ]
+\documentclass{l3doc}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\fvset{gobble=0,tabsize=4,frame=single,numbers=left,numbersep=3pt}
+\usepackage{hyperref}
+\usepackage{csquotes}
+
+%\MakeOuterQuote{"}
+\begin{document}
+\GetFileInfo{\jobname.tex}
+\DoNotIndex{\begin,\end,\detokenize,\ExplSyntaxOn}
+
+\iffalse\ExplSyntaxOff\fi % (fix some syntax highlighting issue)
+
+\title{\textsf{saveenv} --- Save environment content verbatim
+\thanks{This file describes version \fileversion, last revised \filedate.}
+}
+\author{user202729%
+%\thanks{E-mail: (not set)}
+}
+\date{Released \filedate}
+
+\maketitle
+
+
+\let\backtick=`
+\MakeShortVerb{`} % something wrong with \DefineShortVerb
+
+\begin{abstract}
+Allow users to collect environment content verbatim.
+\end{abstract}
+
+\section{Motivation}
+
+This package provides tools to create your own verbatim environments, and works in all values of \cs{endlinechar}.
+
+\section{Comparison to existing similar packages}
+
+\begin{itemize}
+ \item \pkg{scontents} package is similar; however it does not allow programmer to programmatically retrieve the macro content, only do a limited number of actions with them (execute, typeset as verbatim code, etc.).
+ \item \pkg{fancyvrb} and \pkg{verbatimcopy} provides some internal macro for defining similar environments, however they're internal.
+ \item \pkg{filecontentsdef} and \pkg{newverbs} provides very similar facilities (\env{filecontentsdefmacro} environment and \tn{Collectverbenv} command respectively); however it requires \verb+\endlinechar=13+ and does not support \cs{ExplSyntaxOn} environment.
+ \item \pkg{verbatim} provides facilities to define custom verbatim environment that processes the content line-by-line, however the interface is more complicated.
+
+ For comparison, the following code
+
+\begin{verbatim}
+\ExplSyntaxOn
+\makeatletter
+\cs_generate_variant:Nn \tl_build_gput_right:Nn {No}
+\NewDocumentEnvironment{}{}{
+ \@bsphack
+
+ \endlinechar=`\^^M ~ \let\do\@makeother \dospecials
+ \@makeother \^^I
+ %\cctab_select:N \c_other_cctab
+ % the above cannot be used, as \verbatim@ relies on
+ % the environment name having letter catcode
+
+ \catcode `\^^M \active
+
+ \tl_build_gbegin:N \__all_data
+ \def\verbatim@processline{
+ \tl_build_gput_right:No \__all_data{\the\verbatim@line ^^J}
+ }
+ \verbatim@
+}{
+ \tl_build_gend:N \__all_data
+ \str_gset:NV \__all_data \__all_data
+
+ % can do something else with \__all_data here
+
+ \@esphack
+}
+\makeatother
+\ExplSyntaxOff
+\end{verbatim}
+
+defines an environment that saves the data similar to \env{saveenv} environment described below (with the overhead of |\tl_build_*| functions),
+but inside \cs{ExplSyntaxOn} environment it generates a spurious space at the beginning of the string.
+\end{itemize}
+
+
+
+\section{Main environment}
+
+\DescribeEnv{saveenv}
+ Environment that saves its body.
+
+ For example, the following code
+
+\begin{verbatim}
+\begin{saveenv}{\data}
+123
+456
+\end{saveenv}
+\end{verbatim}
+
+will save the string \texttt{123\meta{newline}456} globally into \cs{data}.
+
+The braces around \verb+{\data}+ is optional; however, in the unlikely case if \cs{endlinechar} has the \enquote{letter} catcode, it might be absorbed and gives unexpected result.
+
+A newline is represented as a token with charcode 10 (|^^J|) and catcode other.
+
+\textbf{Note} that this is unusual, for comparison \pkg{filecontentsdef} stores it as an active |^^M|.
+
+In the current implementation, it can be used in functions such as \cs{iow_now:Nn} and newline characters will appear as newline.
+(the number 10 is hard coded in the implementation of |\iow_now:Nn|,
+nevertheless I'm not sure if this behavior is guaranteed. Manually replacing them with |\iow_newline:| tokens and |x|-expand the result
+would be guaranteed to work)
+
+The assignment is global, and done before the macro \cs{endsaveenv} is executed.
+
+The data is represented as an \pkg{expl3}-string, that is, a sequence of tokens with catcode 12 (for non-space characters) or 10 (for space character).
+
+In other words, the token list is equal to its own \cs{detokenize}.
+
+\DescribeEnv{saveenvghost}
+Similar to above; however the content inside is still typesetted/executed, and the Sync\TeX\ information is preserved.
+
+Note that this environment is implemented by reading the whole file from the beginning, therefore there might be some performance hit for large files and multiple usages of the environment. Use sparingly.
+
+\DescribeEnv{saveenvkeeplast}
+Similar to above; however the final newline and the space characters before \texttt{\cs{end}\{\meta{environment name}\}} are preserved.
+
+For example, the example above with \texttt{saveenv} replaced with \texttt{saveenvkeeplast}
+will save the string \texttt{123\meta{newline}456\meta{newline}} into \cs{data} instead.
+
+\section{Extending the environments}
+
+All of the environments are extensible.
+
+Follow the instruction in \url{https://tex.stackexchange.com/q/14683/250119} to define an environment based on an existing one.
+
+For example, the following definition
+
+\begin{verbatim}
+\ExplSyntaxOn
+\NewDocumentEnvironment{custom}{}{
+ \saveenv \data
+}{
+ \endsaveenv
+ \tl_show:N \data
+}
+\end{verbatim}
+will define an environment \env{custom} that prints out the content inside the environment using |\tl_show:N|.
+
+\section{Limitation}
+
+\begin{itemize}
+ \item This package does not process the content line-by-line. Therefore:
+ \begin{itemize}
+ \item The memory consumption might be larger than approaches that process the content line-by-line, in case you only need to do something with the line.
+
+ Nevertheless, in modern computers, the overhead is negligible.
+ \item In case it's desired to typeset the content afterwards, it's difficult to preserve the Sync\TeX\ data.
+ \end{itemize}
+
+ \item Currently nested environments with the same name are not supported (unlike \pkg{scontents} package).
+
+ \item Note that there must be nothing after the \texttt{\cs{begin}\{\meta{environment name}\}} or the \texttt{\cs{end}\{\meta{environment name}\}} line.
+
+ \item Note that \texttt{\cs{end}\{\meta{environment name}\}} must not be in the middle of any line.
+
+ \item The \cs{endlinechar} must not be tokenized in advance (or if it is, its catcode must be 12/other).
+ This might happen when for example your environment looks ahead for optional argument.
+ See \url{https://tex.stackexchange.com/q/649331/250119} for an example and one way how to fix it.
+
+ Alternatively, you can
+ \begin{itemize}
+ \item manually remove the end line token,
+ \item set \verb+\endlinechar=-1\relax+ before calling \cs{saveenv}
+ \item (optional) reset the value of \cs{endlinechar} afterwards.
+
+ \end{itemize}
+\end{itemize}
+
+
+
+\StopEventually{%
+ \PrintChanges
+ \PrintIndex
+}
+\Finale
+\end{document}
+
diff --git a/macros/latex/contrib/scrlayer-fancyhdr/MANIFEST.md b/macros/latex/contrib/scrlayer-fancyhdr/MANIFEST.md
new file mode 100644
index 0000000000..374106fc93
--- /dev/null
+++ b/macros/latex/contrib/scrlayer-fancyhdr/MANIFEST.md
@@ -0,0 +1,101 @@
+# Manifest for scrlayer-fancyhdr
+
+This file is a listing of all files considered to be part of this package.
+It is automatically generated with `l3build manifest`.
+
+
+## Repository manifest
+
+The following groups list the files included in the development repository of the package.
+Files listed with a ‘†’ marker are included in the TDS but not CTAN files, and files listed
+with ‘‡’ are included in both.
+
+### Source files
+
+These are source files for a number of purposes, including the `unpack` process which
+generates the installation files of the package. Additional files included here will also
+be installed for processing such as testing.
+
+* scrlayer-fancyhdr.dtx ‡
+
+### Typeset documentation source files
+
+These files are typeset using LaTeX to produce the PDF documentation for the package.
+
+* scrlayer-fancyhdr.dtx ‡
+
+### Text files
+
+Plain text files included as documentation or metadata.
+
+* LICENSE.md ‡
+* MANIFEST.md
+* README.md ‡
+
+### Derived files
+
+The files created by ‘unpacking’ the package sources. This typically includes
+`.sty` and `.cls` files created from DocStrip `.dtx` files.
+
+* scrlayer-fancyhdr.sty †
+
+### Typeset documents
+
+The output files (PDF, essentially) from typesetting the various source, demo,
+etc., package files.
+
+* scrlayer-fancyhdr.pdf ‡
+
+### Test files
+
+These files form the test suite for the package. `.lvt` or `.lte` files are the individual
+unit tests, and `.tlg` are the stored output for ensuring changes to the package produce
+the same output. These output files are sometimes shared and sometime specific for
+different engines (pdfTeX, XeTeX, LuaTeX, etc.).
+
+* alias.lvt
+* basic-function.lvt
+* option-to-fancyhdr.lvt
+* option-to-scrlayer.lvt
+* alias.tlg
+* basic-function.tlg
+* option-to-fancyhdr.tlg
+* option-to-scrlayer.tlg
+
+
+## TDS manifest
+
+The following groups list the files included in the TeX Directory Structure used to install
+the package into a TeX distribution.
+
+### Source files (TDS)
+
+All files included in the `scrlayer-fancyhdr/source` directory.
+
+* scrlayer-fancyhdr.dtx
+
+### TeX files (TDS)
+
+All files included in the `scrlayer-fancyhdr/tex` directory.
+
+* scrlayer-fancyhdr.sty
+
+### Doc files (TDS)
+
+All files included in the `scrlayer-fancyhdr/doc` directory.
+
+* LICENSE.md
+* README.md
+* scrlayer-fancyhdr.pdf
+
+
+## CTAN manifest
+
+The following group lists the files included in the CTAN package.
+
+### CTAN files
+
+* LICENSE.md
+* README.md
+* scrlayer-fancyhdr.dtx
+* scrlayer-fancyhdr.pdf
diff --git a/macros/latex/contrib/scrlayer-fancyhdr/README.md b/macros/latex/contrib/scrlayer-fancyhdr/README.md
index 909e88aaab..b1776008e3 100644
--- a/macros/latex/contrib/scrlayer-fancyhdr/README.md
+++ b/macros/latex/contrib/scrlayer-fancyhdr/README.md
@@ -3,8 +3,8 @@
------------------------------------------------------------------------------
LaTeX package `scrlayer-fancyhdr`
-Copyright (c) 2008—2021 Markus Kohm
-Release: 2021-03-30 v0.2.1
+Copyright (c) 2008—2022 Markus Kohm
+Release: 2022-07-08 v0.2.2
License: LPPL 1.3c (see LICENSE.md)
CTAN Location: https://ctan.org/pkg/scrlayer-fancyhdr
diff --git a/macros/latex/contrib/scrlayer-fancyhdr/scrlayer-fancyhdr.dtx b/macros/latex/contrib/scrlayer-fancyhdr/scrlayer-fancyhdr.dtx
index 406b32e1d2..972925cd1c 100644
--- a/macros/latex/contrib/scrlayer-fancyhdr/scrlayer-fancyhdr.dtx
+++ b/macros/latex/contrib/scrlayer-fancyhdr/scrlayer-fancyhdr.dtx
@@ -1,7 +1,7 @@
% \iffalse^^A meta-comment
% ======================================================================
% scrlayer-fancyhdr.dtx
-% Copyright (c) Markus Kohm, 2021
+% Copyright (c) Markus Kohm, 2021–2022
%
% This file is part of the LaTeX2e package `scrlayer-fancyhdr'.
%
@@ -46,12 +46,12 @@
%<body>%%% docstrip run: body
%<*dtx>
\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
-\ProvidesFile{scrlayer-fancyhdr.dtx}[2021-03-30 v0.2.1
+\ProvidesFile{scrlayer-fancyhdr.dtx}[2022-07-08 v0.2.2
source of package scrlayer-scrpage]
%</dtx>
%<*package>
%<identify>\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-%<identify>\ProvidesPackage{scrlayer-fancyhdr}[2021-03-30 v0.2.1
+%<identify>\ProvidesPackage{scrlayer-fancyhdr}[2022-07-08 v0.2.2
%<identify> combining fancyhdr with KOMA-Script's scrlayer]
%</package>
%<*dtx>
@@ -69,53 +69,45 @@
\let\endbatchfile\relax
\fi
\endbatchfile
-\documentclass{scrdoc}
-\RedeclareSectionCommand[tocbeforeskip=0pt]{section}
-\RedeclareSectionCommand[tocbeforeskip=.75\baselineskip plus .25\baselineskip]{part}
-\setkomafont{sectionentry}{}
-\KOMAoption{toc}{flat}
-\addtolength{\textwidth}{-1em}
-\addtolength{\marginparwidth}{2em}
-\addtolength{\oddsidemargin}{2em}
+\documentclass{koma-script-source-doc}% KOMA-Script related packages use this.
\usepackage[main=english,ngerman]{babel}
\usepackage{csquotes}
\usepackage{biblatex}
\usepackage{listings}
\usepackage{scrhack}
-\usepackage{xpatch}
\begin{filecontents}[force]{\jobname.bib}
@Misc{ package:fancyhdr,
language= {english},
author = {Piet van Oostrum},
- title = {{\Package{fancyhdr}}\,---\,Extensive control of page headers and
+ title = {{\pkg{fancyhdr}}\,---\,Extensive control of page headers and
footers in {\LaTeXe}},
- date = {2021-01-28},
- edition = {4.0.1},
+ date = {2022-05-18},
+ edition = {4.0.3},
url = {https://www.ctan.org/pkg/fancyhdr},
- urldate = {2021-03-30}
+ urldate = {2022-07-08}
}
@Misc{ package:koma-script,
language= {english},
author = {Markus Kohm},
- title = {{\Package{koma-script}}\,---\,A bundle of versatile classes and
+ title = {{\pkg{koma-script}}\,---\,A bundle of versatile classes and
packages},
- date = {2021-03-17},
- edition = {3.33},
+ date = {2022-07-04},
+ edition = {3.37},
url = {https://www.ctan.org/pkg/koma-script},
- urldate = {2021-03-30}
+ urldate = {2022-07-08}
}
@Misc{ package:scrlayer,
language= {english},
author = {Markus Kohm},
- title = {{\Package{scrlayer}}\,---\,Manage text `layers' within
+ title = {{\pkg{scrlayer}}\,---\,Manage text `layers' within
{\KOMAScript}},
- date = {2021-03-17},
- edition = {3.33},
+ date = {2022-07-04},
+ edition = {3.37},
url = {https://www.ctan.org/pkg/scrlayer},
- urldate = {2021-03-30}
+ urldate = {2022-07-08}
}
\end{filecontents}
@@ -133,43 +125,14 @@
\date{\filedate}
\author{Markus Kohm}
-\newenvironment{Explain}{\par}{\par}
-\newcommand*{\length}{}
-\let\length\Length
-\let\endlength\endLength
-\let\Macro\cs
-\let\Length\Macro
-\let\Package\textsf
-\let\Class\Package
-\let\File\texttt
-\let\Option\texttt
-\newcommand*{\KOption}[1]{\Option{#1}\texttt{=}}
-\newcommand*{\OptionValue}[2]{\Option{#1}\texttt{=}\PValue{#2}}
-\let\Counter\texttt
-\let\Environment\texttt
-\let\ShowOutput\quote
-\let\endShowOutput\endquote
-\let\Pagestyle\texttt
-\newcommand*{\Parameter}[1]{\texttt{\marg{#1}}\linebreak[1]}
-\newcommand*{\OParameter}[1]{\texttt{\oarg{#1}}\linebreak[1]}
-\newcommand*{\MParameter}[2]{\texttt{(\meta{#1},\meta{#2})}\linebreak[1]}
-\providecommand\PParameter[1]{\mbox{\texttt{\{#1\}}}\linebreak[1]}
-\let\PName\meta
-\let\PValue\texttt
-\providecommand*{\autoref}[1]{\expandafter\AUTOREF#1:}
-\providecommand*{\AUTOREF}{}
-\makeatletter
-\def\AUTOREF#1:#2:{%
- \edef\@tempa{#1}%
- \edef\@tempb{tab}\ifx\@tempa\@tempb table~\fi
- \edef\@tempb{sec}\ifx\@tempa\@tempb section~\fi
- \ref{#1:#2}%
-}
-\makeatother
-\providecommand*{\IndexCmd}[2][]{}
-\providecommand*{\textnote}[2][]{}
+\NewDocElement[%
+ macrolike = false,
+ toplevel = true,
+ idxtype = \textit{internal},
+ idxgroup = Page styles (internal),
+ printtype = \textit{internal}
+]{iPageStyle}{ipgstyle}
-\lstnewenvironment{lstcode}{\lstset{language=[LaTeX]TeX}}{}
\renewcaptionname{english}{\partname}{Part}
\renewcaptionname{english}{\contentsname}{Contents\,/\,Inhalt}%
@@ -189,162 +152,162 @@
% \fi^^A meta-comment
%
% \changes{v0.0}{2018/09/01}{start of interface}
+% \changes{v0.0}{2018/09/05}{some user documentation}
% \changes{v0.2}{2021/02/18}{package is no longer part of \KOMAScript}
% \changes{v0.2.1}{2021/03/30}{improved user manual}
% \changes{v0.2.1}{2021/03/30}{German user manual}
+% \changes{v0.2.2}{2022/07/08}{using class \cls*{koma-script-source-doc}}
%
-% \changes{v0.0}{2018/09/05}{some user documentation}
% \part{English User Manual}
% \section{The Purpose of this Package}
% \label{sec:purpose}
% This package has been made to give users a chance to combine the features of
-% Piet van Oostrum's \mbox{\Package{fancyhdr}} \autocite{package:fancyhdr}
-% with the features of \mbox{\Package{scrlayer}}
-% \autocite{package:scrlayer}. In other words: It has been made to combine the
-% page layers of \mbox{\Package{scrlayer}} with the page styles of
-% \mbox{\Package{fancyhdr}}.
-%
-% In this combination compatibility with \mbox{\Package{fancyhdr}} is the
-% first aim! Usability and the freedom provided by \mbox{\Package{scrlayer}}
+% Piet van Oostrum's \pkg{fancyhdr} \autocite{package:fancyhdr} with the
+% features of \pkg{scrlayer} \autocite{package:scrlayer}. In other words: It
+% has been made to combine the page layers of \pkg{scrlayer} with the page
+% styles of \pkg{fancyhdr}.
+%
+% In this combination compatibility with \pkg{fancyhdr} is the
+% first aim! Usability and the freedom provided by \pkg{scrlayer}
% is only the second one. Compatibility with other packages or classes of
% \KOMAScript{} \cite{package:koma-script} is not a primary aim. Perhaps it
% will become an optional feature in future. Abolishing any real or virtual
-% limitations of \mbox{\Package{fancyhdr}} other than make it possible to use
+% limitations of \pkg{fancyhdr} other than make it possible to use
% layers is not an aim and will not be an aim in future.
%
% If you need a better combination of page styles and layers, you should
-% either use the low level interface of \mbox{\Package{scrlayer}} to define
+% either use the low level interface of \pkg{scrlayer} to define
% your page styles or\,---\,and this is the recommendation of the
-% author\,---\,use \Package{scrlayer-scrpage} instead of
-% \Package{scrlayer-fancyhdr} or \mbox{\Package{fancyhdr}}. If you need more
+% author\,---\,use \pkg{scrlayer-scrpage} instead of
+% \pkg*{scrlayer-fancyhdr} or \pkg{fancyhdr}. If you need more
% compatibility with other parts of \KOMAScript, i.\,e.\@ with the
-% \KOMAScript{} classes, you should use \Package{scrlayer-scrpage} instead of
-% \Package{scrlayer-fancyhdr} or \mbox{\Package{fancyhdr}}.
+% \KOMAScript{} classes, you should use \pkg{scrlayer-scrpage} instead of
+% \pkg*{scrlayer-fancyhdr} or \pkg{fancyhdr}.
%
%
% \section{How it works}
% \label{sec:howitworks}
%
-% To combine \mbox{\Package{fancyhdr}} and \mbox{\Package{scrlayer}},
-% \Package{scrlayer-scrpage} loads both packages. After loading
-% \mbox{\Package{fancyhdr}} it redefines page style \Pagestyle{@fancy} (up to
-% \mbox{\Package{fancyhdr}} version 3.10) resp. \Pagestyle{f@nch@fancycore}
-% (from \mbox{\Package{fancyhdr}} version 4) to make it a layer page style of
-% \mbox{\Package{scrlayer}} using the newly defined layers
+% To combine \pkg{fancyhdr} and \pkg{scrlayer},
+% \pkg{scrlayer-scrpage} loads both packages. After loading
+% \pkg{fancyhdr} it redefines page style \pstyle{@fancy} (up to
+% \pkg{fancyhdr} version 3.10) resp. \pstyle{f@nch@fancycore}
+% (from \pkg{fancyhdr} version 4) to make it a layer page style of
+% \pkg{scrlayer} using the newly defined layers
% \texttt{fancy.head.even}, \texttt{fancy.head.odd}, \texttt{fancy.foot.even}
% and \texttt{fancy.foot.odd}. The \texttt{\dots head\dots} layers are
-% background layers like the page head of \mbox{\Package{fancyhdr}}'s page
+% background layers like the page head of \pkg{fancyhdr}'s page
% styles (or other usual page styles). The \texttt{\dots foot\dots} layers are
-% foreground layers like the page footer of \mbox{\Package{fancyhdr}}'s page
+% foreground layers like the page footer of \pkg{fancyhdr}'s page
% styles (or other usual page styles). The \texttt{\dots even} layers are
% restricted to even pages, that means left side pages in two-sided
% documents. The \texttt{\dots odd} layers are restricted to odd pages, that
% means right side pages in two-sided documents or all pages in single-sided
% documents.
%
-% \DescribeMacro\ps@@fancy
-% \DescribeMacro\ps@f@nch@fancycore
-% \DescribeMacro\ps@fancyplain
-% \DescribeMacro\ps@plain@fancy
-% Up to \mbox{\Package{fancyhdr}} verison 3.10 page style \Pagestyle{@fancy}
+% \DescribeiPageStyle{@fancy}
+% \DescribeiPageStyle{f@nch@fancycore}
+% \DescribePageStyle{fancyplain}
+% \DescribeiPageStyle{plain@fancy}
+% Up to \pkg{fancyhdr} verison 3.10 page style \pstyle{@fancy}
% was an internal page style, users should not select direclty. From version 4
-% page style \Pagestyle{f@nch@fancycore} is used internally by package
-% \mbox{\Package{fancyhdr}}. In both cases, the internal page style is used
-% for the user page style \Pagestyle{fancy}. The user page style
-% \Pagestyle{fancy} is also used for \Package{fancyheadings}'s deprecated page
-% style \Pagestyle{fancyplain}, that also redefines page style
-% \Pagestyle{plain} to be \mbox{\Package{fancyhdr}}'s internal page style
-% \Pagestyle{plain@fancy}, that also uses \Pagestyle{fancy} but with
-% \Macro{if@fancyplain} set to \Macro{iftrue}. There is an additional
-% deprecated command \Macro{fancyplain}\Parameter{plain code}\Parameter{fancy
-% code}, too. The command uses the \meta{plain code} if \Macro{if@fancyplain}
-% is \Macro{iftrue} and \meta{fancy code} if \Macro{if@fancyplain} is
-% \Macro{iffalse}. It can be used inside the definition of the page style
-% elements to distinguish settings of \Pagestyle{fancy} and \Pagestyle{plain}
+% page style \pstyle{f@nch@fancycore} is used internally by package
+% \pkg{fancyhdr}. In both cases, the internal page style is used
+% for the user page style \pstyle{fancy}. The user page style
+% \pstyle{fancy} is also used for \pkg{fancyheadings}'s deprecated page
+% style \pstyle{fancyplain}, that also redefines page style
+% \pstyle{plain} to be \pkg{fancyhdr}'s internal page style
+% \pstyle{plain@fancy}, that also uses \pstyle{fancy} but with
+% \cs{if@fancyplain} set to \cs{iftrue}. There is an additional
+% deprecated command \cs{fancyplain}\marg{plain code}\marg{fancy
+% code}, too. The command uses the \meta{plain code} if \cs{if@fancyplain}
+% is \cs{iftrue} and \meta{fancy code} if \cs{if@fancyplain} is
+% \cs{iffalse}. It can be used inside the definition of the page style
+% elements to distinguish settings of \pstyle{fancy} and \pstyle{plain}
% pages.
%
-% Page styles defined using \mbox{\Package{fancyhdr}}'s command
-% \Macro{fancypagestyle} also always use page style \Pagestyle{fancy} and so
-% the internal basic page style \Pagestyle{@fancy} (up to
-% \mbox{\Package{fancyhdr}} version 3.10) resp. \Pagestyle{f@nch@fancycore}
-% (from \mbox{\Package{fancyhdr}} version 4).
+% Page styles defined using \pkg{fancyhdr}'s command
+% \cs{fancypagestyle} also always use page style \pstyle{fancy} and so
+% the internal basic page style \pstyle{@fancy} (up to
+% \pkg{fancyhdr} version 3.10) resp. \pstyle{f@nch@fancycore}
+% (from \pkg{fancyhdr} version 4).
%
% As a result of the two notes above, every page style of
-% \mbox{\Package{fancyhdr}} always uses the same internal basic page style
-% \Pagestyle{@fancy} (up to \mbox{\Package{fancyhdr}} version 3.10)
-% resp. \Pagestyle{f@nch@fancycore} (from \mbox{\Package{fancyhdr}} version
-% 4). As a result of redefining page style \Pagestyle{@fancy} (up to
-% \mbox{\Package{fancyhdr}} version 3.10) resp. \Pagestyle{f@nch@fancycore}
-% (from \mbox{\Package{fancyhdr}} version 4) to be a layer page style, users
-% can add layers to or remove layers from all \mbox{\Package{fancyhdr}} page
+% \pkg{fancyhdr} always uses the same internal basic page style
+% \pstyle{@fancy} (up to \pkg{fancyhdr} version 3.10)
+% resp. \pstyle{f@nch@fancycore} (from \pkg{fancyhdr} version
+% 4). As a result of redefining page style \pstyle{@fancy} (up to
+% \pkg{fancyhdr} version 3.10) resp. \pstyle{f@nch@fancycore}
+% (from \pkg{fancyhdr} version 4) to be a layer page style, users
+% can add layers to or remove layers from all \pkg{fancyhdr} page
% styles by adding layers to or remove layers from page style
-% \Pagestyle{@fancy} (up to \mbox{\Package{fancyhdr}} version 3.10)
-% resp. \Pagestyle{f@nch@fancycore} (from \mbox{\Package{fancyhdr}} version
+% \pstyle{@fancy} (up to \pkg{fancyhdr} version 3.10)
+% resp. \pstyle{f@nch@fancycore} (from \pkg{fancyhdr} version
% 4). You cannot add layers to or remove layers from
-% \mbox{\Package{fancyhdr}}'s single page styles \Pagestyle{fancy},
-% \Pagestyle{fancyplain}, \Pagestyle{plain@fancy} or the page styles defined
-% using \Macro{fancypagestyle} directly. So using layers is a all or nothing
-% feature with \Package{scrlayer-scrpage}. However, you can use the second
-% argument of \Macro{fancypagestyle} to add or remove layers whenever one of
-% the \mbox{\Package{fancyhdr}} page styles is activated. So this is a move
-% from the \mbox{\Package{scrlayer}} interface of adding or removing layers to
-% single page styles to the \mbox{\Package{fancyhdr}} interface of defining
-% modifications of page style \Pagestyle{fancy}.
-%
-% Another such movement from a \mbox{\Package{scrlayer}} user interface to a
-% \mbox{\Package{fancyhdr}} user interface is the decision whether or not
-% automatic running heads are used. \mbox{\Package{scrlayer}} provides the
-% options \Option{automark} and \Option{manualmark} and commands
-% \Macro{automark} and \Macro{manualmark} to do this decision and also to
-% configure commands like \Macro{partmark}, \Macro{chaptermark},
-% \Macro{sectionmark} etc. With \Package{scrlayer-fancyhdr} already using page
-% style \Pagestyle{@fancy} (up to \mbox{\Package{fancyhdr}} version 3.10)
-% resp. \Pagestyle{f@nch@fancycore} (from \mbox{\Package{fancyhdr}} version 4)
+% \pkg{fancyhdr}'s single page styles \pstyle{fancy},
+% \pstyle{fancyplain}, \pstyle{plain@fancy} or the page styles defined
+% using \cs{fancypagestyle} directly. So using layers is a all or nothing
+% feature with \pkg{scrlayer-scrpage}. However, you can use the second
+% argument of \cs{fancypagestyle} to add or remove layers whenever one of
+% the \pkg{fancyhdr} page styles is activated. So this is a move
+% from the \pkg{scrlayer} interface of adding or removing layers to
+% single page styles to the \pkg{fancyhdr} interface of defining
+% modifications of page style \pstyle{fancy}.
+%
+% Another such movement from a \pkg{scrlayer} user interface to a
+% \pkg{fancyhdr} user interface is the decision whether or not
+% automatic running heads are used. \pkg{scrlayer} provides the
+% options \opt{automark} and \opt{manualmark} and commands
+% \cs{automark} and \cs{manualmark} to do this decision and also to
+% configure commands like \cs{partmark}, \cs{chaptermark},
+% \cs{sectionmark} etc. With \pkg*{scrlayer-fancyhdr} already using page
+% style \pstyle{@fancy} (up to \pkg{fancyhdr} version 3.10)
+% resp. \pstyle{f@nch@fancycore} (from \pkg{fancyhdr} version 4)
% does switch to automatic running heads. The first activation of page style
-% \Pagestyle{fancy} still redefines \Macro{chaptermark} and
-% \Macro{sectionmark}, if a class with \Macro{chapter} is used, or
-% \Macro{sectionmark} and \Macro{subsectionmark}, if a class without
-% \Macro{chapter} is used. However, you still can use \Macro{manualmark} and
-% \Macro{automark} after switching to a \mbox{\Package{fancyhdr}} page style
+% \pstyle{fancy} still redefines \cs{chaptermark} and
+% \cs{sectionmark}, if a class with \cs{chapter} is used, or
+% \cs{sectionmark} and \cs{subsectionmark}, if a class without
+% \cs{chapter} is used. However, you still can use \cs{manualmark} and
+% \cs{automark} after switching to a \pkg{fancyhdr} page style
% to configure the running heads. So this movement is only partial.
%
-% \DescribeMacro\ps@headings
-% \DescribeMacro\ps@myheadings
-% \DescribeMacro\ps@plain
-% Note: Currently, neither \mbox{\Package{scrlayer}} nor
-% \mbox{\Package{fancyhdr}} nor \Package{scrlayer-fancyhdr} do redefine page
-% styles \Pagestyle{headings} or \Pagestyle{myheadings} by default. And
-% neither \mbox{\Package{scrlayer}} nor \mbox{\Package{fancyhdr}} nor
-% \Package{scrlayer-fancyhdr} do redefine page style \Pagestyle{plain} unless
-% you are activating the deprecated \mbox{\Package{fancyhdr}} page style
-% \Pagestyle{fancyplain}. So if you like to use layers on \Pagestyle{plain}
+% \DescribePageStyle{headings}
+% \DescribePageStyle{myheadings}
+% \DescribePageStyle{plain}
+% Note: Currently, neither \pkg{scrlayer} nor
+% \pkg{fancyhdr} nor \pkg*{scrlayer-fancyhdr} do redefine page
+% styles \pstyle{headings} or \pstyle{myheadings} by default. And
+% neither \pkg{scrlayer} nor \pkg{fancyhdr} nor
+% \pkg*{scrlayer-fancyhdr} do redefine page style \pstyle{plain} unless
+% you are activating the deprecated \pkg{fancyhdr} page style
+% \pstyle{fancyplain}. So if you like to use layers on \pstyle{plain}
% pages, i.\,e. usually the first page of a chapter or part or the page with a
-% title head, you have to either use \mbox{\Package{fancyhdr}}'s deprecated
-% page style \Pagestyle{fancyplain} or redefine page style \Pagestyle{plain}
-% either using \Macro{fancypagestyle} as documented in the
-% \mbox{\Package{fancyhdr}} manual or using \Macro{DeclarePageStyleByLayers},
+% title head, you have to either use \pkg{fancyhdr}'s deprecated
+% page style \pstyle{fancyplain} or redefine page style \pstyle{plain}
+% either using \cs{fancypagestyle} as documented in the
+% \pkg{fancyhdr} manual or using \cs{DeclarePageStyleByLayers},
% documented in the \KOMAScript{} manual.
% \DescribeOption{myheading}%
% \DescribeOption{heading}%
-% However from version 4.0 \mbox{\Package{fancyhdr}} provides options
-% \Option{myheadings} and \Option{headings} to redefine the corresponding page
-% style. \Package{scrlayer-fancyhdr} also provides these options and passes
-% them to \mbox{\Package{fancyhdr}}.
-%
-% \DescribeMacro\ps@empty
-% \DescribeMacro\ps@@empty
-% Note: Pagestyle \Pagestyle{empty} is somehow
-% special. \mbox{\Package{scrlayer}} redefines it to be a layer page
-% style. And \mbox{\Package{fancyhdr}}'s internal page style
-% \Pagestyle{@empty} is the same like \Pagestyle{empty}. So \Pagestyle{@empty}
-% also uses the layers of \Pagestyle{empty} but you should not try to modify
-% it directly using the interface of \mbox{\Package{scrlayer}}. Moreover, if
-% \mbox{\Package{fancyhdr}} is loaded before \Package{scrlayer-fancyhdr},
-% \mbox{\Package{fancyhdr}}'s internal page style \Pagestyle{@empty} is not a
-% copy of \mbox{\Package{scrlayer}}'s layer page style \Pagestyle{empty} but
-% the original standard page style \Pagestyle{empty}. However, with
-% \Package{scrlayer-fancyhdr} package \mbox{\Package{fancyhdr}} does not
-% longer use the internal page style \Pagestyle{@empty}. So you would not need
+% However from version 4.0 \pkg{fancyhdr} provides options
+% \opt{myheadings} and \opt{headings} to redefine the corresponding page
+% style. \pkg*{scrlayer-fancyhdr} also provides these options and passes
+% them to \pkg{fancyhdr}.
+%
+% \DescribePageStyle{empty}
+% \DescribeiPageStyle{@empty}
+% Note: Pagestyle \pstyle{empty} is somehow
+% special. \pkg{scrlayer} redefines it to be a layer page
+% style. And \pkg{fancyhdr}'s internal page style
+% \pstyle{@empty} is the same like \pstyle{empty}. So \pstyle{@empty}
+% also uses the layers of \pstyle{empty} but you should not try to modify
+% it directly using the interface of \pkg{scrlayer}. Moreover, if
+% \pkg{fancyhdr} is loaded before \pkg*{scrlayer-fancyhdr},
+% \pkg{fancyhdr}'s internal page style \pstyle{@empty} is not a
+% copy of \pkg{scrlayer}'s layer page style \pstyle{empty} but
+% the original standard page style \pstyle{empty}. However, with
+% \pkg*{scrlayer-fancyhdr} package \pkg{fancyhdr} does not
+% longer use the internal page style \pstyle{@empty}. So you would not need
% to know this.
%
% \section{How to use the Package}
@@ -354,56 +317,56 @@
%\begin{verbatim}
% \usepackage{scrlayer-fancyhdr}
%\end{verbatim}
-% instead of loading \mbox{\Package{scrlayer}} and \mbox{\Package{fancyhdr}}
+% instead of loading \pkg{scrlayer} and \pkg{fancyhdr}
% or before or after loading one of these packages. However it is recommended
-% to replace loading \mbox{\Package{scrlayer}} and \mbox{\Package{fancyhdr}}
-% by loading \Package{scrlayer-fancyhdr} because this avoids option
-% clashes. \Package{scrlayer-fancyhdr} provides all options of
-% \mbox{\Package{scrlayer}} and \mbox{\Package{fancyhdr}} and passes them to
-% \mbox{\Package{scrlayer}} resp. \mbox{\Package{fancyhdr}}. Nevertheless
+% to replace loading \pkg{scrlayer} and \pkg{fancyhdr}
+% by loading \pkg*{scrlayer-fancyhdr} because this avoids option
+% clashes. \pkg*{scrlayer-fancyhdr} provides all options of
+% \pkg{scrlayer} and \pkg{fancyhdr} and passes them to
+% \pkg{scrlayer} resp. \pkg{fancyhdr}. Nevertheless
% sometimes it may be useful to be able to additionally load
-% \mbox{\Package{scrlayer}} or \mbox{\Package{fancyhdr}}. In this case you
-% should first load \mbox{\Package{scrlayer}} next \mbox{\Package{fancyhdr}}
-% and last \Package{scrlayer-fancyhdr}.
-%
-% \DescribeMacro\ps@@fancy
-% \DescribeMacro\ps@f@nch@fancycore
-% \DescribeMacro\ps@fancy
-% \DescribeMacro\ps@fancyplain
-% \DescribeMacro\ps@plain@fancy
-% \DescribeMacro\fancypagestyle
+% \pkg{scrlayer} or \pkg{fancyhdr}. In this case you
+% should first load \pkg{scrlayer} next \pkg{fancyhdr}
+% and last \pkg*{scrlayer-fancyhdr}.
+%
+% \DescribeiPageStyle{@fancy}
+% \DescribeiPageStyle{f@nch@fancycore}
+% \DescribePageStyle{fancy}
+% \DescribePageStyle{fancyplain}
+% \DescribeiPageStyle{plain@fancy}
+% \DescribeCommand\fancypagestyle
% After loading the package you should be able to use the page styles and
-% commands of \mbox{\Package{fancyhdr}} and to add layers to or remove layers
-% from the \mbox{\Package{fancyhdr}}'s internal basic page style
-% \Package{@fancy} (up to \mbox{\Package{fancyhdr}} version 3.10)
-% resp. \Pagestyle{f@nch@fancycore} (from \mbox{\Package{fancyhdr}} version
+% commands of \pkg{fancyhdr} and to add layers to or remove layers
+% from the \pkg{fancyhdr}'s internal basic page style
+% \pstyle{@fancy} (up to \pkg{fancyhdr} version 3.10)
+% resp. \pstyle{f@nch@fancycore} (from \pkg{fancyhdr} version
% 4). Note, you are not able to add layers to or remove layers from
-% \mbox{\Package{fancyhdr}}'s page styles \Pagestyle{fancy},
-% \Pagestyle{fancyplain}, \Pagestyle{plain@fancy} or page styles defined by
-% \Macro{fancypagestyle}. However adding layers to or removing layers from
-% \Pagestyle{@fancy} (up to \mbox{\Package{fancyhdr}} version 3.10)
-% resp. \Pagestyle{f@nch@fancycore} (from \mbox{\Package{fancyhdr}} version 4)
+% \pkg{fancyhdr}'s page styles \pstyle{fancy},
+% \pstyle{fancyplain}, \pstyle{plain@fancy} or page styles defined by
+% \cs{fancypagestyle}. However adding layers to or removing layers from
+% \pstyle{@fancy} (up to \pkg{fancyhdr} version 3.10)
+% resp. \pstyle{f@nch@fancycore} (from \pkg{fancyhdr} version 4)
% will always change all these page styles!
%
-% \DescribeMacro\ps@plain
-% \DescribeMacro\ps@headings
-% \DescribeMacro\ps@myheadings
-% \DescribeMacro\ps@empty
-% Note: Loading \Package{scrlayer-fancyhdr} will not make page style
-% \Pagestyle{plain} nor \Pagestyle{headings} nor \Pagestyle{myheadings} or any
-% other page style but \Pagestyle{empty} to automatically be a layer page
-% style! But if you are using option \Option{headings} or \Option{myheadings},
-% package \mbox{\Package{fancyhdr}} redefines the corresponding page styles to
-% be \mbox{\Package{fancyhdr}} page styles\,---\,and so relate to the same
-% internal layer page style, either \Pagestyle{@fancy} (up to
-% \mbox{\Package{fancyhdr}} version 3.10) or \Pagestyle{@f@nch@fancycore}
-% (from \Package{fancydr} version 4.0).
+% \DescribePageStyle{plain}
+% \DescribePageStyle{headings}
+% \DescribePageStyle{myheadings}
+% \DescribePageStyle{empty}
+% Note: Loading \pkg*{scrlayer-fancyhdr} will not make page style
+% \pstyle{plain} nor \pstyle{headings} nor \pstyle{myheadings} or any
+% other page style but \pstyle{empty} to automatically be a layer page
+% style! But if you are using option \opt{headings} or \opt{myheadings},
+% package \pkg{fancyhdr} redefines the corresponding page styles to
+% be \pkg{fancyhdr} page styles\,---\,and so relate to the same
+% internal layer page style, either \pstyle{@fancy} (up to
+% \pkg{fancyhdr} version 3.10) or \pstyle{@f@nch@fancycore}
+% (from \pkg{fancydr} version 4.0).
%
%
% \section{Hint}
% \label{sec:hint}
%
-% To become independent from the used version of \mbox{\Package{fancyhdr}} you
+% To become independent from the used version of \pkg{fancyhdr} you
% can use:
% \begin{verbatim}
% \IfPackageAtLeastTF{fancyhdr}{2019/03/21}{%
@@ -412,12 +375,12 @@
% \DeclarePageStyleAlias{f@nch@fancycore}{@fancy}%
% }
% \end{verbatim}^^A
-% \unskip after loading \Package{scrlayer-fancyhdr} and before adding a layer
+% \unskip after loading \pkg*{scrlayer-fancyhdr} and before adding a layer
% to the internal layer page style. This code defines page style
-% \Pagestyle{@fancy} to be an alias of \Pagestyle{f@nch@fancycore} if
-% \mbox{\Package{fancyhdr}} from version 4.0 is used or vise versa
-% \Pagestyle{f@nch@fancycore} as an alias of \Pagestyle{@fancy} if
-% \mbox{\Package{fancyhdr}} before version 4.0 is used. So after this code
+% \pstyle{@fancy} to be an alias of \pstyle{f@nch@fancycore} if
+% \pkg{fancyhdr} from version 4.0 is used or vise versa
+% \pstyle{f@nch@fancycore} as an alias of \pstyle{@fancy} if
+% \pkg{fancyhdr} before version 4.0 is used. So after this code
% using either
% \begin{verbatim}
% \AddLayersToPageStyle{@fancy}{...}
@@ -438,32 +401,32 @@
% again. Listing these issues does not say they are bugs or features.
% \begin{itemize}
% \item
-% \DescribeMacro\ps@fancy
-% \DescribeMacro\ps@f@nch@fancycore
-% \DescribeMacro\ps@fancyplain
-% \DescribeMacro\fancypagestyle
-% \DescribeMacro\ps@@fancy
+% \DescribePageStyle{fancy}
+% \DescribeiPageStyle{f@nch@fancycore}
+% \DescribePageStyle{fancyplain}
+% \DescribeCommand\fancypagestyle
+% \DescribeiPageStyle{@fancy}
% You are not able to add layers to the user level page style
-% \Pagestyle{fancy} or \Pagestyle{fancyplain} or any page style defined by
-% \Macro{fancypagestyle} but only to the internal page style
-% \Pagestyle{@fancy} (if you are using \mbox{\Package{fancyhdr}} up to
-% version 3.10) resp. \Pagestyle{f@nch@fancycore} (if you are using
-% \mbox{\Package{fancyhdr}} from version 4). This is intended as explained
+% \pstyle{fancy} or \pstyle{fancyplain} or any page style defined by
+% \cs{fancypagestyle} but only to the internal page style
+% \pstyle{@fancy} (if you are using \pkg{fancyhdr} up to
+% version 3.10) resp. \pstyle{f@nch@fancycore} (if you are using
+% \pkg{fancyhdr} from version 4). This is intended as explained
% in this manual (see also section~\ref{sec:hint}).
% \item
-% \DescribeMacro\ps@@empty
-% Using \mbox{\Package{fancyhdr}}'s internal page style \Pagestyle{@empty}
+% \DescribeiPageStyle{@empty}
+% Using \pkg{fancyhdr}'s internal page style \pstyle{@empty}
% could have strange results. However, there is a simple solution for this:
-% Don't use the internal \Pagestyle{@empty} but always the user level page
-% style \Pagestyle{empty}!
+% Don't use the internal \pstyle{@empty} but always the user level page
+% style \pstyle{empty}!
% \item
-% \DescribeMacro\ps@@fancy
-% \DescribeMacro\ps@f@nch@fancycore
+% \DescribeiPageStyle{@fancy}
+% \DescribeiPageStyle{f@nch@fancycore}
% The vertical position of the page header does differ a little bit, if
-% \Package{scrlayer-fancyhdr} is used instead of
-% \mbox{\Package{fancyhdr}}. This could be fixed by a modification of the
+% \pkg*{scrlayer-fancyhdr} is used instead of
+% \pkg{fancyhdr}. This could be fixed by a modification of the
% layers \texttt{fancy.head.odd} and \texttt{fancy.head.even} using
-% \Option{addvoffset}. More tests are needed.
+% \opt{addvoffset}. More tests are needed.
% \end{itemize}
% See \url{https://github.com/komascript/scrlayer-fancyhdr/issues} for more
% issues.
@@ -473,169 +436,169 @@
% \section{Der Sinn dieses Pakets}
% \label{sec:sinn}
% Dieses Paket wurde entwickelt, um den Anwendern die Möglichkeit zu geben,
-% die Fähigkeiten von Piet van Oostrums \mbox{\Package{fancyhdr}}
+% die Fähigkeiten von Piet van Oostrums \pkg{fancyhdr}
% \autocite{package:fancyhdr} mit den Fähigkeiten von
-% \mbox{\Package{scrlayer}} \autocite{package:scrlayer} zu kombinieren. In
+% \pkg{scrlayer} \autocite{package:scrlayer} zu kombinieren. In
% anderen Worten: Es wurde geschaffen, um die Seiten-Ebenen von
-% \mbox{\Package{scrlayer}} mit den Seiten-Stilen von
-% \mbox{\Package{fancyhdr}} zu kombinieren.
+% \pkg{scrlayer} mit den Seiten-Stilen von
+% \pkg{fancyhdr} zu kombinieren.
%
-% In dieser Kombination ist Kompatibilität mit \mbox{\Package{fancyhdr}} das
+% In dieser Kombination ist Kompatibilität mit \pkg{fancyhdr} das
% oberste Ziel! Verwendbarkeit und die Freiheiten, die von
-% \mbox{\Package{scrlayer}} geboten werden, ist das zweite
+% \pkg{scrlayer} geboten werden, ist das zweite
% Ziel. Kompatibilität mit anderen Paketen oder Klassen von \KOMAScript{}
% \cite{package:koma-script} ist kein primäres Ziel. Vielleicht wird dies in
% Zukunft eine optionale Fähigkeit werden. Die Aufhebung irgendwelcher realen
-% oder eingebildeter Beschränkungen von \mbox{\Package{fancyhdr}}, die darüber
+% oder eingebildeter Beschränkungen von \pkg{fancyhdr}, die darüber
% hinaus gehen, die Verwendung von Ebenen zu ermöglichen, ist kein Ziel und
% wird auch in Zukunft kein Ziel werden.
%
% Wenn Sie eine bessere Kombination von Seitenstilen und Ebenen benötigen, so
% sollten Sie entweder die Low-Level-Schnittstelle von
-% \mbox{\Package{scrlayer}} zur Definition von Seitenstilen oder ---~und das
-% ist die Empfehlung des Autors~--- das Paket \Package{scrlayer-scrpage}
-% anstelle von \Package{scrlayer-fancyhdr} oder \mbox{\Package{fancyhdr}}
+% \pkg{scrlayer} zur Definition von Seitenstilen oder ---~und das
+% ist die Empfehlung des Autors~--- das Paket \pkg{scrlayer-scrpage}
+% anstelle von \pkg*{scrlayer-fancyhdr} oder \pkg{fancyhdr}
% verwenden. Wenn Sie bessere Kompatibilität mit anderen Teilen von
% \KOMAScript, beispielsweise mit den \KOMAScript-Klassen. benötigen, sollten
-% Sie \Package{scrlayer-scrpage} anstelle von \Package{scrlayer-fancyhdr} oder
-% \mbox{\Package{fancyhdr}} verwenden.
+% Sie \pkg{scrlayer-scrpage} anstelle von \pkg*{scrlayer-fancyhdr} oder
+% \pkg{fancyhdr} verwenden.
%
% \section{Wie es funktioniert}
% \label{sec:funktion}
-% Zur Kombination von \mbox{\Package{fancyhdr}} mit \mbox{\Package{scrlayer}}
-% lädt \Package{scrlayer-scrpage} beide Pakete. Nach dem Laden von
-% \mbox{\Package{fancyhdr}} definiert es den Seitenstil \Pagestyle{@fancy}
-% (bis einschließlich \mbox{\Package{fancyhdr}} Version 3.10)
-% bzw. \Pagestyle{f@nch@fancycore} (ab \mbox{\Package{fancyhdr}} Version 4.0)
-% in einen Ebenen-Seitenstil von \mbox{\Package{scrlayer}} um, bestehend aus
+% Zur Kombination von \pkg{fancyhdr} mit \pkg{scrlayer}
+% lädt \pkg{scrlayer-scrpage} beide Pakete. Nach dem Laden von
+% \pkg{fancyhdr} definiert es den Seitenstil \pstyle{@fancy}
+% (bis einschließlich \pkg{fancyhdr} Version 3.10)
+% bzw. \pstyle{f@nch@fancycore} (ab \pkg{fancyhdr} Version 4.0)
+% in einen Ebenen-Seitenstil von \pkg{scrlayer} um, bestehend aus
% den neu definierten Ebenen \texttt{fancy.head.even},
% \texttt{fancy.head.odd}, \texttt{fancy.foot.even} und
% \texttt{fancy.foot.odd}. Die \texttt{\dots head\dots}-Ebenen sind
% Hintergrund-Ebenen entsprechend dem Seitenkopf von
-% \mbox{\Package{fancyhdr}}-Seiten\-stilen (oder anderen gebräuchlichen
+% \pkg{fancyhdr}-Seiten\-stilen (oder anderen gebräuchlichen
% Seitenstilen). Die \texttt{\dots foot\dots}-Ebenen sind Vordergrund-Ebenen
% entsprechend dem Seitenfuß von
-% \linebreak\mbox{\Package{fancyhdr}}-Seitenstilen (oder anderen
+% \linebreak\pkg{fancyhdr}-Seitenstilen (oder anderen
% gebräuchlichen Seitenstilen). Die \texttt{\dots even}-Ebenen sind auf gerade
% Seiten, also linke Seiten von doppelseitigen Dokumenten, beschränkt. Die
% \texttt{\dots odd}-Ebenen sind auf ungerade Seiten, also rechte Seiten bei
% doppelseitigen Dokumenten oder alle Seiten bei einseitigen Dokumenten,
% beschränkt.
%
-% \DescribeMacro\ps@@fancy
-% \DescribeMacro\ps@f@nch@fancycore
-% \DescribeMacro\ps@fancyplain
-% \DescribeMacro\ps@plain@fancy
-% Bis Version 3.10 von \mbox{\Package{fancyhdr}} war Seitenstil
-% \Pagestyle{@fancy} ein interner Seitenstil, den Anwender selbst nicht direkt
-% verwenden sollten. Ab Version 4.0 wird \Pagestyle{f@nch@fancycore} als
-% interner Seitenstil von Paket \mbox{\Package{fancyhdr}} genutzt. In beiden
+% \DescribeiPageStyle{@fancy}
+% \DescribeiPageStyle{f@nch@fancycore}
+% \DescribePageStyle{fancyplain}
+% \DescribeiPageStyle{plain@fancy}
+% Bis Version 3.10 von \pkg{fancyhdr} war Seitenstil
+% \pstyle{@fancy} ein interner Seitenstil, den Anwender selbst nicht direkt
+% verwenden sollten. Ab Version 4.0 wird \pstyle{f@nch@fancycore} als
+% interner Seitenstil von Paket \pkg{fancyhdr} genutzt. In beiden
% Fällen wird der interne Seitenstil für den Benutzer\-seiten\-stil
-% \Pagestyle{fancy} verwendet. Der Benutzerseitenstil \Pagestyle{fancy} wird
-% ebenfalls für den veralteten Seitenstil \Pagestyle{fancyplain} des Pakets
-% \Package{fancyheadings} verwendet, der zusätzlich den Seitenstil
-% \Pagestyle{plain} in \mbox{\Package{fancyhdr}}s internen Seitenstil
-% \Pagestyle{plain@fancy} ändert, der ebenfalls \Pagestyle{fancy} verwendet,
-% wobei allerdings \Macro{if@fancyplain} auf \Macro{iftrue} gesetzt ist. Es
+% \pstyle{fancy} verwendet. Der Benutzerseitenstil \pstyle{fancy} wird
+% ebenfalls für den veralteten Seitenstil \pstyle{fancyplain} des Pakets
+% \pkg{fancyheadings} verwendet, der zusätzlich den Seitenstil
+% \pstyle{plain} in \pkg{fancyhdr}s internen Seitenstil
+% \pstyle{plain@fancy} ändert, der ebenfalls \pstyle{fancy} verwendet,
+% wobei allerdings \cs{if@fancyplain} auf \cs{iftrue} gesetzt ist. Es
% gibt eine weitere überholte Anweisung
-% \Macro{fancyplain}\Parameter{plain-Code}\Parameter{fancy-Code}. Diese
-% Anweisung verwendet \meta{plain-Code}, wenn \Macro{if@fancyplain}
-% \Macro{iftrue} ist, aber \meta{fancy-Code}, wenn \Macro{if@fancyplain}
-% \Macro{iffalse} ist. Sie kann innerhalb der Definition der
+% \cs{fancyplain}\marg{plain-Code}\marg{fancy-Code}. Diese
+% Anweisung verwendet \meta{plain-Code}, wenn \cs{if@fancyplain}
+% \cs{iftrue} ist, aber \meta{fancy-Code}, wenn \cs{if@fancyplain}
+% \cs{iffalse} ist. Sie kann innerhalb der Definition der
% Seitenstilelemente verwendet werden um zwischen den Einstellung für
-% \Pagestyle{fancy} und \Pagestyle{plain} zu unterscheiden.
+% \pstyle{fancy} und \pstyle{plain} zu unterscheiden.
%
-% Seitenstile, die mit der \mbox{\Package{fancyhdr}}-Anweisung
-% \Macro{fancypagestyle} definiert wurden, verwenden ebenfalls immer den
-% Seitenstil \Pagestyle{fancy} und damit den internen grundlegenden Seitenstil
-% \Pagestyle{@fancy} (bis einschließlich \mbox{\Package{fancyhdr}} Version
-% 3.10) bzw. \Pagestyle{f@nch@fancycore} (ab \mbox{\Package{fancyhdr}} Version
+% Seitenstile, die mit der \pkg{fancyhdr}-Anweisung
+% \cs{fancypagestyle} definiert wurden, verwenden ebenfalls immer den
+% Seitenstil \pstyle{fancy} und damit den internen grundlegenden Seitenstil
+% \pstyle{@fancy} (bis einschließlich \pkg{fancyhdr} Version
+% 3.10) bzw. \pstyle{f@nch@fancycore} (ab \pkg{fancyhdr} Version
% 4).
%
% Als Ergebnis der beiden obigen Anmerkungen, verwenden alle Seitenstile von
-% \mbox{\Package{fancyhdr}} immer denselben internen grundlegenden Seitenstil
-% \Pagestyle{@fancy} (bis einschließlich \mbox{\Package{fancyhdr}} Version
-% 3.10) bzw. \Pagestyle{f@nch@fancycore} (ab \mbox{\Package{fancyhdr}} Version
+% \pkg{fancyhdr} immer denselben internen grundlegenden Seitenstil
+% \pstyle{@fancy} (bis einschließlich \pkg{fancyhdr} Version
+% 3.10) bzw. \pstyle{f@nch@fancycore} (ab \pkg{fancyhdr} Version
% 4). Als Ergebnis daraus resultiert aus der Umdefinierung des Seitenstils
-% \Pagestyle{@fancy} (bis einschließlich \mbox{\Package{fancyhdr}} Version
-% 3.10) bzw. \Pagestyle{f@nch@fancycore} (ab \mbox{\Package{fancyhdr}} Version
+% \pstyle{@fancy} (bis einschließlich \pkg{fancyhdr} Version
+% 3.10) bzw. \pstyle{f@nch@fancycore} (ab \pkg{fancyhdr} Version
% 4) in einen Ebenen-Seitenstil, dass Anwender Ebenen zu allen Seitenstilen
-% von \mbox{\Package{fancyhdr}} hinzufügen oder daraus löschen können, indem
-% sie Ebenen zu \Pagestyle{@fancy} (bis einschließlich
-% \mbox{\Package{fancyhdr}} Version 3.10) bzw. \Pagestyle{f@nch@fancycore} (ab
-% \mbox{\Package{fancyhdr}} Version 4) hinzufügen oder daraus löschen. Sie
+% von \pkg{fancyhdr} hinzufügen oder daraus löschen können, indem
+% sie Ebenen zu \pstyle{@fancy} (bis einschließlich
+% \pkg{fancyhdr} Version 3.10) bzw. \pstyle{f@nch@fancycore} (ab
+% \pkg{fancyhdr} Version 4) hinzufügen oder daraus löschen. Sie
% können keine Ebenen unmittelbar zu einzelnen Seitenstilen von
-% \mbox{\Package{fancyhdr}} wie \Pagestyle{fancy}, \Pagestyle{fancyplain},
-% \Pagestyle{plain@fancy} oder anderen mit \Macro{fancypagestyle} definierten
+% \pkg{fancyhdr} wie \pstyle{fancy}, \pstyle{fancyplain},
+% \pstyle{plain@fancy} oder anderen mit \cs{fancypagestyle} definierten
% Seitenstilen hinzufügen oder daraus löschen. Aber natürlich können Sie das
-% zweite Argument von \Macro{fancypagestyle} nutzen, um Ebenen zum Zeitpunkt
-% der Aktivierung eines \mbox{\Package{fancyhdr}}-Seitenstils hinzuzufügen
+% zweite Argument von \cs{fancypagestyle} nutzen, um Ebenen zum Zeitpunkt
+% der Aktivierung eines \pkg{fancyhdr}-Seitenstils hinzuzufügen
% oder zu entfernen. Dies stellt eine Verschiebung dar weg von der
-% \mbox{\Package{scrlayer}}-Schnittstelle zum Hinzufügen oder Entfernen von
-% Ebenen hin zur \mbox{\Package{fancyhdr}}-Schnittstelle zur Definition von
-% Änderungen des Seitenstils \Pagestyle{fancy}.
+% \pkg{scrlayer}-Schnittstelle zum Hinzufügen oder Entfernen von
+% Ebenen hin zur \pkg{fancyhdr}-Schnittstelle zur Definition von
+% Änderungen des Seitenstils \pstyle{fancy}.
%
% Ein weitere solche Verschiebung von der Anwenderschnittstelle von
-% \mbox{\Package{scrlayer}} zur Anwenderschnittstelle von
-% \mbox{\Package{fancyhdr}} ist die Entscheidung, ob automatische, lebende
-% Kolumnentitel verwendet werden sollen oder nicht. \mbox{\Package{scrlayer}}
-% bietet dafür die Optionen \Option{automark} und \Option{manualmark} und die
-% Anweisungen \Macro{automark} und \Macro{manualmark}. Diese konfigurieren
-% gleichzeitig Anweisungen wie \Macro{partmark}, \Macro{chaptermark},
-% \Macro{sectionmark} etc. Mit \Package{scrlayer-fancyhdr} wird bereits durch
-% Verwendung von Seitenstil \Pagestyle{@fancy} (bis einschließlich
-% \mbox{\Package{fancyhdr}} Version 3.10) bzw. \Pagestyle{f@nch@fancycore} (ab
-% \mbox{\Package{fancyhdr}} Version 4) auf automatische, lebende Kolumnentitel
-% umgeschaltet. Die erste Aktivierung von \Pagestyle{fancy} definiert auch
-% weiterhin \Macro{chaptermark} und \Macro{sectionmark}, wenn eine Klasse mit
-% \Macro{chapter} verwendet wird, oder \Macro{sectionmark} und
-% \Macro{subsectionmark}, wenn eine Klasse ohne \Macro{chapter} verwendet
-% wird. Dennoch können Sie weiterhin \Macro{manualmark} und \Macro{automark}
-% nach der Umschaltung zu einem \mbox{\Package{fancyhdr}}-Seitenstil
+% \pkg{scrlayer} zur Anwenderschnittstelle von
+% \pkg{fancyhdr} ist die Entscheidung, ob automatische, lebende
+% Kolumnentitel verwendet werden sollen oder nicht. \pkg{scrlayer}
+% bietet dafür die Optionen \opt{automark} und \opt{manualmark} und die
+% Anweisungen \cs{automark} und \cs{manualmark}. Diese konfigurieren
+% gleichzeitig Anweisungen wie \cs{partmark}, \cs{chaptermark},
+% \cs{sectionmark} etc. Mit \pkg*{scrlayer-fancyhdr} wird bereits durch
+% Verwendung von Seitenstil \pstyle{@fancy} (bis einschließlich
+% \pkg{fancyhdr} Version 3.10) bzw. \pstyle{f@nch@fancycore} (ab
+% \pkg{fancyhdr} Version 4) auf automatische, lebende Kolumnentitel
+% umgeschaltet. Die erste Aktivierung von \pstyle{fancy} definiert auch
+% weiterhin \cs{chaptermark} und \cs{sectionmark}, wenn eine Klasse mit
+% \cs{chapter} verwendet wird, oder \cs{sectionmark} und
+% \cs{subsectionmark}, wenn eine Klasse ohne \cs{chapter} verwendet
+% wird. Dennoch können Sie weiterhin \cs{manualmark} und \cs{automark}
+% nach der Umschaltung zu einem \pkg{fancyhdr}-Seitenstil
% verwenden, um die lebenden Kolumnentitel zu konfigurieren. Diese
% Verschiebung ist also nur partiell.
%
-% \DescribeMacro\ps@headings
-% \DescribeMacro\ps@myheadings
-% \DescribeMacro\ps@plain
-% Hinweis: Derzeit definieren weder \mbox{\Package{scrlayer}} noch
-% \mbox{\Package{fancyhdr}} noch \Package{scrlayer-fancyhdr} die Seitenstile
-% \Pagestyle{headings} oder \Pagestyle{myheadings} in der Voreinstellung
-% um. Und weder \mbox{\Package{scrlayer}} noch \mbox{\Package{fancyhdr}} oder
-% \Package{scrlayer-fancyhdr} definieren den Seitenstil \Pagestyle{plain} um,
-% solange nicht der veraltete \mbox{\Package{fancyhdr}}-Seitenstil
-% \Pagestyle{fancyplain} aktiviert wird. Wenn Sie also einen Ebeneseitenstil
-% für \Pagestyle{plain}-Seiten wünschen, insbesondere für die erste Seite
+% \DescribePageStyle{headings}
+% \DescribePageStyle{myheadings}
+% \DescribePageStyle{plain}
+% Hinweis: Derzeit definieren weder \pkg{scrlayer} noch
+% \pkg{fancyhdr} noch \pkg*{scrlayer-fancyhdr} die Seitenstile
+% \pstyle{headings} oder \pstyle{myheadings} in der Voreinstellung
+% um. Und weder \pkg{scrlayer} noch \pkg{fancyhdr} oder
+% \pkg*{scrlayer-fancyhdr} definieren den Seitenstil \pstyle{plain} um,
+% solange nicht der veraltete \pkg{fancyhdr}-Seitenstil
+% \pstyle{fancyplain} aktiviert wird. Wenn Sie also einen Ebeneseitenstil
+% für \pstyle{plain}-Seiten wünschen, insbesondere für die erste Seite
% eines Kapitels oder Teils oder die Seiten mit dem Titelkopf, so müssen Sie
-% entweder den veralteten \mbox{\Package{fancyhdr}}-Seitenstil
-% \Pagestyle{fancyplain} verwenden oder den Seitenstil \Pagestyle{plain}
-% entweder per \Macro{fancypagestyle} umdefinieren, wie dies in der
-% \mbox{\Package{fancyhdr}}-Anleitung beschrieben ist, oder per
-% \Macro{DeclarePageStyleByLayers}, wie dies in der \KOMAScript-Anleitung
+% entweder den veralteten \pkg{fancyhdr}-Seitenstil
+% \pstyle{fancyplain} verwenden oder den Seitenstil \pstyle{plain}
+% entweder per \cs{fancypagestyle} umdefinieren, wie dies in der
+% \pkg{fancyhdr}-Anleitung beschrieben ist, oder per
+% \cs{DeclarePageStyleByLayers}, wie dies in der \KOMAScript-Anleitung
% dokumentiert ist.
% \DescribeOption{myheading}%
% \DescribeOption{headings}%
-% Darüber hinaus bietet \mbox{\Package{fancyhdr}} ab Version 4.0 die Optionen
-% \Option{myheadings} und \Option{headings}, um die entsprechenden Seitenstile
-% umzudefinieren. \Package{scrlayer-fancyhdr} bietet diese Optionen ebenfalls
-% und leitet sie an \mbox{\Package{fancyhdr}} weiter.
-%
-% \DescribeMacro\ps@empty
-% \DescribeMacro\ps@@empty
-% Hinweis: Der Seitenstil \Pagestyle{empty} ist etwas
-% speziell. \mbox{\Package{scrlayer}} definiert dieses in einen
-% Ebenen-Seitenstil um. Und \mbox{\Package{fancyhdr}}s interner Seitenstil
-% \Pagestyle{@empty} ist ebenfalls identisch mit \Pagestyle{empty}. Daher
-% verwendet auch \Pagestyle{@empty} die Ebenen von \Pagestyle{empty}, aber Sie
+% Darüber hinaus bietet \pkg{fancyhdr} ab Version 4.0 die Optionen
+% \opt{myheadings} und \opt{headings}, um die entsprechenden Seitenstile
+% umzudefinieren. \pkg*{scrlayer-fancyhdr} bietet diese Optionen ebenfalls
+% und leitet sie an \pkg{fancyhdr} weiter.
+%
+% \DescribePageStyle{empty}
+% \DescribeiPageStyle{@empty}
+% Hinweis: Der Seitenstil \pstyle{empty} ist etwas
+% speziell. \pkg{scrlayer} definiert dieses in einen
+% Ebenen-Seitenstil um. Und \pkg{fancyhdr}s interner Seitenstil
+% \pstyle{@empty} ist ebenfalls identisch mit \pstyle{empty}. Daher
+% verwendet auch \pstyle{@empty} die Ebenen von \pstyle{empty}, aber Sie
% sollten nicht versuchen, diese direkt mit der Schnittstelle von
-% \mbox{\Package{scrlayer}} zu verändern. Mehr noch, wenn
-% \mbox{\Package{fancyhdr}} vor \Package{scrlayer-fancyhdr} geladen wird, ist
-% der interne Seitenstil \Pagestyle{@empty} von \mbox{\Package{fancyhdr}}
-% nicht länger eine Kopie des Ebenen-Seitenstils \Pagestyle{empty} von
-% \mbox{\Package{scrlayer}}, sondern weiterhin des Standard-Seitenstils
-% \Pagestyle{empty}. Allerdings verwendet \mbox{\Package{fancyhdr}} mit
-% \Package{scrlayer-fancyhdr} selbst den internen Seitenstil
-% \Pagestyle{@empty} gar nicht mehr. Daher brauchen Sie das eigentlich auch
+% \pkg{scrlayer} zu verändern. Mehr noch, wenn
+% \pkg{fancyhdr} vor \pkg*{scrlayer-fancyhdr} geladen wird, ist
+% der interne Seitenstil \pstyle{@empty} von \pkg{fancyhdr}
+% nicht länger eine Kopie des Ebenen-Seitenstils \pstyle{empty} von
+% \pkg{scrlayer}, sondern weiterhin des Standard-Seitenstils
+% \pstyle{empty}. Allerdings verwendet \pkg{fancyhdr} mit
+% \pkg*{scrlayer-fancyhdr} selbst den internen Seitenstil
+% \pstyle{@empty} gar nicht mehr. Daher brauchen Sie das eigentlich auch
% nicht zu wissen.
%
% \section{Wie man das Paket verwendet}
@@ -645,61 +608,61 @@
%\begin{verbatim}
% \usepackage{scrlayer-fancyhdr}
%\end{verbatim}
-% an Stelle von \mbox{\Package{scrlayer}} oder \mbox{\Package{fancyhdr}} oder
+% an Stelle von \pkg{scrlayer} oder \pkg{fancyhdr} oder
% vor dem Laden eines dieser Pakete. Empfohlen wird das komplette Ersetzen von
-% \mbox{\Package{scrlayer}} und \mbox{\Package{fancyhdr}} durch das Laden von
-% \Package{scrlayer-fancyhdr}, weil dadurch Optionskonflikte
-% (engl. \emph{option clash}) vermieden wird. \Package{scrlayer-fancyhdr}
-% stellt alle Optionen von \mbox{\Package{scrlayer}} und
-% \mbox{\Package{fancyhdr}} bereit und leitet diese an
-% \mbox{\Package{scrlayer}} bzw. \mbox{\Package{fancyhdr}}
+% \pkg{scrlayer} und \pkg{fancyhdr} durch das Laden von
+% \pkg*{scrlayer-fancyhdr}, weil dadurch Optionskonflikte
+% (engl. \emph{option clash}) vermieden wird. \pkg*{scrlayer-fancyhdr}
+% stellt alle Optionen von \pkg{scrlayer} und
+% \pkg{fancyhdr} bereit und leitet diese an
+% \pkg{scrlayer} bzw. \pkg{fancyhdr}
% weiter. Nichtsdestotrotz kann es in seltenen Fällen nützlich sein, dass man
-% das Paket auch zusätzlich nach \mbox{\Package{scrlayer}} und
-% \mbox{\Package{fancyhdr}} laden kann. In diesem Fall sollte
-% \mbox{\Package{scrlayer}} vor \mbox{\Package{fancyhdr}} und zuletzt
-% \Package{scrlayer-fancyhdr} geladen werden.
-%
-% \DescribeMacro\ps@@fancy
-% \DescribeMacro\ps@f@nch@fancycore
-% \DescribeMacro\ps@fancy
-% \DescribeMacro\ps@fancyplain
-% \DescribeMacro\ps@plain@fancy
-% \DescribeMacro\fancypagestyle
+% das Paket auch zusätzlich nach \pkg{scrlayer} und
+% \pkg{fancyhdr} laden kann. In diesem Fall sollte
+% \pkg{scrlayer} vor \pkg{fancyhdr} und zuletzt
+% \pkg*{scrlayer-fancyhdr} geladen werden.
+%
+% \DescribeiPageStyle{@fancy}
+% \DescribeiPageStyle{f@nch@fancycore}
+% \DescribePageStyle{fancy}
+% \DescribePageStyle{fancyplain}
+% \DescribeiPageStyle{plain@fancy}
+% \DescribeCommand\fancypagestyle
% Nach dem Laden des Pakets sollten Sie in der Lage sein, die Seitenstile und
-% Befehle von \mbox{\Package{fancyhdr}} zu verwenden und Ebenen zum internen
-% \mbox{\Package{fancyhdr}}-Seitenstil \Package{@fancy} (bis einschließlich
-% \mbox{\Package{fancyhdr}} Version 3.10) bzw. \Pagestyle{f@nch@fancycore} (ab
-% \mbox{\Package{fancyhdr}} Version 4) hinzuzufügen oder davon zu
+% Befehle von \pkg{fancyhdr} zu verwenden und Ebenen zum internen
+% \pkg{fancyhdr}-Seitenstil \pstyle{@fancy} (bis einschließlich
+% \pkg{fancyhdr} Version 3.10) bzw. \pstyle{f@nch@fancycore} (ab
+% \pkg{fancyhdr} Version 4) hinzuzufügen oder davon zu
% entfernen. Hinweis: Es ist Ihnen nicht möglich, Ebenen zu den
-% \mbox{\Package{fancyhdr}}-Seitenstilen \Pagestyle{fancy},
-% \Pagestyle{fancyplain}, \Pagestyle{plain@fancy} oder jedem anderen mit
-% \Macro{fancypagestyle} definierten Seitenstil hinzuzufügen. Jedoch wird das
-% Hinzufügen oder Entfernen von Ebenen zu bzw. von \Package{@fancy} (bis
-% einschließlich \mbox{\Package{fancyhdr}} Version 3.10)
-% bzw. \Pagestyle{f@nch@fancycore} (ab \mbox{\Package{fancyhdr}} Version 4)
+% \pkg{fancyhdr}-Seitenstilen \pstyle{fancy},
+% \pstyle{fancyplain}, \pstyle{plain@fancy} oder jedem anderen mit
+% \cs{fancypagestyle} definierten Seitenstil hinzuzufügen. Jedoch wird das
+% Hinzufügen oder Entfernen von Ebenen zu bzw. von \pstyle{@fancy} (bis
+% einschließlich \pkg{fancyhdr} Version 3.10)
+% bzw. \pstyle{f@nch@fancycore} (ab \pkg{fancyhdr} Version 4)
% immer alle diese Seitenstile mit ändern!
%
-% \DescribeMacro\ps@plain
-% \DescribeMacro\ps@headings
-% \DescribeMacro\ps@myheadings
-% \DescribeMacro\ps@empty
-% Hinweis: Das Laden von Paket \Package{scrlayer-fancyhdr} wird weder den
-% Seitenstil \Pagestyle{plain} noch \Pagestyle{headings} noch
-% \Pagestyle{myheadings} noch irgend einen anderen Seitenstil außer
-% \Pagestyle{empty} automatisch in einen Ebenen-Seitenstil umwandeln! Wenn Sie
-% aber Option \Option{headings} oder \Option{myheadings} angeben, definiert
-% \mbox{\Package{fancyhdr}} die entsprechenden Seitenstile in
-% \mbox{\Package{fancyhdr}}-Seitenstil um --~somit hängen diese dann von
-% demselben internen Seitenstil, entweder \Package{@fancy} (bis einschließlich
-% \mbox{\Package{fancyhdr}} Version 3.10) oder \Pagestyle{f@nch@fancycore} (ab
-% \mbox{\Package{fancyhdr}} Version 4), ab.
+% \DescribePageStyle{plain}
+% \DescribePageStyle{headings}
+% \DescribePageStyle{myheadings}
+% \DescribePageStyle{empty}
+% Hinweis: Das Laden von Paket \pkg*{scrlayer-fancyhdr} wird weder den
+% Seitenstil \pstyle{plain} noch \pstyle{headings} noch
+% \pstyle{myheadings} noch irgend einen anderen Seitenstil außer
+% \pstyle{empty} automatisch in einen Ebenen-Seitenstil umwandeln! Wenn Sie
+% aber Option \opt{headings} oder \opt{myheadings} angeben, definiert
+% \pkg{fancyhdr} die entsprechenden Seitenstile in
+% \pkg{fancyhdr}-Seitenstil um --~somit hängen diese dann von
+% demselben internen Seitenstil, entweder \pstyle{@fancy} (bis einschließlich
+% \pkg{fancyhdr} Version 3.10) oder \pstyle{f@nch@fancycore} (ab
+% \pkg{fancyhdr} Version 4), ab.
%
%
%
% \section{Tipp}
% \label{sec:tipp}
%
-% Um unabhängig von der verendeten Version von \mbox{\Package{fancyhdr}} zu
+% Um unabhängig von der verendeten Version von \pkg{fancyhdr} zu
% werden, kann man:
% \begin{verbatim}
% \IfPackageAtLeastTF{fancyhdr}{2019/03/21}{%
@@ -708,13 +671,13 @@
% \DeclarePageStyleAlias{f@nch@fancycore}{@fancy}%
% }
% \end{verbatim}^^A
-% \unskip nach dem Laden von \Package{scrlayer-fancyhdr} verwendenm, bevor man
+% \unskip nach dem Laden von \pkg*{scrlayer-fancyhdr} verwendenm, bevor man
% irgendwelche Ebenen zu dem internen Seitenstil hinzufügt oder davon
% entfernt. Diese Codezeilen definieren bei Verwendung von
-% \mbox{\Package{fancyhdr}} aber Version 4.0 Seitenstil \Pagestyle{@fancy} als
-% Alias für Seitenstil \Pagestyle{f@nch@fancycore} und umgekehrt für
-% \mbox{\Package{fancyhdr}} bis einschließlich Version 3.10
-% \Pagestyle{f@ch@fancycore} als Alias für Seitenstil \Package{@fancy}. Damit
+% \pkg{fancyhdr} aber Version 4.0 Seitenstil \pstyle{@fancy} als
+% Alias für Seitenstil \pstyle{f@nch@fancycore} und umgekehrt für
+% \pkg{fancyhdr} bis einschließlich Version 3.10
+% \pstyle{f@ch@fancycore} als Alias für Seitenstil \pstyle{@fancy}. Damit
% führt dann sowohl:
% \begin{verbatim}
% \AddLayersToPageStyle{@fancy}{...}
@@ -737,33 +700,33 @@
% nichts darüber aus, ob es sich dabei um Fehler oder Eigenschaften handelt:
% \begin{itemize}
% \item
-% \DescribeMacro\ps@fancy
-% \DescribeMacro\ps@f@nch@fancycore
-% \DescribeMacro\ps@fancyplain
-% \DescribeMacro\fancypagestyle
-% \DescribeMacro\ps@@fancy
+% \DescribePageStyle{fancy}
+% \DescribeiPageStyle{f@nch@fancycore}
+% \DescribePageStyle{fancyplain}
+% \DescribeCommand\fancypagestyle
+% \DescribeiPageStyle{@fancy}
% Sie können keine Ebenen zu den Seitenstilen auf Benutzerebene
-% \Pagestyle{fancy} oder \Pagestyle{fancyplain} oder irgendwelchen anderen
-% Seitenstilen, die mit \Macro{fancypagestyle} definiert wurden,
-% hinzufügen. Dies ist nur für den internen Seitenstil \Package{@fancy} (bis
-% einschließlich \mbox{\Package{fancyhdr}} Version 3.10)
-% bzw. \Pagestyle{f@nch@fancycore} (ab \mbox{\Package{fancyhdr}} Version 4)
+% \pstyle{fancy} oder \pstyle{fancyplain} oder irgendwelchen anderen
+% Seitenstilen, die mit \cs{fancypagestyle} definiert wurden,
+% hinzufügen. Dies ist nur für den internen Seitenstil \pstyle{@fancy} (bis
+% einschließlich \pkg{fancyhdr} Version 3.10)
+% bzw. \pstyle{f@nch@fancycore} (ab \pkg{fancyhdr} Version 4)
% möglich (see auch Abschnitt~\ref{sec:tipp}).
% \item
-% \DescribeMacro\ps@@empty
-% Die Verwendung des internen \mbox{\Package{fancyhdr}}-Seitenstils
-% \Pagestyle{@empty} kann zu unerwarteten Ergebnissen führen. Es gibt jedoch
+% \DescribeiPageStyle{@empty}
+% Die Verwendung des internen \pkg{fancyhdr}-Seitenstils
+% \pstyle{@empty} kann zu unerwarteten Ergebnissen führen. Es gibt jedoch
% eine einfache Lösung für dieses Problem: Verwenden Sie nicht den internen
-% Seitenstile \Package{@empty}, sondern immer den Seitenstile
-% \Package{empty} der Benutzerebene.
+% Seitenstile \pstyle{@empty}, sondern immer den Seitenstile
+% \pstyle{empty} der Benutzerebene.
% \item
-% \DescribeMacro\ps@@fancy
-% \DescribeMacro\ps@f@nch@fancycore
+% \DescribeiPageStyle{@fancy}
+% \DescribeiPageStyle{f@nch@fancycore}
% Die vertikale Position des Seitenkopfes weicht ein wenig ab, wenn
-% \Package{scrlayer-fancyhdr} an Stelle von \mbox{\Package{fancyhdr}}
+% \pkg*{scrlayer-fancyhdr} an Stelle von \pkg{fancyhdr}
% verwendet wird. Dies kann durch leichte Modifikation der Ebenen
% \texttt{fancy.head.odd} und \texttt{fancy.head.even} mit Hilfe von
-% \Option{addvoffset} behoben werden. Weitere Tests sind hier erforderlich.
+% \opt{addvoffset} behoben werden. Weitere Tests sind hier erforderlich.
% \end{itemize}
% Siehe \url{https://github.com/komascript/scrlayer-fancyhdr/issues} für
% weitere bekannte Probleme.
@@ -775,7 +738,7 @@
% \StopEventually{}
%
% \selectlanguage{english}
-% \part{Implementation of \Package{scrlayer-fancyhdr}}
+% \part{Implementation of \pkg{scrlayer-fancyhdr}}
% \label{sec:scrlayer-fancyhdr}
%
% \sloppy^^A Good paragraph breaking is not the purpose of implementation
@@ -786,14 +749,14 @@
%
% This section if for developers only.
%
-% We need \mbox{\Package{scrlayer}} at least version 2021/02/15,
+% We need \pkg{scrlayer} at least version 2021/02/15,
% \begin{macrocode}
%<*init>
\RequirePackage{scrlayer}[2021/02/15]
%</init>
% \end{macrocode}
% Because before \cs{scrlayer@do@inherited@options} would not be defined. And
-% we need it, to inherit all options of \mbox{\Package{scrlayer}}.
+% we need it, to inherit all options of \pkg{scrlayer}.
% \begin{macrocode}
%<*options>
\scrlayer@do@inherited@options{\scrlayer@inherit@option}
@@ -809,23 +772,23 @@
% \end{macrocode}
%
% Note: The main problem of this interface is, that it tries to implement the
-% user interface of package \mbox{\Package{fancyhdr}} by Piet van Oostrum, that is
-% completely different from \mbox{\Package{scrlayer}} and not really compatible with
-% \mbox{\Package{scrlayer}}, using \mbox{\Package{scrlayer}}. This means, that
-% \Package{scrlayer-fancyhdr} never can be a drop-in replacement of
-% \mbox{\Package{fancyhdr}}. Nevertheless it can help to let \mbox{\Package{scrlayer}} and
-% \mbox{\Package{fancyhdr}} coexist. To do so
+% user interface of package \pkg{fancyhdr} by Piet van Oostrum, that is
+% completely different from \pkg{scrlayer} and not really compatible with
+% \pkg{scrlayer}, using \pkg{scrlayer}. This means, that
+% \pkg*{scrlayer-fancyhdr} never can be a drop-in replacement of
+% \pkg{fancyhdr}. Nevertheless it can help to let \pkg{scrlayer} and
+% \pkg{fancyhdr} coexist. To do so
% \begin{itemize}
-% \item the lowest level of \mbox{\Package{fancyhdr}} should not be the page style
+% \item the lowest level of \pkg{fancyhdr} should not be the page style
% but a layer
-% \item the page styles of \mbox{\Package{fancyhdr}} should be layer page styles
-% \item init code of the page styles of \mbox{\Package{fancyhdr}} should use the
+% \item the page styles of \pkg{fancyhdr} should be layer page styles
+% \item init code of the page styles of \pkg{fancyhdr} should use the
% layer page init code
% \end{itemize}
% Currently it is unsure whether it would be best to do a new implementation
-% or to load original \mbox{\Package{fancyhdr}} and to only modify some things. First
+% or to load original \pkg{fancyhdr} and to only modify some things. First
% I'll try the second method. Currently we explicitly provide the options of
-% \mbox{\Package{fancyhdr}}.
+% \pkg{fancyhdr}.
% \begin{macrocode}
%<*options>
\DeclareOption{nocheck}{\PassOptionsToPackage{nocheck}{fancyhdr}}
@@ -841,7 +804,7 @@
% \end{macrocode}
%
% We need at least one new layer for the new layer page style
-% \Pagestyle{fancy}. However, it could be useful to have not only one but
+% \pstyle{fancy}. However, it could be useful to have not only one but
% four layers (even side head, odd side head, even side foot, odd side foot).
% \begin{macrocode}
%<*body>
@@ -870,32 +833,32 @@
\f@nch@foot\f@nch@Oelf\f@nch@elf\f@nch@ecf\f@nch@erf\f@nch@Oerf}}
]{fancy.foot.even}
% \end{macrocode}
-% \begin{macro}{\ps@f@nch@fancycore}
-% \changes{0.1.3558}{2021/02/15}{support for \mbox{\Package{fancyhdr}} 4}
-% \begin{macro}{\ps@@fancy}
+% \begin{ipgstyle}{f@nch@fancycore}
+% \changes{0.1.3558}{2021/02/15}{support for \pkg{fancyhdr} 4}
+% \begin{ipgstyle}{@fancy}
% \begin{macro}{\@mkboth}
% And have to create a layer page style from this new layers, but we do not
-% redefine page style \Pagestyle{fancy} but the low level page style
-% \Pagestyle{@fancy} (up to \mbox{\Package{fancyhdr}} version 3.10)
-% resp. \Pagestyle{f@nch@fancycore} (from \mbox{\Package{fancyhdr}} version 4.0).
+% redefine page style \pstyle{fancy} but the low level page style
+% \pstyle{@fancy} (up to \pkg{fancyhdr} version 3.10)
+% resp. \pstyle{f@nch@fancycore} (from \pkg{fancyhdr} version 4.0).
%
-% \mbox{\Package{fancyhdr}} does some initialization at the very first call
-% of \cs{pagestyle{fancy}}. To do so \mbox{\Package{fancyhdr}} first uses a different
+% \pkg{fancyhdr} does some initialization at the very first call
+% of \cs{pagestyle{fancy}}. To do so \pkg{fancyhdr} first uses a different
% page style definition, that does the initialization and redefines the page
-% style afterwards. This is still active with \Package{scrlayer-fancyhdr}.
-% Additionally, \mbox{\Package{fancyhdr}} redefines \cs{@mkboth} at every selection
-% of the internal page style \Pagestyle{@fancy}
-% resp. \Pagestyle{f@nch@fancycore}. This can be adapted using the
-% \Option{onselect} feature of the new layer page style \Pagestyle{@fancy}
-% resp. \Pagestyle{f@nch@fancycore}. In my opinion, the
-% |\let\@mkboth\markboth| used by page style \Pagestyle{headings} of, e.\,g.,
+% style afterwards. This is still active with \pkg*{scrlayer-fancyhdr}.
+% Additionally, \pkg{fancyhdr} redefines \cs{@mkboth} at every selection
+% of the internal page style \pstyle{@fancy}
+% resp. \pstyle{f@nch@fancycore}. This can be adapted using the
+% \opt{onselect} feature of the new layer page style \pstyle{@fancy}
+% resp. \pstyle{f@nch@fancycore}. In my opinion, the
+% |\let\@mkboth\markboth| used by page style \pstyle{headings} of, e.\,g.,
% the standard classes or the \KOMAScript{} classes would be best
-% here. However, \mbox{\Package{fancyhdr}} uses the uncommon
+% here. However, \pkg{fancyhdr} uses the uncommon
% |\def\@mkboth{\protect\markboth}|, which would fail if a class or package
% tests \cs{@mkboth} using |\ifx\@mkboth\markboth|. However, \KOMAScript's
-% \cs{IfActiveMkBoth} (see the \Package{scrbase} chapter in the \KOMAScript{}
-% manual) does also recognize the \mbox{\Package{fancyhdr}} definition and copying
-% this is more compatible with \mbox{\Package{fancyhdr}}.
+% \cs{IfActiveMkBoth} (see the \pkg{scrbase} chapter in the \KOMAScript{}
+% manual) does also recognize the \pkg{fancyhdr} definition and copying
+% this is more compatible with \pkg{fancyhdr}.
% \begin{macrocode}
\@ifpackagelater{fancyhdr}{2019/03/21}{%
\DeclarePageStyleByLayers[
@@ -912,24 +875,24 @@
}
%</body>
% \end{macrocode}
-% Note: Redefining page style \Pagestyle{@fancy}
-% resp. \Pagestyle{f@nch@fancycore} instead of \Pagestyle{fancy}
-% does also mean, that features like options \Option{automark} and
-% \Option{manualmark} resp. \cs{automark} and \cs{manualmark} are not fully
-% supported by \Package{scrlayer-fancyhdr}. Also currently the font features
+% Note: Redefining page style \pstyle{@fancy}
+% resp. \pstyle{f@nch@fancycore} instead of \pstyle{fancy}
+% does also mean, that features like options \opt{automark} and
+% \opt{manualmark} resp. \cs{automark} and \cs{manualmark} are not fully
+% supported by \pkg*{scrlayer-fancyhdr}. Also currently the font features
% of the \KOMAScript{} classes are not supported by
-% \Package{scrlayer-fancyhdr}. However you are now able to combine other
-% features of \mbox{\Package{scrlayer}} with features of
-% \mbox{\Package{fancyhdr}} and you can, e.g., use
-% \Package{scrlayer-notecolumn} with \Package{scrlayer-fancyhdr}.
+% \pkg*{scrlayer-fancyhdr}. However you are now able to combine other
+% features of \pkg{scrlayer} with features of
+% \pkg{fancyhdr} and you can, e.g., use
+% \pkg{scrlayer-notecolumn} with \pkg*{scrlayer-fancyhdr}.
% \end{macro}%^^A \@mkboth
-% \end{macro}%^^A \ps@@fancy
-% \end{macro}%^^A \ps@f@nch@fancycore
+% \end{ipgstyle}%^^A @fancy
+% \end{ipgstyle}%^^A f@nch@fancycore
%
-% A future release of \Package{scrlayer-fancyhdr} may even provide the font
+% A future release of \pkg*{scrlayer-fancyhdr} may even provide the font
% features of the \KOMAScript{} classes and a working
-% \Option{markcase}. However, in this case I would have to redefine the
-% initial page style \Pagestyle{fancy} and the layers above.
+% \opt{markcase}. However, in this case I would have to redefine the
+% initial page style \pstyle{fancy} and the layers above.
%
% \iffalse
%</package>
diff --git a/macros/latex/contrib/scrlayer-fancyhdr/scrlayer-fancyhdr.pdf b/macros/latex/contrib/scrlayer-fancyhdr/scrlayer-fancyhdr.pdf
index 64feb86196..1ebb80f9a3 100644
--- a/macros/latex/contrib/scrlayer-fancyhdr/scrlayer-fancyhdr.pdf
+++ b/macros/latex/contrib/scrlayer-fancyhdr/scrlayer-fancyhdr.pdf
Binary files differ
diff --git a/macros/xetex/latex/bidi/README b/macros/xetex/latex/bidi/README
index 899f18ab23..ec33702379 100644
--- a/macros/xetex/latex/bidi/README
+++ b/macros/xetex/latex/bidi/README
@@ -1,6 +1,6 @@
___________________
The bidi package
-v38.8
+v38.9
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: 2022/07/07
+Current version release date: 2022/07/08
___________________________________________
Vafa Khalighi
diff --git a/macros/xetex/latex/bidi/bidi-doc-intro.ltx b/macros/xetex/latex/bidi/bidi-doc-intro.ltx
index 60e0298195..4dfd97184c 100644
--- a/macros/xetex/latex/bidi/bidi-doc-intro.ltx
+++ b/macros/xetex/latex/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--2022 Vafa Khalighi
* Copyright (c) 2018--2020 bidi-tex GitHub Organization
*
-* v38.8, 2022/07/07
+* v38.9, 2022/07/08
*
* License: LaTeX Project Public License, version
* 1.3c or higher (your choice)
diff --git a/macros/xetex/latex/bidi/bidi-doc-title.ltx b/macros/xetex/latex/bidi/bidi-doc-title.ltx
index a41639564c..b2f3bd6c68 100644
--- a/macros/xetex/latex/bidi/bidi-doc-title.ltx
+++ b/macros/xetex/latex/bidi/bidi-doc-title.ltx
@@ -3,7 +3,7 @@
\begin{document}
\title{\textcolor{blue!65!black}{\Huge The \textsf{bidi} \textit{Package}}\\
\LARGE Bidirectional typesetting in plain \TeX{} and \LaTeX, using \XeTeX{} engine\\[5pt]
-\large User documentation for \textcolor{blue!65!black}{version 38.8}}
+\large User documentation for \textcolor{blue!65!black}{version 38.9}}
\author{Vafa Khalighi\thanks{Thanks to the bidi-tex GitHub organization consisted of David Carlisle and other members of the {\LaTeX} team to maintain the package in the period 2018--2020.}}
\setcounter{page}{0}
\thispagestyle{empty}
@@ -13,7 +13,7 @@
\textcolor{blue!65!black}{\Huge The \textsf{bidi} \textit{Package}}
\Large
-User documentation for \textcolor{blue!65!black}{version 38.8}}
+User documentation for \textcolor{blue!65!black}{version 38.9}}
\vskip 0pt plus 3fill
\textit{\large to my Master, \textbf{Ferdowsi The Great}}
diff --git a/macros/xetex/latex/bidi/bidi-doc.ltx b/macros/xetex/latex/bidi/bidi-doc.ltx
index 62c0367b6b..3685e42d94 100644
--- a/macros/xetex/latex/bidi/bidi-doc.ltx
+++ b/macros/xetex/latex/bidi/bidi-doc.ltx
@@ -1,7 +1,7 @@
\documentclass{ltxdoc}
\input{bidi-doc-preamble.ltx}
\hypersetup{%
- pdftitle={User documentation for version 38.8 of the bidi
+ pdftitle={User documentation for version 38.9 of the bidi
package}%
}
\begin{document}
diff --git a/macros/xetex/latex/bidi/bidi-doc.pdf b/macros/xetex/latex/bidi/bidi-doc.pdf
index f11d351eb2..148d9b2446 100644
--- a/macros/xetex/latex/bidi/bidi-doc.pdf
+++ b/macros/xetex/latex/bidi/bidi-doc.pdf
Binary files differ
diff --git a/macros/xetex/latex/bidi/bidi.dtx b/macros/xetex/latex/bidi/bidi.dtx
index fb51918f19..61139521fc 100644
--- a/macros/xetex/latex/bidi/bidi.dtx
+++ b/macros/xetex/latex/bidi/bidi.dtx
@@ -5,7 +5,7 @@
%<*readme>
___________________
The bidi package
-v38.8
+v38.9
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: 2022/07/07
+Current version release date: 2022/07/08
___________________________________________
Vafa Khalighi
@@ -267,7 +267,7 @@ by Vafa Khalighi.
\documentclass{ltxdoc}
\input{bidi-doc-preamble.ltx}
\hypersetup{%
- pdftitle={Source documentation for version 38.8 of the bidi
+ pdftitle={Source documentation for version 38.9 of the bidi
package}%
}
\EnableCrossrefs
@@ -286,7 +286,7 @@ by Vafa Khalighi.
% \GetFileInfo{\jobname.dtx}
% \title{\textcolor{blue!65!black}{\Huge The \textsf{bidi} \textit{Package}}\\
%\LARGE Bidirectional typesetting in plain \TeX{} and \LaTeX, using \XeTeX{} engine\\[5pt]
-%\large Source documentation for \textcolor{blue!65!black}{version 38.8}}
+%\large Source documentation for \textcolor{blue!65!black}{version 38.9}}
% \author{Vafa Khalighi\thanks{Thanks to the bidi-tex GitHub organization consisted of David Carlisle and other members of the {\LaTeX} team to maintain the package in the period 2018--2020.}}
%\setcounter{page}{0}
%\thispagestyle{empty}
@@ -296,7 +296,7 @@ by Vafa Khalighi.
%\textcolor{blue!65!black}{\Huge The \textsf{bidi} \textit{Package}}
%
%\Large
-%Source documentation for \textcolor{blue!65!black}{version 38.8}}
+%Source documentation for \textcolor{blue!65!black}{version 38.9}}
%
%\vskip 0pt plus 3fill
%\textit{\large to my Master, \textbf{Ferdowsi The Great}}
@@ -345,7 +345,7 @@ by Vafa Khalighi.
%\iffalse
%<*table>
%\fi
-%% \CheckSum{55450}
+%% \CheckSum{55452}
%% \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
@@ -4589,8 +4589,8 @@ by Vafa Khalighi.
% \section{File \texttt{bidi.sty}}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\def\bididate{2022/07/07}
-\def\bidi@version{38.8}
+\def\bididate{2022/07/08}
+\def\bidi@version{38.9}
\ProvidesPackage{bidi}[\bididate\space v\bidi@version\space
Bidirectional typesetting in plain TeX and LaTeX]
\edef\@bidi@info{****************************************************^^J%
@@ -4677,7 +4677,7 @@ Bidirectional typesetting in plain TeX and LaTeX]
}
\newcommand*{\@bidi@pdfcustomproperties}{%
This is the bidi package, Version \bidi@version,
- Released July 7, 2022.
+ Released July 8, 2022.
}
\newcommand*{\bidi@beamer@ragged}{}
\@RTLmainfalse
@@ -4921,9 +4921,9 @@ Bidirectional typesetting in plain TeX and LaTeX]
%\fi
% \section{File \texttt{bidi.tex}}
% \begin{macrocode}
-\def\bididate{2022/07/07}
+\def\bididate{2022/07/08}
\catcode`@=11
-\def\bidi@version{38.8}
+\def\bidi@version{38.9}
\let \protect \relax
\newlinechar`\^^J
\edef\@bidi@info{****************************************************^^J%
@@ -5025,7 +5025,7 @@ Bidirectional typesetting in plain TeX and LaTeX]
}
\def\@bidi@pdfcustomproperties{%
This is the bidi package, Version \bidi@version,
- Released July 7, 2022.
+ Released July 8, 2022.
}
\def\bidi@pdfm@mark{%
\special{pdf:%
@@ -12541,7 +12541,7 @@ bidi implementation of tufte title]
%\fi
% \section{File \texttt{extrafootnotefeatures-xetex-bidi.def}}
% \begin{macrocode}
-\ProvidesFile{extrafootnotefeatures-xetex-bidi.def}[2022/07/07 v2.0 bidi extra footnote features for XeTeX engine]
+\ProvidesFile{extrafootnotefeatures-xetex-bidi.def}[2022/07/08 v2.1 bidi extra footnote features for XeTeX engine]
\newdimen\bidi@columnwidth
\def\bidi@floathook{%
\bidi@columnwidth\columnwidth
@@ -14207,6 +14207,7 @@ bidi implementation of tufte title]
\@onlypreamble\bidi@xparaskip
\bidi@ensure@newcommand{\paragraphfootnotes}{%
\@namedef{foottextfontv@r}{\foottextfont}% % [RS]
+ \@namedef{foottextfontv@l}{\LTRfoottextfont}%
\@bidi@before@Hy@hyperfootnotes
\let\@footnotetext\@parafootnotetext
\let\@LTRfootnotetext\@paraLTRfootnotetext
diff --git a/macros/xetex/latex/bidi/bidi.pdf b/macros/xetex/latex/bidi/bidi.pdf
index 5e02b38f3e..51735ff417 100644
--- a/macros/xetex/latex/bidi/bidi.pdf
+++ b/macros/xetex/latex/bidi/bidi.pdf
Binary files differ