From 07dc96bc3bbd691fc52aca15a172eaf41a89d873 Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Tue, 25 May 2021 03:01:10 +0000
Subject: CTAN sync 202105250301

---
 macros/latex/contrib/lwarp/lwarp.dtx | 990 +++++++++++++++++++++++++++--------
 1 file changed, 780 insertions(+), 210 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 bcd587f552..b326554a47 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>    [2021/04/08 v0.896  Allows LaTeX to directly produce HTML5 output.]
+%<package>    [2021/05/24 v0.897  Allows LaTeX to directly produce HTML5 output.]
 %
 %<*driver>
 \documentclass{ltxdoc}
@@ -1696,7 +1696,29 @@ It is recommended to use \pkg{cleveref} instead of \pkg{ntheorem}'s
 }
 
 \newcommand{\limitsgraphics}{%
-\limitsincludegraphicsscale
+Per \cref{tab:includegraphicsfilenames},
+image filenames may be specified either with or without an extension.
+\trouble[case sensitive]{image>not displayed}
+\trouble{image>extension case}
+\trouble{filename>image extension}
+\gindex{image>file names}
+\gindex{graphics>file names}
+\gindex{includegraphics=\cs{includegraphics}>file names}
+\gindex{filename>graphics}
+\gindex{filename>images}
+If an extension is given it will be used as-is, for either print or \HTML\ output.
+If no extension is given, a list of possible extensions is tried, which depends
+on whether print or \HTML\ is being generated.  This allows a \PDF\ file for
+print and a \SVG\ file for \HTML, for example.
+If no extension is given, the automatic search will only return lowercase extensions,
+even if the filename actually has an uppercase extension, and \pkg{lwarp} cannot
+get around this problem, so image file extensions must be lowercase
+to be seen by the \HTML\ browser with \pkg{lwarp}.
+For example, name the image file \filenm{image.pdf} instead of \filenm{image.PDF},
+but refer to it in the source as \filenm{image}, without an extension.
+For images which may be used as-is with either print or \HTML, such as \JPG\ or \PNG,
+you may use a capitalized extension if it is specified in the source, such as
+\filenm{image.JPG}.
 
 For \cs{includegraphics} with \filenm{.pdf} or \filenm{.eps} files,
 \gindex{graphics>file formats}
@@ -1805,6 +1827,8 @@ Likewise, the \cs{includegraphics} \optn{alt} key adds an \HTML\ \attribute{alt}
 an image, and is ignored for print output.  If not assigned, each
 image is given an \attribute{alt} tag according to \cs{ImageAltText}.
 
+\limitsincludegraphicsscale
+
 \cs{rotatebox} accepts the optional \optn{origin} key.
 \margintag{\cs{rotatebox}}
 
@@ -2807,6 +2831,14 @@ a virtual 6-inch wide minipage, which then corrupts the \optn{lw} option.)
 }
 
 \newcommand{\limitssiunitx}{%
+\pkg{sunitx} v3 is not yet supported.  For now, specify version 2:
+\trouble[v3 not yet!]{siunitx=\pkg{siunitx}>v3}
+\begin{sourcedisplay}
+\cs{usepackage}\{siunitx\}\textred{[=v2]}
+\end{sourcedisplay}
+This may be also be necessary before loading other packages which also use \pkg{siunitx},
+such as \pkg{chemmacros}.
+
 Due to \prog{pdftotext} limitations, fraction output is replaced by symbol
 \margintag{fractions}
 output for \optn{per-mode} and \optn{quotient-mode}.
@@ -2969,6 +3001,11 @@ it will be necessary to move the todo outside of the caption.
 External layouts (\cs{fxloadlayouts}) are not supported.
 \trouble[external layouts]{fixme=\pkg{fixme}}
 
+Customized layouts are overwritten by \pkg{lwarp}'s versions \cs{AtBeginDocument}
+in order to provide the \HTML\ conversion.  If creating a new layout, see
+\pkg{lwarp}'s changes to provide similar for the new layout,
+inside a \env{warpHTML} environment.
+
 User control is provided for setting the \HTML\ styling of the ``faces''.
 The defaults are as follows, and may be changed in the preamble after
 \pkg{fixme} is loaded:
@@ -3061,7 +3098,7 @@ This boolean may be tested by the user for later use.
 %<*package>
 % \fi
 %
-% \CheckSum{54091}
+% \CheckSum{54242}
 %
 % \CharacterTable
 % {Upper-case     \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -3199,6 +3236,7 @@ This boolean may be tested by the user for later use.
 % \changes{v0.894}{2020/12/24}{\ 2020/12/24}
 % \changes{v0.895}{2021/02/18}{\ 2021/02/18}
 % \changes{v0.896}{2021/04/08}{\ 2021/04/08}
+% \changes{v0.897}{2021/05/24}{\ 2021/05/24}
 
 
 
@@ -3422,6 +3460,22 @@ This boolean may be tested by the user for later use.
 %
 % \begin{description}
 % \needspace{2\baselineskip}
+% \item[v0.897:] \pkg{siunitx} rollback.
+%   \begin{itemize}
+%       \item Added a table of file extensions to use with \cs{includegraphics}.
+%           See \cref{tab:includegraphicsfilenames}.
+%           \margintag{docs}
+%       \item Added tests for additional incompatible packages.
+%           \margintag{core}
+%       \item \pkg{siunitx}: Supports rollback to v2.  Does not yet support v3.
+%       \margintag{packages}
+%       \item \pkg{fixme}: Improved to work if the user modifies layouts.
+%       \item \pkg{float}: Improved integration with \pkg{newfloat}, \pkg{keyfloat}.
+%       \item Added \pkg{centerlastline}, \pkg{decorule}, \pkg{fancypar},
+%           \pkg{froufrou}, \pkg{pbalance}.
+%       \item Verified works as-is with \pkg{fnpct}.
+%   \end{itemize}
+% \needspace{2\baselineskip}
 % \item[v0.896:] Back references, accessibility.
 %   \begin{itemize}
 %       \item \textred{Due to changes in cross referencing, \watchout
@@ -5579,9 +5633,10 @@ This boolean may be tested by the user for later use.
 % \midrule
 %
 % Page layout: & \ipkg{2in1}, \ipkg{2up}, \ipkg{a4}, \ipkg{a4wide}, \ipkg{a5comb},
-%       \ipkg{addlines}, \ipkg{anysize}, \mpkg{atbegshi},
-%       \ipkg{blowup},  \ipkg{booklet},  \ipkg{bophook}, \ipkg{bounddvi}, \ipkg{bxpapersize},
-%       \ipkg{canoniclayout}, \mpkg{changelayout},
+%       \ipkg{addlines}, \ipkg{anysize}, \mpkg{atbegshi}, \ipkg{balance},
+%       \ipkg{blowup},  \ipkg{booklet},  \ipkg{bophook}, \ipkg{bounddvi},
+%       \ipkg{bxpapersize},
+%       \ipkg{canoniclayout}, \ipkg{centerlastline}, \mpkg{changelayout},
 %       \epkg{changepage}, \ipkg{chngpage}, \ipkg{clrdblpg},
 %       \ipkg{continue}, \ipkg{draftcopy}, \ipkg{draftfigure}, \ipkg{draftwatermark},
 %       \ipkg{ebook}, \ipkg{everyshi},
@@ -5592,6 +5647,7 @@ This boolean may be tested by the user for later use.
 %       \ipkg{layaureo}, \ipkg{layout}, \ipkg{layouts}, \ipkg{leading}, \ipkg{lscape},
 %       \ipkg{ltxgrid}, \ipkg{nccfancyhdr}, \ipkg{notespages}, \ipkg{nowidow},
 %       \ipkg{pagegrid}, \ipkg{pagesel}, \epkg{parallel}, \epkg{parcolumns},
+%       \ipkg{pbalance},
 %       \ipkg{pdfcolparallel}, \ipkg{pdfcolparcolumns}, \ipkg{pdfcrypt},
 %       \ipkg{pdflscape}, \ipkg{pdfprivacy},
 %       \ipkg{preview}, \epkg{ragged2e}, \ipkg{returntogrid}, \ipkg{rmpage},
@@ -5608,7 +5664,8 @@ This boolean may be tested by the user for later use.
 % Sectioning: & Adds \progcode{FileDepth} for splitting the \HTML\ output.
 % 	Files may be numbered sequentially or named according to section name.
 % 	Common short words and punctuation are removed from the filenames. 
-%   \epkg{anonchap}, \ipkg{bsheaders}, \ipkg{fncychap}, \epkg{hypbmsec},
+%   \epkg{anonchap}, \ipkg{bsheaders}, \mpkg{decorule}, \ipkg{fncychap},
+%   \mpkg{froufrou}, \epkg{hypbmsec},
 %   \epkg{indentfirst}, \epkg{quotchap},
 %	\ipkg{section}, \mpkg{sectionbreak}, \spkg{secdot}, \ipkg{sectsty},
 %   \ipkg{titlesec}, \spkg{tocvsec2}.
@@ -5662,7 +5719,7 @@ This boolean may be tested by the user for later use.
 %   \brand{MathJax} emulation for \cs{footnote}, and also as marked in the following:
 %   \epkg{bigfoot}, \ipkg{dblfnote},
 %   \ipkg{endheads}, \mpkg{endnotes}\ejax, \mpkg{enotez}\ejax, \spkg{fixfoot},
-%   \ipkg{fnbreak}, \ipkg{fnpara}, \ipkg{fnpos},
+%   \ipkg{fnbreak}, \ipkg{fnpara}, \spkg{fnpct}, \ipkg{fnpos},
 %   \epkg{footmisc}, \mpkg{footnote}, \ipkg{footnotebackref},
 %   \mpkg{footnoterange}, \ipkg{footnpag}, \epkg{manyfoot},
 %	\epkg{marginnote}\ejax, \spkg{nccfoots}\ejax, \spkg{pagenote}\ejax,
@@ -5794,8 +5851,9 @@ This boolean may be tested by the user for later use.
 %
 % Environments: & Standard \LaTeX{} environments. \\
 %
-% \env{minipage}, \cs{parbox}: & Some \HTMLfive-imposed limitations.
-%	Nested minipages are supported. \mpkg{eqparbox}, \mpkg{minibox}, \epkg{pbox},
+% Paragraphs, \env{minipage}, \cs{parbox}: & Some \HTMLfive-imposed limitations.
+%	Nested minipages are supported. \mpkg{eqparbox}, \mpkg{fancypar},
+%   \mpkg{minibox}, \epkg{pbox},
 %   \ipkg{shapepar}. \\
 %
 % Quotations: & \epkg{copyrightbox}, \spkg{csquotes}, \epkg{epigraph},
@@ -10439,6 +10497,34 @@ This boolean may be tested by the user for later use.
 %
 % \DescribePackage{graphics}%
 % \DescribePackage{graphicx}%
+%
+% \begin{table}
+% \caption{\cs{includegraphics} and file names}
+% \label{tab:includegraphicsfilenames}
+% \begin{center}
+% \begin{threeparttable}
+% \begin{tabular}{ccl}
+% \toprule
+% Print image file & \HTML\ image file & Command to use \\
+% \midrule
+% \filenm{image.pdf}\tnote{a} & \filenm{image.svg}\tnote{a} & |\includegraphics{image}| \\
+% \filenm{image.eps}\tnote{a} & \filenm{image.svg}\tnote{a} & |\includegraphics{image}| \\
+% \filenm{image.jpg} & ---\tnote{b} & |\includegraphics{image}| \\
+% \filenm{image.png} & ---\tnote{b} & |\includegraphics{image}| \\
+% \filenm{image.JPG} & ---\tnote{b} & |\includegraphics{image.JPG}|\tnote{c} \\
+% \filenm{image.PNG} & ---\tnote{b} & |\includegraphics{image.PNG}|\tnote{c} \\
+% \filenm{image.jpg} & \filenm{image.gif} & |\includegraphics{image}| \\
+% \bottomrule
+% \end{tabular}
+% \begin{tablenotes}
+% \item[a:] Must be a lowercase file extension.
+% \item[b:] The same file is used for print and \HTML.
+% \item[c:] The uppercase extension must be specified.
+% \end{tablenotes}
+% \end{threeparttable}
+% \end{center}
+% \end{table}
+%
 % \limitsgraphics
 %
 %
@@ -12698,16 +12784,16 @@ This boolean may be tested by the user for later use.
 
 
 % \begin{macro}{\LWR@checkloadbefore}
-%   \marg{thispackagename} \marg{packagename}
+%   \marg{packagename}
 %
-% If package names match, error if it is loaded after \pkg{lwarp}.
+% Given \cs{LWR@tempone} is the package name to compare to,
+% if package names match, error if it is loaded after \pkg{lwarp}.
 %
 % \changes{v0.63}{2018/12/02}{Added.}
 %
 %    \begin{macrocode}
-\newcommand*{\LWR@checkloadbefore}[2]{%
-    \edef\LWR@tempone{#1}%
-    \ifdefstring{\LWR@tempone}{#2}{%
+\newcommand*{\LWR@checkloadbefore}[1]{%
+    \ifdefstring{\LWR@tempone}{#1}{%
         \LWR@loadbefore{#1}%
     }{}%
 }
@@ -12718,41 +12804,51 @@ This boolean may be tested by the user for later use.
 % \begin{macro}{\LWR@loadnever} \marg{badpackagename} \marg{replacementpkgnames}
 %
 % The first packages is not supported, so tell the user to use the second instead.
+% Factored from \cs{LWR@checkloadnever} and \cs{LWR@earlyloadnever}.
 %
 % \changes{v0.25}{2017/03/16}{Added the ability to prevent conflicting packages.}
+% \changes{v0.897}{2021/05/08}{Replacements now optional.}
 %
 %    \begin{macrocode}
 \newcommand*{\LWR@loadnever}[2]{%
 \PackageError{lwarp}
 {%
-    Package #1 is not supported\MessageBreak
-    by lwarp's HTML conversion.\MessageBreak
-    Package(s)\MessageBreak
-    \space\space#2\MessageBreak
-    may be useful instead%
+    Package #1 is not yet supported\MessageBreak
+    by lwarp's HTML conversion%
+    \ifblank{#2}{}{%
+        .\MessageBreak
+        Package(s)\MessageBreak
+        \space\space#2\MessageBreak
+        may be useful instead%
+    }%
 }
 {%
     Package #1 might conflict with lwarp in some way,\MessageBreak
-    or is superceded by another package.\MessageBreak
-    For a possible alternative, see package(s) #2.
+    or is superceded by another package.%
+    \ifblank{#2}{}{%
+        \MessageBreak
+        For possible alternatives, see package(s) #2.%
+    }%
 }
 }
 %    \end{macrocode}
 % \end{macro}
 %
 %
-% \begin{macro}{\LWR@checkloadnever}
-%       \marg{thispackagename} \marg{badpackagename} \marg{replacementpkgnames}
 %
-% If this package name is the bad packagename, suggest the replacements instead.
+% \begin{macro}{\LWR@afterloadnever}
+%       \marg{badpackagename} \marg{replacementpkgnames}
+%
+% Given: \cs{LWR@tempone} is set to the package name being tested against,
+% if this package name is the bad packagename, suggest the replacements instead.
+% This is used when loading packages after \pkg{lwarp}.
 %
-% \changes{v0.63}{2018/12/01}{Added.}
+% \changes{v0.897}{2021/05/08}{Refactored.}
 %
 %    \begin{macrocode}
-\newcommand*{\LWR@checkloadnever}[3]{%
-    \edef\LWR@tempone{#1}%
-    \ifdefstring{\LWR@tempone}{#2}{%
-        \LWR@loadnever{#2}{#3}%
+\newcommand*{\LWR@afterloadnever}[2]{%
+    \ifdefstring{\LWR@tempone}{#1}{%
+        \LWR@loadnever{#1}{#2}%
     }{}%
 }
 %    \end{macrocode}
@@ -12762,10 +12858,10 @@ This boolean may be tested by the user for later use.
 % \begin{macro}{\LWR@earlyloadnever} \marg{badpackagename} \marg{replacementpkgname}
 %
 % The first package is not supported, so tell the user to use the second instead.
-% This version checks immediately for packages which may have been loaded before \pkg{lwarp}.
+% This version checks immediately for packages which
+% may have been loaded before \pkg{lwarp}.
 %
-% \changes{v0.54}{2018/04/06}{Added.}
-% \changes{v0.79}{2020/01/09}{Factored.}
+% \changes{v0.897}{2021/05/08}{Refactored.}
 %
 %    \begin{macrocode}
 \newcommand*{\LWR@earlyloadnever}[2]{%
@@ -12783,6 +12879,7 @@ This boolean may be tested by the user for later use.
 % This version checks immediately for classes which may have been loaded before \pkg{lwarp}.
 %
 % \changes{v0.63}{2018/11/25}{Added.}
+% \changes{v0.897}{2021/05/08}{Replacements now optional.}
 %
 %    \begin{macrocode}
 \newcommand*{\LWR@earlyclassloadnever}[2]{%
@@ -12790,13 +12887,19 @@ This boolean may be tested by the user for later use.
 \PackageError{lwarp}
 {%
     Class #1 is not supported\MessageBreak
-    by lwarp's HTML conversion.\MessageBreak
-    Class(es) #2 may be useful instead
+    by lwarp's HTML conversion%
+    \ifblank{#2}{}{%
+        .\MessageBreak
+        Class(es) #2 may be useful instead%
+    }%
 }
 {%
     Class #1 might conflict with lwarp in some way,\MessageBreak
-    or is superceded by another class.\MessageBreak
-    For a possible alternative, see class(es) #2.
+    or is superceded by another class.%
+    \ifblank{#2}{}{%
+        \MessageBreak
+        For a possible alternative, see class(es) #2.%
+    }%
 }
 }{\relax}%
 }
@@ -12805,6 +12908,7 @@ This boolean may be tested by the user for later use.
 %
 %
 % \subsection{Error for disallowed packages and classes loaded before lwarp}
+%
 % \changes{v0.54}{2018/04/06}{Added early check for disallowed packages.}
 % \changes{v0.54}{2018/09/26}{Never load \pkg{aecompl}.}
 % \changes{v0.62}{2018/11/18}{Added early checks for \pkg{CJK}, \pkg{CJKutf8}.}
@@ -12820,60 +12924,188 @@ This boolean may be tested by the user for later use.
 % \changes{v0.893}{2020/11/15}{Allowed \pkg{picinpar}.}
 % \changes{v0.895}{2021/01/19}{Allowed \pkg{epsf}.}
 %
+%
+% \begin{macro}{\LWR@checkloadnevers}
+% Checks against a list of incompatible packages.
+%
+% \changes{v0.897}{2021/05/08}{Refactored.}
+%
 %  ^^A *earlyloadnever *loadnever
 %    \begin{macrocode}
-\LWR@earlyclassloadnever{jarticle}{ujarticle}
-\LWR@earlyclassloadnever{jbook}{ujbook}
-\LWR@earlyclassloadnever{jreport}{ujreport}
-\LWR@earlyclassloadnever{tarticle}{utarticle}
-\LWR@earlyclassloadnever{tbook}{utbook}
-\LWR@earlyclassloadnever{treport}{utreport}
-\LWR@earlyloadnever{ae}{cm-super, lmodern}
-\LWR@earlyloadnever{aecompl}{cm-super, lmodern}
-\LWR@earlyloadnever{aecc}{cm-super, lmodern}
-\LWR@earlyloadnever{alg}{algorithm2e, algorithmicx}
-\LWR@earlyloadnever{algorithmic}{algorithm2e, algorithmicx}
-\LWR@earlyloadnever{bitfield}{bytefield}
-\LWR@earlyloadnever{caption2}{caption}
-% \LWR@earlyloadnever{ccaption}{caption}% might be preloaded by memoir
-\LWR@earlyloadnever{colortab}{colortbl}
-\LWR@earlyloadnever{csvtools}{datatool}
-\LWR@earlyloadnever{doublespace}{setspace}
-\LWR@earlyloadnever{fancyheadings}{fancyhdr}
-\LWR@earlyloadnever{fncylab}{cleveref}
-\LWR@earlyloadnever{formula}{siunitx}
-\LWR@earlyloadnever{glossary}{glossaries}
-\LWR@earlyloadnever{hyper}{hyperref}
-\LWR@earlyloadnever{libgreek}{libertinust1math, newtx}
-\LWR@earlyloadnever{newthm}{ntheorem}
-\LWR@earlyloadnever{pdfcprot}{microtype}
-\LWR@earlyloadnever{picins}{floatflt, wrapfig}
-\LWR@earlyloadnever{rplain}{fancyhdr}
-\LWR@earlyloadnever{si}{siunitx}
-\LWR@earlyloadnever{sistyle}{siunitx}
-\LWR@earlyloadnever{slashbox}{diagbox}
-\LWR@earlyloadnever{statex}{statex2}
-\LWR@earlyloadnever{t1enc}{fontenc, inputenc, inputenx}
-\LWR@earlyloadnever{ucs}{inputenc, inputencx}
-\LWR@earlyloadnever{wasysym}{textcomp, amssymb, amsfonts, mnsymbol, fdsymbol}
+\newcommand*{\LWR@checkloadnevers}{
+\LWR@checkloadnever{ae}{cm-super, lmodern}
+\LWR@checkloadnever{aecompl}{cm-super, lmodern}
+\LWR@checkloadnever{aecc}{cm-super, lmodern}
+\LWR@checkloadnever{alg}{algorithm2e, algorithmicx}
+\LWR@checkloadnever{algorithmic}{algorithm2e, algorithmicx}
+\LWR@checkloadnever{bitfield}{bytefield}
 %    \end{macrocode}
-% The older \pkg{CJK} and \pkg{CJKutf8} only work with \pkg{xeCJK}:
+% \pkg{bxcjkatype} is based on \pkg{CJK}:
 %    \begin{macrocode}
-\@ifpackageloaded{xeCJK}{}{
-    \LWR@earlyloadnever{CJK}{ctex, xeCJK}
-    \LWR@earlyloadnever{CJKutf8}{ctex, xeCJK}
-}
+\LWR@checkloadnever{bxcjkjatype}{upLaTeX, bxjsarticle, ujarticle, utarticle}
 %    \end{macrocode}
-% \pkg{bxcjkatype} is based on \pkg{CJK}:
 %    \begin{macrocode}
-\LWR@earlyloadnever{bxcjkjatype}{upLaTeX, bxjsarticle, ujarticle, utarticle}
+\LWR@checkloadnever{caption2}{caption}
+% \LWR@checkloadnever{ccaption}{caption}% might be preloaded by memoir
+\LWR@checkloadnever{colortab}{colortbl}
+\LWR@checkloadnever{csvtools}{datatool}
+\LWR@checkloadnever{doublespace}{setspace}
+\LWR@checkloadnever{fancyheadings}{fancyhdr}
+\LWR@checkloadnever{fncylab}{cleveref}
+\LWR@checkloadnever{formula}{siunitx}
+\LWR@checkloadnever{glossary}{glossaries}
 %    \end{macrocode}
 % \pkg{hangul} is not in TeXLive, and is not tested:
 %    \begin{macrocode}
-\LWR@earlyloadnever{hangul}{kotex, xetexko, luatexko}
+\LWR@checkloadnever{hangul}{kotex, xetexko, luatexko}
+%    \end{macrocode}
+%    \begin{macrocode}
+\LWR@checkloadnever{hyper}{hyperref}
+\LWR@checkloadnever{libgreek}{libertinust1math, newtx}
+\LWR@checkloadnever{newthm}{ntheorem}
+\LWR@checkloadnever{pdfcprot}{microtype}
+\LWR@checkloadnever{picins}{floatflt, wrapfig}
+\LWR@checkloadnever{rplain}{fancyhdr}
+\LWR@checkloadnever{si}{siunitx}
+\LWR@checkloadnever{sistyle}{siunitx}
+\LWR@checkloadnever{slashbox}{diagbox}
+\LWR@checkloadnever{statex}{statex2}
+\LWR@checkloadnever{t1enc}{fontenc, inputenc, inputenx}
+\LWR@checkloadnever{ucs}{inputenc, inputencx}
+\LWR@checkloadnever{wasysym}{textcomp, amssymb, amsfonts, mnsymbol, fdsymbol}
+%    \end{macrocode}
+%
+% The following may one day be supported by lwarp:
+%
+% ^^A *notyet
+%    \begin{macrocode}
+% \LWR@checkloadnever{adjustbox}{}% req'd for menukeys
+\LWR@checkloadnever{animate}{}
+\LWR@checkloadnever{auto-pst-pdf}{}
+\LWR@checkloadnever{auto-pst-pdf-lua}{}
+\LWR@checkloadnever{algorithms}{}
+\LWR@checkloadnever{arraycols}{}
+\LWR@checkloadnever{beamer}{}
+\LWR@checkloadnever{bidi}{}
+\LWR@checkloadnever{cals}{}
+\LWR@checkloadnever{cellspace}{}
+\LWR@checkloadnever{cgloss4e}{}
+\LWR@checkloadnever{colophon}{}
+\LWR@checkloadnever{cooltooltips}{}
+\LWR@checkloadnever{covington}{}
+\LWR@checkloadnever{crbox}{}
+\LWR@checkloadnever{decision-table}{}
+\LWR@checkloadnever{dvgloss}{}
+\LWR@checkloadnever{ednotes}{}
+\LWR@checkloadnever{edfnotes}{}
+\LWR@checkloadnever{eledform}{}
+\LWR@checkloadnever{eledmac}{}
+\LWR@checkloadnever{embedfile}{}
+\LWR@checkloadnever{endnotes-hy}{endnotes}
+\LWR@checkloadnever{expex}{}
+\LWR@checkloadnever{fancytooltips}{}
+\LWR@checkloadnever{fixocgx}{}
+\LWR@checkloadnever{flowfram}{}
+\LWR@checkloadnever{gb4e}{}
+\LWR@checkloadnever{gmverse}{}
+\LWR@checkloadnever{graphbox}{}
+\LWR@checkloadnever{graphicxbox}{}
+\LWR@checkloadnever{hvfloat}{}
+\LWR@checkloadnever{inline-images}{}
+\LWR@checkloadnever{isorot}{rotating}
+\LWR@checkloadnever{ledmac}{}
+\LWR@checkloadnever{linguex}{}
+\LWR@checkloadnever{longdiv}{}
+\LWR@checkloadnever{longfigure}{}
+\LWR@checkloadnever{longtabu}{}
+\LWR@checkloadnever{mdwenv}{}
+\LWR@checkloadnever{mdwlist}{}
+\LWR@checkloadnever{mdwtab}{}
+\LWR@checkloadnever{navigator}{}
+\LWR@checkloadnever{nccpic}{}
+\LWR@checkloadnever{nccsect}{}
+\LWR@checkloadnever{newvbtm}{}
+\LWR@checkloadnever{ocg-p}{}
+\LWR@checkloadnever{ocgtools}{}
+\LWR@checkloadnever{ocgx}{}
+\LWR@checkloadnever{ocgx2}{}
+\LWR@checkloadnever{parrun}{}
+\LWR@checkloadnever{poemscol}{}
+\LWR@checkloadnever{poetry}{}
+\LWR@checkloadnever{program}{}
+\LWR@checkloadnever{proofread}{}
+\LWR@checkloadnever{pst-pdf}{}
+\LWR@checkloadnever{refstyle}{}
+\LWR@checkloadnever{robustindex}{}
+\LWR@checkloadnever{robustglossary}{}
+\LWR@checkloadnever{semioneside}{}
+\LWR@checkloadnever{slemph}{}
+\LWR@checkloadnever{snotez}{sidenotes}
+\LWR@checkloadnever{spacingtricks}{}
+\LWR@checkloadnever{sverb}{verbatim, fancyvrb}
+\LWR@checkloadnever{syntax}{}
+\LWR@checkloadnever{tablists}{}
+\LWR@checkloadnever{tabto}{}
+\LWR@checkloadnever{tabu}{}
+\LWR@checkloadnever{tabularht}{}
+\LWR@checkloadnever{tabularkv}{}
+\LWR@checkloadnever{thumby}{}
+\LWR@checkloadnever{titles}{}
+\LWR@checkloadnever{typehtml}{}
+\LWR@checkloadnever{unicode-bidi}{}
+\LWR@checkloadnever{vcell}{}
+\LWR@checkloadnever{xhfill}{}
+}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\LWR@checkloadnever} \marg{badpackagename} \marg{replacementpkgname}
+%
+% The first package is not supported, so tell the user to use the second instead.
+%
+% When \pkg{lwarp} is first loaded, this is set to \cs{LWR@earlyloadnever}
+% to check for incompatible packages which were loaded before \pkg{lwarp}.
+% After \pkg{lwarp} is loaded, this is changed to \cs{LWR@afterloadnever} to
+% check for incompatible packages during \cs{usepackage}.
+%
+% \changes{v0.897}{2021/05/08}{Refactored.}
+%
+%    \begin{macrocode}
+\LetLtxMacro\LWR@checkloadnever\LWR@earlyloadnever
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% Now check for incompatible packages which have been loaded before \pkg{lwarp}:
+%    \begin{macrocode}
+\LWR@checkloadnevers
+%    \end{macrocode}
+%
+%
+% The older \pkg{CJK} and \pkg{CJKutf8} only work with \pkg{xeCJK}:
+%    \begin{macrocode}
+\@ifpackageloaded{xeCJK}{}{
+    \LWR@checkloadnever{CJK}{ctex, xeCJK}
+    \LWR@checkloadnever{CJKutf8}{ctex, xeCJK}
+}
+%    \end{macrocode}
+%
+%
+% Some classes do not work with \pkg{lwarp}:
+%    \begin{macrocode}
+\LWR@earlyclassloadnever{jarticle}{ujarticle}
+\LWR@earlyclassloadnever{jbook}{ujbook}
+\LWR@earlyclassloadnever{jreport}{ujreport}
+\LWR@earlyclassloadnever{tarticle}{utarticle}
+\LWR@earlyclassloadnever{tbook}{utbook}
+\LWR@earlyclassloadnever{treport}{utreport}
+\LWR@earlyclassloadnever{novel}{}
+\LWR@earlyclassloadnever{powerdot}{}
 %    \end{macrocode}
 %
 %
+%
 % \subsection{Enforcing package loading after \pkg{lwarp}}
 %
 % Packages which should only be loaded after \pkg{lwarp} are tested
@@ -12961,6 +13193,7 @@ This boolean may be tested by the user for later use.
 \LWR@loadafter{cases}
 % catoptions is supported by the lwarp core
 % \LWR@loadafter{ccaption}% may be preloaded by memoir
+\LWR@loadafter{centerlastline}
 % \LWR@loadafter{centernot}% may be preloaded by newtx
 \LWR@loadafter{changebar}
 \LWR@loadafter{changelayout}
@@ -12995,6 +13228,7 @@ This boolean may be tested by the user for later use.
 \LWR@loadafter{dblfnote}
 \LWR@notmemoirloadafter{dcolumn}
 \LWR@loadafter{decimal}
+\LWR@loadafter{decorule}
 \LWR@loadafter{diagbox}
 \LWR@loadafter{dingbat}
 \LWR@loadafter{DotArrow}
@@ -13036,6 +13270,7 @@ This boolean may be tested by the user for later use.
 \LWR@loadafter{extramarks}
 \LWR@loadafter{fancybox}
 \LWR@loadafter{fancyhdr}
+\LWR@loadafter{fancypar}
 \LWR@loadafter{fancyref}
 \LWR@loadafter{fancytabs}
 \LWR@loadafter{fancyvrb}
@@ -13076,6 +13311,7 @@ This boolean may be tested by the user for later use.
 \LWR@loadafter{fouridx}
 % fourier may be loaded before lwarp
 \LWR@loadafter{framed}
+\LWR@loadafter{froufrou}
 \LWR@loadafter{ftcap}
 \LWR@loadafter{ftnright}
 \LWR@loadafter{fullminipage}
@@ -13240,6 +13476,7 @@ This boolean may be tested by the user for later use.
 \LWR@loadafter{parcolumns}
 \LWR@loadafter{parnotes}
 \LWR@notmemoirloadafter{parskip}
+\LWR@loadafter{pbalance}
 \LWR@loadafter{pbox}
 \LWR@loadafter{pdfcol}
 \LWR@loadafter{pdfcolfoot}
@@ -13330,6 +13567,7 @@ This boolean may be tested by the user for later use.
 \LWR@loadafter{simplebnf}
 \LWR@loadafter{SIunits}
 \LWR@loadafter{siunitx}
+\LWR@loadafter{siunitx-v2}
 \LWR@loadafter{skmath}
 \LWR@loadafter{slantsc}
 \LWR@loadafter{slashed}
@@ -15514,6 +15752,10 @@ This boolean may be tested by the user for later use.
 % \section{Loading packages}
 %
 %
+% \cs{RequirePackage} and \cs{usepackage} are modified to error-check
+% for certain packages, and for \HTML\ they load the \pkg{lwarp-} version if
+% it exists.
+%
 % \codeall
 %    \begin{macrocode}
 \begin{warpall}
@@ -15566,10 +15808,18 @@ This boolean may be tested by the user for later use.
 }
 %    \end{macrocode}
 % \end{macro}
-% 
-
-
-
+%
+%
+% \begin{macro}{\LWR@checkloadnever} \marg{bad package name} \marg{replacement package names}
+%
+% From now on, check for incompatible packages loaded via \cs{usepackage},
+% instead of packages loaded before \pkg{lwarp}:
+%    \begin{macrocode}
+\LetLtxMacro\LWR@checkloadnever\LWR@afterloadnever
+%    \end{macrocode}
+% \end{macro}
+%
+%
 % \begin{macro}{\LWR@checkloadfilename} \marg{filename}
 % Checks if this filename should be loaded after \pkg{lwarp},
 % or never at all.
@@ -15589,65 +15839,48 @@ This boolean may be tested by the user for later use.
 % \changes{v0.893}{2020/11/15}{Allowed \pkg{picinpar}.}
 % \changes{v0.895}{2021/01/19}{Allowed \pkg{epsf}.}
 
-% The following should never be loaded:
 %
-% ^^A *checkload *loadnever
+% ^^A *checkload
 %    \begin{macrocode}
 \newcommand*{\LWR@checkloadfilename}[1]{%
-\LWR@checkloadnever{#1}{ae}{cm-super, lmodern}
-\LWR@checkloadnever{#1}{aecc}{cm-super, lmodern}
-\LWR@checkloadnever{#1}{aecompl}{cm-super, lmodern}
-\LWR@checkloadnever{#1}{alg}{algorithm2e, algorithmicx}
-\LWR@checkloadnever{#1}{algorithmic}{algorithm2e, algorithmicx}
-\LWR@checkloadnever{#1}{bitfield}{bytefield}
-\LWR@checkloadnever{#1}{caption2}{caption}
-\LWR@checkloadnever{#1}{ccaption}{caption}% might be preloaded by memoir
-\LWR@checkloadnever{#1}{colortab}{colortbl}
-\LWR@checkloadnever{#1}{csvtools}{datatool}
-\LWR@checkloadnever{#1}{doublespace}{setspace}
-\LWR@checkloadnever{#1}{fancyheadings}{fancyhdr}
-\LWR@checkloadnever{#1}{fncylab}{cleveref}
-\LWR@checkloadnever{#1}{formula}{siunitx}
-\LWR@checkloadnever{#1}{glossary}{glossaries}
-\LWR@checkloadnever{#1}{hyper}{hyperref}
-\LWR@checkloadnever{#1}{libgreek}{libertinust1math, newtx}
-\LWR@checkloadnever{#1}{newthm}{ntheorem}
-\LWR@checkloadnever{#1}{pdfcprot}{microtype}
-\LWR@checkloadnever{#1}{picins}{floatflt, wrapfig}
-\LWR@checkloadnever{#1}{rplain}{fancyhdr}
-\LWR@checkloadnever{#1}{si}{siunitx}
-\LWR@checkloadnever{#1}{sistyle}{siunitx}
-\LWR@checkloadnever{#1}{slashbox}{diagbox}
-\LWR@checkloadnever{#1}{statex}{statex2}
-\LWR@checkloadnever{#1}{t1enc}{fontenc, inputenc, inputenx}
-\LWR@checkloadnever{#1}{ucs}{inputenc, inputencx}
-\LWR@checkloadnever{#1}{wasysym}{textcomp, amssymb, amsfonts, mnsymbol, fdsymbol}
-\LWR@checkloadnever{#1}{bxcjkjatype}{upLaTeX, bxjsarticle, ujarticle, utarticle}
-\LWR@checkloadnever{#1}{hangul}{kotex, xetexko, luatexko}
 %    \end{macrocode}
 %
+% Remember the package name to compare with, to be used
+% by \cs{LWR@checkloadnever} and \cs{LWR@checkloadbefore}.
+%    \begin{macrocode}
+    \edef\LWR@tempone{#1}%
+%    \end{macrocode}
+%
+% Check against the list of packages which should never be loaded:
+%
+% \changes{v0.897}{2021/05/08}{Refactored.}
+%    \begin{macrocode}
+    \LWR@checkloadnevers
+%    \end{macrocode}
+%
+%
 % ^^A *loadbefore
 % The following should only be loaded before \pkg{lwarp}:
 % \changes{v0.895}{2021/01/14}{\pkg{kpfonts} load before \pkg{lwarp}.}
 %    \begin{macrocode}
-\LWR@checkloadbefore{#1}{ctex}
-\LWR@checkloadbefore{#1}{fontspec}
-\LWR@checkloadbefore{#1}{inputenc}
-\LWR@checkloadbefore{#1}{inputenx}
-\LWR@checkloadbefore{#1}{nfssext-cfr}
-\LWR@checkloadbefore{#1}{fontaxes}
-\LWR@checkloadbefore{#1}{kotex}
-\LWR@checkloadbefore{#1}{kpfonts}% textcomp option clash
-\LWR@checkloadbefore{#1}{luatexja}
-\LWR@checkloadbefore{#1}{luatexja-fontspec}
-\LWR@checkloadbefore{#1}{luatexko}
-\LWR@checkloadbefore{#1}{morewrites}
-\LWR@checkloadbefore{#1}{newclude}
-\LWR@checkloadbefore{#1}{newunicodechar}
-\LWR@checkloadbefore{#1}{plext}
-\LWR@checkloadbefore{#1}{xeCJK}
-\LWR@checkloadbefore{#1}{xetexko}
-\LWR@checkloadbefore{#1}{zxjatype}
+    \LWR@checkloadbefore{ctex}
+    \LWR@checkloadbefore{fontspec}
+    \LWR@checkloadbefore{inputenc}
+    \LWR@checkloadbefore{inputenx}
+    \LWR@checkloadbefore{nfssext-cfr}
+    \LWR@checkloadbefore{fontaxes}
+    \LWR@checkloadbefore{kotex}
+    \LWR@checkloadbefore{kpfonts}% textcomp option clash
+    \LWR@checkloadbefore{luatexja}
+    \LWR@checkloadbefore{luatexja-fontspec}
+    \LWR@checkloadbefore{luatexko}
+    \LWR@checkloadbefore{morewrites}
+    \LWR@checkloadbefore{newclude}
+    \LWR@checkloadbefore{newunicodechar}
+    \LWR@checkloadbefore{plext}
+    \LWR@checkloadbefore{xeCJK}
+    \LWR@checkloadbefore{xetexko}
+    \LWR@checkloadbefore{zxjatype}
 }
 %    \end{macrocode}
 % \end{macro}
@@ -15772,16 +16005,17 @@ This boolean may be tested by the user for later use.
 % Error if braces are used in optional argument.
 % This can cause an error, so tell how to avoid.
 % \changes{v0.896}{2021/03/14}{Warn if package option has braces.}
+% \changes{v0.897}{2021/05/08}{Fixed warning.}
 %    \begin{macrocode}
 \IfSubStr{\detokenize\expandafter{#1}}{\LWRleftbrace}%
     {%
         \PackageError{lwarp}{%
             You used:\MessageBreak
-            \protect\requirepackage[#1]{#2}\MessageBreak
+            \protect\usepackage[#1]{#2}\MessageBreak
             Braces in the package options will fail with Lwarp.\MessageBreak
             Instead, use:\MessageBreak
             \protect\PassOptionsToPackage{#1}{#2}\MessageBreak
-            \protect\requirepackage{#2}\MessageBreak
+            \protect\usepackage{#2}\MessageBreak
             near the line number given below.\MessageBreak
             Enter 'h' for more info%
         }%
@@ -20280,7 +20514,7 @@ MathJax = {
 -- Copyright 2016-2021 Brian Dunn
 
 
-printversion = "v0.896"
+printversion = "v0.897"
 requiredconfversion = "2" -- also at *lwarpmk.conf
 
 function printhelp ()
@@ -33774,7 +34008,7 @@ end -- not --version
 
 
 
-% \begin{macro}{\LWR@href} \oarg{options} \marg{URL}
+% \begin{macro}{\LWR@href} \oarg{options} \marg{URL} \marg{text}
 %
 % Create a link with accompanying text:
 %
@@ -34741,19 +34975,22 @@ end -- not --version
 % \end{macro}
 
 
-% \subsection{High-level \TOC\ commands}
+% \subsection{\TOC\ commands}
 
 % \label{sec:listof}
-% \begin{macro}{\listof} \marg{type} \marg{title}
+% \begin{macro}{\LWR@listof} \marg{type} \marg{title}
 %
-% Emulate the \cs{listof} command from the \pkg{float} package (\cref{sec:newfloat}).
+% Emulate the \cs{listof} command
+% from the \pkg{float} package (\cref{sec:float}).
 % Used to create lists of custom float types.  Also used to redefine
-% the standard \LaTeX{} \cs{listoffigures} and \cs{listoftables} commands.
+% the standard \LaTeX{} \cs{listoffigures} and \cs{listoftables} commands,
+% and in \pkg{tocloft} and \pkg{memoir}.
 %
 % \changes{v0.57}{2018/05/26}{Fix: Provide \cs{l@name} if not defined.}
 % \changes{v0.61}{2018/09/26}{Fix: \pkg{newfloat} lists.}
+% \changes{v0.897}{2021/05/18}{Improved compatibility with \pkg{newfloat}, \pkg{keyfloat}.}
 %    \begin{macrocode}
-\NewDocumentCommand{\listof}{m +m}{%
+\NewDocumentCommand{\LWR@listof}{m +m}{%
     \@ifundefined{l@#1}{%
         \csdef{l@#1}##1##2{\hypertocfloat{1}{#1}{\@nameuse{ext@#1}}{##1}{##2}}%
     }{}%
@@ -38876,6 +39113,7 @@ end -- not --version
 
 % Options for siunitx:
 % \changes{v0.50}{2018/02/24}{\pkg{siunitx}: Improved units.}
+% \changes{v0.897}{2021/05/23}{\pkg{siunitx}: Rollback for v2.}
 %    \begin{macrocode}
 \newrobustcmd{\LWR@siunitx@textcelsius}{\HTMLentity{deg}C}
 \newrobustcmd{\LWR@siunitx@textdegree}{\HTMLentity{deg}}
@@ -38898,7 +39136,7 @@ end -- not --version
     text-degree = {\LWR@siunitx@textdegree},
     text-arcminute = {\LWR@siunitx@textprime} ,
     text-arcsecond = {\LWR@siunitx@textdblprime} ,
-}{siunitx}
+}{siunitx-v2}
 %    \end{macrocode}
 
 %    \begin{macrocode}
@@ -41819,7 +42057,7 @@ color:\LWR@origpound\LWR@tempcolor%
 % \changes{v0.45}{2017/12/03}{\pkg{memoir}: Added.}
 % \changes{v0.84}{2020/03/31}{\pkg{memoir}: Preloads \pkg{xcolor}.}
 %
-% \codeall
+% \codeprint
 %    \begin{macrocode}
 \begin{warpprint}
 \@ifclassloaded{memoir}{\LWR@origRequirePackage{xcolor}}{}
@@ -47789,6 +48027,34 @@ s%
 %
 %
 %
+% \iffalse
+%<*centerlastline>
+% \fi
+%
+% \part{lwarp-centerlastline.sty}
+%
+% \section{centerlastline}
+%
+% \DescribePackage{centerlastline}
+% \pkg{centerlastline} is ignored.
+%
+% \changes{v0.897}{2021/04/18}{\pkg{centerlastline}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR@ProvidesPackageDrop{centerlastline}[2020/10/12]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\providecommand{\centerlastline}{}
+\def\endcenterlastline{\par}
+%    \end{macrocode}
+%
+% \iffalse
+%</centerlastline>
+% \fi
+%
 %
 % \iffalse
 %<*centernot>
@@ -51391,6 +51657,45 @@ name = \chemmacros_translate:n {scheme-name}
 %
 %
 % \iffalse
+%<*decorule>
+% \fi
+%
+% \part{lwarp-decorule.sty}
+%
+% \section{decorule}
+%
+% \credits{Peter Flynn}
+%
+% \DescribePackage{decorule}
+% \pkg{decorule} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.897}{2021/05/02}{\pkg{decorule}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR@ProvidesPackagePass{decorule}[2020/04/01]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\xpretocmd{\decorule}
+    {\begin{lateximage}*[decorule]}
+    {}
+    {\LWR@patcherror{decorule}{decorule A}}
+
+\xapptocmd{\decorule}
+    {\end{lateximage}}
+    {}
+    {\LWR@patcherror{decorule}{decorule B}}
+%    \end{macrocode}
+%
+% \iffalse
+%</decorule>
+% \fi
+%
+%
+%
+% \iffalse
 %<*diagbox>
 % \fi
 %
@@ -54276,6 +54581,96 @@ name = \chemmacros_translate:n {scheme-name}
 %
 %
 % \iffalse
+%<*fancypar>
+% \fi
+%
+% \part{lwarp-fancypar.sty}
+%
+% \section{fancypar}
+%
+% \credits{Gonzalo Medina}
+%
+% \DescribePackage{fancypar}
+% \pkg{fancypar} is used as-is for print output,
+% and emulated for \HTML.
+%
+% \cs{NotebookPar} and related are used as-is inside a \env{lateximage},
+% \trouble[\CSS\ classes]{fancypar=\pkg{fancypar}}
+% but for \HTML\ these are emulated as a \element{div} of
+% class \attribute{NotebookPar}, etc.
+% For \HTML, the package options and the macro optional arguments are ignored.
+% The user must provide custom \CSS\ for each if visual effects are required.
+% See \cref{sec:csscustomization}.
+%
+% If using a custom paragraph style,
+% \trouble[custom styles]{fancypar=\pkg{fancypar}}
+% such as \cs{MyStylePar} from the documentation,
+% use the following to generate an \HTML\ \element{div} of class \attribute{MyStylePar}:
+% \begin{sourceverb}
+% ... (existing definiton of \MyStylePar, print version) ...
+% \begin{warpHTML}
+% \AddFancyparClass{MyStyle}
+% \end{warpHTML}
+% \end{sourceverb}
+% \cs{MyStylePar} is then modified to emulate \HTML.
+% An optional argument is allowed, which is ignored.
+%
+% \changes{v0.897}{2021/05/02}{\pkg{fancypar}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR@ProvidesPackagePass{fancypar}[2019/01/18]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\begin{warpHTML}
+\makeatletter
+
+\newcommand{\LWR@fancypar}[2]{%
+    \begin{BlockClass}{#1Par}
+    #2
+    \end{BlockClass}
+}
+
+\newcommand{\LWR@HTML@NotebookPar}[2][]{\LWR@fancypar{Notebook}{#2}}
+\LWR@formatted{NotebookPar}
+
+\newcommand{\LWR@HTML@ZebraPar}[2][]{\LWR@fancypar{Zebra}{#2}}
+\LWR@formatted{ZebraPar}
+
+\newcommand{\LWR@HTML@DashedPar}[2][]{\LWR@fancypar{Dashed}{#2}}
+\LWR@formatted{DashedPar}
+
+\newcommand{\LWR@HTML@MarkedPar}[2][]{\LWR@fancypar{Marked}{#2}}
+\LWR@formatted{MarkedPar}
+
+\newcommand{\LWR@HTML@UnderlinedPar}[2][]{\LWR@fancypar{Underlined}{#2}}
+\LWR@formatted{UnderlinedPar}
+
+
+\newcommand{\LWR@HTML@add@fancy@format}{}
+\LWR@formatted{add@fancy@format}
+
+
+\newcommand{\AddFancyparClass}[1]{%
+    \expandafter\newcommand\csname LWR@HTML@#1Par\endcsname[2][]{%
+        \LWR@fancypar{#1}{##2}%
+    }
+    \LWR@formatted{#1Par}
+}
+
+\makeatother
+\end{warpHTML}
+%    \end{macrocode}
+%
+% \iffalse
+%</fancypar>
+% \fi
+%
+%
+%
+% \iffalse
 %<*fancyref>
 % \fi
 %
@@ -55210,7 +55605,7 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
 % \codehtml
 %
 %    \begin{macrocode}
-\LWR@ProvidesPackagePass{fixme}[2017/03/05]
+\LWR@ProvidesPackagePass{fixme}[2019/01/03]
 %    \end{macrocode}
 %
 % Restore \pkg{lwarp}'s version of \cs{@wrindex},
@@ -55231,35 +55626,41 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
 }
 %    \end{macrocode}
 %
-% Other modifications:
+% Other modifications.
+% Done \cs{AtBeginDocument} to hopefully work if the user customizes the layouts.
+% \changes{v0.897}{2021/04/19}{\pkg{fixme}: Modified \cs{AtBeginDocument}.}
 %    \begin{macrocode}
+\AtBeginDocument{
+
 \def\FXFaceInlineHTMLStyle{font-weight:bold}
 
-\renewcommand*\FXLayoutInline[3]{ %
-\InlineClass[\FXFaceInlineHTMLStyle]{fixmeinline}%
-    {\@fxtextstd{#1}{#2}{#3}}%
+\renewcommand*\FXLayoutInline[3]{ % space
+    \InlineClass[\FXFaceInlineHTMLStyle]{fixmeinline}%
+        {\@fxtextstd{#1}{#2}{#3}}%
 }
 
 \def\FXFaceEnvHTMLStyle{font-weight:bold}
 
 \renewcommand*\FXEnvLayoutPlainBegin[2]{%
-\BlockClass[\FXFaceEnvHTMLStyle]{fixmebold}
-\ignorespaces#2 \fxnotename{#1}: \ignorespaces}
+    \BlockClass[\FXFaceEnvHTMLStyle]{fixmebold}
+    \ignorespaces#2 \fxnotename{#1}: \ignorespaces%
+}
 
 \renewcommand*\FXEnvLayoutPlainEnd[2]{\endBlockClass}
 
 \renewcommand*\FXEnvLayoutSignatureBegin[2]{%
-\BlockClass[\FXFaceEnvHTMLStyle]{fixmebold}
-\fxnotename{#1}: \ignorespaces}
+    \BlockClass[\FXFaceEnvHTMLStyle]{fixmebold}
+    \fxnotename{#1}: \ignorespaces%
+}
 
 \renewcommand*\FXEnvLayoutSignatureEnd[2]{\@fxsignature{#2}\endBlockClass}
 
 \def\FXFaceSignatureHTMLStyle{font-style:italic}
 
 \DeclareRobustCommand*\@fxsignature[1]{%
-\ifthenelse{\equal{#1}{}}%
-    {}%
-    { -- {\InlineClass[\FXFaceSignatureHTMLStyle]{fixmesignature}{#1}}}%
+    \ifthenelse{\equal{#1}{}}%
+        {}%
+        { -- {\InlineClass[\FXFaceSignatureHTMLStyle]{fixmesignature}{#1}}}%
 }
 
 
@@ -55268,6 +55669,8 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
 \renewcommand\FXTargetLayoutPlain[2]{%
     \InlineClass[\FXFaceTargetHTMLStyle]{fixmetarget}{#2}%
 }
+
+}% \AtBeginDocument
 %    \end{macrocode}
 
 % \iffalse
@@ -55410,6 +55813,10 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
 % |boxed|, or |ruled|, so \CSS\ may be used to format by float style as well.
 % Default formatting by \CSS\ is provided for |ruled| and |boxed| styles.
 %
+% Always declare a \cs{newfloat} before modifying it with \cs{floatname}, etc.
+% \trouble[not seem to be a floating environment]{float>not seem to be a floating environment}
+% \trouble{float=\pkg{float}}
+%
 % \changes{v0.20}{2017/01/22}{\pkg{float}: Improved float caption type handling.}
 %
 % \codehtml
@@ -55417,8 +55824,9 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
 \LWR@ProvidesPackageDrop{float}[2001/11/08]
 %    \end{macrocode}
 
+
 % \begin{macro}{\LWR@floatstyle}
-% The default float style:
+% The default float style.
 %    \begin{macrocode}
 \newcommand*{\LWR@floatstyle}{plain}
 %    \end{macrocode}
@@ -55437,11 +55845,13 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
         {\DeclareFloatingEnvironment[fileext=#3,within=#4]{#1}}%
         {\DeclareFloatingEnvironment[fileext=#3]{#1}}%
 %    \end{macrocode}
+%
 % Remember the float style:
 % \changes{v0.57}{2018/05/14}{\pkg{float}: Added float styles.}
 %    \begin{macrocode}
     \csedef{LWR@floatstyle@#1}{\LWR@floatstyle}%
 %    \end{macrocode}
+%
 % \pkg{newfloat} package automatically creates the \cs{listof} command
 % for new floats, but \pkg{float} does not,
 % so remove \cs{listof} here in case it is manually created later.
@@ -55449,6 +55859,7 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
     \cslet{listof#1s}\relax%
     \cslet{listof#1es}\relax%
 %    \end{macrocode}
+%
 % Likesize, \pkg{newfloat} also creates \cs{l@<type>}, but \pkg{float} does not,
 % so remove it here:
 % \changes{v0.57}{2018/05/26}{\pkg{float}: Fix: Do not pre-define \cs{l@name}.}
@@ -55474,6 +55885,7 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
 %    \end{macrocode}
 % \end{noindmacro}
 
+
 % \begin{noindmacro}{\floatplacement} \marg{type} \marg{placement}
 %
 % Float placement is ignored.
@@ -55484,16 +55896,18 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
 %    \end{macrocode}
 % \end{noindmacro}
 
+
 % \begin{noindmacro}{\floatstyle} \marg{style}
 %
 % Remember the style for future floats:
 %    \begin{macrocode}
 \newcommand{\floatstyle}[1]{%
     \def\LWR@floatstyle{#1}%
-}
+}%
 %    \end{macrocode}
 % \end{noindmacro}
 
+
 % \begin{noindmacro}{\restylefloat} * \marg{type}
 %
 % Remember the style for this float:
@@ -55504,8 +55918,13 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
 %    \end{macrocode}
 % \end{noindmacro}
 
+
 % \begin{noindmacro}{\listof}
-% See \cref{sec:listof} for the \cs{listof} command in the \pkg{lwarp} core.
+% See \cref{sec:listof} for the \cs{LWR@listof} command in the \pkg{lwarp} core.
+% \changes{v0.897}{2021/05/18}{\pkg{float}: Improved compatibility with \pkg{newfloat}, \pkg{keyfloat}.}
+%    \begin{macrocode}
+\newcommand{\listof}{\LWR@listof}
+%    \end{macrocode}
 % \end{noindmacro}
 
 % \iffalse
@@ -57119,6 +57538,54 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
 %
 %
 %
+% \iffalse
+%<*froufrou>
+% \fi
+%
+% \part{lwarp-froufrou.sty}
+%
+% \section{froufrou}
+%
+% \credits{Nelson Lago}
+%
+% \DescribePackage{froufrou}
+% \pkg{froufrou} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.897}{2021/05/02}{\pkg{froufrou}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR@ProvidesPackagePass{froufrou}[2020/12/22]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\ExplSyntaxOn
+\xpretocmd{\setfroufrou}
+    {\edef\LWR@latestfroufrou{\detokenize{#1}}}
+    {}
+    {\LWR@patcherror{froufrou}{setfroufrou}}
+\ExplSyntaxOff
+
+\xpatchcmd{\@realfroufrou}
+    {\@froufrouOrnament}
+    {%
+        \begin{center}
+        \begin{lateximage}*[froufrou][\LWR@latestfroufrou]%
+        \@froufrouOrnament%
+        \end{lateximage}
+        \end{center}
+    }
+    {}
+    {\LWR@patcherror{froufrou}{@realfroufrou}}
+%    \end{macrocode}
+%
+% \iffalse
+%</froufrou>
+% \fi
+%
+%
+%
 %
 % \iffalse
 %<*ftcap>
@@ -58429,9 +58896,9 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
 
 % \begin{noindmacro}{\LWR@includegraphicsb} * \oarg{2: options} \oarg{3: options} \marg{4: filename}
 %
-% \pkg{graphics} syntax is \cs{includegraphics} * \oarg{llx,lly} \oarg{urx,ury} \marg{file}
+% \pkg{graphics} syntax is \cs{includegraphics} * \oarg{llx,lly} \oarg{urx,ury} \marg{filename}
 %
-% \pkg{graphicx} syntax is \cs{includegraphics} \oarg{key values} \marg{file}
+% \pkg{graphicx} syntax is \cs{includegraphics} \oarg{key values} \marg{filename}
 %
 % If |#3| is empty, only one optional argument was given, thus \pkg{graphicx} syntax.
 %
@@ -58507,6 +58974,10 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
 %
 % Fully expand and detokenize the filename,
 % changing the file extension to \filenm{.svg} if necessary.
+%
+% Note that uppercase file extensions are detected and reported as lowercase,
+% so \pkg{lwarp} can only report to the browser lowercase extensions,
+% so all images must have lowercase file extensions.
 % \changes{v0.59}{2018/08/28}{\pkg{graphics}: Fix: Expand filename.}
 % \changes{v0.61}{2018/10/01}{\pkg{graphics}: Set keys before using filename, for \pkg{epsfig}.}
 %    \begin{macrocode}
@@ -71852,6 +72323,36 @@ do not attempt to patch lwarp's version of `nameref'.)\MessageBreak
 %
 %
 %
+% \iffalse
+%<*pbalance>
+% \fi
+%
+% \part{lwarp-pbalance.sty}
+%
+% \section{pbalance}
+%
+% \DescribePackage{pbalance}
+% \pkg{pbalance} is ignored.
+%
+% \changes{v0.897}{2021/04/18}{\pkg{pbalance}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\RequirePackage{balance}
+
+\LWR@ProvidesPackageDrop{pbalance}[2020/12/16]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\newcommand\shrinkLastPage[1]{}
+%    \end{macrocode}
+%
+% \iffalse
+%</pbalance>
+% \fi
+%
+%
 %
 %
 % \iffalse
@@ -77113,7 +77614,64 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
 % \credits{Joseph Wright}
 %
 % \DescribePackage{siunitx}
-% \pkg{siunitx} is patched for use by \pkg{lwarp},
+% \pkg{siunitx-v2} is patched for use by \pkg{lwarp},
+% and is emulated for \brand{MathJax}.
+% Use as:
+% \begin{sourceverb}
+% \usepackage{siunitx}[=v2]
+% \end{sourceverb}
+%
+% \pkg{siunitx} v3 is not yet supported.
+%
+% ^^A \limitssiunitx
+%
+% \changes{v0.897}{2021/05/23}{\pkg{siunitx}: Rollback for v2.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\providecommand\DeclareRelease[3]{}
+\providecommand\DeclareCurrentRelease[2]{}
+
+\DeclareRelease{2}{2010-05-23}{lwarp-siunitx-v2.sty}
+\DeclareRelease{v2}{2010-05-23}{lwarp-siunitx-v2.sty}
+\DeclareCurrentRelease{}{2021-05-17}
+
+\PackageWarningNoLine{lwarp}
+    {%
+        **************\MessageBreak
+        Siunitx version 3 is not yet supported by Lwarp.\MessageBreak
+        V2 emulation is used here.\MessageBreak
+        **************
+    }
+
+\RequirePackage{xcolor}% for \convertcolorspec
+
+% \LWR@ProvidesPackagePass{siunitx}[2021-05-21]
+
+\RequirePackage{siunitx-v2}
+%    \end{macrocode}
+
+% \iffalse
+%</siunitx>
+% \fi
+%
+%
+%
+%
+%
+% \iffalse
+%<*siunitx-v2>
+% \fi
+%
+% \part{lwarp-siunitx-v2.sty}
+
+% \section{siunitx-v2}
+%
+% \credits{Joseph Wright}
+%
+% \DescribePackage{siunitx-v2}
+% \pkg{siunitx-v2} is patched for use by \pkg{lwarp},
 % and is emulated for \brand{MathJax}.
 %
 % \limitssiunitx
@@ -77122,24 +77680,25 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
 % \changes{v0.37}{2017/08/17}{\pkg{siunitx}: Improved symbol support.}
 % \changes{v0.38}{2017/08/26}{\pkg{siunitx}: Removed from \pkg{lwarp} core.}
 % \changes{v0.50}{2018/10/23}{\pkg{siunitx}: Fix: Loads \pkg{xcolor}.}
+% \changes{v0.897}{2021/05/23}{\pkg{siunitx-v2}: Rollback for v2.}
 %
 % \codehtml
 %
 %    \begin{macrocode}
 \RequirePackage{xcolor}% for \convertcolorspec
 
-\LWR@ProvidesPackagePass{siunitx}[2018/05/17]
+\LWR@ProvidesPackagePass{siunitx-v2}[2021-04-17]
 %    \end{macrocode}
 
 % \changes{v0.50}{2018/02/24}{\pkg{siunitx}: Improved units.}
 %    \begin{macrocode}
 \AtBeginDocument{% in case textcomp was not loaded
-\DeclareSIUnit\bohr{\textit{a}\textsubscript{0}}
-\DeclareSIUnit\clight{\textit{c}\textsubscript{0}}
-\DeclareSIUnit\elementarycharge{\textit{e}}
-\DeclareSIUnit\electronmass{\textit{m}\textsubscript{e}}
-\DeclareSIUnit\hartree{\textit{E}\textsubscript{h}}
-\DeclareSIUnit\planckbar{\LWR@siunitx@textplanckbar}
+    \DeclareSIUnit\bohr{\textit{a}\textsubscript{0}}
+    \DeclareSIUnit\clight{\textit{c}\textsubscript{0}}
+    \DeclareSIUnit\elementarycharge{\textit{e}}
+    \DeclareSIUnit\electronmass{\textit{m}\textsubscript{e}}
+    \DeclareSIUnit\hartree{\textit{E}\textsubscript{h}}
+    \DeclareSIUnit\planckbar{\LWR@siunitx@textplanckbar}
 }% AtBeginDocument
 %    \end{macrocode}
 %
@@ -77158,44 +77717,53 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
 % Modified to set set \HTML\ \cs{textcolor} if not black:
 % \changes{v0.48}{2018/02/14}{\pkg{siunitx}: Improved color output.}
 %    \begin{macrocode}
-\cs_undefine:N \__siunitx_print_aux:
-\cs_new_protected:Npn \__siunitx_print_aux:
+\cs_set_protected:Npn \__siunitx_print_aux:
   {
     \text
       {
         \__siunitx_ensure_ltr:n
           {
-            \color@begingroup
+%    \end{macrocode}
+% \cs{color@endgroup} was adding a paragraph break, so use a regular group instead.
+% \changes{v0.897}{2021/05/23}{\pkg{siunitx-v2}: Regular group instead of color group.}
+%    \begin{macrocode}
+%             \color@begingroup
+            \begingroup% lwarp
+%
             \__siunitx_print_color:
             \__siunitx_font_shape:
             \__siunitx_font_weight:
             \use:c
               {
-                @@_ \l__siunitx_print_type_tl _
+                __siunitx_ \l__siunitx_print_type_tl _
                 text \l__siunitx_font_family_tl :
               }
-            \bool_if:NTF \l__siunitx_font_math_mode_bool
-              { \__siunitx_print_math: }
-              {
-                \LWR@findcurrenttextcolor% lwarp
-                \ifdefstring{\LWR@tempcolor}{000000}% lwarp
-                {\__siunitx_print_text:}% lwarp
-                {% lwarp
-                    \LWR@textcurrentcolor{% lwarp
-                        \__siunitx_print_text:
-                    }% lwarp
-                }% lwarp
-              }
-            \color@endgroup
+%    \end{macrocode}
+% \changes{v0.897}{2021/05/23}{\pkg{siunitx-v2}: Do not use math mode.}
+%    \begin{macrocode}
+%             \bool_if:NTF \l__siunitx_font_math_mode_bool
+%               {
+%                     \__siunitx_print_math:
+%               }
+               {
+                    \LWR@findcurrenttextcolor% lwarp
+                    \ifdefstring{\LWR@tempcolor}{000000}% lwarp
+                        {\__siunitx_print_text:}% lwarp
+                        {% lwarp
+                            \LWR@textcurrentcolor{% lwarp
+                                \__siunitx_print_text:
+                            }% lwarp
+                        }% lwarp
+               }
+%             \color@endgroup
+            \endgroup% lwarp
+%
           }
       }
   }
 
-
-\cs_undefine:N \__siunitx_set_math_fam:n
-\cs_new_protected:Npn \__siunitx_set_math_fam:n #1 {
-  \int_new:c { c__siunitx_math #1 _int }
-  \group_begin:% lwarp
+\cs_set_protected:Npn \__siunitx_set_math_fam:n #1 {
+  \group_begin:
     \LetLtxMacro\@ensuredmath\LWR@origensuredmath% lwarp
     \LetLtxMacro\mbox\LWR@print@mbox% lwarp
     \hbox_set:Nn \l__siunitx_tmp_box
@@ -77204,15 +77772,15 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
           {
             \use:c { math #1 }
               {
-                \int_gset:cn { c__siunitx_math #1 _int } { \fam }
+                \int_const:cn { c__siunitx_math #1 _int } { \fam }
               }
           }
       }
-  \group_end:% lwarp
+  \group_end:
 }
 
-\cs_undefine:N \__siunitx_combined_output:n
-\cs_new_protected:Npn \__siunitx_combined_output:n #1 {
+\cs_set_protected:Npn \__siunitx_combined_output:n #1 {
+%
     \group_begin:% lwarp
     \LetLtxMacro\@ensuredmath\LWR@origensuredmath% lwarp
     \LetLtxMacro\mbox\LWR@print@mbox% lwarp
@@ -77243,10 +77811,12 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
         \endgroup%    lwarp
         \__siunitx_unit_output_print:
     }
-    \group_end:% lwarp
+   \group_end:% lwarp
+%
 }
 %    \end{macrocode}
 %
+%
 % For |parse-numbers=false|:
 % \changes{v0.79}{2020/01/21}{\pkg{siunitx}: Improved \brand{MathJax}.}
 %    \begin{macrocode}
@@ -77269,7 +77839,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
                 \LWR@subsingledollar{% lwarp
                     \textbackslash( \LWR@HTMLsanitize{#1} \textbackslash)% lwarp
                 }{siunitx}{%
-                    \__siunitx_print:nn { number } {
+                    \__siunitx_print:nn { number } {%
                         \LWR@origensuredmath{#1}%
                     } % lwarp
                 }% lwarp
@@ -77294,7 +77864,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
                 }{siunitx}{%
                     \__siunitx_print:nn { number } {
                         \LWR@origensuredmath{#1}%
-                    } % lwarp
+                    }% lwarp
                 }% lwarp
         \endgroup%    lwarp
       \__siunitx_unit_output_print:
@@ -77302,11 +77872,11 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
 }
 %
 %    \end{macrocode}
+%
 % For quotients, the fraction code is replaced by the symbol code:
 % \changes{v0.48}{2018/02/14}{\pkg{siunitx}: Changes fraction to symbol.}
 %    \begin{macrocode}
-\cs_undefine:N \__siunitx_number_output_quotient_fraction:
-\cs_new_protected:Npn \__siunitx_number_output_quotient_fraction: {
+\cs_set_protected:Npn \__siunitx_number_output_quotient_fraction: {
   \bool_set_true:N \l__siunitx_number_compound_bool
   \__siunitx_number_output_quotient_aux_i:
   \tl_set_eq:NN \l__siunitx_number_out_tl
@@ -77317,11 +77887,11 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
   \__siunitx_number_output_single_aux:
 }
 %    \end{macrocode}
+%
 % For units, the fraction code is replaced by the symbol code:
 % \changes{v0.48}{2018/02/14}{\pkg{siunitx}: Changes fraction to symbol.}
 %    \begin{macrocode}
-\cs_undefine:N \__siunitx_unit_format_fraction_fraction:
-\cs_new_protected:Npn \__siunitx_unit_format_fraction_fraction: {
+\cs_set_protected:Npn \__siunitx_unit_format_fraction_fraction: {
   \__siunitx_unit_format_fraction_symbol_aux:
   \int_compare:nNnT { \l__siunitx_unit_denominator_int } > { 1 }
     {
@@ -77336,10 +77906,10 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
   \tl_put_right:NV \l__siunitx_unit_tl \l__siunitx_unit_denominator_tl
 }
 %    \end{macrocode}
+%
 % \changes{v0.50}{2018/02/24}{\pkg{siunitx}: Improved units.}
 %    \begin{macrocode}
-\cs_undefine:N \__siunitx_angle_print_astronomy_aux:
-\cs_new_protected:Npn \__siunitx_angle_print_astronomy_aux: {
+\cs_set_protected:Npn \__siunitx_angle_print_astronomy_aux: {
   \prop_get:NnNT \l__siunitx_number_out_prop { mantissa-integer }
     \l__siunitx_tmpa_tl
     { \__siunitx_print:nV { number } \l__siunitx_tmpa_tl }
@@ -77378,8 +77948,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
 %
 % \changes{v0.79}{2020/01/20}{\pkg{siunitx}: Fix: \cs{square}, \cs{cubed}.}
 %    \begin{macrocode}
-\cs_undefine:N \__siunitx_textsuperscript:n
-\cs_new_protected:Npn \__siunitx_textsuperscript:n #1 {\textsuperscript{#1}}
+\cs_set_protected:Npn \__siunitx_textsuperscript:n #1 {\textsuperscript{#1}}
 %    \end{macrocode}
 %
 % \begin{noindmacro}{\num} \oarg{options} \marg{value}
@@ -77447,6 +78016,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
 %    \end{macrocode}
 % \end{noindmacro}
 %
+%
 % \begin{noindmacro}{\SIrange} \oarg{options} \marg{value1} \marg{value2} \marg{unit}
 %    \begin{macrocode}
 \RenewDocumentCommand{\SIrange}{o m m m}
@@ -77938,13 +78508,12 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
 %    \end{macrocode}
 
 % \iffalse
-%</siunitx>
+%</siunitx-v2>
 % \fi
 %
 %
 %
 %
-%
 % \iffalse
 %<*skmath>
 % \fi
@@ -84384,7 +84953,7 @@ remember to convert PDF images to SVG using 'lwarpmk pdftosvg *-fig.pdf',
     \@ifundefined{c@#3depth}{\newcounter{#3depth}}{}%
     \setcounter{#3depth}{1}%
     \@namedef{cftmark#3}{}%
-    \@namedef{listof#2}{\listof{#2}{#4}}%
+    \@namedef{listof#2}{\LWR@listof{#2}{#4}}%
     \@namedef{@cftmake#3title}{}%
     \expandafter\newlength\csname cftbefore#3titleskip\endcsname%
     \expandafter\newlength\csname cftafter#3titleskip\endcsname%
@@ -89871,7 +90440,7 @@ height:\LWR@printlength{\LWR@tempheight}%
     \@ifundefined{c@#3depth}{\newcounter{#3depth}}{}%
     \setcounter{#3depth}{1}%
     \@namedef{#3mark}{}%
-    \@namedef{#2}{\listof{#2}{#4}}%
+    \@namedef{#2}{\LWR@listof{#2}{#4}}%
     \@namedef{@cftmake#3title}{}%
     \@ifundefined{cftbefore#3titleskip}{%
         \expandafter\newlength\csname cftbefore#3titleskip\endcsname%
@@ -90170,6 +90739,7 @@ height:\LWR@printlength{\LWR@tempheight}%
 \renewcommand*{\epigraphpicture}{}
 %    \end{macrocode}
 %
+%
 % \subsection{Poetry}
 %
 %    \begin{macrocode}
-- 
cgit v1.2.3

