From 1748d1e662c9618cc16f80d5e67669e9e9d6d4be Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Fri, 12 Jan 2024 03:01:12 +0000
Subject: CTAN sync 202401120301

---
 macros/latex/contrib/lwarp/lwarp.dtx | 966 ++++++++++++++++++++++++++++-------
 1 file changed, 780 insertions(+), 186 deletions(-)

(limited to 'macros/latex/contrib/lwarp/lwarp.dtx')

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
-- 
cgit v1.2.3

