summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-01-12 03:01:12 +0000
committerNorbert Preining <norbert@preining.info>2024-01-12 03:01:12 +0000
commit1748d1e662c9618cc16f80d5e67669e9e9d6d4be (patch)
tree7d46019dbae3fa8e0345487ecf524cfc641f1b2a /macros
parentb14090c9f3c7797e26fed9eb2b83ce144dcb16a3 (diff)
CTAN sync 202401120301
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/eolang/LICENSE.txt2
-rw-r--r--macros/latex/contrib/eolang/README.md2
-rw-r--r--macros/latex/contrib/eolang/eolang.124
-rw-r--r--macros/latex/contrib/eolang/eolang.dtx92
-rw-r--r--macros/latex/contrib/eolang/eolang.ins4
-rw-r--r--macros/latex/contrib/eolang/eolang.pdfbin1937780 -> 1940589 bytes
-rwxr-xr-xmacros/latex/contrib/eolang/eolang.pl153
-rw-r--r--macros/latex/contrib/ffcode/ffcode.dtx12
-rw-r--r--macros/latex/contrib/ffcode/ffcode.pdfbin514867 -> 517724 bytes
-rw-r--r--macros/latex/contrib/lwarp/README.txt2
-rw-r--r--macros/latex/contrib/lwarp/lwarp.dtx966
-rw-r--r--macros/latex/contrib/lwarp/lwarp.ins2
-rw-r--r--macros/latex/contrib/lwarp/lwarp.pdfbin3442544 -> 3463244 bytes
-rwxr-xr-xmacros/latex/contrib/lwarp/lwarpmk.lua2
-rw-r--r--macros/latex/contrib/medmath/README3
-rw-r--r--macros/latex/contrib/medmath/medmath.pdfbin0 -> 22985 bytes
-rw-r--r--macros/latex/contrib/medmath/medmath.sty110
-rw-r--r--macros/latex/contrib/medmath/medmath.tex83
-rw-r--r--macros/latex/contrib/pgfkeysearch/README.md6
-rw-r--r--macros/latex/contrib/pgfkeysearch/doc/pgfkeysearch.pdfbin164138 -> 167464 bytes
-rw-r--r--macros/latex/contrib/pgfkeysearch/doc/pgfkeysearch.tex15
-rw-r--r--macros/latex/contrib/pgfkeysearch/latex/pgfkeysearch.sty28
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdfbin1462171 -> 1462653 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex4
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdfbin59868 -> 59733 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.tex4
-rw-r--r--macros/latex/contrib/proflycee/tex/ProfLycee.sty4
-rw-r--r--macros/latex/contrib/proflycee/tex/proflycee-tools-listings.tex17
-rw-r--r--macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex9
-rw-r--r--macros/latex/contrib/superiors/README34
-rw-r--r--macros/latex/contrib/superiors/doc/footsnippet1-crop.pdfbin0 -> 25447 bytes
-rw-r--r--macros/latex/contrib/superiors/doc/footsnippet1.tex72
-rw-r--r--macros/latex/contrib/superiors/doc/footsnippet2-crop.pdfbin0 -> 26459 bytes
-rw-r--r--macros/latex/contrib/superiors/doc/footsnippet2.tex73
-rw-r--r--macros/latex/contrib/superiors/doc/footsnippet3-crop.pdfbin0 -> 23591 bytes
-rw-r--r--macros/latex/contrib/superiors/doc/footsnippet3.tex66
-rw-r--r--macros/latex/contrib/superiors/doc/footsnippet4-crop.pdfbin0 -> 24158 bytes
-rw-r--r--macros/latex/contrib/superiors/doc/footsnippet4.tex67
-rw-r--r--macros/latex/contrib/superiors/doc/libfoot0-crop.pdfbin0 -> 5976 bytes
-rw-r--r--macros/latex/contrib/superiors/doc/libfoot1-crop.pdfbin0 -> 6114 bytes
-rw-r--r--macros/latex/contrib/superiors/doc/stempelfoot0-crop.pdfbin0 -> 8047 bytes
-rw-r--r--macros/latex/contrib/superiors/doc/stempelfoot1-crop.pdfbin0 -> 8974 bytes
-rw-r--r--macros/latex/contrib/superiors/doc/superiors-doc.pdfbin0 -> 277782 bytes
-rw-r--r--macros/latex/contrib/superiors/doc/superiors-doc.tex286
-rw-r--r--macros/latex/contrib/superiors/tex/superiors.sty239
-rw-r--r--macros/latex/contrib/tikzquests/README.md3
-rw-r--r--macros/latex/contrib/tikzquests/doc/tikzquests.pdfbin348067 -> 356126 bytes
-rw-r--r--macros/latex/contrib/tikzquests/doc/tikzquests.tex54
-rw-r--r--macros/latex/contrib/tikzquests/latex/tikzquests.sty37
-rw-r--r--macros/latex/contrib/verifycommand/README.txt25
-rw-r--r--macros/latex/contrib/verifycommand/verifycommand.dtx1171
-rw-r--r--macros/latex/contrib/verifycommand/verifycommand.ins47
-rw-r--r--macros/latex/contrib/verifycommand/verifycommand.pdfbin0 -> 226262 bytes
-rw-r--r--macros/unicodetex/latex/fontsetup/README2
-rw-r--r--macros/unicodetex/latex/fontsetup/doc/fontsetup-doc.pdfbin558963 -> 565890 bytes
-rw-r--r--macros/unicodetex/latex/fontsetup/doc/fontsetup-doc.tex43
-rw-r--r--macros/unicodetex/latex/fontsetup/doc/fspsample.pdfbin0 -> 35019 bytes
-rw-r--r--macros/unicodetex/latex/fontsetup/doc/fspsample.tex8
-rw-r--r--macros/unicodetex/latex/fontsetup/tex/fontsetup.sty2
-rw-r--r--macros/unicodetex/latex/fontsetup/tex/fspdefault.tex61
-rw-r--r--macros/unicodetex/latex/fontsetup/tex/fspolddefault.tex62
61 files changed, 3586 insertions, 310 deletions
diff --git a/macros/latex/contrib/eolang/LICENSE.txt b/macros/latex/contrib/eolang/LICENSE.txt
index 5744f745f0..1f211e0287 100644
--- a/macros/latex/contrib/eolang/LICENSE.txt
+++ b/macros/latex/contrib/eolang/LICENSE.txt
@@ -1,6 +1,6 @@
(The MIT License)
-Copyright (c) 2021-2023 Yegor Bugayenko
+Copyright (c) 2021-2024 Yegor Bugayenko
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the 'Software'), to deal
diff --git a/macros/latex/contrib/eolang/README.md b/macros/latex/contrib/eolang/README.md
index 588b155780..47fa929241 100644
--- a/macros/latex/contrib/eolang/README.md
+++ b/macros/latex/contrib/eolang/README.md
@@ -22,7 +22,7 @@ x -> [
\end{document}
```
-Otherwise, you can download [`eolang.sty`](https://yegor256.github.io/eolang/eolang.sty) and add to your project.
+Otherwise, you can download [`eolang.sty`](https://yegor256.github.io/eolang.sty) and add to your project.
If you want to contribute yourself, make a fork, then create a branch,
then run `l3build ctan` in the root directory.
diff --git a/macros/latex/contrib/eolang/eolang.1 b/macros/latex/contrib/eolang/eolang.1
new file mode 100644
index 0000000000..bcac9db30d
--- /dev/null
+++ b/macros/latex/contrib/eolang/eolang.1
@@ -0,0 +1,24 @@
+.TH eolang 1 "2024-01-11"
+.SH NAME
+eolang \- Automated Editor of TeX Files that Use "eolang" Package
+.SH SYNOPSIS
+eolang [<options>] <.tex source file path> <.tex target file path>
+.SH DESCRIPTION
+The eolang tool is a Perl script for automatically modifying
+TeX files that use "eolang" package, helping them pass post-processing
+checks in ACM, arXiv, IEEE, and other publishers.
+.SH OPTIONS
+Various options apply:
+.IP --version
+Print the version of the tool
+.IP --help
+Print the introduction screen
+.IP --verbose
+Print debugging information too
+.SH AUTHOR
+Yegor Bugayenko (yegor256@gmail.com)
+.SH BUGS
+Please log issues on the GitHub homepage:
+https://github.com/objectionary/eolang.sty/issues.
+.SH SEE ALSO
+See eolang.pdf for more details.
diff --git a/macros/latex/contrib/eolang/eolang.dtx b/macros/latex/contrib/eolang/eolang.dtx
index 9e1bd88e9d..262c10f2ca 100644
--- a/macros/latex/contrib/eolang/eolang.dtx
+++ b/macros/latex/contrib/eolang/eolang.dtx
@@ -1,7 +1,7 @@
% \iffalse meta-comment
% (The MIT License)
%
-% Copyright (c) 2021-2023 Yegor Bugayenko
+% Copyright (c) 2021-2024 Yegor Bugayenko
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the 'Software'), to deal
@@ -50,7 +50,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{eolang}
%<*package>
-[2024-01-02 0.17.1 Formulas and Graphs for EO Programming Language]
+[2024-01-11 0.18.0 Formulas and Graphs for EO Programming Language]
%</package>
%<*driver>
\documentclass{ltxdoc}
@@ -426,6 +426,19 @@
%</verb>
%\fi
+% \DescribeMacro{noshell}
+% You may prohibit any interactions with the shell by using the |noshell| option. This may be helpful when you send your document
+% for outside processing and want to make sure the compilation won't break due to shell errors:
+%\iffalse
+%<*verb>
+%\fi
+\begin{verbatim}
+\usepackage[noshell]{eolang}
+\end{verbatim}
+%\iffalse
+%</verb>
+%\fi
+
% \section{More Examples}
% The |phiquation| environment treats ends of line as signals to start
@@ -757,7 +770,7 @@
% \end{macrocode}
% We need \href{https://ctan.org/pkg/iexec}{iexec} for executing Perl scripts:
% \begin{macrocode}
-\RequirePackage{iexec}
+\ifdefined\eolang@noshell\else\RequirePackage{iexec}\fi
% \end{macrocode}
% Then, we process package options:
@@ -774,6 +787,7 @@
tmpdir/.default=_eolang\ifxetex-xe\else\ifluatex-lua\fi\fi,
nocomments/.store in=\eolang@nocomments,
anonymous/.store in=\eolang@anonymous,
+ noshell/.store in=\eolang@noshell,
tmpdir
}
\ProcessPgfPackageOptions{/eolang}
@@ -781,21 +795,29 @@
% Then, we make a directory where all temporary files will be kept:
% \begin{macrocode}
-\RequirePackage{shellesc}
+\makeatletter
+\ifdefined\eolang@noshell\else\RequirePackage{shellesc}\fi
\IfFileExists
{\eolang@tmpdir/\jobname}
{\message{eolang: Temporary directory "\eolang@tmpdir/\jobname"
already exists^^J}}
- {%
- \ifnum\ShellEscapeStatus=1%
- \iexec[null]{mkdir -p "\eolang@tmpdir/\jobname"}%
- \else%
+ {
+ \ifdefined\eolang@noshell
\message{eolang: Temporary directory "\eolang@tmpdir/\jobname"
- is not created, because -shell-escape is not set, and
- it doesn't exist, most probably the compilation
- will fail later^^J}%
- \fi%
+ is not created, because of the "noshell" package option,
+ most probably the compilation will fail later^^J}
+ \else
+ \ifnum\ShellEscapeStatus=1
+ \iexec[null]{mkdir -p "\eolang@tmpdir/\jobname"}
+ \else
+ \message{eolang: Temporary directory "\eolang@tmpdir/\jobname"
+ is not created, because -shell-escape is not set, and
+ it doesn't exist, most probably the compilation
+ will fail later^^J}
+ \fi
+ \fi
}
+\makeatother
% \end{macrocode}
% \begin{macro}{\eolang@lineno}
@@ -840,6 +862,11 @@
% \href{https://ctan.org/pkg/fancyvrb}{fancyvrb}:
% \begin{macrocode}
\makeatletter
+\ifdefined\eolang@noshell
+ \message{eolang: Perl script is not going to be created,
+ at "\eolang@tmpdir/\jobname-phi.pl" because of the "noshell"
+ package option^^J}
+\else
\openin 15=\eolang@tmpdir/\jobname-phi.pl
\ifeof 15
\message{eolang: Perl script is going to be created,
@@ -850,7 +877,7 @@
$macro = $ARGV[0];
open(my $fh, '<', $ARGV[1]);
my $tex; { local $/; $tex = <$fh>; }
-print "% This file is auto-generated by 0.17.1\n";
+print "% This file is auto-generated by 0.18.0\n";
print '% There are ', length($tex),
' chars in the input: ', $ARGV[1], "\n";
print '% ---', "\n";
@@ -986,7 +1013,7 @@ $tex =~ s/\|{2,}/|/g;
$tex =~ s/\|([^\|]+)\|/\\textnormal{\\texttt{\1}}{}/g;
$tex =~ s/\{TEXT(\d+)\}/'\\text{' . @texts[$1] . '}';/ge;
if ($macro eq 'phiq') {
- print '$' if ($tex ne '');
+ print '\(' if ($tex ne '');
} else {
print '\begin{', $macro, "}\n";
if (not($align)) {
@@ -1003,7 +1030,7 @@ if ($gathered and not($align)) {
}
print $tex;
if ($macro eq 'phiq') {
- print '$' if ($tex ne '');
+ print '\)' if ($tex ne '');
} else {
if (not($align)) {
if ($gathered) {
@@ -1023,6 +1050,7 @@ print '\endinput';
"\eolang@tmpdir/\jobname-phi.pl"^^J}
\fi
\closein 15
+\fi
\makeatother
% \end{macrocode}
% \end{macro}
@@ -1039,6 +1067,7 @@ print '\endinput';
% \begin{macro}{\eolang@ifabsent}
% \changes{0.17.0}{2023/12/28}{A new supplementary \texttt{eolang@ifabsent} command added}
+% \changes{0.18.0}{2024/01/09}{The \texttt{noshell} package option added in order to enable complete prohibition of shell interactions.}
% Then, we define the |\eolang@ifabsent| command, which if a given file is absent, runs a processing command, otherwise just inputs it:
% \begin{macrocode}
\makeatletter
@@ -1049,12 +1078,16 @@ print '\endinput';
\message{eolang: File "#1" already exists ^^J}%
\input{#1}}
{%
- \ifnum\ShellEscapeStatus=1\else%
- \message{eolang: The -shell-escape command line
- option is not provided, most probably compilation
- will fail now:^^J}%
+ \ifdefined\eolang@noshell%
+ \message{eolang: Shell processing is disabled^^J}%
+ \else%
+ \ifnum\ShellEscapeStatus=1\else%
+ \message{eolang: The -shell-escape command line
+ option is not provided, most probably compilation
+ will fail now:^^J}%
+ \fi%
+ #2%
\fi%
- #2%
}%
}
\makeatother
@@ -1070,15 +1103,15 @@ print '\endinput';
\def\hash{\eolang@mdfive
{\eolang@tmpdir/\jobname/phiquation.tex}-\the\inputlineno}%
\eolang@ifabsent
- {\eolang@tmpdir/\jobname/\hash-post.tex}
+ {\eolang@tmpdir/\jobname/\hash-phiquation-post.tex}
{%
\iexec[null]{cp "\eolang@tmpdir/\jobname/phiquation.tex"
- "\eolang@tmpdir/\jobname/\hash.tex"}%
+ "\eolang@tmpdir/\jobname/\hash-phiquation.tex"}%
\message{Start parsing 'phi' at line no. \the\inputlineno^^J}
- \iexec[trace,stdout=\eolang@tmpdir/\jobname/\hash-post.tex]{
+ \iexec[trace,stdout=\eolang@tmpdir/\jobname/\hash-phiquation-post.tex]{
perl "\eolang@tmpdir/\jobname-phi.pl"
'#1'
- "\eolang@tmpdir/\jobname/\hash.tex"
+ "\eolang@tmpdir/\jobname/\hash-phiquation.tex"
\ifdefined\eolang@nocomments | perl -pe 's/\%.*(\\n|$)//g'\fi
\ifdefined\eolang@phiSaveTo > \eolang@phiSaveTo\fi}%
}%
@@ -1123,6 +1156,7 @@ print '\endinput';
perl \eolang@tmpdir/\jobname-phi.pl 'phiq'
"\eolang@tmpdir/\jobname/\hash-phiq.tex"
\ifdefined\eolang@nocomments | perl -pe 's/\%.*(\\n|$)//g' \fi}%
+ \message{eolang: Parsed `phiq' at line no. \the\inputlineno^^J}%
}%
\ifdefined\eolang@nodollar\else\catcode`\$\active\fi%
}\makeatother
@@ -1163,6 +1197,11 @@ print '\endinput';
% \href{https://ctan.org/pkg/fancyvrb}{fancyvrb}:
% \begin{macrocode}
\makeatletter
+\ifdefined\eolang@noshell
+\message{eolang: Perl script is not going to be created
+ at "\eolang@tmpdir/\jobname-sodg.pl", because of the
+ "noshell" package option^^J}
+\else
\openin 15=\eolang@tmpdir/\jobname-sodg.pl
\ifeof 15
\message{eolang: Perl script is going to be created,
@@ -1448,6 +1487,7 @@ print '\endinput';
"\eolang@tmpdir/\jobname-sodg.pl"^^J}
\fi
\closein 15
+\fi
\makeatother
% \end{macrocode}
% \end{macro}
@@ -1590,11 +1630,11 @@ print '\endinput';
{\eolang@tmpdir/\jobname/\hash-sodg-post.tex}
{%
\iexec[null]{cp "\eolang@tmpdir/\jobname/sodg.tex"
- "\eolang@tmpdir/\jobname/\hash.tex"}%
+ "\eolang@tmpdir/\jobname/\hash-sodg.tex"}%
\message{eolang: Start parsing `sodg' at line no. \the\inputlineno^^J}
\iexec[trace,stdout=\eolang@tmpdir/\jobname/\hash-sodg-post.tex]{
perl "\eolang@tmpdir/\jobname-sodg.pl"
- "\eolang@tmpdir/\jobname/\hash.tex"
+ "\eolang@tmpdir/\jobname/\hash-sodg.tex"
\ifdefined\eolang@nocomments | perl -pe 's/\%.*(\\n|$)//g'\fi
\ifdefined\eolang@sodgSaveTo > \eolang@sodgSaveTo\fi}%
}
diff --git a/macros/latex/contrib/eolang/eolang.ins b/macros/latex/contrib/eolang/eolang.ins
index 329210aa0f..ab60ddb1f4 100644
--- a/macros/latex/contrib/eolang/eolang.ins
+++ b/macros/latex/contrib/eolang/eolang.ins
@@ -1,6 +1,6 @@
%% (The MIT License)
%%
-%% Copyright (c) 2021-2023 Yegor Bugayenko
+%% Copyright (c) 2021-2024 Yegor Bugayenko
%%
%% Permission is hereby granted, free of charge, to any person obtaining a copy
%% of this software and associated documentation files (the 'Software'), to deal
@@ -26,7 +26,7 @@
\preamble
(The MIT License)
-Copyright (c) 2021-2023 Yegor Bugayenko
+Copyright (c) 2021-2024 Yegor Bugayenko
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the 'Software'), to deal
diff --git a/macros/latex/contrib/eolang/eolang.pdf b/macros/latex/contrib/eolang/eolang.pdf
index 759f2c3ac6..23028cf96a 100644
--- a/macros/latex/contrib/eolang/eolang.pdf
+++ b/macros/latex/contrib/eolang/eolang.pdf
Binary files differ
diff --git a/macros/latex/contrib/eolang/eolang.pl b/macros/latex/contrib/eolang/eolang.pl
new file mode 100755
index 0000000000..3ac32331a4
--- /dev/null
+++ b/macros/latex/contrib/eolang/eolang.pl
@@ -0,0 +1,153 @@
+#!/usr/bin/perl
+# (The MIT License)
+#
+# Copyright (c) 2022-2024 Yegor Bugayenko
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the 'Software'), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+# 2024-01-11 0.18.0
+package eolang;
+
+use warnings;
+use strict;
+use File::Basename;
+
+# Hash of incoming command line arguments.
+my %args = map { $_ => 1 } @ARGV;
+
+# Read file content.
+sub readfile {
+ my ($path) = @_;
+ open(my $h, '<', $path) or die('Cannot open file: ' . $path);
+ my $content; { local $/; $content = <$h>; }
+ return $content;
+}
+
+# Save content to file.
+sub savefile {
+ my ($path, $content) = @_;
+ open(my $f, '>', $path) or error('Cannot open file for writing: ' . $path);
+ print $f $content;
+ close($f);
+}
+
+# Print INFO message to the console.
+sub info {
+ my ($txt) = @_;
+ print $txt . "\n";
+}
+
+# Print DEBUG message to the console.
+sub debug {
+ my ($txt) = @_;
+ if (exists $args{'--verbose'}) {
+ print $txt . "\n";
+ }
+}
+
+# Print ERROR message to the console.
+sub error {
+ my ($txt) = @_;
+ print STDERR $txt . "\n";
+}
+
+if (@ARGV+0 eq 0 or exists $args{'--help'} or exists $args{'-?'}) {
+ info("This script helps embedding \\phiquation and \\phiq into .tex document\n\n" .
+ "Usage:\n" .
+ " eolang [<options>] <.tex file path>\n\n" .
+ "Options:\n" .
+ " -v, --version Print the current version of the tool and exit\n" .
+ " -?, --help Print this help screen\n" .
+ " --verbose Print all possible debugging information\n" .
+ " --tmpdir=path Temp directory with .tex files ('_eolang' by default)\n\n" .
+ "If any issues, report to GitHub: https://github.com/yegor256/bibcop");
+} elsif (exists $args{'--version'} or exists $args{'-v'}) {
+ info('0.18.0 2024-01-11');
+} else {
+ my ($src, $target) = grep { not($_ =~ /^-.*$/) } @ARGV;
+ if (not $src) {
+ error('Source file name must be specified');
+ exit(1);
+ }
+ debug('Source: ' . $src);
+ my $job = basename($src);
+ $job =~ s/\.[^.]+$//;
+ debug('Job name: ' . $job);
+ my $tex = readfile($src);
+ my $tmpdir = dirname($src) . '/_eolang/' . $job;
+ debug('EO tmpdir: ' . $tmpdir);
+ foreach my $f (glob($tmpdir . '/*-phiq.tex')) {
+ my $id = basename($f);
+ $id =~ s/\.[^.]+$//;
+ $id =~ s/-phiq$//;
+ my $phiq = readfile($f);
+ $phiq =~ s/^\s+|\s+$//g;
+ my $search = quotemeta($phiq);
+ $search =~ s/(\\\\[a-zA-Z]+)\\ /$1\\ ?/g;
+ $search = '\\\\phiq\\s*\\{\\s*' . $search . '\\s*\\}|\\$\\s*' . $search . '\\s*\\$';
+ my $re = '\input{' . $tmpdir . '/' . $id . '-phiq-post.tex' . "}";
+ my $count = 0;
+ while (1) {
+ my $applied = $tex =~ s/${search}/${re}/g;
+ if (!$applied) {
+ if ($count eq 0) {
+ debug("Neither \\phiq{$phiq} nor \$$phiq\$ found, suggested by $f");
+ }
+ last;
+ }
+ debug('\\phiq ' . $id . '( ' . $phiq . ' ) -> ' . $re);
+ $count += 1;
+ }
+ }
+ my @kinds = ('sodg', 'phiquation', 'phiquation*');
+ for my $kind (@kinds) {
+ my $k = $kind;
+ $k =~ s/\*$//;
+ foreach my $f (glob($tmpdir . '/*-' . $k . '.tex')) {
+ my $id = basename($f);
+ $id =~ s/\.[^.]+$//;
+ $id =~ s/-${k}$//;
+ my $search = quotemeta(readfile($f));
+ $search = '\\\\begin\\s*\\{\\s*' . quotemeta($kind) . '\\s*\\}\\n' . $search . '\\\\end\\s*\\{\\s*' . quotemeta($kind) . '\\s*\\}\\n';
+ my $re = '\input{' . $tmpdir . '/' . $id . '-' . $k . '-post.tex' . "}\% '$kind' replaced\n\n";
+ my $count = 0;
+ while (1) {
+ my $applied = $tex =~ s/${search}/${re}/g;
+ if (!$applied) {
+ if ($count eq 0) {
+ debug("Didn't find \\begin{$kind} suggested by $f");
+ }
+ last;
+ }
+ debug('\\begin{' . $kind . '} ' . $id . ' -> ' . $re);
+ $count += 1;
+ }
+ }
+ }
+ if (not $target) {
+ error('Target file name must be specified');
+ exit(1);
+ }
+ debug('Target: ' . $target);
+ savefile($target, $tex);
+ info("New TeX file save to: ". $target);
+}
+
+# In order to finish it with success:
+1;
diff --git a/macros/latex/contrib/ffcode/ffcode.dtx b/macros/latex/contrib/ffcode/ffcode.dtx
index ffd57f6d02..06a7db10b6 100644
--- a/macros/latex/contrib/ffcode/ffcode.dtx
+++ b/macros/latex/contrib/ffcode/ffcode.dtx
@@ -50,7 +50,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{ffcode}
%<*package>
-[2024-01-10 0.9.0 Fixed Font Code]
+[2024-01-11 0.9.1 Fixed Font Code]
%</package>
%<*driver>
\documentclass{ltxdoc}
@@ -245,6 +245,10 @@
% \begin{macrocode}
\RequirePackage{xcolor}
\RequirePackage{listings}
+\makeatletter
+% See \href{https://tex.stackexchange.com/questions/706858}{the explanation}:
+\lst@AddToHook{Init}{\setlength{\lineskip}{0pt}}
+\makeatother
% \end{macrocode}
% \begin{macro}{ffcode}
@@ -261,8 +265,10 @@
\lstset{numbers=left,numbersep=5pt,numberstyle={\tiny\sffamily\color{gray}}}
\fi
\ifdefined\ff@nobars\else
- \lstset{frame=leftline,framerule=.3pt,rulecolor={\color{gray}}}
- \ifdefined\ff@nocn\else\fi
+ \lstset{frame=leftline,framerule=.4pt,rulecolor={\color{gray}}}
+ \ifdefined\ff@nocn\else
+ \lstset{firstnumber=last}
+ \fi
\lstset{#1}
}
{}
diff --git a/macros/latex/contrib/ffcode/ffcode.pdf b/macros/latex/contrib/ffcode/ffcode.pdf
index 5729a423d3..1228e80779 100644
--- a/macros/latex/contrib/ffcode/ffcode.pdf
+++ b/macros/latex/contrib/ffcode/ffcode.pdf
Binary files differ
diff --git a/macros/latex/contrib/lwarp/README.txt b/macros/latex/contrib/lwarp/README.txt
index 5d40622028..cfd5523f67 100644
--- a/macros/latex/contrib/lwarp/README.txt
+++ b/macros/latex/contrib/lwarp/README.txt
@@ -1,5 +1,5 @@
-LaTeX lwarp package v0.913 README.txt
+LaTeX lwarp package v0.914 README.txt
Files included are:
diff --git a/macros/latex/contrib/lwarp/lwarp.dtx b/macros/latex/contrib/lwarp/lwarp.dtx
index efd097b79c..dd633f53a8 100644
--- a/macros/latex/contrib/lwarp/lwarp.dtx
+++ b/macros/latex/contrib/lwarp/lwarp.dtx
@@ -16,7 +16,7 @@
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{lwarp}
-%<package> [2024/01/05 v0.913 Allows LaTeX to directly produce HTML5 output.]
+%<package> [2024/01/11 v0.914 Allows LaTeX to directly produce HTML5 output.]
%
%<*driver>
\documentclass{ltxdoc}
@@ -3429,6 +3429,7 @@ This boolean may be tested by the user for later use.
% \changes{v0.911}{2023/02/28}{\ 2023/02/28}
% \changes{v0.912}{2023/08/28}{\ 2023/08/28}
% \changes{v0.913}{2024/01/05}{\ 2024/01/05}
+% \changes{v0.914}{2024/01/11}{\ 2024/01/11}
@@ -3666,6 +3667,13 @@ This boolean may be tested by the user for later use.
% see the end of the Change History on page \pageref{sec:changesend}.
%
% \begin{description}
+% \item[v0.914:] Detects changing packages.
+% \begin{itemize}
+% \item Now verifies many definitions before patching,
+% warning of possible problems if the original has changed.
+% \item Fix: \pkg{fontawesome5} for \XeLaTeX, \LuaLaTeX.
+% \end{itemize}
+% \needspace{2\baselineskip}
% \item[v0.913:] \HTML\ sanitization for verbatims.
% \begin{itemize}
% \item Now at GitHub: \url{https://github.com/bdtc/lwarp}
@@ -13167,18 +13175,28 @@ This boolean may be tested by the user for later use.
% \DescribePackage{etoolbox} Provides \cs{ifbool} and other functions.
%
% \begin{macrocode}
-\RequirePackage{etoolbox}[2011/01/03]% v2.6 for \BeforeBeginEnvironment, etc.
+\RequirePackage{etoolbox}[2020/10/05]%
% \end{macrocode}
%
+
% Patch to fix copy of environment with a \cs{par}:
%
-% \href{https://github.com/josephwright/etoolbox/issues/35}{https://github.com/josephwright/etoolbox/issues/35}
+% \href{https://github.com/josephwright/etoolbox/issues/35}
+% {https://github.com/josephwright/etoolbox/issues/35}
+%
% \changes{v0.903}{2021/12/21}{\pkg{etoolbox}: Patch for \cs{NewCommandCopy}.}
% \begin{macrocode}
-\long\def\etb@carsquare#1#2#3\@nil{#1#2}
+\long\def\etb@carsquare#1#2#3\@nil{#1#2}%
% \end{macrocode}
+
+
+% \DescribePackage{verifycommand} Verify macros before patching.
%
-%
+% \begin{macrocode}
+\RequirePackage{verifycommand}
+% \end{macrocode}
+
+
% \DescribePackage{xpatch} Patches macros with optional arguments.
%
% \begin{macrocode}
@@ -21231,7 +21249,7 @@ MathJax = {
-- Copyright 2016-2024 Brian Dunn
-printversion = "v0.913"
+printversion = "v0.914"
requiredconfversion = "2" -- also at *lwarpmk.conf
function printhelp ()
@@ -25710,8 +25728,8 @@ end -- not --version
%
% \begin{itemize}
% \item Files are split according to |FileDepth| and |CombineHigherDepths|.
-% \item Filenames are sanitized by |\LWR@filenamenoblanks|.
-% \item |\LWR@newhtmlfile| finishes an \HTML\ page,
+% \item Filenames are sanitized by \cs{LWR@filenamenoblanks}.
+% \item \cs{LWR@newhtmlfile} finishes an \HTML\ page,
% adds a comment to tell where and how to split the file,
% then starts a new \HTML\ page.
% \end{itemize}
@@ -26545,10 +26563,7 @@ end -- not --version
\LWR@print@ttfamily
\LWR@customizedMathJax
}
-\LWR@startpars
\end{BlockClass}
-
-\LWR@startpars
}{}
}
% \end{macrocode}
@@ -27329,10 +27344,12 @@ end -- not --version
% Generate a new \LaTeX\ page so that \TOC\ and index page number points to the section:
% \begin{macrocode}
\LWR@traceinfo{LWR@section: not a new HTML file, about to LWR@orignewpage}%
+ \LWR@stoppars%
\LWR@maybe@orignewpage%
}% not new file
-
% \end{macrocode}
+% \changes{v0.914}{2024/01/10}{Fix: Extra \element{par} tag.}
+% \begin{macrocode}
%
% Remember this section's name for \cs{nameref}:
% \begin{macrocode}
@@ -27354,6 +27371,14 @@ end -- not --version
% \changes{v0.903}{2021/12/28}{Add: Sectioning \HTML\ comment divider.}
% \changes{v0.903}{2021/12/28}{Fix: Nullfiy footnotes in \HTML\ comment.}
% \changes{v0.906}{2022/06/21}{Improved \HTML\ comment divider.}
+%
+% Avoid extra \element{par} tag:
+% \changes{v0.914}{2024/01/10}{Fix: Extra \element{par} tag.}
+% \begin{macrocode}
+\LWR@stoppars%
+% \end{macrocode}
+%
+% Form a sectioning comment:
% \begin{macrocode}
\begingroup%
\LWR@nullfonts%
@@ -41359,10 +41384,12 @@ end -- not --version
%
% \codehtml
%
+% Not using \cs{VerifyCommand} for \cs{label} because various packages
+% change \cs{label}.
+%
% \changes{v0.912}{2023/08/24}{\pkg{nameref}: Allow load before \pkg{lwarp}.}
% \begin{macrocode}
\begin{warpHTML}
-
\LetLtxMacro\LWR@orig@label\label
\LetLtxMacro\label\LWR@new@label
@@ -42824,7 +42851,7 @@ color:\LWR@origpound\LWR@tempcolor%
% \begin{macro}{\sp} \marg{text}
-% For \pkg{siunitx}. Must work in math mode.
+% For \pkg{siunitx-v2}. Must work in math mode.
% \begin{macrocode}
\renewcommand{\sp}[1]{\text{<sup>#1</sup>}{}}
% \end{macrocode}
@@ -42832,7 +42859,7 @@ color:\LWR@origpound\LWR@tempcolor%
% \begin{macro}{\sb} \marg{text}
-% For \pkg{siunitx}. Must work in math mode.
+% For \pkg{siunitx-v2}. Must work in math mode.
% \begin{macrocode}
\renewcommand{\sb}[1]{\text{<sub>#1</sub>}{}}
% \end{macrocode}
@@ -43184,6 +43211,8 @@ color:\LWR@origpound\LWR@tempcolor%
% \begin{macro}{\newpage}
% \changes{v0.45}{2018/01/12}{Added.}
+%
+% Not \cs{LWR@foramtted} since cannot be used inside a \env{lateximage} anyhow.
% \begin{macrocode}
\renewcommand*{\newpage}{
@@ -45261,7 +45290,8 @@ color:\LWR@origpound\LWR@tempcolor%
\LWR@ProvidesPackagePass{acronym}[2020/04/17]
% \end{macrocode}
-% Simplifies for \HTML:
+% Simplifies for \HTML.
+% Unable to use \cs{VerifyCommand} here due to \cs{csname} being used.
% \changes{v0.905}{2022/03/21}{\pkg{acronym}: Updated to v1.47.}
% \begin{macrocode}
\expandafter\def\csname AC@\AC@prefix{}@acro\endcsname#1[#2]#3{%
@@ -45336,6 +45366,8 @@ color:\LWR@origpound\LWR@tempcolor%
% Removes the mbox to allow math inside:
% \begin{macrocode}
+\VerifyCommand[lwarp][acronym]{\AC@acs}{E2119484F7CD2A5D4B064390C6BB806F}
+
\renewcommand*\AC@acs[1]{%
% \mbox{
\expandafter\AC@get\csname fn@#1\endcsname\@firstoftwo{#1}}
@@ -45357,6 +45389,8 @@ color:\LWR@origpound\LWR@tempcolor%
% Modified for \pkg{cleveref} and \pkg{lwarp}:
% \changes{v0.66}{2019/01/27}{\pkg{acronym}: No longer uses \pkg{zref}.}
% \begin{macrocode}
+\VerifyCommand[lwarp][acronym]{\AC@und@newl@bel}{661CF70DCB3E1AA8871B26E785BE7C86}
+
\renewcommand*\AC@und@newl@bel[3]{%
\@ifundefined{#1@#3}%
{%
@@ -46031,6 +46065,9 @@ color:\LWR@origpound\LWR@tempcolor%
% \begin{macrocode}
\ifbool{mathjax}{}{% not mathjax
+\VerifyCommand[lwarp][amsmath]{\make@df@tag@@}{A5AA7B9CD20DC2C73B1D19D582C44A8E}
+\VerifyCommand[lwarp][amsmath]{\make@df@tag@@@}{670399C01F88B0E9B0874E9B129FA404}
+
\LetLtxMacro\LWR@origmake@df@tag@@\make@df@tag@@
\LetLtxMacro\LWR@origmake@df@tag@@@\make@df@tag@@@
@@ -46073,6 +46110,8 @@ color:\LWR@origpound\LWR@tempcolor%
% \begin{macrocode}
\newcounter{LWR@maxfields@}
+\VerifyCommand[lwarp][amsmath]{\start@align}{D39AF6A45F9E97A21F17EADB4D21D218}
+
\xpatchcmd{\start@align}
{\maxfields@#3\relax}
{%
@@ -46407,6 +46446,8 @@ color:\LWR@origpound\LWR@tempcolor%
% Patched to remember the style for this theorem type:
% \begin{macrocode}
+\VerifyCommand[lwarp][amsthm]{\@xnthm}{21F7FB3FB6FB0C1A0F2EECD66EE87A60}
+
\def\@xnthm#1#2{%
\csedef{LWR@thmstyle#2}{\LWR@newtheoremstyle}% lwarp
\let\@tempa\relax
@@ -46453,7 +46494,9 @@ color:\LWR@origpound\LWR@tempcolor%
\LWR@haveamsthmnote
% \end{macrocode}
%
-% Patched for \CSS:
+% Patched for \CSS.
+% Not using \cs{VerifyCommand} because the existing defintion depends
+% on other packages. The following is from \pkg{amsthm}'s own definition.
% \begin{macrocode}
\def\@begintheorem#1#2[#3]{%
% \end{macrocode}
@@ -46485,6 +46528,8 @@ color:\LWR@origpound\LWR@tempcolor%
% Patched for \CSS:
% \changes{v0.46}{2018/01/22}{\pkg{amsthm}: Adapted to \env{trivlist} changes.}
% \begin{macrocode}
+\VerifyCommand[lwarp][amsthm]{\@thm}{2624BDB5B96C45756978B3D393430088}
+
\def\@thm#1#2#3{%
\ifhmode\unskip\unskip\par\fi
\normalfont
@@ -46521,6 +46566,9 @@ color:\LWR@origpound\LWR@tempcolor%
% \cs{AtBeginDocument}.
% \begin{macrocode}
\AtBeginDocument{%
+%
+\VerifyCommand[lwarp][amsthm]{\cref@thmoptarg}{64B912D4D903D245FD05837C5838C9EC}
+%
\def\cref@thmoptarg[#1]#2#3#4{%
\ifhmode\unskip\unskip\par\fi%
\normalfont%
@@ -46792,6 +46840,8 @@ color:\LWR@origpound\LWR@tempcolor%
% \end{macrocode}
%
% \begin{macrocode}
+\VerifyCommand[lwarp][apxproof]{\FVB@axp@VerbatimOut}{ADA4853FD25696EB39CD005CF44C7B5C}
+
\xpatchcmd{\FVB@axp@VerbatimOut}
{\FV@Scan}
{\boolfalse{LWR@HTMLsanitize@tmpb@enable}\FV@Scan}
@@ -47191,6 +47241,8 @@ color:\LWR@origpound\LWR@tempcolor%
}
\AfterEndEnvironment{asy}{\end{lateximage}}
+\VerifyCommand[lwarp][asymptote]{\asyinclude}{A4F9DF668FC457768E7DFB83FAF7B343}
+
\xpatchcmd{\asyinclude}
{\begingroup}
{\begin{lateximage}[-asymptote-~\PackageDiagramAltText]}
@@ -47443,6 +47495,8 @@ color:\LWR@origpound\LWR@tempcolor%
%
% Modified for text color:
% \begin{macrocode}
+\VerifyCommand[lwarp][attachfile2]{\notextattachfile}{CE78259EFC576D4A15920EADF824D7EF}
+
\DeclareRobustCommand{\notextattachfile}[2][]{%
\begingroup
\atfi@setup{#1}%
@@ -47463,6 +47517,8 @@ color:\LWR@origpound\LWR@tempcolor%
%
% Modified to draw the icon:
% \begin{macrocode}
+\VerifyCommand[lwarp][attachfile2]{\noattachfile}{CE78259EFC576D4A15920EADF824D7EF}
+
\DeclareRobustCommand{\noattachfile}[1][]{%
\begingroup
\atfi@setup{#1}%
@@ -48539,7 +48595,10 @@ color:\LWR@origpound\LWR@tempcolor%
% \changes{v0.80}{2020/01/06}{\pkg{biblatex}: Creates hyperlinks.}
% \begin{macrocode}
\AfterPreamble{
-
+% \end{macrocode}
+%
+% Not using \cs{VerifyCommand} because this may be defined several ways.
+% \begin{macrocode}
\let\blx@anchors\@empty
\protected\def\blx@anchor{%
\xifinlist{\the\c@refsection @\abx@field@entrykey}{\blx@anchors}
@@ -48600,6 +48659,8 @@ color:\LWR@origpound\LWR@tempcolor%
% preceeded the footnotes.
% \changes{v0.896}{2021/03/25}{\pkg{biblatex}: Fix: Back references.}
% \begin{macrocode}
+\VerifyCommand[lwarp][biblatex]{\blx@addbackref@i}{C820E8B12CF2904906644302E07EBE88}
+
\xpatchcmd{\blx@addbackref@i}
{\thepage}
{\theLWR@previousautopagelabel}% ref to the most recent object
@@ -48636,6 +48697,9 @@ color:\LWR@origpound\LWR@tempcolor%
{\usebibmacro{pageref:dump}}
{}}}
+\expandafter\VerifyCommand\expandafter{\csname abx@macro@pageref:comp\endcsname}
+ {019E018D2EBB4F3D02578439F03128D8}
+
\renewbibmacro*{pageref:comp}[1]{%
\numdef\abx@range@prev{\abx@range@prev+1}%
\ifinteger{#1}
@@ -48677,6 +48741,9 @@ color:\LWR@origpound\LWR@tempcolor%
\def\abx@range@prev{-1}}%
\edef\abx@range@last{\abx@range@this}}
+\expandafter\VerifyCommand\expandafter{\csname abx@macro@pageref:dump\endcsname}
+ {9BD1165E771053A5DA8957BE4E2E7B9E}
+
\renewbibmacro*{pageref:dump}{%
\ifnumgreater{\abx@range@diff}{0}
{\ifcase\abx@pagerefstyle\relax % two
@@ -48980,12 +49047,16 @@ color:\LWR@origpound\LWR@tempcolor%
% \end{macrocode}
%
% \begin{macrocode}
+\VerifyCommand[lwarp][bitpattern]{\bitpattern}{379A39416C9C5E48DBCEEF730D51C5BF}
+
\xpatchcmd{\bitpattern}
{\begingroup}
{\begin{lateximage}[-bitpattern-~\PackageDiagramAltText]}
{}
{\LWR@patcherror{bitpattern}{bitpattern}}
+\VerifyCommand[lwarp][bitpattern]{\bp@Done}{4F2F6DDB41FE31051ACA3CA9F58E3395}
+
\xpatchcmd{\bp@Done}
{\endgroup}
{\end{lateximage}}
@@ -49926,6 +49997,8 @@ s%
%
% ^^A This could be given a permanent standardized name, then redefined by lwarp.
% \begin{macrocode}
+\VerifyCommand[lwarp][caption]{\caption@iibox@}{AD79C5FACDA9F8F9977188D922E8AC12}
+
\long\def\caption@iibox@#1#2#3#4{%
% \setbox\@tempboxa\hbox{#4}%
\caption@iiibox{#1}{#2}{#3}%
@@ -49938,6 +50011,8 @@ s%
% \end{macrocode}
%
% \begin{macrocode}
+\VerifyCommand[lwarp][caption]{\caption@iiiibox}{62FC9237FCA80F5A607BF02D88C61601}
+
\long\def\caption@iiiibox#1#2#3#4#5[#6][#7]#8{%
\begingroup
#1*% set \caption@position
@@ -49984,6 +50059,8 @@ s%
% \changes{v0.71}{2019/04/08}{\pkg{caption}: Reduced underfull \cs{hbox} warnings.}
% ^^A Lwarp could nullify \caption@make@above/bottom.
% \begin{macrocode}
+\VerifyCommand[lwarp][caption]{\caption@makecaption}{9E0A92DF71E248B2C7A3B4BB5190A2C5}
+
\long\def\caption@makecaption#1#2{%
% \caption@make@above
\caption@@make{#1}{#2}%
@@ -50017,6 +50094,8 @@ s%
% \changes{v0.904}{2022/03/04}{\pkg{caption}: Added \cs{captiontext}.}
% \begin{macrocode}
+\VerifyCommand[lwarp][caption]{\caption@@@text}{C7253081E4F8EA695FF193E21855AA0A}
+
\long\def\caption@@@text#1#2#3[#4]#5{%
\begin{BlockClass}{figurecaption}% lwarp
\begingroup
@@ -50077,6 +50156,8 @@ s%
% \marg{caption label} \marg{caption text}
% \begin{macrocode}
\IfPackageAtLeastTF{caption3}{2020/08/23}{
+\VerifyCommand[lwarp][caption3]{\caption@@@make}{F09A9BB05CE4EDF5A477D3CC2AE04F81}
+%
\renewcommand\caption@@@make[2]{%
\LWR@traceinfo{caption@@@make}%
% \end{macrocode}
@@ -50245,6 +50326,8 @@ s%
% ^^A and redefined by lwarp as follows. Most of the original
% ^^A is thrown away.
% \begin{macrocode}
+\VerifyCommand[lwarp][caption3]{\caption@@make@}{AD348E907B8F8B0BCAE57E72DE4A2035}
+%
\renewcommand{\caption@@make@}[2]{%
\caption@stepthecounter%
\caption@beginhook%
@@ -50645,6 +50728,8 @@ s%
}{}%
}
+\VerifyCommand[lwarp][changes]{\listofchanges}{CDE77F21854A8C807FDF2CF756286B55}
+
\renewcommand{\listofchanges}[1][\@empty]{%
\setkeys{Changes@loc}{#1}%
\ifbool{Changes@optiondraft}%
@@ -50652,7 +50737,8 @@ s%
\IfIsInList{\Changes@loc@style}{list|summary|compactsummary}%
{}%
{%
-\PackageWarning{changes}{Wrong style for list of changes: '\Changes@loc@style', using 'list' instead.}%
+\PackageWarning{changes}{Wrong style for list of changes:%
+ '\Changes@loc@style', using 'list' instead.}%
\def\Changes@loc@style{}%
}%
\IfIsEmpty{\Changes@loc@style}%
@@ -50780,6 +50866,7 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
}{}%
}
+\VerifyCommand[lwarp][changes]{\Changes@Markup@comment}{23057A40141C9D1A0A173DCF1BD5DE55}
\renewcommand{\Changes@Markup@comment}[3]{%
\IfStrEq{\Changes@optioncommentmarkup}{todo}%
@@ -50822,6 +50909,8 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
}{}%
}
+\VerifyCommand[lwarp][changes]{\Changes@output}{BD1ACDECB4BBA2D9181885F9EDC87F77}
+
\renewrobustcmd{\Changes@output}[7]{%
\ifbool{Changes@optiondraft}%
{%
@@ -51019,6 +51108,8 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
{\begin{lateximage}[-chemfig-~\PackageDiagramAltText]}
{}{\LWR@patcherror{chemfig}{CF_chemfiga}}
+ \VerifyCommand[lwarp][chemfig]{\CF_chemfigb}{7B199210755F37B1BCD036567614BA34}
+
\xpatchcmd{\CF_chemfigb}
{\let\CF_flipstate\CF_zero}
{\end{lateximage}\let\CF_flipstate\CF_zero}
@@ -51131,6 +51222,8 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
% The filename is hashed, and also has additional hashing information based on
% the local options.
% \begin{macrocode}
+\VerifyCommand[lwarp][chemformula]{\ch}{6D4331F95E9FF2E011E310B1F8C5487E}
+
\RenewDocumentCommand \ch { O{}m }
{%
% \end{macrocode}
@@ -51177,6 +51270,10 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
% \changes{v0.903}{2021/12/18}{\pkg{chemformula}: Improved alt tag sanitization.}
% \begin{macrocode}
\IfPackageAtLeastTF{chemformula}{2019/10/13}{
+
+\VerifyCommand[lwarp][chemformula]{\chemformula_chcpd:nn}
+ {C1E882F2C1137D429AE4F789C84E7428}
+
\cs_gset_protected:Npn \chemformula_chcpd:nn #1#2
{
\begingroup%
@@ -51251,6 +51348,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
% \begin{noindmacro}{\charrow}
% If standalone, appears in a regular \env{lateximage}.
% \begin{macrocode}
+\VerifyCommand[lwarp][chemformula]{\charrow}
+ {31D2B3405541C0B128504C94C5046713}
+
\RenewDocumentCommand \charrow { mO{}O{} }
{
\begin{lateximage}[-chemformula- charrow]
@@ -51266,6 +51366,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
% If standalone, appears in a regular \env{lateximage}, hashed according to contents.
% \changes{v0.903}{2021/12/18}{\pkg{chemformula}: Improved alt tag sanitization.}
% \begin{macrocode}
+\VerifyCommand[lwarp][chemformula]{\chname}
+ {3C697C09415EE601DE035EEDD6D3BA4D}
+
\RenewDocumentCommand \chname { R(){}R(){} }
{
\begin{lateximage}*[%
@@ -51284,6 +51387,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
% Placed inline, hashed according to contents and options.
% \changes{v0.903}{2021/12/18}{\pkg{chemformula}: Improved alt tag sanitization.}
% \begin{macrocode}
+\VerifyCommand[lwarp][chemformula]{\chlewis}
+ {371F2DD32AA98170F43CFDA71177226B}
+
\RenewDocumentCommand \chlewis { O{}mm }
{
\begingroup%
@@ -51312,6 +51418,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
%
% Adds additional escaping for the new dollar definition:
% \begin{macrocode}
+\VerifyCommand[lwarp][chemformula]{\__chemformula_input_escape_math:n}
+ {5318E84E9168C2F123781D2EA8CFA871}
+
\cs_gset_protected:Npn \__chemformula_input_escape_math:n #1
{
\__chemformula_first_last_math:n {#1}
@@ -51337,6 +51446,7 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
% \end{macrocode}
% \end{noindmacro}
%
+%
% \begin{noindmacro}{\chemformula\_read\_escape\_LWRdollar} \\
%
% The following parses the contents inside the new dollars.
@@ -51407,6 +51517,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
%
% Modified to check for the new meaning of |$| at first/last:
% \begin{macrocode}
+\VerifyCommand[lwarp][chemformula]{\__chemformula_first_last_math:n}
+ {B464BC6E81CAC84BE00FEE988970CE96}
+
\cs_gset_protected:Npn \__chemformula_first_last_math:n #1
{
\bool_set_false:N \l__chemformula_first_last_math_bool
@@ -51572,7 +51685,8 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
%
% \subsection{Loading packages}
%
-% Also accept the \pkg{lwarp} version:
+% Also accept the \pkg{lwarp} version.
+% \cs{VerifyCommand} not used here because it doesn't work with the conditional.
% \changes{v0.904}{2022/03/03}{\pkg{chemmacros}: Accept \pkg{lwarp} version of pkgs.}
% \begin{macrocode}
\prg_set_conditional:Npnn \chemmacros_if_package_loaded:n #1 {p,T,F,TF}
@@ -51643,6 +51757,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
\chemmacros_module_if_loaded:nTF{{acid-base}}{
\PackageInfo{lwarp}{Patching~chemmacros~module~acid-base}
+\VerifyCommand[lwarp][chemmacros]{\chemmacros_p:n}
+ {D95080E9783CB80E34C51221236CF370}
+
\cs_gset_protected:Npn \chemmacros_p:n #1
{
\begingroup
@@ -51668,6 +51785,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
\endgroup
}
+\VerifyCommand[lwarp][chemmacros]{\pH}
+ {89B9008750937C7614F2A5204D5DDD16}
+
\RenewDocumentCommand \pH {} {
\begingroup
\boolfalse{mathjax}
@@ -51677,6 +51797,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
\endgroup
}
+\VerifyCommand[lwarp][chemmacros]{\pOH}
+ {3193E23422822579C0D2B2C10371BF84}
+
\RenewDocumentCommand \pOH {} {
\begingroup
\boolfalse{mathjax}
@@ -51686,6 +51809,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
\endgroup
}
+\VerifyCommand[lwarp][chemmacros]{\pKa}
+ {C4141E480C360A8EDAE38B65F71F5B1F}
+
\RenewDocumentCommand \pKa {O{}}
{
\begingroup
@@ -51700,6 +51826,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
\endgroup
}
+\VerifyCommand[lwarp][chemmacros]{\pKb}
+ {00A20E25465C2E0D2E3731634F39B0FA}
+
\RenewDocumentCommand \pKb {O{}}
{
\begingroup
@@ -51756,6 +51885,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
\chemmacros_module_if_loaded:nTF{{charges}}{
\PackageInfo{lwarp}{Patching~chemmacros~module~charges}
+\VerifyCommand[lwarp][chemmacros]{\fplus}
+ {F6F7137115BC798D4CA779782DCCEB6D}
+
\cs_gset_protected:Npn \fplus {
\begingroup
\boolfalse{mathjax}
@@ -51763,6 +51895,10 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
{ \LWR@origensuredmath{\chemformula_fplus:} }
\endgroup
}
+
+\VerifyCommand[lwarp][chemmacros]{\fminus}
+ {A7ED8520C49A794F33AA6122E2411746}
+
\cs_gset_protected:Npn \fminus {
\begingroup
\boolfalse{mathjax}
@@ -51783,6 +51919,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
\chemmacros_module_if_loaded:nTF{{nomenclature}}{
\PackageInfo{lwarp}{Patching~chemmacros~module~nomenclature}
+\VerifyCommand[lwarp][chemmacros]{\chemmacros_charge:n}
+ {258D97BF6FF3FA5C995D4FDCC44B0E63}
+
\cs_gset_protected:Npn \chemmacros_charge:n #1
{
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}
@@ -51810,6 +51949,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
%
%
% \begin{macrocode}
+\VerifyCommand[lwarp][chemmacros]{\chemmacros_cip:n}
+ {EEF7D8AF4D975C2D11D879A77ABDFF88}
+
\cs_gset_protected:Npn \__chemmacros_cip:n #1
{
\tl_set:Nn \l__chemmacros_tmpa_tl {#1}
@@ -51829,12 +51971,18 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
% \end{macrocode}
%
% \begin{macrocode}
+\VerifyCommand[lwarp][chemmacros]{\Sconf}
+ {D7A87543D1C944168CBAC59E9F45DF9A}
+
\RenewDocumentCommand \Sconf { O{S} } {
\begin{lateximage}[\textbackslash{}Sconf{[}#1{]}]*
\chemmacros_sconf:n {#1}
\end{lateximage}
}
+\VerifyCommand[lwarp][chemmacros]{\Rconf}
+ {AB922016338B2F2C2635E6104311DAF2}
+
\RenewDocumentCommand \Rconf { O{R} } {
\begin{lateximage}[\textbackslash{}Rconf{[}#1{]}]*
\chemmacros_rconf:n {#1}
@@ -51843,6 +51991,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
% \end{macrocode}
%
% \begin{macrocode}
+\VerifyCommand[lwarp][chemmacros]{\chemmacros_hapto:n}
+ {FCEEDAB3292A95E65B69F4F8C8849B26}
+
\cs_gset_protected:Npn \chemmacros_hapto:n #1
{
\begingroup
@@ -51859,6 +52010,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
\endgroup
}
+\VerifyCommand[lwarp][chemmacros]{\chemmacros_dento:n}
+ {E85BBDEF5A35F37215EBAD87AFCB99E8}
+
\cs_gset_protected:Npn \chemmacros_dento:n #1
{
\begingroup
@@ -51875,6 +52029,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
\endgroup
}
+\VerifyCommand[lwarp][chemmacros]{\chemmacros_bridge:n}
+ {5E5D0EA9045A41FF30D4AB315E547B25}
+
\cs_gset_protected:Npn \chemmacros_bridge:n #1
{
\begingroup
@@ -51900,6 +52057,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
\chemmacros_module_if_loaded:nTF{{particles}}{
\PackageInfo{lwarp}{Patching~chemmacros~module~particles}
+\VerifyCommand[lwarp][chemmacros]{\chemmacros_declare_nucleophile:Nn}
+ {ED9AA7471C8638CEF0757A10A2E3935E}
+
\cs_gset_protected:Npn \chemmacros_declare_nucleophile:Nn #1#2
{
\cs_set_protected:cpn {__chemmacros_ \chemmacros_remove_backslash:N #1:}
@@ -51939,6 +52099,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
\chemmacros_module_if_loaded:nTF{{phases}}{
\PackageInfo{lwarp}{Patching~chemmacros~module~phases}
+\VerifyCommand[lwarp][chemmacros]{\chemmacros_phase:n}
+ {83788F1FCBEDA21B495E919E36DD90A5}
+
\cs_undefine:N \chemmacros_phase:n
\cs_new_protected:Npn \chemmacros_phase:n #1
{
@@ -52056,6 +52219,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
type .default:n =
}
+\VerifyCommand[lwarp][chemmacros]{\chemmacros_mechanisms:n}
+ {2CF049E0C61235166A36565979D79933}
+
\cs_gset_protected:Npn \chemmacros_mechanisms:n #1
{
\tl_if_blank:nTF {#1}
@@ -52098,6 +52264,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
\chemmacros_module_if_loaded:nTF{{newman}}{
\PackageInfo{lwarp}{Patching~chemmacros~module~newman}
+\VerifyCommand[lwarp][chemmacros]{\newman}
+ {45E815D161E8467A51F5B04150DEC20C}
+
\RenewDocumentCommand \newman {od()m}%
{
\IfValueTF{#2}
@@ -52124,6 +52293,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
\chemmacros_module_if_loaded:nTF{{orbital}}{
\PackageInfo{lwarp}{Patching~chemmacros~module~orbital}
+\VerifyCommand[lwarp][chemmacros]{\orbital}
+ {F8E338F96B2EBF6AFE4A91D37A58CD90}
+
\RenewDocumentCommand \orbital {om}
{
\IfValueTF{#1}
@@ -52163,6 +52335,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
\chemmacros_module_if_loaded:nTF{{reactions}}{
\PackageInfo{lwarp}{Patching~chemmacros~module~reactions}
+\VerifyCommand[lwarp][chemmacros]{\__chemmacros_declare_reaction_env:nnnn}
+ {E52CE623404E664FD0647E3A874F2702}
+
% #1: chem
% #2: math
% #3: args number
@@ -52207,6 +52382,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
% \cs{xpatchcmd} does not work here.
%
% \begin{macrocode}
+\VerifyCommand[lwarp][chemmacros]{\printreactants}
+ {18AD32DCD3F2F49C0369DA9ED9974CD7}
+
\StartDefiningTabulars% lwarp
% #1: star: include ID in table
@@ -52322,6 +52500,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
\group_end:
}
+\VerifyCommand[lwarp][chemmacros]{\chemmacros_reactants_list_subreactant:nn}
+ {50553A53C2149BD3ADA8AE0FAB0C79C4}
+
% #1: full ID
% #2: star, include ID in table
\cs_gset_protected:Npn \chemmacros_reactants_list_subreactant:nn #1#2
@@ -52388,6 +52569,9 @@ test {\ifnumgreater{\csuse{Changes@In########1}}{0}}%
{ \chemmacros_ox:nnnn { } {#2} #3 }
}
+\VerifyCommand[lwarp][chemmacros]{\ox}
+ {06B84CC6B38302F75169D5B90D8D29AA}
+
\RenewDocumentCommand \ox { s O{} m }
{
\begingroup
@@ -52451,6 +52635,9 @@ name = \chemmacros_translate:n {scheme-name}
\chemmacros_module_if_loaded:nTF{{spectroscopy}}{
\PackageInfo{lwarp}{Patching~chemmacros~module~spectroscopy}
+\VerifyCommand[lwarp][chemmacros]{\__chemmacros_nmr_base:nn}
+ {EDE669CC90B085080E3F96DB754836D5}
+
\cs_gset_protected:Npn \__chemmacros_nmr_base:nn #1#2
{
\group_begin:
@@ -52475,6 +52662,9 @@ name = \chemmacros_translate:n {scheme-name}
}
+\VerifyCommand[lwarp][chemmacros]{\chemmacros_nmr_position:n}
+ {637FDE0E801CF4052274FF60A12A38F0}
+
\cs_gset_protected:Npn \chemmacros_nmr_position:n #1
{
\chemmacros_formula:x
@@ -52496,6 +52686,9 @@ name = \chemmacros_translate:n {scheme-name}
}
}
+\VerifyCommand[lwarp][chemmacros]{\__chemmacros_nmr_coupling:w}
+ {4D1E7321CA2F8C7EA2E4F56FB3A26EED}
+
\cs_gset_protected:Npn \__chemmacros_nmr_coupling:w (#1;#2)
{
\tl_set:Nn \l__chemmacros_nmr_coupling_bonds_tl
@@ -52528,6 +52721,10 @@ name = \chemmacros_translate:n {scheme-name}
\__chemmacros_nmr_coupling_aux_i:w
}
\AfterEndPreamble{% After \AtBeginDocument
+
+\VerifyCommand[lwarp][chemmacros]{\chemmacros_nmr:nnnn}
+ {FD67505420F044B2CA8E7CBD05B1ECEB}
+
% \NMR{<num>,<elem>}(<num>,<unit>)[<solvent>] ALL arguments are optional
% \NMR* same but without ": $\delta$" at end
\cs_gset_protected:Npn \chemmacros_nmr:nnnn #1#2#3#4
@@ -52641,6 +52838,9 @@ name = \chemmacros_translate:n {scheme-name}
}% AfterEndPremble
+\VerifyCommand[lwarp][chemmacros]{\chemmacros_data:w}
+ {30A6134DE00E9850E074854B48644833}
+
\RenewDocumentCommand \chemmacros_data:w { smo }
{
\bool_if:NT \l__chemmacros_nmr_list_bool { \item }
@@ -52669,6 +52869,9 @@ name = \chemmacros_translate:n {scheme-name}
\chemmacros_module_if_loaded:nTF{{thermodynamics}}{
\PackageInfo{lwarp}{Patching~chemmacros~module~thermodynamics}
+\VerifyCommand[lwarp][chemmacros]{\chemmacros_state:nnnnnn}
+ {C5B35D9405E380ABE9A9CE849F46EE6D}
+
\cs_gset_protected:Npn \chemmacros_state:nnnnnn #1#2#3#4#5#6
{
\group_begin:
@@ -52724,6 +52927,9 @@ name = \chemmacros_translate:n {scheme-name}
}
\cs_generate_variant:Nn \chemmacros_state:nnnnnn { nVVVVV }
+\VerifyCommand[lwarp][chemmacros]{\chemmacros_declare_state:Nn}
+ {3C1386935B85ED732A283627DA403FBE}
+
\cs_gset_protected:Npn \chemmacros_declare_state:Nn #1#2
{
\chemmacros_define_keys:xn
@@ -52817,6 +53023,9 @@ name = \chemmacros_translate:n {scheme-name}
% \begin{macrocode}
\ExplSyntaxOn
+\VerifyCommand[lwarp][chemnum]{\chemnum_compound_write:n}
+ {E47ACDCCC4D90FAC40B75B53721EC218}
+
\cs_gset_protected:Npn \chemnum_compound_write:n #1
{
\chemnum_get_compound_property:nn {#1} {pre-main-label-code}
@@ -52833,6 +53042,9 @@ name = \chemmacros_translate:n {scheme-name}
\chemnum_get_compound_property:nn {#1} {post-main-label-code}
}
+\VerifyCommand[lwarp][chemnum]{\chemnum_subcompound_write:nn}
+ {F6BB883B91A1FA330EF3B89924BF3679}
+
\cs_gset_protected:Npn \chemnum_subcompound_write:nn #1#2
{
\group_begin:
@@ -52987,6 +53199,9 @@ name = \chemmacros_translate:n {scheme-name}
\write\@auxout{\string\citepageref{#1}{\theLWR@previousautopagelabel}}%
}
+\VerifyCommand[lwarp][citeref]{\citepageref}
+ {F5E07AE6603C65E9398417D6D392825D}
+
\def\citepageref#1#2{%
\xdef\cpr@testa{\@nameuse{cpr@last@#1}}%letzte Zitatstelle
\xdef\cpr@testb{#2}% Seite dieser Zitatstelle
@@ -53624,7 +53839,7 @@ name = \chemmacros_translate:n {scheme-name}
% \begin{macrocode}
\let\rowcolor\relax
-\LWR@ProvidesPackagePass{colortbl}[2018/12/12]
+\LWR@ProvidesPackagePass{colortbl}[2022/06/20]
% \end{macrocode}
%
%
@@ -53740,24 +53955,32 @@ name = \chemmacros_translate:n {scheme-name}
% \begin{macrocode}
\newcommand*{\LWR@xcolortempcolor}{}
+\VerifyCommand[lwarp][colortbl]{\rowc@l@rs}{A66C3974E0C5BD5C3DDE033367D197A4}
+
\def\rowc@l@rs[#1]#2#3#4%
{%
- \rownum=1%
- \@rowcolorstrue%
+% \end{macrocode}
+% The \pkg{lwarp} emulation starts at row 1 instead of 0.
+% \begin{macrocode}
+% \global\rownum=\z@
+ \global\rownum=1% lwarp
+% \end{macrocode}
+% \begin{macrocode}
+ \global\@rowcolorstrue%
\@ifxempty{#3}%
{\def\@oddrowcolor{\@norowcolor}}%
{%
- \convertcolorspec{named}{#3}{HTML}\LWR@xcolortempcolor%
+ \convertcolorspec{named}{#3}{HTML}\LWR@xcolortempcolor% lwarp
\edef\@oddrowcolor{%
- \csdef{LWR@xcolorrowHTMLcolor}{\LWR@xcolortempcolor}%
+ \csdef{LWR@xcolorrowHTMLcolor}{\LWR@xcolortempcolor}% lwarp
}%
}%
\@ifxempty{#4}%
{\def\@evenrowcolor{\@norowcolor}}%
{%
- \convertcolorspec{named}{#4}{HTML}\LWR@xcolortempcolor%
+ \convertcolorspec{named}{#4}{HTML}\LWR@xcolortempcolor% lwarp
\edef\@evenrowcolor{%
- \csdef{LWR@xcolorrowHTMLcolor}{\LWR@xcolortempcolor}%
+ \csdef{LWR@xcolorrowHTMLcolor}{\LWR@xcolortempcolor}% lwarp
}%
}%
\if@rowcmd
@@ -54627,6 +54850,7 @@ name = \chemmacros_translate:n {scheme-name}
% \pkg{doipubmed} is patched for use by \pkg{lwarp}.
%
% \changes{v0.913}{2023/11/23}{\pkg{doipubmed}: Added.}
+% \changes{v0.914}{2024/01/11}{\pkg{doipubmed}: Added missing \filenm{sty} file.}
%
% \codehtml
%
@@ -54635,14 +54859,16 @@ name = \chemmacros_translate:n {scheme-name}
% \end{macrocode}
%
% \begin{macrocode}
+\VerifyCommand[lwarp][doipubmed]{\doi}{13FFCBAF4F1414B838B6C3AD344117A8}
+
\renewcommand*{\doi}[1]{%
\def\@doi@code{}%
\@doi@linksubs#1\#\@@\@doi@code
\@onelevel@sanitize{\@doi@code}%
\def\@doi@text{}%
\@doi@textsubs#1\@nil\@@\@doi@text
-\xpretocmd{\@doi@code}{http://dx.doi.org/}%
-\href\expandafter{\@doi@code}{\doitext{\@doi@text}}}
+\xpretocmd{\@doi@code}{http://dx.doi.org/}{}{}%
+\expandafter\href\expandafter{\@doi@code}{\doitext{\@doi@text}}}
% \end{macrocode}
%
% Must not modify catcodes before using \cs{url}:
@@ -54920,6 +55146,8 @@ name = \chemmacros_translate:n {scheme-name}
% \end{macrocode}
%
% \begin{macrocode}
+\VerifyCommand[lwarp][drftcite]{\@lbibitem}{43265BD7F1B9C9818D873D651C19485C}
+
\def\@lbibitem[#1]#2{\global\@HighCite\z@
\item[
\textsuperscript{\@nameuse{DCN@#2\@extra@b@citeb}}~% lwarp
@@ -54981,6 +55209,8 @@ name = \chemmacros_translate:n {scheme-name}
% \begin{noindmacro}{\todoii}
% Modified to use \cs{textcolor} instead of \cs{color}.
% \begin{macrocode}
+\VerifyCommand[lwarp][easy-todo]{\todoii}{04C63A894C30C706AC60DD6B58FDEDA2}
+
\renewcommand{\todoii}[2]{%
\ifthenelse{\equal{\@todoobeyfinal}{true}}%
{%
@@ -55872,6 +56102,8 @@ name = \chemmacros_translate:n {scheme-name}
% typeset the actual mark:
% #1: id
% #2: mark
+\VerifyCommand[lwarp][enotez]{\enotez_write_mark:nn}{61DA2A7B03A7D9F55E3E2E2D2498FB32}
+
\cs_gset_protected:Npn \enotez_write_mark:nn #1#2
{
\bool_if:NTF \l__enotez_hyperfootnotes_bool
@@ -55893,6 +56125,8 @@ name = \chemmacros_translate:n {scheme-name}
%
% Do not move or \cs{hbox} the \cs{hypertarget}:
% \begin{macrocode}
+\VerifyCommand[lwarp][enotez]{\enotez_write_list_number:n}{9793BEC2766E17864C6391209599DD84}
+
\cs_gset_protected:Npn \enotez_write_list_number:n #1
{
\bool_if:NT \l__enotez_hyperfootnotes_bool
@@ -56494,6 +56728,8 @@ name = \chemmacros_translate:n {scheme-name}
% Patches for dynamic inline math:
% \begin{macrocode}
+\VerifyCommand[lwarp][errata]{\erratumAdd}{777B919444DA9C70140B71E0C9EDEEBF}
+
\xpatchcmd{\erratumAdd}
{$_a^{\arabic{erratum}}$}
% {\inlinemathother$_a^{\arabic{erratum}}$\inlinemathnormal}
@@ -56501,6 +56737,8 @@ name = \chemmacros_translate:n {scheme-name}
{}
{\LWR@patcherror{erratum}{erratumAdd}}
+\VerifyCommand[lwarp][errata]{\erratumDelete}{057CF8E4B6A0DBECF95C009E9DC44FBA}
+
\xpatchcmd{\erratumDelete}
{$_d^{\arabic{erratum}}$}
% {\inlinemathother$_d^{\arabic{erratum}}$\inlinemathnormal}
@@ -56508,6 +56746,8 @@ name = \chemmacros_translate:n {scheme-name}
{}
{\LWR@patcherror{erratum}{erratumDelete}}
+\VerifyCommand[lwarp][errata]{\erratumReplace}{0E24E5FE5415E6038089ABF21C6933D7}
+
\xpatchcmd{\erratumReplace}
{$_r^{\arabic{erratum}}$}
% {\inlinemathother$_r^{\arabic{erratum}}$\inlinemathnormal}
@@ -56515,20 +56755,20 @@ name = \chemmacros_translate:n {scheme-name}
{}
{\LWR@patcherror{erratum}{erratumReplace}}
+\VerifyCommand[lwarp][errata]{\erratum}{A430F080689BC6FF47E7C905800D2028}
+
\xpatchcmd{\erratum}
{$_a$}
% {\inlinemathother$_a$\inlinemathnormal}
{\textsubscript{a}}
{}
{\LWR@patcherror{erratum}{erratumDelete}}
-
\xpatchcmd{\erratum}
{$_d^{\@thefnmark}$}
% {\inlinemathother$_d^{\@thefnmark}$\inlinemathnormal}
{\textsubscript{d}\textsuperscript{\@thefnmark}}
{}
{\LWR@patcherror{erratum}{eDelete}}
-
\xpatchcmd{\erratum}
{$_r^{\@thefnmark}$}
% {\inlinemathother$_r^{\@thefnmark}$\inlinemathnormal}
@@ -57304,6 +57544,8 @@ name = \chemmacros_translate:n {scheme-name}
%
% \changes{v0.903}{2024/01/03}{\pkg{fancybox}: Sanitize verbatim.}
% \begin{macrocode}
+\VerifyCommand[lwarp][fancybox]{\Verbatim@List}{A85522266594F8C0D846AEB1F72232FF}
+
\def\Verbatim@List#1{%
\if@minipage\else\vskip\parskip\fi
\leftskip\@totalleftmargin
@@ -57321,6 +57563,8 @@ name = \chemmacros_translate:n {scheme-name}
\tmpb% lwarp
\Verbatim@Par}%
+\VerifyCommand[lwarp][fancybox]{\Verbatim@@Input}{3DCC957D04BC5060FF70DD0FF2928D55}
+
\def\Verbatim@@Input{%
\let\protect\noexpand
\LetLtxMacro\tmpb\The@Verbatim% lwarp
@@ -57732,6 +57976,8 @@ name = \chemmacros_translate:n {scheme-name}
%
% \begin{noindmacro}{\FV@CatCodes}
% \begin{macrocode}
+\VerifyCommand[lwarp][fancyvrb]{\FV@CatCodes}{BF2C1F38D5FEF0658C18B636ACBDA40E}
+
\def\FV@CatCodes{%
\let\do\@makeother\dospecials % The usual stuff.
\FV@ActiveWhiteSpace % See below.
@@ -57756,6 +58002,8 @@ name = \chemmacros_translate:n {scheme-name}
% if \cs{expandafter} immediately follows the |<| catcode change.
% \changes{v0.913}{2023/10/04}{\pkg{fancyvrb}: Sanitize \HTML.}
% \begin{macrocode}
+\VerifyCommand[lwarp][fancyvrb]{\FV@GetLine}{9B86134119C575F099B5B567A9B65A9F}
+
\def\FV@GetLine{%
\@noligs%
\catcode`\>=12% lwarp, and the next line as well
@@ -57771,6 +58019,8 @@ name = \chemmacros_translate:n {scheme-name}
% so it will adjust if used inside an \env{lateximage}.
% \changes{v0.913}{2023/10/11}{\pkg{fancyvrb}: Sanitize \HTML.}
% \begin{macrocode}
+\VerifyCommand[lwarp][fancyvrb]{\FancyVerbGetLine}{498B88BACBD0811BAC0791BDF4F3B335}
+
\begingroup
\catcode`\^^M=\active%
\gdef\FancyVerbGetLine#1^^M{%
@@ -57797,6 +58047,8 @@ name = \chemmacros_translate:n {scheme-name}
% Modified to always allow line wrapping because added \HTML\ tags may
% make run off the end of the line in the \PDF\ output file before conversion to \HTML.
% \begin{macrocode}
+\VerifyCommand[lwarp][fancyvrb]{\FV@List}{8FB649FAF7C9487B257B76AF4FFB27D1}
+
\def\FV@List#1{%
\begingroup
\FV@UseKeyValues
@@ -57822,6 +58074,8 @@ name = \chemmacros_translate:n {scheme-name}
% Modified to always allow line wrapping because added \HTML\ tags may
% make run off the end of the line in the \PDF\ output file before conversion to \HTML.
% \begin{macrocode}
+\VerifyCommand[lwarp][fancyvrb]{\FV@ListProcessLine}{660F9938234FC1043ACF7B02B3F37372}
+
\def\FV@ListProcessLine#1{%
\hbox to \hsize{%
% \kern\leftmargin
@@ -57848,6 +58102,8 @@ name = \chemmacros_translate:n {scheme-name}
% if inside a \env{lateximage}, \cs{LWR@HTMLsanitize@tmp} does nothing.
% \changes{v0.913}{2023/10/11}{\pkg{fancyvrb}: Sanitize \HTML.}
% \begin{macrocode}
+\VerifyCommand[lwarp][fancyvrb]{\FVC@SaveVerb}{68373ED055890622906844A5611810C8}
+
\begingroup
\catcode`\^^M=\active%
\gdef\FVC@SaveVerb#1#2{%
@@ -57877,6 +58133,8 @@ name = \chemmacros_translate:n {scheme-name}
%
% Adds a \element{span}.
% \begin{macrocode}
+\VerifyCommand[lwarp][fancyvrb]{\FV@UseVerb}{A3A9D802CCDBEC8D2FDAB626346B5EDD}
+
\def\FV@UseVerb#1{%
\ifbool{LWR@verbtags}% lwarp
{\LWR@htmltag{span class=\textquotedbl{}fancyvrb\textquotedbl}}% lwarp
@@ -57898,6 +58156,8 @@ name = \chemmacros_translate:n {scheme-name}
% Modified to sanitize \HTML.
% \changes{v0.913}{2023/10/04}{\pkg{fancyvrb}: Sanitize \HTML.}
% \begin{macrocode}
+\VerifyCommand[lwarp][fancyvrb]{\FVC@Verb}{806B03D5A78CAB39E0514667991695C9}
+
\begingroup
\catcode`\^^M=\active%
\gdef\FVC@Verb#1{%
@@ -57932,6 +58192,8 @@ name = \chemmacros_translate:n {scheme-name}
% Modified to sanitize \HTML.
% \changes{v0.913}{2023/10/08}{\pkg{fancyvrb}: Sanitize \HTML.}
% \begin{macrocode}
+\VerifyCommand[lwarp][fancyvrb]{\FV@ReadLine}{3C3481D735295DAEB5B30DDE9152287D}
+
\begingroup
\catcode`\^^M=\active
\gdef\FV@ReadLine{%
@@ -57965,6 +58227,8 @@ name = \chemmacros_translate:n {scheme-name}
% \begin{noindmacro}{\VerbatimFootnotes}
% Patched to use the new version.
% \begin{macrocode}
+\VerifyCommand[lwarp][fancyvrb]{\VerbatimFootnotes}{931C9BE6284EB9D8B1516D566C997A87}
+
\def\VerbatimFootnotes{%
\let\@footnotetext\V@footnotetext%
\let\footnote\V@footnote%
@@ -57979,6 +58243,8 @@ name = \chemmacros_translate:n {scheme-name}
% \pkg{fancyvrb} version of \cs{V@@footnotetext}.
% \changes{v0.896}{2021/04/04}{Fix: \ctr{autopage} references in footnotes.}
% \begin{macrocode}
+\VerifyCommand[lwarp][fancyvrb]{\V@@footnotetext}{89E1586855997F951F57C3936CBDF87E}
+
\def\V@@footnotetext{%
\LWR@traceinfo{V@footnotetext}%
% \end{macrocode}
@@ -58250,8 +58516,10 @@ border#1: \strip@pt\dimexpr \FV@FrameRule\relax\relax pt % space
solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
}
+\VerifyCommand[lwarp][fancyvrb]{\FV@Frame@none}{C60E1656944AB4C4D2B74410E88FE7C0}
+
\def\LWR@HTML@FV@Frame@none{%
-\renewcommand*{\LWR@FVstyle}{\LWR@currenttextcolorstyle}%
+\renewcommand*{\LWR@FVstyle}{\LWR@currenttextcolorstyle}% lwarp
\let\FV@BeginListFrame\LWR@fvstartnone%
\let\FV@LeftListFrame\relax%
\let\FV@RightListFrame\relax%
@@ -58260,6 +58528,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
\FV@Frame@none% default values
+\VerifyCommand[lwarp][fancyvrb]{\FV@Frame@single}{CDF78DB9C6408F48D05302D07091C629}
+
\def\LWR@HTML@FV@Frame@single{%
\renewcommand*{\LWR@FVstyle}{%
\LWR@currenttextcolorstyle\LWR@indentHTMLtwo%
@@ -58271,6 +58541,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
\let\FV@EndListFrame\LWR@fvendsingle}
\LWR@formatted{FV@Frame@single}
+\VerifyCommand[lwarp][fancyvrb]{\FV@Frame@lines}{1AADD6691DA93C9A66227F5C5B34EAE4}
+
\def\LWR@HTML@FV@Frame@lines{%
\renewcommand*{\LWR@FVstyle}{%
\LWR@currenttextcolorstyle\LWR@indentHTMLtwo%
@@ -58284,6 +58556,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
\let\FV@EndListFrame\LWR@fvendline}
\LWR@formatted{FV@Frame@lines}
+\VerifyCommand[lwarp][fancyvrb]{\FV@Frame@topline}{7E102D81F4FD367B398B8E85F48A7754}
+
\def\LWR@HTML@FV@Frame@topline{%
\renewcommand*{\LWR@FVstyle}{%
\LWR@currenttextcolorstyle\LWR@indentHTMLtwo%
@@ -58295,6 +58569,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
\let\FV@EndListFrame\LWR@fvendnone}
\LWR@formatted{FV@Frame@topline}
+\VerifyCommand[lwarp][fancyvrb]{\FV@Frame@bottomline}{A51600F812F57F4211EF9E34F261564A}
+
\def\LWR@HTML@FV@Frame@bottomline{%
\renewcommand*{\LWR@FVstyle}{%
\LWR@currenttextcolorstyle\LWR@indentHTMLtwo%
@@ -58315,6 +58591,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% \end{macrocode}
%
% \begin{macrocode}
+\VerifyCommand[lwarp][fancyvrb]{\FV@Frame@leftline}{2A77982C6520FD64F6DBFA1C03B670BA}
+
\def\LWR@HTML@FV@Frame@leftline{%
\renewcommand*{\LWR@FVstyle}{%
\LWR@currenttextcolorstyle\LWR@indentHTMLtwo%
@@ -58344,6 +58622,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% Adds the optional label to the top and bottom edges.
% \changes{v0.73}{2019/06/26}{\pkg{fancyvrb}: Fix: Nested \element{div}/\element{pre}.}
% \begin{macrocode}
+\VerifyCommand[lwarp][fancyvrb]{\FV@SingleFrameLine}{2D8B1DAED851500F255E357437FF065C}
+
\def\LWR@HTML@FV@SingleFrameLine#1{%
% \hbox to\z@{%
% \kern\leftmargin
@@ -58405,6 +58685,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% \begin{macrocode}
+\VerifyCommand[lwarp][fancyvrb]{\FVB@VerbatimOut}{A0AC591D2DB283DCEBCCC75968FF88CF}
+
\def\FVB@VerbatimOut#1{%
\@bsphack
\begingroup
@@ -58943,6 +59225,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% \end{macrocode}
% \begin{macrocode}
+\VerifyCommand[lwarp][fixmetodonotes]{\NOTES@addtolist}{C8CA636EF295D370F26A278FFAE28B2F}
+
\renewcommand{\NOTES@addtolist}[2]{%
\refstepcounter{NOTES@note}%
% \phantomsection% REMOVED
@@ -58951,11 +59235,15 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
}%
}
+\VerifyCommand[lwarp][fixmetodonotes]{\NOTES@marker}{B5B482E83AB149A1B7F0CCFB4099C61E}
+
\renewcommand{\NOTES@marker}[2]{\fbox{%
\textcolor{#2}{% WAS \color
\textbf{#1}}%
}}
+\VerifyCommand[lwarp][fixmetodonotes]{\NOTES@colorline}{816FF1D31286EA48258FE3F2BA58E99C}
+
\renewcommand{\NOTES@colorline}[2]{%
\bgroup%
\ULon{\LWR@backgroundcolor{#1}{#2}}%
@@ -60010,25 +60298,69 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
%
% \changes{v0.67}{2019/02/22}{\pkg{fontawesome5}: Added.}
% \changes{v0.79}{2020/01/01}{\pkg{fontawesome5}: Supports font size, color.}
+% \changes{v0.914}{2024/01/10}{\pkg{fontawesome5}: Fixed for \XeLaTeX, \LuaLaTeX.}
%
% \codehtml
%
% \begin{macrocode}
-\LWR@ProvidesPackagePass{fontawesome5}[2018/07/27]
+\LWR@ProvidesPackagePass{fontawesome5}[2022/05/02]
+% \end{macrocode}
+%
+% This used to contain code, but now it is split into the related two packages.
+%
+% \iffalse
+%</fontawesome5>
+% \fi
+%
+%
+% \iffalse
+%<*fontawesome5-generic-helper>
+% \fi
+%
+% \part{lwarp-fontawesome5-generic-helper.sty}
+%
+% \section{fontawesome5-generic-helper}
+%
+% \credits{Marcel Kr\"uger}
+%
+% \DescribePackage{fontawesome5-generic-helper}
+% \pkg{fontawesome5-generic-helper} is patched for use by \pkg{lwarp}.
+%
+% Hashed inline images are used, as there may not be Unicode support for all icons.
+%
+% The \attribute{alt} tag has the name of the icon.
+%
+% \changes{v0.914}{2024/01/10}{\pkg{fontawesome5-generic-helper}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR@ProvidesPackagePass{fontawesome5-generic-helper}[2022/05/02]
% \end{macrocode}
%
% \begin{macrocode}
\ExplSyntaxOn
+
+\VerifyCommand[lwarp][fontawesome5-generic-helper]{\fontawesome_use_icon:nn}
+ {0260A9C94303C43957AAEBEA2B4D3DB1}
+
\cs_set:Nn\fontawesome_use_icon:nn{
\LWR@findcurrenttextcolor
\cs_if_exist:cTF{c__fontawesome_slot_#2_tl}{
- \begin{lateximage}*[#2][fontawesome5#1SZ\LWR@font@size{}CL\LWR@tempcolor]
- \csuse{\LWR@font@size}
- \exp_last_unbraced:Nv
- \__fontawesome_icon_at:nnnn
- {c__fontawesome_slot_#2_tl}
- {#1}{#2}
- \end{lateximage}
+ \begin{lateximage}*[#2][fontawesome5#1SZ\LWR@font@size{}CL\LWR@tempcolor]% lwarp
+ \csuse{\LWR@font@size}% lwarp
+ \bool_if:NTF\c__fontawesome_fixed_bool{
+ \makebox[1.5em][c]
+ }{
+ \use:n
+ }
+ {
+ \exp_last_unbraced:Nv
+ \__fontawesome_icon_at:nnnn
+ {c__fontawesome_slot_#2_tl}
+ {#1}{#2}
+ }
+ \end{lateximage}% lwarp
}{
\msg_error:nnxx{fontawesome5}{icon-not-found}{#2}{#1}
}
@@ -60037,7 +60369,113 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% \end{macrocode}
%
% \iffalse
-%</fontawesome5>
+%</fontawesome5-generic-helper>
+% \fi
+%
+%
+% \iffalse
+%<*fontawesome5-utex-helper>
+% \fi
+%
+% \part{lwarp-fontawesome5-utex-helper.sty}
+%
+% \section{fontawesome5-utex-helper}
+%
+% \credits{Marcel Kr\"uger}
+%
+% \DescribePackage{fontawesome5-utex-helper}
+% \pkg{fontawesome5-utex-helper} is patched for use by \pkg{lwarp}.
+%
+% Hashed inline images are used, as there may not be Unicode support for all icons.
+%
+% The \attribute{alt} tag has the name of the icon.
+%
+% \changes{v0.914}{2024/01/10}{\pkg{fontawesome5-utex-helper}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR@ProvidesPackagePass{fontawesome5-utex-helper}[2022/05/02]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ExplSyntaxOn
+
+\VerifyCommand[lwarp][fontawesome5-utex-helper]{\fontawesome_use_icon:nn}
+ {8452FF2BF0A317552B0920628ADD8C18}
+
+\cs_set:Nn\fontawesome_use_icon:nn{
+ \group_begin:
+ \LWR@findcurrenttextcolor
+ \usefont
+ {TU}
+ {fontawesome\c__fontawesome_kind_tl}
+ {#1}
+ {n}
+ \bool_set:Nn \l__fontawesome_duotone_bool {
+ \str_if_eq_p:ee {#1} {duotone}
+ }
+ \int_set:Nn\l_tmpa_int{
+ \__fontawesome_glyphindex:n{
+ #2
+ \bool_if:NT \l__fontawesome_duotone_bool { -primary }
+ }
+ }
+ \int_compare:nNnT{\l_tmpa_int}={0}{
+ \fontseries{solid}
+ \selectfont
+ \bool_set_false:N \l__fontawesome_duotone_bool
+ \int_set:Nn\l_tmpa_int{\__fontawesome_glyphindex:n{#2}}
+ \int_compare:nNnTF{\l_tmpa_int}={0}{
+ \fontfamily{fontawesomebrands}
+ \fontseries{regular}
+ \selectfont
+ \int_set:Nn\l_tmpa_int{\__fontawesome_glyphindex:n{#2}}
+ \int_compare:nNnT{\l_tmpa_int}={0}{
+ \msg_error:nnxx{fontawesome5}{icon-not-found}{#2}{#1}
+ }
+ }{
+ \msg_warning:nnxx{fontawesome5}{style-substitution}{#2}{#1}
+ }
+ }
+ \begin{lateximage}*[#2][fontawesome5#1SZ\LWR@font@size{}CL\LWR@tempcolor]% lwarp
+ \csuse{\LWR@font@size}% lwarp
+ \bool_if:NTF\c__fontawesome_fixed_bool{
+ \makebox[1.5em][c]
+ }{
+ \use:n
+ }
+ {
+ \bool_if:NTF \l__fontawesome_duotone_bool {
+ \__fontawesome_glyph:w \l_tmpa_int
+ \int_set:Nn\l_tmpa_int{ \__fontawesome_glyphindex:n{ #2-secondary } }
+ \int_compare:nNnF { \l_tmpa_int } = { 0 } {
+ \llap {
+ \l_fontawesome_duotone_secondary_style_tl
+ { \__fontawesome_glyph:w \l_tmpa_int }
+ }
+ }
+ % \ooalign {
+ % \hss \__fontawesome_glyph:w \l_tmpa_int \hss \cr
+ % \hss
+ % \int_set:Nn\l_tmpa_int{ \__fontawesome_glyphindex:n{ #2-secondary } }
+ % \int_compare:nNnF { \l_tmpa_int } = { 0 } {
+ % \color{gray}\__fontawesome_glyph:w \l_tmpa_int
+ % }
+ % \hss \cr
+ % }
+ } {
+ \__fontawesome_glyph:w \l_tmpa_int
+ }
+ }
+ \end{lateximage}% lwarp
+ \group_end:
+}
+\ExplSyntaxOff
+% \end{macrocode}
+%
+% \iffalse
+%</fontawesome5-utex-helper>
% \fi
%
%
@@ -60229,6 +60667,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% \changes{v0.902}{2021/09/20}{\pkg{footnote}: Improved par tags.}
% \begin{macrocode}
+\VerifyCommand[lwarp][footnote]{\spewnotes}{BCC4919F5404BADA8F1CF486E5709072}
+
\def\spewnotes{%
\endgroup%
\if@savingnotes\else\ifvoid\fn@notes\else\begingroup%
@@ -60241,6 +60681,7 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
}
\let\endsavenotes\spewnotes
+\VerifyCommand[lwarp][footnote]{\fn@fntext}{4C750987515F28FE665A08AB710193BA}
\def\fn@fntext#1{%
\ifx\ifmeasuring@\@@undefined%
@@ -60267,6 +60708,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
%
% Removed print-version formatting:
% \begin{macrocode}
+\VerifyCommand[lwarp][footnote]{\fn@startnote}{D101A3D1B9653A6FDD7E9CF37BD5A4DD}
+
\def\fn@startnote{%
% \@parboxrestore%
\protected@edef\@currentlabel{\csname p@\@mpfn\endcsname\@thefnmark}%
@@ -60284,6 +60727,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% Removed print-version formatting:
% \changes{v0.902}{2021/09/18}{\pkg{footnote}: Fixed missing number.}
% \begin{macrocode}
+\VerifyCommand[lwarp][footnote]{\fn@startfntext}{7270AD27C28391C41DA1FE47C49B5E7A}
+
\def\fn@startfntext{%
\setbox\z@\vbox\bgroup%
\LWR@htmltagc{\LWR@tagregularparagraph}% lwarp
@@ -60300,6 +60745,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
%
% \changes{v0.902}{2021/09/20}{\pkg{footnote}: Improved par tags.}
% \begin{macrocode}
+\VerifyCommand[lwarp][footnote]{\fn@endfntext}{17BC1D2CD9A84BAFFBE765CC1618C36D}
+
\def\fn@endfntext{%
\fn@postfntext%
\LWR@orignobreakspace\LWR@orignewline%
@@ -60515,6 +60962,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
\AfterEndEnvironment{forest}{\end{lateximage}}
+\VerifyCommand[lwarp][forest]{\Forest}{D44A6D1EAFFC86653905CC666F563E6D}
+
\RenewDocumentCommand{\Forest}{s D(){} m}{%
\forest@config{#2}%
\IfBooleanTF{#1}{%
@@ -60883,6 +61332,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
{\LWR@patcherror{froufrou}{setfroufrou}}
\ExplSyntaxOff
+\VerifyCommand[lwarp][froufrou]{\froufrou}{E60D7F93008BB892149BBBC2E09983D6}
+
\RenewDocumentCommand{\froufrou}{s O{}}{%
\nopagebreak[4]\par
@@ -61202,6 +61653,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% Modified to always allow line wrapping because added \HTML\ tags may
% make run off the end of the line in the \PDF\ output file before conversion to \HTML.
% \begin{macrocode}
+\VerifyCommand[lwarp][fvextra]{\FV@ListProcessLine@NoBreak}{935C1C5101F15E02B916295A66862714}
+
\def\FV@ListProcessLine@NoBreak#1{%
% \hbox to \hsize{%
% \kern\leftmargin
@@ -61233,6 +61686,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
{\hbox to\z@{\kern\FV@NumberSep\theFancyVerbLine\hss}}%
}
+\VerifyCommand[lwarp][fvextra]{\FV@Numbers@left}{57A16473A8AA4214529F6BABEC435311}
+
\xpatchcmd{\FV@Numbers@left}%
{\hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}}
{\LWR@FV@linethensep}
@@ -61251,6 +61706,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
{}
{\LWR@patcherror{fvextra}{FV@Numbers@left C}}
+\VerifyCommand[lwarp][fvextra]{\FV@Numbers@right}{6D0F98326BCB22695874D94BEC12E32F}
+
\xpatchcmd{\FV@Numbers@right}%
{\hbox to\z@{\kern\FV@NumberSep\theFancyVerbLine\hss}}
{\LWR@FV@septhenline}
@@ -61269,6 +61726,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
{}
{\LWR@patcherror{fvextra}{FV@Numbers@right C}}
+\VerifyCommand[lwarp][fvextra]{\FV@Numbers@both}{C349DC2B800D5DD085FFB7620A6289EA}
+
\xpatchcmd{\FV@Numbers@both}%
{\hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}}
{\LWR@FV@linethensep}
@@ -61312,6 +61771,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% This is used on recall to sanitize for \HTML\ unless in a \env{lateximage}.
% \changes{v0.913}{2023/10/01}{\pkg{fvextra}: Improved \HTML\ sanitization.}
% \begin{macrocode}
+\VerifyCommand[lwarp][fvextra]{\FVC@SaveVerb@Extra@ii}{BCE88217BA577F70BAC8158E110E404C}
+
\def\FVC@SaveVerb@Extra@ii#1#2#3{%
\global\let\FV@AfterSave\FancyVerbAfterSave
\endgroup
@@ -61327,6 +61788,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
%
% Adds the opening and closing tags.
% \begin{macrocode}
+\VerifyCommand[lwarp][fvextra]{\FV@UseVerb@Extra}{8B4DAB7A789CAB11394A35D2BA864FE4}
+
\def\FV@UseVerb@Extra#1{%
\ifbool{LWR@verbtags}% lwarp
{\LWR@htmltag{span class=\textquotedbl{}fancyvrb\textquotedbl}}% lwarp
@@ -61349,6 +61812,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
%
% Sanitize \HTML.
% \begin{macrocode}
+\VerifyCommand[lwarp][fvextra]{\FVC@Verb@Extra@ii}{8B4DAB7A789CAB11394A35D2BA864FE4}
+
\def\FVC@Verb@Extra@ii#1{%
\def\tmpb{#1}% lwarp
\ifbool{LWR@verbtags}% lwarp
@@ -61374,6 +61839,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% Santize \HTML.
% \changes{v0.913}{2023/12/07}{\pkg{fvextra}: Updated to v1.6.1.}
% \begin{macrocode}
+\VerifyCommand[lwarp][fvextra]{\FVC@EscVerb@ii}{8B4DAB7A789CAB11394A35D2BA864FE4}
+
\def\FVC@EscVerb@ii#1{%
\def\tmpb{#1}% lwarp
\ifbool{LWR@verbtags}% lwarp
@@ -61401,6 +61868,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% \HTML\ will be sanitized on \cs{VerbatimInput}.
% \changes{v0.913}{2023/12/07}{\pkg{fvextra}: Updated to v1.6.1.}
% \begin{macrocode}
+\VerifyCommand[lwarp][fvextra]{\FVB@VerbatimWrite}{B092E8AB57DB2ABBA815BC39DB5256DC}
+
\xpatchcmd{\FVB@VerbatimWrite}
{\FV@Scan}
{\boolfalse{LWR@HTMLsanitize@tmpb@enable}\FV@Scan}
@@ -61414,6 +61883,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% \HTML\ will be sanitized on \cs{VerbatimInsertBuffer}.
% \changes{v0.913}{2023/12/07}{\pkg{fvextra}: Updated to v1.6.1.}
% \begin{macrocode}
+\VerifyCommand[lwarp][fvextra]{\FVB@VerbatimBuffer}{048525348EC4D60E258FD5DD74434BB1}
+
\xpatchcmd{\FVB@VerbatimBuffer}
{\FV@Scan}
{\boolfalse{LWR@HTMLsanitize@tmpb@enable}\FV@Scan}
@@ -61426,6 +61897,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% \begin{noindmacro}{\VerbatimInsertBuffer}
% \changes{v0.913}{2023/12/28}{\pkg{fvextra}: Updated to v1.6.1.}
% \begin{macrocode}
+\VerifyCommand[lwarp][fvextra]{\VerbatimInsertBuffer}{4582BD54720B56AD050042DD9FC0E289}
+
\renewcommand{\VerbatimInsertBuffer}[1][]{%
\begingroup
\def\FV@KeyValues{#1}%
@@ -61675,9 +62148,13 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% \begin{macrocode}
\ExplSyntaxOn
+\VerifyCommand[lwarp][ghsystem]{\ghsystem_filler:n}{2B8CCE2EC0EC4AB8FA4C4E4A68FFCE70}
+
\cs_set_protected:Npn \ghsystem_filler:n #1
{ \emph { \textless #1 \textgreater } }
+\VerifyCommand[lwarp][ghsystem]{\ghsystem_pic:n}{950F001D9FCDAFF7A9154739DC8025BB}
+
\cs_set_protected:Npn \ghsystem_pic:n #1
{
\__ghsystem_includegraphics:xn
@@ -61795,12 +62272,16 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
%
% \changes{v0.72}{2019/06/05}{\pkg{gloss}: Fix references for \pkg{xr}, \pkg{xr-hyper}.}
% \begin{macrocode}
+\VerifyCommand[lwarp][gloss]{\gls@gloss@iii}{96590CC8FAE12295596B9F664BE4AF8C}
+
\xpatchcmd{\gls@gloss@iii}
{\thepage}
{\theLWR@previousautopagelabel}
{}
{\LWR@patcherror{gloss}{gls@gloss@iii}}
+\VerifyCommand[lwarp][gloss]{\gls@page@i}{C05FCEACF0A1F96FC09A218684543574}
+
\def\gls@page@i#1#2{%
\endgroup%
\global\@namedef{glsp@#1}{\nameref{\BaseJobname-autopage-#2}}}%
@@ -61842,6 +62323,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
%
% Patched to fix \TOC\ pointing to the previous page:
% \begin{macrocode}
+\VerifyCommand[lwarp][glossaries]{\@p@glossarysection}{129DC9CFB9484FC34C7B81E32BBB0452}
+
\renewcommand*{\@p@glossarysection}[2]{%
\glsclearpage
\LWR@phantomsection
@@ -64590,6 +65073,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \begin{noindmacro}{\@index}
% The \HTML\ version of \cs{@index}:
% \begin{macrocode}
+\VerifyCommand[lwarp][imakeidx]{\@index}{443B697F3326243540BE3FB7665606F6}
+
\catcode`\_=12%
\def\@index[#1]{%
@@ -64651,40 +65136,33 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% While writing index entries, adds an \HTML\ label, and
% writes the label's index instead of the page number:
% \begin{macrocode}
+\VerifyCommand[lwarp][imakeidx]{\imki@wrindexentrysplit}{D8ABE70A4355F52E36723AFAB74F71E7}
+
\renewcommand\imki@wrindexentrysplit[3]{%
\addtocounter{LWR@autoindex}{1}%
\expandafter\protected@write\csname#1@idxfile\endcsname{}%
{\string\indexentry{#2}{\arabic{LWR@autoindex}}}%
% \end{macrocode}
+%
% The label is assigned after the file write to avoid conflict with \pkg{cleveref}.
-% \changes{v0.905}{2022/03/21}{Label after file write.}
+% \changes{v0.905}{2022/03/21}{\pkg{imakeidx}: Label after file write.}
% \begin{macrocode}
\label{LWRindex-\arabic{LWR@autoindex}}%
}
+\VerifyCommand[lwarp][imakeidx]{\imki@wrindexentryunique}{9131E144394D273F316D03FA91BA0E2B}
+
\renewcommand\imki@wrindexentryunique[3]{%
\addtocounter{LWR@autoindex}{1}%
\protected@write\@indexfile{}%
{\string\indexentry[#1]{#2}{\arabic{LWR@autoindex}}}%
% \end{macrocode}
+%
% The label is assigned after the file write to avoid conflict with \pkg{cleveref}.
-% \changes{v0.905}{2022/03/21}{Label after file write.}
+% \changes{v0.905}{2022/03/21}{\pkg{imakeidx}: Label after file write.}
% \begin{macrocode}
\label{LWRindex-\arabic{LWR@autoindex}}%
}
-
-\def\imki@wrindexsplit#1#2{%
-\imki@wrindexentrysplit{#1}{#2}{\thepage}%
-\endgroup\imki@showidxentry{#1}{#2}%
- \@esphack%
-}
-
-\def\imki@wrindexunique#1#2{%
-\imki@wrindexentryunique{#1}{#2}{\thepage}%
-\endgroup\imki@showidxentry{#1}{#2}%
- \@esphack%
- }
-
% \end{macrocode}
% \end{noindmacro}
% \end{noindmacro}
@@ -64730,6 +65208,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \begin{noindmacro}{\imki@makeindex}
% Use the new \HTML\ options:
% \begin{macrocode}
+\VerifyCommand[lwarp][imakeidx]{\imki@makeindex}{83AEF6DF7A13F7D0565457DFB83D42B5}
+
\xpatchcmd{\imki@makeindex}
{\let\imki@options\space}
{\LWR@imki@setdefopts{}}%
@@ -64746,6 +65226,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \begin{noindmacro}{\imki@resetdefaults}
% Use the new \HTML\ options:
% \begin{macrocode}
+\VerifyCommand[lwarp][imakeidx]{\imki@resetdefaults}{3D417615569AC35F199A3FBD03B640E3}
+
\xpatchcmd{\imki@resetdefaults}
{\def\imki@options{ }}
{\LWR@imki@setdefopts{}}
@@ -64860,6 +65342,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \cs{@tempswatrue} is used to force an immediate write to the index file
% instead of waiting until the end of the page.
% \begin{macrocode}
+\VerifyCommand[lwarp][index]{\newindex}{F714216FA78BCC8DB70B7BB92BE05F3C}
+
\xpatchcmd{\newindex}
{\x@newindex[thepage]}
{%
@@ -64869,6 +65353,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
{}
{\LWR@patcherror{index}{newindex}}
+\VerifyCommand[lwarp][index]{\renewindex}{B81B08BFE7A2F5CA7D84D4A5A40E7A44}
+
\xpatchcmd{\renewindex}
{\x@renewindex[thepage]}
{%
@@ -64881,6 +65367,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
%
% Patched to set a new autoindex:
% \begin{macrocode}
+\VerifyCommand[lwarp][index]{\@wrindex}{C58C10ACFC42D711D0DA8F4759BA951D}
+
\xpatchcmd{\@wrindex}
{\begingroup}
{%
@@ -64960,6 +65448,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% Patched to remove extraneous spaces,
% which sometimes showed up in logos inside a \env{lateximage}.
% \begin{macrocode}
+\VerifyCommand[lwarp][inputtrc]{\IT@prim@input}{03F74081468CFB6308896BDEB61D1E23}
+
\renewcommand*{\IT@prim@input}[1]{%
\typeout{\IT@indent\IT@currfile INPUTTING #1}%
%% ... TODO: option to write to `.log' only.
@@ -65184,6 +65674,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
\renewrobustcmd{\jbrangle}{\textgreater}
+\VerifyCommand[lwarp][jurabib]{\jb@biblaw@item}{F93545B67E684787264DA900F185A25A}
+
\renewcommand*{\jb@biblaw@item}{%
\hspace{0.5em}%
% $\triangleright$
@@ -65191,6 +65683,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
\hspace{0.5em}%
}
+\VerifyCommand[lwarp][jurabib]{\jbarchsig}{8D821FA370CBD0A61325D5A278E0A369}
+
\renewrobustcmd{\jbarchsig}[2]{%
\ifjbweareinbib
\settowidth{\jb@subarchitemwidth}{\jbsamesubarchindent+#1}%
@@ -65205,6 +65699,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
}%
+\VerifyCommand[lwarp][jurabib]{\jb@do@post@item}{4FD79AF40E8460C52306C33CF825B63F}
+
\xpatchcmd{\jb@do@post@item}
{\begin{tabular}{p{\jb@biblaw@item@width}j{\jb@biblaw@entry@width}}}
{}
@@ -65278,6 +65774,9 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% with the \pkg{lwarp} modifications identified in comments.
%
% \begin{macrocode}
+\VerifyEnvironment[lwarp][karnaugh-map]{karnaugh-map}
+ {FFA0270032620E79C8344E63AEDBF925}{08A76B622DBB34F033284513743C5F8C}
+
\RenewDocumentEnvironment{karnaugh-map}{s O{4} O{4} O{1} O{$X_1X_0$} O{$X_3X_2$} O{$X_5X_4$}} {%
\begingroup
% store map size {[START]
@@ -65516,6 +66015,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \begin{macrocode}
\LetLtxMacro\KFLT@LWR@hook@keyfloats\KFLT@LWR@hook@boxouter
+\VerifyCommand[lwarp][keyfloat]{\KFLT@maybeendfloatrow}{ABD652AC104E3CF79D66B92BC7E4E2D7}
+
\renewcommand*{\KFLT@maybeendfloatrow}{%
\ifnumless{\value{KFLT@thiscol}}{\value{KFLT@numcols}}%
{}% thiscol < numcols
@@ -65524,6 +66025,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
}%
}%
+\VerifyCommand[lwarp][keyfloat]{\KFLT@trackrows}{17F751691BBEDD3459F494B072DC2F11}
+
\renewcommand{\KFLT@trackrows}%
{%
% \end{macrocode}
@@ -65553,6 +66056,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
%
% \changes{v0.47}{2018/01/26}{\pkg{keyfloat}: Fix for \SVG\ math in captions.}
% \begin{macrocode}
+\VerifyCommand[lwarp][keyfloat]{\KFLT@onefigureimage}{C14A907612A43563404BEEC3F9FB10A8}
+
\RenewDocumentCommand{\KFLT@onefigureimage}{m}
{%
\LWR@traceinfo{KFLT@onefigureimage}%
@@ -65620,6 +66125,9 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \end{macrocode}
%
% \begin{macrocode}
+\VerifyEnvironment[lwarp][keyfloat]{KFLT@boxinner}
+ {44BA9E3F4EA1B3E533F47377BA47F145}{590DE3AADA8DF85EF6E1589B41F0D4F6}
+
\RenewDocumentEnvironment{KFLT@boxinner}{}
{%
\LWR@traceinfo{KFLT@boxinner}%
@@ -65657,6 +66165,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
{}%
}
+\VerifyCommand[lwarp][keyfloat]{\KFLT@addtext}{C086CC818525A9B03EDEACC02609A3BE}
+
\renewcommand{\KFLT@addtext}[1]
{%
% \end{macrocode}
@@ -65709,6 +66219,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
{}%
}
+ \VerifyCommand[lwarp][keyfloat]{\KFLT@@addartisttext}{35968ED08D9BE09FF1B45E1E40AFE9A7}
+
\renewcommand*{\KFLT@@addartisttext}[3]{%
% \end{macrocode}
% Add space and create the name inside a \element{div}:
@@ -65865,6 +66377,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
\LWR@formatted{RArrow}
% Preserves the language options:
+\VerifyCommand[lwarp][keystroke]{\Shift}{F86359C350A5BC1D264A4997F86C2DC2}
+
\LetLtxMacro\LWR@HTML@Shift\Shift
\xpatchcmd{\LWR@HTML@Shift}
{$\Uparrow$}
@@ -65873,6 +66387,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
{}
\LWR@formatted{Shift}
+\VerifyCommand[lwarp][keystroke]{\PgUp}{CBB81948EFB5940DAD2B51644BB4B2BF}
+
\LetLtxMacro\LWR@HTML@PgUp\PgUp
\xpatchcmd{\LWR@HTML@PgUp}
{$\uparrow$}
@@ -65881,6 +66397,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
{}
\LWR@formatted{PgUp}
+\VerifyCommand[lwarp][keystroke]{\PgDown}{B55C849642BE07904975EC7E4D649CAD}
+
\LetLtxMacro\LWR@HTML@PgDown\PgDown
\xpatchcmd{\LWR@HTML@PgDown}
{$\downarrow$}
@@ -67080,8 +67598,7 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \begin{macrocode}
% \LWR@ProvidesPackageDrop{lips}
-\PackageInfo{lwarp}{Using the lwarp version of package `lips'.}%
-\ProvidesPackage{lwarp-lips}[2001/08/31]
+\LWR@ProvidesPackageDrop{lips}[2001/08/31]
\NewDocumentCommand{\Lips}{}{\textellipsis}
@@ -67165,7 +67682,7 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
%
%
% \begin{macrocode}
-\LWR@ProvidesPackagePass{listings}[2018/09/02]
+\LWR@ProvidesPackagePass{listings}[2023/02/27]
% \end{macrocode}
%
@@ -67230,6 +67747,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \begin{noindmacro}{\lst@Init} \marg{backslash-processing} \quad
% Done at the start of a listing.
% \begin{macrocode}
+\VerifyCommand[lwarp][listings]{\lst@Init}{A4D103298A6AC8230F525C61F1E1E541}
+
\renewcommand{\lst@Init}[1]{%
% \end{macrocode}
%
@@ -67237,7 +67756,7 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
%
% \changes{v0.51}{2018/03/17}{\pkg{listings}: Forces cleared options.}
% \begin{macrocode}
-\LWR@traceinfo{lst@Init}%
+\LWR@traceinfo{lst@Init}% lwarp
% \end{macrocode}
%
% \cs{LWR@forcenewpage} is moved to the start to avoid a spurrious bug
@@ -67385,13 +67904,16 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
\fi% lwarp
\LWR@traceinfo{lst@Init: done}%
}
+\def\LWR@listings@synaxdolloar{$}% lwarp editor synax highlighting
% \end{macrocode}
% \end{noindmacro}
%
%
% \begin{noindmacro}{\lst@DeInit} \quad Done at the end of a listing.
% \begin{macrocode}
-\renewcommand*{\lst@DeInit}{%
+%\renewcommand*{\lst@DeInit}{%
+\xpretocmd{\lst@DeInit}
+{%
\LWR@traceinfo{lst@DeInit}%
\lst@ifdisplaystyle%
% \end{macrocode}
@@ -67410,40 +67932,9 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \begin{macrocode}
\ifbool{LWR@verbtags}{\noindent\LWR@htmltag{/span}}{}%
\fi%
-% \end{macrocode}
-%
-% Final \pkg{listings} deinit:
-% \begin{macrocode}
- \lst@XPrintToken \lst@EOLUpdate
- \global\advance\lst@newlines\m@ne
- \lst@ifshowlines
- \lst@DoNewLines
- \else
- \setbox\@tempboxa\vbox{\lst@DoNewLines}%
- \fi
- \lst@ifdisplaystyle \par\removelastskip \fi
- \lsthk@ExitVars\everypar{}\lsthk@DeInit\normalbaselines\normalcolor
- \lst@MakeCaption b%
- \lst@ifbox
- \egroup $\hss \egroup
- \vrule\@width\lst@maxwidth\@height\z@\@depth\z@
- \else
- \lst@ifdisplaystyle
- \par\penalty-50\vspace\lst@belowskip
- \fi
- \fi
- \ifx\lst@multicols\@empty\else
- \def\lst@next{\global\let\@checkend\@gobble
- \endmulticols
- \global\let\@checkend\lst@@checkend}
- \expandafter\lst@next
- \fi
- \ifx\lst@float\relax\else
- \expandafter\lst@endfloat
- \fi
- \endgroup
-\LWR@traceinfo{lst@DeInit done}%
}
+{}
+{\LWR@patcherror{listings}{lst@DeInit}}
% \end{macrocode}
% \end{noindmacro}
%
@@ -67455,6 +67946,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
%
% Patched for \pkg{lwarp}.
% \begin{macrocode}
+\VerifyCommand[lwarp][listings]{\lst@MakeCaption}{58505F418EA5E42B63D92AD0ED0C433C}
+
\def\lst@MakeCaption#1{%
\LWR@traceinfo{lst@MakeCaption at #1}%
\lst@ifdisplaystyle
@@ -67712,7 +68205,7 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \codehtml
%
% \begin{macrocode}
-\LWR@ProvidesPackagePass{lltjp-siunitx}% 2021-10-31, no date assigned in file
+\LWR@ProvidesPackagePass{lltjp-siunitx}% 2022-12-14, no date assigned in file
% \end{macrocode}
%
% This is the \pkg{siunitx} v3 file, as patched by \pkg{lltjp-siunitx}.
@@ -67720,6 +68213,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \begin{macrocode}
\ExplSyntaxOn
+\VerifyCommand[lwarp][lltjp-siunitx]{\siunitx_print_text:n}{A248D4314D135CB0AC3E6678F331CFF2}
+
\cs_set_protected:Npn \siunitx_print_text:n #1
{
\text
@@ -67731,21 +68226,21 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
{ \fontseries { \seriesdefault } }
\bool_if:NT \l__siunitx_print_text_shape_bool
{ \fontshape { \shapedefault } }
- \bool_lazy_any:nT
- {
- { \l__siunitx_print_text_family_bool }
- { \l__siunitx_print_text_series_bool }
- { \l__siunitx_print_text_shape_bool }
- }
- { \selectfont }
- \tl_use:N \l__siunitx_print_text_font_tl
- \exp_args:NnV \tl_if_head_eq_meaning:nNTF {#1} \l_siunitx_unit_fraction_tl
- {
- \__siunitx_print_text_fraction:Nnn #1
- }
- {
- \__siunitx_print_text_replace:n {#1}
- }
+ \bool_lazy_any:nT% lwarp: factors for a single \selectfont
+ {% lwarp
+ { \l__siunitx_print_text_family_bool }% lwarp
+ { \l__siunitx_print_text_series_bool }% lwarp
+ { \l__siunitx_print_text_shape_bool }% lwarp
+ }% lwarp
+ { \selectfont }% lwarp
+ \tl_use:N \l__siunitx_print_text_font_tl% lwarp
+ \exp_args:NnV \tl_if_head_eq_meaning:nNTF {#1} \l_siunitx_unit_fraction_tl% lwarp
+ {% lwarp
+ \__siunitx_print_text_fraction:Nnn #1% lwarp
+ }% lwarp
+ {% lwarp
+ \__siunitx_print_text_replace:n {#1}% ORIGINAL
+ }% lwarp
}
}
@@ -68585,6 +69080,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
\endgroup%
}
+\VerifyCommand[lwarp][luatodonotes]{\@todoarea}{3D40C9C729633DA7BB80F7A27E7C2694}
+
\renewcommand{\@todoarea}[3][]{%
\@todonotes@areaselectedtrue%
\@todocommon{#1}{#2}%
@@ -68703,7 +69200,7 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \begin{macrocode}
\LWR@origRequirePackage{luacode}
-\LWR@ProvidesPackagePass{lyluatex}[2022/11/07]
+\LWR@ProvidesPackagePass{lyluatex}[2023/04/18]
% \end{macrocode}
%
% User-redefinable \attribute{ALT} tag:
@@ -68715,7 +69212,7 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
% \begin{noindmacro}{\ly@compilescore} \marg{\prog{Lilypond} object}
% \changes{v0.74}{2019/08/04}{\pkg{lyluatex}: Split system images, assign class.}
% \begin{macrocode}
-\LetLtxMacro\LWR@orig@ly@compilescore\ly@compilescore
+\VerifyCommand[lwarp][lyluatex]{\ly@compilescore}{31A1EF1F24F22143AFD302A7C6AD29E6}
\renewcommand*{\ly@compilescore}[1]{%
% \end{macrocode}
@@ -68799,6 +69296,8 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
%
% In \HTML\ the following generates an error, so is removed:
% \begin{macrocode}
+\VerifyCommand[lwarp][lyluatex]{\endly@bufferenv}{9B3BA3FC990E03634B57041666E0048D}
+
\xpatchcmd{\endly@bufferenv}
{\hspace{0pt}\\}
{}
@@ -71067,6 +71566,8 @@ background:
% each instance of the same contents.
% \changes{v0.893}{2020/12/24}{\pkg{menukeys}: Updated to v1.6.1.}
% \begin{macrocode}
+\VerifyCommand[lwarp][menukeys]{\tw@define@menu@macro@}{A3C988E47073504556D744EF08443B1D}
+
\xpatchcmd{\tw@define@menu@macro@}
{\@nameuse{tw@style@#4@pre}}
{%
@@ -71682,6 +72183,8 @@ background:
% otherwise \pkg{minted} would then colorize the sanitized results,
% breaking the \HTML\ entities in \pkg{lwarp}'s \HTML\ output.
%
+% Not using \cs{VerifyCommand} here because these are merely adjusting the keys,
+% and other changes in the original definitions probably won't affect these patches.
% \begin{macrocode}
\xpatchcmd{\RobustMintInlineProcess}
{\setkeys{minted@opt@cmd}{#1}}
@@ -71755,6 +72258,9 @@ background:
% To add sanitization during the final output,
% adjust several characters to use \HTML\ entities
% when loading the pygmentized results,
+%
+% Not using \cs{VerifyCommand} here because this is a simple patch,
+% not likely to be affected by other changes to the original.
% \begin{macrocode}
\xpatchcmd{\minted@input}
{\input{#1}}
@@ -72299,6 +72805,8 @@ background:
% \end{macrocode}
%
% \begin{macrocode}
+\VerifyCommand[lwarp][multibib]{\newcites}{77893319F9935670F2FF2E524075CB71}
+
\xpatchcmd{\newcites}
{{\@suffix}}
{{\@suffix_html}}
@@ -73118,74 +73626,41 @@ background:
% \codehtml
%
% \begin{macrocode}
-\LWR@ProvidesPackagePass{nameauth}[2017/03/22]
+\LWR@ProvidesPackagePass{nameauth}[2023/02/03]
% \end{macrocode}
%
% \DescribeHook[nameauth]{\@nameauth@Hook}
% \pkg{lwarp} formatting is inserted.
% \begin{macrocode}
+\VerifyCommand[lwarp][nameauth]{\@nameauth@Hook}{E665BBD1C138AA37AF2AF5E3C3565584}
+
\renewcommand*\@nameauth@Hook[1]
{%
- \if@nameauth@Lock
+ \ifdefined\@nameauth@InParser
\@nameauth@InHooktrue%
\protected@edef\test{#1}%
\expandafter\@nameauth@TestDot\expandafter{\test}%
- \if@nameauth@InAKA
- \if@nameauth@AlwaysFormat
- \@nameauth@FirstFormattrue%
- \else
- \unless\if@nameauth@AKAFormat
- \@nameauth@FirstFormatfalse\fi
- \fi
- \if@nameauth@MainFormat
- \if@nameauth@FirstFormat
- \bgroup\NamesFormat{%
+ \if@nameauth@MainFormat
+ \if@nameauth@FirstFormat
+ \bgroup\NamesFormat{%
\LWR@textcurrentcolor{\LWR@textcurrentfont{#1}}% lwarp
- }\egroup%
- \else
- \bgroup\MainNameHook{%
- \LWR@textcurrentcolor{\LWR@textcurrentfont{#1}}% lwarp
- }\egroup%
- \fi
+ }\egroup%
\else
- \if@nameauth@FirstFormat
- \bgroup\FrontNamesFormat{%
+ \bgroup\MainNameHook{%
\LWR@textcurrentcolor{\LWR@textcurrentfont{#1}}% lwarp
- }\egroup%
- \else
- \bgroup\FrontNameHook{%
- \LWR@textcurrentcolor{\LWR@textcurrentfont{#1}}% lwarp
- }\egroup%
- \fi
+ }\egroup%
\fi
\else
- \if@nameauth@AlwaysFormat
- \@nameauth@FirstFormattrue%
- \fi
- \if@nameauth@MainFormat
- \if@nameauth@FirstFormat
- \bgroup\NamesFormat{%
- \LWR@textcurrentcolor{\LWR@textcurrentfont{#1}}% lwarp
- }\egroup%
- \else
- \bgroup\MainNameHook{%
+ \if@nameauth@FirstFormat
+ \bgroup\FrontNamesFormat{%
\LWR@textcurrentcolor{\LWR@textcurrentfont{#1}}% lwarp
- }\egroup%
- \fi
+ }\egroup%
\else
- \if@nameauth@FirstFormat
- \bgroup\FrontNamesFormat{%
- \LWR@textcurrentcolor{\LWR@textcurrentfont{#1}}% lwarp
- }\egroup%
- \else
- \bgroup\FrontNameHook{%
+ \bgroup\FrontNameHook{%
\LWR@textcurrentcolor{\LWR@textcurrentfont{#1}}% lwarp
- }\egroup%
- \fi
+ }\egroup%
\fi
\fi
- \@nameauth@FirstFormatfalse%
- \@nameauth@InHookfalse%
\fi
}
% \end{macrocode}
@@ -74581,21 +75056,19 @@ background:
% \codehtml
%
% \begin{macrocode}
-\LWR@ProvidesPackagePass{nomencl}[2005/09/22]
+\LWR@ProvidesPackagePass{nomencl}[2021/11/10]
% \end{macrocode}
%
% \cs{BaseJobname} is added to the label in case \pkg{xr} or \pkg{xr-hyper} are used.
%
% \changes{v0.72}{2019/06/05}{\pkg{nomencl}: Fix references for \pkg{xr}, \pkg{xr-hyper}.}
+% \changes{v0.914}{2024/01/10}{\pkg{nomencl}: Updated to v5.6.}
% \begin{macrocode}
-\def\@@@nomenclature[#1]#2#3{%
- \def\@tempa{#2}\def\@tempb{#3}%
- \protected@write\@nomenclaturefile{}%
- {\string\nomenclatureentry{#1\nom@verb\@tempa @[{\nom@verb\@tempa}]%
- \begingroup\nom@verb\@tempb\protect\nomeqref{\theequation}%
- |nompageref}{\theLWR@previousautopagelabel}}% lwarp
- \endgroup
- \@esphack}
+\xpatchcmd{\@@@nomenclature}
+ {\thepage}
+ {\theLWR@previousautopagelabel}
+ {}
+ {\LWR@patcherror{nomencl}{@@@nomenclature}}
\renewcommand*{\pagedeclaration}[1]{, \nameref{\BaseJobname-autopage-#1}}%
% \end{macrocode}
@@ -75051,6 +75524,7 @@ background:
% Patched to remember the style for this theorem type,
% and set it later when the environment is started.
% \begin{macrocode}
+\VerifyCommand[lwarp][ntheorem]{\@xnthm}{699CB37D7349C4F062B16B9B890FFE90}
\gdef\@xnthm#1#2[#3]{%
\ifthm@tempif
@@ -75070,6 +75544,8 @@ background:
\fi
}
+\VerifyCommand[lwarp][ntheorem]{\@ynthm}{E0E49F4C2FF76BA3024F2413E2E3DA0D}
+
\gdef\@ynthm#1#2{%
\ifthm@tempif
\csedef{LWR@thmstyle#1}{\LWR@newtheoremstyle}% lwarp
@@ -75086,6 +75562,8 @@ background:
\fi
}
+\VerifyCommand[lwarp][ntheorem]{\@othm}{A6D2FCC33AB3F7C7F998399F013FB6A8}
+
\gdef\@othm#1[#2]#3{%
\@ifundefined{c@#2}{\@nocounterr{#2}}%
{\ifthm@tempif
@@ -75141,6 +75619,8 @@ background:
%
% Each header is encased in an \cs{InlineClass} of class |theoremheader<style>|.
% \begin{macrocode}
+\VerifyCommand[lwarp][ntheorem]{\newtheoremstyle}{8173F61CEBA45226CD3015E5E258C93D}
+
\gdef\newtheoremstyle#1#2#3{%
\expandafter\@ifundefined{th@#1}%
{\expandafter\gdef\csname th@#1\endcsname{%
@@ -75498,14 +75978,15 @@ background:
%
% Patch for \CSS:
% \begin{macrocode}
-\def\listtheorems#1{
-\LWR@htmlelementclass{nav}{lothm}%
-\begingroup
-\c@tocdepth=-2%
-\def\thm@list{#1}\thm@processlist
-\endgroup
-\LWR@htmlelementclassend{nav}{lothm}%
-}
+\xpretocmd{\listtheorems}
+ {\LWR@htmlelementclass{nav}{lothm}}
+ {}
+ {\LWR@patcherror{ntheorem}{listtheorems}}
+
+\xapptocmd{\listtheorems}
+ {\LWR@htmlelementclassend{nav}{lothm}}
+ {}
+ {\LWR@patcherror{ntheorem}{listtheorems}}
% \end{macrocode}
%
%
@@ -75574,6 +76055,8 @@ background:
%
% Remove the leading 1pt kern:
% \begin{macrocode}
+\VerifyCommand[lwarp][octave]{\@PrintTicks}{26490A1A3593981987395ED149B4D54D}
+
\RenewDocumentCommand{\@PrintTicks}{ m }{%
\kern-1pt% lwarp
\@TickNum = #1%
@@ -75592,6 +76075,8 @@ background:
%
% Catch the inline font:
% \begin{macrocode}
+\VerifyCommand[lwarp][octave]{\pitch}{3803E3D6B44EDFF8880F06BBE60571D9}
+
\RenewDocumentCommand{\pitch}{ m o m }{%
\if@OctaveNumber%
{%
@@ -75651,16 +76136,19 @@ background:
% \pkg{orcidlink} is patched for use by \pkg{lwarp}.
%
% \changes{v0.896}{2021/03/19}{\pkg{orcidlink}: Added.}
+% \changes{v0.914}{2024/01/10}{\pkg{orcidlink}: Updated to v1.0.5.}
%
% \codehtml
%
% \begin{macrocode}
\RequirePackage{lwarp-scalerel}
-\LWR@ProvidesPackagePass{orcidlink}[2020/11/21]
+\LWR@ProvidesPackagePass{orcidlink}[2023/12/30]
% \end{macrocode}
%
% \begin{macrocode}
+\VerifyCommand[lwarp][orcidlink]{\orcidlink}{3158910F15AD114F9C397A208315B6D2}
+
\renewcommand\orcidlink[1]{%
\texorpdfstring%
{%
@@ -76175,6 +76663,8 @@ background:
% \end{macrocode}
%
% \begin{macrocode}
+\VerifyCommand[lwarp][parnotes]{\PN@parnote@real}{91361D751D6393BA644478FDE4A764DA}
+
\long\def\PN@parnote@real#1#2{%
\parnotemark{#1}%
% Unless this is the first parnote in \PN@text, add a separator first
@@ -76194,6 +76684,8 @@ background:
}%
}
+\VerifyCommand[lwarp][parnotes]{\PN@parnotes@real}{AF1257823BFCBC31ADDA4AAE1F3F3710}
+
\def\PN@parnotes@real{%
% \end{macrocode}
%
@@ -76257,6 +76749,8 @@ background:
% \changes{v0.903}{2022/01/01}{\pkg{parnotes}: Par handling.}
% \begin{macrocode}
+\VerifyCommand[lwarp][parnotes]{\PN@parnotes@auto}{08CC1722ABA55FA01D64F2B29C919D70}
+
\def\PN@parnotes@auto{%
\ifbool{LWR@parnotes@doingauto}{
\ifx\@currenvir\@PN@autopn
@@ -76878,6 +77372,8 @@ background:
% Patched to use \cs{LWR@esopic@newpage}.
% \changes{v0.909}{2022/07/15}{\pkg{pdfpages}: Updated to v0.5w.}
% \begin{macrocode}
+\VerifyCommand[lwarp][pdfpages]{\AM@output@i}{642914BBA600927BFEC7D27A97A4A59D}
+
\xpatchcmd{\AM@output@i}
{\newpage}
{\LWR@esopic@newpage}
@@ -78037,17 +78533,23 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
%
% A \env{lateximage} captures the modified image from the document.
% \begin{macrocode}
+\VerifyCommand[lwarp][psfragx]{\pfx@includegraphicx}{45FCF58D66C0BFFC685913A78CADF20D}
+
\def\pfx@includegraphicx#1#2{%
\begin{lateximage}[-psfragx-~\PackageDiagramAltText]%
\mbox{\pfx@overpix{#1}{#2}\endpfx@overpix}%
\end{lateximage}%
}
+\VerifyCommand[lwarp][psfragx]{\@@@overpix}{DD69D71E9C551D4D568AE4269AAAC1C0}
+
\def\@@@overpix[#1]<#2>[#3]#4{%
\begin{lateximage}[-psfragx-~\PackageDiagramAltText]%
\pfx@overpix{#1,ovpfgd={#2},ovpbgd={#3}}{#4}%
}
+\VerifyCommand[lwarp][psfragx]{\endoverpix}{722C858D87F96798ABE0BAF89CB13373}
+
\def\endoverpix{%
\endpfx@overpix%
\end{lateximage}%
@@ -78449,6 +78951,9 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \end{macrocode}
% \begin{macrocode}
+\VerifyEnvironment[lwarp][quoting]{quoting}
+ {AEC586766C9109C2889BDED4AE083C05}{8CE7FB71438699772DFD79A2BC803AB3}
+
\xpatchcmd{\quoting}{\quo@begintext}
{\begin{LWR@blocktextcurrentfont}\quo@begintext}
{}
@@ -78679,6 +79184,9 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
\LWR@ProvidesPackagePass{register}[2019/01/01]
% \end{macrocode}
+% Not using \cs{VerifyCommand} here because these patches are not
+% likely to be affected by changes in the original.
+%
% \begin{macrocode}
\xpatchcmd{\register}
{\centering}
@@ -80892,6 +81400,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \changes{v0.47}{2018/01/30}{\pkg{sidenotes}: Fix for \SVG\ math in captions.}
% \changes{v0.84}{2020/04/16}{\pkg{sidenotes}: \cs{sidecaption} not long arg.}
% \begin{macrocode}
+\VerifyCommand[lwarp][sidenotes]{\sidecaption}{2EFE2196F612943BCF13746EC12E69D6}
+
\RenewDocumentCommand \sidecaption {s o o m}
{
\LWR@stoppars
@@ -81011,6 +81521,9 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \begin{macrocode}
\ExplSyntaxOn
+\VerifyEnvironment[lwarp][simplebnf]{bnf}
+ {A7E8911B9291D4EB7C1CD8366CD75341}{3B45D7D9107687D718F5303B6632776C}
+
\RenewDocumentEnvironment { bnf } { d() O{llcll} +b }
{
\begin{lateximage}[bnf:\space\detokenize{#3}]% lwarp
@@ -81027,6 +81540,9 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
}
{ }
+\VerifyEnvironment[lwarp][simplebnf]{bnfgrammar}
+ {E7326E6CAE6E35827E866B4A08C5CEA8}{A9B27A2478E8BD67B19E94ECF8A44F14}
+
\RenewDocumentEnvironment { bnfgrammar } { O{llcll} O{[^\|]\|[^\|]} O{\|\|} +b }
{
\msg_warning:nn { simplebnf } { dep }
@@ -81619,6 +82135,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \begin{macrocode}
+\VerifyCommand[lwarp][siunitx]{\siunitx_number_format:nN}{33A1ECC8D70AC60AEB82D78E598155E6}
+
\cs_set_protected:Npn \siunitx_number_format:nN #1#2
{
\group_begin:
@@ -81650,6 +82168,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
%
%
% \begin{macrocode}
+\VerifyCommand[lwarp][siunitx]{\__siunitx_compound_unparsed:n}{C6CACB29BD6BD43225E174AD2FBD750C}
+
\cs_set_protected:Npn \__siunitx_compound_unparsed:n #1
{
\tl_if_blank:nF {#1}
@@ -81686,6 +82206,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% If not in a \env{lateximage}, always use text mode.
% Ignore current text font if resetting text family, series, and shape.
% \begin{macrocode}
+\VerifyCommand[lwarp][siunitx]{\__siunitx_print_aux:nn}{FD2679699363E8095304C0665CAC4072}
+
\cs_set_protected:Npn \__siunitx_print_aux:nn #1#2
{
\LetLtxMacro\mathrm\LWR@siunitx@mathrm% lwarp
@@ -81693,7 +82215,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
{
\tl_if_empty:cTF { l__siunitx_print_ #1 _color_tl }
{ \use:n }
- { \exp_args:Nv \textcolor { l__siunitx_print_ #1 _color_tl } }
+ { \ExpandArgs { v } \textcolor { l__siunitx_print_ #1 _color_tl } }
{
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}% lwarp
{
@@ -81761,6 +82283,9 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \end{macrocode}
%
% \begin{macrocode}
+\VerifyCommand[lwarp][siunitx]{\__siunitx_complex_format_cartesian_auxii:n}
+ {DC0897DBE172C13B6F7282D266BE1156}
+
\cs_set_protected:Npn \__siunitx_complex_format_cartesian_auxii:n #1
{
\LWR@siunitx@setcomplexroot% lwarp
@@ -81826,6 +82351,9 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% If not in a \env{lateximage}, print a simplified verison
% without the box measurement things which conflict with \pkg{lwarp}:
% \begin{macrocode}
+\VerifyCommand[lwarp][siunitx]{\__siunitx_angle_arc_print_auxii:nw}
+ {7CEE155CD4C7A9CDFEAE3AF8DD154B03}
+
\cs_set_protected:Npn \__siunitx_angle_arc_print_auxii:nw
#1#2 \q_nil #3 \q_nil #4 \q_nil #5 \q_nil #6 \q_nil #7 \q_nil #8 \q_stop
{
@@ -81911,6 +82439,9 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% If not in a \env{lateximage}, print a simple inline fraction,
% avoiding the use of \SVG\ math:
% \begin{macrocode}
+\VerifyCommand[lwarp][siunitx]{\__siunitx_print_text_fraction:Nnn}
+ {F47521F256C661719258012969E7AE04}
+
\cs_set_protected:Npn \__siunitx_print_text_fraction:Nnn #1#2#3
{
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}% lwarp
@@ -81932,6 +82463,9 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
%
% If not in a \env{lateximage}, print a \cs{textsubscript}:
% \begin{macrocode}
+\VerifyCommand[lwarp][siunitx]{\__siunitx_unit_format_qualifier_subscript:}
+ {543B01848C00E4089F0E0C53988F6A28}
+
\cs_set_protected:Npn \__siunitx_unit_format_qualifier_subscript:
{
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}% lwarp
@@ -81961,6 +82495,9 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \end{macrocode}
%
% \begin{macrocode}
+\VerifyCommand[lwarp][siunitx]{\siunitx_quantity:nn}
+ {AEF3237DB5107FE46437AF1D3ABD03DE}
+
\cs_set_protected:Npn \siunitx_quantity:nn #1#2
{
\group_begin:
@@ -82116,6 +82653,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \begin{macrocode}
\LWR@origRequirePackage{lwarp-common-mathjax-siunitx}
+\begin{warpMathJax}
\CustomizeMathJax{\let\unit\si}
\CustomizeMathJax{\let\qty\SI}
\CustomizeMathJax{\let\qtylist\SIlist}
@@ -82124,6 +82662,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
\CustomizeMathJax{\let\qtyproduct\SI}
\CustomizeMathJax{\let\complexnum\num}
\CustomizeMathJax{\newcommand{\complexqty}[3][]{(\complexnum{#2})\si{#3}}}
+\end{warpMathJax}
% \end{macrocode}
%
% Pass \optn{range-phrase} to \pkg{common-mathjax-siunitx}:
@@ -84162,6 +84701,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \end{macrocode}
%
% \begin{macrocode}
+\VerifyCommand[lwarp][splitidx]{\newindex}{84695DF9965D5007036BA0B4023C59B5}
+
\catcode`\_=12%
\xpatchcmd{\newindex}
{\jobname-#2.idx}
@@ -84173,6 +84714,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
%
% Patched to use \pkg{lwarp}'s automatic indexing counter instead of \cs{thepage}:
% \begin{macrocode}
+\VerifyCommand[lwarp][splitidx]{\@wrsindex}{6E1A6193E20ABD0DFD6A1FC3F35113A6}
+
\renewcommand*{\@wrsindex}[2][]{%
\ifx\relax#1\relax
\if@splitidx
@@ -84206,6 +84749,9 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
%
% \pkg{lwarp} defines sectioning commands with \pkg{xparse},
% so the below patches are done as temporary redefinitions instead of being \cs{let}.
+%
+% Not using \cs{VerifyCommand} here since the patches are
+% not likely to be affected by changes in the original.
% \begin{macrocode}
\xpatchcmd{\printsubindex}
{\let\section\subsection}
@@ -84372,6 +84918,9 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
\LWR@ProvidesPackagePass{stackengine}[2017/02/13]
% \end{macrocode}
%
+% Not using \cs{VerifyCommand} here because these patches appear to
+% be fairly transparent to changes in the original
+%
% The original version is neccessary for the patched \cs{@stack}
% and \cs{stackanchor},
% where nesting \env{lateximage}s does not work:
@@ -84389,6 +84938,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \end{macrocode}
%
% \cs{@stack} uses a \env{lateximage} with a vertical alignment:
+%
% \begin{macrocode}
\LetLtxMacro\LWR@orig@@stack\@stack
@@ -84449,6 +84999,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \cs{savestack} reverts to print mode while saving the box, then places it inside a
% \env{lateximage} when used:
% \begin{macrocode}
+\VerifyCommand[lwarp][stackengine]{\savestack}{4B06A7F9D3F0B829FE293FB452D43430}
+
\renewcommand*\savestack[2]{%
\xdef\sv@name{\stack@macro@name{#1}}%
\@ifundefined{\sv@name content}{%
@@ -84856,7 +85408,10 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
%
% Redefined using the lwarp version of |&|:
% \begin{macrocode}
-\StartDefiningTabulars% lwarp
+\VerifyCommand[lwarp][statistics]{\__statistics_table_make:nn}
+ {DC8BA2460EA83AE75FA0C0F00E775B5E}
+
+\StartDefiningTabulars% lwarp, no other changes below
\cs_set_protected_nopar:Nn \__statistics_table_make:nn {
\int_compare:nT
{ 0 < \l__statistics_table_maxcols_int
@@ -84991,6 +85546,9 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% which looks for certain tokens to detect \cs{hline}s, so \cs{hline}
% is used instead.
% \begin{macrocode}
+\VerifyCommand[lwarp][statistics]{\__statistics_table_end:}
+ {B2F9FC5A36B44E6E06A8D9807FCBAA6D}
+
\cs_set_protected_nopar:Nn \__statistics_table_end: {
\tl_set:Nx \l__statistics_table_preamble_tl {
% \exp_not:n { \begin{array}[ }
@@ -85035,6 +85593,9 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% For the leftmost column.
% Redefined to use text output:
% \begin{macrocode}
+\VerifyCommand[lwarp][statistics]{\__statistics_table_start:}
+ {624FAC0783057B481861D9F02764F6C5}
+
\cs_set_protected_nopar:Nn \__statistics_table_start: {
\int_zero:N \l__statistics_nbvals_int
\clist_pop:NNT \l__statistics_table_maxcols_clist \l_tmpa_tl {
@@ -85055,6 +85616,9 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% For the first row.
% Redefined to use text output:
% \begin{macrocode}
+\VerifyCommand[lwarp][statistics]{\__statistics_IN:w}
+ {DD1B22587CFB4DEDBEE4D8E9A1E0CCAF}
+
\RenewDocumentCommand \__statistics_IN:w { m u{;} u{;} m } {
% \ensuremath{ \left#1 \num{#2} \mathbin{;} \num{#3} \right#4 }
#1 #2 ; #3 #4% lwarp
@@ -85069,6 +85633,9 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% Added \cs{ExplSyntaxOn/Off} to avoid errors.
% (In once instance, a double subscript error appeared.)
% \begin{macrocode}
+\VerifyCommand[lwarp][statistics]{\StatsGraph}
+ {998267D2E90514DBDFD5544FB69AD6C8}
+
\RenewDocumentCommand \StatsGraph { +O{} +m +O{} } {
\group_begin:
\int_gincr:N \g__statistics_graph_last_int
@@ -85481,6 +86048,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
%
% The outer minipage allows side-by-side subfloats with \cs{hfill} between.
% \begin{macrocode}
+\VerifyCommand[lwarp][subfig]{\sf@@@subfloat}{B29FEC2418FD15B9E58ACF593B81BA93}
+
\long\def\sf@@@subfloat#1[#2][#3]#4{%
\begin{minipage}{\linewidth}% lwarp
% \end{macrocode}
@@ -85592,6 +86161,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \begin{noindmacro}{\sf@subcaption}
% \marg{1 type} \marg{2 \LOF\ entry} \marg{3 caption}
% \begin{macrocode}
+\VerifyCommand[lwarp][subfig]{\sf@subcaption}{63123F93BADE8F3BBC127012A832A4C4}
+
\long\def\sf@subcaption#1#2#3{%
\LWR@stoppars% lwarp
\ifx \relax#2\relax \else
@@ -86864,6 +87435,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% Footnotes are handled via the main footnote mechanism, and
% pending notes are printed before and after each \env{tcolorbox}.
% Footnote numbering will not match the print output.
+%
+% Not using \cs{VerifyCommand} here because \env{tcolorbox} changes meaning.
% \begin{macrocode}
\renewenvironment{tcolorbox}[1][]
{
@@ -86995,6 +87568,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \cs{tcbtitle} is patched to support the text font.
% \changes{v0.911}{2023/02/28}{\pkg{tcolorbox}: Updated to v6.0.1.}
% \begin{macrocode}
+\VerifyCommand[lwarp][tcolorbox]{\tcbtitle}{8C821A2BDC95C579A4FA340365D9A5CB}
+
\LetLtxMacro\LWR@HTML@tcbtitle\tcbtitle
\xpatchcmd{\LWR@HTML@tcbtitle}
{\tcb@insert@before@title\tcbtitletext}
@@ -87633,6 +88208,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \pkg{theorem} is patched for use by \pkg{lwarp}.
%
% \changes{v0.25}{2017/03/16}{\pkg{theorem}: Added.}
+% \changes{v0.914}{2024/01/10}{\pkg{theorem}: Updated to v2.2c.}
%
% \begin{table}[ht]
% \hrule
@@ -87651,7 +88227,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \codehtml
%
% \begin{macrocode}
-\LWR@ProvidesPackagePass{theorem}[2014/10/28]
+\LWR@ProvidesPackagePass{theorem}[2023/07/05]
% \end{macrocode}
@@ -87664,6 +88240,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% Patched to remember the style being used for new theorems:
% \begin{macrocode}
+\VerifyCommand[lwarp][theorem]{\theoremstyle}{B805673118A2EA934449A9B7D25A5D33}
+
\gdef\theoremstyle#1{%
\@ifundefined{th@#1}{\@warning
{Unknown theoremstyle `#1'. Using `plain'}%
@@ -87682,6 +88260,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% Patched to remember the style for this theorem type,
% and set it later when the environment is started.
% \begin{macrocode}
+\VerifyCommand[lwarp][theorem]{\@xnthm}{D6164703589C684059381DB798F89158}
+
\gdef\@xnthm#1#2[#3]{%
\expandafter\@ifdefinable\csname #1\endcsname
{%
@@ -87699,6 +88279,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
\AtBeginEnvironment{#1}{\edef\LWR@thisthmstyle{\@nameuse{LWR@thmstyle#1}}}% lwarp
}}
+\VerifyCommand[lwarp][theorem]{\@ynthm}{C5A12EBEFDBCD5C5628C65B16A01DFB4}
+
\gdef\@ynthm#1#2{%
\expandafter\@ifdefinable\csname #1\endcsname
{
@@ -87712,6 +88294,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
\AtBeginEnvironment{#1}{\edef\LWR@thisthmstyle{\@nameuse{LWR@thmstyle#1}}}% lwarp
}}
+\VerifyCommand[lwarp][theorem]{\@othm}{93B7CCDCEFDF36BEEF31477D6D390AC3}
+
\gdef\@othm#1[#2]#3{%
\expandafter\ifx\csname c@#2\endcsname\relax
\@nocounterr{#2}%
@@ -87829,6 +88413,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% Patched for \CSS:
% \changes{v0.46}{2018/01/22}{\pkg{theorem}: Adapt to \env{trivlist} changes.}
% \begin{macrocode}
+\VerifyCommand[lwarp][theorem]{\@thm}{4632915C52ABB4DB5D462AA58A80BAF2}
+
\gdef\@thm#1#2{\refstepcounter{#1}%
\LWR@forcenewpage% lwarp
% \end{macrocode}
@@ -87931,6 +88517,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% Other \pkg{thm-*} package may be loaded by \pkg{thm-listof}.
% \begin{macrocode}
\IfPackageAtLeastTF{thm-listof}{2020/08/01}{% v0.72
+ \VerifyCommand[lwarp][thm-listof]{\thmtlo@newentry}{AF7BF291DC508ED71058DAF745F9C018}
\def\thmtlo@newentry{%
\csdef{l@\thmt@envname}##1##2{\hypertocfloat{1}{figure}{lof}{##1}{##2}}%
}
@@ -87990,6 +88577,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \end{macrocode}
%
% \begin{macrocode}
+\VerifyCommand[lwarp][thm-restate]{\thmt@restatable}{C912622BBA051C5F22994335F66976AB}
+
\xpatchcmd{\thmt@restatable}
{\@ifstar}
{\edef\LWR@thisthmstyle{#2}\@ifstar}
@@ -88813,8 +89402,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
%
% \changes{v0.85}{2020/04/30}{\pkg{titlesec}: \optn{pagestyles} option.}
% \begin{macrocode}
-\PackageInfo{lwarp}{Using the lwarp version of package `titlesec'.}%
-\ProvidesPackage{lwarp-titlesec}[2016/03/21]
+\LWR@ProvidesPackageDrop{titlesec}[2016/03/21]
\newbool{LWR@loadtitleps}
\boolfalse{LWR@loadtitleps}
@@ -95942,12 +96530,16 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% declared in the text, but for \HTML\ it prints the name where the page notes are printed.
% \changes{v0.84}{2020/04/02}{\pkg{lwarp-patch-memoir}: Improved \pkg{cleveref} support.}
% \begin{macrocode}
+\VerifyCommand[lwarp][lwarp-patch-memoir]{\m@m@wrpnote}{D2AE41FE9A265B639F7074AB2AF29976}
+
\xpatchcmd{\m@m@wrpnote}
{\string\startnoteentry{\thepagenote}}
{\string\startnoteentry{{\thepagenote}{\arabic{pagenote}}}}
{}
{\LWR@patcherror{memoir}{m@m@wrpnote}}
+\VerifyCommand[lwarp][lwarp-patch-memoir]{\startnoteentrystart}{2A595EA1DC483451337C33072604EDD6}
+
\renewcommand\startnoteentrystart[4]{%
\prenoteinnotes%
\noteidinnotes{\@firstoftwo#1}{#2}%
@@ -96085,7 +96677,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
\renewcommand*{\tocnameref}{}
% \end{macrocode}
-% \changes{v0.912}{2023/08/24}{\pkg{memoir}: Updated to v3.8.1}
+% \changes{v0.912}{2023/08/24}{\pkg{lwarp-patch-memoir}: Updated to v3.8.1}
% \cs{currenttitle} has been removed from \pkg{memoir}.
% \begin{macrocode}
\renewcommand*{\theTitleReference}[2]{}
@@ -96103,6 +96695,8 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
% \begin{macrocode}
\AtBeginDocument{
+\VerifyCommand[lwarp][lwarp-patch-memoir]{\@@wrindexhyp}{8DA7E3C8BE7A830442D98EA033147F63}
+
\def\@@wrindexhyp#1||\\{%
\addtocounter{LWR@autoindex}{1}% lwarp
% \ifshowindexmark\@showidx{#1}\fi
@@ -96111,7 +96705,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
{\string\@@wrindexm@m{\@idxfile}{#1}{\arabic{LWR@autoindex}}}% lwarp
% \end{macrocode}
% The label is assigned after the file write to avoid conflict with \pkg{cleveref}.
-% \changes{v0.905}{2022/03/21}{Label after file write.}
+% \changes{v0.905}{2022/03/21}{\pkg{lwarp-patch-memoir}: Label after file write.}
% \begin{macrocode}
\label{LWRindex-\arabic{LWR@autoindex}}% lwarp
\endgroup
@@ -96135,7 +96729,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
{\string\@@wrindexm@m{\@idxfile}{#1}{\arabic{LWR@autoindex}}}%
% \end{macrocode}
% The label is assigned after the file write to avoid conflict with \pkg{cleveref}.
-% \changes{v0.905}{2022/03/21}{Label after file write.}
+% \changes{v0.905}{2022/03/21}{\pkg{lwarp-patch-memoir}: Label after file write.}
% \begin{macrocode}
\label{LWRindex-\arabic{LWR@autoindex}}%
\endgroup
diff --git a/macros/latex/contrib/lwarp/lwarp.ins b/macros/latex/contrib/lwarp/lwarp.ins
index a16143215b..d920b43d4c 100644
--- a/macros/latex/contrib/lwarp/lwarp.ins
+++ b/macros/latex/contrib/lwarp/lwarp.ins
@@ -212,6 +212,8 @@ version 2005/12/01 or later.
\file{lwarp-fnpos.sty}{\from{lwarp.dtx}{fnpos}}
\file{lwarp-fontawesome.sty}{\from{lwarp.dtx}{fontawesome}}
\file{lwarp-fontawesome5.sty}{\from{lwarp.dtx}{fontawesome5}}
+\file{lwarp-fontawesome5-generic-helper.sty}{\from{lwarp.dtx}{fontawesome5-generic-helper}}
+\file{lwarp-fontawesome5-utex-helper.sty}{\from{lwarp.dtx}{fontawesome5-utex-helper}}
\file{lwarp-fontaxes.sty}{\from{lwarp.dtx}{fontaxes}}
\file{lwarp-footmisc.sty}{\from{lwarp.dtx}{footmisc}}
\file{lwarp-footnote.sty}{\from{lwarp.dtx}{footnote}}
diff --git a/macros/latex/contrib/lwarp/lwarp.pdf b/macros/latex/contrib/lwarp/lwarp.pdf
index 1b5170fb92..08bc4839c0 100644
--- a/macros/latex/contrib/lwarp/lwarp.pdf
+++ b/macros/latex/contrib/lwarp/lwarp.pdf
Binary files differ
diff --git a/macros/latex/contrib/lwarp/lwarpmk.lua b/macros/latex/contrib/lwarp/lwarpmk.lua
index 2c1709a5b9..121957dd19 100755
--- a/macros/latex/contrib/lwarp/lwarpmk.lua
+++ b/macros/latex/contrib/lwarp/lwarpmk.lua
@@ -2,7 +2,7 @@
-- Copyright 2016-2024 Brian Dunn
-printversion = "v0.913"
+printversion = "v0.914"
requiredconfversion = "2" -- also at *lwarpmk.conf
function printhelp ()
diff --git a/macros/latex/contrib/medmath/README b/macros/latex/contrib/medmath/README
new file mode 100644
index 0000000000..b96bbb99dd
--- /dev/null
+++ b/macros/latex/contrib/medmath/README
@@ -0,0 +1,3 @@
+Package: Fix mediummath option in nccmath package
+Author: Jianrui Lyu <tolvjr@163.com>
+License: The LaTeX Project Public License 1.3c \ No newline at end of file
diff --git a/macros/latex/contrib/medmath/medmath.pdf b/macros/latex/contrib/medmath/medmath.pdf
new file mode 100644
index 0000000000..ddbf48cf4a
--- /dev/null
+++ b/macros/latex/contrib/medmath/medmath.pdf
Binary files differ
diff --git a/macros/latex/contrib/medmath/medmath.sty b/macros/latex/contrib/medmath/medmath.sty
new file mode 100644
index 0000000000..af6f93165a
--- /dev/null
+++ b/macros/latex/contrib/medmath/medmath.sty
@@ -0,0 +1,110 @@
+% -*- coding: utf-8 -*-
+% ----------------------------------------------------------------------------
+% Author: Jianrui Lyu <tolvjr@163.com>
+% License: The LaTeX Project Public License 1.3c
+% ----------------------------------------------------------------------------
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{medmath}[2024-01-11 v2024B Fix mediummath option in nccmath package]
+
+\RequirePackage{array}
+\RequirePackage{etoolbox}
+
+\newif\ifmdm@enabled \mdm@enabledtrue % enable medmath fixes
+\newif\ifmdm@amsfonts \mdm@amsfontsfalse % use ams symbol fonts
+
+\DeclareKeys{
+ mdm@enabled .if = mdm@enabled,
+ mdm@amsfonts .if = mdm@amsfonts
+}
+
+\ProcessKeyOptions
+
+\RequirePackage[mediummath]{nccmath}
+
+\newcommand{\my@do@medmath}{%
+ %% Adjust \oiint operator
+ \ifdef{\oiint}{%
+ \let\NCC@op@oiint=\oiint
+ \DeclareRobustCommand{\oiintop}{\mathop{\medmath{\NCC@op@oiint}}}%
+ \def\oiint{\DOTSI\NCC@op@prepare{\oiintop}}%
+ }{}%
+ %% Setting \medintcorr parameter
+ %% We have used relative dimensions later, so no need to set it anymore
+ %\ifmdm@amsfonts
+ % \medintcorr{0.5em}
+ %\else
+ % \medintcorr{0.3em}
+ %\fi
+ %% The definite integrals in cases environment may cause infinite loops
+ %% Our redefinition moves \quad to the beginning of the second columns
+ %% Therefore removing extra spaces when there is only one column in it
+ \renewenvironment{cases}{%
+ \left\{\linespread{1.0}\selectfont\def\arraystretch{1.2}%
+ \begin{array}{@{}l@{}>{\quad}l@{}}%
+ }{%
+ \end{array}\right.%
+ }%
+ %% Right skip is missing when minipage or \parbox has only a displayed formula
+ %% Other problems could be found here: http://tex.stackexchange.com/q/22170
+ \let\start@gather=\NCC@startgather
+ \let\start@align=\NCC@startalign
+ \let\start@multline=\NCC@startmultline
+ \let\mathdisplay=\NCC@startdisplay
+}
+
+\newcommand{\my@do@medmath@fix}{%
+ %% Fix sizes of non integral operators in superscripts/subscripts
+ %% We use the method in scalerel package for saving math styles
+ % big operator in normal text is 80% of the size of \displaystyle
+ % big operator in script is 80% of the size of \textstyle
+ % big operator in script script is 80% of the size of \scriptstyle
+ \def\@my@style@D{\displaystyle}%
+ \def\@my@style@T{\displaystyle}%
+ \def\@my@style@S{\textstyle}%
+ \def\@my@style@s{\scriptstyle}%
+ \def\my@style@saved{\csname @my@style@\@my@style@switch\endcsname}%
+ \newcommand{\my@style@this}[1]{%
+ \mathchoice{\def\@my@style@switch{D}##1}{\def\@my@style@switch{T}##1}
+ {\def\@my@style@switch{S}##1}{\def\@my@style@switch{s}##1}%
+ }%
+ \DeclareRobustCommand*\medmath[1]{\NCC@select@msize
+ \mathord{\my@style@this{\raise\@tempdima\hbox{\NCC@prepare@msize$\my@style@saved ##1$}}}%
+ }
+ %% Fix sizes of integral operators in superscripts/subscripts
+ \newlength{\@my@em}%
+ \setlength{\@my@em}{1em}%
+ \ifmdm@amsfonts
+ \medintcorr{0.5\@my@em}%
+ \else
+ \medintcorr{0.3\@my@em}%
+ \fi
+ \newcommand{\my@style@unit}[1]{%
+ \mathchoice{\setlength{\@my@em}{1em}##1}{\setlength{\@my@em}{1em}##1}
+ {\setlength{\@my@em}{0.5em}##1}{\setlength{\@my@em}{0.3em}##1}%
+ }%
+ \let\my@saved@op@printm=\NCC@op@printm
+ \def\NCC@op@printm{\my@style@unit{\my@saved@op@printm}}%
+ %% Fix fractions and subfractions in superscripts/subscripts
+ %% Always use current style size to typeset the fractions
+ \newcommand{\my@larger@frac}[2]{%
+ \mathchoice{\genfrac{}{}{}{0}{##1}{##2}}{\genfrac{}{}{}{0}{##1}{##2}}%
+ {\genfrac{}{}{}{1}{##1}{##2}}{\genfrac{}{}{}{2}{##1}{##2}}%
+ }%
+ \DeclareRobustCommand{\frac}[2]{%
+ \mathchoice{\mfrac{##1}{##2}}{\mfrac{##1}{##2}}%
+ {\my@larger@frac{##1}{##2}}{\my@larger@frac{##1}{##2}}%
+ }%
+ \patchcmd{\NCC@prepare@msize}{%
+ \def\frac{\protect\NCC@innerfrac{}}%
+ }{%
+ \let\frac=\my@larger@frac
+ }{}{}%
+}
+
+\AtBeginDocument{%
+ \ifmdm@enabled
+ \my@do@medmath \my@do@medmath@fix
+ \fi
+}
+
diff --git a/macros/latex/contrib/medmath/medmath.tex b/macros/latex/contrib/medmath/medmath.tex
new file mode 100644
index 0000000000..9f0c2304c2
--- /dev/null
+++ b/macros/latex/contrib/medmath/medmath.tex
@@ -0,0 +1,83 @@
+% -*- coding: utf-8 -*-
+\documentclass[oneside,12pt]{article}
+\usepackage[a4paper,margin=2cm]{geometry}
+
+\newcommand*{\myversion}{2024B}
+\newcommand*{\mydate}{Version \myversion\ (\the\year-\mylpad\month-\mylpad\day)}
+\newcommand*{\mylpad}[1]{\ifnum#1<10 0\the#1\else\the#1\fi}
+
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{4pt plus 1pt minus 1pt}
+
+\usepackage{enumerate}
+\usepackage{codehigh}
+\usepackage{hyperref}
+\hypersetup{
+ colorlinks=true,
+ urlcolor=blue3,
+ linkcolor=green3,
+}
+
+%% The \oiint operator is defined with utopia font
+\usepackage[utopia]{mathdesign}
+
+%\usepackage[mediummath]{nccmath}
+\usepackage{medmath}
+\makeatletter
+\mdm@enabledfalse
+\makeatother
+
+\begin{document}
+
+\title{\textsf{\color{green3}The \texttt{medmath} package}}
+\author{Jianrui Lyu (tolvjr@163.com)}
+\date{\mydate}
+\maketitle
+
+\section{The \texttt{mediummath} option in \texttt{nccmath} package}
+
+There are several problems with \texttt{mediummath} option in \texttt{nccmath} package.
+
+\begin{enumerate}
+ \item The big operators in superscripts and subscripts are too large.
+\begin{demohigh}
+\[A^{\sum_{0}^{1}x}=B\]
+\end{demohigh}
+ \item The definite integrals inside \texttt{cases} environment sometimes cause infinite loops.
+\begin{codehigh}
+\[\begin{cases}
+ a & \int_1^t
+\end{cases}\]
+\end{codehigh}
+ \item The \verb!\oiint! operators are not scaled to medium size.
+\begin{demohigh}
+\[\oiint_{\Sigma}xyzdS=\frac{\sqrt{3}}{120}\]
+\end{demohigh}
+\end{enumerate}
+
+\section{The \texttt{medmath} package}
+
+\makeatletter
+\my@do@medmath \my@do@medmath@fix
+\makeatother
+
+The \texttt{medmath} package fixes and improves \texttt{mediummath} option in \texttt{nccmath} package.
+
+\begin{enumerate}
+ \item The big operators in superscripts and subscripts are in medium size.
+\begin{demohigh}
+\[A^{\sum_{0}^{1}x}=B\]
+\end{demohigh}
+ \item The definite integrals inside \texttt{cases} environment always work.
+\begin{demohigh}
+\[\begin{cases}
+ a & \int_1^t
+\end{cases}\]
+\end{demohigh}
+ \item The \verb!\oiint! operators are scaled to medium size.
+\begin{demohigh}
+\[\oiint_{\Sigma}xyzdS=\frac{\sqrt{3}}{120}\]
+\end{demohigh}
+\end{enumerate}
+
+\end{document}
diff --git a/macros/latex/contrib/pgfkeysearch/README.md b/macros/latex/contrib/pgfkeysearch/README.md
index 71ff4b251d..4e5a4d42f3 100644
--- a/macros/latex/contrib/pgfkeysearch/README.md
+++ b/macros/latex/contrib/pgfkeysearch/README.md
@@ -52,7 +52,11 @@ The Current Maintainer of this work is Alceu Frigeri
## Changelog
-* Version 1.1 (this)
+* Version 1.2 (this)
+ - More typos.
+ - added two command aliases, see documentation.
+
+* Version 1.1
- More typos.
- renamed some internal variables to better follow the expl3 recommendations.
- exposing the Expl3 commands.
diff --git a/macros/latex/contrib/pgfkeysearch/doc/pgfkeysearch.pdf b/macros/latex/contrib/pgfkeysearch/doc/pgfkeysearch.pdf
index 70d2abe150..2aa19408a7 100644
--- a/macros/latex/contrib/pgfkeysearch/doc/pgfkeysearch.pdf
+++ b/macros/latex/contrib/pgfkeysearch/doc/pgfkeysearch.pdf
Binary files differ
diff --git a/macros/latex/contrib/pgfkeysearch/doc/pgfkeysearch.tex b/macros/latex/contrib/pgfkeysearch/doc/pgfkeysearch.tex
index 8e29e2a3ab..2cad988fe9 100644
--- a/macros/latex/contrib/pgfkeysearch/doc/pgfkeysearch.tex
+++ b/macros/latex/contrib/pgfkeysearch/doc/pgfkeysearch.tex
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {1.5} {2023/12/29}
+%% This is version {1.2} {2024/01/11}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/pgfkeysearch
@@ -32,7 +32,7 @@
\tstitle{
author={Alceu Frigeri\footnote{\tsverb{https://github.com/alceu-frigeri/pgfkeysearch}}},
date={\tsdate},
- title={A Search Extension for pgfkeys\break Version \PkgInfo{pgfkeysearch}{version}}
+ title={The pgfkeysearch Package\break A Search Extension for pgfkeys\break Version \PkgInfo{pgfkeysearch}{version}}
}
\begin{typesetabstract}
@@ -43,10 +43,12 @@ That's exactly the aim of this, by having a way to find a key in a given path (o
\section{Searching for a key}
-\begin{codedescribe}{\pgfkeysearchvalueof,\pgfkeysearchvalueofTF}
+\begin{codedescribe}[code,update=2024/01/11]{\pgfkeysearchvalueof,\pgfkeysearch,\pgfkeysearchvalueofTF,\pgfkeysearchTF}
\begin{codesyntax}%
\tsmacro{\pgfkeysearchvalueof}{path-list,key,macro}
+\tsmacro{\pgfkeysearch}{path-list,key,macro}
\tsmacro{\pgfkeysearchvalueofTF}{path-list,key,macro,if-found,if-not}
+\tsmacro{\pgfkeysearchTF}{path-list,key,macro,if-found,if-not}
\end{codesyntax}
\tsobj[marg]{path-list} is a comma separated list (clist) of paths (can be a single one). \tsobj[marg]{key} is the desired key and \tsobj[marg]{macro} is the macro/command that will receive (store) the key value (if one was found).
@@ -56,7 +58,10 @@ The branch version will also execute either \tsobj[marg,sep={or}]{if-found,if-no
\end{codedescribe}
\begin{tsremark}
- Those commands aren't expandable, that's the reason to have them storing the key value in a macro and not just 'placing the value in the input stream'.
+ \tsobj{\pgfkeysearch,\pgfkeysearchvalueof} are aliases to each other. Same with \tsobj{\pgfkeysearchvalueofTF,\pgfkeysearchTF}.
+\end{tsremark}
+\begin{tsremark}
+ These commands aren't expandable, that's the reason to have them storing the key value in a macro and not just placing the found value in the input stream.
\end{tsremark}
\begin{codestore}[keyval.demo]
@@ -86,6 +91,6 @@ The branch version will also execute either \tsobj[marg,sep={or}]{if-found,if-no
\tsmacro{\pgfkeysearch_multipath_keysearch:nnnTF}{path-list,key,macro,if-found,if-not}
\tsmacro{\pgfkeysearch_keysearch:nnnTF}{single-path,key,macro,if-found,if-not}
\end{codesyntax}
-These are the \tsobj[pkg]{Expl3} version of it (for package writers). In fact, the \tsobj{\pgfkeysearchvalueof} is just a wrapper to \tsobj{\pgfkeysearch_multipath_keysearch:nnnTF}. The \tsobj{\pgfkeysearch_keysearch:nnnTF} is the single path version.
+These are the \tsobj[pkg]{Expl3} version of it, for package writers. In fact, \tsobj{\pgfkeysearchvalueof,\pgfkeysearch,\pgfkeysearchvalueofTF,\pgfkeysearchTF} are just wrappers to \tsobj{\pgfkeysearch_multipath_keysearch:nnnTF}. The \tsobj{\pgfkeysearch_keysearch:nnnTF} is the single path version and it's slightly faster than the more generic multi-path version (for a single path search, of course), given that \tsobj{\pgfkeysearch_multipath_keysearch:nnnTF} calls \tsobj{\pgfkeysearch_keysearch:nnnTF} for each path in \tsobj[marg]{path-list}.
\end{codedescribe}
\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/pgfkeysearch/latex/pgfkeysearch.sty b/macros/latex/contrib/pgfkeysearch/latex/pgfkeysearch.sty
index 1b2144cfe1..598237a6ab 100644
--- a/macros/latex/contrib/pgfkeysearch/latex/pgfkeysearch.sty
+++ b/macros/latex/contrib/pgfkeysearch/latex/pgfkeysearch.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {1.1} {2023/12/29}
+%% This is version {1.2} {2024/01/11}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/pgfkeysearch
@@ -23,8 +23,8 @@
\ProvidesExplPackage
{pgfkeysearch}
- {2023/12/29}
- {1.1}
+ {2024/01/11}
+ {1.2}
{pgfkeys Search Extension}
\ExplSyntaxOn
@@ -38,23 +38,15 @@
{
name .code:n = {pgfkeysearch} ,
prefix .code:n = {pgfkeysearch} ,
- date .code:n = {2023/12/29},
- version .code:n = {1.1} ,
- description .code:n = {pgfkeys Search Extension}
+ date .code:n = {2024/01/11},
+ version .code:n = {1.2} ,
+ description .code:n = {pgfkeys~ search~ extension}
}
-\cs_if_exist:NF \__codedesc_pkg_info:nn
+\cs_if_exist:NF \PkgInfo
{
- \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
- { \keys_set:nn {#1 / pkg info}{#2} }
- }
-\cs_if_exist:NF \PkgInfo
- { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
-\cs_if_exist:NF \PkgDescription
- {
+ \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} }
\NewDocumentCommand \PkgDescription {m}
- {
- \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par
- }
+ { \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par }
}
%%%%%%%
%%% End of cut-n-paste
@@ -154,6 +146,7 @@
\pgfkeysearch_multipath_keysearch:nnnF {#1}{#2}{#3}
{ \tl_set:Nn #3 {} }
}
+\let\pgfkeysearch\pgfkeysearchvalueof
\NewDocumentCommand{\pgfkeysearchvalueofTF}{mmmmm}
{
@@ -164,3 +157,4 @@
#5
}
}
+\let\pgfkeysearchTF\pgfkeysearchvalueofTF
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
index 9a4c081b3e..6caa3e153f 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
index afc99386a3..e4f56f6dac 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
@@ -5,8 +5,8 @@
% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
\documentclass[a4paper,french,11pt]{article}
-\def\PLversion{3.01c}
-\def\PLdate{4 janvier 2024}
+\def\PLversion{3.01e}
+\def\PLdate{11 janvier 2024}
\usepackage{amsfonts}
\usepackage{ProfLycee}
\useproflyclib{piton,minted,pythontex,ecritures}
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf
index ba54437d82..ed46efca6a 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.tex
index bdb8b26aa4..af24abb9a6 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.tex
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.tex
@@ -2,7 +2,7 @@
% !TeX TXS-program:compile = txs:///lualatex/[--shell-escape]
\documentclass[french,a4paper,10pt]{article}
-\def\PLver{2.7.6}
+\def\PLver{3.01e}
\usepackage[margin=1.5cm]{geometry}
\usepackage{ProfLycee}
\useproflyclib{piton}
@@ -158,7 +158,7 @@ def valeur_absolue(x):
\documentclass[french,a4paper,10pt]{article}
\usepackage{ProfLycee}
\useproflyclib{piton}
-\usepackage[executable=python.exe]{pyluatex} % lua + shell-escape
+\usepackage[executable=python]{pyluatex} % lua + shell-escape
\end{codehigh}}
\subsection{Commande}
diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
index 402bc94a18..1d2df53321 100644
--- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty
+++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
@@ -3,7 +3,9 @@
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2024/01/04 3.01c Aide pour l'utilisation de LaTeX en lycee]
+\ProvidesPackage{ProfLycee}[2024/01/11 3.01e Aide pour l'utilisation de LaTeX en lycee]
+% 3.01e Mise en conformité avec pyluatex/piton
+% 3.01d Ajout des commentaires en gris italique (via #) pour le pseudocode
% 3.01c Ajout des splines en mode génération (sans forcément tracer)
% 3.01b Ajout de la division euclidienne + correction du bugs mineurs
% 3.01a Ajout des courbes ECC/FCC + paramètres par interpolation
diff --git a/macros/latex/contrib/proflycee/tex/proflycee-tools-listings.tex b/macros/latex/contrib/proflycee/tex/proflycee-tools-listings.tex
index 81495669ba..b4bf196a47 100644
--- a/macros/latex/contrib/proflycee/tex/proflycee-tools-listings.tex
+++ b/macros/latex/contrib/proflycee/tex/proflycee-tools-listings.tex
@@ -2,6 +2,7 @@
% Copyright 2023 Cédric Pierquet
% Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+%3.01d Ajout des commentaires en PseudoCode (via #)
%3.00g Amélioration marge gauche PseudoCode
%2.7.5 Ajout de clés pour PythonLst + Couleurs optionnelles pour PseudoCode
%2.7.3 Correction de la couleur des bordures
@@ -255,7 +256,9 @@
numbers = left,
morestring = [b]",
showstringspaces = false,
- escapeinside = {(*}{*)}
+ escapeinside = {(*}{*)},
+ commentstyle = \itshape\color{gray},
+ morecomment = [l][commentstyle]{\#}
}
\lstdefinestyle{pseudocodenoPL}{%
@@ -270,7 +273,9 @@
numbers = none,
showstringspaces = false,
morestring = [b]",
- escapeinside = {(*}{*)}
+ escapeinside = {(*}{*)},
+ commentstyle = \itshape\color{gray},
+ morecomment = [l][commentstyle]{\#}
}
\newlength{\PseudoCodeXLeft}
@@ -421,7 +426,9 @@
numbers = left,
morestring = [b]",
showstringspaces = false,
- escapeinside = {(*}{*)}
+ escapeinside = {(*}{*)},
+ commentstyle = \itshape\color{gray},
+ morecomment = [l][commentstyle]{\#}
}
\lstdefinestyle{pseudocodenoPLalt}{%
@@ -435,7 +442,9 @@
numbers = none,
showstringspaces = false,
morestring = [b]",
- escapeinside = {(*}{*)}
+ escapeinside = {(*}{*)},
+ commentstyle = \itshape\color{gray},
+ morecomment = [l][commentstyle]{\#}
}
\tcbset{stylepseudocodePLalt/.style={%
diff --git a/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex b/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex
index ca63b2db89..e9fd389d6d 100644
--- a/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex
+++ b/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex
@@ -2,6 +2,7 @@
% Copyright 2023 Cédric Pierquet
% Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+%3.01e Correction du comportement de la console repl piton/pyluatex
%2.7.6 Correction du comportement de la console, avec une meilleure gestion de la largeur ^^ (merci à ablasz ;-))
%2.7.5 Ajout d'un argument optionnel pour commencer les codes python à un numéro de ligne différent de 1
%2.7.3 Correction de la couleur des bordures
@@ -193,17 +194,15 @@
}%
% {\tcbset{consolepyluatexlogo,width=\ConsPyluaLarg,\ConsPyluaAlign,#3}}
% {\tcbset{consolepyluatex,width=\ConsPyluaLarg,\ConsPyluaAlign,#3}}
- %\begin{tcolorbox}
- \begin{pythonrepl}
+ \begin{pythonrepl}%
}
{
+ \end{pythonrepl}%
\directlua{
tex.print("\\begin{Piton}")
tex.print(pyluatex.get_last_output())
tex.print("\\end{Piton}")
- tex.print("")
-}
- \end{pythonrepl}
+ }%
\end{tcolorbox}
}
diff --git a/macros/latex/contrib/superiors/README b/macros/latex/contrib/superiors/README
new file mode 100644
index 0000000000..2281ca0a6e
--- /dev/null
+++ b/macros/latex/contrib/superiors/README
@@ -0,0 +1,34 @@
+This small package provides a means of adding to or modifying the superior figures and symbols used for footnote markers in any font collection.
+
+Current version: 2.0
+
+This material is subject to the LaTeX Project Public License. See
+http://www.ctan.org/license/lppl1.3
+for the details of that license.
+
+Changes in 2.0
+Complete revision of the code in version 1.06. The package is now compatible with all LaTeX engines and the KOMA document classes.
+
+Changes in 1.06
+Added more abbreviations and added a check for KOMA, with which it is incompatibe.
+
+Changes in 1.05
+1. Added option to allow the tfm containing the superior figures to be specified by an abbreviation.
+2. Modified code so that options supspaced and raised actually do what they are claimed to do.
+
+Changes in 1.04
+1. Corrected the code to eliminate an unwanted space following the footnote mark.
+
+Changes in 1.03:
+1. Changed code so that footnotes within minipages are not handled using superior figures, but use whatever was determined by \thempfootnote and the existing \@makefnmark.
+
+Changes in 1.02:
+1. libertinesups now points to a snapshot taken from LinLibertineO, and no longer depends on any other Libertine package.
+
+The package provides one superior figures font drawn from the Linux Libertine collection---installation requires enabling superiors.map. The default superior figures font is distributed with newtx, and provides figures based on STIX superior figures, compatible with Times and other heavy fonts.
+
+Any existing fonts collection, such as might be constructed by otfinst, may be used provided it has a complete set of superior digits.
+
+Please send comments and bug reports or suggestions for improvement to
+
+msharpe at ucsd dot edu \ No newline at end of file
diff --git a/macros/latex/contrib/superiors/doc/footsnippet1-crop.pdf b/macros/latex/contrib/superiors/doc/footsnippet1-crop.pdf
new file mode 100644
index 0000000000..65ba1b476d
--- /dev/null
+++ b/macros/latex/contrib/superiors/doc/footsnippet1-crop.pdf
Binary files differ
diff --git a/macros/latex/contrib/superiors/doc/footsnippet1.tex b/macros/latex/contrib/superiors/doc/footsnippet1.tex
new file mode 100644
index 0000000000..4ccb0e96bd
--- /dev/null
+++ b/macros/latex/contrib/superiors/doc/footsnippet1.tex
@@ -0,0 +1,72 @@
+% !TEX TS-program = lualatexmk
+\def\zz{1}
+\if1\zz\documentclass[11pt]{article}
+\else\documentclass[11pt]{scrartcl}
+\def\tt{\normalfont\ttfamily}
+\fi
+\usepackage{iftex}
+%\iftutex
+%\else
+%\pdfmapfile{=newtx.map}
+%\fi
+%\usepackage{trace}
+\usepackage[margin=1.1in]{geometry}
+\usepackage[parfill]{parskip}
+\usepackage[newsu,%defaultsups,
+p]{newtxtext}
+%\usepackage{textcomp}
+\usepackage[supscolor=red!70!black]{superiors}
+%\usepackage[uprightGreek]{newpxmath}
+%\usepackage[perpage
+%%,flushmargin
+%]{footmisc}
+\title{Footnote examples\footnote{with newtxtext}}
+\author{Michael Sharpe\thanks{Thanks much.}}
+\pagestyle{empty}
+\begin{document}
+%\traceon
+\maketitle
+%\traceoff
+\thispagestyle{empty}
+%In\footnote{Testing} this note...\textinf{12}
+%
+%X{\infstyle%\addfontfeatures{RawFeature=+subs}
+%2}{\destyle4}
+%X{\addfontfeatures{VerticalPosition=Denominator}2}
+
+%X\textsuperscript{2}
+%\end{document}
+
+%\makeatletter
+%{\sustyle8}\normalfont{\textsuperscript{8\textdagger}}In %
+%{\addfontfeature{VerticalPosition=Superior}8\textdagger}\textdagger
+%{\addfontfeature{RawFeature=+smcp}AzX}
+%\makeatletter
+%%\show\@makefntext
+%\makeatother
+%\traceon\textsuperscript{\textasteriskcentered} \traceoff
+
+The standard LaTeX document classes {\tt article}, {{\tt report} and {\tt book}, the macro \verb|\maketitle| \verb|\let|s \verb|\footnote| to \verb|\thanks| and footnote marks are taken from a specified list of symbols. (In the AMS classes\footnote{amsart, amsproc, amsbook} the title footnote marks will appear only in the footnote itself at the bottom of the page.)\\
+
+\centerline{\fbox{\begin{minipage}{4in}
+Footnotes after $\backslash$maketitle use by default numeric markers beginning at 1, in some form\footnote{Best not using scaled-down lining figures.} smaller than lining numbers. (Footnotes in minipages use lowercase letters\footnote{italic except in KOMA classes} as markers.)
+\end{minipage}}
+}
+This footnote page snippet was prepared with {\tt lualatex} using the preamble:
+\begin{verbatim}
+\documentclass[11pt]{article}
+\usepackage{trace}
+\usepackage[margin=1.1in]{geometry}
+\usepackage[parfill]{parskip}
+\usepackage[newsu,p]{newtxtext} % larger sups figures
+\usepackage[supscolor=red!70!black]{superiors}
+\title{Footnote examples\footnote{with newtxtext}}
+\author{Michael Sharpe\thanks{Thanks much.}}
+\end{verbatim}
+
+%As the {\tt defaultsups} option was not specified, footnote markers were drawn from the superior symbols and figures in the text font.
+
+%By setting the options {\tt supscale} and {\tt supsraised}, the footnote markers were made a bit more prominent while keeping their tops about the same as without the options.
+% (The superior numbers in this font have baseline at .350{\tt em} and top at .763{\tt em}. Scaling up by the factor 1.15 increases the top by 15\% of .763{\tt em} = .114{\tt em} and moves the baseline up to 1.15 \textasteriskcentered\ 350{\tt em} = 403{\tt em}.) It is not a good idea to use the {\tt supscolor} option if you are using {\tt hyperref}.
+
+\end{document}
diff --git a/macros/latex/contrib/superiors/doc/footsnippet2-crop.pdf b/macros/latex/contrib/superiors/doc/footsnippet2-crop.pdf
new file mode 100644
index 0000000000..9f64a5a205
--- /dev/null
+++ b/macros/latex/contrib/superiors/doc/footsnippet2-crop.pdf
Binary files differ
diff --git a/macros/latex/contrib/superiors/doc/footsnippet2.tex b/macros/latex/contrib/superiors/doc/footsnippet2.tex
new file mode 100644
index 0000000000..97b5dc9aff
--- /dev/null
+++ b/macros/latex/contrib/superiors/doc/footsnippet2.tex
@@ -0,0 +1,73 @@
+% !TEX TS-program = lualatexmk
+\def\zz{0}
+\if1\zz\documentclass[11pt]{article}
+\else\documentclass[11pt]{scrartcl}
+\def\tt{\normalfont\ttfamily}
+\fi
+\usepackage{iftex}
+%\iftutex
+%\else
+%\pdfmapfile{=newtx.map}
+%\fi
+%\usepackage{trace}
+\usepackage[margin=1.1in]{geometry}
+\usepackage[parfill]{parskip}
+\usepackage[newsu,%defaultsups,
+p]{newtxtext}
+%\usepackage{textcomp}
+\usepackage[supscolor=red!70!black]{superiors}
+%\usepackage[uprightGreek]{newpxmath}
+%\usepackage[perpage
+%%,flushmargin
+%]{footmisc}
+\title{Footnote examples\footnote{with newtxtext}}
+\author{Michael Sharpe\thanks{Thanks much.}}
+\pagestyle{empty}
+\begin{document}
+%\traceon
+\maketitle
+%\traceoff
+\thispagestyle{empty}
+%In\footnote{Testing} this note...\textinf{12}
+%
+%X{\infstyle%\addfontfeatures{RawFeature=+subs}
+%2}{\destyle4}
+%X{\addfontfeatures{VerticalPosition=Denominator}2}
+
+%X\textsuperscript{2}
+%\end{document}
+
+%\makeatletter
+%{\sustyle8}\normalfont{\textsuperscript{8\textdagger}}In %
+%{\addfontfeature{VerticalPosition=Superior}8\textdagger}\textdagger
+%{\addfontfeature{RawFeature=+smcp}AzX}
+%\makeatletter
+%%\show\@makefntext
+%\makeatother
+%\traceon\textsuperscript{\textasteriskcentered} \traceoff
+
+The standard LaTeX document classes {\tt article}, {\tt report} and {\tt book}, the macro \verb|\maketitle| \verb|\let|s \verb|\footnote| to \verb|\thanks| and footnote marks are taken from a specified list of symbols. (In the AMS classes\footnote{amsart, amsproc, amsbook} the title footnote marks will appear only in the footnote itself at the bottom of the page.)\\
+
+\centerline{\fbox{\begin{minipage}{4in}
+Footnotes after $\backslash$maketitle use by default numeric markers beginning at 1, in some form\footnote{Best not using scaled-down lining figures.} smaller than lining numbers. (Footnotes in minipages use lowercase letters\footnote{italic except in KOMA classes} as markers.)
+\end{minipage}}
+}
+This footnote page snippet was prepared with {\tt lualatex} using the preamble:
+\begin{verbatim}
+\documentclass[11pt]{scrartcl}
+\usepackage{trace}
+\usepackage[margin=1.1in]{geometry}
+\usepackage[parfill]{parskip}
+\usepackage[no-math]{fontspec}
+\usepackage[newsu,p]{newtxtext} % larger sups figures
+\usepackage[supscolor=red!70!black]{superiors}
+\title{Footnote examples\footnote{with newtxtext}}
+\author{Michael Sharpe\thanks{Thanks much.}}
+\end{verbatim}
+
+%As the {\tt defaultsups} option was not specified, footnote markers were drawn from the superior symbols and figures in the text font.
+
+%By setting the options {\tt supscale} and {\tt supsraised}, the footnote markers were made a bit more prominent while keeping their tops about the same as without the options.
+% (The superior numbers in this font have baseline at .350{\tt em} and top at .763{\tt em}. Scaling up by the factor 1.15 increases the top by 15\% of .763{\tt em} = .114{\tt em} and moves the baseline up to 1.15 \textasteriskcentered\ 350{\tt em} = 403{\tt em}.) It is not a good idea to use the {\tt supscolor} option if you are using {\tt hyperref}.
+
+\end{document}
diff --git a/macros/latex/contrib/superiors/doc/footsnippet3-crop.pdf b/macros/latex/contrib/superiors/doc/footsnippet3-crop.pdf
new file mode 100644
index 0000000000..ed325dad6e
--- /dev/null
+++ b/macros/latex/contrib/superiors/doc/footsnippet3-crop.pdf
Binary files differ
diff --git a/macros/latex/contrib/superiors/doc/footsnippet3.tex b/macros/latex/contrib/superiors/doc/footsnippet3.tex
new file mode 100644
index 0000000000..8fbfe1eba7
--- /dev/null
+++ b/macros/latex/contrib/superiors/doc/footsnippet3.tex
@@ -0,0 +1,66 @@
+% !TEX TS-program = lualatexmk
+\def\zz{1}
+\if1\zz\documentclass[11pt]{article}
+\else\documentclass[11pt]{scrartcl}
+\def\tt{\normalfont\ttfamily}
+\fi
+\usepackage{iftex}
+\usepackage[margin=1.1in]{geometry}
+\usepackage[parfill]{parskip}
+\usepackage[p]{newpxtext}
+%\usepackage{textcomp}
+\usepackage[npx,supscolor=red!70!black]{superiors}
+%\usepackage[uprightGreek]{newpxmath}
+%\usepackage[perpage
+%%,flushmargin
+%]{footmisc}
+\title{Footnote examples\footnote{with newpxtext}}
+\author{Michael Sharpe\thanks{Thanks much.}}
+\pagestyle{empty}
+\begin{document}
+%\traceon
+\maketitle
+%\traceoff
+\thispagestyle{empty}
+%In\footnote{Testing} this note...\textinf{12}
+%
+%X{\infstyle%\addfontfeatures{RawFeature=+subs}
+%2}{\destyle4}
+%X{\addfontfeatures{VerticalPosition=Denominator}2}
+
+%X\textsuperscript{2}
+%\end{document}
+
+%\makeatletter
+%{\sustyle8}\normalfont{\textsuperscript{8\textdagger}}In %
+%{\addfontfeature{VerticalPosition=Superior}8\textdagger}\textdagger
+%{\addfontfeature{RawFeature=+smcp}AzX}
+%\makeatletter
+%%\show\@makefntext
+%\makeatother
+%\traceon\textsuperscript{\textasteriskcentered} \traceoff
+
+The standard LaTeX document classes {\tt article}, {\tt report} and {\tt book}, the macro \verb|\maketitle| \verb|\let|s \verb|\footnote| to \verb|\thanks| and footnote marks are taken from a specified list of symbols. (In the AMS classes\footnote{amsart, amsproc, amsbook} the title footnote marks will appear only in the footnote itself at the bottom of the page.)\\
+
+\centerline{\fbox{\begin{minipage}{4in}
+Footnotes after $\backslash$maketitle use by default numeric markers beginning at 1, in some form\footnote{Best not using scaled-down lining figures.} smaller than lining numbers. (Footnotes in minipages use lowercase letters\footnote{italic except in KOMA classes} as markers.)
+\end{minipage}}
+}
+This footnote page snippet was prepared with {\tt lualatex} using the preamble:
+\begin{verbatim}
+\documentclass[11pt]{article}
+\usepackage{trace}
+\usepackage[margin=1.1in]{geometry}
+\usepackage[parfill]{parskip}
+\usepackage[p]{newpxtext} % larger sups figures
+\usepackage[npx,supscolor=red!70!black]{superiors}
+\title{Footnote examples\footnote{with newpxtext}}
+\author{Michael Sharpe\thanks{Thanks much.}}
+\end{verbatim}
+
+%As the {\tt defaultsups} option was not specified, footnote markers were drawn from the superior symbols and figures in the text font.
+
+%By setting the options {\tt supscale} and {\tt supsraised}, the footnote markers were made a bit more prominent while keeping their tops about the same as without the options.
+% (The superior numbers in this font have baseline at .350{\tt em} and top at .763{\tt em}. Scaling up by the factor 1.15 increases the top by 15\% of .763{\tt em} = .114{\tt em} and moves the baseline up to 1.15 \textasteriskcentered\ 350{\tt em} = 403{\tt em}.) It is not a good idea to use the {\tt supscolor} option if you are using {\tt hyperref}.
+
+\end{document}
diff --git a/macros/latex/contrib/superiors/doc/footsnippet4-crop.pdf b/macros/latex/contrib/superiors/doc/footsnippet4-crop.pdf
new file mode 100644
index 0000000000..65e2bafc70
--- /dev/null
+++ b/macros/latex/contrib/superiors/doc/footsnippet4-crop.pdf
Binary files differ
diff --git a/macros/latex/contrib/superiors/doc/footsnippet4.tex b/macros/latex/contrib/superiors/doc/footsnippet4.tex
new file mode 100644
index 0000000000..3d02c3dc3b
--- /dev/null
+++ b/macros/latex/contrib/superiors/doc/footsnippet4.tex
@@ -0,0 +1,67 @@
+% !TEX TS-program = lualatexmk
+\def\zz{0}
+\if1\zz\documentclass[11pt]{article}
+\else\documentclass[11pt]{scrartcl}
+\def\tt{\normalfont\ttfamily}
+\fi
+\usepackage{iftex}
+%\iftutex
+%\else
+%\pdfmapfile{=newtx.map}
+%\fi
+%\usepackage{trace}
+\usepackage[margin=1.1in]{geometry}
+\usepackage[parfill]{parskip}
+\usepackage[p]{newpx}
+%\usepackage{textcomp}
+\usepackage[npx,supscolor=red!70!black]{superiors}
+\title{Footnote examples\footnote{with newpxtext}}
+\author{Michael Sharpe\thanks{Thanks much.}}
+\pagestyle{empty}
+\begin{document}
+%\traceon
+\maketitle
+%\traceoff
+\thispagestyle{empty}
+%In\footnote{Testing} this note...\textinf{12}
+%
+%X{\infstyle%\addfontfeatures{RawFeature=+subs}
+%2}{\destyle4}
+%X{\addfontfeatures{VerticalPosition=Denominator}2}
+
+%X\textsuperscript{2}
+%\end{document}
+
+%\makeatletter
+%{\sustyle8}\normalfont{\textsuperscript{8\textdagger}}In %
+%{\addfontfeature{VerticalPosition=Superior}8\textdagger}\textdagger
+%{\addfontfeature{RawFeature=+smcp}AzX}
+%\makeatletter
+%%\show\@makefntext
+%\makeatother
+%\traceon\textsuperscript{\textasteriskcentered} \traceoff
+
+The standard LaTeX document classes {\tt article}, {\tt report} and {\tt book}, the macro \verb|\maketitle| \verb|\let|s \verb|\footnote| to \verb|\thanks| and footnote marks are taken from a specified list of symbols. (In the AMS classes\footnote{amsart, amsproc, amsbook} the title footnote marks will appear only in the footnote itself at the bottom of the page.)\\
+
+\centerline{\fbox{\begin{minipage}{4in}
+Footnotes after $\backslash$maketitle use by default numeric markers beginning at 1, in some form\footnote{Best not using scaled-down lining figures.} smaller than lining numbers. (Footnotes in minipages use lowercase letters\footnote{italic except in KOMA classes} as markers.)
+\end{minipage}}
+}
+This footnote page snippet was prepared with {\tt lualatex} using the preamble:
+\begin{verbatim}
+\documentclass[11pt]{scrartcl}
+\usepackage{trace}
+\usepackage[margin=1.1in]{geometry}
+\usepackage[parfill]{parskip}
+\usepackage[p]{newpxtext}
+\usepackage[npx,supscolor=red!70!black]{superiors}
+\title{Footnote examples\footnote{with newpxtext}}
+\author{Michael Sharpe\thanks{Thanks much.}}
+\end{verbatim}
+
+%As the {\tt defaultsups} option was not specified, footnote markers were drawn from the superior symbols and figures in the text font.
+
+%By setting the options {\tt supscale} and {\tt supsraised}, the footnote markers were made a bit more prominent while keeping their tops about the same as without the options.
+% (The superior numbers in this font have baseline at .350{\tt em} and top at .763{\tt em}. Scaling up by the factor 1.15 increases the top by 15\% of .763{\tt em} = .114{\tt em} and moves the baseline up to 1.15 \textasteriskcentered\ 350{\tt em} = 403{\tt em}.) It is not a good idea to use the {\tt supscolor} option if you are using {\tt hyperref}.
+
+\end{document}
diff --git a/macros/latex/contrib/superiors/doc/libfoot0-crop.pdf b/macros/latex/contrib/superiors/doc/libfoot0-crop.pdf
new file mode 100644
index 0000000000..d241a9fbc4
--- /dev/null
+++ b/macros/latex/contrib/superiors/doc/libfoot0-crop.pdf
Binary files differ
diff --git a/macros/latex/contrib/superiors/doc/libfoot1-crop.pdf b/macros/latex/contrib/superiors/doc/libfoot1-crop.pdf
new file mode 100644
index 0000000000..7468771f3d
--- /dev/null
+++ b/macros/latex/contrib/superiors/doc/libfoot1-crop.pdf
Binary files differ
diff --git a/macros/latex/contrib/superiors/doc/stempelfoot0-crop.pdf b/macros/latex/contrib/superiors/doc/stempelfoot0-crop.pdf
new file mode 100644
index 0000000000..3ae5d3ec1b
--- /dev/null
+++ b/macros/latex/contrib/superiors/doc/stempelfoot0-crop.pdf
Binary files differ
diff --git a/macros/latex/contrib/superiors/doc/stempelfoot1-crop.pdf b/macros/latex/contrib/superiors/doc/stempelfoot1-crop.pdf
new file mode 100644
index 0000000000..e39fe5ca90
--- /dev/null
+++ b/macros/latex/contrib/superiors/doc/stempelfoot1-crop.pdf
Binary files differ
diff --git a/macros/latex/contrib/superiors/doc/superiors-doc.pdf b/macros/latex/contrib/superiors/doc/superiors-doc.pdf
new file mode 100644
index 0000000000..ce63eb2cca
--- /dev/null
+++ b/macros/latex/contrib/superiors/doc/superiors-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/superiors/doc/superiors-doc.tex b/macros/latex/contrib/superiors/doc/superiors-doc.tex
new file mode 100644
index 0000000000..0f42285bf6
--- /dev/null
+++ b/macros/latex/contrib/superiors/doc/superiors-doc.tex
@@ -0,0 +1,286 @@
+% !TEX TS-program = pdflatexmk
+\documentclass[11pt]{article}
+\usepackage[margin=.75in]{geometry}
+\usepackage[parfill]{parskip}
+\usepackage{graphicx,booktabs}
+%SetFonts
+% libertine text and newtxmath
+\usepackage{newpxtext}
+\usepackage[TS1,T1]{fontenc}
+\usepackage{textcomp}
+\usepackage[scaled=.85]{beramono}
+\usepackage{newpxmath}
+\usepackage[npx]{superiors}
+\makeatletter
+\def\libertine@figurestyle{OsF}
+\makeatother
+%\def\libertine{\fontfamily{fxlj}\selectfont}
+%SetFonts
+%\usepackage[supstfm=libertinesups,%
+% supscaled=1.2,%
+% raised=-.13em,
+% supscolor=red]{superiors}
+\title{Superiors}
+\author{Michael Sharpe}
+\date{\today} % Activate to display a given date or no date
+
+\begin{document}
+\maketitle
+\section*{Briefly}
+Superior letters, figures and symbols are most commonly used as footnote markers but are occasionally used to imitate eighteenth century writing abbreviations such as M\textsu{me}. Footnote markers in \LaTeX\ are superscripted versions of characters governed by the regimes in which they appear---title, minipage and body. Normally, those generated in the body of a document are successive integers starting at 1, while those in a minipage are italic letters beginning at \emph{a} and those in the document title use symbols like \textasteriskcentered, \textdagger, etc.
+
+The default behavior of footnote markers in \LaTeX\ is to typeset the marker as if it were a mathematical superscript. In most cases, this means the size is about 70\% of the normal lining figure and the top is a bit above the tops of capital letters. They appear rather slight compared to normal text.
+
+
+As an alternative, one may use superior figures---small figures, usually 50\% to 70\% of the height of lining figures, like \textsu{1234567890}. Commonly, they are designed so that the tops of the numbers are aligned with the tops of the capital letters in the font, though sometimes a little higher, corresponding to the ascender height.
+
+This package, now updated to version~2, expands on the macros of version~1 and works with {\tt lualatex}, {\tt xelatex} and legacy {\tt [pdf]latex}, and with document classes defined in {\tt latex.ltx}, the AMS classes and the KOMA classes. It also cooperates with {\tt realscripts}, which it calls under both {\tt lualatex} and {\tt xelatex}, leaving most of its macro definitions unchanged except for \verb|\@makefnmark|. Unlike version~1, which based the replacement superiors by means of a specified {\tt tfm} file, with version~2 you must specify either a latex font family name or an {\tt otf} filename ({\tt lualatex} and {\tt xelatex} only.) The macro that does the work is \verb|\textfnscript|.
+
+\section*{Some Details}
+PostScript fonts have for a long time mostly contained just a small subset $\{1,2,3\}$ of the possible superior digits, and most OpenType fonts in the Adobe portfolio, other than the most popular and the most recent, contain the same small subset. Moreover, the \textsf{TS1} encoding includes slots for only those three superior figures. Even the first version of the STIX collection contains just the basic three superior figures.
+
+
+It is now not uncommon to find Opentype fonts with four vertical levels of small figures. Two of these, numerators and denominators, are supposed to be used only for text fractions, and most commonly the baseline of a denominator is the same as the text baseline, while the top of the numerators is either the height of a lining figure or the cap-height. The other two levels are superiors and either scientific inferiors or subscripts. (The corresponding opentype lookups are {\tt numr}, {\tt dnom}, {\tt sups}, {\tt sinf} and {\tt subs}.) Most commonly, these figures all have the same size, but is becoming more common for {\tt sups}, {\tt subs} and {\tt sinf} to be about 20\% larger than {\tt numr} and {\tt dnom}. It is also now more common for {\tt sups} to contain a full set of Roman letters and a good selection of text punctuation and symbols.
+
+This package allows you to substitute a set of superiors from one font family into a font family that either lacks superiors or has an inadequate set of superiors. Unlike version~1 of this package, version~2 can work with all LaTeX engines and works to some extent with KOMA classes. The methods amount to a variant of Will Robertson's {\tt realscripts} package that isolates the use of {\tt fontspec} to the unicode latex case.
+
+Speaking in general terms, this package does the following:
+\begin{itemize}
+\item You provide through options to {\tt superiors} the information about the font which will provide the substitutions.
+\item The information may be a latex font family, an otf font or an abbreviation understood by the package from which to draw the superior glyphs. There are three different option types to convey the source for the substitute superiors:
+\begin{itemize}
+\item
+{\tt supsfam=...} may be used to specify the latex font family to be used to render the substitute superiors. If specified, this overrides option choices using {\tt supsotf} or an abbreviated family name. E.g., to substitute superiors from the {\tt ETbb} font:
+\begin{verbatim}
+\usepackage[supsfam=ETbb-Sup]{superiors}
+\end{verbatim}
+
+\item
+{\tt supsotf=...} may be used to specify the {\tt otf} to be used to render the substitute superiors. If specified, this overrides option choices using an abbreviated family name. (Ignored except by {\tt lualatex} and {\tt xelatex}.) E.g., to substitute superiors from the {\tt XCharter} otf font:
+\begin{verbatim}
+\usepackage[supsotf=XCharter-Roman.otf]{superiors}
+\end{verbatim}
+
+\item
+An abbreviated family name may be used to specify the family/otf to be used to render the substitute superiors. The possible abbreviation options are:
+\begin{center}
+ \begin{tabular}{@{} lll @{}}
+ \toprule
+ LaTeX Family Name & Otf Name & Abbreviations \\
+ \midrule
+ ntxsups & TeXGyreTermesX-Regular.otf & newtx, newtxtext, ntx, ztm \\
+ zplsups & TeXGyrePagellaX-Regular.otf & newpx, newpxtext, npx, zpl \\
+ LibertinusSerif-Sup & LibertinusSerif-Regular.otf & lbtn, libertine, libertinus \\
+ Cochineal-Sup & Cochineal-Roman.otf & coch, cochineal, Cochineal \\
+ SticksTooText-Sup & STIXTwoText-Regular.otf & stix2, stickstoo, stickstootext, SticksToo \\
+ ETbb--Sup & ETbb-Regular.otf & etbb, ETbb \\
+ fbb-Sup & fbb-Regular.otf & fbb \\
+ Erewhon-Sup & Erewhon-Regular.otf & erewhon, Erewhon\\
+ XCharter-Sup & XCharter-Roman.otf & xch, xcharter, XCharter \\
+ BaskervilleF-Sup & BaskervilleF-Regular.otf & baskervillef, Baskerville\\
+ Baskervaldx-Sup & Baskervaldx-Regular.otf & baskervaldx, Baskervaldx \\
+ zgm1 & • & zgm, garamondx \\
+ scholax-Sups & TeXGyreScholaX-Regular.otf & scholax \\
+ EBGaramond-Sup & EBGaramond-Regular.otf & ebg, ebgaramond, EBGaramond \\
+ \bottomrule
+ \end{tabular}
+\end{center}
+\end{itemize}
+\end{itemize}
+
+\textsc{Examples:}
+\begin{itemize}
+\item
+\begin{verbatim}
+\usepackage[lbtn, supsfam=Cochineal-Sup]{superiors}
+\end{verbatim}
+would ignore the {\tt lbtn} because {\tt supsfam=} takes precedence, and similarly with
+\begin{verbatim}
+\usepackage[lbtn, supsotf=Cochineal-Roman.otf]{superiors}
+\end{verbatim}
+In both cases, {\tt Cochineal-Roman} superiors would made available to replace the original superiors. Under {\tt lualatex} or {\tt xelatex}, the lines above would be equivalent to
+\begin{verbatim}
+\usepackage[supsotf=Cochineal-Roman.otf]{superiors}
+\end{verbatim}
+and under legacy {\tt latex}, to
+\begin{verbatim}
+\usepackage[supsfam=Cochineal-Sup]{superiors}
+\end{verbatim}
+\end{itemize}
+\textsc{Notes:}
+\begin{itemize}
+\item
+If no source is specified for the replacement superiors, {\tt ntxsups} will be used.
+\item
+The {\tt superiors} package should be loaded after other font package.
+\item Unless using a legacy latex, {\tt realscripts} will be loaded by {\tt superiors}, if need be.
+\item With both {\tt lualatex} and {\tt xelatex}, you may specify a legacy font family for superiors.
+\end{itemize}
+%\item
+%\[Re\]define \verb|\sustyle| and \verb|\textsu| so they lead to the sups family that will be substituted. (The first is a font switch and the second is a macro which applies the font switch to its argument.)
+%\end{itemize}
+\section*{Other {\tt options}}
+ The package also allows you to scale the size of the imported superiors and to specify an amount by which to raise them. You may also specify a spacing to apply before and after the footnote marker and set a color.
+ \begin{itemize}
+\item
+ {\tt supscale} (or {\tt supscaled}) controls the scale factor applied to superiors.
+ \item
+ {\tt supsraised} (or {\tt raised}) controls the amount to raise the superiors. It should have a unit that responds to the overall scaling of the document text, like {\tt em} or {\tt ex}.
+\item
+{\tt supsLspaced} and {\tt supsRspaced} govern the amount of kerning to be inserted to the Left and Right. (Default value for both is {\tt .04em}.) Option {\tt supspaced} sets its argument to both.
+\item
+ {\tt supscolor} controls the color applied to superiors. (Default value is {\tt black}.) You may use any color specification understood by the {\tt xcolor} package.
+\item
+{\tt notitlepatch} causes the \verb|\maketitle| macro, which specifies among other things how footnotes and \verb|\thanks| operate within title, to not be patched to behave like body footnotes. The effect is to not use the superiors modifications within titles. This can be useful if your substitute superiors lack \verb|\textasteriskcentered|, \verb|\textdagger|, etc.
+\end{itemize}
+
+\section*{Some Background}
+Modern versions of {\tt latex.ltx} define the basic macros for subscripts and superscripts making use of the mathematical superscripts and subscript constructions that involve shrinking fullsize letters, figures and symbols to \verb|\scriptstyle|. The control sequences of importance to superscripts are:
+\begin{itemize}
+\item
+\verb|\@textsuperscript#1| switches to math mode, shrinks \verb|#1| and puts it in an \verb|\mbox| which is rendered as a math superscript.
+\item
+\verb|\textsuperscript#1| is a robust macro which applies \verb|\@textsuperscript| to \verb|#1|.
+\item
+\verb|\@makefnmark| makes an \verb|\hbox| containing \verb|\@thefnmark|, the actual character to show as the marker for the footnote, acted upon by \verb|\@textsuperscript|.
+\end{itemize}
+The {\tt realscripts} package, which requires {\tt lualatex} or {\tt xelatex}, defines new macros \verb|\fakesuperscript| (essentially, the latex \verb|\textsuperscript|) and \verb|\realsuperscript| (makes use of the superiors in an Opentype font, if available) and then redefines \verb|\textsuperscript| to use \verb|\realsuperscript|, if possible. Then \verb|\@makefnmark| is redefined to make use of \verb|\textsuperscript| while paying attention to whether a KOMA class is active. So, to summarize, in {\tt realscripts}, assuming the {\tt opentype} font is properly set up with superiors:
+\begin{itemize}
+\item
+\verb|\realsuperscript#1| is defined to use those superiors.
+\item
+\verb|\textsuperscript#1| is redefined to \verb|\realsuperscript#1|.
+\item
+\verb|\@makefnmark| is redefined to use \verb|\textsuperscript#1| instead of \verb|\@textsuperscript#1|.
+\end{itemize}
+
+Part of what happens in {\tt superiors.sty} is making similar code that works in legacy latex and which adds for all latex engines the additional features (scaling, raising, spacing and coloring) that do not appear in {\tt realscripts.})
+
+Meanwhile, there is a separate strand that affects only footnotes and \verb|\thanks| that occur during the processing of \verb|\maketitle|. (This macro is not part of {\tt latex}---it is defined in the document class file, e.g., {\tt article.cls}.) This is where footnote markers other than figures may need to be generated. This package adds patches to the code in \verb|\maketitle| that adds the same feature to footnotes and \verb|\thanks| in that setting.
+
+\textsc{Important Notes:}
+\begin{itemize}
+\item
+{\tt superiors} defines \verb|\realsuperscript| in legacy latex processing and extends \verb|\textsuperscript| to cover all latex engines, not changing the {\tt realscripts} definition where it applies.
+\item
+{\tt superiors} defines a new macro \verb|\textSuperscript| that adds the features mentioned above on top of \verb|\textsuperscript|. This is the basis for a redefinition of \verb|\@makefnmark| that uses real superior glyphs, where possible.
+\item
+Many font packages, especially those generated by {\tt autoinst}, define macros \verb|\sustyle| (or \verb|\sufigures|) and \verb|\textsu| that may be used to specify superiors. The first two are simple text switches and the latter is a macro that applies the switch to its argument. I don't think there is any official latex position about these names. These macros are not affected by the options mentioned above, and nor are \verb|\textsuperscript| and \verb|\realsuperscript|. The macro that does respond to the package options \verb|\textfnscript|, which is used for footnote markers. E.g., \verb|\textfnscript{abc}| produces \textfnscript{abc} provided your superiors font has those glyphs.
+
+\end{itemize}
+
+\section*{Sample Invocations}
+
+\begin{itemize}
+\item Times-like, no rescaling or raising, but with $.03${\tt em} space before and after footnote markers:
+\begin{verbatim}
+\usepackage[supspaced=.03em]{superiors} % default value is .04em
+\end{verbatim}
+\item Add colored {\tt newtx} superiors to {\tt newtx}, no rescaling or raising:
+\begin{verbatim}
+\usepackage{newtx}
+\usepackage[supscolor=red!70!black]{superiors} \end{verbatim}
+\item Libertine superiors scaled up by 20\%, then lowered:
+\begin{verbatim}
+\usepackage{libertine}
+\usepackage[lbtn,%
+ supscaled=1.2,%
+ raised=-.13em]% match ascender height of libertine
+{superiors}
+\end{verbatim}
+%\item Use MinionPro\footnote{Assumes you have installed MinionPro according to the directions in the \textsf{minion2newtx} package.}
+% superiors at default size, lowered a bit:
+%\begin{verbatim}
+%\usepackage[supstfm=T1-Minion2Pro-Regular-sups-kern-liga,%
+% raised=-.05em]%
+%{superiors}
+%\end{verbatim}
+\end{itemize}
+
+%It is best to specify a relative unit for the {\tt raised} and {\tt supspaced} parameters so that they change with the font size. (Recall that for a $10${\tt pt} font, {\tt 1em} is usually {\tt 10pt}, but the actual size of {\tt 1em} is defined relative to font size.)
+
+The following example compares libertine with its default footnote markers against libertine with the superiors package as described in the example above:
+
+\[\includegraphics{libfoot0-crop} \qquad\includegraphics{libfoot1-crop}\]
+
+%There is another parameter named {\tt scaled} that should be used only if you loaded your text font with a scale parameter different from $1.0$, and in this case, you should use the same scale parameter. For example:
+%\begin{verbatim}
+%\usepackage[lining,scaled=1.05]{bembo}
+%\usepackage[scaled=1.05,%
+% lbtn,% libertine
+% supscaled=1.2,%
+% raised=-.13em]%
+%{superiors}
+%\end{verbatim}
+\section*{Issues with superiors}
+%If a number of figure styles are available, many packages make use of \textsf{nfssext} (or its further extension \textsf{nfssext-cfr}) to access those special forms. For superior figures, two macros are defined by \textsf{nfssext}:
+%\verb|\sustyle| and \verb|\textsu|, the first of which changes the text font to a font with superior figures (and is usually called with action confined to a group), while the second is a macro called like \verb|\textsu{123}| which applies \verb|\sustyle| to just its argument. In packages generated by {\tt otfinst} and {\tt autoinst}, if superior figures are available (even if only three of them), \verb|\sustyle| and \verb|\textsu| are defined and refer to the superior figures. Moreover, \verb|otfinst| redefines \verb|\@makefnmark|:
+%\begin{verbatim}
+%\def\@makefnmark{\hbox{\sustyle\@thefnmark}}
+%\end{verbatim}
+%so that it uses figures in \verb|\sustyle|.
+You may run into problems with older fonts having just three superior figures \textsu{123}
+because footnote marker figures greater than three will render using normal size figures. For example, in Stempel Garamond, where there are only three superior figures available, the first graphic shows the default footnote markers, the second shows the document processed with libertine footnote markers using
+\begin{verbatim}
+\usepackage[lbtn,%
+ supscaled=1.2,%
+ raised=-.04em
+]{superiors}
+\end{verbatim}
+
+\[\includegraphics{stempelfoot0-crop} \qquad\includegraphics{stempelfoot1-crop}\]
+%This package redefines these macros so that \verb|\sustyle| changes the font and applies the scaling changes, while changes due to the {\tt raised} parameter are applied only within \verb|\textsu|. For this reason, we have to modify the definition of \verb|\@makefnmark| as essentially as follows, when not in a minipage:
+%\begin{verbatim}
+%\def\@makefnmark{\raisebox{\superiors@raised}{\hbox%
+% {\sustyle\hspace*{\superiors@spaced}\@thefnmark%
+% \hspace*{.03em}}}}
+%\end{verbatim}
+%
+%Relatively few Opentype text font families have a complete set of superior figures that can be accessed after running \textsf{otfinst}.
+The following have a complete set of superior figures:
+\begin{verbatim}
+newtxtext
+newpxtext
+libertine
+libertinus-serif
+TeXGyreTermesX
+TeXGyrePagellaX
+Erewhon
+Heuristica
+Baskervaldx
+EBGaramond
+garamondx
+XCharter
+baskervillef
+cochineal
+STIX2
+stickstoo
+fbb
+ETbb
+Adobe Bembo Std
+Adobe Caslon Pro
+Adobe Warnock Pro
+Monotype Dante Std
+Monotype Bell Std
+Monotype Perpetua Std
+Adobe Garamond Premier Pro
+Adobe Brioso Pro
+Adobe Arno Pro
+Adobe Kinesis Std
+Adobe Jenson Pro
+Adobe Kepler Std
+\end{verbatim}
+(Those listed without a vendor name are free, and mostly available through \TeX Live.)
+
+A second problem is the current paucity of fonts containing a full set of superior symbols that may be required. Note that {\tt latex} does a good job using faked superiors, but they don't always have the quality of real superiors. Currently (January 2024), from the list above, only the first two provide superior versions of these symbols. Even if the opentype font contains them and they are correctly referenced in the {\tt sups} lookup table so that they function properly with {\tt lualatex} and {\tt xelatex}, legacy latex may fail because the latex font family for superiors does have a TS1 fd file by which to locate them. This is the case with {\tt EBGaramond}, for example.
+
+The next four pages show some footnote examples, all made with {\tt lualatex} and {\tt superiors} but with either {\tt article} or {\tt scrartcl} and either {\tt newtxtext} or {\tt newpxtext}.
+\newpage
+\includegraphics{footsnippet1-crop.pdf}
+\newpage
+\includegraphics{footsnippet2-crop}
+\newpage
+\includegraphics{footsnippet3-crop}
+\newpage
+\includegraphics{footsnippet4-crop}
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/superiors/tex/superiors.sty b/macros/latex/contrib/superiors/tex/superiors.sty
new file mode 100644
index 0000000000..21c8239483
--- /dev/null
+++ b/macros/latex/contrib/superiors/tex/superiors.sty
@@ -0,0 +1,239 @@
+\NeedsTeXFormat{LaTeX2e}
+\def\supsVersion{2.0}
+\def\supsDate{2024/01/07}
+\ProvidesPackage{superiors}[\supsDate\space-\space\supsVersion
+ superiors (License LPPL) Michael Sharpe]
+\newif\ifsups@KOMA
+\@ifundefined{ftntm@font}{}{\sups@KOMAtrue}
+
+\RequirePackage{xkeyval,xcolor,iftex,etoolbox,ifthen,trace}
+
+\NewCommandCopy\orig@makefnmark\@makefnmark
+\def\f@@tn@te{footnote}
+\def\sups@id{-1}
+\def\sups@scaledval{1}
+\def\sups@raised{\z@}
+\def\sups@Lspaced{.04em}
+\def\sups@Rspaced{.04em}
+\def\sups@supscale{1.0}
+\def\sups@color{black}
+\newif\ifsups@fam %true if a fam specced
+\newif\ifsups@otf %true if an otf specced
+\newif\ifsups@titlepatch % true if \maketitle should be patched
+\sups@titlepatchtrue
+%\traceon
+\DeclareOptionX{notitlepatch}[true]{%
+\@nameuse{if#1}\sups@titlepatchfalse\fi}
+\DeclareOptionX{supscale}[1.0]{\def\sups@scaledval{#1}}
+\DeclareOptionX{supscaled}[1.0]{\def\sups@scaledval{#1}}
+\DeclareOptionX{supscolor}[\z@]{\def\sups@color{#1}}
+\DeclareOptionX{raised}[\z@]{\def\sups@raised{#1}}
+\DeclareOptionX{supsraised}[\z@]{\def\sups@raised{#1}}
+\DeclareOptionX{supsfam}{\def\sups@fam{#1}\sups@famtrue}
+\DeclareOptionX{supsotf}{\def\sups@otf{#1}\sups@otftrue}
+\DeclareOptionX{supsLspaced}[.04em]{\def\sups@Lspaced{#1}}
+\DeclareOptionX{supsRspaced}[.04em]{\def\sups@Rspaced{#1}}
+\DeclareOptionX{supspaced}[.04em]{\def\sups@Lspaced{#1}\def\sups@Rspaced{#1}}
+% The following options affect the choice of source for the superiors
+\DeclareOptionX{newtx}{\def\sups@id{\z@}}
+\DeclareOptionX{ntx}{\def\sups@id{\z@}}
+\DeclareOptionX{ztm}{\def\sups@id{\z@}}
+\DeclareOptionX{newtxtext}{\def\sups@id{\z@}}
+\DeclareOptionX{newpx}{\def\sups@id{1}}
+\DeclareOptionX{npx}{\def\sups@id{1}}
+\DeclareOptionX{zpl}{\def\sups@id{1}}
+\DeclareOptionX{newpxtext}{\def\sups@id{1}}
+\DeclareOptionX{lbtn}{\def\sups@id{2}}
+\DeclareOptionX{libertine}{\def\sups@id{2}}
+\DeclareOptionX{libertinus}{\def\sups@id{2}}
+\DeclareOptionX{cochineal}{\def\sups@id{3}}
+\DeclareOptionX{Cochineal}{\def\sups@id{3}}
+\DeclareOptionX{coch}{\def\sups@id{3}}
+\DeclareOptionX{stickstoo}{\def\sups@id{4}}
+\DeclareOptionX{Stickstoo}{\def\sups@id{4}}
+\DeclareOptionX{SticksToo}{\def\sups@id{4}}
+\DeclareOptionX{stix2}{\def\sups@id{4}}
+\DeclareOptionX{stickstootext}{\def\sups@id{4}}
+\DeclareOptionX{etbb}{\def\sups@id{5}}
+\DeclareOptionX{ETbb}{\def\sups@id{5}}
+\DeclareOptionX{fbb}{\def\sups@id{6}}
+\DeclareOptionX{erewhon}{\def\sups@id{7}}
+\DeclareOptionX{Erewhon}{\def\sups@id{7}}
+\DeclareOptionX{xcharter}{\def\sups@id{8}}
+\DeclareOptionX{xch}{\def\sups@id{8}}
+\DeclareOptionX{XCharter}{\def\sups@id{8}}
+\DeclareOptionX{baskervillef}{\def\sups@id{9}}
+\DeclareOptionX{BaskervilleF}{\def\sups@id{9}}
+\DeclareOptionX{baskervaldx}{\def\sups@id{10}}
+\DeclareOptionX{Baskervaldx}{\def\sups@id{10}}
+\DeclareOptionX{garamondx}{\def\sups@id{11}}
+\DeclareOptionX{zgm}{\def\sups@id{11}}
+\DeclareOptionX{scholax}{\def\sups@id{12}}
+\DeclareOptionX{ebg}{\def\sups@id{13}}
+\DeclareOptionX{ebgaramond}{\def\sups@id{13}}
+\DeclareOptionX{EBGaramond}{\def\sups@id{13}}
+
+\ProcessOptionsX\relax
+
+\iftutex\else\sups@otffalse\fi
+
+\def\sups@getbyndx#1#2{%
+ \def\sups@tmpa{}\def\sups@tmpb{}
+ \ifcase#1%\sups@id%0
+ \def\sups@tmpb{ntxsups}
+ \def\sups@tmpa{TeXGyreTermesX-Regular.otf}
+
+ \or %1
+ \def\sups@tmpb{zplsups}
+ \def\sups@tmpa{TeXGyrePagellaX-Regular.otf}
+
+ \or %2
+ \def\sups@tmpb{LibertinusSerif-Sup}
+ \def\sups@tmpa{LibertinusSerif-Regular.otf}
+
+ \or %3
+ \def\sups@tmpb{Cochineal-Sup}
+ \def\sups@tmpa{Cochineal-Roman.otf}
+
+ \or %4
+ \def\sups@tmpb{SticksTooText-Sup}
+ \def\sups@tmpa{STIXTwoText-Regular.otf}
+
+ \or %5
+ \def\sups@tmpb{ETbb-Sup}
+ \def\sups@tmpa{ETbb-Regular.otf}
+
+ \or %6
+ \def\sups@tmpb{fbb-Sup}
+ \def\sups@tmpa{fbb-Regular.otf}
+
+ \or %7
+ \def\sups@tmpb{Erewhon-Sup}
+ \def\sups@tmpa{Erewhon-Regular.otf}
+
+ \or %8
+ \def\sups@tmpb{XCharter-Sup}
+ \def\sups@tmpa{XCharter-Roman.otf}
+
+ \or %9
+ \def\sups@tmpb{BaskervilleF-Sup}
+ \def\sups@tmpa{BaskervilleF-Regular.otf}
+
+ \or %10
+ \def\sups@tmpb{Baskervaldx-Sup}
+ \def\sups@tmpa{Baskervaldx-Regular.otf}
+
+ \or %11
+ \def\sups@tmpb{zgm1}
+ \def\sups@tmpa{zgm1}
+
+ \or %12
+ \def\sups@tmpb{TeXGyreScholaX-Sup}
+ \def\sups@tmpa{TeXGyreScholaX-Regular.otf}
+
+ \or %13
+ \def\sups@tmpb{EBGaramond-Sup}
+ \def\sups@tmpa{EBGaramond-Regular.otf}
+
+ \fi % \ifcase
+ \iftutex
+ \NewCommandCopy{#2}{\sups@tmpa}
+ \else
+ \NewCommandCopy{#2}{\sups@tmpb}
+ \fi
+}
+
+\ifsups@fam\else%
+ \ifsups@otf\else%
+ \ifnum\sups@id=11\relax
+ \def\sups@fam{zgm1}
+ \sups@famtrue
+ \else
+ \ifnum\sups@id=-1\relax
+ \def\sups@id{0}
+ \fi
+ \iftutex
+ \sups@getbyndx{\sups@id}{\sups@otf}
+ \sups@otftrue
+ \else
+ \sups@getbyndx{\sups@id}{\sups@fam}
+ \sups@famtrue
+ \fi
+ \fi
+ \fi
+\fi
+
+\DeclareRobustCommand{\supsStyle}{%
+ \not@math@alphabet\supsStyle\relax
+ \ifsups@fam%
+ \fontencoding{T1}\fontfamily{\sups@fam}\selectfont
+ \else% must be otf
+ \newfontface\supsStylef{\sups@otf}[RawFeature=+sups]%
+\supsStylef %
+\fi
+}
+\DeclareTextFontCommand{\textSuperscript}{\supsStyle}
+%\iftutex
+% \RequirePackage{realscripts}
+% \@ifundefined{supsSuprstyle}{%
+% \newfontface\supsSuprstyle{\sups@otf}
+%[RawFeature=+sups]}{}
+%\else %type1
+%% \DeclareFontFamily{U}{zsups}{}%
+%% \DeclareFontShape{U}{zsups}{m}{n}{%
+%% <-> \sups@tfm
+%%}{}
+% \DeclareRobustCommand{\supsSuprstyle}{%
+% \not@math@alphabet\supsSuprstyle\relax
+% \fontencoding{T1}\fontfamily{\sups@fam}\selectfont }
+%\fi % type1
+
+% The following apples to both tutex and type1
+
+\ExplSyntaxOn
+ \NewDocumentCommand \textfnscript {m} {
+ \hbox_set:Nn \l_tmpa_box {{\supsStyle #1}}
+ \box_scale:Nnn \l_tmpa_box { \sups@scaledval } { \sups@scaledval }
+ \hbox_set:Nn \l_tmpa_box
+ { \box_move_up:nn \sups@raised {\box_use:N \l_tmpa_box} }
+ \hspace*{\sups@Lspaced}{\color{\sups@color}\box_use:N \l_tmpa_box} \hspace*{\sups@Rspaced}}
+
+ \cs_set:Npn \@makefnmark {
+ \ifx\@mpfn\f@@tn@te% we're not in a minipage
+ \mbox{\footnotemarkfont\textfnscript{\@thefnmark}}
+ \else\orig@makefnmark\fi}
+
+ \@ifundefined{ftntm@font}{
+ \cs_new:Npn \footnotemarkfont {\normalfont}
+ }
+ {% Unable to run xpatchcmd on \deffootnote
+ \cs_new:Npn \footnotemarkfont {\ftntm@font}
+ \deffootnote[1em]{1.5em}{1em}{%
+ \textfnscript{\thefootnotemark}}
+ \deffootnotemark{\textfnscript{\thefootnotemark}}%
+ }
+ \ifsups@titlepatch
+ \patchcmd{\maketitle}{\@textsuperscript{\normalfont\@thefnmark}}{\footnotemarkfont\textfnscript{\@thefnmark}}{}{}
+ \patchcmd{\maketitle}{\@textsuperscript{\normalfont\@thefnmark}}{\footnotemarkfont\textfnscript{\@thefnmark}}{}{}
+ \fi
+ \ExplSyntaxOff
+
+ \iftutex\else
+ \ifsups@KOMA
+ \def\footnotemarkfont{\ftntm@font}
+ \else%
+ \def\footnotemarkfont{\normalfont}
+ \fi
+ \fi
+%\def\f@@tn@te{footnote}
+%\def\@makefnmark{%
+% \ifx\@mpfn\f@@tn@te% we're not in a minipage
+% \raisebox{\sups@raised}{\hbox%
+% {\sustyle\hspace*{\sups@spaced}\@thefnmark%
+% \hspace*{.03em}}}%
+% \else% minipage---use original def
+% \sups@makefnmark%
+% \fi%
+%}
+
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/tikzquests/README.md b/macros/latex/contrib/tikzquests/README.md
index b33cdcbfaa..c15ca5ed94 100644
--- a/macros/latex/contrib/tikzquests/README.md
+++ b/macros/latex/contrib/tikzquests/README.md
@@ -67,5 +67,8 @@ The Current Maintainer of this work is Alceu Frigeri
- documentation in PDF format
-------------
+* Version 1.1 (this)
+ - Documentation typos, and issue #1.
+
* Version 1.0
- Initial release by CTAN.
diff --git a/macros/latex/contrib/tikzquests/doc/tikzquests.pdf b/macros/latex/contrib/tikzquests/doc/tikzquests.pdf
index 3195ef7b2d..6890e18507 100644
--- a/macros/latex/contrib/tikzquests/doc/tikzquests.pdf
+++ b/macros/latex/contrib/tikzquests/doc/tikzquests.pdf
Binary files differ
diff --git a/macros/latex/contrib/tikzquests/doc/tikzquests.tex b/macros/latex/contrib/tikzquests/doc/tikzquests.tex
index 49259e7f8d..50d40b5adc 100644
--- a/macros/latex/contrib/tikzquests/doc/tikzquests.tex
+++ b/macros/latex/contrib/tikzquests/doc/tikzquests.tex
@@ -15,7 +15,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {1.0} {2024/01/03}
+%% This is version {1.1} {2024/01/11}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/tikzquests
@@ -175,18 +175,24 @@ The \tsobj[marg]{idx} can be extended with the \tsobj[option]{xtraidx} option. F
\end{tsremark}
Unless the \tsobj[option]{no defs} option is defined, a corresponding macro (with the same name) will also be defined. For example, there is a macro \tsobj{\Ra} associated with the key \tsobj[key]{Ra}.
-All those macros/keys are initialized as follow: ``math mode'' (\tsobj{\ensuremath}), $ID_{idx}$, so, for example, the key \tsobj[key]{Rab}, which can be accessed with the macro \tsobj{\Rab}, will be predefined as $R_{ab}$, \tsobj[key]{Lca} (\tsobj{\Lca}) will be predefined as $L_{ca}$, and so on.
+All those macros/keys are initialized as follow (math mode) \tsverb{\ensuremath{<ID>_{<idx>}}}, resulting in $ID_{idx}$. So, for example, the key \tsobj[key]{Rab}, which can be accessed with the macro \tsobj{\Rab}, will be predefined as $R_{ab}$, \tsobj[key]{Lca} (\tsobj{\Lca}) will be predefined as $L_{ca}$, and so on.
-The idea is that, when using the commands in \ref{question use}, if one doesn't specify a \tsobj[oarg]{key=value list}, the default values will be ``en force'', and all one has to do (to change those values) is to set said list, which doesn't have to be complete, non assigned keys will keep their default value.
+The idea is that, when using the commands in \ref{question use}, if one doesn't specify a \tsobj[oarg]{key=value list}, the default values will be en force, and all one has to do (to change those values) is to set said list, which doesn't have to be complete, non assigned keys will keep their default value.
Besides those default keys, one can set and use any key at will (in \tsobj[oarg]{key=value list}) non-existing keys will be created ``on the fly'' with the given name as the default value.
\subsection{Assigning a new value to pre-defined keys}
-In fact, with each and every key there are 3 ways to assign a value to it \tsobj[oarg]{key}\,=\tsobj[value]{value}, \tsobj[oarg]{key*}\,=\tsobj[value]{value} and \tsobj[oarg]{key raw}\,=\tsobj[value]{value}. The difference being that \tsobj[oarg]{key raw} will assign whatever code/value to the key (and associated macro), \tsobj[oarg]{key*} will assign the code/value inside a math environment.
+In fact, with each and every predefined key there are 3 ways to assign a value to it \tsobj[oarg]{key}\,=\tsobj[value]{value}, \tsobj[oarg]{key*}\,=\tsobj[value]{value} and \tsobj[oarg]{key raw}\,=\tsobj[value]{value}. The difference being that \tsobj[oarg]{key raw} will assign whatever code/value to the key (and associated macro), \tsobj[oarg]{key*} will assign the code/value inside a math environment.
\begin{tsremark}[\color{red}warning:]
\tsobj[oarg]{key}\,=\tsobj[value]{value} (without any specifier) will be the same as \tsobj[oarg]{key*} (default). But, if the option \tsobj[option]{no defs} is used, it will be equivalent to \tsobj[oarg]{key raw}.
\end{tsremark}
+\subsection{Assigning a value to new keys}
+When using \tsobj[oarg]{key}\,=\tsobj[value]{value}, if the \tsobj[oarg]{key} isn't one of the pre-defined ones, then \tsobj[value]{value} will be assigned ``as is'' to \tsobj[oarg]{key}.
+\begin{tsremark}[\color{red}warning:]
+Note that, in this case there are no \tsobj[oarg,sep=or]{key*,key raw} equivalents.
+\end{tsremark}
+
\subsection{Using a parameter key}
When defining the \tsobj[marg]{code} of a question (see \ref{question definition}) one has two options to recover a key's value:
\begin{itemize}
@@ -203,13 +209,13 @@ If the option \tsobj[option]{no defs} is defined, the only option to recover a k
\tsmacro{\QuestVal}{IDidx}
\tsmacro{\QuestVal}{key}
\end{codesyntax}
-This will always recover the value of a key, regardless if the key is one of the pre-defined ones (in the form \tsobj[marg]{IDidx} or a ``on the fly'' one.
-If the key didn't got (re)defined with the \tsobj[oarg]{key=value list}, this will return the key/paramenter default value. In the case of a ``on the fly'' key, it will be the key's name in red (or the color set up with the \tsobj[option]{undef color} option, see \ref{package options}).
+This will always recover the value of a key, regardless if the key is one of the pre-defined ones (in the form \tsobj[marg]{IDidx} or a ``on the fly'' one, \tsobj[marg]{key}.
+If the key didn't got (re)defined with the \tsobj[oarg]{key=value list}, this will return the key/parameter default value. In the case of a ``on the fly'' key, it will be the key's name in red (or the color set up with the \tsobj[option]{undef color} option, see \ref{package options}).
This should be safe in most situations where \tsobj{\pgfkeys} command can be used. Though, the safest, and most robust, way to use a parameter/key is using it's related macro.
\end{codedescribe}
-\section{Example of Use}
+\section{Examples of Use}
\subsection{Package Options}
\begin{codestore}[pack.options A]
@@ -244,7 +250,7 @@ Besides that, the undefined color will be blue and no additional macro will be d
In this case, no alias will be defined (the command \tsobj{\defQuestionAlias} will be ignored), and when using \tsobj{\tikzQuestion} (and similar) the question's remarks (defined by \tsobj{\defQuestion}) and annotations (from \tsobj{\tikzQuestion}) will be printed. The \tsobj[option]{no alias} is specially useful when using the command \tsobj{\QuestionsList}.
\subsection{A More Complete Example}
-In the code below, an extra repository will be set (besides the default one) and two questions (a starred, text, and non starred, graphics) will be defined for each repository.
+In the following code, an extra repository will be set (besides the default one) and two questions (a starred, text, and non starred, graphics) will be defined for each repository.
\begin{codestore}[DefQuestion]
% A repository name can be just about anything.
@@ -265,6 +271,7 @@ In the code below, an extra repository will be set (besides the default one) and
to[C] ++(2,0) coordinate(B)
-- ++(1,0) node[npn,anchor=B] (T1){}
(A) -- (A -| B) coordinate(Ba) to[R=\Rb] (B) to[R=\Rg] ++(0,3) coordinate(C)
+ (B) node[circ]{}
(T1.E) to[R,l=\Rc] (T1.E |- A) -- (A)
(T1.C) to[R,l_=\Rd] (T1.C |- C) -- (C -| A) -- ++(-2,0) coordinate(X) to[V,l=\Vbc] (X |- A) -- (A)
(T1.C) -- ++(1.5,0) node[ocirc]{} coordinate(k) to[open,v=\Vo] (k |- A) node[ocirc]{} -- (A)
@@ -287,6 +294,7 @@ In the code below, an extra repository will be set (besides the default one) and
to[C] ++(2,0) coordinate(B)
-- ++(1,0) node[pnp,anchor=B] (T1){}
(A) -- (A -| B) coordinate(Ba) to[R=\Rb] (B) to[R=\Rg] ++(0,3) coordinate(C)
+ (B) node[circ]{}
(T1.C) to[R,l=\Rc] (T1.C |- A) -- (A)
(T1.E) to[R,l_=\Rd] (T1.E |- C) -- (C -| A) -- ++(-2,0) coordinate(X) to[V,l=\Vbc] (X |- A) -- (A)
(T1.C) -- ++(1.5,0) node[ocirc]{} coordinate(k) to[open,v=\Vo] (k |- A) node[ocirc]{} -- (A)
@@ -313,8 +321,9 @@ In the code below, an extra repository will be set (besides the default one) and
to[C] ++(2,0) coordinate(B)
-- ++(1,0) node[npn,anchor=B] (T1){}
(A) -- (A -| B) coordinate(Ba) to[R=\Rb] (B) to[R=\Rg] ++(0,3) coordinate(C)
- (T1.E) to[R,l=\Rc] (T1.E |- A) -- (A)
- (T1.C) to[R,l_=\Rd] (T1.C |- C) -- (C -| A) -- ++(-2,0) coordinate(X) to[V,l=\Vbc] (X |- A) -- (A)
+ (B) node[circ]{}
+ (T1.E) to[R,l_=\Rc] (T1.E |- A) -- (A)
+ (T1.C) to[R,l=\Rd] (T1.C |- C) -- (C -| A) -- ++(-2,0) coordinate(X) to[V,l=\Vbc] (X |- A) -- (A)
(T1.C) -- ++(1.5,0) node[ocirc]{} coordinate(k) to[open,v=\Vo] (k |- A) node[ocirc]{} -- (A)
;
}[this is a CircuiTikZ example]
@@ -335,11 +344,12 @@ In the code below, an extra repository will be set (besides the default one) and
to[C] ++(2,0) coordinate(B)
-- ++(1,0) node[pnp,anchor=B] (T1){}
(A) -- (A -| B) coordinate(Ba) to[R=\Rb] (B) to[R=\Rg] ++(0,3) coordinate(C)
- (T1.C) to[R,l=\Rc] (T1.C |- A) -- (A)
- (T1.E) to[R,l_=\Rd] (T1.E |- C) -- (C -| A) -- ++(-2,0) coordinate(X) to[V,l=\Vbc] (X |- A) -- (A)
+ (B) node[circ]{}
+ (T1.C) to[R,l_=\Rc] (T1.C |- A) -- (A)
+ (T1.E) to[R,l=\Rd] (T1.E |- C) -- (C -| A) -- ++(-2,0) coordinate(X) to[V,l=\Vbc] (X |- A) -- (A)
(T1.C) -- ++(1.5,0) node[ocirc]{} coordinate(k) to[open,v=\Vo] (k |- A) node[ocirc]{} -- (A)
;
-}[this is a CircuiTikZ example]
+}[this is another CircuiTikZ example]
Once Questions are defined one can use them, for instance, using just the default parameter's values.
@@ -359,7 +369,7 @@ Choose one of the following two questions:
\tscode*[codeprefix={Questions Defaults},resultprefix={Result: \emph{no output}},emph={Ra,Rb,Rc,Rd,Rg,Vi,Vbc,Vo,QuestVal,Beta,Gain,raw,DC,level},emph2={textQuestion,ftikzQuestion},basicstyle={\scriptsize\ttfamily}]{QuestionDefault}
-\hrule\relax
+\hrule\relax\vspace{0.5ex}
Choose one of the following two questions:
@@ -371,35 +381,35 @@ Choose one of the following two questions:
\ftikzQuestion(0.4)[default]{Elect. 1b}
\end{enumerate}
-Finally, one can use those same questions, setting it's parameters:
+Finally, one can use these same questions, setting it's parameters:
\begin{codestore}[QuestionUse]
Choose one of the following two questions:
\begin{enumerate}
\item \textQuestion[Repo 2]{Quest A:1}[Beta=200,Gain=4,Ra=50\Omega]<just a last minute note about this>\par
- \ftikzQuestion(0.4)[Repo 2]{Elect. 1a}[Ra=50\Omega,Rb*=100\Omega,Rg raw=100,Rc=100,Rd=R_c,Vbc=18V,Vi=v_i(t),Vo=v_o(t)]
+ \ftikzQuestion(0.4)[Repo 2]{Elect. 1a}[Ra=50\Omega,Rb*=100\Omega,Rg raw=$100\Omega$,Rc=100\Omega,Rd=R_c,Vbc=18V,Vi=v_i(t),Vo=v_o(t)]
\item \textQuestion[default]{Quest A:1}[Beta=200,DC level=8V,Rg=R_{b1},Vo=v_o(t)]<just for the sake of it...>\par
- \ftikzQuestion(0.4)[default]{Elect. 1b}[Ra=50\Omega,Rb*=100\Omega,Rg=R_{b1},Rc=100,Rd=200\Omega,Vbc=18V,Vi=v_i(t),Vo=v_o(t)]
+ \ftikzQuestion(0.4)[default]{Elect. 1b}[Ra=50\Omega,Rb*=100\Omega,Rg=R_{b1},Rc=100\Omega,Rd=200\Omega,Vbc=18V,Vi=v_i(t),Vo=v_o(t)]
\end{enumerate}
\end{codestore}
\tscode*[codeprefix={Questions Using Parameters},resultprefix={Result: \emph{no output}},emph={Ra,Rb,Rc,Rd,Rg,Vi,Vbc,Vo,QuestVal,Beta,Gain,raw,DC,level},emph2={textQuestion,ftikzQuestion},basicstyle={\scriptsize\ttfamily}]{QuestionUse}
-\hrule\relax
+\hrule\relax\vspace{0.5ex}
Choose one of the following two questions:
\begin{enumerate}
\item \textQuestion[Repo 2]{Quest A:1}[Beta=200,Gain=4,Ra=50\Omega]<just a last minute note about this>\par
- \ftikzQuestion(0.4)[Repo 2]{Elect. 1a}[Ra=50\Omega,Rb*=100\Omega,Rg raw=100,Rc=100,Rd=R_c,Vbc=18V,Vi=v_i(t),Vo=v_o(t)]
+ \ftikzQuestion(0.4)[Repo 2]{Elect. 1a}[Ra=50\Omega,Rb*=100\Omega,Rg raw=$100\Omega$,Rc=100\Omega,Rd=R_c,Vbc=18V,Vi=v_i(t),Vo=v_o(t)]
\item \textQuestion[default]{Quest A:1}[Beta=200,DC level=8V,Rg=R_{b1},Vo=v_o(t)]<just for the sake of it...>\par
- \ftikzQuestion(0.4)[default]{Elect. 1b}[Ra=50\Omega,Rb*=100\Omega,Rg=R_{b1},Rc=100,Rd=200\Omega,Vbc=18V,Vi=v_i(t),Vo=v_o(t)]
+ \ftikzQuestion(0.4)[default]{Elect. 1b}[Ra=50\Omega,Rb*=100\Omega,Rg=R_{b1},Rc=100\Omega,Rd=200\Omega,Vbc=18V,Vi=v_i(t),Vo=v_o(t)]
\end{enumerate}
-\subsection{Creating a Questions List}
+\subsection{Creating a Questions' List}
To round it up, using the \tsobj{\QuestionsList} (see \ref{question use}):
\begin{codestore}[Qlist]
\QuestionsList
@@ -407,7 +417,7 @@ To round it up, using the \tsobj{\QuestionsList} (see \ref{question use}):
\tscode*{Qlist}
-One get's:
+One get's:
%and then
\QuestionsList
diff --git a/macros/latex/contrib/tikzquests/latex/tikzquests.sty b/macros/latex/contrib/tikzquests/latex/tikzquests.sty
index d54507f477..4ecad3156b 100644
--- a/macros/latex/contrib/tikzquests/latex/tikzquests.sty
+++ b/macros/latex/contrib/tikzquests/latex/tikzquests.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {1.0} {2024/01/02}
+%% This is version {1.1} {2024/01/11}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/tikzquests
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{tikzquests}
- {2024/01/02}
- {1.0}
+ {2024/01/11}
+ {1.1}
{A Simple Framework for (tikz/text) Parametric Questions}
\ExplSyntaxOn
@@ -42,24 +42,15 @@
{
name .code:n = {tikzquests} ,
prefix .code:n = {tikzquests} ,
- date .code:n = {2024/01/02},
- version .code:n = {1.0} ,
+ date .code:n = {2024/01/11},
+ version .code:n = {1.1} ,
description .code:n = {A Simple Framework for (tikz/text) Parametric Questions}
-
}
-\cs_if_exist:NF \__codedesc_pkg_info:nn
+\cs_if_exist:NF \PkgInfo
{
- \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
- { \keys_set:nn {#1 / pkg info}{#2} }
- }
-\cs_if_exist:NF \PkgInfo
- { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
-\cs_if_exist:NF \PkgDescription
- {
+ \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} }
\NewDocumentCommand \PkgDescription {m}
- {
- \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par
- }
+ { \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par }
}
%%%%%%%
%%% End of cut-n-paste
@@ -266,11 +257,9 @@
\NewDocumentCommand{\ftikzQuestion}{D(){}O{\l__tikzquests_active_repository_tl}mO{}}
{
-% \begin{figure}[!htb]
\begin{center}
\tikzQuestion(#1)[#2]{#3}[#4]
\end{center}
-% \end{figure}
}
@@ -342,7 +331,7 @@
\__tikzquests_rawquestion:nnnnn {#1}{textrepo}{#2}{#3}{#4}
}
-\cs_new_protected:Npn \__tikzquests_sorted_list:nnn #1#2#3#4
+\cs_new_protected:Npn \__tikzquests_sorted_list:nnnn #1#2#3#4
{
\prop_if_empty:cF {l__tikzquests_ #1 _ #2 _prop}
{
@@ -392,9 +381,11 @@
{
\prop_if_exist:cTF {l__tikzquests_ ##1 _tikzrepo_prop}
{
- {\vspace{1ex}Repository~ Name:~ \large\textbf{##1}}\vspace{0.35ex}\hrule\relax\hrule\relax
- \__tikzquests_sorted_list:nnn {##1}{tikzrepo}{\raisebox{3em}}{\tikzQuestion(0.35)}
- \__tikzquests_sorted_list:nnn {##1}{textrepo}{}{\textQuestion}
+ {\vspace{1ex}Repository~ Name:~ \large\textbf{##1}}\vspace{0.35ex}\hrule\relax\hrule\relax
+ {\vspace{1ex}~\hfill\emph{non~ starred~ ones~ -~ TikZ~ graphics}}\vspace{0.35ex}\hrule\relax
+ \__tikzquests_sorted_list:nnnn {##1}{tikzrepo}{\raisebox{3em}}{\tikzQuestion(0.35)}
+ {~\hfill\emph{starred~ ones~ -~ text/\TeX}}\vspace{0.35ex}\hrule\relax
+ \__tikzquests_sorted_list:nnnn {##1}{textrepo}{}{\textQuestion}
}
{
\msg_error:nnne {tikzquests}{invalid repository}{Qlist~01}{##1}
diff --git a/macros/latex/contrib/verifycommand/README.txt b/macros/latex/contrib/verifycommand/README.txt
new file mode 100644
index 0000000000..4ee9666691
--- /dev/null
+++ b/macros/latex/contrib/verifycommand/README.txt
@@ -0,0 +1,25 @@
+
+LaTeX verifycommand package v1.00 README.txt
+
+Files included are:
+
+verifycommand.dtx: The documented source code.
+verifycommand.ins: The documentation driver.
+verifycommand.pdf: The documentation.
+
+Derived by compiling verifycommand.ins:
+verifycommand.sty: The verifycommand package.
+
+License:
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+
+Copyright 2024 Brian Dunn
+
+GitHub: https://github.com/bdtc/verifycommand
diff --git a/macros/latex/contrib/verifycommand/verifycommand.dtx b/macros/latex/contrib/verifycommand/verifycommand.dtx
new file mode 100644
index 0000000000..4e1a1ae6d6
--- /dev/null
+++ b/macros/latex/contrib/verifycommand/verifycommand.dtx
@@ -0,0 +1,1171 @@
+%
+% \iffalse meta-comment
+%
+% Copyright 2024 Brian Dunn
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% \fi
+
+%
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{verifycommand}
+%<package> [2024/01/11 v1.00 Verify definitions have not changed.]
+%
+%<*driver>
+\documentclass{ltxdoc}
+
+\newcommand*{\mypackagename}{verifycommand}
+\newcommand{\quicksummary}{Verifies definitions have not changed.}
+
+
+% \usepackage{lmodern}
+\usepackage{erewhon}
+\usepackage{roboto}
+% \usepackage{sourcesanspro}
+\usepackage{inconsolata}
+% \usepackage{libertine}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{textcomp} % provides \degree, \textquotesingle, \textmu
+
+
+\newcommand*{\TakeFourierOrnament}[1]{{%
+\fontencoding{U}\fontfamily{futs}\selectfont\char#1}}
+
+\newcommand*{\textwarning}{\TakeFourierOrnament{66}}
+
+% copy/paste special unicode symbols:
+\input{glyphtounicode}
+\pdfglyphtounicode{prime}{2032}% hex
+\pdfglyphtounicode{diameter}{2300}% diameter
+\pdfglyphtounicode{warningsign}{26A0}% warning sign
+\pdfgentounicode=1
+
+\usepackage{newunicodechar}
+\newunicodechar{ff}{ff}
+\newunicodechar{fi}{fi}
+\newunicodechar{fl}{fl}
+\newunicodechar{ffi}{ffi}
+\newunicodechar{ffl}{ffl}
+% \newunicodechar{°}{\degree}
+\newunicodechar{ρ}{\ensuremath{\rho}}
+\newunicodechar{⨯}{\texttimes}
+\newunicodechar{⁄}{\textfractionsolidus}
+% \newunicodechar{®}{\textregistered}
+% \newunicodechar{©}{\textcopyright}
+\newunicodechar{—}{---}
+\newunicodechar{–}{--}
+% \newunicodechar{”}{''}
+% \newunicodechar{“}{``}
+% \newunicodechar{§}{\S}
+% \newunicodechar{¶}{\P}
+% \newunicodechar{†}{\dag}
+\newunicodechar{‡}{\ddag}
+\newunicodechar{⚠}{\textwarning}
+
+\usepackage{etoolbox}
+
+\usepackage{metalogox}
+
+\usepackage{microtype}
+
+
+
+
+\usepackage[svgnames]{xcolor}
+\definecolor{myurlcolor}{rgb}{0,0,.7}
+\definecolor{mylinkcolor}{rgb}{.7,0,0}
+\definecolor{codecolor}{rgb}{0,.4,.2}
+\definecolor{overviewcolor}{rgb}{0,.2,.4}
+
+
+%\usepackage{graphicx}
+%\graphicspath{{images/}}
+
+%\usepackage{enumitem}
+
+\usepackage{needspace}
+
+%\usepackage{array}
+%\usepackage{booktabs}
+%\usepackage{threeparttable}
+
+%\usepackage{fancybox}% must be loaded before fancyvrb
+%\usepackage{fancyvrb}
+
+
+%\usepackage{caption}
+%\usepackage{newfloat}
+
+%\captionsetup{labelfont={small,bf},textfont={small,bf}}
+
+%\captionsetup*[figure]{
+% style=default, justification=centering,
+% margin=0pt, parskip=0pt, skip=2ex,
+% labelfont={small,bf},textfont={small,bf}
+%}
+
+%\captionsetup*[table]{
+% style=default, justification=centering,
+% margin=0pt, parskip=0pt, skip=1ex,
+% labelfont={small,bf},textfont={small,bf},
+% position=top
+%}
+
+%\captionsetup*[subfigure]{
+% style=default, justification=centering,
+% margin=0pt, parskip=0pt, skip=2ex,
+% labelfont={small},textfont={small}
+%}
+
+%\captionsetup*[subtable]{
+% style=default, justification=centering,
+% margin=0pt, parskip=0pt, skip=1ex,
+% labelfont={small},textfont={small},
+% position=top
+%}
+
+%\captionsetup*[wrapfigure]{
+% style=default, justification=centering,
+% margin=0pt, parskip=0pt, skip=2ex,
+% labelfont={small,bf},textfont={small,bf}
+%}
+
+%\captionsetup*[wraptable]{
+% style=default, justification=centering,
+% margin=0pt, parskip=0pt, skip=1ex,
+% labelfont={small,bf},textfont={small,bf}
+%}
+
+
+
+%\usepackage{blindtext}
+
+
+
+%\usepackage{tikz}
+%\usetikzlibrary{positioning,fit,backgrounds,calc,shapes.geometric,shadows}
+
+%\usepackage[framemethod=tikz]{mdframed}
+
+%\mdfdefinestyle{boxroundshadow}{linewidth=1pt,innerleftmargin=0in,innerrightmargin=0in,%
+%innertopmargin=0in,innerbottommargin=0in,%
+%align=center,roundcorner=3pt,shadow=true,shadowcolor=black!50,shadowsize=4pt,%
+%leftmargin=0pt,rightmargin=0pt,%
+%frametitlebackgroundcolor=black!15,%
+%skipabove=0ex,skipbelow=0ex,%
+%frametitlerulewidth=1pt,frametitleaboveskip=5pt,%
+%}
+
+%\newmdenv[style=boxroundshadow,align=center]{mdtightframe}
+
+%\newmdenv[style=boxroundshadow,align=center,%
+% innertopmargin=3pt,innerbottommargin=3pt,%
+% innerleftmargin=3pt,innerrightmargin=3pt]{mdlooseframe}
+
+
+\usepackage[normalem]{ulem}
+
+
+%\usepackage{tocdata}[2019/03/21]% v2.02 or later
+
+\usepackage{tocloft}
+\setlength{\cftsubsecnumwidth}{3em}
+\setlength{\cftsubsubsecindent}{2.8em}
+\setlength{\cftsubsubsecnumwidth}{4em}
+\setlength{\cftbeforesubsecskip}{1ex}
+
+% \usepackage{titletoc}
+
+
+
+\usepackage{titleps}
+
+\newpagestyle{pageheadfoot}{
+ \headrule
+ \sethead{\pkg{\mypackagename}}{}{\thepage}
+% \renewcommand{\makefootrule}{\rule[2.5ex]{\linewidth}{.4pt}}
+ \setfoot{}{}{}
+}
+
+\pagestyle{pageheadfoot}
+
+
+% Indexing, logos, \Describexxxx, etc:
+\usepackage{dtxdescribe}[2023/01/03]
+
+
+
+\usepackage{splitidx}
+
+\newindex[Index of Objects]{idx}
+%\newindex[General Index]{gen}
+% \newindex[Troubleshooting Index]{trb}
+%\newindex[Index of Indexes]{meta}
+
+\makeindex
+
+\newcommand*{\gindex}[1]{\sindex[gen]{#1}\ignorespaces}
+
+% \trouble[watchout phrase]{index entry}
+\newcommand*{\trouble}[2][]{%
+\ifblank{#1}{}{%
+ \watchout[#1]%
+}%
+% \sindex[trb]{#2}%
+\gindex{#2}%
+\ignorespaces%
+}
+
+
+\newcommand*{\MDfive}{\begingroup\textup{\acro{MD5}}\endgroup}
+
+%\setlength{\floatsep}{5ex plus 1ex minus 1ex}
+%\setlength{\dblfloatsep}{5ex plus 1ex minus 1ex}
+
+
+\usepackage{\mypackagename}
+
+
+
+
+\AtBeginDocument{
+\hypersetup{%
+pdfinfo={%
+Title={The LaTeX \mypackagename\ package},%
+Author={Brian Dunn},%
+Subject={Verify LaTeX definitions are unchanged.},%
+Keywords={LaTeX}%
+colorlinks,%
+linkcolor=mylinkcolor,%
+urlcolor=myurlcolor,%
+pageanchor=true,
+}}
+
+\pdfstringdefDisableCommands{
+\def\quad{ }
+\def\\{ }
+\def\pkg#1{#1}
+\def\cs#1{\textbackslash#1}
+\def\env#1{#1}
+\def\,{ }
+\def\prog#1{#1}
+\def\LuaLaTeX{LuaLaTeX}
+\def\XeLaTeX{XeLaTeX}
+\def\TeX{TeX}
+\def\LaTeX{LaTeX}
+\def\Dash{ --- }
+\def\dash{ -- }
+\def\element#1{#1}
+\def\attribute#1{#1}
+\def\MDfive{MD5}
+}
+}% AtBeginDocument
+
+\AddToHook{begindocument/before}{% Before .aux file is loaded.
+ \usepackage{cleveref}% If needed.
+}
+
+
+
+
+\setlength{\marginparsep}{1em}
+\setlength{\marginparpush}{.7ex}
+\setlength{\IndexMin}{40ex}
+
+\setcounter{IndexColumns}{2}
+
+
+\DisableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{\mypackagename.dtx}
+\end{document}
+%
+%</driver>
+%
+% \fi
+%
+% \iffalse
+%<*package>
+% \fi
+%
+
+% \changes{v1.00}{2024/01/11}{\ 2024/01/11 Initial version.}
+
+
+% \GetFileInfo{\mypackagename.sty}
+%
+% \DoNotIndex{\newcommand,\renewcommand,\addtocounter,\begin,\end,\begingroup,\endgroup}
+% \DoNotIndex{\global,\ifbool,\ifthenelse,\isequivalentto,\let}
+% \DoNotIndex{\booltrue,\boolfalse}
+% \expandafter\DoNotIndex\expandafter{\detokenize{\(,\),\,,\\,\#,\$,\%,\^,\_,\~,\ ,\&,\{,\}}}
+%
+%
+% \thispagestyle{empty}
+% \begin{center}
+% \vfill
+% ^^A \includegraphics[width=.3\linewidth]{\mypackagename_logo.pdf}
+% \vfill
+% {\Huge The \LaTeX\\
+% \pkg{\mypackagename}\\
+% Package}
+% \bigskip
+%
+% \fileversion{} --- \filedate
+%
+% \bigskip
+%
+% {\small\textcopyright{} 2024} Brian Dunn\\ \small \url{https://github.com/bdtc/verifycommand}
+%
+% \vspace{.5in}
+%
+% {\Large \textup{\quicksummary}}
+%
+%
+% \vfill
+%
+%
+% ^^A % \title{The \pkg{verifycommand} package\thanks{This document
+% ^^A % corresponds to \pkg{verifycommand}~\fileversion,
+% ^^A % dated \filedate.}}
+% ^^A % \author{{\small\textcopyright{} 2016} Brian Dunn\\ \small \texttt{bd@BDTechConcepts.com}}
+% ^^A % \published{}
+% ^^A % \subtitle{\textup{Subtitle}}
+% ^^A %
+% ^^A % \maketitle
+%
+% \vfill
+%
+%
+% \begin{abstract}
+% \noindent
+% For package authors who patch code from other packages.
+%
+% To improve reliability,
+% the \pkg{verifycommand} package provides a way to verify that
+% macros or environments have not changed.
+% This allows a package author to check before patching a definition.
+% If a definition is not as expected, a warning is issued.
+% At the end of the compile, a list of all changed definitions is displayed.
+%
+% \vfill
+%
+% \footnotesize
+% \begin{description}
+% \item[License:] \
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+% \end{description}
+%
+% \end{abstract}
+%
+% \vspace*{\fill}
+% \vspace*{\fill}
+% \vspace*{\fill}
+% \end{center}
+% \clearpage
+%
+% \tableofcontents
+% ^^A \listofdtxexamplefloats
+% ^^A \listoffigures
+% ^^A \listoftables
+%
+%
+% \thispagestyle{pageheadfoot}
+%
+% \clearpage
+%
+%^^A \part{verifycommand.sty}
+%
+% \section{Introduction}
+%
+% Patching a macro or environment from another package risks
+% the possibility that the other author has made an update
+% and changed something unexpected,
+% breaking your own package when it tries to apply the patch.
+%
+% The traditional way to check a definition you wish to modify
+% is to copy the expected definition into your package under a new name,
+% then compare to see if the current definition
+% is the same as it was when your package was first created.
+% For a few definitions this may work well, but as the number
+% of patches goes up things get more and more unwieldy.
+%
+% The \pkg{verifycommand} package uses \MDfive\ checksums instead of
+% copying entire definitions.
+% If something has changed, a warning is issued telling the
+% name of the defintion, and optionally telling the name of your
+% own package and the package being modified.
+% This improves code reliability, and allows package authors
+% to get an early warning when an author of some other package
+% has made an unexpected change.
+%
+% In many cases, the patch or replacement may still function correctly
+% even when the original has changed in some way.
+% For this reason, only a warning is issued, not an error.
+%
+%
+% \section{How it works}
+%
+% \cs{VerifyCommand} and \cs{VerifyEnvironment} are used to test
+% whether a definition has changed.
+% Each definition is given an \MDfive\ checksum, which is compared to
+% the expected checksum given as arguments of \cs{VerifyCommand}
+% and \cs{VerifyEnvironment}.
+% If a checksum does not match, a warning is issued,
+% flagging the definition for attention.
+%
+% The \MDfive\ checksum is of the text of the code part of the underlying definition,
+% as it would be displayed by the \cs{meaning} command.
+% For environments, the end code is checked separately.
+% The check detects changes in the replacement text of the definition,
+% and may or may not detect changes in the number or type of parameters,
+% \cs{long}, or type of robustness, depending on the type of definition.
+% Some definitions may have the same checksum if they have the same
+% replacement code but different argument types, for example
+% a \cs{NewDocumentCommand} with two mandatory arguments vs another with one optional
+% and one mandatory, if they both have the same replacement code.
+%
+% When something does not match, the current checksum is printed to
+% the terminal, and the author may copy/paste that into the parameter of
+% \cs{VerifyCommand} or \cs{VerifyEnvironment} to update the
+% expected values.
+%
+%
+% \clearpage
+%
+% \section{How to use \pkg{verifycommand}}
+%
+% \subsection{The user interface}
+%
+% \needspace{2\baselineskip}
+% \DescribeMacro{\VerifyCommand} \oarg{yourpackagename} \oarg{theirpackagename}
+% \marg{\cs{macroname}} \marg{\MDfive\ checksum}
+%
+% \needspace{3\baselineskip}
+% \DescribeMacro{\VerifyEnvironment} \oarg{yourpackagename} \oarg{theirpackagename}
+% \marg{\env{envname}} \\
+% \fqquad \marg{begin \MDfive\ checksum} \marg{end \MDfive\ checksum}
+%
+% Use one of these macros just before patching a macro or environment,
+% as seen below.
+%
+% Note that there is one checksum for \cs{VerifyCommand}, but there
+% are two checksums for \cs{VerifyEnvironment}: once for the begin section
+% and one for the end section.
+%
+% If there is only one optional argument, it is used as your package name.
+%
+%
+% \subsection{Placing the macros}
+%
+% When first using \pkg{verifycommand}, use empty checksums, placing
+% \cs{VerifyCommand} or \cs{VerifyEnvironment} before each place
+% where something gets patched.
+% This is probably not required where things are entirely replaced,
+% or prepended or appended.
+%
+% \begin{sourceverb}
+% \VerifyCommand{\LaTeX}{}
+% <patch \LaTeX here>
+%
+% \VerifyCommand[mypackage]{\textcolor}{}
+% <patch \textcolor here>
+%
+% \VerifyCommand[mypackage][graphics]{\rotatebox}{}
+% <patch \rotatebox here>
+%
+% \VerifyEnvironment{tabbing}{}{}
+% <patch tabbing here>
+% \end{sourceverb}
+%
+%
+% \subsection{Finding the checksums of the current definitions}
+%
+% In the above examples, testing \cs{LaTeX} would print a warning showing
+% the correct \MDfive\ checksum.
+% Testing \cs{textcolor} would do the same, but as a \cs{PackageWarning} from \pkg{mypackage}.
+% Testing \cs{rotatebox} would also mention the package being tested, \pkg{graphics}.
+% Testing \env{tabbing} issues a separate warning for the begin and end sections.
+%
+%
+% \begin{sourceverb}
+% Warning: Something may fail. A definition has changed:
+% \LaTeX
+% FAAAC6146C9A80F46A1F029B67923851
+% on input line 464.
+
+% Package mypackage Warning: Something may fail. A definition has changed:
+% (mypackage) \textcolor
+% (mypackage) E1E2B5A908AA1BCDDF6BEA038596A381
+% (mypackage) on input line 465.
+
+% Package mypackage Warning: Something may fail. A definition has changed:
+% (mypackage) graphics: \rotatebox
+% (mypackage) 2472999B02C97AC847128AF24C55D150
+% (mypackage) on input line 466.
+%
+% Warning: Something may fail. A definition has changed:
+% tabbing
+% 1AD73B4527AD30969CF3219F2FB1306B
+% on input line 518.
+%
+% Warning: Something may fail. A definition has changed:
+% (end)tabbing
+% E8326AC43EE0A6E922A20F2A798BD177
+% on input line 518.
+% \end{sourceverb}
+%
+% And at the end of the compile, a summary is given:
+%
+% \begin{sourceverb}
+% --------------------------------
+% WARNING: Something may fail.
+% Definition changed: \LaTeX
+% Definition changed: FAAAC6146C9A80F46A1F029B67923851
+% Definition changed: \textcolor
+% Definition changed: E1E2B5A908AA1BCDDF6BEA038596A381
+% Definition changed: graphics: \rotatebox
+% Definition changed: 2472999B02C97AC847128AF24C55D150
+% Definition changed: tabbing
+% Definition changed: 1AD73B4527AD30969CF3219F2FB1306B
+% Definition changed: (end)tabbing
+% Definition changed: E8326AC43EE0A6E922A20F2A798BD177
+% --------------------------------
+% \end{sourceverb}
+%
+%
+% \subsection{Assigning the checksums}
+% Copy the checksums from the warnings messages into the source.
+% When this is done, there are no more \pkg{verifycommand} warnings
+% unless one of these defintions changes:
+%
+% \begin{sourceverb}
+% \VerifyCommand{\LaTeX}{FAAAC6146C9A80F46A1F029B67923851}
+% <patch \LaTeX here>
+%
+% \VerifyCommand[mypackage]{\textcolor}
+% {E1E2B5A908AA1BCDDF6BEA038596A381}
+% <patch \textcolor here>
+%
+% \VerifyCommand[mypackage][graphics]{\rotatebox}
+% {2472999B02C97AC847128AF24C55D150}
+% <patch \rotatebox here>
+%
+% \VerifyEnvironment{tabbing}
+% {1AD73B4527AD30969CF3219F2FB1306B}% beginning code
+% {E8326AC43EE0A6E922A20F2A798BD177}% endind code
+% <patch tabbing here>
+% \end{sourceverb}
+%
+%
+% \subsection{When a definition is changed}
+%
+% When something being verified changes at a later time, the resulting
+% warning will let the user know that the patches may not work
+% as expected.
+% Because the test is done before the patch,
+% this warning will be issued before the patch is even attempted.
+%
+% When testing many packages in bulk, a utility such as \cmds{grep}
+% can report the changed definitions.
+% Search the log file for ``Definition changed:''.
+%
+%
+% \subsection{Disabling the package}
+%
+% \pkg{verifycommand} relies on knowing the internal structure of
+% various kinds of definitions. It is possible that these may change some day,
+% causing endless warnings for that kind of definition.
+% Should that happen, it will be necessary to disable the \pkg{verifycommand}
+% package until it can be updated.
+% Use the \optn{disable} option to do so.
+%
+% \begin{sourceverb}
+% \usepackage[disable]{verifycommand}
+% \end{sourceverb}
+%
+%
+%
+% ^^A To trigger the checksums to be copied into the exmaples:
+% \VerifyCommand{\LaTeX}{}
+% \VerifyCommand[mypackage]{\textcolor}{}
+% \VerifyCommand[mypackage][graphics]{\rotatebox}{}
+% \VerifyEnvironment{tabbing}{}{}
+%
+%
+% \clearpage
+%
+% ^^A \StopEventually{\PrintChanges\PrintIndex}
+%
+% \makeatletter
+%
+% \StopEventually{
+% ^^A \part{Change History and Index}
+% ^^A \part{Change History}
+%
+%
+% \pagestyle{plain}
+%
+% ^^A Each index has a prologue which creates its own \part, label,
+% ^^A and meta index entry.
+% \GlossaryPrologue{
+% \part{Change History}
+% ^^A \section{Chg Hist}
+% \label{sec:changehistory}
+% ^^A \sindex[meta]{Change History}
+% \markboth{{Change History}}{{Change History}}
+%
+% ^^A For the most recent changes, see page \pageref{sec:changesend}.
+%
+% }
+% \PrintChanges
+% \phantomsection
+% \label{sec:changesend}
+%
+%
+% ^^A The instructions for the Index of Objects:
+% \IndexPrologue{
+% \clearpage
+% \expandafter\part\expandafter{\indexname}
+% \label{sec:index\indexshortcut}
+% ^^A \sindex[meta]{\indexname}
+% \markboth{Index of Objects}{Index of Objects}%
+%
+% This is an index of macros, environments, booleans, counters, lengths,
+% packages, classes, options, keys, files, and various other programming objects.
+% Each is listed by itself, and also by category.
+% In some cases, they are further subdivided by [class].
+%
+% Numbers written in italic refer to the page
+% where the corresponding entry is described;
+% numbers underlined refer to the
+% \ifcodeline@index
+% code line of the
+% \fi
+% definition.
+% ^^A ; numbers in roman refer to the
+% ^^A \ifcodeline@index
+% ^^A code lines
+% ^^A \else
+% ^^A pages
+% ^^A \fi
+% ^^A where the entry is used.
+% }
+%
+% \printindex[idx][Index of Objects]
+%
+%
+% ^^A The instructions for the General Index:
+% \IndexPrologue{
+% \clearpage
+% \expandafter\part\expandafter{\indexname}
+% \label{sec:index\indexshortcut}
+% ^^A \sindex[meta]{\indexname}
+%
+% ^^A This is an index of instructions and concepts.
+% ^^A Look here when wondering how to do something, and
+% ^^A check the Troubleshooting Index when something goes wrong.
+% This is a general index, including how-to and troubleshooting.
+% }
+%
+% \printindex[gen][General Index]
+%
+%
+% ^^A% The instructions for the Troubleshooting Index:
+% ^^A% \IndexPrologue{
+% ^^A% \clearpage
+% ^^A% \expandafter\part\expandafter{\indexname}
+% ^^A% \label{sec:index\indexshortcut}
+% ^^A% \sindex[meta]{\indexname}
+% ^^A%
+% ^^A% This index is a sorted reference of problems and solutions.
+% ^^A% In order to make it easier to locate a solution,
+% ^^A% the same issue may be addressed by more than one entry.
+% ^^A%
+% ^^A% Entries with higher page numbers are often duplicates of entries with
+% ^^A% lower page numbers, as the same warning may occur within the user manual
+% ^^A% and again within the source code for a given package.
+% ^^A% }
+% ^^A%
+% ^^A% \printindex[trb][Troubleshooting Index]
+%
+%
+% ^^A The meta index does not get a meta index entry pointing to itself:
+% \IndexPrologue{
+
+% \clearpage
+% \expandafter\part\expandafter{\indexname}
+% \label{sec:index\indexshortcut}
+% }
+%
+% ^^A \printindex[meta][Index of Indexes]
+%
+% \typeout{--------------------------------}
+% \typeout{The following warning that}
+% \typeout{something may fail is an}
+% \typeout{example of the output of this}
+% \typeout{package, and is not evidence of}
+% \typeout{a problem with the verifycommand}
+% \typeout{manual or documentation.}
+% \typeout{--------------------------------}
+%
+% }
+%
+% \makeatother
+%
+%
+%
+%
+% \section{Code}
+% ^^A *source
+%
+% \subsection{Package requirements}
+% \begin{macrocode}
+\RequirePackage{etoolbox}
+\RequirePackage{iftex}
+% \end{macrocode}
+%
+%
+% \subsection{Package options}
+%
+% Package option to disable all functions.
+%
+% \DescribeBoolean{VERCMD@enable} Is the package enabled?
+% \begin{macrocode}
+\newbool{VERCMD@enable}
+\booltrue{VERCMD@enable}
+% \end{macrocode}
+%
+% \DescribeOption{disable} Turn off all functions.
+% \begin{macrocode}
+\DeclareOption{disable}{%
+ \boolfalse{VERCMD@enable}%
+ \typeout{----}%
+ \typeout{Package verifycommand: Turned off by option 'disable'.}%
+ \typeout{----}%
+}
+
+\ProcessOptions\relax
+% \end{macrocode}
+%
+%
+% \subsection{Support macros}
+%
+% \begin{macro}{\VERCMD@backslash} The literal |\| character.
+%
+% This is used later because some internal definitions use double |\\| as
+% part of their name.
+% \begin{macrocode}
+\catcode`\&=0
+&catcode`&\=12
+&def&VERCMD@backslash{\}
+&catcode`&\=0
+\catcode`\&=4
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+%
+% \subsection{\MDfive\ hashing}
+%
+% The \MDfive\ hash is used for \env{lateximage} filenames for \SVG\ math.
+%
+% \begin{macrocode}
+\newcommand{\VERCMD@mdfivesum}[1]{%
+ \PackageError{verifycommand}
+ {No MD5 macro was found}
+ {%
+ Verifycommand must find the macros \protect\pdfmdfivesum\space
+ or \protect\mdfivesum.%
+ }
+}
+% \end{macrocode}
+%
+% The default for \pdfLaTeX, \dviLaTeX, up\LaTeX, etc:
+% \begin{macrocode}
+\ifdef{\pdfmdfivesum}
+ {\let\VERCMD@mdfivesum\pdfmdfivesum}
+ {}
+% \end{macrocode}
+%
+% For \LuaLaTeX:
+% \begin{macrocode}
+\ifLuaTeX
+\RequirePackage{pdftexcmds}
+\let\VERCMD@mdfivesum\pdf@mdfivesum
+\fi
+% \end{macrocode}
+%
+% For \XeLaTeX:
+% \begin{macrocode}
+\ifXeTeX
+\@ifundefined{pdffivesum}{}
+ {\let\VERCMD@mdfivesum\pdfmdfivesum}
+\@ifundefined{mdfivesum}{}
+ {\let\VERCMD@mdfivesum\mdfivesum}
+\fi
+% \end{macrocode}
+
+% \begin{macro}{\VERCMD@mdfive} \marg{\cs{macroname}} \qquad
+% Compute \MDfive\ checksum, store in \cs{VERCMD@temp}.
+% \begin{macrocode}
+\def\VERCMD@mdfive#1{%
+ \edef\VERCMD@temp{\VERCMD@mdfivesum{\meaning#1}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Issuing warnings}
+%
+% ^^A % \begin{macrocode}
+% ^^A \gdef\VERCMD@ProgError#1#2{%
+% ^^A \GenericError{%
+% ^^A (\jobname)\@spaces\@spaces\@spaces\@spaces
+% ^^A }{%
+% ^^A \jobname\ Error: #1%
+% ^^A }{%
+% ^^A Something has changed and the result may fail.%
+% ^^A }{#2}%
+% ^^A }
+% ^^A % \end{macrocode}
+%
+%
+% \begin{macro}{\VERCMD@whatchanged} Accumulates a list of changed definitions.
+% \begin{macrocode}
+\newcommand*{\VERCMD@whatchanged}{}
+% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\VERCMD@addchanged} \marg{\MDfive sum} \marg{text} \qquad Add to the list of changed definitions.
+% \begin{macrocode}
+\newcommand*{\VERCMD@addchanged}[2]{%
+ \ifdefempty{\VERCMD@whatchanged}%
+ {}%
+ {\apptocmd{\VERCMD@whatchanged}{^^J}{}{}}%
+ \apptocmd{\VERCMD@whatchanged}{Definition changed: #2^^J}{}{}%
+ \apptocmd{\VERCMD@whatchanged}{Definition changed: \space\space\space#1}{}{}%
+}
+% \end{macrocode}
+% \end{macro}
+
+% When the compile is finished, print the accumulated list of changed definitions.
+% \begin{macrocode}
+\AfterEndDocument{
+ \ifdefempty{\VERCMD@whatchanged}{}{%
+ \typeout{--------------------------------}%
+ \typeout{WARNING: Something may fail.}%
+ \typeout{\VERCMD@whatchanged}%
+ \typeout{--------------------------------}%
+ }
+}
+% \end{macrocode}
+
+
+% \begin{macro}{\VERCMD@ProgWarning} \marg{text} \qquad Warning without a package name.
+% \begin{macrocode}
+\def\VERCMD@ProgWarning#1{%
+ \GenericWarning{%
+% (\jobname)\@spaces\@spaces%
+ \@spaces\@spaces
+ }{%
+ Warning: #1%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\VERCMD@Warning} \marg{yourpackage} \marg{theirpackage} \marg{defn name}
+%
+% If no package names, print a general warning.
+% If package names are given, print a \cs{PackageWarning}.
+% \begin{macrocode}
+\newcommand*{\VERCMD@Warning}[3]{%
+ \ifblank{#1}%
+ {%
+ \VERCMD@ProgWarning{%
+ Something may fail. A definition has changed:\MessageBreak
+ \ifblank{#2}{}{#2: }\string#3\MessageBreak
+ \VERCMD@temp\MessageBreak
+ }
+ \expandafter\VERCMD@addchanged\expandafter{\VERCMD@temp}{\string#3}%
+ }%
+ {%
+ \PackageWarning{#1}{%
+ Something may fail. A definition has changed:\MessageBreak%
+ \ifblank{#2}{}{#2: }%
+ \string#3\MessageBreak%
+ \VERCMD@temp\MessageBreak%
+ }%
+ \expandafter\VERCMD@addchanged\expandafter{\VERCMD@temp}{\ifblank{#2}{}{#2: }\string#3}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+%
+%
+% \subsection{User interface}
+%
+% \begin{macro}{\VerifyCommand} \oarg{yourpackage} \oarg{theirpackage}
+% \marg{\cs{commandname}} \marg{\MDfive\ checksum}
+%
+% Test for various kinds of definitions, and convert them to \MDfive\ checksums.
+% \begin{macrocode}
+\NewDocumentCommand{\VerifyCommand}{O{} O{} m m}{%
+% \end{macrocode}
+%
+% Only if the package is enabled:
+% \begin{macrocode}
+ \ifbool{VERCMD@enable}{%
+% \end{macrocode}
+%
+% Default to an un-detected definition type:
+% \begin{macrocode}
+ \edef\VERCMD@temp{Unknown~definition}%
+% \end{macrocode}
+%
+% For \cs{NewDocumentCommand}, the macro name is ``|\name code|'' with a space in the middle.
+% \begin{macrocode}
+% % NewDocumentCommand:
+ \ifcsdef{\cs_to_str:N #3~code}%
+ {%
+ \expandafter\VERCMD@mdfive%
+ \csname \cs_to_str:N #3~code\endcsname%
+ }%
+ {%
+% \end{macrocode}
+%
+% For \cs{DeclareRobustCommand} with an optional argument,
+% the macro name is ``|\\name |'' with a two backslashes and a trailing space.
+% \begin{macrocode}
+% % DeclareRobustCommmand with option:
+ \ifcsdef{\VERCMD@backslash\cs_to_str:N #3~}%
+ {%
+ \expandafter\VERCMD@mdfive%
+ \csname \cs_to_str:N #3~code\endcsname%
+ }%
+ {%
+% \end{macrocode}
+%
+% For \cs{DeclareRobustCommand}, the macro name is ``|\name |'' with a trailing space.
+% \begin{macrocode}
+% % DeclareRobustCommand:
+ \ifcsdef{\cs_to_str:N #3~}%
+ {%
+ \expandafter\VERCMD@mdfive%
+ \csname \cs_to_str:N #3~\endcsname%
+ }%
+ {%
+% \end{macrocode}
+%
+% For \cs{newcommand} with an option, the macro name is ``|\\name|'', with two backslashes.
+% \begin{macrocode}
+% % newcommand w/ option:
+ \ifcsdef{\VERCMD@backslash\cs_to_str:N #3}%
+ {%
+ \expandafter\VERCMD@mdfive%
+ \csname \VERCMD@backslash\cs_to_str:N #3\endcsname%
+ }%
+% \end{macrocode}
+%
+% For \cs{newcommand}, the macro name is ``|\name|''.
+%
+% If none match, the default unknown definition warning is show in place of the checksum.
+% \begin{macrocode}
+ {%
+% % newcommand:
+ \ifdef{#3}%
+ {\VERCMD@mdfive#3}%
+ {}%
+ }%
+ }%
+ }%
+ }%
+% \end{macrocode}
+%
+% If the checksum does not match the expected value, issue a warning.
+% \begin{macrocode}
+ \ifdefstring{\VERCMD@temp}{#4}%
+ {}%
+ {%
+ \VERCMD@Warning{#1}{#2}{#3}%
+ }%
+ }% if package enabled
+ {}% if package not enabled
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\VerifyEnvironment} \oarg{yourpackage} \oarg{theirpackage}
+% \marg{\cs{commandname}}
+% \marg{begin \MDfive\ checksum}
+% \marg{end \MDfive\ checksum}
+%
+% Test both the begin and end section of the environment.
+% \begin{macrocode}
+\NewDocumentCommand{\VerifyEnvironment}{O{} O{} m m m}{%
+% \end{macrocode}
+%
+% Only if the package is enabled:
+% \begin{macrocode}
+ \ifbool{VERCMD@enable}{%
+% \end{macrocode}
+%
+% Default to an un-detected definition type:
+% \begin{macrocode}
+ \edef\VERCMD@temp{Unknown~definition}%
+% \end{macrocode}
+%
+% For \cs{NewDocumentEnvironment}, the macro name is ``|\environment name code|'' with internal spaces.
+% \begin{macrocode}
+% % NewDocumentEnvironment:
+ \ifcsdef{environment~#3~code}%
+ {%
+ \expandafter\VERCMD@mdfive%
+ \csname environment~#3~code\endcsname%
+ }%
+ {%
+% \end{macrocode}
+%
+% For \cs{newenvironment} with an optional argument,
+% the macro name is ``|\\name|'', with two backslashes.
+% \begin{macrocode}
+% % newenvironment with option:
+ \ifcsdef{\VERCMD@backslash#3}%
+ {%
+ \expandafter\VERCMD@mdfive%
+ \csname \VERCMD@backslash#3\endcsname%
+ }%
+ {%
+% \end{macrocode}
+%
+% For \cs{newenvironment}, the macro name is ``|\name|''.
+% \begin{macrocode}
+% % newenvironment:
+ \ifcsdef{#3}%
+ {\expandafter\VERCMD@mdfive\csname #3\endcsname}%
+ {}%
+ }%
+ }%
+% \end{macrocode}
+%
+% If the checksum does not match the expected value, issue a warning.
+% \begin{macrocode}
+ \ifdefstring{\VERCMD@temp}{#4}%
+ {}%
+ {%
+ \VERCMD@Warning{#1}{#2}{#3}%
+ }%
+% \end{macrocode}
+%
+% Reset the default to an un-detected definition type:
+% \begin{macrocode}
+ \edef\VERCMD@temp{Unknown~definition}%
+% \end{macrocode}
+%
+% For \cs{NewDocumentEnvironment}, the ending macro name
+% is ``|\environment name end aux |'', with spaces and a trailing space.
+% \begin{macrocode}
+% % end DocumentEnvironment:
+ \ifcsdef{environment~#3~end~aux~}%
+ {%
+ \expandafter\VERCMD@mdfive
+ \csname environment~#3~end~aux~\endcsname%
+ }%
+ {%
+% \end{macrocode}
+%
+% For \cs{newenvironment}, the ending macro name is ``|\endname|''.
+% \begin{macrocode}
+% % end newenvironment:
+ \ifcsdef{end#3}%
+ {%
+ \expandafter\VERCMD@mdfive%
+ \csname end#3\endcsname%
+ }%
+ {}%
+ }%
+% \end{macrocode}
+%
+% If the checksum does not match the expected value, issue a warning.
+% \begin{macrocode}
+ \ifdefstring{\VERCMD@temp}{#5}%
+ {}%
+ {%
+ \VERCMD@Warning{#1}{#2}{(end)#3}%
+ }%
+ }% if package enabled
+ {}% if package not enabled
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+%
+%
+%
+% \clearpage
+%
+% \section{\pkg{verifycommand} package maintenance}
+%
+% To compile \filenm{verifycommand.sty} and \cs{verifycommand.pdf}
+% from \filenm{verifycommand.dtx} and \filenm{verifycommand.ins}:
+%
+% \begin{sourceverb}
+% pdflatex verifycommand.ins
+% pdflatex verifycommand.dtx
+% pdflatex verifycommand.dtx
+% makeindex -s gglo.ist -o verifycommand.gls verifycommand.glo
+% splitindex verifycommand.idx -- -s gind.ist
+% pdflatex verifycommand.dtx
+% pdflatex verifycommand.dtx
+% \end{sourceverb}
+%
+%
+% \iffalse
+%</package>
+% \fi
+%
+%
+%
+%
+%
+% \clearpage
+% \pagestyle{plain}
+%
+% \renewcommand{\partname}{}
+% \renewcommand{\thepart}{}
+% ^^A \part{Change History and Index}
+%
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/verifycommand/verifycommand.ins b/macros/latex/contrib/verifycommand/verifycommand.ins
new file mode 100644
index 0000000000..1040debcab
--- /dev/null
+++ b/macros/latex/contrib/verifycommand/verifycommand.ins
@@ -0,0 +1,47 @@
+%% verifycommand.ins
+%% Copyright 2024 Brian Dunn
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Brian Dunn.
+%%
+%% This work consists of the files verifycommand.dtx and verifycommand.ins
+%% and the derived file verifycommand.sty.
+\input docstrip.tex
+\keepsilent
+\usedir{tex/latex/ package }
+\preamble
+This is a generated file.
+Copyright 2024 Brian Dunn
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+\endpreamble
+\askforoverwritefalse
+\generate{\file{verifycommand.sty}{\from{verifycommand.dtx}{package}}}
+\Msg{*********************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the}
+\Msg{* following file into a directory searched by TeX:}
+\Msg{*}
+\Msg{* \space\space verifycommand.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the file verifycommand.dtx}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*********************************************************}
+\endbatchfile
diff --git a/macros/latex/contrib/verifycommand/verifycommand.pdf b/macros/latex/contrib/verifycommand/verifycommand.pdf
new file mode 100644
index 0000000000..b58e11c6c2
--- /dev/null
+++ b/macros/latex/contrib/verifycommand/verifycommand.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/fontsetup/README b/macros/unicodetex/latex/fontsetup/README
index e4eaa92f6e..1c180e21c1 100644
--- a/macros/unicodetex/latex/fontsetup/README
+++ b/macros/unicodetex/latex/fontsetup/README
@@ -1,5 +1,5 @@
The fontsetup package
- (Version 2.02, GPL3)
+ (Version 2.1.0, GPL3)
This simple package makes it trivial to switch quickly between
different quality fonts supporting Mathematics.
diff --git a/macros/unicodetex/latex/fontsetup/doc/fontsetup-doc.pdf b/macros/unicodetex/latex/fontsetup/doc/fontsetup-doc.pdf
index bbdddefeb4..5cedc1ae3b 100644
--- a/macros/unicodetex/latex/fontsetup/doc/fontsetup-doc.pdf
+++ b/macros/unicodetex/latex/fontsetup/doc/fontsetup-doc.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/fontsetup/doc/fontsetup-doc.tex b/macros/unicodetex/latex/fontsetup/doc/fontsetup-doc.tex
index ca744a2477..d33b8d0084 100644
--- a/macros/unicodetex/latex/fontsetup/doc/fontsetup-doc.tex
+++ b/macros/unicodetex/latex/fontsetup/doc/fontsetup-doc.tex
@@ -16,7 +16,7 @@
{\large Antonis Tsolomitis}\\
University of the Aegean\\ Department of Mathematics\\[1ex]
\textsc{26} December \textsc{2023}\\[1ex]
- Version 2.02, \textsc{gpl3}
+ Version 2.1.0, \textsc{gpl3}
\end{center}
This package is a simple wrapper-type package that makes the setup of fonts easy and
@@ -30,6 +30,9 @@ University of the Aegean\\ Department of Mathematics\\[1ex]
some restrictions. The fonts must have some commercial-level quality and must support
Mathematics.
+ Version 2.1.0 adds commands for accessing the Aegean Numbers (U10100-U1013F) for
+ the default and olddefault options as described in Appendix~\ref{AegeanNumbers}.
+
Version 2.0 has restructured the files of the package to a better and easier to be maintained
way. Many thanks go to {\devfont निरंजन} (Niranjan) for helping me with this.
@@ -96,6 +99,8 @@ NewComputerModern font family.
gives ``\chemkappa-component''.
\item commands for Medieval Latin and Uncial Greek:
use \verb|{\uncial text}| or \verb|\textuncial{text}|.
+ \item commands to access the Aegean Numbers (U10100 to U1013F) as described in
+ Appendix~\ref{AegeanNumbers}.
\end{itemize}
\item[olddefault] Loads the NewComputerModern fonts (in Regular weight)
similarly to the default option.
@@ -388,6 +393,42 @@ The following table lists the commands and the symbol produced for the Unicode r
\end{center}
+\chapter{The Aegean Numbers glyph complement}
+\label{AegeanNumbers}
+The following table lists the commands and the symbol produced for the Unicode range
+\texttt{u10100--u1013F} and the NewComputerModern fonts.
+
+\begin{tabular}{|c|c||c|c|}\hline
+\verb|\aegeanseparator| &\aegeanseparator& \verb|\aegeaneighthundred| &\aegeaneighthundred\\ \hline
+\verb|\aegeanseparatordot| &\aegeanseparatordot& \verb|\aegeanninehundred| &\aegeanninehundred\\ \hline
+\verb|\aegeancheckmark| &\aegeancheckmark& \verb|\aegeanonethousand| &\aegeanonethousand\\ \hline
+\verb|\aegeanone| &\aegeanone& \verb|\aegeantwothousand| &\aegeantwothousand\\ \hline
+\verb|\aegeantwo| &\aegeantwo& \verb|\aegeanthreethousand| &\aegeanthreethousand\\ \hline
+\verb|\aegeanthree| &\aegeanthree& \verb|\aegeanfourthousand| &\aegeanfourthousand\\ \hline
+\verb|\aegeanfour| &\aegeanfour& \verb|\aegeanfivethousand| &\aegeanfivethousand\\ \hline
+\verb|\aegeanfive| &\aegeanfive& \verb|\aegeansixthousand| &\aegeansixthousand\\ \hline
+\verb|\aegeansix| &\aegeansix& \verb|\aegeanseventhousand| &\aegeanseventhousand\\ \hline
+\verb|\aegeanseven| &\aegeanseven& \verb|\aegeaneightthousand| &\aegeaneightthousand\\ \hline
+\verb|\aegeaneight| &\aegeaneight& \verb|\aegeanninethousand| &\aegeanninethousand\\ \hline
+\verb|\aegeanine| &\aegeanine& \verb|\aegeantenthousand| &\aegeantenthousand\\ \hline
+\verb|\aegeanten| &\aegeanten& \verb|\aegeantwentythousand| &\aegeantwentythousand\\ \hline
+\verb|\aegeantwenty| &\aegeantwenty& \verb|\aegeanthirtythousand| &\aegeanthirtythousand\\ \hline
+\verb|\aegeanthirty| &\aegeanthirty& \verb|\aegeanfourtythousand| &\aegeanfourtythousand\\ \hline
+\verb|\aegeanfourty| &\aegeanfourty& \verb|\aegeanfiftythousand| &\aegeanfiftythousand\\ \hline
+\verb|\aegeanfifty| &\aegeanfifty& \verb|\aegeansixtythousand| &\aegeansixtythousand\\ \hline
+\verb|\aegeansixty| &\aegeansixty& \verb|\aegeanseventythousand| &\aegeanseventythousand\\ \hline
+\verb|\aegeanseventy| &\aegeanseventy& \verb|\aegeaneightythousand| &\aegeaneightythousand\\ \hline
+\verb|\aegeaneighty| &\aegeaneighty& \verb|\aegeanninetythousand| &\aegeanninetythousand\\ \hline
+\verb|\aegeanninety| &\aegeanninety& \verb|\aegeanweightbaseunit| &\aegeanweightbaseunit\\ \hline
+\verb|\aegeanonehundred| &\aegeanonehundred& \verb|\aegeanweightfirstsubunit| &\aegeanweightfirstsubunit\\ \hline
+\verb|\aegeantwohundred| &\aegeantwohundred& \verb|\aegeanweightsecondsubunit| &\aegeanweightsecondsubunit\\ \hline
+\verb|\aegeanthreehundred| &\aegeanthreehundred& \verb|\aegeanweightthirdsubunit| &\aegeanweightthirdsubunit\\ \hline
+\verb|\aegeanfourhundred| &\aegeanfourhundred& \verb|\aegeanweightfourthsubunit| &\aegeanweightfourthsubunit\\ \hline
+\verb|\aegeanfivehundred| &\aegeanfivehundred& \verb|\aegeandrymeasurefirstsubunit| &\aegeandrymeasurefirstsubunit\\ \hline
+\verb|\aegeansixhundred| &\aegeansixhundred& \verb|\aegeanliquidmeasurefirstsubunit| &\aegeanliquidmeasurefirstsubunit\\ \hline
+\verb|\aegeansevenhundred| &\aegeansevenhundred& \verb|\aegeansecondsubunit| &\aegeansecondsubunit\\ \hline
+ & & \verb|\aegeanthirdsubunit| &\aegeanthirdsubunit\\ \hline
+\end{tabular}
diff --git a/macros/unicodetex/latex/fontsetup/doc/fspsample.pdf b/macros/unicodetex/latex/fontsetup/doc/fspsample.pdf
new file mode 100644
index 0000000000..89bee7ffc6
--- /dev/null
+++ b/macros/unicodetex/latex/fontsetup/doc/fspsample.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/fontsetup/doc/fspsample.tex b/macros/unicodetex/latex/fontsetup/doc/fspsample.tex
index 03f12453bb..ac29309725 100644
--- a/macros/unicodetex/latex/fontsetup/doc/fspsample.tex
+++ b/macros/unicodetex/latex/fontsetup/doc/fspsample.tex
@@ -9,7 +9,7 @@
%\usepackage[utf8x]{inputenc}
%\usepackage{amsfonts}
-\usepackage[default]{fontsetup}%upint, newcmbb
+%\usepackage[default]{fontsetup}%upint, newcmbb
%\usepackage[gfsartemisia]{fontsetup}
%\usepackage[gfsdidot]{fontsetup}
%\usepackage[gfsdidotclassic]{fontsetup}
@@ -25,7 +25,7 @@
%\usepackage[msgaramond]{fontsetup}
%\usepackage[ebgaramond]{fontsetup}
%\usepackage[minion]{fontsetup}
-%\usepackage[euler]{fontsetup}
+\usepackage[euler]{fontsetup}
%\usepackage[neoeuler]{fontsetup}
%\usepackage[libertinus]{fontsetup}
%\usepackage[olddefault]{fontsetup}%upint, newcmbb
@@ -49,7 +49,7 @@ in\-te\-grable func\-tion defined on the measurable set $E$ and that
$|\,f_n|\leq g$. If $f$ is a function so that $f_n\to f$ almost everywhere
then $$\lim_{n\to\infty}\int f_n=\int f.$$
\end{theorem}
-\textit{Proof}: The function $g-f_n$ is non-negative and thus from Fatou lemma
+\textit{Proof}: The function $g-f_n$ is \textit{non-negative} and thus from Fatou lemma
we have that $\int(g-f\,)\leq\liminf\int(g-f_n)$. Since $|\,f\,|\leq g$ and
$|\,f_n|\leq g$ the functions $f$ and $f_n$ are integrable and we have
$$\int g-\int f\,\leq \int g-\limsup\int f_n,$$ so
@@ -64,7 +64,7 @@ $|\,f_n| ≤ g$. Υποθέτουμε ότι υπάρχει μια συνάρτ
τείνει στην $f$ σχεδόν παντού. Τότε
$$\lim \int f_n =\int f.$$
\end{theoremg}
-\textit{Απόδειξη}: Η συνάρτηση $g − f_n$ είναι μη αρνητική και άρα από
+\textit{Απόδειξη}: Η συνάρτηση $g − f_n$ είναι \textit{μη αρνητική} και άρα από
το Λήμμα του Fatou ισχύει
$\int (f-g) ≤ \liminf \int (g-f_n)$. Επειδή
$|\,f\,| ≤ g$ και $|\,f_n| ≤g$ οι $f$ και $f_n$ είναι ολοκληρώσιμες, έχουμε
diff --git a/macros/unicodetex/latex/fontsetup/tex/fontsetup.sty b/macros/unicodetex/latex/fontsetup/tex/fontsetup.sty
index 0cb11973cc..84b374b795 100644
--- a/macros/unicodetex/latex/fontsetup/tex/fontsetup.sty
+++ b/macros/unicodetex/latex/fontsetup/tex/fontsetup.sty
@@ -1,4 +1,4 @@
-\ProvidesPackage{fontsetup}[2023/12/26 v2.02 For easily using font families with mathematics]
+\ProvidesPackage{fontsetup}[2024/1/11 v2.1.0 For easily using font families with mathematics]
\RequirePackage{iflang}
\RequirePackage{iftex}
% Provide a test to know if a 16bits TeX is used.
diff --git a/macros/unicodetex/latex/fontsetup/tex/fspdefault.tex b/macros/unicodetex/latex/fontsetup/tex/fspdefault.tex
index afaaa99377..05a40a7f01 100644
--- a/macros/unicodetex/latex/fontsetup/tex/fspdefault.tex
+++ b/macros/unicodetex/latex/fontsetup/tex/fspdefault.tex
@@ -525,5 +525,66 @@ SmallCapsFeatures={Numbers=OldStyle}]{NewCMMono10-Book.otf}
%%%%%%%%%%%%%%% End Devanagari Variables block %%%%%%%%
+%%%%%%%%%% Begin Aegean Numbers #######################
+\newcommand*{\aegeanseparator}{\textsf{\char"10100}}
+\newcommand*{\aegeanseparatordot}{\textsf{\char"10101}}
+\newcommand*{\aegeancheckmark}{\textsf{\char"10102}}
+\newcommand*{\aegeanone}{\textsf{\char"10107}}
+\newcommand*{\aegeantwo}{\textsf{\char"10108}}
+\newcommand*{\aegeanthree}{\textsf{\char"10109}}
+\newcommand*{\aegeanfour}{\textsf{\char"1010A}}
+\newcommand*{\aegeanfive}{\textsf{\char"1010B}}
+\newcommand*{\aegeansix}{\textsf{\char"1010C}}
+\newcommand*{\aegeanseven}{\textsf{\char"1010D}}
+\newcommand*{\aegeaneight}{\textsf{\char"1010E}}
+\newcommand*{\aegeanine}{\textsf{\char"1010F}}
+\newcommand*{\aegeanten}{\textsf{\char"10110}}
+\newcommand*{\aegeantwenty}{\textsf{\char"10111}}
+\newcommand*{\aegeanthirty}{\textsf{\char"10112}}
+\newcommand*{\aegeanfourty}{\textsf{\char"10113}}
+\newcommand*{\aegeanfifty}{\textsf{\char"10114}}
+\newcommand*{\aegeansixty}{\textsf{\char"10115}}
+\newcommand*{\aegeanseventy}{\textsf{\char"10116}}
+\newcommand*{\aegeaneighty}{\textsf{\char"10117}}
+\newcommand*{\aegeanninety}{\textsf{\char"10118}}
+\newcommand*{\aegeanonehundred}{\textsf{\char"10119}}
+\newcommand*{\aegeantwohundred}{\textsf{\char"1011A}}
+\newcommand*{\aegeanthreehundred}{\textsf{\char"1011B}}
+\newcommand*{\aegeanfourhundred}{\textsf{\char"1011C}}
+\newcommand*{\aegeanfivehundred}{\textsf{\char"1011D}}
+\newcommand*{\aegeansixhundred}{\textsf{\char"1011E}}
+\newcommand*{\aegeansevenhundred}{\textsf{\char"1011F}}
+\newcommand*{\aegeaneighthundred}{\textsf{\char"10120}}
+\newcommand*{\aegeanninehundred}{\textsf{\char"10121}}
+\newcommand*{\aegeanonethousand}{\textsf{\char"10122}}
+\newcommand*{\aegeantwothousand}{\textsf{\char"10123}}
+\newcommand*{\aegeanthreethousand}{\textsf{\char"10124}}
+\newcommand*{\aegeanfourthousand}{\textsf{\char"10125}}
+\newcommand*{\aegeanfivethousand}{\textsf{\char"10126}}
+\newcommand*{\aegeansixthousand}{\textsf{\char"10127}}
+\newcommand*{\aegeanseventhousand}{\textsf{\char"10128}}
+\newcommand*{\aegeaneightthousand}{\textsf{\char"10129}}
+\newcommand*{\aegeanninethousand}{\textsf{\char"1012A}}
+\newcommand*{\aegeantenthousand}{\textsf{\char"1012B}}
+\newcommand*{\aegeantwentythousand}{\textsf{\char"1012C}}
+\newcommand*{\aegeanthirtythousand}{\textsf{\char"1012D}}
+\newcommand*{\aegeanfourtythousand}{\textsf{\char"1012E}}
+\newcommand*{\aegeanfiftythousand}{\textsf{\char"1012F}}
+\newcommand*{\aegeansixtythousand}{\textsf{\char"10130}}
+\newcommand*{\aegeanseventythousand}{\textsf{\char"10131}}
+\newcommand*{\aegeaneightythousand}{\textsf{\char"10132}}
+\newcommand*{\aegeanninetythousand}{\textsf{\char"10133}}
+\newcommand*{\aegeanweightbaseunit}{\textsf{\char"10137}}
+\newcommand*{\aegeanweightfirstsubunit}{\textsf{\char"10138}}
+\newcommand*{\aegeanweightsecondsubunit}{\textsf{\char"10139}}
+\newcommand*{\aegeanweightthirdsubunit}{\textsf{\char"1013A}}
+\newcommand*{\aegeanweightfourthsubunit}{\textsf{\char"1013B}}
+\newcommand*{\aegeandrymeasurefirstsubunit}{\textsf{\char"1013C}}
+\newcommand*{\aegeanliquidmeasurefirstsubunit}{\textsf{\char"1013D}}
+\newcommand*{\aegeansecondsubunit}{\textsf{\char"1013E}}
+\newcommand*{\aegeanthirdsubunit}{\textsf{\char"1013F}}
+%%%%%%%%%%%%%%%% End Aegean Numbers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
\endinput
diff --git a/macros/unicodetex/latex/fontsetup/tex/fspolddefault.tex b/macros/unicodetex/latex/fontsetup/tex/fspolddefault.tex
index 2885870686..48f3bd948a 100644
--- a/macros/unicodetex/latex/fontsetup/tex/fspolddefault.tex
+++ b/macros/unicodetex/latex/fontsetup/tex/fspolddefault.tex
@@ -528,3 +528,65 @@ SmallCapsFeatures={Numbers=OldStyle}]{NewCMMono10-Regular.otf}
% \Umathcode \count255 7 \symoperators \count255\fi
% \repeat
%%%%%%%%%%%%%%% End Devanagari Variables block %%%%%%%%
+
+
+%%%%%%%%%% Begin Aegean Numbers #######################
+\newcommand*{\aegeanseparator}{\textsf{\char"10100}}
+\newcommand*{\aegeanseparatordot}{\textsf{\char"10101}}
+\newcommand*{\aegeancheckmark}{\textsf{\char"10102}}
+\newcommand*{\aegeanone}{\textsf{\char"10107}}
+\newcommand*{\aegeantwo}{\textsf{\char"10108}}
+\newcommand*{\aegeanthree}{\textsf{\char"10109}}
+\newcommand*{\aegeanfour}{\textsf{\char"1010A}}
+\newcommand*{\aegeanfive}{\textsf{\char"1010B}}
+\newcommand*{\aegeansix}{\textsf{\char"1010C}}
+\newcommand*{\aegeanseven}{\textsf{\char"1010D}}
+\newcommand*{\aegeaneight}{\textsf{\char"1010E}}
+\newcommand*{\aegeanine}{\textsf{\char"1010F}}
+\newcommand*{\aegeanten}{\textsf{\char"10110}}
+\newcommand*{\aegeantwenty}{\textsf{\char"10111}}
+\newcommand*{\aegeanthirty}{\textsf{\char"10112}}
+\newcommand*{\aegeanfourty}{\textsf{\char"10113}}
+\newcommand*{\aegeanfifty}{\textsf{\char"101114}}
+\newcommand*{\aegeansixty}{\textsf{\char"10115}}
+\newcommand*{\aegeanseventy}{\textsf{\char"10116}}
+\newcommand*{\aegeaneighty}{\textsf{\char"10117}}
+\newcommand*{\aegeanninety}{\textsf{\char"10118}}
+\newcommand*{\aegeanonehundred}{\textsf{\char"10119}}
+\newcommand*{\aegeantwohundred}{\textsf{\char"1011A}}
+\newcommand*{\aegeanthreehundred}{\textsf{\char"1011B}}
+\newcommand*{\aegeanfourhundred}{\textsf{\char"1011C}}
+\newcommand*{\aegeanfivehundred}{\textsf{\char"1011D}}
+\newcommand*{\aegeansixhundred}{\textsf{\char"1011E}}
+\newcommand*{\aegeansevenhundred}{\textsf{\char"1011F}}
+\newcommand*{\aegeaneighthundred}{\textsf{\char"10120}}
+\newcommand*{\aegeanninehundred}{\textsf{\char"10121}}
+\newcommand*{\aegeanonethousand}{\textsf{\char"10122}}
+\newcommand*{\aegeantwothousand}{\textsf{\char"10123}}
+\newcommand*{\aegeanthreethousand}{\textsf{\char"10124}}
+\newcommand*{\aegeanfourthousand}{\textsf{\char"10125}}
+\newcommand*{\aegeanfivethousand}{\textsf{\char"10126}}
+\newcommand*{\aegeansixthousand}{\textsf{\char"10127}}
+\newcommand*{\aegeanseventhousand}{\textsf{\char"10128}}
+\newcommand*{\aegeaneightthousand}{\textsf{\char"10129}}
+\newcommand*{\aegeanninethousand}{\textsf{\char"1012A}}
+\newcommand*{\aegeantenthousand}{\textsf{\char"1012B}}
+\newcommand*{\aegeantwentythousand}{\textsf{\char"1012C}}
+\newcommand*{\aegeanthirtythousand}{\textsf{\char"1012D}}
+\newcommand*{\aegeanfourtythousand}{\textsf{\char"1012E}}
+\newcommand*{\aegeanfiftythousand}{\textsf{\char"1012F}}
+\newcommand*{\aegeansixtythousand}{\textsf{\char"10130}}
+\newcommand*{\aegeanseventythousand}{\textsf{\char"10131}}
+\newcommand*{\aegeaneightythousand}{\textsf{\char"10132}}
+\newcommand*{\aegeanninetythousand}{\textsf{\char"10133}}
+\newcommand*{\aegeanweightbaseunit}{\textsf{\char"10137}}
+\newcommand*{\aegeanweightfirstsubunit}{\textsf{\char"10138}}
+\newcommand*{\aegeanweightsecondsubunit}{\textsf{\char"10139}}
+\newcommand*{\aegeanweightthirdsubunit}{\textsf{\char"1013A}}
+\newcommand*{\aegeanweightfourthsubunit}{\textsf{\char"1013B}}
+\newcommand*{\aegeandrymeasurefirstsubunit}{\textsf{\char"1013C}}
+\newcommand*{\aegeanliquidmeasurefirstsubunit}{\textsf{\char"1013D}}
+\newcommand*{\aegeansecondsubunit}{\textsf{\char"1013E}}
+\newcommand*{\aegeanthirdsubunit}{\textsf{\char"1013F}}
+%%%%%%%%%%%%%%%% End Aegean Numbers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+