texlive[57836] trunk: lwarp

commits+karl at tug.org commits+karl at tug.org
Mon Feb 22 00:09:13 CET 2021


Revision: 57836
          http://tug.org/svn/texlive?view=revision&revision=57836
Author:   karl
Date:     2021-02-22 00:09:12 +0100 (Mon, 22 Feb 2021)
Log Message:
-----------
lwarp

Modified Paths:
--------------
    trunk/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua
    trunk/Master/texmf-dist/doc/latex/lwarp/README.txt
    trunk/Master/texmf-dist/doc/latex/lwarp/lwarp.pdf
    trunk/Master/texmf-dist/scripts/lwarp/lwarpmk.lua
    trunk/Master/texmf-dist/source/latex/lwarp/lwarp.dtx
    trunk/Master/texmf-dist/source/latex/lwarp/lwarp.ins
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-SIunits.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-acro.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithmicx.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-amsmath.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-changes.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-epsfig.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyhdr.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyvrb.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-graphics.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-hang.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-karnaugh-map.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-libertinust1math.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-mdframed.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-multirow.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-ntheorem.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-rotating.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-siunitx.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-xcolor.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp.sty

Added Paths:
-----------
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-amscdx.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-epsf.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-isomath.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-isotope.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-lpic.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-luavlna.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-mattens.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-maybemath.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-mdwmath.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-pinlabel.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-rlepsf.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-skmath.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-tensor.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-tikz-imagelabels.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-xevlna.sty

Modified: trunk/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua	2021-02-21 23:09:12 UTC (rev 57836)
@@ -1,8 +1,8 @@
 #!/usr/bin/env texlua
 
--- Copyright 2016-2020 Brian Dunn
+-- Copyright 2016-2021 Brian Dunn
 
-printversion = "v0.894"
+printversion = "v0.895"
 requiredconfversion = "2" -- also at *lwarpmk.conf
 
 function printhelp ()

Modified: trunk/Master/texmf-dist/doc/latex/lwarp/README.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/lwarp/README.txt	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/doc/latex/lwarp/README.txt	2021-02-21 23:09:12 UTC (rev 57836)
@@ -1,5 +1,5 @@
 
-LaTeX lwarp package v0.894   README.txt
+LaTeX lwarp package v0.895   README.txt
 
 Files included are:
 
@@ -41,7 +41,7 @@
 version 2005/12/01 or later.
 
 
-Copyright 2016-2020 Brian Dunn
+Copyright 2016-2021 Brian Dunn
 
 Homepage: http://BDTechConcepts.com
 Email: bd at BDTechConcepts.com

Modified: trunk/Master/texmf-dist/doc/latex/lwarp/lwarp.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/scripts/lwarp/lwarpmk.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/lwarp/lwarpmk.lua	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/scripts/lwarp/lwarpmk.lua	2021-02-21 23:09:12 UTC (rev 57836)
@@ -1,8 +1,8 @@
 #!/usr/bin/env texlua
 
--- Copyright 2016-2020 Brian Dunn
+-- Copyright 2016-2021 Brian Dunn
 
-printversion = "v0.894"
+printversion = "v0.895"
 requiredconfversion = "2" -- also at *lwarpmk.conf
 
 function printhelp ()

Modified: trunk/Master/texmf-dist/source/latex/lwarp/lwarp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/lwarp/lwarp.dtx	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/source/latex/lwarp/lwarp.dtx	2021-02-21 23:09:12 UTC (rev 57836)
@@ -1,7 +1,7 @@
 %
 % \iffalse meta-comment
 %
-% Copyright 2016-2020 Brian Dunn
+% Copyright 2016-2021 Brian Dunn
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License, either version 1.3
@@ -16,7 +16,7 @@
 % \iffalse
 %<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
 %<package>\ProvidesPackage{lwarp}
-%<package>    [2020/12/24 v0.894  Allows LaTeX to directly produce HTML5 output.]
+%<package>    [2021/02/18 v0.895  Allows LaTeX to directly produce HTML5 output.]
 %
 %<*driver>
 \documentclass{ltxdoc}
@@ -25,7 +25,7 @@
 
 \usepackage{lmodern}
 \usepackage{libertine}
-\usepackage[space]{erewhon}
+% *88* \usepackage[space]{erewhon}
 \usepackage[varqu,varl]{inconsolata} % typewriter
 % \usepackage{roboto}% conflicts with \textsc inside a float
 % \usepackage{sourcecodepro}
@@ -85,7 +85,8 @@
 \newunicodechar{฿}{\textbaht}
 \newunicodechar{℠}{\textservicemark}
 
-\usepackage[log-declarations=false]{xparse}
+% \usepackage[log-declarations=false]{xparse}
+\usepackage{xparse}
 
 \usepackage{ifptex}% *8* remove later
 
@@ -1315,7 +1316,7 @@
 \item Math appearing inside a lateximage,
     \margintag{lateximage}
     and therefore also inside a \tikz\ or \env{picture}
-    environment, is rendered as SVG math even if \brand{MathJax}
+    environment, is rendered as \SVG\ math even if \brand{MathJax}
     is used in the rest of the document.
 
 \item For \pkg{siunitx},
@@ -1375,7 +1376,7 @@
 \DescribeMacro{\inlinemathnormal}
 \DescribeMacro{\inlinemathother}
 An inline math expression is usually converted to a reusable hashed \SVG\ math
-image, or a MathJax expression.  The hash or expression depends on the contents
+image, or a \brand{MathJax} expression.  The hash or expression depends on the contents
 of the math expression.  In most cases this math expression is static, such as \texttt{\$x+1\$},
 so the image can be reused for multiples instances of the same expression.
 In some cases,
@@ -1390,7 +1391,7 @@
 in \brand{MathJax}.
 The macro \cs{inlinemathother} may be used before a sequence of dynamic or complicated
 math expressions, and \cs{inlinemathnormal} after.  Doing so tells \pkg{lwarp} to
-use unhashed \SVG\ math images for those particular expressins, even if MathJax
+use unhashed \SVG\ math images for those particular expressins, even if \brand{MathJax}
 is otherwise in use.
 See \cref{sec:localizingdynamicmath}.
 }
@@ -1410,7 +1411,7 @@
 it is assumed that the contents are more complicated than ``pure''
 math.
 An example is an elaborate \tikz\ picture,
-\margintag{MathJax unsupported}
+\margintag{\brand{MathJax} unsupported}
 which will not render in \brand{MathJax} and
 will not make sense as an \HTML\ \attribute{alt} tag.
 \margintag{complicated \attribute{alt} tag}
@@ -1715,7 +1716,7 @@
 \end{sourcedisplay}
 
 \DescribeProgram{pdftocairo}
-\margintag{PDF to SVG}
+\margintag{\PDF\ to \SVG}
 To convert a \PDF\ image to \SVG, use the utility \prog{pdftocairo}:
 \userentry{pdftocairo -svg filename.pdf}
 For a large number of images, use \prog{lwarpmk}:
@@ -1729,7 +1730,7 @@
 use \userentry{lwarpmk pdftosvg *.PDF} to convert to \SVG\ images.
 
 When using \DVI\ \prog{latex},
-\margintag{DVI latex}
+\margintag{\DVI\ \LaTeX}
 it is necessary to convert \EPS\ to \PDF\ and then to \SVG:
 \gindex{image>PDF or EPS>converting}
 \userentry{lwarpmk epstopdf *.eps\qquad \textrm{(or a list of filenames)}}
@@ -1736,7 +1737,7 @@
 \userentry{lwarpmk pdftosvg *.pdf\qquad \textrm{(or a list of filenames)}}
 
 For \PNG\ or \JPG
-\margintag{PNG and JPG}
+\margintag{\PNG\ and \JPG}
 \gindex{image>PNG and JPG}
 \gindex{PNG images}
 \gindex{JPG images}
@@ -1745,8 +1746,8 @@
 but will also be used without the file extension if it is the only file of
 its base name.
 
-GIF files may be used for \HTML,
-\margintag{GIF}
+\GIF\ files may be used for \HTML,
+\margintag{\GIF}
 \gindex{image>GIF}
 \gindex{GIF images}
 but another format must also be provided for print output.
@@ -2820,18 +2821,17 @@
 \trouble[MathJax]{mathjax=\brand{MathJax}>siunitx=\pkg{siunitx}}
 a limited emulation is used.
 Most functions work reasonably well, but many options cannot be emulated.
-\pkg{siunitx} macros with more than one optional value cannot absorb the second optional
-value, and complicated parsing such as for \cs{ang} is not supported.
+Complicated parsing such as for \cs{ang} is not supported.
 The result usually looks fine, and otherwise is enough to get the meaning across.
 
-\pkg{lwarp}'s \brand{MathJax} emulation for \pkg{siunitx} is meant to be a
-stop-gap measure until an extension is included in \brand{MathJax}.
-As of this writing, the third-party \pkg{siunitx} extension
-for \brand{MathJax} is not currently hosted at any public CDN,
-thus \pkg{siunitx} is not usable with this extension unless a local copy
-of this extension is created first.
-See \cs{MathJaxFilename} to select a custom MathJax script, but \pkg{lwarp}'s
-emulation would have to be diabled as well.
+% \pkg{lwarp}'s \brand{MathJax} emulation for \pkg{siunitx} is meant to be a
+% stop-gap measure until an extension is included in \brand{MathJax}.
+% As of this writing, the third-party \pkg{siunitx} extension
+% for \brand{MathJax} is not currently hosted at any public CDN,
+% thus \pkg{siunitx} is not usable with this extension unless a local copy
+% of this extension is created first.
+% See \cs{MathJaxFilename} to select a custom \brand{MathJax} script, but \pkg{lwarp}'s
+% emulation would have to be diabled as well.
 
 Document modifications required for \brand{MathJax}:
 \begin{itemize}
@@ -2911,12 +2911,12 @@
 }
 
 \newcommand{\limitspolyglossia}{%
-\trouble{Undefined control sequence>polyglossia=\pkg{polyglossia}}
-\trouble{polyglossia=\pkg{polyglossia}>Undefined control sequence}
+\trouble{Undefined control sequence \dots begindocument>polyglossia=\pkg{polyglossia}}
+\trouble{polyglossia=\pkg{polyglossia}>Undefined control sequence \dots begindocument}
 \pkg{lwarp} uses \pkg{cleveref}, which has some limitations when using
 \pkg{polyglossia}, possibly resulting in the error
 \begin{sourcedisplay}
-!~Undefined control sequence. \dots\ \cs{@begindocumenthook}
+!~Undefined control sequence. \dots\ \cs{\_\_hook} begindocument
 \end{sourcedisplay}
 
 To test compatibility, add
@@ -2973,14 +2973,6 @@
 \bigskip
 }
 
-\newcommand{\limitsxparse}{%
-\trouble{xparse=\pkg{xparse}}
-To remove from the log any warnings about redeclaring objects,
-place the following before \pkg{lwarp} is loaded:
-\begin{sourcedisplay}
-\cs{usepackage}[log-declarations=false]\{xparse\}
-\end{sourcedisplay}
-}
 
 
 % For use in the documentation update section:
@@ -3061,7 +3053,7 @@
 %<*package>
 % \fi
 %
-% \CheckSum{51622}
+% \CheckSum{53146}
 %
 % \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
@@ -3197,6 +3189,7 @@
 % \changes{v0.892}{2020/10/07}{\ 2020/10/07}
 % \changes{v0.893}{2020/11/26}{\ 2020/11/26}
 % \changes{v0.894}{2020/12/24}{\ 2020/12/24}
+% \changes{v0.895}{2021/02/18}{\ 2021/02/18}
 
 
 
@@ -3220,7 +3213,7 @@
 %
 % \fileversion{} \Dash \filedate
 %
-% {\small\textcopyright{} 2016--2020} Brian Dunn\\ \small \texttt{bd at BDTechConcepts.com}
+% {\small\textcopyright{} 2016--2021} Brian Dunn\\ \small \texttt{bd at BDTechConcepts.com}
 %
 % \end{center}
 %
@@ -3420,6 +3413,32 @@
 %
 % \begin{description}
 % \needspace{2\baselineskip}
+% \item[v0.895:] Vector packages, greatly improved \brand{MathJax} for \pkg{siunitx}.
+%   \begin{itemize}
+%       \item Fixed quotes in \HTML\ tags while using old font packages with
+%           \margintag{core}
+%           \XeLaTeX\ and \LuaLaTeX.
+%       \item Added \cs{ifblank} and \cs{ifstrequal} to \brand{MathJax} emulation.
+%           \margintag{\brand{MathJax}}
+%       \item \pkg{multirow}: Allow \cs{par} per v2.7.
+%           \margintag{packages}
+%       \item \pkg{acro}: Updated to v3.5.
+%       \item \pkg{fancyhdr}: Updated to v4.0.
+%       \item \pkg{changes}: Updated to v4.0.1.
+%       \item \pkg{epsfig}, \pkg{rotating}: Now work inside \env{lateximage}.
+%       \item \pkg{amscdx}: Verified to work with \SVG\ math.
+%               Warning added about use with \brand{MathJax}.
+%       \item Added \brand{MathJax} emulation for \pkg{isomath}, \pkg{mattens},
+%               \pkg{maybemath}, \pkg{skmath}, \pkg{tensor}.
+%       \item Improved \brand{MathJax} emulation for \pkg{siunitx} \cs{ang},
+%               \cs{num}, \cs{SI}.
+%       \item Added \pkg{epsf}, \pkg{impnattypo}, \pkg{isotope},
+%           \pkg{lpic}, \pkg{luavlna},
+%           \pkg{mdwmath}, \pkg{pinlabel}, \pkg{rlepsf},
+%           \pkg{tikz-imagelabels}, \pkg{xevlna}.
+%       \item Verified to work as-is: \pkg{tensind}.
+%   \end{itemize}
+% \needspace{2\baselineskip}
 % \item[v0.894:] \brand{MathJax} additions and improvements.
 %   \begin{itemize}
 %       \item Improved warning message for enabling \SVG\ graphics for
@@ -4179,7 +4198,7 @@
 %       \item \pkg{xfrac}: Improved \CSS.
 %       \item \pkg{textcomp} and \pkg{xunicode}: Fix conflicts with \cs{textcircled}.
 %       \item \pkg{ulem}: Improved compatibility with \pkg{CJKulem}, \env{lateximage}.
-%       \item MathJax and \pkg{siunitx}: Removed inoperable extension.
+%       \item \brand{MathJax} and \pkg{siunitx}: Removed inoperable extension.
 %       \item Added \pkg{bitpattern}, \pkg{pdfcomment},
 %           \pkg{pdfmarginpar}, \pkg{tram}, \pkg{unitsdef}, \pkg{xechangebar}.
 %       \item Added \pkg{musicography}, \pkg{octave}, \pkg{semantic-markup}.
@@ -4261,10 +4280,10 @@
 %           \margintag{\DVI\ \prog{latex}}
 %       \item Fix for \optn{-\/-shell-escape} with \prog{latexmk}.
 %           \margintag{\prog{latexmk}}
-%       \item Updated MathJax script to v2.7.4.
+%       \item Updated \brand{MathJax} script to v2.7.4.
 %           \margintag{math}
-%       \item Fix: Mathjax chapter number removed from non-numeric tagged equations.
-%       \item Added MathJax support for \pkg{nicefrac}, \pkg{units}.
+%       \item Fix: \brand{Mathjax} chapter number removed from non-numeric tagged equations.
+%       \item Added \brand{MathJax} support for \pkg{nicefrac}, \pkg{units}.
 %       \item Fix for \cs{[} and \cs{]} with \cs{displaymathnormal}.
 %       \item Fix for \cs{includegraphics} filename expansion.
 %           \margintag{images}
@@ -4329,7 +4348,7 @@
 % \needspace{2\baselineskip}
 % \item[v0.57:] \pkg{algorithm2e}, \pkg{float} styles, tabular packages, internal improvements.
 %   \begin{itemize}
-%       \item Added support for MathJax equations with \cs{footnote}, \cs{footnotemark}.
+%       \item Added support for \brand{MathJax} equations with \cs{footnote}, \cs{footnotemark}.
 %           \margintag{MathJax}
 %       \item Added \cs{StartDefiningMath} and \cs{StopDefiningMath} for
 %           \margintag{math macros}
@@ -4339,7 +4358,7 @@
 %           \margintag{dynamic math}
 %           delimit math expressions which depend on a variable condition
 %           such as a counter.  Such expressions will not be hashed for reuse,
-%           and will be converted to \SVG\ math images even when MathJax is enabled.
+%           and will be converted to \SVG\ math images even when \brand{MathJax} is enabled.
 %           See \cref{sec:mathdynamic}.
 %       \item Renamed \cs{EndDefiningTabulars} to \cs{StopDefiningTabulars}.
 %           \watchout[new name]
@@ -4506,7 +4525,7 @@
 %       \item Improved \cs{ensuremath} hashing expansion.
 %       \item Fix: \env{equation*} with \env{split}.
 %       \item \env{tabbing} now works inside a \env{lateximage}.  Use for math in \env{tabbing}.
-%       \item Fix: MathJax script was not executing in some conditions.
+%       \item Fix: \brand{MathJax} script was not executing in some conditions.
 %               \margintag{MathJax}
 %       \item Added \cs{CustomizeMathJax} to add custom functions.
 %               See \cref{sec:limitsmath}.
@@ -4540,8 +4559,8 @@
 %       \item Improved support for display math containing complicated math objects,
 %               such as \pkg{tikz-cd}.  See \cref{sec:displaymathother}.
 %       \item Fix: \cs{addcontentsline} inside \SVG\ math.
-%       \item Fix: SVG math containing an embedded \env{lateximage}.
-%       \item MathJax now handles \cs{ensuremath} in expressions.\margintag{MathJax}
+%       \item Fix: \SVG\ math containing an embedded \env{lateximage}.
+%       \item \brand{MathJax} now handles \cs{ensuremath} in expressions.\margintag{MathJax}
 %       \item Fix: Added \env{alignat} environment. \margintag{misc. fixes}
 %       \item Fix: \pkg{afterpackage} no longer required, which conflicted with \pkg{scrlfile}.
 %       \item Fix: \pkg{titling} \cs{thanks} mark.
@@ -4568,11 +4587,11 @@
 % ^^A            Display math and other forms of \SVG\ image such as \env{picture} and
 % ^^A            \tikz\ still use individual image files which are recreated each time
 % ^^A            \cmds{lwarpmk limages} is run.
-% ^^A        \item Fixes: SVG math and/or \cs{underline} in a sectioning file name.
+% ^^A        \item Fixes: \SVG\ math and/or \cs{underline} in a sectioning file name.
 % ^^A        \item Improved \SVG\ display math and tags.
 % ^^A        \item Improved \SVG\ math and \pkg{siunitx} \attribute{alt} tags.
 % ^^A        \item Improved \pkg{siunitx} units.
-% ^^A        \item Fix: \cs{ensuremath} with MathJax now creates a \env{lateximage}.
+% ^^A        \item Fix: \cs{ensuremath} with \brand{MathJax} now creates a \env{lateximage}.
 % ^^A        \item Fix: \cs{centering}, etc. in \SVG\ math, \env{lateximage}, \tikz.
 % ^^A        \item Fix: Made various macros robust,
 % ^^A            additionally fixing \pkg{authblk}.\margintag{misc. fixes}
@@ -4645,7 +4664,7 @@
 % ^^A        \item \cs{PrintStack} changed to \cs{LWRPrintStack}.\watchout[name change]
 % ^^A        \item Fix: Empty lines between \env{tabular} rows.\margintag{misc. fixes}
 % ^^A        \item Fix: Stack unnesting.
-% ^^A        \item Fix: SVG math and \env{lateximage}s in numerous situations.
+% ^^A        \item Fix: \SVG\ math and \env{lateximage}s in numerous situations.
 % ^^A        \item Fix: Spaces in \cs{usepackage}.
 % ^^A        \item Fix: Now allows \brand{MathJax} inside \env{verse}.
 % ^^A    \end{itemize}
@@ -4667,7 +4686,7 @@
 % ^^A        \item Fix: Empty lines between \env{tabular} rows.\margintag{misc. fixes}
 % ^^A        \item Fix: ``Improper \cs{prevdepth}'' with minipages, lists.
 % ^^A        \item Fix: Incorrect \SVG\ math and |lateximage|s with \pkg{subfig}.
-% ^^A        \item Fix: Lateximages from incorrect pages with Mathjax.
+% ^^A        \item Fix: Lateximages from incorrect pages with \brand{Mathjax}.
 % ^^A        \item Fix: Missing sidetoc if using \pkg{listings}.
 % ^^A        \item Fix: Added an \pkg{array} emulation package.
 % ^^A        \item Added
@@ -5340,7 +5359,7 @@
 % While generating \HTML\ output, \SVG\ files are used in place of \PDF.
 % Other formats such as \PNG\ and \JPG\ are used as-is.
 %
-% SVG images may be used for math,
+% \SVG\ images may be used for math,
 % and are also used for \env{picture}, \tikz, and similar environments.
 % The \SVG\ format has better browser and e-book support
 % than \MathML\ (as of this writing),
@@ -5491,8 +5510,8 @@
 %
 % \midrule
 %
-% Languages: & \spkg{babel}, \spkg{polyglossia}.
-%       \spkg{cjkpunct}, \spkg{xeCJK}.\\
+% Languages: & \spkg{babel}, \spkg{cjkpunct}, \ipkg{impnattypo}, \mpkg{luavlna},
+%       \spkg{polyglossia}, \spkg{xeCJK}, \mpkg{xevlna}. \\
 %
 % Chinese: & C\TeX, \spkg{ctex},
 %       \spkg{upzhkinsoku},
@@ -5620,7 +5639,7 @@
 %   \mpkg{theorem}, \mpkg{thmbox}, \mpkg{thmtools}. \\
 %
 % Additional math: & Math fonts via \SVG\ images,
-%   \spkg{accents}\ejax, \spkg{amscd}\sjax, \spkg{autobreak}\ejax, \ipkg{autonum},
+%   \spkg{accents}\ejax, \spkg{amscd}\sjax, \spkg{amscdx}, \spkg{autobreak}\ejax, \ipkg{autonum},
 %   \mpkg{backnaur}\ejax, \mpkg{bm}\ejax, \spkg{braket}\sjax,
 %   \mpkg{breqn}\ijax, \mpkg{bussproofs}\sjax, \mpkg{cases}\ijax,
 %   \spkg{centernot}\ejax, \spkg{cmbright}\ejax,
@@ -5628,15 +5647,16 @@
 %   \spkg{delarray}, \mpkg{DotArrow}\ejax, \spkg{dotlessi}\ejax, \spkg{dotlessj}\sjax,
 %   \spkg{esvect}\ejax, \spkg{extarrows}\ejax, \spkg{fixmath}\ejax,
 %   \spkg{fouridx}\ejax, \spkg{fourier}\ejax,
-%   \spkg{guass}, \spkg{hhtensor}\ejax, \spkg{icomma}\ijax, \spkg{jkmath},
+%   \spkg{guass}, \spkg{hhtensor}\ejax, \spkg{icomma}\ijax,
+%   \spkg{isomath}\ejax, \spkg{jkmath},
 %   \spkg{kpfonts}\ejax, \spkg{kpfonts-otf}\ejax,
 %   \spkg{leftidx}\ejax, \spkg{libertinust1math}\ejax, \spkg{mathalpha}\ejax,
 %   \spkg{mathastext}\ejax, \spkg{mathcomp}\ejax, \spkg{mathdesign}\ejax,
-%   \spkg{mathdots}\ejax,
-%   \spkg{mathfixs}\ejax,
+%   \spkg{mathdots}\ejax, \spkg{mathfixs}\ejax,
 %   \spkg{mathpazo}\ejax, \spkg{mathptmx}\ejax,
 %   \spkg{mathpunctspace}\ijax,
-%   \spkg{mathspec}\ejax, \mpkg{mathtools}\ejax,
+%   \spkg{mathspec}\ejax, \mpkg{mathtools}\ejax, \spkg{mattens}\ejax,
+%   \spkg{maybemath}\ijax, \spkg{mdwmath}\ejax,
 %   \mpkg{mismath}\ejax, \spkg{mleftright}\ejax,
 %   \spkg{multiobjective}\ejax, \mpkg{nccmath}\ejax,
 %   \spkg{nicematrix}\ejax, \spkg{noitcrul}\ejax,
@@ -5644,9 +5664,10 @@
 %   \spkg{pb-diagram},
 %   \spkg{pxfonts}\ejax,
 %   \ipkg{resizegather}\ijax, \spkg{rmathbr}\ejax, \spkg{scalerel}\ejax,
-%   \epkg{shuffle}\ejax, \spkg{stackrel}\ejax,
+%   \epkg{shuffle}\ejax, \spkg{skmath}\ejax, \spkg{stackrel}\ejax,
 %   \mpkg{statex2}\ejax, \mpkg{statistics}, \spkg{statmath}\ejax,
-%   \spkg{subsupscripts}\ejax, \spkg{textualicomma}\ijax,
+%   \spkg{subsupscripts}\ejax, \spkg{tensind}, \spkg{tensor}\ejax,
+%   \spkg{textualicomma}\ijax,
 %   \spkg{txfonts}\ejax, \spkg{txgreeks}\ejax,
 %   \spkg{unicode-math}\ejax, \spkg{upgreek}\ejax,
 %   \spkg{ushort}\ejax, \mpkg{witharrows}\ejax,
@@ -5694,18 +5715,20 @@
 %   References to \PDF\ files are changed to \SVG, other image types
 %   are accepted as well.
 %   \cs{rotatebox} and \cs{scalebox} are supported as well as \HTML\ can handle.
-%   \epkg{rotating} is emulated but all objects are unrotated.
+%   \epkg{rotating} is emulated but all objects are unrotated in \HTML.
 %   \env{picture}, \mpkg{tikz}, and \mpkg{xy} are converted to an \SVG\ image.
 %
 %   \smallskip
 %
 %   \mpkg{asymptote}, \spkg{curves}, \spkg{datatool},
-%   \spkg{eepic}, \epkg{epsfig}, \spkg{epstopdf},
+%   \spkg{eepic}, \mpkg{epsf}, \epkg{epsfig}, \spkg{epstopdf},
 %   \epkg{figsize}, \ipkg{fitbox},
-%   \spkg{grffile}, \mpkg{luamplib}, \epkg{media9},
-%   \epkg{movie15}, \epkg{multimedia}, \mpkg{overpic}, \spkg{pict2e},
+%   \spkg{grffile}, \mpkg{lpic}, \mpkg{luamplib}, \epkg{media9},
+%   \epkg{movie15}, \epkg{multimedia}, \mpkg{overpic}, \spkg{pict2e}, \mpkg{pinlabel},
 %   \mpkg{psfrag}, \mpkg{psfragx}, \mpkg{pst-eps}, \mpkg{pstool}, \mpkg{pstricks},
-%   \spkg{rviewport}, \mpkg{svg}, \spkg{svg-extract}, \spkg{tikz-3dplot}. \\
+%   \mpkg{rlepsf},
+%   \spkg{rviewport}, \mpkg{svg}, \spkg{svg-extract}, \mpkg{tikz}, \spkg{tikz-3dplot},
+%   \mpkg{tikz-imagelabels}, \mpkg{xy} \\
 %
 % \midrule
 %
@@ -5828,6 +5851,7 @@
 %   \spkg{circuitikz}, \spkg{econometrics}\ejax, \spkg{elements},
 %   \mpkg{engtlc}\ejax, \spkg{fast-diagram}, \mpkg{ghsystem},
 %   \spkg{hepnicenames}, \spkg{heppennames}, \spkg{hepunits}\ejax,
+%   \mpkg{isotope}\ejax,
 %   \spkg{karnaughmap}, \mpkg{karnaugh-map}, \mpkg{keystroke},
 %   \mpkg{listings}, \spkg{listingsutf8}, \spkg{linop}, \mpkg{menukeys},
 %   \mpkg{mhchem}\sjax, \mpkg{minted}, \spkg{pgfgantt},
@@ -6509,7 +6533,7 @@
 %	create a new file called |tutorial.tex|.
 %	This may be done several ways:
 %	\begin{description}
-%	\item [Copy from the documentation PDF:] \
+%	\item [Copy from the documentation \PDF:] \
 %
 %	A listing is in \cref{fig:tutorial},
 %	which may be copied/pasted from the figure directly into your own editor,
@@ -7379,7 +7403,7 @@
 % \margintag{Computer Modern}%
 % \gindex{font>Computer Modern}\gindex{Computer Modern}%
 % \watchout[\prog{pdflatex}]%
-% \watchout[DVI \prog{latex}]%
+% \watchout[\DVI\ \prog{latex}]%
 % which may be a ``type 3'' bit-mapped font which may not
 % convert well to plain text.  A ``type 1'' vector font is required.
 %
@@ -7987,7 +8011,7 @@
 % \cs{AltTextClose} & PD & End an \HTML\ \attribute{alt} tag. \\
 % \midrule
 % \cs{CSSFilename} & PS & The \CSS\ for the following files. \\
-% \cs{MathJaxFilename} & PS & The MathJax script for the following files. \\
+% \cs{MathJaxFilename} & PS & The \brand{MathJax} script for the following files. \\
 % \midrule
 % \cs{HTMLLanguage} & PS & The \HTML\ \attribute{lang} tag. \\
 % \cs{HTMLTitle} & PS & The homepage's \element{title}, overriding \cs{title}. \\
@@ -8234,11 +8258,11 @@
 %
 % \ItemDescribeMacro{\MathJaxFilename}  \marg{filename}
 %   \DescribeDefault{\filenm{lwarp_mathjax.txt}} \quad
-%   Sets the MathJax script file to use for the following
+%   Sets the \brand{MathJax} script file to use for the following
 %   files.  May be changed before each each sectioning command which would
 %   cause a file split.
 %
-%   The MathJax script file is copied into the head of each \HTML\ file.
+%   The \brand{MathJax} script file is copied into the head of each \HTML\ file.
 %   This may be used to point to a local repository, add extensions, or change
 %   the script somewhere in the middle of the document.
 %   \cs{MathJaxFilename} may be used before each file break to set the script file for
@@ -9136,7 +9160,7 @@
 %           emulated in \brand{MathJax}.
 % \item Fitting features: \cs{tcboxfit} becomes \cs{tcbox} in \HTML.
 % \item Footnote numbering does not match the printed output.\watchout[footnotes]
-% \item MathJax emulation is provided for common macros.
+% \item \brand{MathJax} emulation is provided for common macros.
 % \end{itemize}
 %
 % If using \pkg{cleveref},
@@ -10695,14 +10719,6 @@
 % See \cref{sec:mhchem}.
 %
 %
-% \subsubsection{\pkg{xparse} package}
-%
-% \changes{v0.45}{2017/12/09}{Docs: \pkg{xparse} warnings.}
-% \DescribePackage{xparse}
-% \limitsxparse
-% \gindex{xparse=\pkg{xparse}>warnings}
-%
-%
 % \subsubsection{\pkg{kotex} package}
 %
 % \DescribePackage{kotex}
@@ -11375,7 +11391,7 @@
 %
 % Equation numbering is not automatic, but the equation numbers in \SVG\ math
 % will match the \LaTeX\ and \HTML\ output.
-% SVG math is recommended when using the \AmS\ environments, which may have
+% \SVG\ math is recommended when using the \AmS\ environments, which may have
 % multiple numbered equations per object.
 %
 % As of when last checked, \brand{LibreOffice} ignores the following:
@@ -11820,7 +11836,7 @@
 %   avoid corrupted \HTML\ output.
 % \item[(width,height) missing a comma:] \cs{makebox} and \cs{framebox} can accept
 %   a parenthesis-delimited width and height, which must be separated by a comma.
-% \item[``Load graphicx or graphics for improved SVG math baselines.'':] \SVG\ math
+% \item[``Load graphicx or graphics for improved \SVG\ math baselines.'':] \SVG\ math
 %   sizing and baselines are improved if either of these packages are used.
 % \item[``Load graphicx or graphics for improved XeTeX logo.'':] If these packages
 %   are loaded, the \XeLaTeX\ logo can use the reversed ``E''.
@@ -11976,7 +11992,7 @@
 %
 %           If using BibTeX, see \cref{sec:limitsbibtex}.\watchout[BibTeX]
 %
-%       \item[``\texttt{!~Undefined control sequence. \dots\ \cs{@begindocumenthook}''}:] ~
+%       \item[``\texttt{!~Undefined control sequence. \dots\ \cs{\_\_hook} begindocument''}:] ~
 %           \watchout[\pkg{polyglossia}] \\
 %           See \cref{sec:limitspolyglossia}
 %           if using \pkg{polyglossia}.
@@ -12104,7 +12120,7 @@
 %	\item Enter \cmds{lwarpmk limages} to refresh the \env{lateximage} images.
 %	\end{itemize}
 %
-% \item[SVG images:] \
+% \item[\SVG\ images:] \
 %
 % \limitssvgimages
 %
@@ -12746,6 +12762,7 @@
 % \changes{v0.88}{2020/07/07}{Prevented \pkg{shadethm}.}
 % \changes{v0.891}{2020/09/16}{Prevented \pkg{libgreek}.}
 % \changes{v0.893}{2020/11/15}{Allowed \pkg{picinpar}.}
+% \changes{v0.895}{2021/01/19}{Allowed \pkg{epsf}.}
 %
 %  ^^A *earlyloadnever *loadnever
 %    \begin{macrocode}
@@ -12766,7 +12783,6 @@
 \LWR at earlyloadnever{colortab}{colortbl}
 \LWR at earlyloadnever{csvtools}{datatool}
 \LWR at earlyloadnever{doublespace}{setspace}
-\LWR at earlyloadnever{epsf}{graphicx}
 \LWR at earlyloadnever{fancyheadings}{fancyhdr}
 \LWR at earlyloadnever{fncylab}{cleveref}
 \LWR at earlyloadnever{formula}{siunitx}
@@ -12835,6 +12851,7 @@
 \LWR at loadafter{algorithm2e}
 \LWR at loadafter{algorithmicx}
 \LWR at loadafter{alltt}
+\LWR at loadafter{amscdx}
 % \LWR at loadafter{amsmath}% may be preloaded
 % \LWR at loadafter{amsthm}% may be preloaded
 \LWR at loadafter{anonchap}
@@ -12943,6 +12960,7 @@
 \LWR at notmemoirloadafter{enumerate}
 \LWR at loadafter{enumitem}
 \LWR at notmemoirloadafter{epigraph}
+\LWR at loadafter{epsf}
 \LWR at loadafter{epsfig}
 \LWR at loadafter{epstopdf}
 \LWR at loadafter{epstopdf-base}
@@ -13036,11 +13054,14 @@
 \LWR at loadafter{idxlayout}
 \LWR at loadafter{ifoddpage}
 \LWR at loadafter{imakeidx}
+\LWR at loadafter{impnattypo}
 \LWR at notmemoirloadafter{index}
 % inputenc must be loaded before lwarp
 % inputenx must be loaded before lwarp
 % inputtrc may be loaded before lwarp
 \LWR at loadafter{intopdf}
+\LWR at loadafter{isomath}
+\LWR at loadafter{isotope}
 \LWR at loadafter{jurabib}
 \LWR at loadafter{karnaugh-map}
 \LWR at loadafter{keyfloat}
@@ -13060,6 +13081,7 @@
 \LWR at loadafter{listings}
 \LWR at loadafter{listliketab}
 \LWR at loadafter{longtable}
+\LWR at loadafter{lpic}
 \LWR at loadafter{lscape}
 \LWR at loadafter{ltablex}
 \LWR at loadafter{ltcaption}
@@ -13070,6 +13092,7 @@
 \LWR at loadafter{luacolor}
 \LWR at loadafter{luamplib}
 \LWR at loadafter{luatodonotes}
+\LWR at loadafter{luavlna}
 \LWR at loadafter{lyluatex}
 \LWR at loadafter{magaz}
 \LWR at notmemoirloadafter{makeidx}
@@ -13088,8 +13111,11 @@
 \LWR at loadafter{mathptmx}
 \LWR at loadafter{mathspec}
 \LWR at loadafter{mathtools}
+\LWR at loadafter{mattens}
+\LWR at loadafter{maybemath}
 \LWR at loadafter{mcaption}
 \LWR at loadafter{mdframed}
+\LWR at loadafter{mdwmath}
 \LWR at loadafter{media9}
 \LWR at loadafter{memhfixc}
 \LWR at loadafter{menukeys}
@@ -13177,6 +13203,7 @@
 \LWR at loadafter{physunits}
 \LWR at loadafter{picinpar}
 \LWR at loadafter{pifont}
+\LWR at loadafter{pinlabel}
 \LWR at loadafter{placeins}
 \LWR at loadafter{plarray}
 \LWR at loadafter{plarydshln}
@@ -13208,6 +13235,7 @@
 \LWR at loadafter{repeatindex}
 \LWR at loadafter{resizegather}
 \LWR at loadafter{returntogrid}
+\LWR at loadafter{rlepsf}
 \LWR at loadafter{rmathbr}
 \LWR at loadafter{rmpage}
 \LWR at loadafter{romanbar}
@@ -13242,6 +13270,7 @@
 \LWR at loadafter{simplebnf}
 \LWR at loadafter{SIunits}
 \LWR at loadafter{siunitx}
+\LWR at loadafter{skmath}
 \LWR at loadafter{slantsc}
 \LWR at loadafter{slashed}
 \LWR at loadafter{soul}
@@ -13277,6 +13306,7 @@
 \LWR at loadafter{tagpdf}
 \LWR at loadafter{tascmac}
 \LWR at loadafter{tcolorbox}
+\LWR at loadafter{tensor}
 \LWR at loadafter{termcal}
 \LWR at loadafter{textarea}
 % \LWR at loadafter{textcomp}% maybe before lwarp with font packages
@@ -13294,6 +13324,7 @@
 \LWR at loadafter{thumb}
 \LWR at loadafter{thumbs}
 \LWR at loadafter{tikz}
+\LWR at loadafter{tikz-imagelabels}
 \LWR at loadafter{titleps}
 \LWR at loadafter{titlesec}
 \LWR at loadafter{titletoc}
@@ -13351,6 +13382,7 @@
 \LWR at loadafter{xechangebar}
 \LWR at loadafter{xellipsis}
 % xetexko-vertical must be loaded before lwarp
+\LWR at loadafter{xevlna}
 \LWR at loadafter{xfakebold}
 \LWR at loadafter{xfrac}
 \LWR at loadafter{xltabular}
@@ -13452,7 +13484,7 @@
 %
 %
 % \section{Unicode input characters}
-% \changes{v0.18}{2016/05/17}{PDF Unicode input characters.}
+% \changes{v0.18}{2016/05/17}{PDF=\PDF\ Unicode input characters.}
 % \gindex{Unicode>input characters}
 %
 % \codeall
@@ -13528,7 +13560,7 @@
 %
 % \section{Upright quotes}
 %
-% In PDF\TeX, preserve upright quotes in verbatim text.
+% In pdf\TeX, preserve upright quotes in verbatim text.
 % \pkg{upquote} also loads \pkg{textcomp}.
 %
 % \changes{v0.63}{2018/11/25}{p\TeX: Load \pkg{upquote}.}
@@ -13544,8 +13576,35 @@
 %
 %
 %
+% \section{Avoid bad font combinations}
 %
+% For \XeLaTeX\ and \LuaLaTeX, certain font combinations cause problems
+% with \pkg{lwarp}.
 %
+% \pkg{libertinus-otf} has special handling for \cs{textquotedbl}.
+% Search for \cs{LWR at orig@textquotedbl}.
+%
+% \changes{v0.895}{2021/01/14}{Use \pkg{kpfonts-otf} if \LuaLaTeX, \XeLaTeX.}
+%
+%    \begin{macrocode}
+\ifxetexorluatex
+    \AtBeginDocument{
+        \@ifpackageloaded{kpfonts}{
+            \PackageError{lwarp}
+                {%
+                    When using XeLaTeX or LuaLaTeX,\MessageBreak
+                    use kpfonts-otf instead of kpfonts%
+                }
+                {%
+                    Replace: \protect\usepackage{kpfonts}\MessageBreak
+                    with: \protect\usepackage{kpfonts-otf}
+                }
+        }{}
+    }
+\fi
+%    \end{macrocode}
+%
+%
 % \section{Miscellaneous tools}
 %
 %
@@ -14961,7 +15020,7 @@
 % \changes{v0.20}{2017/01/12}{Page geometry set to 6in wide with large margins.}
 % \changes{v0.27}{2017/04/04}{Page geometry modified to reduce line overflow.}
 % \changes{v0.28}{2017/04/13}{Forced oneside to maintain large right margin.}
-% \changes{v0.52}{2018/03/31}{Fix: MathJax script line wraps.  Reduced right margin.}
+% \changes{v0.52}{2018/03/31}{Fix: \brand{MathJax} script line wraps.  Reduced right margin.}
 % \changes{v0.74}{2019/08/13}{Remembers user's geometry.}
 %
 % \codehtml
@@ -15464,6 +15523,7 @@
 % \changes{v0.88}{2020/07/07}{Prevented \pkg{shadethm}.}
 % \changes{v0.891}{2020/09/16}{Prevented \pkg{libgreek}.}
 % \changes{v0.893}{2020/11/15}{Allowed \pkg{picinpar}.}
+% \changes{v0.895}{2021/01/19}{Allowed \pkg{epsf}.}
 
 % The following should never be loaded:
 %
@@ -15481,7 +15541,6 @@
 \LWR at checkloadnever{#1}{colortab}{colortbl}
 \LWR at checkloadnever{#1}{csvtools}{datatool}
 \LWR at checkloadnever{#1}{doublespace}{setspace}
-\LWR at checkloadnever{#1}{epsf}{graphicx}
 \LWR at checkloadnever{#1}{fancyheadings}{fancyhdr}
 \LWR at checkloadnever{#1}{fncylab}{cleveref}
 \LWR at checkloadnever{#1}{formula}{siunitx}
@@ -15505,6 +15564,7 @@
 %
 % ^^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 at checkloadbefore{#1}{ctex}
 \LWR at checkloadbefore{#1}{fontspec}
@@ -15513,6 +15573,7 @@
 \LWR at checkloadbefore{#1}{nfssext-cfr}
 \LWR at checkloadbefore{#1}{fontaxes}
 \LWR at checkloadbefore{#1}{kotex}
+\LWR at checkloadbefore{#1}{kpfonts}% textcomp option clash
 \LWR at checkloadbefore{#1}{luatexja}
 \LWR at checkloadbefore{#1}{luatexja-fontspec}
 \LWR at checkloadbefore{#1}{luatexko}
@@ -16479,6 +16540,7 @@
 \begin{warpHTML}
 %    \end{macrocode}
 %
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \AtBeginDocument{
 \ifbool{FormatWP}{
@@ -16496,11 +16558,11 @@
 \renewcommand*{\LWR at tagsubsubsectionend}{/h5}
 \renewcommand*{\LWR at tagparagraph}{h6}
 \renewcommand*{\LWR at tagparagraphend}{/h6}
-\renewcommand*{\LWR at tagsubparagraph}{span class="subparagraph"}
+\renewcommand*{\LWR at tagsubparagraph}{span class=\textquotedbl{}subparagraph\textquotedbl}
 \renewcommand*{\LWR at tagsubparagraphend}{/span}
 }% WPTitleHeading
 {% not WPTitleHeading, part and section starting at h1
-\renewcommand*{\LWR at tagtitle}{div class="title"}
+\renewcommand*{\LWR at tagtitle}{div class=\textquotedbl{}title\textquotedbl}
 \renewcommand*{\LWR at tagtitleend}{/div}
 \renewcommand*{\LWR at tagpart}{h1}
 \renewcommand*{\LWR at tagpartend}{/h1}
@@ -16519,7 +16581,7 @@
 {% chapter defined
 \ifbool{WPTitleHeading}{}
 {% not WPTitleHeading, part and chapter starting at h1
-\renewcommand*{\LWR at tagtitle}{div class="title"}
+\renewcommand*{\LWR at tagtitle}{div class=\textquotedbl{}title\textquotedbl}
 \renewcommand*{\LWR at tagtitleend}{/div}
 \renewcommand*{\LWR at tagpart}{h1}
 \renewcommand*{\LWR at tagpartend}{/h1}
@@ -16533,7 +16595,7 @@
 \renewcommand*{\LWR at tagsubsubsectionend}{/h5}
 \renewcommand*{\LWR at tagparagraph}{h6}
 \renewcommand*{\LWR at tagparagraphend}{/h6}
-\renewcommand*{\LWR at tagsubparagraph}{span class="subparagraph"}
+\renewcommand*{\LWR at tagsubparagraph}{span class=\textquotedbl{}subparagraph\textquotedbl}
 \renewcommand*{\LWR at tagsubparagraphend}{/span}
 }% not WPTitleHeading
 }% chapter defined
@@ -16592,9 +16654,22 @@
 %    \begin{macrocode}
 \let\LWR at origvdots\vdots
 %    \end{macrocode}
+%
+% \pkg{libertinus-otf} has too much kerning for \cs{textquotedbl},
+% causing an extra space.
+% \changes{v0.895}{2021/01/14}{Fixed \pkg{libertinus-otf} \cs{textquotedbl} kern.}
 %    \begin{macrocode}
-\let\LWR at orig@textquotedbl\textquotedbl
+\LetLtxMacro\LWR at orig@@textquotedbl\textquotedbl
+\LetLtxMacro\LWR at orig@textquotedbl\LWR at orig@@textquotedbl
 
+\AtEndPreamble{
+\@ifpackageloaded{libertinus-otf}{
+    \renewcommand{\LWR at orig@textquotedbl}{\LWR at orig@@textquotedbl\kern-.15em}
+    \LetLtxMacro\textquotedbl\LWR at orig@textquotedbl
+}{}
+}
+%    \end{macrocode}
+%    \begin{macrocode}
 \LetLtxMacro\LWR at origttfamily\ttfamily
 
 \LetLtxMacro\LWR at origem\em
@@ -16892,7 +16967,7 @@
     \PackageError{lwarp}%
         {Unknown LaTeX engine}%
         {%
-            Lwarp only knows about pdflatex, dvi latex,
+            Lwarp only knows about pdflatex, DVI latex,
             xelatex, lualatex, and upLateX.%
         }%
 }
@@ -17323,7 +17398,7 @@
 \begin{filecontents*}[overwrite]{lwarp.css}
 /*
   CSS stylesheet for the LaTeX Lwarp package
-  Copyright 2016-2020 Brian Dunn — BD Tech Concepts LLC
+  Copyright 2016-2021 Brian Dunn — BD Tech Concepts LLC
 */
 
 
@@ -19744,8 +19819,8 @@
 % \credits{Davide P. Cervone}
 
 % \DescribeFile{lwarp_mathjax.txt}
-% The default MathJax script used by \pkg{lwarp} when using \brand{MathJax}.
-% A recent version of MathJax is used, as served by the recommended repository.
+% The default \brand{MathJax} script used by \pkg{lwarp} when using \brand{MathJax}.
+% A recent version of \brand{MathJax} is used, as served by the recommended repository.
 % Adjustments are made to allow \LaTeX\ to control the equation tags
 % and provide for starred macros.
 %
@@ -19781,6 +19856,7 @@
 % \changes{v0.87}{2020/05/20}{File: \filenm{lwarp_mathjax.txt}: Now provides \cs{ifstar}, \cs{ifnextchar}.}
 % \changes{v0.891}{2020/09/07}{File: \filenm{lwarp_mathjax.txt}: Renamed \filenm{tagformat} extension.}
 % \changes{v0.892}{2020/09/26}{File: \filenm{lwarp_mathjax.txt}: Added \cs{left} \Slash \cs{right} delimiters.}
+% \changes{v0.895}{2021/01/13}{File: \filenm{lwarp_mathjax.txt}: Added \cs{ifblank}, \cs{ifstrequal} macros.}
 % ^^A *lwarp_mathjax.txt
 %
 % \codeconfig
@@ -19832,10 +19908,13 @@
         }
       }
 
-      //  Create the command map for \ifstar, \ifnextchar, \seteqnumber
-      new CommandMap('ifstar-ifnextchar-setequnumber', {
+      //  Create the command map for:
+      //    \ifstar, \ifnextchar, \ifblank, \ifstrequal, \seteqnumber
+      new CommandMap('Lwarp-macros', {
         ifstar: 'IfstarFunction',
         ifnextchar: 'IfnextcharFunction',
+        ifblank: 'IfblankFunction',
+        ifstrequal: 'IfstrequalFunction',
         seteqnumber: 'SeteqnumberFunction'
       }, {
         //  This function implements an ifstar macro.
@@ -19859,6 +19938,25 @@
           useArgument(parser, gotchar ? resultnextchar : resultnotnextchar);
         },
 
+        // This function implements an ifblank macro.
+        IfblankFunction(parser, name) {
+          const blankarg = parser.GetArgument(name);
+          const resultblank = parser.GetArgument(name);
+          const resultnotblank = parser.GetArgument(name);
+          const isblank = (blankarg.trim() == "");
+          useArgument(parser, isblank ? resultblank : resultnotblank);
+        },
+
+        // This function implements an ifstrequal macro.
+        IfstrequalFunction(parser, name) {
+          const strequalfirst = parser.GetArgument(name);
+          const strequalsecond = parser.GetArgument(name);
+          const resultequal = parser.GetArgument(name);
+          const resultnotequal = parser.GetArgument(name);
+          const isequal = (strequalfirst == strequalsecond);
+          useArgument(parser, isequal ? resultequal : resultnotequal);
+        },
+
         //  This function modifies the equation numbers.
         SeteqnumberFunction(parser, name) {
             //  Get the macro parameters
@@ -19874,9 +19972,9 @@
 
       });
 
-      //  Create the ifstar-ifnextchar-setequnumber package
-      Configuration.create('ifstar-ifnextchar-setequnumber', {
-        handler: {macro: ['ifstar-ifnextchar-setequnumber']}
+      //  Create the Lwarp-macros package
+      Configuration.create('Lwarp-macros', {
+        handler: {macro: ['Lwarp-macros']}
       });
 
       MathJax.startup.defaultReady();
@@ -19943,7 +20041,7 @@
   },    // startup
 
   tex: {
-    packages: {'[+]': ['tagformat', 'ifstar-ifnextchar-setequnumber', 'textmacros']},
+    packages: {'[+]': ['tagformat', 'Lwarp-macros', 'textmacros']},
     tags: "ams",
         tagformat: {
             number: function (n) {
@@ -20091,10 +20189,10 @@
 \begin{filecontents*}[overwrite]{lwarpmk.lua}
 #!/usr/bin/env texlua
 
--- Copyright 2016-2020 Brian Dunn
+-- Copyright 2016-2021 Brian Dunn
 
 
-printversion = "v0.894"
+printversion = "v0.895"
 requiredconfversion = "2" -- also at *lwarpmk.conf
 
 function printhelp ()
@@ -21347,11 +21445,11 @@
 
 
 % \DescribeBoolean{LWR at mathmacro} True if currently defining math macros.
-%   Used to disable \SVG\ math hashing and MathJax math contents while
+%   Used to disable \SVG\ math hashing and \brand{MathJax} math contents while
 %   defining a macro using inline math.
 %   Begin a macro, it is not guaranteed that the contents are static, and so
 %   the image must be unique.  The contents also almost certainly will not be
-%   parsed correctly by MathJax.
+%   parsed correctly by \brand{MathJax}.
 %    \begin{macrocode}
 \newbool{LWR at mathmacro}
 \boolfalse{LWR at mathmacro}
@@ -21397,7 +21495,7 @@
 % value of a counter, then \cs{inlinemathother} must be used before the
 % inline math expression, and \cs{inlinemathnormal} must be used after.
 %
-% For MathJax, the inline math expression is usually printed for MathJax to
+% For \brand{MathJax}, the inline math expression is usually printed for \brand{MathJax} to
 % interpret.  When marked as dynamic math, the following inline math expression
 % will be displayed as an unhashed inline \SVG\ image instead.
 %
@@ -21473,7 +21571,7 @@
 \newcommand*{\HTMLentity}[1]{%
 % \LWR at traceinfo{HTMLentity \detokenize{#1}}%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \LWR at origampersand#1;%
 \endgroup%
 % \LWR at traceinfo{HTMLentity done}%
@@ -21716,7 +21814,7 @@
 %
 % Prints the filename for the given label
 %
-% \changes{v0.50}{2018/02/20}{Fix: SVG math in a section name.}
+% \changes{v0.50}{2018/02/20}{Fix: \SVG\ math in a section name.}
 %    \begin{macrocode}
 \newcommand*{\LWR at htmlrefsectionfilename}[1]{%
     \LWR at traceinfo{LWR at htmlrefsectionfilename: !\detokenize{#1}!}%
@@ -22181,10 +22279,11 @@
 % \subsection{Mapping \LaTeX\ sections to \HTML\ sections}
 %
 % \changes{v0.73}{2019/06/21}{Added \cs{book} for \pkg{memoir}.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \newcommand*{\LWR at tagtitle}{h1}
 \newcommand*{\LWR at tagtitleend}{/h1}
-\newcommand*{\LWR at tagbook}{div class="book"}
+\newcommand*{\LWR at tagbook}{div class=\textquotedbl{}book\textquotedbl}
 \newcommand*{\LWR at tagbookend}{/div}
 \newcommand*{\LWR at tagpart}{h2}
 \newcommand*{\LWR at tagpartend}{/h2}
@@ -22196,9 +22295,9 @@
 \newcommand*{\LWR at tagsubsectionend}{/h5}
 \newcommand*{\LWR at tagsubsubsection}{h6}
 \newcommand*{\LWR at tagsubsubsectionend}{/h6}
-\newcommand*{\LWR at tagparagraph}{span class="paragraph"}
+\newcommand*{\LWR at tagparagraph}{span class=\textquotedbl{}paragraph\textquotedbl}
 \newcommand*{\LWR at tagparagraphend}{/span}
-\newcommand*{\LWR at tagsubparagraph}{span class="subparagraph"}
+\newcommand*{\LWR at tagsubparagraph}{span class=\textquotedbl{}subparagraph\textquotedbl}
 \newcommand*{\LWR at tagsubparagraphend}{/span}
 
 \newcommand*{\LWR at tagregularparagraph}{p}
@@ -22205,7 +22304,22 @@
 %    \end{macrocode}
 
 
+% \subsection{Hook while processing tags}
+%
+% This is used to disable special text processing while processing \HTML\ tags.
+% Special processing includes that done by
+% \pkg{babel-french}, \pkg{luavina}, \pkg{xevlna}.
+%
+% \begin{macro}{\LWR at hook@processingtags} Disable special text processing
+%       while generating tags.
+%       Replaces \cs{LWR at FBcancel} in most places.
+% \changes{v0.895}{2021/01/12}{Added.}
+%    \begin{macrocode}
+\newcommand*{\LWR at hook@processingtags}{}
+%    \end{macrocode}
+% \end{macro}
 
+
 % \subsection{Babel-French tag modifications}
 
 % \changes{v0.34}{2017/08/03}{\pkg{babel-french}: Adds fixed-width \HTML\ spaces to punctuation.}
@@ -22231,6 +22345,7 @@
     {}%
     {%
         \LetLtxMacro\LWR at FBcancel\NoAutoSpacing%
+        \appto{\LWR at hook@processingtags}{\LWR at FBcancel}%
     }%
 
 \@ifundefined{frenchbsetup}%
@@ -22243,31 +22358,31 @@
 %
     \renewrobustcmd*{\FBcolonspace}{%
         \begingroup%
-        \LWR at FBcancel%
+        \LWR at hook@processingtags%
         \LWR at origampersand{}nbsp;%
         \endgroup%
     }%
     \renewrobustcmd*{\FBthinspace}{%
         \begingroup%
-        \LWR at FBcancel%
+        \LWR at hook@processingtags%
         \LWR at origampersand\LWR at origpound{}x202f;% \,
         \endgroup%
     }%
     \renewrobustcmd*{\FBguillspace}{%
         \begingroup%
-        \LWR at FBcancel%
+        \LWR at hook@processingtags%
         \LWR at origampersand{}nbsp;% ~,  for \og xyz \fg{}
         \endgroup%
     }%
     \DeclareDocumentCommand{\FBmedkern}{}{%
         \begingroup%
-        \LWR at FBcancel%
+        \LWR at hook@processingtags%
         \LWR at origampersand\LWR at origpound{}x202f;% \,
         \endgroup%
     }%
     \DeclareDocumentCommand{\FBthickkern}{}{%
         \begingroup%
-        \LWR at FBcancel%
+        \LWR at hook@processingtags%
         \LWR at origampersand{}nbsp;% ~
         \endgroup%
     }%
@@ -22316,7 +22431,7 @@
 \newcommand*{\LWR at htmltagc}[1]{%
 \LWR at traceinfo{LWR at htmltagc !\detokenize{#1}!}%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \ifmmode\else\protect\LWR at print@normalfont\protect\LWR at origttfamily\fi%
 \protect\LWR at origtextless%
 \LWR at isolate{#1}%
@@ -22496,7 +22611,7 @@
 {%
 % \LWR at traceinfo{LWR at htmlopencomment}%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \ifmmode\else\protect\LWR at print@normalfont\protect\LWR at origttfamily\fi%
 \LWR at print@mbox{\LWR at origtextless{}!-\/-}%
 \endgroup%
@@ -22507,7 +22622,7 @@
 {%
 % \LWR at traceinfo{LWR at htmlclosecomment}%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \ifmmode\else\protect\LWR at print@normalfont\protect\LWR at origttfamily\fi%
 \LWR at print@mbox{-\/-\LWR at origtextgreater}%
 \endgroup%
@@ -23461,7 +23576,7 @@
 
 
 
-% \section{MathJax script}
+% \section{\brand{MathJax} script}
 
 % \codehtml
 %    \begin{macrocode}
@@ -23470,11 +23585,11 @@
 
 % \begin{macro}{\LWR at mathjaxfilename}
 % \DescribeDefault{\filenm{lwarp_mathjax.txt}}
-% The MathJax script filename to use.
+% The \brand{MathJax} script filename to use.
 % This file is copied into the head of each \HTML\ page.
 % This may be changed mid-document using \cs{MathJaxFilename},
-% allowing the use of a custom MathJax script, such as for a local repository,
-% or different MathJax script files to be used for different sections of the document.
+% allowing the use of a custom \brand{MathJax} script, such as for a local repository,
+% or different \brand{MathJax} script files to be used for different sections of the document.
 %
 % \changes{v0.70}{2019/03/24}{Added.}
 %    \begin{macrocode}
@@ -23483,7 +23598,7 @@
 % \end{macro}
 
 % \begin{macro}{\MathJaxFilename} \marg{filename} \qquad
-% Assigns the MathJax script file to be used by the following \HTML\ pages.
+% Assigns the \brand{MathJax} script file to be used by the following \HTML\ pages.
 %
 % \changes{v0.70}{2019/03/24}{Added.}
 %    \begin{macrocode}
@@ -24563,7 +24678,7 @@
     \LWR at replacestrings{'}{'}%
     \LWR at replacestrings{`}{`}%
 %    \end{macrocode}
-% MathJax allows expressions to be defined with \cs{newcommand}.
+% \brand{MathJax} allows expressions to be defined with \cs{newcommand}.
 % These expressions would appear with |##| for each argument,
 % and each must be changed to a single |#|.
 % This must be done after all the above changes.
@@ -24587,7 +24702,7 @@
 % and fully expand the strings:
 %    \begin{macrocode}
     \begingroup%
-    \LWR at FBcancel%
+    \LWR at hook@processingtags%
     \edef\LWR at strresult{\detokenize{#1}}%
     \LWR at subHTMLsanitize%
     \LWR at strresult%
@@ -24625,7 +24740,7 @@
 % and fully expand the strings:
 %    \begin{macrocode}
     \begingroup%
-    \LWR at FBcancel%
+    \LWR at hook@processingtags%
 %    \end{macrocode}
 % The difference between this and \cs{LWR at HTMLsanitize} (without ``expand'')
 % is the following \cs{expandafter}:
@@ -24676,7 +24791,7 @@
 %    \begin{macrocode}
 \newcommand*{\LWR at subcustomizedmathjax}[1]{%
     \begingroup%
-    \LWR at FBcancel%
+    \LWR at hook@processingtags%
     \edef\LWR at strresult{\detokenize{#1}}%
     \LWR at subHTMLsanitize%
     \xdef\LWR at customizedMathJax{%
@@ -24703,7 +24818,7 @@
 \newcommand*{\CustomizeMathJax}[1]{%
     \ifbool{LWR at warnedcustomizemathjax}{}{%
         \StrLen{\detokenize{#1}}[\LWR at tempone]%
-        \ifnumgreater{\LWR at tempone}{200}{%
+        \ifnumgreater{\LWR at tempone}{350}{%
             \AtEndDocument{%
                 \PackageWarningNoLine{lwarp}{%
                     To ensure faster MathJax compilation, place each\MessageBreak
@@ -24736,6 +24851,7 @@
 %    \end{macrocode}
 % \end{macro}
 
+
 % ^^A *mathjax customizations
 % Default customizations:
 % \margintag{defaults}
@@ -24832,7 +24948,7 @@
 
 
 % \begin{macro}{\LWR at customizeMathJax}
-%   Prints MathJax commands to the \HTML\ output.
+%   Prints \brand{MathJax} commands to the \HTML\ output.
 %
 % \changes{v0.79}{2020/01/28}{MathJax: Hide definitions.}
 %    \begin{macrocode}
@@ -25106,7 +25222,7 @@
 % Uses pipe-separated fields for |split_html.gawk|.
 % Uses monospaced font with ligatures disabled for everything except the title.
 %
-% \changes{v0.50}{2018/02/20}{Fix: SVG math in a section name.}
+% \changes{v0.50}{2018/02/20}{Fix: \SVG\ math in a section name.}
 %    \begin{macrocode}
 \LWR at traceinfo{LWR at newhtmlfile: about to print start file}%
 %    \end{macrocode}
@@ -25550,7 +25666,7 @@
 %
 % \DescribeCounter{LWR at currentautosec} Records the page number when the section
 %   was created.  (If a math expression is included in the section name,
-%   and SVG math is used, the corresponding \env{lateximage} will cause the
+%   and \SVG\ math is used, the corresponding \env{lateximage} will cause the
 %   page number to change by the time the following autosec label is created,
 %   thus the initial page number is recorded here.)
 % \changes{v0.43}{2017/11/01}{\ctr{LWR at currentautosec}: Added.}
@@ -26257,6 +26373,10 @@
 %    \end{macrocode}
 %
 % The language is user-adjustable:
+%
+% NOTE: \cs{LWR at orig@textquotedbl} is used here because \cs{textquotedbl} is
+% nullified by \cs{LWR at nullfonts} while starting the new file.
+%
 %    \begin{macrocode}
 \LWR at htmltag{%
     html lang=\LWR at orig@textquotedbl\LWR at currentHTMLLanguage\LWR at orig@textquotedbl%
@@ -26523,7 +26643,7 @@
 \global\boolfalse{LWR at doingstartpars}
 %    \end{macrocode}
 % Document and page settings:
-% \changes{v0.45}{2017/12/08}{Fix: Lateximages on incorrect pages with Mathjax.}
+% \changes{v0.45}{2017/12/08}{Fix: Lateximages on incorrect pages with \brand{Mathjax}.}
 %    \begin{macrocode}
 \mainmatter
 \LWR at origpagenumbering{arabic}
@@ -27765,11 +27885,14 @@
     \LWR at htmltag{/span}%
     \endgroup%
 }
-
+%    \end{macrocode}
+%
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
+%    \begin{macrocode}
 \xpretocmd{\verb}
     {%
         \begingroup%
-        \LWR at htmltag{span class="texttt"}%
+        \LWR at htmltag{span class=\textquotedbl{}texttt\textquotedbl}%
         \let\verb at egroup\LWR at verb@egroup at endspan%
     }
     {}
@@ -27836,7 +27959,7 @@
 %    \end{macrocode}
 % Turn off \pkg{babel-french} extra space before punctuation:
 %    \begin{macrocode}
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 %    \end{macrocode}
 % Do not produce \HTML\ tags for \cs{hspace} inside a verse |par|.
 % Restore plain \LaTeX{} \cs{hspace} functionality:
@@ -28085,8 +28208,11 @@
 % \begin{macro}{\LWR at printopenlist}
 % May be locally redefined by \env{enumerate} or \env{description}.
 % \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
-\newcommand*{\LWR at printopenlist}{ul style="\LWR at print@mbox{list-style-type:none}"}
+\newcommand*{\LWR at printopenlist}{%
+    ul style=\textquotedbl\LWR at print@mbox{list-style-type:none}\textquotedbl{}%
+}
 %    \end{macrocode}
 % \end{macro}
 
@@ -28323,10 +28449,13 @@
 
 % \begin{environment}{itemize} \oarg{options}
 % \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \newcommand*{\LWR at itemizestart}{%
 \renewcommand*{\LWR at printcloselist}{\LWR at printcloseitemize}
-\renewcommand*{\LWR at printopenlist}{ul style="\LWR at print@mbox{list-style-type:none}"}
+\renewcommand*{\LWR at printopenlist}{%
+    ul style=\textquotedbl\LWR at print@mbox{list-style-type:none}\textquotedbl{}%
+}
 \let\item\LWR at itemizeitem%
 \LWR at nulllistfills%
 }
@@ -28341,10 +28470,13 @@
 
 % \begin{environment}{enumerate} \oarg{options}
 % \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \newcommand*{\LWR at enumeratestart}{%
 \renewcommand*{\LWR at printcloselist}{\LWR at printcloseitemize}
-\renewcommand*{\LWR at printopenlist}{ul style="\LWR at print@mbox{list-style-type:none}"}
+\renewcommand*{\LWR at printopenlist}{%
+    ul style=\textquotedbl\LWR at print@mbox{list-style-type:none}\textquotedbl{}%
+}
 \let\item\LWR at itemizeitem%
 \LWR at nulllistfills%
 }
@@ -30078,6 +30210,7 @@
         \booltrue{LWR at startedrow}%
 %    \end{macrocode}
 % Create the row tag, with a class if necessary.
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
         \booltrue{LWR at intabularmetadata}%
         \ifboolexpr{%
@@ -30085,7 +30218,7 @@
             test{\ifnumcomp{\value{LWR at hdashedlines}}{>}{0}}%
         }%
         {%
-            \LWR at htmltag{tr class="hline" }%
+            \LWR at htmltag{tr class=\textquotedbl{}hline\textquotedbl }%
             \LWR at orignewline%
         }%
         {% not doing hline
@@ -30092,12 +30225,12 @@
             \ifbool{LWR at doingtbrule}%
             {%
                 \ifdefvoid{\LWR at ruleHTMLcolor}{%
-                    \LWR at htmltag{tr class="tbrule"}%
+                    \LWR at htmltag{tr class=\textquotedbl{}tbrule\textquotedbl}%
                 }{%
                     \LWR at htmltag{%
-                        tr class="tbrule" % space
-                        style="border-top: 1px solid % space
-                            \LWR at origpound\LWR at ruleHTMLcolor "%
+                        tr class=\textquotedbl{}tbrule\textquotedbl\ % space
+                        style=\textquotedbl{}border-top: 1px solid % space
+                            \LWR at origpound\LWR at ruleHTMLcolor \textquotedbl{}%
                     }%
                 }%
                 \LWR at orignewline%
@@ -30148,15 +30281,16 @@
     \LWR at traceinfo{atbang: #2 !\LWR at atbangspec!}%
 %    \end{macrocode}
 % Only generate if is not empty;
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
     \ifdefempty{\LWR at atbangspec}%
     {}%
     {% not empty
         \LWR at htmltag{%
-            td class="td#1%
+            td class=\textquotedbl{}td#1%
             \LWR at subaddcmidruletrim{}{}%
             \LWR at printbartag{#2}%
-            "%
+            \textquotedbl{}%
             \LWR at tdstartstyles%
             \LWR at addcmidrulewidth%
             \LWR at addcdashline%
@@ -30248,13 +30382,14 @@
                 \LWR at getexparray{LWR at tablecolspec}{\arabic{LWR at tableLaTeXcolindex}}%
             }%
 %    \end{macrocode}
-% print the start of a new table data cell:
+% Print the start of a new table data cell:
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
             \LWR at traceinfo{LWR at tabledatasinglecolumntag: about to print td tag}%
             \LWR at htmltag{%
-                td class="td%
+                td class=\textquotedbl{}td%
 %    \end{macrocode}
-% append this column's spec:
+% Append this column's spec:
 %    \begin{macrocode}
                 \LWR at strresult%
 %    \end{macrocode}
@@ -30264,7 +30399,7 @@
                 \LWR at addcmidruletrim%
                 \LWR at addleftmostbartag%
                 \LWR at printbartag{\arabic{LWR at tableLaTeXcolindex}}%
-                "%
+                \textquotedbl{}%
 %    \end{macrocode}
 % Add styles for rules, alignment:
 % \changes{v0.42}{2017/10/26}{If \progcode{FormatWP} add cell alignment.}
@@ -30512,11 +30647,12 @@
 
 % \begin{macro}{\LWR at tdaddstyle}
 % Starts adding a table data cell style.
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \newcommand*{\LWR at tdaddstyle}{%
     \ifbool{LWR at tdhavecellstyle}%
         {; }%
-        { style="}%
+        { style=\textquotedbl}%
     \booltrue{LWR at tdhavecellstyle}%
 }
 %    \end{macrocode}
@@ -30525,11 +30661,12 @@
 % \begin{macro}{\LWR at tdendstyles}
 % Finishes possibly adding a table data cell style.
 % Prints the closing quote.
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \newcommand*{\LWR at tdendstyles}{%
     \ifbool{LWR at tdhavecellstyle}%
         {%
-            "%
+            \textquotedbl%
             \boolfalse{LWR at tdhavecellstyle}%
         }{}%
 }
@@ -30887,11 +31024,14 @@
 
 
 % \begin{macro}{\LWR at subaddtabularcellcolor} \marg{\HTML\ color}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \newcommand*{\LWR at subaddtabularcellcolor}[1]{%
-    \LWR at htmltag{div class="cellcolor" style="%
+    \LWR at htmltag{div class=\textquotedbl{}cellcolor\textquotedbl\ % space
+        style=\textquotedbl{}%
         background:\LWR at origpound{}{}#1 %
-    " }%
+        \textquotedbl\ %
+    }% space
     \defaddtocounter{LWR at cellcolordepth}{1}%
 }
 %    \end{macrocode}
@@ -31249,20 +31389,22 @@
     \LWR at maybenewtablerow%
 %    \end{macrocode}
 % Begin the opening table data tag:
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
     \LWR at htmltag{%
-        td colspan="#4" %
+        td colspan=\textquotedbl#4\textquotedbl\ %
 %    \end{macrocode}
 % 
 %    \begin{macrocode}
         \IfValueT{#2}{ % rows?
-            rowspan="#2" %
+            rowspan=\textquotedbl#2\textquotedbl\ %
         }%
 %    \end{macrocode}
 % 
 % \changes{v0.84}{2020/04/16}{Fix: Multicolumn style.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
-        class="td%
+        class=\textquotedbl{}td%
 %    \end{macrocode}
 % Print the column type and vertical bars:
 %    \begin{macrocode}
@@ -31306,8 +31448,9 @@
             { tvertbarrdoubledash}{}%
 %    \end{macrocode}
 % Close the class tag's opening quote:
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
-        "%
+        \textquotedbl{}%
 %    \end{macrocode}
 % \changes{v0.42}{2017/10/26}{If \progcode{FormatWP} add cell alignment.}
 %    \begin{macrocode}
@@ -32139,7 +32282,7 @@
 % \begin{macro}{\LWR at nullifyNoAutoSpacing}
 % For \pkg{babel-french}, turn off auto spacing at the start of the tabular,
 % then nullify the autospacing commands inside the tabular,
-% since they were not compatible with the tabular column parsing code,
+% since they were not compatible with the tabular parsing code for each cell,
 % which uses \pkg{xstring}.
 % \changes{v0.41}{2017/10/06}{\pkg{babel-french}: Fix: \cs{NoAutoSpacing} in a tabular.}
 % \changes{v0.78}{2019/10/29}{\pkg{babel-french}: Fix: Hyperlinks.}
@@ -32762,9 +32905,10 @@
 
 
 % \begin{macro}{\LWR at label@subcreatetag} Creates the tag from \cs{LWR at sanitized}.
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \newcommand*{\LWR at label@subcreatetag}{%
-    \LWR at htmltag{a \LWR at print@mbox{id="\LWR at sanitized"}}%
+    \LWR at htmltag{a \LWR at print@mbox{id=\textquotedbl\LWR at sanitized\textquotedbl}}%
     \LWR at htmltag{/a}%
 }
 %    \end{macrocode}
@@ -32912,10 +33056,11 @@
 
 % \begin{macro}{\LWR at addlinktitle}
 % \changes{v0.74}{2019/08/25}{Added.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \newcommand*{\LWR at addlinktitle}{%
     \ifdefvoid{\LWR at ThisAltText}{}{ % space
-        title="\LWR at ThisAltText" % space
+        title=\textquotedbl\LWR at ThisAltText\textquotedbl\ % space
         \gdef\LWR at ThisAltText{}%
     }%
 }
@@ -32939,8 +33084,9 @@
     \LWR at traceinfo{LWR at startref A: !#1!}%
 %    \end{macrocode}
 % Create the filename part of the link:
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
-    \LWR at htmltag{a href="%
+    \LWR at htmltag{a href=\textquotedbl%
     \LWR at traceinfo{LWR at startref B}%
     \LWR at print@mbox{\LWR at htmlrefsectionfilename{#1}}%
     \LWR at traceinfo{LWR at startref C}%
@@ -32985,8 +33131,9 @@
     \LWR at traceinfo{LWR at startref E}%
 %    \end{macrocode}
 % Closing quote:
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
-    "%
+    \textquotedbl%
 %    \end{macrocode}
 % Maybe add a title:
 %    \begin{macrocode}
@@ -33155,7 +33302,7 @@
 % For \pkg{babel-french}:
 % \changes{v0.78}{2019/10/29}{\pkg{babel-french}: Fix: Hyperlinks.}
 %    \begin{macrocode}
-    \LWR at FBcancel%
+    \LWR at hook@processingtags%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -33176,7 +33323,7 @@
 % For \pkg{babel-french}:
 % \changes{v0.78}{2019/10/29}{\pkg{babel-french}: Fix: Hyperlinks.}
 %    \begin{macrocode}
-    \LWR at FBcancel%
+    \LWR at hook@processingtags%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -33191,14 +33338,15 @@
 % \changes{v0.18}{2016/04/14}{Improved \HTML\ output linebreaks.}
 % \changes{v0.45}{2017/12/29}{Improved URLs with underscores.}
 % \changes{v0.57}{2018/06/05}{Fix: Text catcodes.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \NewDocumentCommand{\LWR at subhyperref}{m}{%
     \LWR at traceinfo{LWR at subhyperref !#1!}%
     \LWR at sanitize{#1}%
     \LWR at htmltag{%
-        a href="\LWR at sanitized" % space
+        a href=\textquotedbl\LWR at sanitized\textquotedbl\ % space
         \LWR at addlinktitle % space
-        target="\_{}blank" % space
+        target=\textquotedbl\_{}blank\textquotedbl\ % space
     }%
 }
 %    \end{macrocode}
@@ -33225,12 +33373,13 @@
 % \changes{v0.45}{2017/12/29}{Improved URLs with underscores.}
 % \changes{v0.66}{2019/02/02}{Improved \HTML\ formatting.}
 % \changes{v0.78}{2019/11/05}{Remove extra space.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \NewDocumentCommand{\LWR at subhyperrefclass}{m +m m}{%
     \LWR at htmltag{%
         a % space
-        href="\begingroup\@sanitize#1\endgroup" % space
-        class="#3" % space
+        href=\textquotedbl\begingroup\@sanitize#1\endgroup\textquotedbl\ % space
+        class=\textquotedbl#3\textquotedbl\ % space
         \LWR at addlinktitle % space
     }\LWR at orignewline%
     #2%
@@ -33330,23 +33479,24 @@
 % \changes{v0.18}{2016/05/18}{Suppress extra space.}
 % \changes{v0.66}{2019/02/02}{Improved \HTML\ formatting.}
 % \changes{v0.74}{2019/08/20}{Add \cs{ThisAltText}.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \newcommand*{\LWR at subinlineimage}[5]{%
     \ifblank{#1}%
     {%
         \LWR at htmltag{img \LWR at indentHTML
-            src="#3.#4" \LWR at indentHTML
-            alt="#3" \LWR at indentHTML
-            style="#5" \LWR at indentHTML
-            class="#2" \LWR at orignewline
+            src=\textquotedbl#3.#4\textquotedbl \LWR at indentHTML
+            alt=\textquotedbl#3\textquotedbl \LWR at indentHTML
+            style=\textquotedbl#5\textquotedbl \LWR at indentHTML
+            class=\textquotedbl#2\textquotedbl \LWR at orignewline
         }%
     }%
     {%
         \LWR at htmltag{img \LWR at indentHTML
-            src="#3.#4" \LWR at indentHTML
-            alt="#1" \LWR at indentHTML
-            style="#5" \LWR at indentHTML
-            class="#2" \LWR at orignewline
+            src=\textquotedbl#3.#4\textquotedbl \LWR at indentHTML
+            alt=\textquotedbl#1\textquotedbl \LWR at indentHTML
+            style=\textquotedbl#5\textquotedbl \LWR at indentHTML
+            class=\textquotedbl#2\textquotedbl \LWR at orignewline
         }%
     }%
 }
@@ -33449,10 +33599,13 @@
 % \changes{v0.42}{2017/10/26}{If \progcode{FormatWP} add a text frame.}
 % \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
 % \changes{v0.56}{2018/05/14}{Adds a \element{class} per \pkg{float} package style.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
     \LWR at htmltag{%
-        figure id="\LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}" % space
-        class="#1 \@nameuse{LWR at floatstyle@#1}"%
+        figure id=\textquotedbl%
+            \LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}%
+        \textquotedbl\ % space
+        class=\textquotedbl#1 \@nameuse{LWR at floatstyle@#1}\textquotedbl%
     }%
     \ifbool{FormatWP}{%
         \LWR at orignewline%
@@ -33599,18 +33752,23 @@
 % \changes{v0.79}{2019/12/09}{Factored.}
 % \changes{v0.84}{2020/04/16}{\element{par} handling.}
 % \changes{v0.88}{2020/07/04}{Inline handling.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \newcommand*{\LWR at forcenewautoidanchor}{%
     \addtocounter{LWR at thisautoid}{1}%
     \ifbool{LWR at doingapar}%
     {%
-        \LWR at htmltag{a id="\LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}" }%
-            \LWR at htmltag{/a }%
+        \LWR at htmltag{a id=\textquotedbl%
+            \LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}%
+            \textquotedbl\ }% space
+        \LWR at htmltag{/a }%
     }%
     {%
         \LWR at stoppars%
-        \LWR at htmltag{a id="\LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}" }%
-            \LWR at htmltag{/a }%
+        \LWR at htmltag{a id=\textquotedbl%
+            \LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}%
+        \textquotedbl\ }% space
+        \LWR at htmltag{/a }%
         \LWR at startpars%
     }%
 }
@@ -35365,7 +35523,7 @@
     \LWR at restoreorigaccents%
     \LWR at restoreoriglists%
 %
-    \LWR at FBcancel%
+    \LWR at hook@processingtags%
 %    \end{macrocode}
 %
 % To enable \brand{MathJax}-specific nullification, used for \pkg{tcolorbox}:
@@ -35830,7 +35988,7 @@
 %
 % A marker with alpha or opacity of 0\% is not registered by \prog{pdfcrop}, so
 % the marker is a small square block of 1\% alpha, which seems to work while still being
-% effectively invisible in the final SVG image.
+% effectively invisible in the final \SVG\ image.
 %
 % If \pkg{graphicx} is loaded, this marker is sized as a tiny 1\,sp square.
 % If \pkg{graphics} is loaded, this marker is used at its default size of around
@@ -35935,13 +36093,13 @@
 % preferred.)
 %
 % \begin{description}
-% \item [SVG math:] \cs{LWR at origensuredmath} is part of argument \#4.
-% \item [SVG math \cs{ensuremath}:] \cs{LWR at origensuredmath} is part of argument \#4.
-% \item [SVG dynamic math:] \cs{LWR at origensuredmath} is part of argument \#4.
-% \item [Mathjax:] Argument \#4 is the contents of the math expression
+% \item [\SVG\ math:] \cs{LWR at origensuredmath} is part of argument \#4.
+% \item [\SVG\ math \cs{ensuremath}:] \cs{LWR at origensuredmath} is part of argument \#4.
+% \item [\SVG\ dynamic math:] \cs{LWR at origensuredmath} is part of argument \#4.
+% \item [\brand{MathJax}:] Argument \#4 is the contents of the math expression
 %   without \cs{LWR at origensuredmath}.  This case is handled above.
-% \item [Mathjax \cs{ensuremath}:] \cs{LWR at origensuredmath} is part of argument \#4.
-% \item [Mathjax dynamic math:]  Argument \#4 is the contents of the math expression
+% \item [\brand{MathJax} \cs{ensuremath}:] \cs{LWR at origensuredmath} is part of argument \#4.
+% \item [\brand{MathJax} dynamic math:]  Argument \#4 is the contents of the math expression
 %   without \cs{LWR at origensuredmath}, so \cs{LWR at origensuredmath} is added below.\
 % \item [\cs{ifmmode}:] Included ``just in case''.
 % \end{description}
@@ -36065,7 +36223,7 @@
 \newcommand*{\LWR at subsingledollarsvg}[4]{%
 %    \end{macrocode}
 % Measure the depth, width, and height of the math image:
-% \changes{v0.51}{2018/03/04}{Fix: SVG math with enclosed \env{lateximage}.}
+% \changes{v0.51}{2018/03/04}{Fix: \SVG\ math with enclosed \env{lateximage}.}
 %    \begin{macrocode}
     \LWR at singledollarmeasure{#4}%
 %    \end{macrocode}
@@ -36217,17 +36375,17 @@
 %                                               \marg{4: math expression}
 %
 % For inline math.
-% Uses MathJax, or for \SVG\ math the image is measured and ajusted to the baseline
+% Uses \brand{MathJax}, or for \SVG\ math the image is measured and ajusted to the baseline
 % of the \HTML\ output, and placed inside a \env{lateximage}.
 %
 % \begin{description}
-% \item [SVG math:] \cs{LWR at origensuredmath} is part of argument \#4.
-% \item [SVG math \cs{ensuremath}:] \cs{LWR at origensuredmath} is part of argument \#4.
-% \item [SVG dynamic math:] \cs{LWR at origensuredmath} is part of argument \#4.
-% \item [Mathjax:] Argument \#4 is the contents of the math expression
+% \item [\SVG\ math:] \cs{LWR at origensuredmath} is part of argument \#4.
+% \item [\SVG\ math \cs{ensuremath}:] \cs{LWR at origensuredmath} is part of argument \#4.
+% \item [\SVG\ dynamic math:] \cs{LWR at origensuredmath} is part of argument \#4.
+% \item [\brand{MathJax}:] Argument \#4 is the contents of the math expression
 %   without \cs{LWR at origensuredmath}.  This case is handled above.
-% \item [Mathjax \cs{ensuremath}:] \cs{LWR at origensuredmath} is part of argument \#4.
-% \item [Mathjax dynamic math:]  Argument \#4 is the contents of the math expression
+% \item [\brand{MathJax} \cs{ensuremath}:] \cs{LWR at origensuredmath} is part of argument \#4.
+% \item [\brand{MathJax} dynamic math:]  Argument \#4 is the contents of the math expression
 %   without \cs{LWR at origensuredmath}, so \cs{LWR at origensuredmath} is added below.\
 % \end{description}
 %
@@ -36236,7 +36394,7 @@
 % \changes{v0.19}{2016/05/25}{\brand{MathJax} support.}
 % \changes{v0.42}{2017/10/26}{If \progcode{FormatWP} print LaTeX expression.}
 % \changes{v0.47}{2018/01/24}{Added \SVG\ math image baseline adjust and em sizing.}
-% \changes{v0.50}{2018/02/23}{Fix: Use \env{lateximage} even if MathJax.}
+% \changes{v0.50}{2018/02/23}{Fix: Use \env{lateximage} even if \brand{MathJax}.}
 % \changes{v0.50}{2018/02/24}{Improved \SVG\ math \attribute{alt} tags.}
 %    \begin{macrocode}
 \newlength{\LWR at singledollarwidth}
@@ -36262,14 +36420,14 @@
 %    \begin{macrocode}
         \LWR at applyxfakebold%
 %    \end{macrocode}
-% MathJax cannot parse the often complicated \TeX\ expressions which
+% \brand{MathJax} cannot parse the often complicated \TeX\ expressions which
 % appear in the various uses of \cs{ensuredmath}.
 % \cs{ensuremath} forces the \attribute{alt} tag to ``|(math image)|'', as
 % translated according to \cs{MathImageAltText}.
-% If this is the case, force the use of a \env{lateximage} even if MathJax.
+% If this is the case, force the use of a \env{lateximage} even if \brand{MathJax}.
 % Likewise for \pkg{siunitx} if |parse-numbers=false|.
 %
-% If MathJax, or if formatting math for a word processor, and not \cs{ensuredmath},
+% If \brand{MathJax}, or if formatting math for a word processor, and not \cs{ensuredmath},
 % and not a dynamic math expression, print the math expression:
 % \changes{v0.51}{2018/03/11}{Fix: \cs{ensuredmath} inside \SVG\ image.}
 % \changes{v0.57}{2018/05/23}{Fix: Dynamic inline math expressions.}
@@ -36306,7 +36464,7 @@
             }%
         }% mathjax
 %    \end{macrocode}
-% For SVG, print the math inside a \env{lateximage},
+% For \SVG, print the math inside a \env{lateximage},
 % with an \element{alt} tag of the \LaTeX\ code,
 % and a \CSS\ style to control the baseline adjustment.
 %    \begin{macrocode}
@@ -36383,7 +36541,7 @@
 
 }% mathjax
 %    \end{macrocode}
-% For SVG, print the math inside a \env{lateximage},
+% For \SVG, print the math inside a \env{lateximage},
 %   with an \element{alt} tag of the \LaTeX\ code:
 % \changes{v0.50}{2018/02/24}{Improved \SVG\ math \attribute{alt} tags.}
 % \changes{v0.50}{2018/03/02}{Improved \SVG\ math display.}
@@ -36479,14 +36637,14 @@
 
 % \begin{macro}{\@ensuredmath} \marg{expression}
 %
-% If MathJax, a \env{lateximage} is used, since \cs{ensuremath} is
-% often used for complex \TeX\ expressions which MathJax may not render.
+% If \brand{MathJax}, a \env{lateximage} is used, since \cs{ensuremath} is
+% often used for complex \TeX\ expressions which \brand{MathJax} may not render.
 % If \SVG\ math, a hashed file is used with a simple \attribute{alt} tag, but
 % additional hashing provided by the contents.
 %
 % \changes{v0.51}{2018/02/24}{Hashes \cs{ensuremath}.}
 % \changes{v0.42}{2017/10/16}{Improved \cs{ensuremath}.}
-% \changes{v0.50}{2018/02/23}{Fix: Use \env{lateximage} even if MathJax.}
+% \changes{v0.50}{2018/02/23}{Fix: Use \env{lateximage} even if \brand{MathJax}.}
 % \changes{v0.50}{2018/02/24}{Improved \SVG\ math \attribute{alt} tags.}
 % \changes{v0.52}{2018/03/25}{Improved hashing expansion.}
 %    \begin{macrocode}
@@ -36854,7 +37012,7 @@
         \LWR at hidelatexequation{#2}{#1}
     }
 %    \end{macrocode}
-% SVG output:
+% \SVG\ output:
 % Create the |lateximage| along with an \HTML\ \element{alt} tag
 % having an equation number, the \LaTeX{} equation environment
 % commands, and the contents of the environment's \cs{BODY}.
@@ -37064,7 +37222,7 @@
 
 
 % \begin{macro}{\displaymathother} Use when display math environments have complicated
-% objects which will not work with MathJax or should not be
+% objects which will not work with \brand{MathJax} or should not be
 % included in \HTML\ \attribute{alt} tags. \margintag{complicated math objects}
 % Complicated contents are more likely to compile correctly.
 % \changes{v0.51}{2018/03/21}{Processing for complicated display math.}
@@ -37756,10 +37914,13 @@
 % Create an \HTML\ span which will hold the comment which contains the \prog{pdftotext} translation
 % of the image's page, and also will hold the link to the |.svg| file:
 % \changes{v0.66}{2019/02/02}{Improved \HTML\ formatting.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
     \LWR at htmltag{span\LWR at indentHTML%
-        id="lateximage-\BaseJobname-\arabic{LWR at lateximagenumber}"\LWR at indentHTML
-        class="lateximagesource"\LWR at orignewline
+        id=\textquotedbl{}%
+            lateximage-\BaseJobname-\arabic{LWR at lateximagenumber}%
+            \textquotedbl\LWR at indentHTML
+        class=\textquotedbl{}lateximagesource\textquotedbl\LWR at orignewline
     }%
 %    \end{macrocode}
 % Write instructions to the |<ImagesDirectory>.txt| file:
@@ -37865,7 +38026,7 @@
 %    \end{macrocode}
 %
 % Enable print-mode math functions:
-% \changes{v0.50}{2018/02/20}{Fix: SVG math in a section name.}
+% \changes{v0.50}{2018/02/20}{Fix: \SVG\ math in a section name.}
 %    \begin{macrocode}
     \LetLtxMacro$\LWR at origdollar%
     \catcode`\$=3% math shift
@@ -37872,6 +38033,7 @@
     \LetLtxMacro\(\LWR at origopenparen%
     \LetLtxMacro\)\LWR at origcloseparen%
 %    \end{macrocode}
+%
 % Only enable print-mode display math if are not already inside display math:
 % \changes{v0.51}{2018/03/21}{Processing for complicated display math.}
 %    \begin{macrocode}
@@ -37884,6 +38046,7 @@
         \csletcs{endequation*}{LWR at origendequation*}%
     }% not in display math
 %    \end{macrocode}
+%
 % For \pkg{chemformula}:
 %    \begin{macrocode}
     \LetLtxMacro\LWR at newsingledollar$%
@@ -37896,9 +38059,7 @@
 %    \end{macrocode}
 %
 %
-%
-%
-% When the environment closes:
+% When the \env{lateximage} environment closes:
 % \margintag{\cs{endlateximage}}
 %
 %    \begin{macrocode}
@@ -37905,11 +38066,13 @@
 {% start of \end{lateximage}
 \LWR at traceinfo{lateximage: starting end of lateximage}%
 %    \end{macrocode}
+%
 % Nested more than one deep?
 %    \begin{macrocode}
 \LWR at traceinfo{lateximage: internal depth was \arabic{LWR at lateximagedepth}}%
 \ifnumcomp{\value{LWR at lateximagedepth}}{>}{1}%
 %    \end{macrocode}
+%
 % If nesting inside an already existing lateximage, simply record one less level.
 % Uses a lower-level \TeX\ macro due to \AmS\ \cs{text} change of \cs{addtocounter}.
 %    \begin{macrocode}
@@ -37918,10 +38081,12 @@
     \global\advance\c at LWR@lateximagedepth -1\relax%
 }%
 %    \end{macrocode}
+%
 % If this is the outer-most lateximage:
 %    \begin{macrocode}
 {% end of outer-most lateximage
 %    \end{macrocode}
+%
 % Finish the lateximage minipage and start a new \PDF\ page:
 % \changes{v0.69}{2019/03/14}{Fix for \prog{pdftotext} errors from font size change.}
 %    \begin{macrocode}
@@ -37929,6 +38094,7 @@
     \endLWR at print@minipage%
     \LWR at maybe@orignewpage%
 %    \end{macrocode}
+%
 % Close the \HTML\ comment which encapsulated any traces of the lateximage picked up by \prog{pdftotext}:
 %    \begin{macrocode}
     \LWR at print@vspace*{.5\baselineskip}%
@@ -37935,6 +38101,7 @@
     \LWR at htmlclosecomment%
     \LWR at traceinfo{lateximage: The page after the image is \arabic{page}}%
 %    \end{macrocode}
+%
 % Create a link to the lateximage, allowing its natural height:
 % \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
 % \changes{v0.50}{2018/02/22}{MD5 hash avoids duplicate \SVG\ math.}
@@ -37948,10 +38115,12 @@
         \LWR at lateximage@oneimage{#2}{\LWR at ImagesName\theLWR at externalfilecnt}{#5}{#3}%
     }% no hash
 %    \end{macrocode}
+%
 % Be sure that are doing a paragraph:
 %    \begin{macrocode}
     \LWR at ensuredoingapar%
 %    \end{macrocode}
+%
 % Close the \HTML\ span which has the \prog{pdftotext} comment and also the link to the |.svg| image:
 %    \begin{macrocode}
     \LWR at htmltag{/span}%
@@ -37959,11 +38128,13 @@
         \LWR at htmlcomment{End of lateximage}%
     }{}%
 %    \end{macrocode}
+%
 % Undo one lateximage level.
 % This is not inside an \AmS\ \cs{text}, so regular \cs{addtocounter} may be used here.
 %    \begin{macrocode}
     \addtocounter{LWR at lateximagedepth}{-1}%
 %    \end{macrocode}
+%
 % Clear the single-use \attribute{alt} text:
 % \changes{v0.74}{2019/08/20}{Add \cs{ThisAltText}.}
 %    \begin{macrocode}
@@ -38907,13 +39078,16 @@
 % If |FormatWP|, add a text frame:
 % \changes{v0.42}{2017/10/26}{If \progcode{FormatWP} add a text frame.}
 % \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \ifbool{FormatWP}{%
 
 \addtocounter{LWR at thisautoidWP}{1}%
 \LWR at htmltag{%
-    div id="\LWR at print@mbox{autoidWP-\arabic{LWR at thisautoidWP}}" %
-    class="wpminipage"%
+    div id=\textquotedbl%
+        \LWR at print@mbox{autoidWP-\arabic{LWR at thisautoidWP}}%
+    \textquotedbl\ % space
+    class=\textquotedbl{}wpminipage\textquotedbl%
 }%
 
 }{}%
@@ -38921,9 +39095,10 @@
 %
 % Create the \element{div} tag with optional alignment style:
 % \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \LWR at traceinfo{minipage: creating div class}%
-\LWR at htmltag{div class="minipage" style="%
+\LWR at htmltag{div class=\textquotedbl{}minipage\textquotedbl\ style=\textquotedbl%
 \ifthenelse{\equal{#1}{t}}{\LWR at print@mbox{vertical-align:bottom} ; }{}%
 \ifthenelse{\equal{#1}{c}}{\LWR at print@mbox{vertical-align:middle} ; }{}%
 \ifthenelse{\equal{#1}{b}}{\LWR at print@mbox{vertical-align:top} ; }{}%
@@ -38950,7 +39125,8 @@
 }%
 \LWR at traceinfo{minipage: about to print the height}%
 \ifblank{#2}{}{height:\LWR at printlength{\LWR at minipageheight} ; }%
-"}%
+\textquotedbl%
+}%
 %    \end{macrocode}
 %
 % Finish with an empty line to start the contents on a new line.
@@ -40511,11 +40687,12 @@
     }%
 %    \end{macrocode}
 % Print the span with the converted width.  Not rounded.
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
     {%
         \LWR at htmltagc{%
-            span style="width:\LWR at printlength{\LWR at tempwidth};  % extra space
-                display:inline-block"%
+            span style=\textquotedbl{}width:\LWR at printlength{\LWR at tempwidth};  % extra space
+                display:inline-block\textquotedbl%
         }%
 %    \end{macrocode}
 % If formatting for a word processor, approximate with a number of \cs{quad}s,
@@ -40698,11 +40875,12 @@
 % less than 1pt is quite common in \LaTeX\ code.
 % \changes{v0.57}{2018/06/02}{Fix: Colored rules.}
 % \changes{v0.66}{2019/02/02}{Improved \HTML\ formatting.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
     \LWR at findcurrenttextcolor%
     \LWR at htmltagc{%
     span\LWR at indentHTML%
-    style="%
+    style=\textquotedbl%
 %    \end{macrocode}
 % The \HTML\ background color is used to draw the filled rule according
 % to the \LaTeX\ foreground color set by \cs{textcolor}.
@@ -40737,8 +40915,9 @@
     }%
 %    \end{macrocode}
 % Display inline-block to place the span inline with the text:
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
-    display:inline-block;"\LWR at orignewline%
+    display:inline-block;\textquotedbl\LWR at orignewline%
     }%
 %    \end{macrocode}
 % If formatting for a word processor, approximate with a number of underscores,
@@ -41432,7 +41611,7 @@
     \typeout{Package lwarp:}
     \typeout{If the error}
     \typeout{\space\space``! Undefined control sequence.
-        \space ... \space \protect\@begindocumenthook''}
+        \space ... \space \protect\__hook begindocument''}
     \typeout{occurs here, use the polyglossia macro:}
     \typeout{\space\space\protect\setmainlanguage\protect{...\protect}}
     \typeout{---}
@@ -41486,6 +41665,7 @@
 % To be done \cs{AtBeginDocument}.
 %
 % \changes{v0.894}{2020/12/22}{Warn if using packages not supported by \brand{MathJax}.}
+% \changes{v0.895}{2021/01/08}{Improved \brand{MathJax} warning.}
 %    \begin{macrocode}
 \newcommand*{\LWR at nomathjaxwarn}[2]{%
     \@ifpackageloaded{lwarp-#1}{%
@@ -41492,7 +41672,8 @@
         \ifblank{#2}{%
             \PackageWarningNoLine{lwarp}
                 {%
-                    Lwarp does not provide MathJax support for #1%
+                    Lwarp does not provide MathJax support for #1.\MessageBreak
+                    Use SVG math by removing the Lwarp mathjax option%
                 }
         }{%
             \PackageWarningNoLine{lwarp}
@@ -41506,7 +41687,8 @@
 %    \end{macrocode}
 %
 % \begin{macro}{\LWR at forceSVGmessage} \marg{packagename}
-% \changes{v0.894}{2020/12/22}{Improved MathJax warnings.}
+% \changes{v0.894}{2020/12/22}{Improved \brand{MathJax} warnings.}
+% \changes{v0.895}{2021/01/08}{Improved \brand{MathJax} warning.}
 %    \begin{macrocode}
 \newcommand*{\LWR at forceSVGmessage}[1]{%
     SVG math output may be enabled for select math\MessageBreak
@@ -41517,23 +41699,34 @@
     afterward to resume using MathJax math.\MessageBreak
     Before display math, use \protect\displaymathother\MessageBreak
     to begin using SVG math, and use \protect\displaymathnormal\MessageBreak
-    after to resume using MathJax for the following math%
+    after to resume using MathJax for the following math.\MessageBreak
+    Or, use SVG math for all expressions by removing\MessageBreak
+    the mathjax option for the lwarp package%
 }
 %    \end{macrocode}
 % \end{macro}
 %
+%
 % ^^A *mathjax warnings
 %
 % If \brand{MathJax} is being used, issue a warning for certain packages.
-% \changes{v0.894}{2020/12/22}{Improved MathJax warnings.}
+% \changes{v0.894}{2020/12/22}{Improved \brand{MathJax} warnings.}
+% \changes{v0.895}{2021/02/06}{Added \brand{MathJax} warnings for
+%               \pkg{aligned-overset}, \pkg{autoaligne}, \pkg{boldtensors},
+%               \pkg{liberitinust1math}, \pkg{tensind}.}
+% \changes{v0.895}{2021/02/06}{Improved \brand{MathJax} warning  for \pkg{unicode-math}.}
 %    \begin{macrocode}
 \AtBeginDocument{
     \ifbool{mathjax}{
+        \LWR at nomathjaxwarn{aligned-overset}{}
+        \LWR at nomathjaxwarn{amscdx}
+            {\LWR at forceSVGmessage{amscdx}}
         \LWR at mathjaxwarn{arydshln}
             {In a math array, do not use the optional argument\MessageBreak
             for \protect\cdashline.\space\space
             Furthermore, \protect\cline\space is not\MessageBreak
             supported by MathJax}
+        \LWR at nomathjaxwarn{autoaligne}{}
         \LWR at mathjaxwarn{autonum}
             {MathJax does not support equation+.\MessageBreak
             You may use the warpprint and warpHTML\MessageBreak
@@ -41541,6 +41734,7 @@
             and the equation+ environments}
         \LWR at mathjaxwarn{bigdelim}
             {Delimiters appear only of the first line}
+        \LWR at nomathjaxwarn{boldtensors}{}
         \LWR at mathjaxwarn{booktabs}
             {\protect\cmidrule\space is not displayed}
         \LWR at mathjaxwarn{breqn}
@@ -41555,8 +41749,18 @@
             {\LWR at forceSVGmessage{gauss}}
         \LWR at mathjaxwarn{hhline}
             {A simple \protect\hline\space is used}
+        \LWR at mathjaxwarn{isomath}
+            {Some of the symbol font macros such as \protect\mathsfbfit\MessageBreak
+                do not use a sans font because MathJax does not yet\MessageBreak
+                have sans Greek.  Tensors may look like vectors%
+            }
         \LWR at nomathjaxwarn{jkmath}
             {\LWR at forceSVGmessage{jkmath}}
+        \LWR at mathjaxwarn{libertinust1math}
+            {Some of the symbol font macros such as \protect\mathsfbfit\MessageBreak
+                do not use a sans font because MathJax does not yet\MessageBreak
+                have sans Greek.  Tensors may look like vectors%
+            }
         \LWR at mathjaxwarn{mathtools}
             {See the Lwarp manual regarding the disallowspaces\MessageBreak
             and showonlyrefs options, the alignat environment,\MessageBreak
@@ -41581,13 +41785,15 @@
 % %             {The third-party extension is not used.\MessageBreak
 %             {The MathJax v3 extension is used.\MessageBreak
 %             See the Lwarp manual for details}
+        \LWR at nomathjaxwarn{tensind}{}
         \LWR at mathjaxwarn{unicode-math}
             {Do not use embedded Unicode characters.\MessageBreak
-            Not all characters are encoded correctly.\MessageBreak
-            \protect\left\space and \protect\right\space may not work.\MessageBreak
+            (Not all characters are encoded correctly.)\MessageBreak
             Some symbol fonts are not supported by MathJax,\MessageBreak
             and are only approximated.\MessageBreak
-            Latin characters may not be correct}
+            Greek macros such as \protect\alpha\space respond to the math-style\MessageBreak
+            option.  Latin symbols does not, per MathJax\MessageBreak
+            limitations, unless placed inside \protect\symbit\space or similar}
         \LWR at nomathjaxwarn{unitsdef}{}
         \LWR at mathjaxwarn{witharrows}
             {Arrows can only point to the next line.\MessageBreak
@@ -42214,7 +42420,18 @@
     \LWR at DeclareAcronym
 }
 %    \end{macrocode}
-
+%
+%
+% Replace dot fill with simple dots:
+% \changes{v0.895}{2021/01/20}{\pkg{acro}: Updated to v3.5.}
+%    \begin{macrocode}
+\ExplSyntaxOn
+\cs_new_protected:Npn \LWR at HTML@acro_dot_fill: {\dots\space}
+\LWR at formatted{acro_dot_fill:}
+\ExplSyntaxOff
+%    \end{macrocode}
+%
+%
 % Modified to activate the current font:
 % \changes{v0.76}{2019/10/07}{\pkg{acro}: Updated for v2.10.}
 %    \begin{macrocode}
@@ -42827,6 +43044,7 @@
 %
 % \changes{v0.42}{2017/10/27}{\pkg{algorithmicx}: If \progcode{FormatWP} add \cs{quad}s.}
 % \changes{v0.44}{2017/11/16}{\pkg{algorithmicx}: Improved comment symbol.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %
 %    \begin{macrocode}
 \AtBeginEnvironment{algorithmic}{%
@@ -42836,7 +43054,9 @@
 \renewcommand*{\ALG at doentity}{%
 \origALG at doentity%
 \LWR at htmltagc{%
-span style="width:\LWR at printlength{\ALG at thistlm}; display:inline-block;"%
+    span style=\textquotedbl{}%
+        width:\LWR at printlength{\ALG at thistlm}; display:inline-block;%
+    \textquotedbl%
 }%
 \ifbool{FormatWP}{%
 \setlength{\LWR at templengthone}{\the\ALG at thistlm}%
@@ -42926,8 +43146,55 @@
 %
 %
 %
+% \iffalse
+%<*amscdx>
+% \fi
 %
+% \part{lwarp-amscdx.sty}
+%
+% \section{amscdx}
+%
+% \credits{Martin Vermeer}
+%
+% \DescribePackage{amscdx}
+% \pkg{amscdx} is used as-is for \SVG\ math.
+%
+% For \brand{MathJax}, a warning notes that the \env{CD} environment
+% \trouble[\brand{MathJax}]{amscdx=\pkg{amscdx}}
+% must be enclosed between \cs{displaymathother} and \cs{displaymathnormal}.
+%
+% \changes{v0.895}{2021/01/08}{\pkg{amscdx}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{amscdx}[2019/07/02]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{%
+    \renewenvironment{CD}
+        {\text{(Use \unicode{x005C}displaymathother before the CD enviroment.) \quad}}
+        {\quad \text{(Use \unicode{x005C}displaymathnormal after the CD enviroment.)}}
+}
+
+\CustomizeMathJax{\newcommand{\CDfattrue}{}}
+\CustomizeMathJax{\newcommand{\CDfatfalse}{}}
+\CustomizeMathJax{\newcommand{\CDashtrue}{}}
+\CustomizeMathJax{\newcommand{\CDashfalse}{}}
+\CustomizeMathJax{\newcommand{\CDlor}[1]{}}
+\end{warpMathJax}
+%    \end{macrocode}
+%
 % \iffalse
+%</amscdx>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*amsmath>
 % \fi
 %
@@ -43213,9 +43480,20 @@
 % For \brand{MathJax}:
 % \changes{v0.79}{2020/01/27}{\pkg{amsmath}: Added \brand{MathJax} emulation.}
 % \changes{v0.82}{2020/03/14}{\pkg{amsmath}: Fixed: \cs{intertext} for \brand{MathJax}.}
+% \changes{v0.895}{2021/02/11}{\pkg{amsmath}: Added \cs{Hat}, etc..}
 %    \begin{macrocode}
 \begin{warpMathJax}
 \CustomizeMathJax{\newcommand{\intertext}[1]{\text{#1}\notag \\}}
+\CustomizeMathJax{\let\Hat\hat}
+\CustomizeMathJax{\let\Check\check}
+\CustomizeMathJax{\let\Tilde\tilde}
+\CustomizeMathJax{\let\Acute\acute}
+\CustomizeMathJax{\let\Grave\grave}
+\CustomizeMathJax{\let\Dot\dot}
+\CustomizeMathJax{\let\Ddot\ddot}
+\CustomizeMathJax{\let\Breve\breve}
+\CustomizeMathJax{\let\Bar\bar}
+\CustomizeMathJax{\let\Vec\vec}
 \end{warpMathJax}
 %    \end{macrocode}
 %
@@ -44680,7 +44958,7 @@
 \renewenvironment{bnf*}{\csuse{eqnarray*}}{\csuse{endeqnarray*}}
 %    \end{macrocode}
 %
-% ^^A % For HTML without SVG images, but also without equation numbering:
+% ^^A % For HTML without \SVG\ images, but also without equation numbering:
 % ^^A %
 % ^^A % A purely \HTML\ text output is generated, without math images.
 % ^^A %
@@ -46400,7 +46678,7 @@
 % \section{cancel}
 %
 % \DescribePackage{cancel}
-% \pkg{cancel} is used as-is for SVG math, and emulated for \HTML\ text output.
+% \pkg{cancel} is used as-is for \SVG\ math, and emulated for \HTML\ text output.
 %
 % \changes{v0.44}{2017/11/16}{\pkg{cancel}: Added.}
 % \changes{v0.87}{2020/06/02}{\pkg{cancel}: Now uses \brand{MathJax} v3 extension.}
@@ -47123,13 +47401,18 @@
 % \DescribePackage{changes}
 % \pkg{changes} is patched for use by \pkg{lwarp}.
 %
+% Use \optn{commandnameprefix=ifneeded} to avoid a conflict with the \cs{comment}
+% \trouble[\cs{comment}]{changes=\pkg{changes}}
+% command when using \pkg{lwarp}.
+%
 % \changes{v0.67}{2019/02/15}{\pkg{changes}: Added.}
 % \changes{v0.70}{2019/03/24}{\pkg{changes}: Updated to v3.1.2.}
+% \changes{v0.895}{2021/01/30}{\pkg{changes}: Updated to v4.0.1.}
 %
 % \codehtml
 %
 %    \begin{macrocode}
-\LWR at ProvidesPackagePass{changes}[2019/01/26]
+\LWR at ProvidesPackagePass{changes}[2021/02/14]
 %    \end{macrocode}
 %
 % \cs{BaseJobname} is added to the label in case \pkg{xr} or \pkg{xr-hyper} are used.
@@ -47137,7 +47420,7 @@
 % \changes{v0.72}{2019/06/05}{\pkg{changes}: Fix references for \pkg{xr}, \pkg{xr-hyper}.}
 %    \begin{macrocode}
 \renewcommand{\ChangesListline}[4]{%
-    \IfSubStr{\Changes at loc@show}{#1}{%
+    \IfIsInList{#1}{\Changes at loc@show}{%
         \LWR at startpars%
         #2: #3 \qquad
         \nameref{\BaseJobname-autopage-#4}%
@@ -47145,112 +47428,255 @@
     }{}%
 }
 
-\renewcommand{\Changes at summaryline}[4]{%
-    \IfSubStr{\Changes at loc@show}{#1}{%
-        \ifthenelse{\not\equal{\Changes at loc@style}{compactsummary} \or #2 > 0}%
-            {%
-                #3:~#2#4%
-            }{}%
-    }{}%
+\renewcommand{\listofchanges}[1][\@empty]{%
+\setkeys{Changes at loc}{#1}%
+\ifbool{Changes at optiondraft}%
+{%
+\IfIsInList{\Changes at loc@style}{list|summary|compactsummary}%
+{}%
+{%
+\PackageWarning{changes}{Wrong style for list of changes: '\Changes at loc@style', using 'list' instead.}%
+\def\Changes at loc@style{}%
+}%
+\IfIsEmpty{\Changes at loc@style}%
+{\def\Changes at loc@style{list}}%
+{}%
+\IfStrEq{\Changes at loc@show}{all}%
+{\def\Changes at loc@show{added|deleted|replaced|highlight|comment}}%
+{}%
+\IfIsInList{\Changes at loc@show}{added|deleted|replaced|highlight|comment}%
+{}%
+{%
+\PackageWarning{changes}{Wrong show-value for list of changes: '\Changes at loc@show', using 'all' instead.}%
+\def\Changes at loc@show{}%
+}%
+\IfIsEmpty{\Changes at loc@show}%
+{\def\Changes at loc@show{added|deleted|replaced|highlight|comment}}%
+{}%
+\IfIsEmpty{\Changes at loc@title}%
+{%
+\IfStrEq{\Changes at loc@style}{list}%
+{\def\Changes at heading{\listofchangesname}}{}%
+\IfStrEq{\Changes at loc@style}{summary}%
+{\def\Changes at heading{\summaryofchangesname}}{}%
+\IfStrEq{\Changes at loc@style}{compactsummary}%
+{\def\Changes at heading{\compactsummaryofchangesname}}{}%
+}%
+{\def\Changes at heading{\Changes at loc@title}}%
+\section*{\Changes at heading}
+\IfIsInList{\Changes at loc@style}{list}%
+{%
+\IfFileExists{\jobname.\Changes at locextension}%
+{%
+\newread\Changes at InFile%
+\openin\Changes at InFile=\jobname.\Changes at locextension%
+\loop\unless\ifeof\Changes at InFile%
+\read\Changes at InFile to \Changes at Line%
+\ifeof\Changes at InFile\else%
+\Changes at Line%
+\fi
+\repeat
+\closein\Changes at InFile%
+}{%
+\emph{\changesnoloc}%
+\PackageWarning{changes}{LaTeX rerun needed for list of changes}%
+}%
+}{}%
+\IfIsInList{\Changes at loc@style}{summary|compactsummary}%
+{%
+\IfFileExists{\jobname.\Changes at socextension}%
+{%
+\newread\Changes at InFile%
+\openin\Changes at InFile = \jobname.\Changes at socextension%
+\loop\unless\ifeof\Changes at InFile%
+\read\Changes at InFile to \Changes at Line%
+\ifeof\Changes at InFile\else%
+\expandafter\changes at chopline\Changes at Line\\%
+\textbf{%
+\IfIsColored%
+{\color{\Changes at Incolor}}%
+{}%
+\IfIsAnonymous{\Changes at Inid}%
+{%
+    \LWR at textcurrentcolor{%     lwarp
+        \changesauthorname: \changesanonymousname%
+    }%  lwarp
+}%
+{%
+    \LWR at textcurrentcolor{%     lwarp
+\changesauthorname: \Changes at Inid%
+    }%  lwarp
+\IfIsEmpty{\Changes at Inname}%
+{}%
+{ %
+    \LWR at textcurrentcolor{%     lwarp
+(\Changes at Inname)%
+    }%  lwarp
+}%
+}%
+}\\%
+\numdef{\Changes at InSum}{0}%
+\renewcommand*{\do}[1]{%
+\numdef{\Changes at InSum}{\Changes at InSum + \csuse{Changes at In########1}}%
+}%
+\expandafter\dopsvlist\expandafter{\Changes at loc@show}%
+\ifnumcomp{\Changes at InSum}{=}{0}%
+{%
+% \parbox{\Changes at summary@width}{% lwarp
+    \changesnochanges%
+% }%    lwarp
+% \\[1ex]%    lwarp
+    \par%   \lwarp
+}%
+{%
+\numdef{\Changes at InCount}{0}%
+\renewcommand*{\do}[1]{%
+\numdef{\Changes at InCount}{\Changes at InCount + \csuse{Changes at In########1}}%
+\ifboolexpr{%
+not test {\IfStrEq{\Changes at loc@style}{compactsummary}} or%
+test {\ifnumgreater{\csuse{Changes at In########1}}{0}}%
+}%
+{%
+% \parbox{\Changes at summary@width}{%  lwarp
+\csuse{changes########1name}~%
+% \let\cleaders\leaders\dotfill~%   lwarp
+\dotfill~%   \lwarp
+\csuse{Changes at In########1}%
+% }%    lwarp
+% \ifnumless{\Changes at InCount}{\Changes at InSum}%     lwarp
+{\\}%
+% {\\[1ex]}%    lwarp
+}%
+{}%
+}%
+\expandafter\dopsvlist\expandafter{\Changes at loc@show}%
+    \par%   lwarp
+}%
+\fi%
+\repeat
+\closein\Changes at InFile%
+}{%
+\emph{\changesnosoc}%
+\PackageWarning{changes}{LaTeX rerun needed for summary of changes}%
+}%
+}{}%
+}{}%
 }
 
-\xpatchcmd{\listofchanges}
-    {{\changesauthorname: \changesanonymousname}}
-    {{\LWR at textcurrentcolor{\changesauthorname: \changesanonymousname}}}
-    {}
-    {\LWR at patcherror{changes}{listofchanges A}}
 
-\xpatchcmd{\listofchanges}
-    {\changesauthorname: \Changes at InID}
-    {\LWR at textcurrentcolor{\changesauthorname: \Changes at InID}}
-    {}
-    {\LWR at patcherror{changes}{listofchanges B}}
+\renewcommand{\Changes at Markup@comment}[3]{%
+\IfStrEq{\Changes at optioncommentmarkup}{todo}%
+{%
+\IfIsColored%
+{\colorlet{Changes at todocolor}{authorcolor}}%
+{\colorlet{Changes at todocolor}{black}}%
+\todo[color=Changes at todocolor!10, bordercolor=Changes at todocolor, linecolor=Changes at todocolor!70, nolist]{\textbf{[\IfIsAnonymous{#2}{}{#3~}\arabic{authorcommentcount}]} #1}%
+}{}%
+\IfStrEq{\Changes at optioncommentmarkup}{margin}%
+{%
+\marginpar{%
+\IfIsColored%
+{\leavevmode\color{authorcolor}}%
+{}%
+    \LWR at textcurrentcolor{%     lwarp
+\textbf{[\IfIsAnonymous{#2}{}{#3~}\arabic{Changes at commentCount#2}]:} #1%
+    }%  lwarp
+}%
+}{}%
+\IfStrEq{\Changes at optioncommentmarkup}{footnote}%
+{%
+\footnote{%
+    \LWR at textcurrentcolor{%     lwarp
+\textbf{[\IfIsAnonymous{#2}{}{#3~}\arabic{Changes at commentCount#2}]:} #1%
+    }%  lwarp
+}%
+}{}%
+\IfStrEq{\Changes at optioncommentmarkup}{uwave}%
+{%
+{%
+\IfIsColored%
+{\color{authorcolor}}%
+{}%
+\allowbreak%
+\uwave{%
+\textbf{[\IfIsAnonymous{#2}{}{#3~}\arabic{Changes at commentCount#2}]:} #1%
+}%
+}%
+}{}%
+}
 
-\xpatchcmd{\listofchanges}
-    {(\Changes at InName)}
-    {\LWR at textcurrentcolor{(\Changes at InName)}}
-    {}
-    {\LWR at patcherror{changes}{listofchanges C}}
-
-\xpatchcmd{\listofchanges}
-    {\parbox{\Changes at summary@width}}
-    {}
-    {}
-    {\LWR at patcherror{changes}{listofchanges D}}
-
-\xpatchcmd{\Changes at Markup@comment}
-    {%
-        \ifthenelse{\isAnonymous{#2}}%
-            {\textbf{[\arabic{Changes at commentCount#2}]:} }%
-            {\textbf{[#3~\arabic{Changes at commentCount#2}]:} }%
-        #1%
-    }
-    {%
-        \LWR at textcurrentcolor{%         lwarp
-        \ifthenelse{\isAnonymous{#2}}%
-            {\textbf{[\arabic{Changes at commentCount#2}]:} }%
-            {\textbf{[#3~\arabic{Changes at commentCount#2}]:} }%
-        #1%
-        }%                              lwarp
-    }
-    {}
-    {\LWR at patcherror{changes}{\Changes at Markup@comment A}}
-
-\xpatchcmd{\Changes at Markup@comment}
-    {%
-        \uwave{%
-            \ifthenelse{\isAnonymous{#2}}%
-                {\textbf{[\arabic{Changes at commentCount#2}]:} }%
-                {\textbf{[#3~\arabic{Changes at commentCount#2}]:} }%
-            #1%
-        }%
-    }
-    {%
-        \LWR at textcurrentcolor{%         lwarp
-        \uwave{%
-            \ifthenelse{\isAnonymous{#2}}%
-                {\textbf{[\arabic{Changes at commentCount#2}]:} }%
-                {\textbf{[#3~\arabic{Changes at commentCount#2}]:} }%
-            #1%
-        }%
-        }%                              lwarp
-    }
-    {}
-    {\LWR at patcherror{changes}{\Changes at Markup@comment B}}
-
-\xpatchcmd{\Changes at output}
-    {\Changes at Markup@author{\Changes at output@author{#2}{left}}}
-    {\LWR at textcurrentcolor{\Changes at Markup@author{\Changes at output@author{#2}{left}}}}
-    {}
-    {\LWR at patcherror{changes}{Changes at output A}}
-
-\xpatchcmd{\Changes at output}
-    {%
-        \ifthenelse{\equal{#1}{added}}{\Changes at Markup@added{#3}}{}%
-        \ifthenelse{\equal{#1}{deleted}}{\Changes at Markup@deleted{#4}}{}%
-        \ifthenelse{\equal{#1}{replaced}}{%
-            {\Changes at Markup@added{#3}}\allowbreak\Changes at Markup@deleted{#4}%
-        }{}%
-        \ifthenelse{\equal{#1}{highlight}}{\Changes at Markup@highlight{#3}}{}%
-    }
-    {%
-        \LWR at textcurrentcolor{%
-        \ifthenelse{\equal{#1}{added}}{\Changes at Markup@added{#3}}{}%
-        \ifthenelse{\equal{#1}{deleted}}{\Changes at Markup@deleted{#4}}{}%
-        \ifthenelse{\equal{#1}{replaced}}{%
-            {\Changes at Markup@added{#3}}\allowbreak\Changes at Markup@deleted{#4}%
-        }{}%
-        \ifthenelse{\equal{#1}{highlight}}{\Changes at Markup@highlight{#3}}{}%
-        }%
-    }
-    {}
-    {\LWR at patcherror{changes}{Changes at output B}}
-
-\xpatchcmd{\Changes at output}
-    {\Changes at Markup@author{\Changes at output@author{#2}{right}}}
-    {\LWR at textcurrentcolor{\Changes at Markup@author{\Changes at output@author{#2}{right}}}}
-    {}
-    {\LWR at patcherror{changes}{Changes at output C}}
+\renewrobustcmd{\Changes at output}[7]{%
+\ifbool{Changes at optiondraft}%
+{%
+\Changes at check@author{#2}%
+\Changes at set@color{#2}%
+{%
+\IfIsInList{#1}{added|deleted|replaced|highlight}%
+{%
+\IfIsEmpty{#5}%
+{%
+\IfIsAuthorEmptyAtPosition{#2}{left}%
+{}%
+{{%
+\IfIsColored%
+{\color{authorcolor}}%
+{}%
+    \LWR at textcurrentcolor{%     lwarp
+\Changes at Markup@author{\Changes at output@author{#2}{left}}%
+    }%  lwarp
+}}%
+}{}%
+{%
+\IfStrEq{#1}{highlight}%
+{}{%
+\IfIsColored%
+{\color{authorcolor}}%
+{}%
+}%
+    \LWR at textcurrentcolor{%     lwarp
+\IfStrEq{#1}{added}{\Changes at Markup@added{#3}}{}%
+\IfStrEq{#1}{deleted}{\Changes at Markup@deleted{#4}}{}%
+\IfStrEq{#1}{replaced}{{\Changes at Markup@added{#3}}\allowbreak\Changes at Markup@deleted{#4}}{}%
+\IfStrEq{#1}{highlight}{\Changes at Markup@highlight{#3}}{}%
+    }%  lwarp
+}%
+\IfIsEmpty{#5}%
+{%
+\IfIsAuthorEmptyAtPosition{#2}{right}%
+{}%
+{{%
+\IfIsColored%
+{\color{authorcolor}}%
+{}%
+    \LWR at textcurrentcolor{%     lwarp
+\Changes at Markup@author{\Changes at output@author{#2}{right}}%
+    }%  lwarp
+}}%
+}{}%
+\stepcounter{Changes@#1Count#2}%
+}{}%
+\IfIsEmpty{#5}%
+{}%
+{%
+\stepcounter{Changes at commentCount#2}%
+\Changes at set@commentcount{#2}%
+\Changes at Markup@comment%
+{#5}%
+{#2}%
+{\Changes at output@author{#2}{left}\Changes at output@author{#2}{right}}%
+}%
+}%
+\IfIsEmpty{#2}%
+{\def\Changes at locid{}}%
+{\def\Changes at locid{~(#2)}}%
+\addtocontents{\Changes at locextension}{\protect\ChangesListline{#1}{#6\Changes at locid}{#7}{\thepage}}%
+}%
+{%
+\IfIsEmpty{#3}%
+{\@bsphack\@esphack}%
+{#3}%
+}%
+}
 %    \end{macrocode}
 %
 % \iffalse
@@ -47481,7 +47907,7 @@
 %    \end{macrocode}
 %
 % \begin{noindmacro}{\ch}
-% Enclose in an inline \SVG\ image or MathJax.
+% Enclose in an inline \SVG\ image or \brand{MathJax}.
 % The \attribute{alt} tag is is the contents of the \cs{ch} expression.
 % The filename is hashed, and also has additional hashing information based on
 % the local options.
@@ -47864,7 +48290,7 @@
 \LWR at ProvidesPackagePass{chemmacros}[2017/08/28]
 %    \end{macrocode}
 %
-% SVG file hashing assumes that the relevent options are constant for the entire document.
+% \SVG\ file hashing assumes that the relevent options are constant for the entire document.
 %
 % \subsection{Changes to the user's document}
 %
@@ -51808,8 +52234,47 @@
 %
 %
 %
+% \iffalse
+%<*epsf>
+% \fi
 %
+% \part{lwarp-epsf.sty}
+%
+% \section{epsf}
+%
+% \credits{Tom Rokicki}
+%
+% \DescribePackage{epsf}
+% \pkg{epsf} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.895}{2019/01/19}{\pkg{epsf}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{epsf}% not date given
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\xpretocmd{\epsfsetgraph}
+    {\begin{lateximage}}
+    {}
+    {\LWR at patcherror{lwarp-epsf}{epsfsetgraph-begin}}
+
+\xapptocmd{\epsfsetgraph}
+    {\end{lateximage}}
+    {}
+    {\LWR at patcherror{lwarp-epsf}{epsfsetgraph-end}}
+%    \end{macrocode}
+%
 % \iffalse
+%</epsf>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*epsfig>
 % \fi
 %
@@ -51824,11 +52289,12 @@
 % \watchout
 %
 % \changes{v0.61}{2018/10/01}{\pkg{epsfig}: Added.}
+% \changes{v0.895}{2021/01/17}{\pkg{epsfig}: Supports \env{lateximage}.}
 %
 % \codehtml
 %
 %    \begin{macrocode}
-\LWR at ProvidesPackageDrop{epsfig}[2017/06/25]
+\LWR at ProvidesPackagePass{epsfig}[2017/06/25]
 %    \end{macrocode}
 %
 % A few additional keys to capture the filename:
@@ -51850,9 +52316,11 @@
 %
 % The captured filename is used as the argument to \cs{includegraphics}:
 %    \begin{macrocode}
-\newcommand{\epsfig}[1]{\includegraphics[#1]{\LWR at epsfig@filename}}
+\newcommand{\LWR at HTML@epsfig}[1]{\includegraphics[#1]{\LWR at epsfig@filename}}
+\LWR at formatted{epsfig}
 
-\newcommand{\psfig}[1]{\includegraphics[#1]{\LWR at epsfig@filename}}
+\newcommand{\LWR at HTML@psfig}[1]{\includegraphics[#1]{\LWR at epsfig@filename}}
+\LWR at formatted{psfig}
 %    \end{macrocode}
 %
 % \iffalse
@@ -52911,12 +53379,13 @@
 % \changes{v0.20}{2017/01/11}{\pkg{fancyhdr}: Added.}
 % \changes{v0.33}{2017/06/18}{\pkg{fancyhdr}: Fix: Optional args for \cs{lhead}, etc.}
 % \changes{v0.66}{2019/02/02}{\pkg{fancyhdr}: Updated to v3.10.}
+% \changes{v0.895}{2020/01/05}{\pkg{fancyhdr}: Updated to v4.0.}
 %
 % \codehtml
 %
 % Discard all options for \pkg{lwarp-fancyhdr}:
 %    \begin{macrocode}
-\LWR at ProvidesPackageDrop{fancyhdr}[2019/01/31]
+\LWR at ProvidesPackageDrop{fancyhdr}[2021/01/04]
 %    \end{macrocode}
 
 %    \begin{macrocode}
@@ -52923,7 +53392,7 @@
 \newcommand*{\fancyhead}[2][]{}
 \newcommand*{\fancyfoot}[2][]{}
 \newcommand*{\fancyhf}[2][]{}
-\newcommand*{\fancypagestyle}[2]{}
+
 \newcommand*{\lhead}[2][]{}
 \newcommand*{\chead}[2][]{}
 \newcommand*{\rhead}[2][]{}
@@ -52932,16 +53401,30 @@
 \newcommand*{\rfoot}[2][]{}
 \newcommand*{\headrulewidth}{}
 \newcommand*{\footrulewidth}{}
+\providecommand{\headruleskip}{0pt}
+\providecommand{\footruleskip}{0pt}
+\newcommand{\plainheadrulewidth}{0pt}
+\newcommand{\plainfootrulewidth}{0pt}
+\def\fancyplain#1#2{#1}
 \newcommand*{\headrule}{}
 \newcommand*{\footrule}{}
 \newlength{\headwidth}
+\newcommand*{\fancycenter}[1][1em]{}
 \newcommand*{\fancyheadoffset}[2][]{}
 \newcommand*{\fancyfootoffset}[2][]{}
 \newcommand*{\fancyhfoffset}[2][]{}
+\newcommand{\fancyheadinit}[1]{}
+\newcommand{\fancyfootinit}[1]{}
+\newcommand{\fancyhfinit}[1]{}
 \newcommand*{\iffloatpage}[2]{#2}
 \newcommand*{\ifftopfloat}[2]{#2}
 \newcommand*{\iffbotfloat}[2]{#2}
 \newcommand*{\iffootnote}[2]{#2}
+
+\newcommand{\fancypagestyle}[1]{%
+  \@ifnextchar[{\f at nch@pagestyle{#1}}{\f at nch@pagestyle{#1}[]}%
+}
+\long\def\f at nch@pagestyle#1[#2]#3{}
 %    \end{macrocode}
 
 % \iffalse
@@ -53189,6 +53672,7 @@
 % start and end of the environment, depending on the choice of |frame|.
 % Original code is from the \pkg{fancyvrb} package.
 % \changes{v0.73}{2019/06/26}{\pkg{fancyvrb}: Fix: Nested \element{div}/\element{pre}.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \newcommand*{\LWR at fvstartnone}{%
 \LWR at traceinfo{fvstartnone}%
@@ -53199,8 +53683,8 @@
     \ifx\FV at LabelBegin\relax\else
         \FancyVerbRuleColor{\LWR at FVfindbordercolor}
         \LWR at htmltagc{%
-            div class="fancyvrblabel" % extra space
-                style="color: \LWR at origpound\LWR at tempcolor"%
+            div class=\textquotedbl{}fancyvrblabel\textquotedbl\ % space
+                style=\textquotedbl{}color: \LWR at origpound\LWR at tempcolor\textquotedbl%
         }
         \LWR at print@textrm{\FV at LabelBegin}% \textrm preserves emdash
         \LWR at htmltagc{/div}\LWR at orignewline%
@@ -53219,8 +53703,8 @@
     \ifx\FV at LabelEnd\relax\else
         \FancyVerbRuleColor{\LWR at FVfindbordercolor}
         \LWR at htmltagc{%
-            div class="fancyvrblabel" % extra space
-                style="color: \LWR at origpound\LWR at tempcolor"%
+            div class=\textquotedbl{}fancyvrblabel\textquotedbl\ % space
+                style=\textquotedbl{}color: \LWR at origpound\LWR at tempcolor\textquotedbl%
         }
         \LWR at print@textrm{\FV at LabelEnd}
         \LWR at htmltagc{/div}\LWR at orignewline%
@@ -57009,10 +57493,11 @@
 % For the \HTML\ reference, add the graphicspath, filename, extension,
 % alt tag, style, and class.
 % \changes{v0.79}{2019/12/09}{\pkg{graphics}: Factored from \cs{LWR at includegraphicsb}.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \newcommand*{\LWR at ig@htmltag}{%
     img\LWR at indentHTML%
-    src="%
+    src=\textquotedbl%
 %    \end{macrocode}
 % \changes{v0.62}{2018/10/27}{\pkg{graphics}: Fix: Filename expansion.}
 %    \begin{macrocode}
@@ -57019,9 +57504,10 @@
     \detokenize\expandafter{\LWR at parsedfilename}%
 %    \end{macrocode}
 %    \begin{macrocode}
-    "\LWR at indentHTML%
+    \textquotedbl\LWR at indentHTML%
 %    \end{macrocode}
 % Only include a style tag if a width, height, angle, or scale was given:
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
     \ifthenelse{
         \NOT\equal{\LWR at igwidthstyle}{} \OR
@@ -57032,7 +57518,7 @@
         \NOT\equal{\LWR at igyscale}{1}
     }%
     {%
-        style="\LWR at indentHTML
+        style=\textquotedbl\LWR at indentHTML
         \ifthenelse{\NOT\equal{\LWR at igwidthstyle}{}}%
             {\LWR at igwidthstyle;\LWR at indentHTML}{}%
         \ifthenelse{\NOT\equal{\LWR at igheightstyle}{}}%
@@ -57064,14 +57550,15 @@
         \ifthenelse{\NOT\equal{\LWR at opacity}{1}}%
             {opacity:\LWR at opacity;\LWR at indentHTML}{}%
         %
-        "\LWR at indentHTML%
+        \textquotedbl\LWR at indentHTML%
     }{}%
 %    \end{macrocode}
 % Set the class and alt tag:
 % \changes{v0.65}{2018/12/19}{\pkg{graphics}: Added \cs{includegraphics} \attribute{alt} key.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
-    class="\LWR at igclass"\LWR at indentHTML%
-    alt="\AltTextOpen\LWR at igalt\AltTextClose" \LWR at orignewline%
+    class=\textquotedbl\LWR at igclass\textquotedbl\LWR at indentHTML%
+    alt=\textquotedbl\AltTextOpen\LWR at igalt\AltTextClose\textquotedbl\ \LWR at orignewline%
 }% end of image tags
 %    \end{macrocode}
 % \end{noindmacro}
@@ -57093,7 +57580,7 @@
 % \changes{v0.18}{2016/05/17}{\pkg{graphics}: Fix: \cs{linewidth}, \cs{textwidth}, \cs{textheight}
 %   inside a minipage.}
 % \changes{v0.18}{2016/05/17}{\pkg{graphics}: em, ex, \%, px dimensions preserved.}
-% \changes{v0.18}{2016/05/17}{\pkg{graphics}: Add: svgz file extension.}
+% \changes{v0.18}{2016/05/17}{\pkg{graphics}: Add: \SVG\ file extension.}
 % \changes{v0.20}{2016/08/20}{\pkg{graphics}: Fix: \cs{linewidth} in a floatrow.}
 % \changes{v0.20}{2017/01/12}{\pkg{graphics}: Fix: Expands filename.}
 % \changes{v0.28}{2017/04/12}{\pkg{graphics}: Adapts to \pkg{graphics} syntax.}
@@ -57319,10 +57806,11 @@
 %    \end{macrocode}
 % Select |inline-block| so that \HTML\ will transform this span:
 % \changes{v0.66}{2019/02/02}{Improved \HTML\ formatting.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \LWR at htmltagc{%
     span\LWR at indentHTML
-    style="\LWR at indentHTML
+    style=\textquotedbl\LWR at indentHTML
     display: inline-block;\LWR at indentHTML
 %    \end{macrocode}
 % If an origin was given, translate and print the origin information:
@@ -57335,7 +57823,7 @@
 %    \begin{macrocode}
     \LWR at rotstyle{-ms-}{#2}\LWR at indentHTML
     \LWR at rotstyle{-webkit-}{#2}\LWR at indentHTML
-    \LWR at rotstyle{}{#2}"\LWR at orignewline%
+    \LWR at rotstyle{}{#2}\textquotedbl\LWR at orignewline%
 }\LWR at orignewline%
 %    \end{macrocode}
 % Print the text to be rotated:
@@ -57371,10 +57859,11 @@
 %    \end{macrocode}
 % Select |inline-block| so that \HTML\ will transform this span:
 % \changes{v0.66}{2019/02/02}{Improved \HTML\ formatting.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \LWR at htmltagc{%
     span\LWR at indentHTML
-    style="\LWR at indentHTML
+    style=\textquotedbl\LWR at indentHTML
     display: inline-block;\LWR at indentHTML
 %    \end{macrocode}
 % Print the scaling information:
@@ -57382,7 +57871,7 @@
     \LWR at scalestyle{-ms-}{#1}{\IfNoValueTF{#2}{#1}{#2}}\LWR at indentHTML
     \LWR at scalestyle{-webkit-}{#1}{\IfNoValueTF{#2}{#1}{#2}}\LWR at indentHTML
     \LWR at scalestyle{}{#1}{\IfNoValueTF{#2}{#1}{#2}}
-    "\LWR at orignewline
+    \textquotedbl\LWR at orignewline
 }\LWR at orignewline%
 %    \end{macrocode}
 % Print the text to be scaled:
@@ -57642,6 +58131,7 @@
 %
 % \changes{v0.44}{2017/11/15}{\pkg{hang}: Added.}
 % \changes{v0.47}{2018/01/26}{\pkg{hang}: Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %
 % \codehtml
 %
@@ -57676,7 +58166,7 @@
     \renewcommand*{\LWR at printcloselist}{\LWR at printcloseitemize}%
     \renewcommand*{\LWR at printopenlist}{%
         \LWR at findhangingleftmargin%
-        ul style="%
+        ul style=\textquotedbl%
             \LWR at print@mbox{list-style-type:none;} % extra space
             \LWR at print@mbox{%
                 margin-left:\LWR at printlength{\LWR at templengthone}%
@@ -57684,7 +58174,7 @@
             \LWR at print@mbox{%
                 text-indent:-\LWR at printlength{\hangingindent}%
             }%
-        "%
+        \textquotedbl%
     }%
     \let\item\LWR at itemizeitem%
     \list{}{}%
@@ -58416,12 +58906,17 @@
 % \changes{v0.43}{2017/10/31}{\pkg{hyperref}: Made robust.}
 % \changes{v0.45}{2017/12/29}{\pkg{hyperref}: Fix: Underscore in \URL.}
 % \changes{v0.52}{2018/03/26}{\pkg{hyperref}: Fix: \progcode{\#}, \progcode{\%}, \progcode{\&}, \progcode{\~}, \progcode{\_} in \URL.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \NewDocumentCommand{\LWR at hyperimageb}{m +m}{%
     \LWR at ensuredoingapar%
     \def\LWR at templink{#1}%
     \@onelevel at sanitize\LWR at templink%
-    \LWR at htmltag{img src="\LWR at templink" alt="#2" class="hyperimage"}%
+    \LWR at htmltag{%
+        img src=\textquotedbl\LWR at templink\textquotedbl\ %
+        alt=\textquotedbl#2\textquotedbl\ %
+        class=\textquotedbl{}hyperimage\textquotedbl%
+    }%
     \LWR at ensuredoingapar%
     \endgroup%
 }
@@ -58465,6 +58960,7 @@
 % \changes{v0.45}{2018/01/02}{\pkg{hyperref}: Fix: Underscore in \URL.}
 % \changes{v0.52}{2018/03/26}{\pkg{hyperref}: Fix: \progcode{\#}, \progcode{\%}, \progcode{\&}, \progcode{\~}, \progcode{\_} in \URL.}
 % \changes{v0.57}{2018/06/05}{\pkg{subcaption}: Fix: \cs{subref}.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %
 % Creates an \HTML\ link to |URL#category.name| with the given text.
 %
@@ -58480,10 +58976,10 @@
 
 \newcommand*{\LWR at hyperrefbb}[3]{%
     \LWR at htmltag{%
-        a href="%
+        a href=\textquotedbl%
             \detokenize\expandafter{#1}\LWR at hashmark%
             \detokenize\expandafter{#2}.\detokenize\expandafter{#3}%
-        "%
+        \textquotedbl%
         \LWR at addlinktitle%
     }%
     \endgroup%
@@ -59273,7 +59769,33 @@
 %
 %
 %
+%
 % \iffalse
+%<*impnattypo>
+% \fi
+%
+% \part{lwarp-impnattypo.sty}
+%
+% \section{impnattypo}
+%
+% \DescribePackage{impnattypo}
+% \pkg{impnattypo} is ignored.
+%
+% \changes{v0.895}{2021/01/13}{\pkg{impnattypo}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackageDrop{impnattypo}[2019/03/04]
+%    \end{macrocode}
+%
+% \iffalse
+%</impnattypo>
+% \fi
+%
+%
+%
+% \iffalse
 %<*index>
 % \fi
 %
@@ -59455,6 +59977,149 @@
 %
 %
 % \iffalse
+%<*isomath>
+% \fi
+%
+% \part{lwarp-isomath.sty}
+%
+% \section{isomath}
+%
+% \credits{Günter Milde}
+%
+% \DescribePackage{isomath}
+% \pkg{isomath} is used as-is for \SVG\ math, and
+% emulated for \brand{MathJax}.
+%
+% \brand{MathJax} does not provide a sans math font, so sans is typeset as roman.
+% \trouble[\brand{MathJax} sans]{isomath=\pkg{isomath}}
+%
+% \changes{v0.895}{2021/02/08}{\pkg{isomath}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{isomath}[2012/09/04]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\let\mathbfit\boldsymbol}
+\CustomizeMathJax{\let\mathsfbfit\mathbfit}% not sans
+\CustomizeMathJax{\let\mathsfit\mathit}% not sans
+\CustomizeMathJax{\let\vectorsym\mathbfit}
+\CustomizeMathJax{\let\matrixsym\mathbfit}
+\CustomizeMathJax{\let\tensorsym\mathsfbfit}
+\CustomizeMathJax{\let\mathboldsans\mathsfbfit}
+\CustomizeMathJax{\let\mathbold\mathbfit}
+\CustomizeMathJax{\let\mathsans\mathrm}% not sans
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</isomath>
+% \fi
+%
+%
+%
+%
+% \iffalse
+%<*isotope>
+% \fi
+%
+% \part{lwarp-isotope.sty}
+%
+% \section{isotope}
+%
+% \credits{Heiko Bauke}
+%
+% \DescribePackage{isotope}
+% \pkg{isotope} is patched for use by \pkg{lwarp} with \SVG\ math,
+% and emulated for \brand{MathJax}.
+%
+% \changes{v0.895}{2021/01/10}{\pkg{isotope}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{isotope}[2011/08/26]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\newcommand{\LWR at HTML@isotope at two}[2][]{%
+    \renewcommand{\isotope at atomicnumber}{#1}%
+    \edef\LWR at isotope@alttag{%
+        \textbackslash(
+        \textbackslash{}isotope
+        [\isotope at nucleonnumber]%
+        [\isotope at atomicnumber]%
+        \{#2\}
+        \textbackslash)%
+    }%
+  \ifbool{mathjax}%
+    {\LWR at isotope@alttag}%
+    {% SVG
+        \m at th%
+        \LWR at subsingledollar*%
+        {% alt tag
+            \LWR at isotope@alttag%
+        }%
+        {isotope}% add'l hashing
+        {% contents
+            \settowidth\@tempdimb{%
+                \ensuremath{\scriptstyle\isotope at nucleonnumber}%
+            }%
+            \settowidth\@tempdimc{%
+                \ensuremath{\scriptstyle\isotope at atomicnumber}%
+            }%
+            \ifdim\@tempdimb<\@tempdimc\@tempdimb=\@tempdimc\fi%
+            \ensuremath{
+                {}%
+                ^{\makebox[\@tempdimb][r]{%
+                    \ensuremath{%
+                    \scriptstyle\isotope at nucleonnumber%
+                    }% ensuremath
+                }}%
+                _{\makebox[\@tempdimb][r]{%
+                    \ensuremath{%
+                        \scriptstyle\isotope at atomicnumber%
+                    }% ensuremath
+                }}%
+                \isotopestyle{#2}%
+            }% ensuremath
+        }% contents
+    }% SVG
+  \endgroup%
+}%
+\LWR at formatted{isotope at two}
+
+\begin{warpMathJax}
+\CustomizeMathJax{%
+    \newcommand{\LWRisotopetwo}[2][]{%
+        {%
+            \vphantom{\mathrm{#2}}%
+            {}^{\LWRisotopenucleonnumber}_{#1}%
+            \mathrm{#2}%
+        }%
+    }%
+}
+
+\CustomizeMathJax{%
+    \newcommand{\isotope}[1][]{%
+        \def\LWRisotopenucleonnumber{#1}%
+        \LWRisotopetwo%
+    }%
+}
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</isotope>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*jurabib>
 % \fi
 %
@@ -59664,9 +60329,12 @@
 %     \ifnum0=\@karnaughmap at local@matrixtemplate@%  original
       % print error if no template could be found
       \PackageError{lwarp-karnaugh-map}{%
-        Can not find a template fitting your specification (\@karnaughmap at var@mapsizex@\space x \@karnaughmap at var@mapsizey@\space x \@karnaughmap at var@mapsizez@)%
+        Can not find a template fitting your specification
+        (\@karnaughmap at var@mapsizex@\space x \@karnaughmap at var@mapsizey@\space x
+        \@karnaughmap at var@mapsizez@)%
       }{%
-        Existing templates have the following dimensions: 2x2x1, 2x4x1, 4x2x1, 4x4x1, 4x4x2, and 4x4x4.
+        Existing templates have the following dimensions:
+        2x2x1, 2x4x1, 4x2x1, 4x4x1, 4x4x2, and 4x4x4.
       }%
 %     \fi   original
     }{\relax}%    lwarp
@@ -60775,11 +61443,12 @@
 % \brand{MathJax} cannot yet honor options for adjusting Latin characters.
 %
 % The dedicated macros for upright and italic Greek letters do work correctly.
-% Some of the symbol font macros such as \cs{mathsfbf} work for Latin but not
-% for Greek letters.
 %
-% \SVG\ math should appear the same as the printed output.
+% Some of the symbol font macros such as \cs{mathsfbf} do not use a sans font
+% because \brand{MathJax} does not yet have sans Greek.
 %
+% \SVG\ math honors all font choices, and should appear the same as the printed output.
+%
 % \changes{v0.891}{2020/09/18}{\pkg{libertinust1math}: Added.}
 %
 % \codehtml
@@ -60816,17 +61485,35 @@
 \LWR at mathjax@addgreek at l@up{up}{}
 
 \CustomizeMathJax{\let\uppartial\partial}% not upright
+%    \end{macrocode}
+%
+% \changes{v0.895}{2021/01/04}{\pkg{libertinust1math}: \brand{MathJax}: Fixed for Greek, ignoring sans.}
+%    \begin{macrocode}
+\CustomizeMathJax{\let\mathsfbf\mathbf}% not sans
+% \CustomizeMathJax{\newcommand{\mathsfbf}[1]{%
+%     \mmlToken{mi}[mathvariant="bold-sans-serif"]{#1}% not greek
+% }}% not sans
 
-\CustomizeMathJax{\newcommand{\mathsfbf}[1]{%
-    \mmlToken{mi}[mathvariant="bold-sans-serif"]{#1}% not greek
-}}% not sans
-\CustomizeMathJax{\newcommand{\mathsfbfit}[1]{%
-    \mmlToken{mi}[mathvariant="sans-serif-bold-italic"]{#1}% not greek
-}}%
-\CustomizeMathJax{\newcommand{\mathbfit}[1]{\boldsymbol{#1}}}
-\CustomizeMathJax{\newcommand{\mathsfit}[1]{%
-    \mmlToken{mi}[mathvariant="sans-serif-italic"]{#1}% not greek
-}}
+% \CustomizeMathJax{\newcommand{\mathbfit}[1]{\boldsymbol{#1}}}
+\CustomizeMathJax{\let\mathbfit\boldsymbol}
+%    \end{macrocode}
+%
+% \changes{v0.895}{2021/01/04}{\pkg{libertinust1math}: \brand{MathJax}: Fixed for Greek, ignoring sans.}
+%    \begin{macrocode}
+% \CustomizeMathJax{\newcommand{\mathsfbfit}[1]{\boldsymbol{#1}}}% not sans
+\CustomizeMathJax{\let\mathsfbfit\mathbfit}% not sans
+% \CustomizeMathJax{\newcommand{\mathsfbfit}[1]{%
+%     \mmlToken{mi}[mathvariant="sans-serif-bold-italic"]{#1}% not greek
+% }}%
+%    \end{macrocode}
+%
+% \changes{v0.895}{2021/01/04}{\pkg{libertinust1math}: \brand{MathJax}: Fixed for Greek, ignoring sans.}
+%    \begin{macrocode}
+\CustomizeMathJax{\let\mathsfit\mathit}% not sans
+% \CustomizeMathJax{\newcommand{\mathsfit}[1]{%
+%     \mmlToken{mi}[mathvariant="sans-serif-italic"]{#1}% not greek
+% }}
+
 \CustomizeMathJax{\let\vectorsym\mathbfit}
 \CustomizeMathJax{\let\matrixsym\mathbfit}
 \CustomizeMathJax{\let\tensorsym\mathsfbfit}
@@ -61456,8 +62143,11 @@
 \else%
 %    \end{macrocode}
 % Inline, so open a \element{span}:
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
-    \ifbool{LWR at verbtags}{\LWR at htmltag{span class="inlineprogramlisting"}}{}%
+    \ifbool{LWR at verbtags}{\LWR at htmltag{%
+        span class=\textquotedbl{}inlineprogramlisting\textquotedbl%
+    }}{}%
 \fi%
 \LWR at traceinfo{lst at Init done}%
 }
@@ -61918,9 +62608,45 @@
 %
 %
 %
+% \iffalse
+%<*lpic>
+% \fi
 %
+% \part{lwarp-lpic.sty}
 %
+% \section{lpic}
+%
+% \credits{R. Matveyev}
+%
+% \DescribePackage{lpic}
+% \pkg{lpic} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.895}{2021/01/19}{\pkg{lpic}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{lpic}[2010/12/23]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\BeforeBeginEnvironment{lpic}{%
+    \begin{lateximage}[-lpic-~\PackageDiagramAltText]%
+}
+
+\AfterEndEnvironment{lpic}{\end{lateximage}}
+%    \end{macrocode}
+%
 % \iffalse
+%</lpic>
+% \fi
+%
+%
+%
+%
+%
+%
+% \iffalse
 %<*lscape>
 % \fi
 
@@ -62507,8 +63233,43 @@
 %
 %
 %
+% \iffalse
+%<*luavlna>
+% \fi
 %
+% \part{lwarp-luavlna.sty}
+%
+% \section{luavlna}
+%
+% \credits{Michal Hoftich, Miro Hrončok}
+%
+% \DescribePackage{luavlna}
+% \pkg{luavlna} is patched for use by \pkg{lwarp}.
+%
+% The package is disabled for \HTML\ output, due to incompatibilities with
+% \pkg{lwarp}'s handling of math \SVG\ images.
+%
+% \changes{v0.895}{2020/01/13}{\pkg{luavlna}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{luavlna}[2019/10/30]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\preventsingleoff
+\LetLtxMacro\preventsingleon\preventsingleoff
+%    \end{macrocode}
+%
 % \iffalse
+%</luavlna>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*lyluatex>
 % \fi
 %
@@ -64041,7 +64802,170 @@
 %
 %
 %
+%
 % \iffalse
+%<*mattens>
+% \fi
+%
+% \part{lwarp-mattens.sty}
+%
+% \section{mattens}
+%
+% \credits{Danie Els}
+%
+% \DescribePackage{mattens}
+% \pkg{mattens} is used as-is for \SVG\ math,
+% and is emulated for \brand{MathJax}.
+%
+% \changes{v0.895}{2021/02/11}{\pkg{mattens}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{mattens}[2010/03/26]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\LWRmattensnull}{}}
+
+\CustomizeMathJax{\newcommand{\LWRmattensnostar}[2][]{%
+    {#1{\LWRmattensundercmd{\LWRmattensovercmd{\LWRmattenscross{\boldsymbol{#2}}}}}}%
+}}
+
+\CustomizeMathJax{\newcommand{\LWRmattensstar}[2][]{%
+    {#1{\LWRmattensundercmd{\LWRmattensovercmd{\LWRmattenscross{#2}}}}}%
+}}
+
+\CustomizeMathJax{\newcommand{\LWRmattens}{
+    \ifstar\LWRmattensstar\LWRmattensnostar%
+}}
+
+\CustomizeMathJax{\newcommand{\aS}{%
+    \let\LWRmattenscross\LWRmattensnull%
+    \let\LWRmattensovercmd\overrightarrow%
+    \let\LWRmattensundercmd\LWRmattensnull%
+    \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\Sa}{%
+    \let\LWRmattenscross\LWRmattensnull%
+    \let\LWRmattensovercmd\underrightarrow%
+    \let\LWRmattensundercmd\LWRmattensnull%
+    \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\bS}{%
+    \let\LWRmattenscross\LWRmattensnull%
+    \let\LWRmattensovercmd\overline%
+    \let\LWRmattensundercmd\LWRmattensnull%
+    \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\Sb}{%
+    \let\LWRmattenscross\LWRmattensnull%
+    \let\LWRmattensovercmd\underline%
+    \let\LWRmattensundercmd\LWRmattensnull%
+    \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\aSa}{%
+    \let\LWRmattenscross\LWRmattensnull%
+    \let\LWRmattensovercmd\overrightarrow%
+    \let\LWRmattensundercmd\underrightarrow%
+    \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\aSb}{%
+    \let\LWRmattenscross\LWRmattensnull%
+    \let\LWRmattensovercmd\overrightarrow%
+    \let\LWRmattensundercmd\underline%
+    \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\bSa}{%
+    \let\LWRmattenscross\LWRmattensnull%
+    \let\LWRmattensovercmd\overline%
+    \let\LWRmattensundercmd\underrightarrow%
+    \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\bSb}{%
+    \let\LWRmattenscross\LWRmattensnull%
+    \let\LWRmattensovercmd\overline%
+    \let\LWRmattensundercmd\underline%
+    \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\aCSa}{%
+    \let\LWRmattenscross\tilde%
+    \let\LWRmattensovercmd\overrightarrow%
+    \let\LWRmattensundercmd\underrightarrow%
+    \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\bCSb}{%
+    \let\LWRmattenscross\tilde%
+    \let\LWRmattensovercmd\overline%
+    \let\LWRmattensundercmd\underline%
+    \LWRmattens%
+}}
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</mattens>
+% \fi
+%
+%
+%
+% \iffalse
+%<*maybemath>
+% \fi
+%
+% \part{lwarp-maybemath.sty}
+%
+% \section{maybemath}
+%
+% \credits{Andy Buckley}
+%
+% \DescribePackage{maybemath}
+% \pkg{maybemath} is used as-is for \SVG\ math,
+% and is emulated for \brand{MathJax}.
+%
+% \brand{MathJax} is not able to detect the surrounding text font,
+% \trouble[no effect]{maybemath=\pkg{maybemath}}
+% so all \pkg{maybemath} macros are ignored.
+%
+% \changes{v0.0.895}{2021/01/08}{\pkg{maybemath}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{maybemath}[2005/2/22]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\mayberm}[1]{{#1}}}
+\CustomizeMathJax{\let\maybebm\mayberm}
+\CustomizeMathJax{\let\maybeit\mayberm}
+\CustomizeMathJax{\let\maybeitrm\mayberm}
+\CustomizeMathJax{\let\maybeitsubscript\mayberm}
+\CustomizeMathJax{\let\maybesf\mayberm}
+\CustomizeMathJax{\let\maybebmsf\mayberm}
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</maybemath>
+% \fi
+%
+%
+%
+%
+%
+% \iffalse
 %<*mcaption>
 % \fi
 
@@ -64224,12 +65148,13 @@
 % A \env{BlockClass} environment is not used because this \element{div} is
 % created by the \pkg{mdframed} \optn{startcode} and \optn{endcode} settings,
 % which do not properly nest the \element{div} inside the \env{mdframed} environment.
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
-\LWR at htmltagc{div class="%
+\LWR at htmltagc{div class=\textquotedbl%
 mdframed%
 \ifdefstring{\LWR at mdthisenv}{mdframed}{}{ \LWR at mdthisenv}%
-" \LWR at orignewline
-style=" \LWR at orignewline
+\textquotedbl \LWR at orignewline
+style=\textquotedbl\LWR at orignewline
 %    \end{macrocode}
 % Convert and print the background color:
 %    \begin{macrocode}
@@ -64257,7 +65182,7 @@
 \LWR at orignewline
 %    \end{macrocode}
 %    \begin{macrocode}
-"}
+\textquotedbl}
 % \LWR at htmldivclass{\LWR at mdthisenv}
 %    \end{macrocode}
 % \env{mdframed} environment may not work with the \HTML\ versions of the following,
@@ -64676,8 +65601,46 @@
 % \addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
 %
 %
+% \iffalse
+%<*mdwmath>
+% \fi
 %
+% \part{lwarp-mdwmath.sty}
+%
+% \section{mdwmath}
+%
+% \credits{Mark Wooding}
+%
+% \DescribePackage{mdwmath}
+% \pkg{mdwmath} is used as-is for \SVG\ math, and
+% is emulated for \brand{MathJax}.
+%
+% \changes{v0.895}{2021/01/11}{\pkg{mdwmath}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{mdwmath}[1996/04/11]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\let\LWRmdwmathsqrt\sqrt}
+\CustomizeMathJax{\renewcommand{\sqrt}{\ifstar\LWRmdwmathsqrt\LWRmdwmathsqrt}}
+\CustomizeMathJax{\newcommand{\bitand}{\mathbin\&}}
+\CustomizeMathJax{\def\bitor{\mathbin\mid}}
+\CustomizeMathJax{\def\dblor{\mathbin{\mid\mid}}}
+\CustomizeMathJax{\def\dbland{\mathbin{\mathrel\bitand\mathrel\bitand}}}
+\end{warpMathJax}
+%    \end{macrocode}
+%
 % \iffalse
+%</mdwmath>
+% \fi
+%
+%
+%
+% \iffalse
 %<*media9>
 % \fi
 %
@@ -66269,8 +67232,7 @@
 %
 % \limitsmultirow
 %
-% In a \env{lateximage}, \cs{LWR at restoreorigformatting}
-% restores the original print-mode versions.
+% In a \env{lateximage}, the print versions are restored.
 %
 % See \cref{sec:printmultirow} for the print-mode versions.
 %
@@ -66282,7 +67244,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\LWR at ProvidesPackagePass{multirow}[2018/08/03]
+\LWR at ProvidesPackagePass{multirow}[2021/01/29]
 %    \end{macrocode}
 %
 %
@@ -66297,6 +67259,12 @@
 %
 % \subsection{Multirow}
 %
+% \begin{noindmacro}{\LWR at multirow@par} \cs{par} inside a \cs{multirow}.
+%    \begin{macrocode}
+\newcommand*{\LWR at multirow@par}{\LWR at htmltag{br /}\LWR at origpar}%
+%    \end{macrocode}
+% \end{noindmacro}
+%
 % \DescribeMacro{\multirow}
 %   \oarg{vpos} \marg{numrows} \oarg{bigstruts} \marg{width} \oarg{fixup} \marg{text}
 % \changes{v0.19}{2015/05/28}{\pkg{multirow}: Added optional args.}
@@ -66321,12 +67289,13 @@
 \LWR at tabularleftedge%
 %    \end{macrocode}
 % Print the start of a new table data cell:
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
-\LWR at htmltag{td rowspan="#2" %
+\LWR at htmltag{td rowspan=\textquotedbl#2\textquotedbl\ %
 %    \end{macrocode}
 % A class adds the column spec and the rule:
 %    \begin{macrocode}
-class="td%
+class=\textquotedbl{}td%
 %    \end{macrocode}
 % Append this column's spec:
 % \changes{v0.60}{2018/09/17}{\env{tabular}: Improved memory management: Not using \pkg{xstring}.}
@@ -66340,7 +67309,7 @@
 \LWR at addcmidruletrim%
 \LWR at addleftmostbartag%
 \LWR at printbartag{\arabic{LWR at tableLaTeXcolindex}}%
-"%
+\textquotedbl%
 %    \end{macrocode}
 % \changes{v0.42}{2017/10/26}{\pkg{multirow}: If \progcode{FormatWP} add cell alignment.}
 %    \begin{macrocode}
@@ -66377,9 +67346,22 @@
 %    \begin{macrocode}
 \LWR at getexparray{LWR at colbeforespec}{\arabic{LWR at tableLaTeXcolindex}}%
 %    \end{macrocode}
-% While printing the text, redefine |\\| to generate a new line
+%
+% While printing the text, redefine |\\| to generate a new line.
+% If a nested \env{tabular} occurs, |\\| is redefined to
+% \cs{LWR at tabularendofline} at the start of the \env{tabular}, then
+% \cs{LWR at endofline} before again printing any
+% \cs{multirow} contents inside the nested \env{tabular}.
+%
+% \cs{par} is redefined to insert an \HTML\ break, and if \env{tabular}
+% is nested, it is redefined at the start of \env{tabular}.
+% \changes{v0.895}{2021/01/31}{Allow \cs{par}.}
 %    \begin{macrocode}
-\begingroup\LetLtxMacro{\\}{\LWR at endofline}#6\endgroup%
+\begingroup%
+    \LetLtxMacro{\\}{\LWR at endofline}%
+    \let\par\LWR at multirow@par%
+    #6%
+\endgroup%
 \LWR at stoppars%
 \boolfalse{LWR at intabularmetadata}%
 \renewcommand{\LWR at multirowborder}{}%
@@ -67795,7 +68777,7 @@
 \LWR at formatted{@UnitsUglyFrac}
 %    \end{macrocode}
 %
-% For Mathjax:
+% For \brand{Mathjax}:
 % \changes{v0.891}{2020/09/08}{\pkg{nicefrac}: Added \cs{mathinner}, improved fraction.}
 %    \begin{macrocode}
 \begin{warpMathJax}
@@ -67877,8 +68859,8 @@
 % \trouble[\brand{MathJax}]{nicematrix=\pkg{nicematrix}}
 % \cs{Cdots}, etc. do not span multiple cells.
 % \env{AutoNiceMatrix}, etc. are not supported for \brand{MathJax}.
-% SVG math output preserves all nicematrix features.
-% To force SVG output for one or more consecutive
+% \SVG\ math output preserves all nicematrix features.
+% To force \SVG\ output for one or more consecutive
 % math expressions, for inline math use
 % \cs{inlinemathother} and \cs{inlinemathnormal}, or
 % for display math use \cs{displaymathother} and \cs{displaymathnormal}.
@@ -68640,11 +69622,15 @@
 % Mimics a float by incrementing the float counter and generating
 % an \HTML\ anchor.  These are used for list-of-theorem cross-references.
 % \changes{v0.47}{2018/01/26}{\pkg{ntheorem}: Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \newcommand{\LWR at inctheorem}{%
 \addtocounter{LWR at thisautoid}{1}%
 \LWR at stoppars%
-\LWR at htmltag{a id="\LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}"}\LWR at htmltag{/a}%
+\LWR at htmltag{%
+    a id=\textquotedbl\LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}\textquotedbl%
+}%
+\LWR at htmltag{/a}%
 \LWR at startpars%
 }
 %    \end{macrocode}
@@ -70927,7 +71913,48 @@
 %
 %
 %
+%
+%
 % \iffalse
+%<*pinlabel>
+% \fi
+%
+% \part{lwarp-pinlabel.sty}
+%
+% \section{pinlabel}
+%
+% \credits{Colin Rourke}
+%
+% \DescribePackage{pinlabel}
+% \pkg{pinlabel} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.895}{2021/01/19}{\pkg{pinlabel}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{pinlabel}% no date given
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\xpretocmd{\psfig}
+    {\begin{lateximage}[-pinlabel-~\PackageDiagramAltText]}
+    {}
+    {\LWR at patcherror{pinlabel}{psfigA}}
+
+\xapptocmd{\psfig}
+    {\end{lateximage}}
+    {}
+    {\LWR at patcherror{pinlabel}{psfigB}}
+%    \end{macrocode}
+%
+% \iffalse
+%</pinlabel>
+% \fi
+%
+%
+%
+% \iffalse
 %<*placeins>
 % \fi
 %
@@ -72377,8 +73404,51 @@
 %
 %
 %
+% \iffalse
+%<*rlepsf>
+% \fi
 %
+% \part{lwarp-rlepsf.sty}
+%
+% \section{rlepsf}
+%
+% \credits{Michael Greene, Colin Rourke}
+%
+% \DescribePackage{rlepsf}
+% \pkg{rlepsf} is patched for use by \pkg{lwarp}.
+%
+% The file \filenm{rlepsf.tex} must be copied to \filenm{rlepsf.sty} for
+% \trouble[Rename the style file!]{rlepsf=\pkg{rlepsf}}
+% \pkg{lwarp} to detect and patch it.
+%
+% \changes{v0.895}{2019/01/19}{\pkg{rlepsf}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{rlepsf}% No date given.
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\xpretocmd{\relabelbox}
+    {\begin{lateximage}}
+    {}
+    {\LWR at patcherror{rlepsf}{relabelbox}}
+
+\xapptocmd{\endrelabelbox}
+    {\end{lateximage}}
+    {}
+    {\LWR at patcherror{rlepsf}{endrelabelbox}}
+%    \end{macrocode}
+%
 % \iffalse
+%</rlepsf>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*rmathbr>
 % \fi
 %
@@ -72524,27 +73594,41 @@
 %
 % All rotations are ignored in \HTML\ output.
 %
-% \changes{v0.69}{2019/03/09}{\pkg{rotfloat}: Requires \pkg{graphicx}.}
+% \changes{v0.69}{2019/03/09}{\pkg{rotating}: Requires \pkg{graphicx}.}
+% \changes{v0.895}{2021/01/19}{\pkg{rotating}: Supports \env{lateximage}.}
 %
 % \codehtml
 %    \begin{macrocode}
-\LWR at ProvidesPackageDrop{rotating}[2016/08/11]
+\LWR at ProvidesPackagePass{rotating}[2016/08/11]
 \RequirePackage{graphicx}
 %    \end{macrocode}
 
 %    \begin{macrocode}
-\LetLtxMacro\sidewaystable\table
-\let\endsidewaystable\endtable
+\LetLtxMacro\LWR at HTML@sidewaystable\table
+\let\endLWR at HTML@sidewaystable\endtable
+\LWR at formattedenv{sidewaystable}
 
-\LetLtxMacro\sidewaysfigure\figure
-\let\endsidewaysfigure\endfigure
+\LetLtxMacro\LWR at HTML@sidewaysfigure\figure
+\let\endLWR at HTML@sidewaysfigure\endfigure
+\LWR at formattedenv{sidewaysfigure}
 
-\newenvironment*{sideways}{}{}
-\newenvironment*{turn}[1]{}{}
-\newenvironment*{rotate}[1]{}{}
-\NewDocumentCommand{\turnbox}{m +m}{#2}
-\let\rotcaption\caption
-\let\@makerotcaption\@makecaption
+\newenvironment*{LWR at HTML@sideways}{}{}
+\LWR at formattedenv{sideways}
+
+\newenvironment*{LWR at HTML@turn}[1]{}{}
+\LWR at formattedenv{turn}
+
+\newenvironment*{LWR at HTML@rotate}[1]{}{}
+\LWR at formattedenv{rotate}
+
+\NewDocumentCommand{\LWR at HTML@turnbox}{m +m}{#2}
+\LWR at formatted{turnbox}
+
+\let\LWR at HTML@rotcaption\caption
+\LWR at formatted{rotcaption}
+
+\let\LWR at HTML@@makerotcaption\@makecaption
+\LWR at formatted{@makerotcaption}
 %    \end{macrocode}
 
 
@@ -74683,12 +75767,18 @@
 \CustomizeMathJax{\newcommand{\molepercubicmetrenp}{\mole\usk\rpcubic\metre}}
 \CustomizeMathJax{\newcommand{\radianpersquaresecond}{\radian\per\second\squared}}
 \CustomizeMathJax{\newcommand{\radianpersquaresecondnp}{\radian\usk\second\rpsquared}}
-\CustomizeMathJax{\newcommand{\kilogramsquaremetrepersecond}{\kilogram\usk\squaremetre\per\second}}
-\CustomizeMathJax{\newcommand{\kilogramsquaremetrepersecondnp}{\kilogram\usk\squaremetre\usk\reciprocal\second}}
+\CustomizeMathJax{\newcommand{\kilogramsquaremetrepersecond}{%
+    \kilogram\usk\squaremetre\per\second%
+}}
+\CustomizeMathJax{\newcommand{\kilogramsquaremetrepersecondnp}{%
+    \kilogram\usk\squaremetre\usk\reciprocal\second%
+}}
 \CustomizeMathJax{\newcommand{\radianpersecond}{\radian\per\second}}
 \CustomizeMathJax{\newcommand{\radianpersecondnp}{\radian\usk\reciprocal\second}}
 \CustomizeMathJax{\newcommand{\squaremetrepercubicmetre}{\squaremetre\per\cubic\metre}}
-\CustomizeMathJax{\newcommand{\squaremetrepercubicmetrenp}{\squaremetre\usk\rpcubic\metre}}
+\CustomizeMathJax{\newcommand{\squaremetrepercubicmetrenp}{%
+    \squaremetre\usk\rpcubic\metre%
+}}
 \CustomizeMathJax{\newcommand{\katalpercubicmetre}{\katal\per\cubic\metre}}
 \CustomizeMathJax{\newcommand{\katalpercubicmetrenp}{\katal\usk\rpcubic\metre}}
 \CustomizeMathJax{\newcommand{\coulombpermol}{\coulomb\per\mole}}
@@ -74697,8 +75787,12 @@
 \CustomizeMathJax{\newcommand{\amperepersquaremetrenp}{\ampere\usk\rpsquare\metre}}
 \CustomizeMathJax{\newcommand{\kilogrampercubicmetre}{\kilogram\per\cubic\metre}}
 \CustomizeMathJax{\newcommand{\kilogrampercubicmetrenp}{\kilogram\usk\rpcubic\metre}}
-\CustomizeMathJax{\newcommand{\squaremetrepernewtonsecond}{\squaremetre\per\newton\usk\second}}
-\CustomizeMathJax{\newcommand{\squaremetrepernewtonsecondnp}{\squaremetre\usk\reciprocal\newton\usk\reciprocal\second}}
+\CustomizeMathJax{\newcommand{\squaremetrepernewtonsecond}{%
+    \squaremetre\per\newton\usk\second%
+}}
+\CustomizeMathJax{\newcommand{\squaremetrepernewtonsecondnp}{%
+    \squaremetre\usk\reciprocal\newton\usk\reciprocal\second%
+}}
 \CustomizeMathJax{\newcommand{\pascalsecond}{\pascal\usk\second}}
 \CustomizeMathJax{\newcommand{\coulombpercubicmetre}{\coulomb\per\cubic\metre}}
 \CustomizeMathJax{\newcommand{\coulombpercubicmetrenp}{\coulomb\usk\rpcubic\metre}}
@@ -74726,11 +75820,21 @@
 \CustomizeMathJax{\newcommand{\coulombperkilogram}{\coulomb\per\kilogram}}
 \CustomizeMathJax{\newcommand{\coulombperkilogramnp}{\coulomb\usk\reciprocal\kilogram}}
 \CustomizeMathJax{\newcommand{\squaremetrepersecond}{\squaremetre\per\second}}
-\CustomizeMathJax{\newcommand{\squaremetrepersecondnp}{\squaremetre\usk\reciprocal\second}}
-\CustomizeMathJax{\newcommand{\squaremetrepersquaresecond}{\squaremetre\per\second\squared}}
-\CustomizeMathJax{\newcommand{\squaremetrepersquaresecondnp}{\squaremetre\usk\second\rpsquared}}
-\CustomizeMathJax{\newcommand{\kilogrammetrepersecond}{\kilogram\usk\metre\per\second}}
-\CustomizeMathJax{\newcommand{\kilogrammetrepersecondnp}{\kilogram\usk\metre\usk\reciprocal\second}}
+\CustomizeMathJax{\newcommand{\squaremetrepersecondnp}{%
+    \squaremetre\usk\reciprocal\second%
+}}
+\CustomizeMathJax{\newcommand{\squaremetrepersquaresecond}{%
+    \squaremetre\per\second\squared%
+}}
+\CustomizeMathJax{\newcommand{\squaremetrepersquaresecondnp}{%
+    \squaremetre\usk\second\rpsquared%
+}}
+\CustomizeMathJax{\newcommand{\kilogrammetrepersecond}{%
+    \kilogram\usk\metre\per\second%
+}}
+\CustomizeMathJax{\newcommand{\kilogrammetrepersecondnp}{%
+    \kilogram\usk\metre\usk\reciprocal\second%
+}}
 \CustomizeMathJax{\newcommand{\candelapersquaremetre}{\candela\per\squaremetre}}
 \CustomizeMathJax{\newcommand{\candelapersquaremetrenp}{\candela\usk\rpsquare\metre}}
 \CustomizeMathJax{\newcommand{\amperepermetre}{\ampere\per\metre}}
@@ -74741,54 +75845,93 @@
 \CustomizeMathJax{\newcommand{\henrypermetrenp}{\henry\usk\reciprocal\metre}}
 \CustomizeMathJax{\newcommand{\kilogrampersecond}{\kilogram\per\second}}
 \CustomizeMathJax{\newcommand{\kilogrampersecondnp}{\kilogram\usk\reciprocal\second}}
-\CustomizeMathJax{\newcommand{\kilogrampersquaremetresecond}{\kilogram\per\squaremetre\usk\second}}
-\CustomizeMathJax{\newcommand{\kilogrampersquaremetresecondnp}{\kilogram\usk\rpsquare\metre\usk\reciprocal\second}}
+\CustomizeMathJax{\newcommand{\kilogrampersquaremetresecond}{%
+    \kilogram\per\squaremetre\usk\second%
+}}
+\CustomizeMathJax{\newcommand{\kilogrampersquaremetresecondnp}{%
+    \kilogram\usk\rpsquare\metre\usk\reciprocal\second%
+}}
 \CustomizeMathJax{\newcommand{\kilogrampersquaremetre}{\kilogram\per\squaremetre}}
 \CustomizeMathJax{\newcommand{\kilogrampersquaremetrenp}{\kilogram\usk\rpsquare\metre}}
 \CustomizeMathJax{\newcommand{\kilogrampermetre}{\kilogram\per\metre}}
 \CustomizeMathJax{\newcommand{\kilogrampermetrenp}{\kilogram\usk\reciprocal\metre}}
 \CustomizeMathJax{\newcommand{\joulepermolekelvin}{\joule\per\mole\usk\kelvin}}
-\CustomizeMathJax{\newcommand{\joulepermolekelvinnp}{\joule\usk\reciprocal\mole\usk\reciprocal\kelvin}}
+\CustomizeMathJax{\newcommand{\joulepermolekelvinnp}{%
+    \joule\usk\reciprocal\mole\usk\reciprocal\kelvin%
+}}
 \CustomizeMathJax{\newcommand{\kilogramperkilomole}{\kilogram\per\kilo\mole}}
-\CustomizeMathJax{\newcommand{\kilogramperkilomolenp}{\kilogram\usk\kilo\reciprocal\mole}}
+\CustomizeMathJax{\newcommand{\kilogramperkilomolenp}{%
+    \kilogram\usk\kilo\reciprocal\mole%
+}}
 \CustomizeMathJax{\newcommand{\kilogramsquaremetre}{\kilogram\usk\squaremetre}}
 \CustomizeMathJax{\newcommand{\kilogramsquaremetrenp}{\kilogramsquaremetre}}
-\CustomizeMathJax{\newcommand{\kilogrammetrepersquaresecond}{\kilogram\usk\metre\per\second\squared}}
-\CustomizeMathJax{\newcommand{\kilogrammetrepersquaresecondnp}{\kilogram\usk\metre\usk\second\rpsquared}}
+\CustomizeMathJax{\newcommand{\kilogrammetrepersquaresecond}{%
+    \kilogram\usk\metre\per\second\squared%
+}}
+\CustomizeMathJax{\newcommand{\kilogrammetrepersquaresecondnp}{%
+    \kilogram\usk\metre\usk\second\rpsquared%
+}}
 \CustomizeMathJax{\newcommand{\newtonpersquaremetre}{\newton\per\squaremetre}}
 \CustomizeMathJax{\newcommand{\newtonpersquaremetrenp}{\newton\usk\rpsquare\metre}}
 \CustomizeMathJax{\newcommand{\persquaremetresecond}{1\per\squaremetre\usk\second}}
-\CustomizeMathJax{\newcommand{\persquaremetresecondnp}{\rpsquare\metre\usk\reciprocal\second}}
+\CustomizeMathJax{\newcommand{\persquaremetresecondnp}{%
+    \rpsquare\metre\usk\reciprocal\second%
+}}
 \CustomizeMathJax{\newcommand{\wattperkilogram}{\watt\per\kilogram}}
 \CustomizeMathJax{\newcommand{\wattperkilogramnp}{\watt\usk\reciprocal\kilogram}}
 \CustomizeMathJax{\newcommand{\wattpercubicmetre}{\watt\per\cubic\metre}}
 \CustomizeMathJax{\newcommand{\wattpercubicmetrenp}{\watt\usk\rpcubic\metre}}
-\CustomizeMathJax{\newcommand{\wattpersquaremetresteradian}{\watt\per\squaremetre\usk\steradian}}
-\CustomizeMathJax{\newcommand{\wattpersquaremetresteradiannp}{\watt\usk\rpsquare\metre\usk\rp\steradian}}
+\CustomizeMathJax{\newcommand{\wattpersquaremetresteradian}{%
+    \watt\per\squaremetre\usk\steradian%
+}}
+\CustomizeMathJax{\newcommand{\wattpersquaremetresteradiannp}{%
+    \watt\usk\rpsquare\metre\usk\rp\steradian%
+}}
 \CustomizeMathJax{\newcommand{\jouleperkilogramkelvin}{\joule\per\kilogram\usk\kelvin}}
-\CustomizeMathJax{\newcommand{\jouleperkilogramkelvinnp}{\joule\usk\reciprocal\kilogram\usk\reciprocal\kelvin}}
+\CustomizeMathJax{\newcommand{\jouleperkilogramkelvinnp}{%
+    \joule\usk\reciprocal\kilogram\usk\reciprocal\kelvin%
+}}
 \CustomizeMathJax{\newcommand{\squaremetreperkilogram}{\squaremetre\per\kilogram}}
-\CustomizeMathJax{\newcommand{\rpsquaremetreperkilogram}{\squaremetre\usk\reciprocal\kilogram}}
+\CustomizeMathJax{\newcommand{\rpsquaremetreperkilogram}{%
+    \squaremetre\usk\reciprocal\kilogram%
+}}
 \CustomizeMathJax{\newcommand{\cubicmetreperkilogram}{\cubic\metre\per\kilogram}}
-\CustomizeMathJax{\newcommand{\rpcubicmetreperkilogram}{\cubic\metre\usk\reciprocal\kilogram}}
+\CustomizeMathJax{\newcommand{\rpcubicmetreperkilogram}{%
+    \cubic\metre\usk\reciprocal\kilogram%
+}}
 \CustomizeMathJax{\newcommand{\newtonpermetre}{\newton\per\metre}}
 \CustomizeMathJax{\newcommand{\newtonpermetrenp}{\newton\usk\reciprocal\metre}}
 \CustomizeMathJax{\newcommand{\Celsius}{\unicode{x2103}}}
 \CustomizeMathJax{\newcommand{\wattpermetrekelvin}{\watt\per\metre\usk\kelvin}}
-\CustomizeMathJax{\newcommand{\wattpermetrekelvinnp}{\watt\usk\reciprocal\metre\usk\reciprocal\kelvin}}
-\CustomizeMathJax{\newcommand{\newtonmetre}{\newton\usk\metre} \CustomizeMathJax{\newcommand{\newtonmetrenp}{\newtonmetre}}}
-\CustomizeMathJax{\newcommand{\squaremetrepercubicsecond}{\squaremetre\per\cubic\second}}
-\CustomizeMathJax{\newcommand{\squaremetrepercubicsecondnp}{\squaremetre\usk\rpcubic\second}}
+\CustomizeMathJax{\newcommand{\wattpermetrekelvinnp}{%
+    \watt\usk\reciprocal\metre\usk\reciprocal\kelvin%
+}}
+\CustomizeMathJax{\newcommand{\newtonmetre}{\newton\usk\metre}
+\CustomizeMathJax{\newcommand{\newtonmetrenp}{\newtonmetre}}}
+\CustomizeMathJax{\newcommand{\squaremetrepercubicsecond}{%
+    \squaremetre\per\cubic\second%
+}}
+\CustomizeMathJax{\newcommand{\squaremetrepercubicsecondnp}{%
+    \squaremetre\usk\rpcubic\second%
+}}
 \CustomizeMathJax{\newcommand{\metrepersecond}{\metre\per\second}}
 \CustomizeMathJax{\newcommand{\metrepersecondnp}{\metre\usk\reciprocal\second}}
 \CustomizeMathJax{\newcommand{\joulepercubicmetre}{\joule\per\cubicmetre}}
 \CustomizeMathJax{\newcommand{\joulepercubicmetrenp}{\joule\usk\rpcubic\metre}}
-\CustomizeMathJax{\newcommand{\kilogrampercubicmetrecoulomb}{\kilogram\per\cubic\metre\usk\coulomb}}
-\CustomizeMathJax{\newcommand{\kilogrampercubicmetrecoulombnp}{\kilogram\usk\rpcubic\metre\usk\reciprocal\coulomb}}
+\CustomizeMathJax{\newcommand{\kilogrampercubicmetrecoulomb}{%
+    \kilogram\per\cubic\metre\usk\coulomb%
+}}
+\CustomizeMathJax{\newcommand{\kilogrampercubicmetrecoulombnp}{%
+    \kilogram\usk\rpcubic\metre\usk\reciprocal\coulomb%
+}}
 \CustomizeMathJax{\newcommand{\cubicmetrepersecond}{\cubicmetre\per\second}}
 \CustomizeMathJax{\newcommand{\rpcubicmetrepersecond}{\cubicmetre\usk\reciprocal\second}}
-\CustomizeMathJax{\newcommand{\kilogrampersecondcubicmetre}{\kilogram\per\second\usk\cubicmetre}}
-\CustomizeMathJax{\newcommand{\kilogrampersecondcubicmetrenp}{\kilogram\usk\reciprocal\second\usk\rpcubic\metre}}
+\CustomizeMathJax{\newcommand{\kilogrampersecondcubicmetre}{%
+    \kilogram\per\second\usk\cubicmetre%
+}}
+\CustomizeMathJax{\newcommand{\kilogrampersecondcubicmetrenp}{%
+    \kilogram\usk\reciprocal\second\usk\rpcubic\metre%
+}}
 \end{warpMathJax}
 %    \end{macrocode}
 %
@@ -74810,7 +75953,8 @@
 % \credits{Joseph Wright}
 %
 % \DescribePackage{siunitx}
-% \pkg{siunitx} is patched for use by \pkg{lwarp}.
+% \pkg{siunitx} is patched for use by \pkg{lwarp},
+% and is emulated for \brand{MathJax}.
 %
 % \limitssiunitx
 %
@@ -74842,7 +75986,7 @@
 % \cs{@ensuredmath} is not supported inside an \cs{hbox}, so it must
 % temporarily be restored to its original.
 % Similar for \cs{mbox}.
-% SVG math is created explicitly when necessary, using \cs{LWR at subsingledollar}.
+% \SVG\ math is created explicitly when necessary, using \cs{LWR at subsingledollar}.
 %
 % \changes{v0.42}{2017/10/16}{\pkg{siunitx}: Improved \cs{ensuremath}.}
 % \changes{v0.48}{2018/02/13}{\pkg{siunitx}: Improved \SVG\ math.}
@@ -75078,6 +76222,7 @@
 \cs_new_protected:Npn \__siunitx_textsuperscript:n #1 {\textsuperscript{#1}}
 %    \end{macrocode}
 %
+% \begin{noindmacro}{\num} \oarg{options} \marg{value}
 %    \begin{macrocode}
 \RenewDocumentCommand \num { o m } {
   \leavevmode
@@ -75090,7 +76235,11 @@
     \__siunitx_number_output:n {#2}
   \group_end:% lwarp
 }
-
+%    \end{macrocode}
+% \end{noindmacro}
+%
+% \begin{noindmacro}{\numrange} \oarg{options} \marg{value1} \marg{value2}
+%    \begin{macrocode}
 \RenewDocumentCommand \numrange { o m m } {
   \leavevmode
   \group_begin:% lwarp
@@ -75102,7 +76251,11 @@
     \__siunitx_range_numbers:nn {#2} {#3}
   \group_end:% lwarp
 }
-
+%    \end{macrocode}
+% \end{noindmacro}
+%
+% \begin{noindmacro}{\ang} \marg{options} \marg{angle}
+%    \begin{macrocode}
 \RenewDocumentCommand \ang { o > { \SplitArgument { 2 } { ; } } m } {
   \group_begin:% lwarp
     \LetLtxMacro\@ensuredmath\LWR at origensuredmath% lwarp
@@ -75112,7 +76265,11 @@
     \__siunitx_angle_output:nnn #2
   \group_end:% lwarp
 }
-
+%    \end{macrocode}
+% \end{noindmacro}
+%
+% \begin{noindmacro}{\si} \marg{options} \marg{unit}
+%    \begin{macrocode}
 \RenewDocumentCommand \si { o m } {
   \leavevmode
   \group_begin:% lwarp
@@ -75127,8 +76284,11 @@
       }
   \group_end:% lwarp
 }
-
-
+%    \end{macrocode}
+% \end{noindmacro}
+%
+% \begin{noindmacro}{\SIrange} \oarg{options} \marg{value1} \marg{value2} \marg{unit}
+%    \begin{macrocode}
 \RenewDocumentCommand{\SIrange}{o m m m}
 {%
   \leavevmode
@@ -75144,10 +76304,14 @@
       }
   \group_end:% lwarp
 }
-
+%    \end{macrocode}
+% \end{noindmacro}
+%
+%    \begin{macrocode}
 \ExplSyntaxOff
 %    \end{macrocode}
 
+
 % For \brand{MathJax}.
 % (The following runs much faster as separate \cs{CusomizeMathJax} calls instead
 % of one single call.)
@@ -75160,24 +76324,243 @@
 %    \begin{macrocode}
 \CustomizeMathJax{\newcommand{\tothe}[1]{^{#1}}}
 \CustomizeMathJax{\newcommand{\raiseto}[2]{{#2}^{#1}}}
+%    \end{macrocode}
+%
+% Used as an end marker when parsing values:
+% \changes{v0.895}{2021/01/13}{\pkg{siunitx}: Fix: \brand{MathJax} for \cs{ang}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\LWRsiunitxEND}{}}
+%    \end{macrocode}
+%
+% \begin{noindmacro}{\ang} \oarg{options} \marg{value}
+%    \begin{macrocode}
+\CustomizeMathJax{\def\LWRsiunitxang#1;#2;#3;#4\LWRsiunitxEND{%
+    \ifblank{#1}{}{\num{#1}\degree}%
+    \ifblank{#2}{}{\num{#2}^{\unicode{x2032}}}% \prime
+    \ifblank{#3}{}{\num{#3}^{\unicode{x2033}}}% \dblprime
+}}
+\CustomizeMathJax{\newcommand{\ang}[2][]{\LWRsiunitxang#2;;;\LWRsiunitxEND}}
+%    \end{macrocode}
+% \end{noindmacro}
+%
+% Processes scientific notation.
+% Special handling for a mantissa which is either empty or only a minus sign.
+% \changes{v0.895}{2021/01/14}{\pkg{siunitx}, \brand{MathJax}: Scientific notation.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\LWRsiunitxnumscientific}[2]{%
+    \ifblank{#1}%
+        {}%
+        {%
+            \ifstrequal{#1}{-}%
+                {-}%
+                {\LWRsiunitxprintdecimal{#1}\times}%
+        }%
+    10^{\LWRsiunitxprintdecimal{#2}}
+}}
+%    \end{macrocode}
+%
+% \cs{num} handles optional powers (|e|, |E|, |d|, |D|),
+% multiples (|x|), plus and minus, and period or comma decimal output.
+%
+% To split the string, \cs{def} is used with parameter delimiters.
+% When each of the following macro is used, extra delimiters are padded to the end
+% of the arguments of each macro when used, and
+% the final argument of each collects any extra unused delimiters.
+%
+% \changes{v0.895}{2021/01/14}{\pkg{siunitx}, \brand{MathJax}:
+%       \cs{num} sci notation, multiples, +-, decimals, comma.}
+%    \begin{macrocode}
+\ExplSyntaxOn
+\AtBeginDocument{
+\ifdefstring{\l__siunitx_output_decimal_tl}{{,}}
+    {% Use decimal comma
+        \CustomizeMathJax{\def\LWRsiunitxprintdecimalsub#1.#2.#3\LWRsiunitxEND{%
+            \mathrm{#1}%
+            \ifblank{#2}
+                {}%
+                {,\mathrm{#2}}
+        }}
 
-\CustomizeMathJax{\newcommand{\ang}[2][]{(\mathrm{#2})\degree}}
-\CustomizeMathJax{\newcommand{\num}[2][]{\mathrm{#2}}}
+        \CustomizeMathJax{\newcommand{\LWRsiunitxprintdecimal}[1]{%
+            \LWRsiunitxprintdecimalsub#1...\LWRsiunitxEND%
+        }}
+    }
+    {% Use decimal point
+        \CustomizeMathJax{\def\LWRsiunitxprintdecimalsub#1,#2,#3\LWRsiunitxEND{%
+            \mathrm{#1}%
+            \ifblank{#2}
+                {}%
+                {.\mathrm{#2}}
+        }}
+
+        \CustomizeMathJax{\newcommand{\LWRsiunitxprintdecimal}[1]{%
+            \LWRsiunitxprintdecimalsub#1,,,\LWRsiunitxEND%
+        }}
+    }
+}
+\ExplSyntaxOff
+%    \end{macrocode}
+%
+% \begin{noindmacro}{\num} \oarg{options} \marg{value}
+%    \begin{macrocode}
+\CustomizeMathJax{\def\LWRsiunitxnumplus#1+#2+#3\LWRsiunitxEND{%
+    \ifblank{#2}
+        {\LWRsiunitxprintdecimal{#1}}% no plus
+        {%
+            \ifblank{#1}%
+                {\LWRsiunitxprintdecimal{#2}}% leading plus, ignore
+                {% a+b
+                    \LWRsiunitxprintdecimal{#1}%
+                    \unicode{x02B}% plus sign
+                    \LWRsiunitxprintdecimal{#2}%
+                }%
+        }%
+}}
+
+\CustomizeMathJax{\def\LWRsiunitxnumminus#1-#2-#3\LWRsiunitxEND{%
+    \ifblank{#2}
+        {\LWRsiunitxnumplus#1+++\LWRsiunitxEND}%
+        {%
+            \LWRsiunitxprintdecimal{#1}%
+            \unicode{x02212}% mathematical minus sign
+            \LWRsiunitxprintdecimal{#2}%
+        }%
+}}
+
+\CustomizeMathJax{\def\LWRsiunitxnumpm#1+-#2+-#3\LWRsiunitxEND{%
+    \ifblank{#2}%
+        {\LWRsiunitxnumminus#1---\LWRsiunitxEND}%
+        {%
+            \LWRsiunitxprintdecimal{#1}%
+            \unicode{x0B1}% \pm
+            \LWRsiunitxprintdecimal{#2}%
+        }%
+}}
+
+\CustomizeMathJax{\def\LWRsiunitxnumx#1x#2x#3x#4\LWRsiunitxEND{%
+    \ifblank{#2}%
+        {\LWRsiunitxnumpm#1+-+-\LWRsiunitxEND}%
+        {%
+            \ifblank{#3}%
+                {%
+                    \LWRsiunitxprintdecimal{#1}%
+                    \times%
+                    \LWRsiunitxprintdecimal{#2}%
+                }%
+                {%
+                    \LWRsiunitxprintdecimal{#1}%
+                    \times%
+                    \LWRsiunitxprintdecimal{#2}%
+                    \times%
+                    \LWRsiunitxprintdecimal{#3}%
+                }%
+        }%
+}}
+
+\CustomizeMathJax{\def\LWRsiunitxnumD#1D#2D#3\LWRsiunitxEND{%
+    \ifblank{#2}%
+        {\LWRsiunitxnumx#1xxxxx\LWRsiunitxEND}%
+        {\mathrm{\LWRsiunitxnumscientific{#1}{#2}}}%
+}}
+
+\CustomizeMathJax{\def\LWRsiunitxnumd#1d#2d#3\LWRsiunitxEND{%
+    \ifblank{#2}%
+        {\LWRsiunitxnumD#1DDD\LWRsiunitxEND}%
+        {\mathrm{\LWRsiunitxnumscientific{#1}{#2}}}%
+}}
+
+\CustomizeMathJax{\def\LWRsiunitxnumE#1E#2E#3\LWRsiunitxEND{%
+    \ifblank{#2}%
+        {\LWRsiunitxnumd#1ddd\LWRsiunitxEND}%
+        {\mathrm{\LWRsiunitxnumscientific{#1}{#2}}}%
+}}
+
+\CustomizeMathJax{\def\LWRsiunitxnume#1e#2e#3\LWRsiunitxEND{%
+    \ifblank{#2}%
+        {\LWRsiunitxnumE#1EEE\LWRsiunitxEND}%
+        {\mathrm{\LWRsiunitxnumscientific{#1}{#2}}}%
+}}
+
+\CustomizeMathJax{\def\LWRsiunitxnumcomma#1,#2,#3\LWRsiunitxEND{%
+    \ifblank{#2}
+        {\LWRsiunitxnume#1eee\LWRsiunitxEND}
+        {\LWRsiunitxnume#1.#2eee\LWRsiunitxEND}
+}}
+
+\CustomizeMathJax{\newcommand{\num}[2][]{\LWRsiunitxnumcomma#2,,,\LWRsiunitxEND}}
+%    \end{macrocode}
+% \end{noindmacro}
+%
+% \begin{noindmacro}{\si} \oarg{options} \marg{unit}
+%    \begin{macrocode}
 \CustomizeMathJax{\newcommand{\si}[2][]{\mathrm{#2}}}
+%    \end{macrocode}
+% \end{noindmacro}
 %
-% \SI[opt]{num}[preunit]{unit}
-\CustomizeMathJax{\newcommand{\LWRSI}[2][]{\mathrm{#1\LWRSInumber\,#2}}}
-\CustomizeMathJax{\newcommand{\SI}[2][]{\def\LWRSInumber{#2}\LWRSI}}
+% \begin{noindmacro}{\SI} \oarg{options} \marg{value} \oarg{prefix} \marg{unit}
+%
+% \cs{SI} has a second optional arg, which is parsed using \cs{ifnextchar}.
+% \changes{v0.895}{2021/01/14}{\pkg{siunitx}: \brand{MathJax}: \cs{SI} prefix parsing.}
+%    \begin{macrocode}
+\CustomizeMathJax{\def\LWRsiunitxSIopt#1[#2]#3{%
+    {#2}\num{#1}{#3}%
+}}
+
+\CustomizeMathJax{\newcommand{\LWRsiunitxSI}[2]{%
+    \num{#1}\,{#2}%
+}}
 %    \end{macrocode}
 %
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\SI}[2][]{%
+    \ifnextchar[%
+        {\LWRsiunitxSIopt{#2}}%
+        {\LWRsiunitxSI{#2}}%
+}}
+%    \end{macrocode}
+% \end{noindmacro}
+%
+% \begin{noindmacro}{\numlist} \oarg{options} \marg{list}
+%
+% \cs{numlist} should only be used in text mode.
+% If used in \brand{MathJax}, it is merely printed as input.
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\numlist}[2][]{\mathrm{#2}}}
+%    \end{macrocode}
+% \end{noindmacro}
+%
+% \begin{noindmacro}{\numrange} \oarg{options} \marg{value1} \marg{value2}
+%
+% \cs{numrange} should only be used in text mode.
+% If used in \brand{MathJax} math, an en-dash is used instead of the \optn{range-phase}.
 % \changes{v0.89}{2020/08/02}{\pkg{siunitx}: Unicode for endash.}
 %    \begin{macrocode}
-\CustomizeMathJax{\newcommand{\numlist}[2][]{\mathrm{#2}}}
-\CustomizeMathJax{\newcommand{\numrange}[3][]{\mathrm{#2\,\unicode{x2013}\,#3}}}
+\CustomizeMathJax{\newcommand{\numrange}[3][]{\num{#2}\,\unicode{x2013}\,\num{#3}}}
+%    \end{macrocode}
+% \end{noindmacro}
+%
+% \begin{noindmacro}{\SIlist} \oarg{options} \marg{list}
+%
+% \cs{SIlist} and \cs{SIrange} should only be used in text mode.
+% If used in \brand{MathJax}, a simple emulation is provided.
+%    \begin{macrocode}
 \CustomizeMathJax{\newcommand{\SIlist}[3][]{\mathrm{#2\,#3}}}
-\CustomizeMathJax{\newcommand{\SIrange}[4][]{\mathrm{#2\,#4\,\unicode{x2013}\,#3\,#4}}}
+%    \end{macrocode}
+% \end{noindmacro}
+%
+% \begin{noindmacro}{\SIrange} \oarg{options} \marg{value1} \marg{value2} \marg{unit}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\SIrange}[4][]{\num{#2}\,#4\,\unicode{x2013}\,\num{#3}\,#4}}
+%    \end{macrocode}
+% \end{noindmacro}
+%
+% \begin{noindmacro}{\tablenum} \oarg{options} \marg{value}
+%    \begin{macrocode}
 \CustomizeMathJax{\newcommand{\tablenum}[2][]{\mathrm{#2}}}
+%    \end{macrocode}
+% \end{noindmacro}
 %
+%    \begin{macrocode}
 \CustomizeMathJax{\newcommand{\ampere}{\mathrm{A}}}
 \CustomizeMathJax{\newcommand{\candela}{\mathrm{cd}}}
 \CustomizeMathJax{\newcommand{\kelvin}{\mathrm{K}}}
@@ -75403,6 +76786,382 @@
 %
 %
 % \iffalse
+%<*skmath>
+% \fi
+%
+% \part{lwarp-skmath.sty}
+%
+% \section{skmath}
+%
+% \credits{Simon Sigurdhsson}
+%
+% \DescribePackage{skmath}
+% \pkg{skmath} is used as-is for \SVG\ math,
+% and is emulated for \brand{MathJax}.
+%
+% \changes{v0.895}{2021/01/13}{\pkg{skmath}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{skmath}[2019/10/15]
+%    \end{macrocode}
+%
+% Only defined if package option requested:
+%    \begin{macrocode}
+\begin{warpMathJax}
+\ExplSyntaxOn
+\bool_if:NT\g__skmath_define_common_sets_bool{
+\CustomizeMathJax{\newcommand{\N}{\mathbb{N}}}
+\CustomizeMathJax{\newcommand{\Z}{\mathbb{Z}}}
+\CustomizeMathJax{\newcommand{\Q}{\mathbb{Q}}}
+\CustomizeMathJax{\newcommand{\R}{\mathbb{R}}}
+\CustomizeMathJax{\newcommand{\C}{\mathbb{C}}}
+}
+%    \end{macrocode}
+%
+% \pkg{skmath} is using \pkg{l3keys}, which does not seem to have
+% an equivalent to \cs{@ifpackagewith}.
+% To detect package options, comparisons with the following are made to see if
+% various macros have been defined as follows:
+%    \begin{macrocode}
+\cs_gset_nopar:Npn\LWR__skmath_imaginary_unit:n#1{{#1}}
+\cs_gset_nopar:Npn\LWR__skmath_natural_log_e:{{e}}
+\cs_gset_nopar:Npn\LWR__skmath_integral_d:{{d}}
+\cs_gset_nopar:Npn\LWR__skmath_total_derivative_d:{{d}}
+%    \end{macrocode}
+%
+% If \optn{notation=iso}, use upright, else italic:
+%    \begin{macrocode}
+\cs_if_eq:NNTF \__skmath_imaginary_unit:n \LWR__skmath_imaginary_unit:n
+    {
+        \CustomizeMathJax{\newcommand{ii}{\mathit{i}}}
+        \CustomizeMathJax{\newcommand{jj}{\mathit{j}}}
+    }
+    {
+        \CustomizeMathJax{\newcommand{ii}{\mathrm{i}}}
+        \CustomizeMathJax{\newcommand{jj}{\mathrm{j}}}
+    }
+%    \end{macrocode}
+%
+% If \optn{notation=iso}, use upright, else italic:
+%    \begin{macrocode}
+\cs_if_eq:NNTF \__skmath_natural_log_e: \LWR__skmath_natural_log_e:
+    { \CustomizeMathJax{\newcommand{\ee}{\mathit{e}}} }
+    { \CustomizeMathJax{\newcommand{\ee}{\mathrm{e}}} }
+%    \end{macrocode}
+%
+% \pkg{skmath} uses \cs{DeclarePairedDelimiter} from \pkg{mathtools}
+% for \cs{abs} and \cs{norm},
+% and \pkg{lwarp} uses this to automatically define \brand{MathJax} definitions for
+% each.
+%
+% If \optn{notation=english}, use slanted, else upright:
+%    \begin{macrocode}
+\cs_if_eq:NNTF \__skmath_integral_d: \LWR__skmath_integral_d:
+    { \CustomizeMathJax{\newcommand{\d}{\mathit{d}}} }
+    { \CustomizeMathJax{\newcommand{\d}{\mathrm{d}}} }
+%    \end{macrocode}
+%
+% Used to parse comma and caret arguments for \cs{pd} and \cs{td}:
+%    \begin{macrocode}
+\CustomizeMathJax{\def\LWRskmathEND{}}
+%    \end{macrocode}
+%
+% Parse the arguments with up to four commas.
+% Argument 6 contains any leftover commas.
+%    \begin{macrocode}
+\CustomizeMathJax{\def\LWRskmathpdstarsub#1#2,#3,#4,#5,#6\LWRskmathEND{
+    #1_{#2#3#4#5}%
+}}
+
+\CustomizeMathJax{\newcommand{\LWRskmathpdstar}[2]{%
+    \LWRskmathpdstarsub{#1}#2,,,,\LWRskmathEND%
+}}
+%    \end{macrocode}
+%
+% Parse the arguments with up to two carets.
+% Argument 3 contains any leftover carets.
+% \cs{LWRskmathpdplus} is used to only place a plus sign
+% starting after the first term.
+% \cs{LWRskmathpdone} is used to only place a |1| digit if
+% a second or later term does not have a power.
+%    \begin{macrocode}
+\CustomizeMathJax{\def\LWRskmathpdnumerator#1^#2^#3\LWRskmathEND{%
+    \ifblank{#1}{}{
+        \ifblank{#2}{\LWRskmathpdplus\LWRskmathpdone}{\LWRskmathpdplus#2}
+    }
+}}
+%    \end{macrocode}
+%
+% Parse the arguments with up to two carets.
+% Argument 3 contains any leftover carets.
+%    \begin{macrocode}
+\CustomizeMathJax{\def\LWRskmathpddenominator#1^#2^#3\LWRskmathEND{%
+    \ifblank{#1}{}{%
+        \ifblank{#2}%
+            {\partial{#1}}%
+            {\partial{#1}^{#2}}%
+    }%
+}}
+%    \end{macrocode}
+%
+% Factored from \cs{LWRskmathpdnostarsub}, following:
+%
+% The phrase |^{}| appears to be required while
+% parsing the carets.
+% \cs{LWRskmathpdplus} is used to only place a plus sign
+% starting after the first term.
+% \cs{LWRskmathpdone} is used to only place a |1| digit if
+% a second or later term does not have a power.
+%
+% This may not be recursion-safe.
+% (Is there really such as a thing as nested differentials?)
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\LWRskmathdonumerator}[5]{%
+    \partial^{%
+        \def\LWRskmathpdplus{}%
+        \LWRskmathpdnumerator#2^{}^{}\LWRskmathEND%
+        \def\LWRskmathpdplus{+}%
+        \def\LWRskmathpdone{1}%
+        \LWRskmathpdnumerator#3^{}^{}\LWRskmathEND%
+        \LWRskmathpdnumerator#4^{}^{}\LWRskmathEND%
+        \LWRskmathpdnumerator#5^{}^{}\LWRskmathEND%
+    }%
+    {#1}%
+}}
+
+\CustomizeMathJax{\newcommand{\LWRskmathdodenominator}[4]{%
+    \LWRskmathpddenominator#1^{}^{}^{}\LWRskmathEND%
+    \ifblank{#2}{}{\,}%
+    \LWRskmathpddenominator#2^{}^{}^{}\LWRskmathEND%
+    \ifblank{#3}{}{\,}%
+    \LWRskmathpddenominator#3^{}^{}^{}\LWRskmathEND%
+    \ifblank{#4}{}{\,}%
+    \LWRskmathpddenominator#4^{}^{}^{}\LWRskmathEND%
+}}
+%    \end{macrocode}
+%
+% Parse the arguments with up to four commas.
+% Argument 6 contains any leftover commas.
+%    \begin{macrocode}
+\CustomizeMathJax{\def\LWRskmathpdnostarsub#1#2,#3,#4,#5,#6\LWRskmathEND{
+    \ifblank{#3}{\def\LWRskmathpdone{}}{\def\LWRskmathpdone{1}}
+    \frac%
+        {\LWRskmathdonumerator{#1}{#2}{#3}{#4}{#5}}%
+        {\LWRskmathdodenominator{#2}{#3}{#4}{#5}}%
+}}
+
+\CustomizeMathJax{\newcommand{\LWRskmathpdnostar}[2]{%
+    \LWRskmathpdnostarsub{#1}#2,,,,,,\LWRskmathEND%
+}}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\pd}{\ifstar\LWRskmathpdstar\LWRskmathpdnostar}}
+%    \end{macrocode}
+%
+% If \optn{notation=english} or \optn{legacy}, use slanted, else upright:
+%    \begin{macrocode}
+\cs_if_eq:NNTF \__skmath_total_derivative_d: \LWR__skmath_total_derivative_d:
+    { \CustomizeMathJax{\newcommand{\LWRskmathtd}{\mathit{d}}} }
+    { \CustomizeMathJax{\newcommand{\LWRskmathtd}{\mathrm{d}}} }
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\CustomizeMathJax{\def\LWRskmathtdsub#1#2^#3\LWRskmathEND{%
+    \frac
+        {\LWRskmathtd^{#3}{#1}}
+        {\LWRskmathtd{#2}^{#3}}
+}}
+
+\CustomizeMathJax{\newcommand{\td}[2]{%
+    \LWRskmathtdsub{#1}#2^{}\LWRskmathEND%
+}}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\E}[1]{%
+    \operatorname{E}\left[#1\right]%
+}}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\CustomizeMathJax{\let\given\mid}
+
+\CustomizeMathJax{\newcommand{\P}[1]{%
+    \operatorname{P}%
+    \left(#1\right)%
+}}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\var}[1]{%
+  \operatorname{Var}\left(#1\right)%
+}}
+
+\CustomizeMathJax{\newcommand{\cov}[2]{%
+  \operatorname{Cov}\left(#1,#2\right)%
+}}
+%    \end{macrocode}
+%
+% Common code for \cs{sin} etc:
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\LWRskmathtrigtwo}[2][]{%
+    \ifblank{#1}{}{^{#1}}%
+    \ifblank{#2}{}{\left(#2\right)}%
+}}
+
+\CustomizeMathJax{\newcommand{\LWRskmathtrig}[1]{%
+    \operatorname{#1}%
+    \LWRskmathtrigtwo%
+}}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\CustomizeMathJax{\renewcommand{\sin}{\LWRskmathtrig{sin}}}
+\CustomizeMathJax{\renewcommand{\arcsin}{\LWRskmathtrig{arcsin}}}
+
+\CustomizeMathJax{\renewcommand{\cos}{\LWRskmathtrig{cos}}}
+\CustomizeMathJax{\renewcommand{\arccos}{\LWRskmathtrig{arccos}}}
+
+\CustomizeMathJax{\renewcommand{\tan}{\LWRskmathtrig{tan}}}
+\CustomizeMathJax{\renewcommand{\arctan}{\LWRskmathtrig{arctan}}}
+
+\CustomizeMathJax{\renewcommand{\cot}{\LWRskmathtrig{cot}}}
+
+\CustomizeMathJax{\renewcommand{\sinh}{\LWRskmathtrig{sinh}}}
+\CustomizeMathJax{\renewcommand{\cosh}{\LWRskmathtrig{cosh}}}
+\CustomizeMathJax{\renewcommand{\tanh}{\LWRskmathtrig{tanh}}}
+%    \end{macrocode}
+%
+% Common code for \cs{ln} and \cs{log}:
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\LWRskmathlogtwo}[2][]{%
+    \ifblank{#1}{}{_{#1}}%
+    \ifblank{#2}{}{\left(#2\right)}%
+}}
+
+\CustomizeMathJax{\newcommand{\LWRskmathlog}[1]{%
+    \operatorname{#1}%
+    \LWRskmathlogtwo%
+}}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\CustomizeMathJax{\renewcommand{\ln}{\LWRskmathlog{ln}}}
+\CustomizeMathJax{\renewcommand{\log}{\LWRskmathlog{log}}}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\LWRskmathexpparens}[1]{%
+    \operatorname{exp}%
+    \ifblank{#1}{}{\left(#1\right)}%
+}}
+%    \end{macrocode}
+%
+% See the \pkg{skmath} source for the original of the following:
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\LWRskmathexpnostar}[1]{%
+    \mathchoice
+        {\ee^{#1}}
+        {\LWRskmathexpparens{#1}}
+        {\LWRskmathexpparens{#1}}
+        {\LWRskmathexpparens{#1}}
+}}
+
+\CustomizeMathJax{\renewcommand{\exp}{\ifstar\LWRskmathexpparens\LWRskmathexpnostar}}
+%    \end{macrocode}
+%
+% Common code for \cs{min} etc:
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\LWRskmathminstar}[2][]{%
+    \operatorname{\LWRskmathminname}%
+    \ifblank{#1}{}{%
+        _{\mathchoice{\mathclap{#1}}{#1}{#1}{#1}}
+    }%
+    \ifblank{#2}{}{#2}%
+}}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\LWRskmathminnostar}[2][]{%
+    \ifblank{#1}%
+        {\operatorname{\LWRskmathminname}}%
+        {%
+            \underset%
+                {\mathchoice{\mathclap{#1}}{#1}{#1}{#1}}%
+                {\operatorname{\LWRskmathminname}}%
+        }%
+    \ifblank{#2}{}{\left\{#2\right\}}%
+}}
+%    \end{macrocode}
+%
+% \cs{LWRskmathminname} seems to be recursion-safe since it is used immediately.
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\LWRskmathmin}[1]{%
+    \def\LWRskmathminname{#1}%
+    \ifstar\LWRskmathminstar\LWRskmathminnostar%
+}}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\CustomizeMathJax{\renewcommand{\min}{\LWRskmathmin{min}}}
+\CustomizeMathJax{\renewcommand{\argmin}{\arg\LWRskmathmin{min}}}
+
+\CustomizeMathJax{\renewcommand{\max}{\LWRskmathmin{max}}}
+\CustomizeMathJax{\renewcommand{\argmax}{\arg\LWRskmathmin{max}}}
+\CustomizeMathJax{\renewcommand{\sup}{\LWRskmathmin{sup}}}
+\CustomizeMathJax{\renewcommand{\inf}{\LWRskmathmin{inf}}}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\CustomizeMathJax{\let\bar\overline}
+
+\CustomizeMathJax{\let\vec\boldsymbol}
+%    \end{macrocode}
+%
+% Remember the original definitions:
+%    \begin{macrocode}
+\CustomizeMathJax{\let\LWRskmathRe\Re}
+\CustomizeMathJax{\let\LWRskmathIm\Im}
+%    \end{macrocode}
+%
+% Redefine depending on \optn{notation=iso}:
+%    \begin{macrocode}
+\bool_if:NTF\g__skmath_iso_complex_parts_bool{
+    \CustomizeMathJax{\renewcommand{\Re}[1]{%
+        \LWRskmathRe%
+        \ifblank{#1}{}{\left(#1\right)}%
+    }}
+    \CustomizeMathJax{\renewcommand{\Im}[1]{%
+        \LWRskmathIm%
+        \ifblank{#1}{}{\left(#1\right)}%
+    }}
+}{
+    \CustomizeMathJax{\renewcommand{\Re}[1]{%
+        \operatorname{Re}%
+        \ifblank{#1}{}{#1}%
+    }}
+    \CustomizeMathJax{\renewcommand{\Im}[1]{%
+        \operatorname{Im}%
+        \ifblank{#1}{}{#1}%
+    }}
+}
+
+\ExplSyntaxOff
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</skmath>
+% \fi
+%
+%
+%
+%
+%
+% \iffalse
 %<*slantsc>
 % \fi
 %
@@ -78507,6 +80266,110 @@
 %
 %
 % \iffalse
+%<*tensor>
+% \fi
+%
+% \part{lwarp-tensor.sty}
+%
+% \section{tensor}
+%
+% \credits{Philip G. Ratcliffe}
+%
+% \DescribePackage{tensor}
+% \pkg{tensor} is used as-is for \SVG\ math, and
+% is emulated for \brand{MathJax}.
+%
+% Compressed spacing and left justification are not possible with \brand{MathJax}.
+% \trouble[spacing]{tensor=\pkg{tensor}}
+%
+% \changes{v0.895}{2021/01/23}{\pkg{tensor}: Added \brand{MathJax}.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{tensor}[2004/12/20]
+%    \end{macrocode}
+%
+% For \brand{MathJax}.
+% Special handling is required to parse the superscript and subscript arguments.
+%
+% When a superscript or subscript is seen, it is processed and then the
+% remainder is processesed recursively.
+%    \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\def\LWRtensorindicesthreesub#1#2{{_{#2}}\LWRtensorindicesthree}}
+\CustomizeMathJax{\def\LWRtensorindicesthreesup#1#2{{^{#2}}\LWRtensorindicesthree}}
+%    \end{macrocode}
+%
+% If not a superscript nor a subscript, processing stops.
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\LWRtensorindicesthreenotsup}{}}
+%    \end{macrocode}
+%
+% Check ahead for a superscript or a subscript.
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\LWRtensorindicesthreenotsub}{
+    \ifnextchar ^ \LWRtensorindicesthreesup \LWRtensorindicesthreenotsup
+}}
+
+\CustomizeMathJax{\newcommand{\LWRtensorindicesthree}{
+    \ifnextchar _ \LWRtensorindicesthreesub \LWRtensorindicesthreenotsub
+}}
+%    \end{macrocode}
+%
+% Ignore star.
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\LWRtensorindicestwo}{
+    \ifstar\LWRtensorindicesthree\LWRtensorindicesthree
+}}
+%    \end{macrocode}
+%
+% Remove the outer brace of the argument.
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\indices}[1]{\LWRtensorindicestwo#1}}
+%    \end{macrocode}
+%
+% Attempting to use \cs{vphantom} here does not work:
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\LWRtensortwo}[3][]{{}\indices{#1}{#2}\indices{#3}}}
+%    \end{macrocode}
+%
+% Ignore star.
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\tensor}{\ifstar\LWRtensortwo\LWRtensortwo}}
+%    \end{macrocode}
+%
+% In text mode, \cs{nuclide} is converted to an \SVG\ image.
+%    \begin{macrocode}
+\CustomizeMathJax{%
+    \newcommand{\LWRnuclidetwo}[2][]{%
+        {%
+            \vphantom{\mathrm{#2}}%
+            {}^{\LWRtensornucleonnumber}_{#1}%
+            \mathrm{#2}%
+        }%
+    }%
+}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\CustomizeMathJax{%
+    \newcommand{\nuclide}[1][]{%
+        \def\LWRtensornucleonnumber{#1}%
+        \LWRnuclidetwo%
+    }%
+}
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</tensor>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*termcal>
 % \fi
 %
@@ -79767,9 +81630,45 @@
 %
 %
 %
+% \iffalse
+%<*tikz-imagelabels>
+% \fi
 %
+% \part{lwarp-tikz-imagelabels.sty}
 %
+% \section{tikz-imagelabels}
+%
+% \credits{Tobias Plüss}
+%
+% \DescribePackage{tikz-imagelabels}
+% \pkg{tikz-imagelabels} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.895}{2021/01/19}{\pkg{tikz-imagelabels}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{tikz-imagelabels}[2019/06/27]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\BeforeBeginEnvironment{annotationimage}{%
+    \begin{lateximage}[-tikz-imagelabels-~\PackageDiagramAltText]%
+}
+
+\AfterEndEnvironment{annotationimage}{\end{lateximage}}
+%    \end{macrocode}
+%
 % \iffalse
+%</tikz-imagelabels>
+% \fi
+%
+%
+%
+%
+%
+%
+% \iffalse
 %<*titleps>
 % \fi
 
@@ -82333,7 +84232,7 @@
 % and thus not display correctly in \brand{MathJax}.
 %
 % Symbol font commands are emulated, but not all combinations are
-% supported by MathJax, especially with the dedicated Greek macros.
+% supported by \brand{MathJax}, especially with the dedicated Greek macros.
 % Symbol macros such as \cs{symbfsf} may not be sans or bold.
 % For Greek, use the Unicode equivalent, if necessary.
 %
@@ -82661,7 +84560,7 @@
 \LWR at formatted{unitfrac}
 %    \end{macrocode}
 %
-% For Mathjax:
+% For \brand{Mathjax}:
 % \changes{v0.891}{2020/09/08}{\pkg{units}: Added \cs{mathinner}, improved fraction.}
 %    \begin{macrocode}
 \begin{warpMathJax}
@@ -84008,7 +85907,7 @@
 %    \begin{macrocode}
 \DeclareDocumentCommand{\LWR at textcurrentcolor}{m}{%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \LWR at findcurrenttextcolor%
 \InlineClass[color:\LWR at origpound\LWR at tempcolor]{textcolor}{%
     \renewcommand*{\LWR at currenttextcolor}{\LWR at origpound\LWR at tempcolor}%
@@ -84030,7 +85929,7 @@
 %    \begin{macrocode}
 \NewDocumentCommand{\LWR at colorstyle}{m m}{%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 %    \end{macrocode}
 % Use the \pkg{xcolor} package to convert to an \HTML\ color space:
 %    \begin{macrocode}
@@ -84055,7 +85954,7 @@
 %    \begin{macrocode}
 \NewDocumentCommand{\LWR at backgroundcolor}{O{named} m m}{%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \InlineClass[background:\LWR at colorstyle{#1}{#2}]{backgroundcolor}{%
 #3%
 }%
@@ -84122,7 +86021,7 @@
 %    \begin{macrocode}
 \NewDocumentCommand{\LWR at HTML@textcolor}{o m m}{%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \IfValueTF{#1}{%
     \color[#1]{#2}%
 }{%
@@ -84166,7 +86065,7 @@
 %    \begin{macrocode}
 \NewDocumentCommand{\LWR at HTML@colorbox}{O{named} m +m}{%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \InlineClass[%
 background:\LWR at colorstyle{#1}{#2} ; %
 padding:\LWR at printlength{\fboxsep}%
@@ -84189,7 +86088,7 @@
 %    \begin{macrocode}
 \NewDocumentCommand{\LWR at HTML@colorboxBlock}{O{named} m +m}{%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 %    \end{macrocode}
 % \changes{v0.62}{2018/11/11}{\pkg{xcolor}: Fix: Horiz white space.}
 %    \begin{macrocode}
@@ -84231,7 +86130,7 @@
 \NewDocumentCommand{\LWR at HTML@fcolorbox}{O{named} m O{#1} m +m}{%
 \LWR at traceinfo{HTML fcolorbox #2 #4}%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \LWR at forceminwidth{\fboxrule}%
 \ifthenelse{\equal{#4}{none}}%
     {% no background color
@@ -84267,7 +86166,7 @@
 \NewDocumentCommand{\LWR at HTML@fcolorboxBlock}{O{named} m O{#1} m +m}{%
 \LWR at traceinfo{HTML fcolorboxBlock #2 #4}%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \LWR at forceminwidth{\fboxrule}%
 %    \end{macrocode}
 % \changes{v0.62}{2018/11/11}{\pkg{xcolor}: Fix: Horiz white space.}
@@ -84345,7 +86244,7 @@
 %    \begin{macrocode}
 \NewDocumentEnvironment{LWR at HTML@fcolorminipage}{O{named} m O{#1} m O{c} o o m}
 {%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \setlength{\LWR at tempwidth}{#8}%
 \IfValueT{#6}{\setlength{\LWR at tempheight}{#6}}%
 \LWR at forceminwidth{\fboxrule}%
@@ -84625,6 +86524,42 @@
 %
 %
 % \iffalse
+%<*xevlna>
+% \fi
+%
+% \part{lwarp-xevlna.sty}
+%
+% \section{xevlna}
+%
+% \credits{Zdeněk Wagner}
+%
+% \DescribePackage{xevlna}
+% \pkg{xevlna} is patched for use by \pkg{lwarp}.
+%
+% Non-breakable spaces are inserted into \HTML.
+%
+% \changes{v0.895}{2021/01/13}{\pkg{xevlna}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{xevlna}[2016/09/05]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\def\ProcessCSpreposition{\ifx\next\xevlnaXeTeXspace\HTMLentity{nbsp}\fi}
+
+\appto{\LWR at hook@processingtags}{\xevlnaDisable}%
+%    \end{macrocode}
+%
+% \iffalse
+%</xevlna>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*xfakebold>
 % \fi
 %

Modified: trunk/Master/texmf-dist/source/latex/lwarp/lwarp.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/lwarp/lwarp.ins	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/source/latex/lwarp/lwarp.ins	2021-02-21 23:09:12 UTC (rev 57836)
@@ -51,6 +51,7 @@
 \file{lwarp-algorithm2e.sty}{\from{lwarp.dtx}{algorithm2e}}
 \file{lwarp-algorithmicx.sty}{\from{lwarp.dtx}{algorithmicx}}
 \file{lwarp-alltt.sty}{\from{lwarp.dtx}{alltt}}
+\file{lwarp-amscdx.sty}{\from{lwarp.dtx}{amscdx}}
 \file{lwarp-amsmath.sty}{\from{lwarp.dtx}{amsmath}}
 \file{lwarp-amsthm.sty}{\from{lwarp.dtx}{amsthm}}
 \file{lwarp-anonchap.sty}{\from{lwarp.dtx}{anonchap}}
@@ -159,6 +160,7 @@
 \file{lwarp-enumerate.sty}{\from{lwarp.dtx}{enumerate}}
 \file{lwarp-enumitem.sty}{\from{lwarp.dtx}{enumitem}}
 \file{lwarp-epigraph.sty}{\from{lwarp.dtx}{epigraph}}
+\file{lwarp-epsf.sty}{\from{lwarp.dtx}{epsf}}
 \file{lwarp-epsfig.sty}{\from{lwarp.dtx}{epsfig}}
 \file{lwarp-epstopdf.sty}{\from{lwarp.dtx}{epstopdf}}
 \file{lwarp-epstopdf-base.sty}{\from{lwarp.dtx}{epstopdf-base}}
@@ -254,6 +256,8 @@
 \file{lwarp-index.sty}{\from{lwarp.dtx}{index}}
 \file{lwarp-inputtrc.sty}{\from{lwarp.dtx}{inputtrc}}
 \file{lwarp-intopdf.sty}{\from{lwarp.dtx}{intopdf}}
+\file{lwarp-isomath.sty}{\from{lwarp.dtx}{isomath}}
+\file{lwarp-isotope.sty}{\from{lwarp.dtx}{isotope}}
 \file{lwarp-jurabib.sty}{\from{lwarp.dtx}{jurabib}}
 \file{lwarp-karnaugh-map.sty}{\from{lwarp.dtx}{karnaugh-map}}
 \file{lwarp-keyfloat.sty}{\from{lwarp.dtx}{keyfloat}}
@@ -274,6 +278,7 @@
 \file{lwarp-listliketab.sty}{\from{lwarp.dtx}{listliketab}}
 \file{lwarp-lltjext.sty}{\from{lwarp.dtx}{lltjext}}
 \file{lwarp-longtable.sty}{\from{lwarp.dtx}{longtable}}
+\file{lwarp-lpic.sty}{\from{lwarp.dtx}{lpic}}
 \file{lwarp-lscape.sty}{\from{lwarp.dtx}{lscape}}
 \file{lwarp-ltablex.sty}{\from{lwarp.dtx}{ltablex}}
 \file{lwarp-ltcaption.sty}{\from{lwarp.dtx}{ltcaption}}
@@ -285,6 +290,7 @@
 \file{lwarp-luamplib.sty}{\from{lwarp.dtx}{luamplib}}
 \file{lwarp-luatexko.sty}{\from{lwarp.dtx}{luatexko}}
 \file{lwarp-luatodonotes.sty}{\from{lwarp.dtx}{luatodonotes}}
+\file{lwarp-luavlna.sty}{\from{lwarp.dtx}{luavlna}}
 \file{lwarp-lyluatex.sty}{\from{lwarp.dtx}{lyluatex}}
 \file{lwarp-magaz.sty}{\from{lwarp.dtx}{magaz}}
 \file{lwarp-makeidx.sty}{\from{lwarp.dtx}{makeidx}}
@@ -304,8 +310,11 @@
 \file{lwarp-mathptmx.sty}{\from{lwarp.dtx}{mathptmx}}
 \file{lwarp-mathspec.sty}{\from{lwarp.dtx}{mathspec}}
 \file{lwarp-mathtools.sty}{\from{lwarp.dtx}{mathtools}}
+\file{lwarp-mattens.sty}{\from{lwarp.dtx}{mattens}}
+\file{lwarp-maybemath.sty}{\from{lwarp.dtx}{maybemath}}
 \file{lwarp-mcaption.sty}{\from{lwarp.dtx}{mcaption}}
 \file{lwarp-mdframed.sty}{\from{lwarp.dtx}{mdframed}}
+\file{lwarp-mdwmath.sty}{\from{lwarp.dtx}{mdwmath}}
 \file{lwarp-media9.sty}{\from{lwarp.dtx}{media9}}
 \file{lwarp-memhfixc.sty}{\from{lwarp.dtx}{memhfixc}}
 \file{lwarp-menukeys.sty}{\from{lwarp.dtx}{menukeys}}
@@ -391,6 +400,7 @@
 \file{lwarp-physunits.sty}{\from{lwarp.dtx}{physunits}}
 \file{lwarp-picinpar.sty}{\from{lwarp.dtx}{picinpar}}
 \file{lwarp-pifont.sty}{\from{lwarp.dtx}{pifont}}
+\file{lwarp-pinlabel.sty}{\from{lwarp.dtx}{pinlabel}}
 \file{lwarp-placeins.sty}{\from{lwarp.dtx}{placeins}}
 \file{lwarp-plarydshln.sty}{\from{lwarp.dtx}{plarydshln}}
 \file{lwarp-plext.sty}{\from{lwarp.dtx}{plext}}
@@ -421,6 +431,7 @@
 \file{lwarp-repltext.sty}{\from{lwarp.dtx}{repltext}}
 \file{lwarp-resizegather.sty}{\from{lwarp.dtx}{resizegather}}
 \file{lwarp-returntogrid.sty}{\from{lwarp.dtx}{returntogrid}}
+\file{lwarp-rlepsf.sty}{\from{lwarp.dtx}{rlepsf}}
 \file{lwarp-rmathbr.sty}{\from{lwarp.dtx}{rmathbr}}
 \file{lwarp-rmpage.sty}{\from{lwarp.dtx}{rmpage}}
 \file{lwarp-romanbar.sty}{\from{lwarp.dtx}{romanbar}}
@@ -457,6 +468,7 @@
 \file{lwarp-simplebnf.sty}{\from{lwarp.dtx}{simplebnf}}
 \file{lwarp-SIunits.sty}{\from{lwarp.dtx}{SIunits}}
 \file{lwarp-siunitx.sty}{\from{lwarp.dtx}{siunitx}}
+\file{lwarp-skmath.sty}{\from{lwarp.dtx}{skmath}}
 \file{lwarp-slantsc.sty}{\from{lwarp.dtx}{slantsc}}
 \file{lwarp-slashed.sty}{\from{lwarp.dtx}{slashed}}
 \file{lwarp-soul.sty}{\from{lwarp.dtx}{soul}}
@@ -491,6 +503,7 @@
 \file{lwarp-tagpdf.sty}{\from{lwarp.dtx}{tagpdf}}
 \file{lwarp-tascmac.sty}{\from{lwarp.dtx}{tascmac}}
 \file{lwarp-tcolorbox.sty}{\from{lwarp.dtx}{tcolorbox}}
+\file{lwarp-tensor.sty}{\from{lwarp.dtx}{tensor}}
 \file{lwarp-termcal.sty}{\from{lwarp.dtx}{termcal}}
 \file{lwarp-textarea.sty}{\from{lwarp.dtx}{textarea}}
 \file{lwarp-textcomp.sty}{\from{lwarp.dtx}{textcomp}}
@@ -508,6 +521,7 @@
 \file{lwarp-thumb.sty}{\from{lwarp.dtx}{thumb}}
 \file{lwarp-thumbs.sty}{\from{lwarp.dtx}{thumbs}}
 \file{lwarp-tikz.sty}{\from{lwarp.dtx}{tikz}}
+\file{lwarp-tikz-imagelabels.sty}{\from{lwarp.dtx}{tikz-imagelabels}}
 \file{lwarp-titleps.sty}{\from{lwarp.dtx}{titleps}}
 \file{lwarp-titleref.sty}{\from{lwarp.dtx}{titleref}}
 \file{lwarp-titlesec.sty}{\from{lwarp.dtx}{titlesec}}
@@ -563,6 +577,7 @@
 \file{lwarp-xechangebar.sty}{\from{lwarp.dtx}{xechangebar}}
 \file{lwarp-xellipsis.sty}{\from{lwarp.dtx}{xellipsis}}
 \file{lwarp-xetexko-vertical.sty}{\from{lwarp.dtx}{xetexko-vertical}}
+\file{lwarp-xevlna.sty}{\from{lwarp.dtx}{xevlna}}
 \file{lwarp-xfakebold.sty}{\from{lwarp.dtx}{xfakebold}}
 \file{lwarp-xfrac.sty}{\from{lwarp.dtx}{xfrac}}
 \file{lwarp-xltabular.sty}{\from{lwarp.dtx}{xltabular}}

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-SIunits.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-SIunits.sty	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-SIunits.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -291,12 +291,18 @@
 \CustomizeMathJax{\newcommand{\molepercubicmetrenp}{\mole\usk\rpcubic\metre}}
 \CustomizeMathJax{\newcommand{\radianpersquaresecond}{\radian\per\second\squared}}
 \CustomizeMathJax{\newcommand{\radianpersquaresecondnp}{\radian\usk\second\rpsquared}}
-\CustomizeMathJax{\newcommand{\kilogramsquaremetrepersecond}{\kilogram\usk\squaremetre\per\second}}
-\CustomizeMathJax{\newcommand{\kilogramsquaremetrepersecondnp}{\kilogram\usk\squaremetre\usk\reciprocal\second}}
+\CustomizeMathJax{\newcommand{\kilogramsquaremetrepersecond}{%
+    \kilogram\usk\squaremetre\per\second%
+}}
+\CustomizeMathJax{\newcommand{\kilogramsquaremetrepersecondnp}{%
+    \kilogram\usk\squaremetre\usk\reciprocal\second%
+}}
 \CustomizeMathJax{\newcommand{\radianpersecond}{\radian\per\second}}
 \CustomizeMathJax{\newcommand{\radianpersecondnp}{\radian\usk\reciprocal\second}}
 \CustomizeMathJax{\newcommand{\squaremetrepercubicmetre}{\squaremetre\per\cubic\metre}}
-\CustomizeMathJax{\newcommand{\squaremetrepercubicmetrenp}{\squaremetre\usk\rpcubic\metre}}
+\CustomizeMathJax{\newcommand{\squaremetrepercubicmetrenp}{%
+    \squaremetre\usk\rpcubic\metre%
+}}
 \CustomizeMathJax{\newcommand{\katalpercubicmetre}{\katal\per\cubic\metre}}
 \CustomizeMathJax{\newcommand{\katalpercubicmetrenp}{\katal\usk\rpcubic\metre}}
 \CustomizeMathJax{\newcommand{\coulombpermol}{\coulomb\per\mole}}
@@ -305,8 +311,12 @@
 \CustomizeMathJax{\newcommand{\amperepersquaremetrenp}{\ampere\usk\rpsquare\metre}}
 \CustomizeMathJax{\newcommand{\kilogrampercubicmetre}{\kilogram\per\cubic\metre}}
 \CustomizeMathJax{\newcommand{\kilogrampercubicmetrenp}{\kilogram\usk\rpcubic\metre}}
-\CustomizeMathJax{\newcommand{\squaremetrepernewtonsecond}{\squaremetre\per\newton\usk\second}}
-\CustomizeMathJax{\newcommand{\squaremetrepernewtonsecondnp}{\squaremetre\usk\reciprocal\newton\usk\reciprocal\second}}
+\CustomizeMathJax{\newcommand{\squaremetrepernewtonsecond}{%
+    \squaremetre\per\newton\usk\second%
+}}
+\CustomizeMathJax{\newcommand{\squaremetrepernewtonsecondnp}{%
+    \squaremetre\usk\reciprocal\newton\usk\reciprocal\second%
+}}
 \CustomizeMathJax{\newcommand{\pascalsecond}{\pascal\usk\second}}
 \CustomizeMathJax{\newcommand{\coulombpercubicmetre}{\coulomb\per\cubic\metre}}
 \CustomizeMathJax{\newcommand{\coulombpercubicmetrenp}{\coulomb\usk\rpcubic\metre}}
@@ -334,11 +344,21 @@
 \CustomizeMathJax{\newcommand{\coulombperkilogram}{\coulomb\per\kilogram}}
 \CustomizeMathJax{\newcommand{\coulombperkilogramnp}{\coulomb\usk\reciprocal\kilogram}}
 \CustomizeMathJax{\newcommand{\squaremetrepersecond}{\squaremetre\per\second}}
-\CustomizeMathJax{\newcommand{\squaremetrepersecondnp}{\squaremetre\usk\reciprocal\second}}
-\CustomizeMathJax{\newcommand{\squaremetrepersquaresecond}{\squaremetre\per\second\squared}}
-\CustomizeMathJax{\newcommand{\squaremetrepersquaresecondnp}{\squaremetre\usk\second\rpsquared}}
-\CustomizeMathJax{\newcommand{\kilogrammetrepersecond}{\kilogram\usk\metre\per\second}}
-\CustomizeMathJax{\newcommand{\kilogrammetrepersecondnp}{\kilogram\usk\metre\usk\reciprocal\second}}
+\CustomizeMathJax{\newcommand{\squaremetrepersecondnp}{%
+    \squaremetre\usk\reciprocal\second%
+}}
+\CustomizeMathJax{\newcommand{\squaremetrepersquaresecond}{%
+    \squaremetre\per\second\squared%
+}}
+\CustomizeMathJax{\newcommand{\squaremetrepersquaresecondnp}{%
+    \squaremetre\usk\second\rpsquared%
+}}
+\CustomizeMathJax{\newcommand{\kilogrammetrepersecond}{%
+    \kilogram\usk\metre\per\second%
+}}
+\CustomizeMathJax{\newcommand{\kilogrammetrepersecondnp}{%
+    \kilogram\usk\metre\usk\reciprocal\second%
+}}
 \CustomizeMathJax{\newcommand{\candelapersquaremetre}{\candela\per\squaremetre}}
 \CustomizeMathJax{\newcommand{\candelapersquaremetrenp}{\candela\usk\rpsquare\metre}}
 \CustomizeMathJax{\newcommand{\amperepermetre}{\ampere\per\metre}}
@@ -349,54 +369,93 @@
 \CustomizeMathJax{\newcommand{\henrypermetrenp}{\henry\usk\reciprocal\metre}}
 \CustomizeMathJax{\newcommand{\kilogrampersecond}{\kilogram\per\second}}
 \CustomizeMathJax{\newcommand{\kilogrampersecondnp}{\kilogram\usk\reciprocal\second}}
-\CustomizeMathJax{\newcommand{\kilogrampersquaremetresecond}{\kilogram\per\squaremetre\usk\second}}
-\CustomizeMathJax{\newcommand{\kilogrampersquaremetresecondnp}{\kilogram\usk\rpsquare\metre\usk\reciprocal\second}}
+\CustomizeMathJax{\newcommand{\kilogrampersquaremetresecond}{%
+    \kilogram\per\squaremetre\usk\second%
+}}
+\CustomizeMathJax{\newcommand{\kilogrampersquaremetresecondnp}{%
+    \kilogram\usk\rpsquare\metre\usk\reciprocal\second%
+}}
 \CustomizeMathJax{\newcommand{\kilogrampersquaremetre}{\kilogram\per\squaremetre}}
 \CustomizeMathJax{\newcommand{\kilogrampersquaremetrenp}{\kilogram\usk\rpsquare\metre}}
 \CustomizeMathJax{\newcommand{\kilogrampermetre}{\kilogram\per\metre}}
 \CustomizeMathJax{\newcommand{\kilogrampermetrenp}{\kilogram\usk\reciprocal\metre}}
 \CustomizeMathJax{\newcommand{\joulepermolekelvin}{\joule\per\mole\usk\kelvin}}
-\CustomizeMathJax{\newcommand{\joulepermolekelvinnp}{\joule\usk\reciprocal\mole\usk\reciprocal\kelvin}}
+\CustomizeMathJax{\newcommand{\joulepermolekelvinnp}{%
+    \joule\usk\reciprocal\mole\usk\reciprocal\kelvin%
+}}
 \CustomizeMathJax{\newcommand{\kilogramperkilomole}{\kilogram\per\kilo\mole}}
-\CustomizeMathJax{\newcommand{\kilogramperkilomolenp}{\kilogram\usk\kilo\reciprocal\mole}}
+\CustomizeMathJax{\newcommand{\kilogramperkilomolenp}{%
+    \kilogram\usk\kilo\reciprocal\mole%
+}}
 \CustomizeMathJax{\newcommand{\kilogramsquaremetre}{\kilogram\usk\squaremetre}}
 \CustomizeMathJax{\newcommand{\kilogramsquaremetrenp}{\kilogramsquaremetre}}
-\CustomizeMathJax{\newcommand{\kilogrammetrepersquaresecond}{\kilogram\usk\metre\per\second\squared}}
-\CustomizeMathJax{\newcommand{\kilogrammetrepersquaresecondnp}{\kilogram\usk\metre\usk\second\rpsquared}}
+\CustomizeMathJax{\newcommand{\kilogrammetrepersquaresecond}{%
+    \kilogram\usk\metre\per\second\squared%
+}}
+\CustomizeMathJax{\newcommand{\kilogrammetrepersquaresecondnp}{%
+    \kilogram\usk\metre\usk\second\rpsquared%
+}}
 \CustomizeMathJax{\newcommand{\newtonpersquaremetre}{\newton\per\squaremetre}}
 \CustomizeMathJax{\newcommand{\newtonpersquaremetrenp}{\newton\usk\rpsquare\metre}}
 \CustomizeMathJax{\newcommand{\persquaremetresecond}{1\per\squaremetre\usk\second}}
-\CustomizeMathJax{\newcommand{\persquaremetresecondnp}{\rpsquare\metre\usk\reciprocal\second}}
+\CustomizeMathJax{\newcommand{\persquaremetresecondnp}{%
+    \rpsquare\metre\usk\reciprocal\second%
+}}
 \CustomizeMathJax{\newcommand{\wattperkilogram}{\watt\per\kilogram}}
 \CustomizeMathJax{\newcommand{\wattperkilogramnp}{\watt\usk\reciprocal\kilogram}}
 \CustomizeMathJax{\newcommand{\wattpercubicmetre}{\watt\per\cubic\metre}}
 \CustomizeMathJax{\newcommand{\wattpercubicmetrenp}{\watt\usk\rpcubic\metre}}
-\CustomizeMathJax{\newcommand{\wattpersquaremetresteradian}{\watt\per\squaremetre\usk\steradian}}
-\CustomizeMathJax{\newcommand{\wattpersquaremetresteradiannp}{\watt\usk\rpsquare\metre\usk\rp\steradian}}
+\CustomizeMathJax{\newcommand{\wattpersquaremetresteradian}{%
+    \watt\per\squaremetre\usk\steradian%
+}}
+\CustomizeMathJax{\newcommand{\wattpersquaremetresteradiannp}{%
+    \watt\usk\rpsquare\metre\usk\rp\steradian%
+}}
 \CustomizeMathJax{\newcommand{\jouleperkilogramkelvin}{\joule\per\kilogram\usk\kelvin}}
-\CustomizeMathJax{\newcommand{\jouleperkilogramkelvinnp}{\joule\usk\reciprocal\kilogram\usk\reciprocal\kelvin}}
+\CustomizeMathJax{\newcommand{\jouleperkilogramkelvinnp}{%
+    \joule\usk\reciprocal\kilogram\usk\reciprocal\kelvin%
+}}
 \CustomizeMathJax{\newcommand{\squaremetreperkilogram}{\squaremetre\per\kilogram}}
-\CustomizeMathJax{\newcommand{\rpsquaremetreperkilogram}{\squaremetre\usk\reciprocal\kilogram}}
+\CustomizeMathJax{\newcommand{\rpsquaremetreperkilogram}{%
+    \squaremetre\usk\reciprocal\kilogram%
+}}
 \CustomizeMathJax{\newcommand{\cubicmetreperkilogram}{\cubic\metre\per\kilogram}}
-\CustomizeMathJax{\newcommand{\rpcubicmetreperkilogram}{\cubic\metre\usk\reciprocal\kilogram}}
+\CustomizeMathJax{\newcommand{\rpcubicmetreperkilogram}{%
+    \cubic\metre\usk\reciprocal\kilogram%
+}}
 \CustomizeMathJax{\newcommand{\newtonpermetre}{\newton\per\metre}}
 \CustomizeMathJax{\newcommand{\newtonpermetrenp}{\newton\usk\reciprocal\metre}}
 \CustomizeMathJax{\newcommand{\Celsius}{\unicode{x2103}}}
 \CustomizeMathJax{\newcommand{\wattpermetrekelvin}{\watt\per\metre\usk\kelvin}}
-\CustomizeMathJax{\newcommand{\wattpermetrekelvinnp}{\watt\usk\reciprocal\metre\usk\reciprocal\kelvin}}
-\CustomizeMathJax{\newcommand{\newtonmetre}{\newton\usk\metre} \CustomizeMathJax{\newcommand{\newtonmetrenp}{\newtonmetre}}}
-\CustomizeMathJax{\newcommand{\squaremetrepercubicsecond}{\squaremetre\per\cubic\second}}
-\CustomizeMathJax{\newcommand{\squaremetrepercubicsecondnp}{\squaremetre\usk\rpcubic\second}}
+\CustomizeMathJax{\newcommand{\wattpermetrekelvinnp}{%
+    \watt\usk\reciprocal\metre\usk\reciprocal\kelvin%
+}}
+\CustomizeMathJax{\newcommand{\newtonmetre}{\newton\usk\metre}
+\CustomizeMathJax{\newcommand{\newtonmetrenp}{\newtonmetre}}}
+\CustomizeMathJax{\newcommand{\squaremetrepercubicsecond}{%
+    \squaremetre\per\cubic\second%
+}}
+\CustomizeMathJax{\newcommand{\squaremetrepercubicsecondnp}{%
+    \squaremetre\usk\rpcubic\second%
+}}
 \CustomizeMathJax{\newcommand{\metrepersecond}{\metre\per\second}}
 \CustomizeMathJax{\newcommand{\metrepersecondnp}{\metre\usk\reciprocal\second}}
 \CustomizeMathJax{\newcommand{\joulepercubicmetre}{\joule\per\cubicmetre}}
 \CustomizeMathJax{\newcommand{\joulepercubicmetrenp}{\joule\usk\rpcubic\metre}}
-\CustomizeMathJax{\newcommand{\kilogrampercubicmetrecoulomb}{\kilogram\per\cubic\metre\usk\coulomb}}
-\CustomizeMathJax{\newcommand{\kilogrampercubicmetrecoulombnp}{\kilogram\usk\rpcubic\metre\usk\reciprocal\coulomb}}
+\CustomizeMathJax{\newcommand{\kilogrampercubicmetrecoulomb}{%
+    \kilogram\per\cubic\metre\usk\coulomb%
+}}
+\CustomizeMathJax{\newcommand{\kilogrampercubicmetrecoulombnp}{%
+    \kilogram\usk\rpcubic\metre\usk\reciprocal\coulomb%
+}}
 \CustomizeMathJax{\newcommand{\cubicmetrepersecond}{\cubicmetre\per\second}}
 \CustomizeMathJax{\newcommand{\rpcubicmetrepersecond}{\cubicmetre\usk\reciprocal\second}}
-\CustomizeMathJax{\newcommand{\kilogrampersecondcubicmetre}{\kilogram\per\second\usk\cubicmetre}}
-\CustomizeMathJax{\newcommand{\kilogrampersecondcubicmetrenp}{\kilogram\usk\reciprocal\second\usk\rpcubic\metre}}
+\CustomizeMathJax{\newcommand{\kilogrampersecondcubicmetre}{%
+    \kilogram\per\second\usk\cubicmetre%
+}}
+\CustomizeMathJax{\newcommand{\kilogrampersecondcubicmetrenp}{%
+    \kilogram\usk\reciprocal\second\usk\rpcubic\metre%
+}}
 \end{warpMathJax}
 \endinput
 %%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-acro.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-acro.sty	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-acro.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -30,8 +30,11 @@
     \catcode`\$=\active% lwarp
     \LWR at DeclareAcronym
 }
-
 \ExplSyntaxOn
+\cs_new_protected:Npn \LWR at HTML@acro_dot_fill: {\dots\space}
+\LWR at formatted{acro_dot_fill:}
+\ExplSyntaxOff
+\ExplSyntaxOn
 \@ifpackagelater{acro}{2020/04/29}%
 {}% v3 or later
 {% before v3

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithmicx.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithmicx.sty	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithmicx.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -21,7 +21,9 @@
 \renewcommand*{\ALG at doentity}{%
 \origALG at doentity%
 \LWR at htmltagc{%
-span style="width:\LWR at printlength{\ALG at thistlm}; display:inline-block;"%
+    span style=\textquotedbl{}%
+        width:\LWR at printlength{\ALG at thistlm}; display:inline-block;%
+    \textquotedbl%
 }%
 \ifbool{FormatWP}{%
 \setlength{\LWR at templengthone}{\the\ALG at thistlm}%

Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-amscdx.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-amscdx.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-amscdx.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -0,0 +1,34 @@
+%%
+%% This is file `lwarp-amscdx.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `amscdx')
+%% This is a generated file.
+%% Copyright 2016-2020 Brian Dunn
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+\LWR at ProvidesPackagePass{amscdx}[2019/07/02]
+\begin{warpMathJax}
+\CustomizeMathJax{%
+    \renewenvironment{CD}
+        {\text{(Use \unicode{x005C}displaymathother before the CD enviroment.) \quad}}
+        {\quad \text{(Use \unicode{x005C}displaymathnormal after the CD enviroment.)}}
+}
+
+\CustomizeMathJax{\newcommand{\CDfattrue}{}}
+\CustomizeMathJax{\newcommand{\CDfatfalse}{}}
+\CustomizeMathJax{\newcommand{\CDashtrue}{}}
+\CustomizeMathJax{\newcommand{\CDashfalse}{}}
+\CustomizeMathJax{\newcommand{\CDlor}[1]{}}
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-amscdx.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-amscdx.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-amsmath.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-amsmath.sty	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-amsmath.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -134,6 +134,16 @@
 }
 \begin{warpMathJax}
 \CustomizeMathJax{\newcommand{\intertext}[1]{\text{#1}\notag \\}}
+\CustomizeMathJax{\let\Hat\hat}
+\CustomizeMathJax{\let\Check\check}
+\CustomizeMathJax{\let\Tilde\tilde}
+\CustomizeMathJax{\let\Acute\acute}
+\CustomizeMathJax{\let\Grave\grave}
+\CustomizeMathJax{\let\Dot\dot}
+\CustomizeMathJax{\let\Ddot\ddot}
+\CustomizeMathJax{\let\Breve\breve}
+\CustomizeMathJax{\let\Bar\bar}
+\CustomizeMathJax{\let\Vec\vec}
 \end{warpMathJax}
 \endinput
 %%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-changes.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-changes.sty	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-changes.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -15,9 +15,9 @@
 %%   http://www.latex-project.org/lppl.txt
 %% and version 1.3 or later is part of all distributions of LaTeX
 %% version 2005/12/01 or later.
-\LWR at ProvidesPackagePass{changes}[2019/01/26]
+\LWR at ProvidesPackagePass{changes}[2021/02/14]
 \renewcommand{\ChangesListline}[4]{%
-    \IfSubStr{\Changes at loc@show}{#1}{%
+    \IfIsInList{#1}{\Changes at loc@show}{%
         \LWR at startpars%
         #2: #3 \qquad
         \nameref{\BaseJobname-autopage-#4}%
@@ -25,112 +25,246 @@
     }{}%
 }
 
-\renewcommand{\Changes at summaryline}[4]{%
-    \IfSubStr{\Changes at loc@show}{#1}{%
-        \ifthenelse{\not\equal{\Changes at loc@style}{compactsummary} \or #2 > 0}%
-            {%
-                #3:~#2#4%
-            }{}%
-    }{}%
+\renewcommand{\listofchanges}[1][\@empty]{%
+\setkeys{Changes at loc}{#1}%
+\ifbool{Changes at optiondraft}%
+{%
+\IfIsInList{\Changes at loc@style}{list|summary|compactsummary}%
+{}%
+{%
+\PackageWarning{changes}{Wrong style for list of changes: '\Changes at loc@style', using 'list' instead.}%
+\def\Changes at loc@style{}%
+}%
+\IfIsEmpty{\Changes at loc@style}%
+{\def\Changes at loc@style{list}}%
+{}%
+\IfStrEq{\Changes at loc@show}{all}%
+{\def\Changes at loc@show{added|deleted|replaced|highlight|comment}}%
+{}%
+\IfIsInList{\Changes at loc@show}{added|deleted|replaced|highlight|comment}%
+{}%
+{%
+\PackageWarning{changes}{Wrong show-value for list of changes: '\Changes at loc@show', using 'all' instead.}%
+\def\Changes at loc@show{}%
+}%
+\IfIsEmpty{\Changes at loc@show}%
+{\def\Changes at loc@show{added|deleted|replaced|highlight|comment}}%
+{}%
+\IfIsEmpty{\Changes at loc@title}%
+{%
+\IfStrEq{\Changes at loc@style}{list}%
+{\def\Changes at heading{\listofchangesname}}{}%
+\IfStrEq{\Changes at loc@style}{summary}%
+{\def\Changes at heading{\summaryofchangesname}}{}%
+\IfStrEq{\Changes at loc@style}{compactsummary}%
+{\def\Changes at heading{\compactsummaryofchangesname}}{}%
+}%
+{\def\Changes at heading{\Changes at loc@title}}%
+\section*{\Changes at heading}
+\IfIsInList{\Changes at loc@style}{list}%
+{%
+\IfFileExists{\jobname.\Changes at locextension}%
+{%
+\newread\Changes at InFile%
+\openin\Changes at InFile=\jobname.\Changes at locextension%
+\loop\unless\ifeof\Changes at InFile%
+\read\Changes at InFile to \Changes at Line%
+\ifeof\Changes at InFile\else%
+\Changes at Line%
+\fi
+\repeat
+\closein\Changes at InFile%
+}{%
+\emph{\changesnoloc}%
+\PackageWarning{changes}{LaTeX rerun needed for list of changes}%
+}%
+}{}%
+\IfIsInList{\Changes at loc@style}{summary|compactsummary}%
+{%
+\IfFileExists{\jobname.\Changes at socextension}%
+{%
+\newread\Changes at InFile%
+\openin\Changes at InFile = \jobname.\Changes at socextension%
+\loop\unless\ifeof\Changes at InFile%
+\read\Changes at InFile to \Changes at Line%
+\ifeof\Changes at InFile\else%
+\expandafter\changes at chopline\Changes at Line\\%
+\textbf{%
+\IfIsColored%
+{\color{\Changes at Incolor}}%
+{}%
+\IfIsAnonymous{\Changes at Inid}%
+{%
+    \LWR at textcurrentcolor{%     lwarp
+        \changesauthorname: \changesanonymousname%
+    }%  lwarp
+}%
+{%
+    \LWR at textcurrentcolor{%     lwarp
+\changesauthorname: \Changes at Inid%
+    }%  lwarp
+\IfIsEmpty{\Changes at Inname}%
+{}%
+{ %
+    \LWR at textcurrentcolor{%     lwarp
+(\Changes at Inname)%
+    }%  lwarp
+}%
+}%
+}\\%
+\numdef{\Changes at InSum}{0}%
+\renewcommand*{\do}[1]{%
+\numdef{\Changes at InSum}{\Changes at InSum + \csuse{Changes at In########1}}%
+}%
+\expandafter\dopsvlist\expandafter{\Changes at loc@show}%
+\ifnumcomp{\Changes at InSum}{=}{0}%
+{%
+    \changesnochanges%
+    \par%   \lwarp
+}%
+{%
+\numdef{\Changes at InCount}{0}%
+\renewcommand*{\do}[1]{%
+\numdef{\Changes at InCount}{\Changes at InCount + \csuse{Changes at In########1}}%
+\ifboolexpr{%
+not test {\IfStrEq{\Changes at loc@style}{compactsummary}} or%
+test {\ifnumgreater{\csuse{Changes at In########1}}{0}}%
+}%
+{%
+\csuse{changes########1name}~%
+\dotfill~%   \lwarp
+\csuse{Changes at In########1}%
+{\\}%
+}%
+{}%
+}%
+\expandafter\dopsvlist\expandafter{\Changes at loc@show}%
+    \par%   lwarp
+}%
+\fi%
+\repeat
+\closein\Changes at InFile%
+}{%
+\emph{\changesnosoc}%
+\PackageWarning{changes}{LaTeX rerun needed for summary of changes}%
+}%
+}{}%
+}{}%
 }
 
-\xpatchcmd{\listofchanges}
-    {{\changesauthorname: \changesanonymousname}}
-    {{\LWR at textcurrentcolor{\changesauthorname: \changesanonymousname}}}
-    {}
-    {\LWR at patcherror{changes}{listofchanges A}}
+\renewcommand{\Changes at Markup@comment}[3]{%
+\IfStrEq{\Changes at optioncommentmarkup}{todo}%
+{%
+\IfIsColored%
+{\colorlet{Changes at todocolor}{authorcolor}}%
+{\colorlet{Changes at todocolor}{black}}%
+\todo[color=Changes at todocolor!10, bordercolor=Changes at todocolor, linecolor=Changes at todocolor!70, nolist]{\textbf{[\IfIsAnonymous{#2}{}{#3~}\arabic{authorcommentcount}]} #1}%
+}{}%
+\IfStrEq{\Changes at optioncommentmarkup}{margin}%
+{%
+\marginpar{%
+\IfIsColored%
+{\leavevmode\color{authorcolor}}%
+{}%
+    \LWR at textcurrentcolor{%     lwarp
+\textbf{[\IfIsAnonymous{#2}{}{#3~}\arabic{Changes at commentCount#2}]:} #1%
+    }%  lwarp
+}%
+}{}%
+\IfStrEq{\Changes at optioncommentmarkup}{footnote}%
+{%
+\footnote{%
+    \LWR at textcurrentcolor{%     lwarp
+\textbf{[\IfIsAnonymous{#2}{}{#3~}\arabic{Changes at commentCount#2}]:} #1%
+    }%  lwarp
+}%
+}{}%
+\IfStrEq{\Changes at optioncommentmarkup}{uwave}%
+{%
+{%
+\IfIsColored%
+{\color{authorcolor}}%
+{}%
+\allowbreak%
+\uwave{%
+\textbf{[\IfIsAnonymous{#2}{}{#3~}\arabic{Changes at commentCount#2}]:} #1%
+}%
+}%
+}{}%
+}
 
-\xpatchcmd{\listofchanges}
-    {\changesauthorname: \Changes at InID}
-    {\LWR at textcurrentcolor{\changesauthorname: \Changes at InID}}
-    {}
-    {\LWR at patcherror{changes}{listofchanges B}}
-
-\xpatchcmd{\listofchanges}
-    {(\Changes at InName)}
-    {\LWR at textcurrentcolor{(\Changes at InName)}}
-    {}
-    {\LWR at patcherror{changes}{listofchanges C}}
-
-\xpatchcmd{\listofchanges}
-    {\parbox{\Changes at summary@width}}
-    {}
-    {}
-    {\LWR at patcherror{changes}{listofchanges D}}
-
-\xpatchcmd{\Changes at Markup@comment}
-    {%
-        \ifthenelse{\isAnonymous{#2}}%
-            {\textbf{[\arabic{Changes at commentCount#2}]:} }%
-            {\textbf{[#3~\arabic{Changes at commentCount#2}]:} }%
-        #1%
-    }
-    {%
-        \LWR at textcurrentcolor{%         lwarp
-        \ifthenelse{\isAnonymous{#2}}%
-            {\textbf{[\arabic{Changes at commentCount#2}]:} }%
-            {\textbf{[#3~\arabic{Changes at commentCount#2}]:} }%
-        #1%
-        }%                              lwarp
-    }
-    {}
-    {\LWR at patcherror{changes}{\Changes at Markup@comment A}}
-
-\xpatchcmd{\Changes at Markup@comment}
-    {%
-        \uwave{%
-            \ifthenelse{\isAnonymous{#2}}%
-                {\textbf{[\arabic{Changes at commentCount#2}]:} }%
-                {\textbf{[#3~\arabic{Changes at commentCount#2}]:} }%
-            #1%
-        }%
-    }
-    {%
-        \LWR at textcurrentcolor{%         lwarp
-        \uwave{%
-            \ifthenelse{\isAnonymous{#2}}%
-                {\textbf{[\arabic{Changes at commentCount#2}]:} }%
-                {\textbf{[#3~\arabic{Changes at commentCount#2}]:} }%
-            #1%
-        }%
-        }%                              lwarp
-    }
-    {}
-    {\LWR at patcherror{changes}{\Changes at Markup@comment B}}
-
-\xpatchcmd{\Changes at output}
-    {\Changes at Markup@author{\Changes at output@author{#2}{left}}}
-    {\LWR at textcurrentcolor{\Changes at Markup@author{\Changes at output@author{#2}{left}}}}
-    {}
-    {\LWR at patcherror{changes}{Changes at output A}}
-
-\xpatchcmd{\Changes at output}
-    {%
-        \ifthenelse{\equal{#1}{added}}{\Changes at Markup@added{#3}}{}%
-        \ifthenelse{\equal{#1}{deleted}}{\Changes at Markup@deleted{#4}}{}%
-        \ifthenelse{\equal{#1}{replaced}}{%
-            {\Changes at Markup@added{#3}}\allowbreak\Changes at Markup@deleted{#4}%
-        }{}%
-        \ifthenelse{\equal{#1}{highlight}}{\Changes at Markup@highlight{#3}}{}%
-    }
-    {%
-        \LWR at textcurrentcolor{%
-        \ifthenelse{\equal{#1}{added}}{\Changes at Markup@added{#3}}{}%
-        \ifthenelse{\equal{#1}{deleted}}{\Changes at Markup@deleted{#4}}{}%
-        \ifthenelse{\equal{#1}{replaced}}{%
-            {\Changes at Markup@added{#3}}\allowbreak\Changes at Markup@deleted{#4}%
-        }{}%
-        \ifthenelse{\equal{#1}{highlight}}{\Changes at Markup@highlight{#3}}{}%
-        }%
-    }
-    {}
-    {\LWR at patcherror{changes}{Changes at output B}}
-
-\xpatchcmd{\Changes at output}
-    {\Changes at Markup@author{\Changes at output@author{#2}{right}}}
-    {\LWR at textcurrentcolor{\Changes at Markup@author{\Changes at output@author{#2}{right}}}}
-    {}
-    {\LWR at patcherror{changes}{Changes at output C}}
+\renewrobustcmd{\Changes at output}[7]{%
+\ifbool{Changes at optiondraft}%
+{%
+\Changes at check@author{#2}%
+\Changes at set@color{#2}%
+{%
+\IfIsInList{#1}{added|deleted|replaced|highlight}%
+{%
+\IfIsEmpty{#5}%
+{%
+\IfIsAuthorEmptyAtPosition{#2}{left}%
+{}%
+{{%
+\IfIsColored%
+{\color{authorcolor}}%
+{}%
+    \LWR at textcurrentcolor{%     lwarp
+\Changes at Markup@author{\Changes at output@author{#2}{left}}%
+    }%  lwarp
+}}%
+}{}%
+{%
+\IfStrEq{#1}{highlight}%
+{}{%
+\IfIsColored%
+{\color{authorcolor}}%
+{}%
+}%
+    \LWR at textcurrentcolor{%     lwarp
+\IfStrEq{#1}{added}{\Changes at Markup@added{#3}}{}%
+\IfStrEq{#1}{deleted}{\Changes at Markup@deleted{#4}}{}%
+\IfStrEq{#1}{replaced}{{\Changes at Markup@added{#3}}\allowbreak\Changes at Markup@deleted{#4}}{}%
+\IfStrEq{#1}{highlight}{\Changes at Markup@highlight{#3}}{}%
+    }%  lwarp
+}%
+\IfIsEmpty{#5}%
+{%
+\IfIsAuthorEmptyAtPosition{#2}{right}%
+{}%
+{{%
+\IfIsColored%
+{\color{authorcolor}}%
+{}%
+    \LWR at textcurrentcolor{%     lwarp
+\Changes at Markup@author{\Changes at output@author{#2}{right}}%
+    }%  lwarp
+}}%
+}{}%
+\stepcounter{Changes@#1Count#2}%
+}{}%
+\IfIsEmpty{#5}%
+{}%
+{%
+\stepcounter{Changes at commentCount#2}%
+\Changes at set@commentcount{#2}%
+\Changes at Markup@comment%
+{#5}%
+{#2}%
+{\Changes at output@author{#2}{left}\Changes at output@author{#2}{right}}%
+}%
+}%
+\IfIsEmpty{#2}%
+{\def\Changes at locid{}}%
+{\def\Changes at locid{~(#2)}}%
+\addtocontents{\Changes at locextension}{\protect\ChangesListline{#1}{#6\Changes at locid}{#7}{\thepage}}%
+}%
+{%
+\IfIsEmpty{#3}%
+{\@bsphack\@esphack}%
+{#3}%
+}%
+}
 \endinput
 %%
 %% End of file `lwarp-changes.sty'.

Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-epsf.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-epsf.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-epsf.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -0,0 +1,30 @@
+%%
+%% This is file `lwarp-epsf.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `epsf')
+%% This is a generated file.
+%% Copyright 2016-2020 Brian Dunn
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+\LWR at ProvidesPackagePass{epsf}% not date given
+\xpretocmd{\epsfsetgraph}
+    {\begin{lateximage}}
+    {}
+    {\LWR at patcherror{lwarp-epsf}{epsfsetgraph-begin}}
+
+\xapptocmd{\epsfsetgraph}
+    {\end{lateximage}}
+    {}
+    {\LWR at patcherror{lwarp-epsf}{epsfsetgraph-end}}
+\endinput
+%%
+%% End of file `lwarp-epsf.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-epsf.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-epsfig.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-epsfig.sty	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-epsfig.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -15,7 +15,7 @@
 %%   http://www.latex-project.org/lppl.txt
 %% and version 1.3 or later is part of all distributions of LaTeX
 %% version 2005/12/01 or later.
-\LWR at ProvidesPackageDrop{epsfig}[2017/06/25]
+\LWR at ProvidesPackagePass{epsfig}[2017/06/25]
 \RequirePackage{graphics}
 
 \define at key{igraph}{file}{%
@@ -29,9 +29,11 @@
 \define at key{igraph}{prolog}{}
 
 \define at key{igraph}{silent}[]{}
-\newcommand{\epsfig}[1]{\includegraphics[#1]{\LWR at epsfig@filename}}
+\newcommand{\LWR at HTML@epsfig}[1]{\includegraphics[#1]{\LWR at epsfig@filename}}
+\LWR at formatted{epsfig}
 
-\newcommand{\psfig}[1]{\includegraphics[#1]{\LWR at epsfig@filename}}
+\newcommand{\LWR at HTML@psfig}[1]{\includegraphics[#1]{\LWR at epsfig@filename}}
+\LWR at formatted{psfig}
 \endinput
 %%
 %% End of file `lwarp-epsfig.sty'.

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyhdr.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyhdr.sty	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyhdr.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -17,12 +17,12 @@
 %% version 2005/12/01 or later.
 
 
-\LWR at ProvidesPackageDrop{fancyhdr}[2019/01/31]
+\LWR at ProvidesPackageDrop{fancyhdr}[2021/01/04]
 
 \newcommand*{\fancyhead}[2][]{}
 \newcommand*{\fancyfoot}[2][]{}
 \newcommand*{\fancyhf}[2][]{}
-\newcommand*{\fancypagestyle}[2]{}
+
 \newcommand*{\lhead}[2][]{}
 \newcommand*{\chead}[2][]{}
 \newcommand*{\rhead}[2][]{}
@@ -31,17 +31,31 @@
 \newcommand*{\rfoot}[2][]{}
 \newcommand*{\headrulewidth}{}
 \newcommand*{\footrulewidth}{}
+\providecommand{\headruleskip}{0pt}
+\providecommand{\footruleskip}{0pt}
+\newcommand{\plainheadrulewidth}{0pt}
+\newcommand{\plainfootrulewidth}{0pt}
+\def\fancyplain#1#2{#1}
 \newcommand*{\headrule}{}
 \newcommand*{\footrule}{}
 \newlength{\headwidth}
+\newcommand*{\fancycenter}[1][1em]{}
 \newcommand*{\fancyheadoffset}[2][]{}
 \newcommand*{\fancyfootoffset}[2][]{}
 \newcommand*{\fancyhfoffset}[2][]{}
+\newcommand{\fancyheadinit}[1]{}
+\newcommand{\fancyfootinit}[1]{}
+\newcommand{\fancyhfinit}[1]{}
 \newcommand*{\iffloatpage}[2]{#2}
 \newcommand*{\ifftopfloat}[2]{#2}
 \newcommand*{\iffbotfloat}[2]{#2}
 \newcommand*{\iffootnote}[2]{#2}
 
+\newcommand{\fancypagestyle}[1]{%
+  \@ifnextchar[{\f at nch@pagestyle{#1}}{\f at nch@pagestyle{#1}[]}%
+}
+\long\def\f at nch@pagestyle#1[#2]#3{}
+
 \endinput
 %%
 %% End of file `lwarp-fancyhdr.sty'.

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyvrb.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyvrb.sty	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyvrb.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -77,8 +77,8 @@
     \ifx\FV at LabelBegin\relax\else
         \FancyVerbRuleColor{\LWR at FVfindbordercolor}
         \LWR at htmltagc{%
-            div class="fancyvrblabel" % extra space
-                style="color: \LWR at origpound\LWR at tempcolor"%
+            div class=\textquotedbl{}fancyvrblabel\textquotedbl\ % space
+                style=\textquotedbl{}color: \LWR at origpound\LWR at tempcolor\textquotedbl%
         }
         \LWR at print@textrm{\FV at LabelBegin}% \textrm preserves emdash
         \LWR at htmltagc{/div}\LWR at orignewline%
@@ -95,8 +95,8 @@
     \ifx\FV at LabelEnd\relax\else
         \FancyVerbRuleColor{\LWR at FVfindbordercolor}
         \LWR at htmltagc{%
-            div class="fancyvrblabel" % extra space
-                style="color: \LWR at origpound\LWR at tempcolor"%
+            div class=\textquotedbl{}fancyvrblabel\textquotedbl\ % space
+                style=\textquotedbl{}color: \LWR at origpound\LWR at tempcolor\textquotedbl%
         }
         \LWR at print@textrm{\FV at LabelEnd}
         \LWR at htmltagc{/div}\LWR at orignewline%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-graphics.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-graphics.sty	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-graphics.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -251,9 +251,9 @@
 
 \newcommand*{\LWR at ig@htmltag}{%
     img\LWR at indentHTML%
-    src="%
+    src=\textquotedbl%
     \detokenize\expandafter{\LWR at parsedfilename}%
-    "\LWR at indentHTML%
+    \textquotedbl\LWR at indentHTML%
     \ifthenelse{
         \NOT\equal{\LWR at igwidthstyle}{} \OR
         \NOT\equal{\LWR at igheightstyle}{} \OR
@@ -263,7 +263,7 @@
         \NOT\equal{\LWR at igyscale}{1}
     }%
     {%
-        style="\LWR at indentHTML
+        style=\textquotedbl\LWR at indentHTML
         \ifthenelse{\NOT\equal{\LWR at igwidthstyle}{}}%
             {\LWR at igwidthstyle;\LWR at indentHTML}{}%
         \ifthenelse{\NOT\equal{\LWR at igheightstyle}{}}%
@@ -295,10 +295,10 @@
         \ifthenelse{\NOT\equal{\LWR at opacity}{1}}%
             {opacity:\LWR at opacity;\LWR at indentHTML}{}%
         %
-        "\LWR at indentHTML%
+        \textquotedbl\LWR at indentHTML%
     }{}%
-    class="\LWR at igclass"\LWR at indentHTML%
-    alt="\AltTextOpen\LWR at igalt\AltTextClose" \LWR at orignewline%
+    class=\textquotedbl\LWR at igclass\textquotedbl\LWR at indentHTML%
+    alt=\textquotedbl\AltTextOpen\LWR at igalt\AltTextClose\textquotedbl\ \LWR at orignewline%
 }% end of image tags
 
 \NewDocumentCommand{\LWR at includegraphicsb}{s o o m}
@@ -393,7 +393,7 @@
 \setkeys{krotbox}{#1}%
 \LWR at htmltagc{%
     span\LWR at indentHTML
-    style="\LWR at indentHTML
+    style=\textquotedbl\LWR at indentHTML
     display: inline-block;\LWR at indentHTML
     \ifthenelse{\NOT\equal{\LWR at rotboxorigin}{}}%
         {transform-origin: \LWR at originnames{\LWR at rotboxorigin};\LWR at indentHTML}%
@@ -400,7 +400,7 @@
         {}%
     \LWR at rotstyle{-ms-}{#2}\LWR at indentHTML
     \LWR at rotstyle{-webkit-}{#2}\LWR at indentHTML
-    \LWR at rotstyle{}{#2}"\LWR at orignewline%
+    \LWR at rotstyle{}{#2}\textquotedbl\LWR at orignewline%
 }\LWR at orignewline%
 \begin{LWR at nestspan}%
 #3%
@@ -415,12 +415,12 @@
 \NewDocumentCommand{\LWR at HTML@scalebox}{m o m}{%
 \LWR at htmltagc{%
     span\LWR at indentHTML
-    style="\LWR at indentHTML
+    style=\textquotedbl\LWR at indentHTML
     display: inline-block;\LWR at indentHTML
     \LWR at scalestyle{-ms-}{#1}{\IfNoValueTF{#2}{#1}{#2}}\LWR at indentHTML
     \LWR at scalestyle{-webkit-}{#1}{\IfNoValueTF{#2}{#1}{#2}}\LWR at indentHTML
     \LWR at scalestyle{}{#1}{\IfNoValueTF{#2}{#1}{#2}}
-    "\LWR at orignewline
+    \textquotedbl\LWR at orignewline
 }\LWR at orignewline%
 \begin{LWR at nestspan}%
 #3%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-hang.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-hang.sty	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-hang.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -42,7 +42,7 @@
     \renewcommand*{\LWR at printcloselist}{\LWR at printcloseitemize}%
     \renewcommand*{\LWR at printopenlist}{%
         \LWR at findhangingleftmargin%
-        ul style="%
+        ul style=\textquotedbl%
             \LWR at print@mbox{list-style-type:none;} % extra space
             \LWR at print@mbox{%
                 margin-left:\LWR at printlength{\LWR at templengthone}%
@@ -50,7 +50,7 @@
             \LWR at print@mbox{%
                 text-indent:-\LWR at printlength{\hangingindent}%
             }%
-        "%
+        \textquotedbl%
     }%
     \let\item\LWR at itemizeitem%
     \list{}{}%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -280,7 +280,11 @@
     \LWR at ensuredoingapar%
     \def\LWR at templink{#1}%
     \@onelevel at sanitize\LWR at templink%
-    \LWR at htmltag{img src="\LWR at templink" alt="#2" class="hyperimage"}%
+    \LWR at htmltag{%
+        img src=\textquotedbl\LWR at templink\textquotedbl\ %
+        alt=\textquotedbl#2\textquotedbl\ %
+        class=\textquotedbl{}hyperimage\textquotedbl%
+    }%
     \LWR at ensuredoingapar%
     \endgroup%
 }
@@ -314,10 +318,10 @@
 
 \newcommand*{\LWR at hyperrefbb}[3]{%
     \LWR at htmltag{%
-        a href="%
+        a href=\textquotedbl%
             \detokenize\expandafter{#1}\LWR at hashmark%
             \detokenize\expandafter{#2}.\detokenize\expandafter{#3}%
-        "%
+        \textquotedbl%
         \LWR at addlinktitle%
     }%
     \endgroup%

Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-isomath.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-isomath.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-isomath.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -0,0 +1,32 @@
+%%
+%% This is file `lwarp-isomath.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `isomath')
+%% This is a generated file.
+%% Copyright 2016-2020 Brian Dunn
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+\LWR at ProvidesPackagePass{isomath}[2012/09/04]
+\begin{warpMathJax}
+\CustomizeMathJax{\let\mathbfit\boldsymbol}
+\CustomizeMathJax{\let\mathsfbfit\mathbfit}% not sans
+\CustomizeMathJax{\let\mathsfit\mathit}% not sans
+\CustomizeMathJax{\let\vectorsym\mathbfit}
+\CustomizeMathJax{\let\matrixsym\mathbfit}
+\CustomizeMathJax{\let\tensorsym\mathsfbfit}
+\CustomizeMathJax{\let\mathboldsans\mathsfbfit}
+\CustomizeMathJax{\let\mathbold\mathbfit}
+\CustomizeMathJax{\let\mathsans\mathrm}% not sans
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-isomath.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-isomath.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-isotope.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-isotope.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-isotope.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -0,0 +1,86 @@
+%%
+%% This is file `lwarp-isotope.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `isotope')
+%% This is a generated file.
+%% Copyright 2016-2020 Brian Dunn
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+\LWR at ProvidesPackagePass{isotope}[2011/08/26]
+\newcommand{\LWR at HTML@isotope at two}[2][]{%
+    \renewcommand{\isotope at atomicnumber}{#1}%
+    \edef\LWR at isotope@alttag{%
+        \textbackslash(
+        \textbackslash{}isotope
+        [\isotope at nucleonnumber]%
+        [\isotope at atomicnumber]%
+        \{#2\}
+        \textbackslash)%
+    }%
+  \ifbool{mathjax}%
+    {\LWR at isotope@alttag}%
+    {% SVG
+        \m at th%
+        \LWR at subsingledollar*%
+        {% alt tag
+            \LWR at isotope@alttag%
+        }%
+        {isotope}% add'l hashing
+        {% contents
+            \settowidth\@tempdimb{%
+                \ensuremath{\scriptstyle\isotope at nucleonnumber}%
+            }%
+            \settowidth\@tempdimc{%
+                \ensuremath{\scriptstyle\isotope at atomicnumber}%
+            }%
+            \ifdim\@tempdimb<\@tempdimc\@tempdimb=\@tempdimc\fi%
+            \ensuremath{
+                {}%
+                ^{\makebox[\@tempdimb][r]{%
+                    \ensuremath{%
+                    \scriptstyle\isotope at nucleonnumber%
+                    }% ensuremath
+                }}%
+                _{\makebox[\@tempdimb][r]{%
+                    \ensuremath{%
+                        \scriptstyle\isotope at atomicnumber%
+                    }% ensuremath
+                }}%
+                \isotopestyle{#2}%
+            }% ensuremath
+        }% contents
+    }% SVG
+  \endgroup%
+}%
+\LWR at formatted{isotope at two}
+
+\begin{warpMathJax}
+\CustomizeMathJax{%
+    \newcommand{\LWRisotopetwo}[2][]{%
+        {%
+            \vphantom{\mathrm{#2}}%
+            {}^{\LWRisotopenucleonnumber}_{#1}%
+            \mathrm{#2}%
+        }%
+    }%
+}
+
+\CustomizeMathJax{%
+    \newcommand{\isotope}[1][]{%
+        \def\LWRisotopenucleonnumber{#1}%
+        \LWRisotopetwo%
+    }%
+}
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-isotope.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-isotope.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-karnaugh-map.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-karnaugh-map.sty	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-karnaugh-map.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -105,9 +105,12 @@
     \ifdefstring{\@karnaughmap at local@matrixtemplate@}{0}{%  lwarp
       % print error if no template could be found
       \PackageError{lwarp-karnaugh-map}{%
-        Can not find a template fitting your specification (\@karnaughmap at var@mapsizex@\space x \@karnaughmap at var@mapsizey@\space x \@karnaughmap at var@mapsizez@)%
+        Can not find a template fitting your specification
+        (\@karnaughmap at var@mapsizex@\space x \@karnaughmap at var@mapsizey@\space x
+        \@karnaughmap at var@mapsizez@)%
       }{%
-        Existing templates have the following dimensions: 2x2x1, 2x4x1, 4x2x1, 4x4x1, 4x4x2, and 4x4x4.
+        Existing templates have the following dimensions:
+        2x2x1, 2x4x1, 4x2x1, 4x4x1, 4x4x2, and 4x4x4.
       }%
     }{\relax}%    lwarp
     \begin{tikzpicture}

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-libertinust1math.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-libertinust1math.sty	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-libertinust1math.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -43,17 +43,12 @@
 \LWR at mathjax@addgreek at l@up{up}{}
 
 \CustomizeMathJax{\let\uppartial\partial}% not upright
+\CustomizeMathJax{\let\mathsfbf\mathbf}% not sans
 
-\CustomizeMathJax{\newcommand{\mathsfbf}[1]{%
-    \mmlToken{mi}[mathvariant="bold-sans-serif"]{#1}% not greek
-}}% not sans
-\CustomizeMathJax{\newcommand{\mathsfbfit}[1]{%
-    \mmlToken{mi}[mathvariant="sans-serif-bold-italic"]{#1}% not greek
-}}%
-\CustomizeMathJax{\newcommand{\mathbfit}[1]{\boldsymbol{#1}}}
-\CustomizeMathJax{\newcommand{\mathsfit}[1]{%
-    \mmlToken{mi}[mathvariant="sans-serif-italic"]{#1}% not greek
-}}
+\CustomizeMathJax{\let\mathbfit\boldsymbol}
+\CustomizeMathJax{\let\mathsfbfit\mathbfit}% not sans
+\CustomizeMathJax{\let\mathsfit\mathit}% not sans
+
 \CustomizeMathJax{\let\vectorsym\mathbfit}
 \CustomizeMathJax{\let\matrixsym\mathbfit}
 \CustomizeMathJax{\let\tensorsym\mathsfbfit}

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -61,7 +61,9 @@
 
     \let\lsthk at EveryPar\LWR at origlsthkEveryPar%
 \else%
-    \ifbool{LWR at verbtags}{\LWR at htmltag{span class="inlineprogramlisting"}}{}%
+    \ifbool{LWR at verbtags}{\LWR at htmltag{%
+        span class=\textquotedbl{}inlineprogramlisting\textquotedbl%
+    }}{}%
 \fi%
 \LWR at traceinfo{lst at Init done}%
 }

Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-lpic.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-lpic.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-lpic.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -0,0 +1,26 @@
+%%
+%% This is file `lwarp-lpic.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `lpic')
+%% This is a generated file.
+%% Copyright 2016-2020 Brian Dunn
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+\LWR at ProvidesPackagePass{lpic}[2010/12/23]
+\BeforeBeginEnvironment{lpic}{%
+    \begin{lateximage}[-lpic-~\PackageDiagramAltText]%
+}
+
+\AfterEndEnvironment{lpic}{\end{lateximage}}
+\endinput
+%%
+%% End of file `lwarp-lpic.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-lpic.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-luavlna.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-luavlna.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-luavlna.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -0,0 +1,23 @@
+%%
+%% This is file `lwarp-luavlna.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `luavlna')
+%% This is a generated file.
+%% Copyright 2016-2020 Brian Dunn
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+\LWR at ProvidesPackagePass{luavlna}[2019/10/30]
+\preventsingleoff
+\LetLtxMacro\preventsingleon\preventsingleoff
+\endinput
+%%
+%% End of file `lwarp-luavlna.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-luavlna.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-mattens.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-mattens.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-mattens.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -0,0 +1,106 @@
+%%
+%% This is file `lwarp-mattens.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `mattens')
+%% This is a generated file.
+%% Copyright 2016-2020 Brian Dunn
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+\LWR at ProvidesPackagePass{mattens}[2010/03/26]
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\LWRmattensnull}{}}
+
+\CustomizeMathJax{\newcommand{\LWRmattensnostar}[2][]{%
+    {#1{\LWRmattensundercmd{\LWRmattensovercmd{\LWRmattenscross{\boldsymbol{#2}}}}}}%
+}}
+
+\CustomizeMathJax{\newcommand{\LWRmattensstar}[2][]{%
+    {#1{\LWRmattensundercmd{\LWRmattensovercmd{\LWRmattenscross{#2}}}}}%
+}}
+
+\CustomizeMathJax{\newcommand{\LWRmattens}{
+    \ifstar\LWRmattensstar\LWRmattensnostar%
+}}
+
+\CustomizeMathJax{\newcommand{\aS}{%
+    \let\LWRmattenscross\LWRmattensnull%
+    \let\LWRmattensovercmd\overrightarrow%
+    \let\LWRmattensundercmd\LWRmattensnull%
+    \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\Sa}{%
+    \let\LWRmattenscross\LWRmattensnull%
+    \let\LWRmattensovercmd\underrightarrow%
+    \let\LWRmattensundercmd\LWRmattensnull%
+    \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\bS}{%
+    \let\LWRmattenscross\LWRmattensnull%
+    \let\LWRmattensovercmd\overline%
+    \let\LWRmattensundercmd\LWRmattensnull%
+    \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\Sb}{%
+    \let\LWRmattenscross\LWRmattensnull%
+    \let\LWRmattensovercmd\underline%
+    \let\LWRmattensundercmd\LWRmattensnull%
+    \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\aSa}{%
+    \let\LWRmattenscross\LWRmattensnull%
+    \let\LWRmattensovercmd\overrightarrow%
+    \let\LWRmattensundercmd\underrightarrow%
+    \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\aSb}{%
+    \let\LWRmattenscross\LWRmattensnull%
+    \let\LWRmattensovercmd\overrightarrow%
+    \let\LWRmattensundercmd\underline%
+    \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\bSa}{%
+    \let\LWRmattenscross\LWRmattensnull%
+    \let\LWRmattensovercmd\overline%
+    \let\LWRmattensundercmd\underrightarrow%
+    \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\bSb}{%
+    \let\LWRmattenscross\LWRmattensnull%
+    \let\LWRmattensovercmd\overline%
+    \let\LWRmattensundercmd\underline%
+    \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\aCSa}{%
+    \let\LWRmattenscross\tilde%
+    \let\LWRmattensovercmd\overrightarrow%
+    \let\LWRmattensundercmd\underrightarrow%
+    \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\bCSb}{%
+    \let\LWRmattenscross\tilde%
+    \let\LWRmattensovercmd\overline%
+    \let\LWRmattensundercmd\underline%
+    \LWRmattens%
+}}
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-mattens.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-mattens.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-maybemath.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-maybemath.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-maybemath.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -0,0 +1,30 @@
+%%
+%% This is file `lwarp-maybemath.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `maybemath')
+%% This is a generated file.
+%% Copyright 2016-2020 Brian Dunn
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+\LWR at ProvidesPackagePass{maybemath}[2005/2/22]
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\mayberm}[1]{{#1}}}
+\CustomizeMathJax{\let\maybebm\mayberm}
+\CustomizeMathJax{\let\maybeit\mayberm}
+\CustomizeMathJax{\let\maybeitrm\mayberm}
+\CustomizeMathJax{\let\maybeitsubscript\mayberm}
+\CustomizeMathJax{\let\maybesf\mayberm}
+\CustomizeMathJax{\let\maybebmsf\mayberm}
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-maybemath.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-maybemath.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-mdframed.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-mdframed.sty	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-mdframed.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -53,11 +53,11 @@
 \LWR at traceinfo{LWR at mdframedstart start}%
     \LWR at spanwarninvalid{mdframe}%
 \LWR at stoppars%
-\LWR at htmltagc{div class="%
+\LWR at htmltagc{div class=\textquotedbl%
 mdframed%
 \ifdefstring{\LWR at mdthisenv}{mdframed}{}{ \LWR at mdthisenv}%
-" \LWR at orignewline
-style=" \LWR at orignewline
+\textquotedbl \LWR at orignewline
+style=\textquotedbl\LWR at orignewline
 background: \LWR at mdfprintcolor{backgroundcolor} ; \LWR at orignewline
 border: \LWR at mdfprintlength{linewidth} solid
 \LWR at mdfprintcolor{linecolor} ; \LWR at orignewline
@@ -71,7 +71,7 @@
 }
 {box-shadow: none ;}
 \LWR at orignewline
-"}
+\textquotedbl}
 \LWR at select@print at hspace%
 \renewcommand*{\rule}{\LWR at print@rule}
 \LetLtxMacro\makebox\LWR at print@makebox%

Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-mdwmath.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-mdwmath.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-mdwmath.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -0,0 +1,29 @@
+%%
+%% This is file `lwarp-mdwmath.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `mdwmath')
+%% This is a generated file.
+%% Copyright 2016-2020 Brian Dunn
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+\LWR at ProvidesPackagePass{mdwmath}[1996/04/11]
+\begin{warpMathJax}
+\CustomizeMathJax{\let\LWRmdwmathsqrt\sqrt}
+\CustomizeMathJax{\renewcommand{\sqrt}{\ifstar\LWRmdwmathsqrt\LWRmdwmathsqrt}}
+\CustomizeMathJax{\newcommand{\bitand}{\mathbin\&}}
+\CustomizeMathJax{\def\bitor{\mathbin\mid}}
+\CustomizeMathJax{\def\dblor{\mathbin{\mid\mid}}}
+\CustomizeMathJax{\def\dbland{\mathbin{\mathrel\bitand\mathrel\bitand}}}
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-mdwmath.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-mdwmath.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-multirow.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-multirow.sty	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-multirow.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -18,8 +18,9 @@
 
 
 \LetLtxMacro\multirow\relax
-\LWR at ProvidesPackagePass{multirow}[2018/08/03]
+\LWR at ProvidesPackagePass{multirow}[2021/01/29]
 \newcommand{\LWR at multirowborder}{}
+\newcommand*{\LWR at multirow@par}{\LWR at htmltag{br /}\LWR at origpar}%
 \NewDocumentCommand{\LWR at HTML@multirow}{O{c} m o m o +m}%
 {%
 \LWR at traceinfo{*** LWR at HTML@multirow #1 #2 #4}%
@@ -26,13 +27,13 @@
 \booltrue{LWR at usedmultirow}%
 \LWR at maybenewtablerow%
 \LWR at tabularleftedge%
-\LWR at htmltag{td rowspan="#2" %
-class="td%
+\LWR at htmltag{td rowspan=\textquotedbl#2\textquotedbl\ %
+class=\textquotedbl{}td%
 \LWR at getexparray{LWR at tablecolspec}{\arabic{LWR at tableLaTeXcolindex}}%
 \LWR at addcmidruletrim%
 \LWR at addleftmostbartag%
 \LWR at printbartag{\arabic{LWR at tableLaTeXcolindex}}%
-"%
+\textquotedbl%
 \LWR at tdstartstyles%
 \ifstrequal{#1}{c}{\LWR at tdaddstyle\LWR at print@mbox{vertical-align:middle}}{}%
 \ifstrequal{#1}{b}{\LWR at tdaddstyle\LWR at print@mbox{vertical-align:bottom}}{}%
@@ -48,7 +49,11 @@
 \LWR at tdendstyles%
 }%
 \LWR at getexparray{LWR at colbeforespec}{\arabic{LWR at tableLaTeXcolindex}}%
-\begingroup\LetLtxMacro{\\}{\LWR at endofline}#6\endgroup%
+\begingroup%
+    \LetLtxMacro{\\}{\LWR at endofline}%
+    \let\par\LWR at multirow@par%
+    #6%
+\endgroup%
 \LWR at stoppars%
 \boolfalse{LWR at intabularmetadata}%
 \renewcommand{\LWR at multirowborder}{}%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-ntheorem.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-ntheorem.sty	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-ntheorem.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -193,7 +193,10 @@
 \newcommand{\LWR at inctheorem}{%
 \addtocounter{LWR at thisautoid}{1}%
 \LWR at stoppars%
-\LWR at htmltag{a id="\LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}"}\LWR at htmltag{/a}%
+\LWR at htmltag{%
+    a id=\textquotedbl\LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}\textquotedbl%
+}%
+\LWR at htmltag{/a}%
 \LWR at startpars%
 }
 \gdef\newtheoremstyle#1#2#3{%

Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-pinlabel.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-pinlabel.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-pinlabel.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -0,0 +1,30 @@
+%%
+%% This is file `lwarp-pinlabel.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `pinlabel')
+%% This is a generated file.
+%% Copyright 2016-2020 Brian Dunn
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+\LWR at ProvidesPackagePass{pinlabel}% no date given
+\xpretocmd{\psfig}
+    {\begin{lateximage}[-pinlabel-~\PackageDiagramAltText]}
+    {}
+    {\LWR at patcherror{pinlabel}{psfigA}}
+
+\xapptocmd{\psfig}
+    {\end{lateximage}}
+    {}
+    {\LWR at patcherror{pinlabel}{psfigB}}
+\endinput
+%%
+%% End of file `lwarp-pinlabel.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-pinlabel.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-rlepsf.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-rlepsf.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-rlepsf.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -0,0 +1,30 @@
+%%
+%% This is file `lwarp-rlepsf.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `rlepsf')
+%% This is a generated file.
+%% Copyright 2016-2020 Brian Dunn
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+\LWR at ProvidesPackagePass{rlepsf}% No date given.
+\xpretocmd{\relabelbox}
+    {\begin{lateximage}}
+    {}
+    {\LWR at patcherror{rlepsf}{relabelbox}}
+
+\xapptocmd{\endrelabelbox}
+    {\end{lateximage}}
+    {}
+    {\LWR at patcherror{rlepsf}{endrelabelbox}}
+\endinput
+%%
+%% End of file `lwarp-rlepsf.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-rlepsf.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-rotating.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-rotating.sty	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-rotating.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -17,22 +17,35 @@
 %% version 2005/12/01 or later.
 
 
-\LWR at ProvidesPackageDrop{rotating}[2016/08/11]
+\LWR at ProvidesPackagePass{rotating}[2016/08/11]
 \RequirePackage{graphicx}
 
-\LetLtxMacro\sidewaystable\table
-\let\endsidewaystable\endtable
+\LetLtxMacro\LWR at HTML@sidewaystable\table
+\let\endLWR at HTML@sidewaystable\endtable
+\LWR at formattedenv{sidewaystable}
 
-\LetLtxMacro\sidewaysfigure\figure
-\let\endsidewaysfigure\endfigure
+\LetLtxMacro\LWR at HTML@sidewaysfigure\figure
+\let\endLWR at HTML@sidewaysfigure\endfigure
+\LWR at formattedenv{sidewaysfigure}
 
-\newenvironment*{sideways}{}{}
-\newenvironment*{turn}[1]{}{}
-\newenvironment*{rotate}[1]{}{}
-\NewDocumentCommand{\turnbox}{m +m}{#2}
-\let\rotcaption\caption
-\let\@makerotcaption\@makecaption
+\newenvironment*{LWR at HTML@sideways}{}{}
+\LWR at formattedenv{sideways}
 
+\newenvironment*{LWR at HTML@turn}[1]{}{}
+\LWR at formattedenv{turn}
+
+\newenvironment*{LWR at HTML@rotate}[1]{}{}
+\LWR at formattedenv{rotate}
+
+\NewDocumentCommand{\LWR at HTML@turnbox}{m +m}{#2}
+\LWR at formatted{turnbox}
+
+\let\LWR at HTML@rotcaption\caption
+\LWR at formatted{rotcaption}
+
+\let\LWR at HTML@@makerotcaption\@makecaption
+\LWR at formatted{@makerotcaption}
+
 \endinput
 %%
 %% End of file `lwarp-rotating.sty'.

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-siunitx.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-siunitx.sty	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-siunitx.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -227,7 +227,6 @@
     \__siunitx_number_output:n {#2}
   \group_end:% lwarp
 }
-
 \RenewDocumentCommand \numrange { o m m } {
   \leavevmode
   \group_begin:% lwarp
@@ -239,7 +238,6 @@
     \__siunitx_range_numbers:nn {#2} {#3}
   \group_end:% lwarp
 }
-
 \RenewDocumentCommand \ang { o > { \SplitArgument { 2 } { ; } } m } {
   \group_begin:% lwarp
     \LetLtxMacro\@ensuredmath\LWR at origensuredmath% lwarp
@@ -249,7 +247,6 @@
     \__siunitx_angle_output:nnn #2
   \group_end:% lwarp
 }
-
 \RenewDocumentCommand \si { o m } {
   \leavevmode
   \group_begin:% lwarp
@@ -264,7 +261,6 @@
       }
   \group_end:% lwarp
 }
-
 \RenewDocumentCommand{\SIrange}{o m m m}
 {%
   \leavevmode
@@ -280,7 +276,6 @@
       }
   \group_end:% lwarp
 }
-
 \ExplSyntaxOff
 
 \begin{warpMathJax}
@@ -287,16 +282,154 @@
 \LWR at infoprocessingmathjax{siunitx}
 \CustomizeMathJax{\newcommand{\tothe}[1]{^{#1}}}
 \CustomizeMathJax{\newcommand{\raiseto}[2]{{#2}^{#1}}}
+\CustomizeMathJax{\newcommand{\LWRsiunitxEND}{}}
+\CustomizeMathJax{\def\LWRsiunitxang#1;#2;#3;#4\LWRsiunitxEND{%
+    \ifblank{#1}{}{\num{#1}\degree}%
+    \ifblank{#2}{}{\num{#2}^{\unicode{x2032}}}% \prime
+    \ifblank{#3}{}{\num{#3}^{\unicode{x2033}}}% \dblprime
+}}
+\CustomizeMathJax{\newcommand{\ang}[2][]{\LWRsiunitxang#2;;;\LWRsiunitxEND}}
+\CustomizeMathJax{\newcommand{\LWRsiunitxnumscientific}[2]{%
+    \ifblank{#1}%
+        {}%
+        {%
+            \ifstrequal{#1}{-}%
+                {-}%
+                {\LWRsiunitxprintdecimal{#1}\times}%
+        }%
+    10^{\LWRsiunitxprintdecimal{#2}}
+}}
+\ExplSyntaxOn
+\AtBeginDocument{
+\ifdefstring{\l__siunitx_output_decimal_tl}{{,}}
+    {% Use decimal comma
+        \CustomizeMathJax{\def\LWRsiunitxprintdecimalsub#1.#2.#3\LWRsiunitxEND{%
+            \mathrm{#1}%
+            \ifblank{#2}
+                {}%
+                {,\mathrm{#2}}
+        }}
 
-\CustomizeMathJax{\newcommand{\ang}[2][]{(\mathrm{#2})\degree}}
-\CustomizeMathJax{\newcommand{\num}[2][]{\mathrm{#2}}}
+        \CustomizeMathJax{\newcommand{\LWRsiunitxprintdecimal}[1]{%
+            \LWRsiunitxprintdecimalsub#1...\LWRsiunitxEND%
+        }}
+    }
+    {% Use decimal point
+        \CustomizeMathJax{\def\LWRsiunitxprintdecimalsub#1,#2,#3\LWRsiunitxEND{%
+            \mathrm{#1}%
+            \ifblank{#2}
+                {}%
+                {.\mathrm{#2}}
+        }}
+
+        \CustomizeMathJax{\newcommand{\LWRsiunitxprintdecimal}[1]{%
+            \LWRsiunitxprintdecimalsub#1,,,\LWRsiunitxEND%
+        }}
+    }
+}
+\ExplSyntaxOff
+\CustomizeMathJax{\def\LWRsiunitxnumplus#1+#2+#3\LWRsiunitxEND{%
+    \ifblank{#2}
+        {\LWRsiunitxprintdecimal{#1}}% no plus
+        {%
+            \ifblank{#1}%
+                {\LWRsiunitxprintdecimal{#2}}% leading plus, ignore
+                {% a+b
+                    \LWRsiunitxprintdecimal{#1}%
+                    \unicode{x02B}% plus sign
+                    \LWRsiunitxprintdecimal{#2}%
+                }%
+        }%
+}}
+
+\CustomizeMathJax{\def\LWRsiunitxnumminus#1-#2-#3\LWRsiunitxEND{%
+    \ifblank{#2}
+        {\LWRsiunitxnumplus#1+++\LWRsiunitxEND}%
+        {%
+            \LWRsiunitxprintdecimal{#1}%
+            \unicode{x02212}% mathematical minus sign
+            \LWRsiunitxprintdecimal{#2}%
+        }%
+}}
+
+\CustomizeMathJax{\def\LWRsiunitxnumpm#1+-#2+-#3\LWRsiunitxEND{%
+    \ifblank{#2}%
+        {\LWRsiunitxnumminus#1---\LWRsiunitxEND}%
+        {%
+            \LWRsiunitxprintdecimal{#1}%
+            \unicode{x0B1}% \pm
+            \LWRsiunitxprintdecimal{#2}%
+        }%
+}}
+
+\CustomizeMathJax{\def\LWRsiunitxnumx#1x#2x#3x#4\LWRsiunitxEND{%
+    \ifblank{#2}%
+        {\LWRsiunitxnumpm#1+-+-\LWRsiunitxEND}%
+        {%
+            \ifblank{#3}%
+                {%
+                    \LWRsiunitxprintdecimal{#1}%
+                    \times%
+                    \LWRsiunitxprintdecimal{#2}%
+                }%
+                {%
+                    \LWRsiunitxprintdecimal{#1}%
+                    \times%
+                    \LWRsiunitxprintdecimal{#2}%
+                    \times%
+                    \LWRsiunitxprintdecimal{#3}%
+                }%
+        }%
+}}
+
+\CustomizeMathJax{\def\LWRsiunitxnumD#1D#2D#3\LWRsiunitxEND{%
+    \ifblank{#2}%
+        {\LWRsiunitxnumx#1xxxxx\LWRsiunitxEND}%
+        {\mathrm{\LWRsiunitxnumscientific{#1}{#2}}}%
+}}
+
+\CustomizeMathJax{\def\LWRsiunitxnumd#1d#2d#3\LWRsiunitxEND{%
+    \ifblank{#2}%
+        {\LWRsiunitxnumD#1DDD\LWRsiunitxEND}%
+        {\mathrm{\LWRsiunitxnumscientific{#1}{#2}}}%
+}}
+
+\CustomizeMathJax{\def\LWRsiunitxnumE#1E#2E#3\LWRsiunitxEND{%
+    \ifblank{#2}%
+        {\LWRsiunitxnumd#1ddd\LWRsiunitxEND}%
+        {\mathrm{\LWRsiunitxnumscientific{#1}{#2}}}%
+}}
+
+\CustomizeMathJax{\def\LWRsiunitxnume#1e#2e#3\LWRsiunitxEND{%
+    \ifblank{#2}%
+        {\LWRsiunitxnumE#1EEE\LWRsiunitxEND}%
+        {\mathrm{\LWRsiunitxnumscientific{#1}{#2}}}%
+}}
+
+\CustomizeMathJax{\def\LWRsiunitxnumcomma#1,#2,#3\LWRsiunitxEND{%
+    \ifblank{#2}
+        {\LWRsiunitxnume#1eee\LWRsiunitxEND}
+        {\LWRsiunitxnume#1.#2eee\LWRsiunitxEND}
+}}
+
+\CustomizeMathJax{\newcommand{\num}[2][]{\LWRsiunitxnumcomma#2,,,\LWRsiunitxEND}}
 \CustomizeMathJax{\newcommand{\si}[2][]{\mathrm{#2}}}
-\CustomizeMathJax{\newcommand{\LWRSI}[2][]{\mathrm{#1\LWRSInumber\,#2}}}
-\CustomizeMathJax{\newcommand{\SI}[2][]{\def\LWRSInumber{#2}\LWRSI}}
+\CustomizeMathJax{\def\LWRsiunitxSIopt#1[#2]#3{%
+    {#2}\num{#1}{#3}%
+}}
+
+\CustomizeMathJax{\newcommand{\LWRsiunitxSI}[2]{%
+    \num{#1}\,{#2}%
+}}
+\CustomizeMathJax{\newcommand{\SI}[2][]{%
+    \ifnextchar[%
+        {\LWRsiunitxSIopt{#2}}%
+        {\LWRsiunitxSI{#2}}%
+}}
 \CustomizeMathJax{\newcommand{\numlist}[2][]{\mathrm{#2}}}
-\CustomizeMathJax{\newcommand{\numrange}[3][]{\mathrm{#2\,\unicode{x2013}\,#3}}}
+\CustomizeMathJax{\newcommand{\numrange}[3][]{\num{#2}\,\unicode{x2013}\,\num{#3}}}
 \CustomizeMathJax{\newcommand{\SIlist}[3][]{\mathrm{#2\,#3}}}
-\CustomizeMathJax{\newcommand{\SIrange}[4][]{\mathrm{#2\,#4\,\unicode{x2013}\,#3\,#4}}}
+\CustomizeMathJax{\newcommand{\SIrange}[4][]{\num{#2}\,#4\,\unicode{x2013}\,\num{#3}\,#4}}
 \CustomizeMathJax{\newcommand{\tablenum}[2][]{\mathrm{#2}}}
 \CustomizeMathJax{\newcommand{\ampere}{\mathrm{A}}}
 \CustomizeMathJax{\newcommand{\candela}{\mathrm{cd}}}

Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-skmath.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-skmath.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-skmath.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -0,0 +1,232 @@
+%%
+%% This is file `lwarp-skmath.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `skmath')
+%% This is a generated file.
+%% Copyright 2016-2020 Brian Dunn
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+\LWR at ProvidesPackagePass{skmath}[2019/10/15]
+\begin{warpMathJax}
+\ExplSyntaxOn
+\bool_if:NT\g__skmath_define_common_sets_bool{
+\CustomizeMathJax{\newcommand{\N}{\mathbb{N}}}
+\CustomizeMathJax{\newcommand{\Z}{\mathbb{Z}}}
+\CustomizeMathJax{\newcommand{\Q}{\mathbb{Q}}}
+\CustomizeMathJax{\newcommand{\R}{\mathbb{R}}}
+\CustomizeMathJax{\newcommand{\C}{\mathbb{C}}}
+}
+\cs_gset_nopar:Npn\LWR__skmath_imaginary_unit:n#1{{#1}}
+\cs_gset_nopar:Npn\LWR__skmath_natural_log_e:{{e}}
+\cs_gset_nopar:Npn\LWR__skmath_integral_d:{{d}}
+\cs_gset_nopar:Npn\LWR__skmath_total_derivative_d:{{d}}
+\cs_if_eq:NNTF \__skmath_imaginary_unit:n \LWR__skmath_imaginary_unit:n
+    {
+        \CustomizeMathJax{\newcommand{ii}{\mathit{i}}}
+        \CustomizeMathJax{\newcommand{jj}{\mathit{j}}}
+    }
+    {
+        \CustomizeMathJax{\newcommand{ii}{\mathrm{i}}}
+        \CustomizeMathJax{\newcommand{jj}{\mathrm{j}}}
+    }
+\cs_if_eq:NNTF \__skmath_natural_log_e: \LWR__skmath_natural_log_e:
+    { \CustomizeMathJax{\newcommand{\ee}{\mathit{e}}} }
+    { \CustomizeMathJax{\newcommand{\ee}{\mathrm{e}}} }
+\cs_if_eq:NNTF \__skmath_integral_d: \LWR__skmath_integral_d:
+    { \CustomizeMathJax{\newcommand{\d}{\mathit{d}}} }
+    { \CustomizeMathJax{\newcommand{\d}{\mathrm{d}}} }
+\CustomizeMathJax{\def\LWRskmathEND{}}
+\CustomizeMathJax{\def\LWRskmathpdstarsub#1#2,#3,#4,#5,#6\LWRskmathEND{
+    #1_{#2#3#4#5}%
+}}
+
+\CustomizeMathJax{\newcommand{\LWRskmathpdstar}[2]{%
+    \LWRskmathpdstarsub{#1}#2,,,,\LWRskmathEND%
+}}
+\CustomizeMathJax{\def\LWRskmathpdnumerator#1^#2^#3\LWRskmathEND{%
+    \ifblank{#1}{}{
+        \ifblank{#2}{\LWRskmathpdplus\LWRskmathpdone}{\LWRskmathpdplus#2}
+    }
+}}
+\CustomizeMathJax{\def\LWRskmathpddenominator#1^#2^#3\LWRskmathEND{%
+    \ifblank{#1}{}{%
+        \ifblank{#2}%
+            {\partial{#1}}%
+            {\partial{#1}^{#2}}%
+    }%
+}}
+\CustomizeMathJax{\newcommand{\LWRskmathdonumerator}[5]{%
+    \partial^{%
+        \def\LWRskmathpdplus{}%
+        \LWRskmathpdnumerator#2^{}^{}\LWRskmathEND%
+        \def\LWRskmathpdplus{+}%
+        \def\LWRskmathpdone{1}%
+        \LWRskmathpdnumerator#3^{}^{}\LWRskmathEND%
+        \LWRskmathpdnumerator#4^{}^{}\LWRskmathEND%
+        \LWRskmathpdnumerator#5^{}^{}\LWRskmathEND%
+    }%
+    {#1}%
+}}
+
+\CustomizeMathJax{\newcommand{\LWRskmathdodenominator}[4]{%
+    \LWRskmathpddenominator#1^{}^{}^{}\LWRskmathEND%
+    \ifblank{#2}{}{\,}%
+    \LWRskmathpddenominator#2^{}^{}^{}\LWRskmathEND%
+    \ifblank{#3}{}{\,}%
+    \LWRskmathpddenominator#3^{}^{}^{}\LWRskmathEND%
+    \ifblank{#4}{}{\,}%
+    \LWRskmathpddenominator#4^{}^{}^{}\LWRskmathEND%
+}}
+\CustomizeMathJax{\def\LWRskmathpdnostarsub#1#2,#3,#4,#5,#6\LWRskmathEND{
+    \ifblank{#3}{\def\LWRskmathpdone{}}{\def\LWRskmathpdone{1}}
+    \frac%
+        {\LWRskmathdonumerator{#1}{#2}{#3}{#4}{#5}}%
+        {\LWRskmathdodenominator{#2}{#3}{#4}{#5}}%
+}}
+
+\CustomizeMathJax{\newcommand{\LWRskmathpdnostar}[2]{%
+    \LWRskmathpdnostarsub{#1}#2,,,,,,\LWRskmathEND%
+}}
+\CustomizeMathJax{\newcommand{\pd}{\ifstar\LWRskmathpdstar\LWRskmathpdnostar}}
+\cs_if_eq:NNTF \__skmath_total_derivative_d: \LWR__skmath_total_derivative_d:
+    { \CustomizeMathJax{\newcommand{\LWRskmathtd}{\mathit{d}}} }
+    { \CustomizeMathJax{\newcommand{\LWRskmathtd}{\mathrm{d}}} }
+\CustomizeMathJax{\def\LWRskmathtdsub#1#2^#3\LWRskmathEND{%
+    \frac
+        {\LWRskmathtd^{#3}{#1}}
+        {\LWRskmathtd{#2}^{#3}}
+}}
+
+\CustomizeMathJax{\newcommand{\td}[2]{%
+    \LWRskmathtdsub{#1}#2^{}\LWRskmathEND%
+}}
+\CustomizeMathJax{\newcommand{\E}[1]{%
+    \operatorname{E}\left[#1\right]%
+}}
+\CustomizeMathJax{\let\given\mid}
+
+\CustomizeMathJax{\newcommand{\P}[1]{%
+    \operatorname{P}%
+    \left(#1\right)%
+}}
+\CustomizeMathJax{\newcommand{\var}[1]{%
+  \operatorname{Var}\left(#1\right)%
+}}
+
+\CustomizeMathJax{\newcommand{\cov}[2]{%
+  \operatorname{Cov}\left(#1,#2\right)%
+}}
+\CustomizeMathJax{\newcommand{\LWRskmathtrigtwo}[2][]{%
+    \ifblank{#1}{}{^{#1}}%
+    \ifblank{#2}{}{\left(#2\right)}%
+}}
+
+\CustomizeMathJax{\newcommand{\LWRskmathtrig}[1]{%
+    \operatorname{#1}%
+    \LWRskmathtrigtwo%
+}}
+\CustomizeMathJax{\renewcommand{\sin}{\LWRskmathtrig{sin}}}
+\CustomizeMathJax{\renewcommand{\arcsin}{\LWRskmathtrig{arcsin}}}
+
+\CustomizeMathJax{\renewcommand{\cos}{\LWRskmathtrig{cos}}}
+\CustomizeMathJax{\renewcommand{\arccos}{\LWRskmathtrig{arccos}}}
+
+\CustomizeMathJax{\renewcommand{\tan}{\LWRskmathtrig{tan}}}
+\CustomizeMathJax{\renewcommand{\arctan}{\LWRskmathtrig{arctan}}}
+
+\CustomizeMathJax{\renewcommand{\cot}{\LWRskmathtrig{cot}}}
+
+\CustomizeMathJax{\renewcommand{\sinh}{\LWRskmathtrig{sinh}}}
+\CustomizeMathJax{\renewcommand{\cosh}{\LWRskmathtrig{cosh}}}
+\CustomizeMathJax{\renewcommand{\tanh}{\LWRskmathtrig{tanh}}}
+\CustomizeMathJax{\newcommand{\LWRskmathlogtwo}[2][]{%
+    \ifblank{#1}{}{_{#1}}%
+    \ifblank{#2}{}{\left(#2\right)}%
+}}
+
+\CustomizeMathJax{\newcommand{\LWRskmathlog}[1]{%
+    \operatorname{#1}%
+    \LWRskmathlogtwo%
+}}
+\CustomizeMathJax{\renewcommand{\ln}{\LWRskmathlog{ln}}}
+\CustomizeMathJax{\renewcommand{\log}{\LWRskmathlog{log}}}
+\CustomizeMathJax{\newcommand{\LWRskmathexpparens}[1]{%
+    \operatorname{exp}%
+    \ifblank{#1}{}{\left(#1\right)}%
+}}
+\CustomizeMathJax{\newcommand{\LWRskmathexpnostar}[1]{%
+    \mathchoice
+        {\ee^{#1}}
+        {\LWRskmathexpparens{#1}}
+        {\LWRskmathexpparens{#1}}
+        {\LWRskmathexpparens{#1}}
+}}
+
+\CustomizeMathJax{\renewcommand{\exp}{\ifstar\LWRskmathexpparens\LWRskmathexpnostar}}
+\CustomizeMathJax{\newcommand{\LWRskmathminstar}[2][]{%
+    \operatorname{\LWRskmathminname}%
+    \ifblank{#1}{}{%
+        _{\mathchoice{\mathclap{#1}}{#1}{#1}{#1}}
+    }%
+    \ifblank{#2}{}{#2}%
+}}
+\CustomizeMathJax{\newcommand{\LWRskmathminnostar}[2][]{%
+    \ifblank{#1}%
+        {\operatorname{\LWRskmathminname}}%
+        {%
+            \underset%
+                {\mathchoice{\mathclap{#1}}{#1}{#1}{#1}}%
+                {\operatorname{\LWRskmathminname}}%
+        }%
+    \ifblank{#2}{}{\left\{#2\right\}}%
+}}
+\CustomizeMathJax{\newcommand{\LWRskmathmin}[1]{%
+    \def\LWRskmathminname{#1}%
+    \ifstar\LWRskmathminstar\LWRskmathminnostar%
+}}
+\CustomizeMathJax{\renewcommand{\min}{\LWRskmathmin{min}}}
+\CustomizeMathJax{\renewcommand{\argmin}{\arg\LWRskmathmin{min}}}
+
+\CustomizeMathJax{\renewcommand{\max}{\LWRskmathmin{max}}}
+\CustomizeMathJax{\renewcommand{\argmax}{\arg\LWRskmathmin{max}}}
+\CustomizeMathJax{\renewcommand{\sup}{\LWRskmathmin{sup}}}
+\CustomizeMathJax{\renewcommand{\inf}{\LWRskmathmin{inf}}}
+\CustomizeMathJax{\let\bar\overline}
+
+\CustomizeMathJax{\let\vec\boldsymbol}
+\CustomizeMathJax{\let\LWRskmathRe\Re}
+\CustomizeMathJax{\let\LWRskmathIm\Im}
+\bool_if:NTF\g__skmath_iso_complex_parts_bool{
+    \CustomizeMathJax{\renewcommand{\Re}[1]{%
+        \LWRskmathRe%
+        \ifblank{#1}{}{\left(#1\right)}%
+    }}
+    \CustomizeMathJax{\renewcommand{\Im}[1]{%
+        \LWRskmathIm%
+        \ifblank{#1}{}{\left(#1\right)}%
+    }}
+}{
+    \CustomizeMathJax{\renewcommand{\Re}[1]{%
+        \operatorname{Re}%
+        \ifblank{#1}{}{#1}%
+    }}
+    \CustomizeMathJax{\renewcommand{\Im}[1]{%
+        \operatorname{Im}%
+        \ifblank{#1}{}{#1}%
+    }}
+}
+
+\ExplSyntaxOff
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-skmath.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-skmath.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-tensor.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-tensor.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-tensor.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -0,0 +1,54 @@
+%%
+%% This is file `lwarp-tensor.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `tensor')
+%% This is a generated file.
+%% Copyright 2016-2020 Brian Dunn
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+\LWR at ProvidesPackagePass{tensor}[2004/12/20]
+\begin{warpMathJax}
+\CustomizeMathJax{\def\LWRtensorindicesthreesub#1#2{{_{#2}}\LWRtensorindicesthree}}
+\CustomizeMathJax{\def\LWRtensorindicesthreesup#1#2{{^{#2}}\LWRtensorindicesthree}}
+\CustomizeMathJax{\newcommand{\LWRtensorindicesthreenotsup}{}}
+\CustomizeMathJax{\newcommand{\LWRtensorindicesthreenotsub}{
+    \ifnextchar ^ \LWRtensorindicesthreesup \LWRtensorindicesthreenotsup
+}}
+
+\CustomizeMathJax{\newcommand{\LWRtensorindicesthree}{
+    \ifnextchar _ \LWRtensorindicesthreesub \LWRtensorindicesthreenotsub
+}}
+\CustomizeMathJax{\newcommand{\LWRtensorindicestwo}{
+    \ifstar\LWRtensorindicesthree\LWRtensorindicesthree
+}}
+\CustomizeMathJax{\newcommand{\indices}[1]{\LWRtensorindicestwo#1}}
+\CustomizeMathJax{\newcommand{\LWRtensortwo}[3][]{{}\indices{#1}{#2}\indices{#3}}}
+\CustomizeMathJax{\newcommand{\tensor}{\ifstar\LWRtensortwo\LWRtensortwo}}
+\CustomizeMathJax{%
+    \newcommand{\LWRnuclidetwo}[2][]{%
+        {%
+            \vphantom{\mathrm{#2}}%
+            {}^{\LWRtensornucleonnumber}_{#1}%
+            \mathrm{#2}%
+        }%
+    }%
+}
+\CustomizeMathJax{%
+    \newcommand{\nuclide}[1][]{%
+        \def\LWRtensornucleonnumber{#1}%
+        \LWRnuclidetwo%
+    }%
+}
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-tensor.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-tensor.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-tikz-imagelabels.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-tikz-imagelabels.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-tikz-imagelabels.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -0,0 +1,26 @@
+%%
+%% This is file `lwarp-tikz-imagelabels.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `tikz-imagelabels')
+%% This is a generated file.
+%% Copyright 2016-2020 Brian Dunn
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+\LWR at ProvidesPackagePass{tikz-imagelabels}[2019/06/27]
+\BeforeBeginEnvironment{annotationimage}{%
+    \begin{lateximage}[-tikz-imagelabels-~\PackageDiagramAltText]%
+}
+
+\AfterEndEnvironment{annotationimage}{\end{lateximage}}
+\endinput
+%%
+%% End of file `lwarp-tikz-imagelabels.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-tikz-imagelabels.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-xcolor.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-xcolor.sty	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-xcolor.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -41,7 +41,7 @@
 }
 \DeclareDocumentCommand{\LWR at textcurrentcolor}{m}{%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \LWR at findcurrenttextcolor%
 \InlineClass[color:\LWR at origpound\LWR at tempcolor]{textcolor}{%
     \renewcommand*{\LWR at currenttextcolor}{\LWR at origpound\LWR at tempcolor}%
@@ -51,7 +51,7 @@
 }
 \NewDocumentCommand{\LWR at colorstyle}{m m}{%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \convertcolorspec{#1}{#2}{HTML}\LWR at tempcolor%
 \LWR at origpound\LWR at tempcolor%
 \endgroup%
@@ -58,7 +58,7 @@
 }
 \NewDocumentCommand{\LWR at backgroundcolor}{O{named} m m}{%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \InlineClass[background:\LWR at colorstyle{#1}{#2}]{backgroundcolor}{%
 #3%
 }%
@@ -82,7 +82,7 @@
 \LWR at formatted{color}
 \NewDocumentCommand{\LWR at HTML@textcolor}{o m m}{%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \IfValueTF{#1}{%
     \color[#1]{#2}%
 }{%
@@ -100,7 +100,7 @@
 
 \NewDocumentCommand{\LWR at HTML@colorbox}{O{named} m +m}{%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \InlineClass[%
 background:\LWR at colorstyle{#1}{#2} ; %
 padding:\LWR at printlength{\fboxsep}%
@@ -114,7 +114,7 @@
 
 \NewDocumentCommand{\LWR at HTML@colorboxBlock}{O{named} m +m}{%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \LWR at stoppars%
 \begin{BlockClass}[%
 background:\LWR at colorstyle{#1}{#2} ; %
@@ -133,7 +133,7 @@
 \NewDocumentCommand{\LWR at HTML@fcolorbox}{O{named} m O{#1} m +m}{%
 \LWR at traceinfo{HTML fcolorbox #2 #4}%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \LWR at forceminwidth{\fboxrule}%
 \ifthenelse{\equal{#4}{none}}%
     {% no background color
@@ -157,7 +157,7 @@
 \NewDocumentCommand{\LWR at HTML@fcolorboxBlock}{O{named} m O{#1} m +m}{%
 \LWR at traceinfo{HTML fcolorboxBlock #2 #4}%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \LWR at forceminwidth{\fboxrule}%
 \LWR at stoppars%
 \ifthenelse{\equal{#4}{none}}%
@@ -197,7 +197,7 @@
 }
 \NewDocumentEnvironment{LWR at HTML@fcolorminipage}{O{named} m O{#1} m O{c} o o m}
 {%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \setlength{\LWR at tempwidth}{#8}%
 \IfValueT{#6}{\setlength{\LWR at tempheight}{#6}}%
 \LWR at forceminwidth{\fboxrule}%

Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-xevlna.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-xevlna.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-xevlna.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -0,0 +1,24 @@
+%%
+%% This is file `lwarp-xevlna.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `xevlna')
+%% This is a generated file.
+%% Copyright 2016-2020 Brian Dunn
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+\LWR at ProvidesPackagePass{xevlna}[2016/09/05]
+\def\ProcessCSpreposition{\ifx\next\xevlnaXeTeXspace\HTMLentity{nbsp}\fi}
+
+\appto{\LWR at hook@processingtags}{\xevlnaDisable}%
+\endinput
+%%
+%% End of file `lwarp-xevlna.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-xevlna.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp.sty	2021-02-21 22:16:40 UTC (rev 57835)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp.sty	2021-02-21 23:09:12 UTC (rev 57836)
@@ -17,7 +17,7 @@
 %% version 2005/12/01 or later.
 \NeedsTeXFormat{LaTeX2e}[1999/12/01]
 \ProvidesPackage{lwarp}
-    [2020/12/24 v0.894  Allows LaTeX to directly produce HTML5 output.]
+    [2021/02/18 v0.895  Allows LaTeX to directly produce HTML5 output.]
 
 
 
@@ -161,7 +161,6 @@
 \LWR at earlyloadnever{colortab}{colortbl}
 \LWR at earlyloadnever{csvtools}{datatool}
 \LWR at earlyloadnever{doublespace}{setspace}
-\LWR at earlyloadnever{epsf}{graphicx}
 \LWR at earlyloadnever{fancyheadings}{fancyhdr}
 \LWR at earlyloadnever{fncylab}{cleveref}
 \LWR at earlyloadnever{formula}{siunitx}
@@ -203,6 +202,7 @@
 \LWR at loadafter{algorithm2e}
 \LWR at loadafter{algorithmicx}
 \LWR at loadafter{alltt}
+\LWR at loadafter{amscdx}
 \LWR at loadafter{anonchap}
 \LWR at loadafter{anysize}
 \LWR at notmemoirloadafter{appendix}
@@ -303,6 +303,7 @@
 \LWR at notmemoirloadafter{enumerate}
 \LWR at loadafter{enumitem}
 \LWR at notmemoirloadafter{epigraph}
+\LWR at loadafter{epsf}
 \LWR at loadafter{epsfig}
 \LWR at loadafter{epstopdf}
 \LWR at loadafter{epstopdf-base}
@@ -389,8 +390,11 @@
 \LWR at loadafter{idxlayout}
 \LWR at loadafter{ifoddpage}
 \LWR at loadafter{imakeidx}
+\LWR at loadafter{impnattypo}
 \LWR at notmemoirloadafter{index}
 \LWR at loadafter{intopdf}
+\LWR at loadafter{isomath}
+\LWR at loadafter{isotope}
 \LWR at loadafter{jurabib}
 \LWR at loadafter{karnaugh-map}
 \LWR at loadafter{keyfloat}
@@ -407,6 +411,7 @@
 \LWR at loadafter{listings}
 \LWR at loadafter{listliketab}
 \LWR at loadafter{longtable}
+\LWR at loadafter{lpic}
 \LWR at loadafter{lscape}
 \LWR at loadafter{ltablex}
 \LWR at loadafter{ltcaption}
@@ -417,6 +422,7 @@
 \LWR at loadafter{luacolor}
 \LWR at loadafter{luamplib}
 \LWR at loadafter{luatodonotes}
+\LWR at loadafter{luavlna}
 \LWR at loadafter{lyluatex}
 \LWR at loadafter{magaz}
 \LWR at notmemoirloadafter{makeidx}
@@ -434,8 +440,11 @@
 \LWR at loadafter{mathptmx}
 \LWR at loadafter{mathspec}
 \LWR at loadafter{mathtools}
+\LWR at loadafter{mattens}
+\LWR at loadafter{maybemath}
 \LWR at loadafter{mcaption}
 \LWR at loadafter{mdframed}
+\LWR at loadafter{mdwmath}
 \LWR at loadafter{media9}
 \LWR at loadafter{memhfixc}
 \LWR at loadafter{menukeys}
@@ -515,6 +524,7 @@
 \LWR at loadafter{physunits}
 \LWR at loadafter{picinpar}
 \LWR at loadafter{pifont}
+\LWR at loadafter{pinlabel}
 \LWR at loadafter{placeins}
 \LWR at loadafter{plarray}
 \LWR at loadafter{plarydshln}
@@ -544,6 +554,7 @@
 \LWR at loadafter{repeatindex}
 \LWR at loadafter{resizegather}
 \LWR at loadafter{returntogrid}
+\LWR at loadafter{rlepsf}
 \LWR at loadafter{rmathbr}
 \LWR at loadafter{rmpage}
 \LWR at loadafter{romanbar}
@@ -577,6 +588,7 @@
 \LWR at loadafter{simplebnf}
 \LWR at loadafter{SIunits}
 \LWR at loadafter{siunitx}
+\LWR at loadafter{skmath}
 \LWR at loadafter{slantsc}
 \LWR at loadafter{slashed}
 \LWR at loadafter{soul}
@@ -612,6 +624,7 @@
 \LWR at loadafter{tagpdf}
 \LWR at loadafter{tascmac}
 \LWR at loadafter{tcolorbox}
+\LWR at loadafter{tensor}
 \LWR at loadafter{termcal}
 \LWR at loadafter{textarea}
 \LWR at loadafter{textfit}
@@ -628,6 +641,7 @@
 \LWR at loadafter{thumb}
 \LWR at loadafter{thumbs}
 \LWR at loadafter{tikz}
+\LWR at loadafter{tikz-imagelabels}
 \LWR at loadafter{titleps}
 \LWR at loadafter{titlesec}
 \LWR at loadafter{titletoc}
@@ -675,6 +689,7 @@
 \LWR at loadafter{xcolor}
 \LWR at loadafter{xechangebar}
 \LWR at loadafter{xellipsis}
+\LWR at loadafter{xevlna}
 \LWR at loadafter{xfakebold}
 \LWR at loadafter{xfrac}
 \LWR at loadafter{xltabular}
@@ -774,6 +789,21 @@
 \ifpTeX
     \RequirePackage{upquote}
 \fi
+\ifxetexorluatex
+    \AtBeginDocument{
+        \@ifpackageloaded{kpfonts}{
+            \PackageError{lwarp}
+                {%
+                    When using XeLaTeX or LuaLaTeX,\MessageBreak
+                    use kpfonts-otf instead of kpfonts%
+                }
+                {%
+                    Replace: \protect\usepackage{kpfonts}\MessageBreak
+                    with: \protect\usepackage{kpfonts-otf}
+                }
+        }{}
+    }
+\fi
 \newlength{\LWR at templengthone}
 \newlength{\LWR at templengthtwo}
 \newlength{\LWR at templengththree}
@@ -1412,7 +1442,6 @@
 \LWR at checkloadnever{#1}{colortab}{colortbl}
 \LWR at checkloadnever{#1}{csvtools}{datatool}
 \LWR at checkloadnever{#1}{doublespace}{setspace}
-\LWR at checkloadnever{#1}{epsf}{graphicx}
 \LWR at checkloadnever{#1}{fancyheadings}{fancyhdr}
 \LWR at checkloadnever{#1}{fncylab}{cleveref}
 \LWR at checkloadnever{#1}{formula}{siunitx}
@@ -1439,6 +1468,7 @@
 \LWR at checkloadbefore{#1}{nfssext-cfr}
 \LWR at checkloadbefore{#1}{fontaxes}
 \LWR at checkloadbefore{#1}{kotex}
+\LWR at checkloadbefore{#1}{kpfonts}% textcomp option clash
 \LWR at checkloadbefore{#1}{luatexja}
 \LWR at checkloadbefore{#1}{luatexja-fontspec}
 \LWR at checkloadbefore{#1}{luatexko}
@@ -1819,11 +1849,11 @@
 \renewcommand*{\LWR at tagsubsubsectionend}{/h5}
 \renewcommand*{\LWR at tagparagraph}{h6}
 \renewcommand*{\LWR at tagparagraphend}{/h6}
-\renewcommand*{\LWR at tagsubparagraph}{span class="subparagraph"}
+\renewcommand*{\LWR at tagsubparagraph}{span class=\textquotedbl{}subparagraph\textquotedbl}
 \renewcommand*{\LWR at tagsubparagraphend}{/span}
 }% WPTitleHeading
 {% not WPTitleHeading, part and section starting at h1
-\renewcommand*{\LWR at tagtitle}{div class="title"}
+\renewcommand*{\LWR at tagtitle}{div class=\textquotedbl{}title\textquotedbl}
 \renewcommand*{\LWR at tagtitleend}{/div}
 \renewcommand*{\LWR at tagpart}{h1}
 \renewcommand*{\LWR at tagpartend}{/h1}
@@ -1842,7 +1872,7 @@
 {% chapter defined
 \ifbool{WPTitleHeading}{}
 {% not WPTitleHeading, part and chapter starting at h1
-\renewcommand*{\LWR at tagtitle}{div class="title"}
+\renewcommand*{\LWR at tagtitle}{div class=\textquotedbl{}title\textquotedbl}
 \renewcommand*{\LWR at tagtitleend}{/div}
 \renewcommand*{\LWR at tagpart}{h1}
 \renewcommand*{\LWR at tagpartend}{/h1}
@@ -1856,7 +1886,7 @@
 \renewcommand*{\LWR at tagsubsubsectionend}{/h5}
 \renewcommand*{\LWR at tagparagraph}{h6}
 \renewcommand*{\LWR at tagparagraphend}{/h6}
-\renewcommand*{\LWR at tagsubparagraph}{span class="subparagraph"}
+\renewcommand*{\LWR at tagsubparagraph}{span class=\textquotedbl{}subparagraph\textquotedbl}
 \renewcommand*{\LWR at tagsubparagraphend}{/span}
 }% not WPTitleHeading
 }% chapter defined
@@ -1890,8 +1920,15 @@
 
 \let\LWR at origtextellipsis\textellipsis
 \let\LWR at origvdots\vdots
-\let\LWR at orig@textquotedbl\textquotedbl
+\LetLtxMacro\LWR at orig@@textquotedbl\textquotedbl
+\LetLtxMacro\LWR at orig@textquotedbl\LWR at orig@@textquotedbl
 
+\AtEndPreamble{
+\@ifpackageloaded{libertinus-otf}{
+    \renewcommand{\LWR at orig@textquotedbl}{\LWR at orig@@textquotedbl\kern-.15em}
+    \LetLtxMacro\textquotedbl\LWR at orig@textquotedbl
+}{}
+}
 \LetLtxMacro\LWR at origttfamily\ttfamily
 
 \LetLtxMacro\LWR at origem\em
@@ -2051,7 +2088,7 @@
     \PackageError{lwarp}%
         {Unknown LaTeX engine}%
         {%
-            Lwarp only knows about pdflatex, dvi latex,
+            Lwarp only knows about pdflatex, DVI latex,
             xelatex, lualatex, and upLateX.%
         }%
 }
@@ -2232,7 +2269,7 @@
 \begin{filecontents*}[overwrite]{lwarp.css}
 /*
   CSS stylesheet for the LaTeX Lwarp package
-  Copyright 2016-2020 Brian Dunn — BD Tech Concepts LLC
+  Copyright 2016-2021 Brian Dunn — BD Tech Concepts LLC
 */
 
 /* a fix for older browsers: */
@@ -4457,10 +4494,13 @@
         }
       }
 
-      //  Create the command map for \ifstar, \ifnextchar, \seteqnumber
-      new CommandMap('ifstar-ifnextchar-setequnumber', {
+      //  Create the command map for:
+      //    \ifstar, \ifnextchar, \ifblank, \ifstrequal, \seteqnumber
+      new CommandMap('Lwarp-macros', {
         ifstar: 'IfstarFunction',
         ifnextchar: 'IfnextcharFunction',
+        ifblank: 'IfblankFunction',
+        ifstrequal: 'IfstrequalFunction',
         seteqnumber: 'SeteqnumberFunction'
       }, {
         //  This function implements an ifstar macro.
@@ -4484,6 +4524,25 @@
           useArgument(parser, gotchar ? resultnextchar : resultnotnextchar);
         },
 
+        // This function implements an ifblank macro.
+        IfblankFunction(parser, name) {
+          const blankarg = parser.GetArgument(name);
+          const resultblank = parser.GetArgument(name);
+          const resultnotblank = parser.GetArgument(name);
+          const isblank = (blankarg.trim() == "");
+          useArgument(parser, isblank ? resultblank : resultnotblank);
+        },
+
+        // This function implements an ifstrequal macro.
+        IfstrequalFunction(parser, name) {
+          const strequalfirst = parser.GetArgument(name);
+          const strequalsecond = parser.GetArgument(name);
+          const resultequal = parser.GetArgument(name);
+          const resultnotequal = parser.GetArgument(name);
+          const isequal = (strequalfirst == strequalsecond);
+          useArgument(parser, isequal ? resultequal : resultnotequal);
+        },
+
         //  This function modifies the equation numbers.
         SeteqnumberFunction(parser, name) {
             //  Get the macro parameters
@@ -4499,9 +4558,9 @@
 
       });
 
-      //  Create the ifstar-ifnextchar-setequnumber package
-      Configuration.create('ifstar-ifnextchar-setequnumber', {
-        handler: {macro: ['ifstar-ifnextchar-setequnumber']}
+      //  Create the Lwarp-macros package
+      Configuration.create('Lwarp-macros', {
+        handler: {macro: ['Lwarp-macros']}
       });
 
       MathJax.startup.defaultReady();
@@ -4568,7 +4627,7 @@
   },    // startup
 
   tex: {
-    packages: {'[+]': ['tagformat', 'ifstar-ifnextchar-setequnumber', 'textmacros']},
+    packages: {'[+]': ['tagformat', 'Lwarp-macros', 'textmacros']},
     tags: "ams",
         tagformat: {
             number: function (n) {
@@ -4596,9 +4655,9 @@
 \begin{filecontents*}[overwrite]{lwarpmk.lua}
 #!/usr/bin/env texlua
 
--- Copyright 2016-2020 Brian Dunn
+-- Copyright 2016-2021 Brian Dunn
 
-printversion = "v0.894"
+printversion = "v0.895"
 requiredconfversion = "2" -- also at *lwarpmk.conf
 
 function printhelp ()
@@ -5677,7 +5736,7 @@
 \let\LWR at origampersand\&
 \newcommand*{\HTMLentity}[1]{%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \LWR at origampersand#1;%
 \endgroup%
 }
@@ -5959,7 +6018,7 @@
 
 \newcommand*{\LWR at tagtitle}{h1}
 \newcommand*{\LWR at tagtitleend}{/h1}
-\newcommand*{\LWR at tagbook}{div class="book"}
+\newcommand*{\LWR at tagbook}{div class=\textquotedbl{}book\textquotedbl}
 \newcommand*{\LWR at tagbookend}{/div}
 \newcommand*{\LWR at tagpart}{h2}
 \newcommand*{\LWR at tagpartend}{/h2}
@@ -5971,14 +6030,16 @@
 \newcommand*{\LWR at tagsubsectionend}{/h5}
 \newcommand*{\LWR at tagsubsubsection}{h6}
 \newcommand*{\LWR at tagsubsubsectionend}{/h6}
-\newcommand*{\LWR at tagparagraph}{span class="paragraph"}
+\newcommand*{\LWR at tagparagraph}{span class=\textquotedbl{}paragraph\textquotedbl}
 \newcommand*{\LWR at tagparagraphend}{/span}
-\newcommand*{\LWR at tagsubparagraph}{span class="subparagraph"}
+\newcommand*{\LWR at tagsubparagraph}{span class=\textquotedbl{}subparagraph\textquotedbl}
 \newcommand*{\LWR at tagsubparagraphend}{/span}
 
 \newcommand*{\LWR at tagregularparagraph}{p}
 
+\newcommand*{\LWR at hook@processingtags}{}
 
+
 \providecommand*{\LWR at FBcancel}{}
 
 \AtBeginDocument{%
@@ -5986,6 +6047,7 @@
     {}%
     {%
         \LetLtxMacro\LWR at FBcancel\NoAutoSpacing%
+        \appto{\LWR at hook@processingtags}{\LWR at FBcancel}%
     }%
 
 \@ifundefined{frenchbsetup}%
@@ -5994,31 +6056,31 @@
     \frenchbsetup{FrenchFootnotes=false}%
     \renewrobustcmd*{\FBcolonspace}{%
         \begingroup%
-        \LWR at FBcancel%
+        \LWR at hook@processingtags%
         \LWR at origampersand{}nbsp;%
         \endgroup%
     }%
     \renewrobustcmd*{\FBthinspace}{%
         \begingroup%
-        \LWR at FBcancel%
+        \LWR at hook@processingtags%
         \LWR at origampersand\LWR at origpound{}x202f;% \,
         \endgroup%
     }%
     \renewrobustcmd*{\FBguillspace}{%
         \begingroup%
-        \LWR at FBcancel%
+        \LWR at hook@processingtags%
         \LWR at origampersand{}nbsp;% ~,  for \og xyz \fg{}
         \endgroup%
     }%
     \DeclareDocumentCommand{\FBmedkern}{}{%
         \begingroup%
-        \LWR at FBcancel%
+        \LWR at hook@processingtags%
         \LWR at origampersand\LWR at origpound{}x202f;% \,
         \endgroup%
     }%
     \DeclareDocumentCommand{\FBthickkern}{}{%
         \begingroup%
-        \LWR at FBcancel%
+        \LWR at hook@processingtags%
         \LWR at origampersand{}nbsp;% ~
         \endgroup%
     }%
@@ -6043,7 +6105,7 @@
 \newcommand*{\LWR at htmltagc}[1]{%
 \LWR at traceinfo{LWR at htmltagc !\detokenize{#1}!}%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \ifmmode\else\protect\LWR at print@normalfont\protect\LWR at origttfamily\fi%
 \protect\LWR at origtextless%
 \LWR at isolate{#1}%
@@ -6143,7 +6205,7 @@
 \newcommand*{\LWR at htmlopencomment}{%
 {%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \ifmmode\else\protect\LWR at print@normalfont\protect\LWR at origttfamily\fi%
 \LWR at print@mbox{\LWR at origtextless{}!-\/-}%
 \endgroup%
@@ -6153,7 +6215,7 @@
 \newcommand*{\LWR at htmlclosecomment}{%
 {%
 \begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \ifmmode\else\protect\LWR at print@normalfont\protect\LWR at origttfamily\fi%
 \LWR at print@mbox{-\/-\LWR at origtextgreater}%
 \endgroup%
@@ -6989,7 +7051,7 @@
 
 \newrobustcmd{\LWR at HTMLsanitize}[1]{%
     \begingroup%
-    \LWR at FBcancel%
+    \LWR at hook@processingtags%
     \edef\LWR at strresult{\detokenize{#1}}%
     \LWR at subHTMLsanitize%
     \LWR at strresult%
@@ -7008,7 +7070,7 @@
 
 \newrobustcmd{\LWR at HTMLsanitizeexpand}[1]{%
     \begingroup%
-    \LWR at FBcancel%
+    \LWR at hook@processingtags%
     \edef\LWR at strresult{\detokenize\expandafter{#1}}%
     \protect\StrSubstitute{\LWR at strresult}%
         {\LWR at beginspaceleftbrace}{\LWR at beginleftbrace}[\LWR at strresult]%
@@ -7027,7 +7089,7 @@
 
 \newcommand*{\LWR at subcustomizedmathjax}[1]{%
     \begingroup%
-    \LWR at FBcancel%
+    \LWR at hook@processingtags%
     \edef\LWR at strresult{\detokenize{#1}}%
     \LWR at subHTMLsanitize%
     \xdef\LWR at customizedMathJax{%
@@ -7041,7 +7103,7 @@
 \newcommand*{\CustomizeMathJax}[1]{%
     \ifbool{LWR at warnedcustomizemathjax}{}{%
         \StrLen{\detokenize{#1}}[\LWR at tempone]%
-        \ifnumgreater{\LWR at tempone}{200}{%
+        \ifnumgreater{\LWR at tempone}{350}{%
             \AtEndDocument{%
                 \PackageWarningNoLine{lwarp}{%
                     To ensure faster MathJax compilation, place each\MessageBreak
@@ -8217,11 +8279,10 @@
     \LWR at htmltag{/span}%
     \endgroup%
 }
-
 \xpretocmd{\verb}
     {%
         \begingroup%
-        \LWR at htmltag{span class="texttt"}%
+        \LWR at htmltag{span class=\textquotedbl{}texttt\textquotedbl}%
         \let\verb at egroup\LWR at verb@egroup at endspan%
     }
     {}
@@ -8244,7 +8305,7 @@
 \LWR at origttfamily%
 \LWR at print@scriptsize%
 \LWR at restoreoriglists%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
 \LWR at select@print at hspace%
 }
 
@@ -8335,7 +8396,9 @@
 
 \newcommand*{\LWR at printcloselist}{\LWR at printcloseitemize}
 
-\newcommand*{\LWR at printopenlist}{ul style="\LWR at print@mbox{list-style-type:none}"}
+\newcommand*{\LWR at printopenlist}{%
+    ul style=\textquotedbl\LWR at print@mbox{list-style-type:none}\textquotedbl{}%
+}
 
 \AtBeginDocument{
 \def\@mklab#1{%
@@ -8431,7 +8494,9 @@
 
 \newcommand*{\LWR at itemizestart}{%
 \renewcommand*{\LWR at printcloselist}{\LWR at printcloseitemize}
-\renewcommand*{\LWR at printopenlist}{ul style="\LWR at print@mbox{list-style-type:none}"}
+\renewcommand*{\LWR at printopenlist}{%
+    ul style=\textquotedbl\LWR at print@mbox{list-style-type:none}\textquotedbl{}%
+}
 \let\item\LWR at itemizeitem%
 \LWR at nulllistfills%
 }
@@ -8440,7 +8505,9 @@
 
 \newcommand*{\LWR at enumeratestart}{%
 \renewcommand*{\LWR at printcloselist}{\LWR at printcloseitemize}
-\renewcommand*{\LWR at printopenlist}{ul style="\LWR at print@mbox{list-style-type:none}"}
+\renewcommand*{\LWR at printopenlist}{%
+    ul style=\textquotedbl\LWR at print@mbox{list-style-type:none}\textquotedbl{}%
+}
 \let\item\LWR at itemizeitem%
 \LWR at nulllistfills%
 }
@@ -9110,7 +9177,7 @@
             test{\ifnumcomp{\value{LWR at hdashedlines}}{>}{0}}%
         }%
         {%
-            \LWR at htmltag{tr class="hline" }%
+            \LWR at htmltag{tr class=\textquotedbl{}hline\textquotedbl }%
             \LWR at orignewline%
         }%
         {% not doing hline
@@ -9117,12 +9184,12 @@
             \ifbool{LWR at doingtbrule}%
             {%
                 \ifdefvoid{\LWR at ruleHTMLcolor}{%
-                    \LWR at htmltag{tr class="tbrule"}%
+                    \LWR at htmltag{tr class=\textquotedbl{}tbrule\textquotedbl}%
                 }{%
                     \LWR at htmltag{%
-                        tr class="tbrule" % space
-                        style="border-top: 1px solid % space
-                            \LWR at origpound\LWR at ruleHTMLcolor "%
+                        tr class=\textquotedbl{}tbrule\textquotedbl\ % space
+                        style=\textquotedbl{}border-top: 1px solid % space
+                            \LWR at origpound\LWR at ruleHTMLcolor \textquotedbl{}%
                     }%
                 }%
                 \LWR at orignewline%
@@ -9152,10 +9219,10 @@
     {}%
     {% not empty
         \LWR at htmltag{%
-            td class="td#1%
+            td class=\textquotedbl{}td#1%
             \LWR at subaddcmidruletrim{}{}%
             \LWR at printbartag{#2}%
-            "%
+            \textquotedbl{}%
             \LWR at tdstartstyles%
             \LWR at addcmidrulewidth%
             \LWR at addcdashline%
@@ -9202,12 +9269,12 @@
             }%
             \LWR at traceinfo{LWR at tabledatasinglecolumntag: about to print td tag}%
             \LWR at htmltag{%
-                td class="td%
+                td class=\textquotedbl{}td%
                 \LWR at strresult%
                 \LWR at addcmidruletrim%
                 \LWR at addleftmostbartag%
                 \LWR at printbartag{\arabic{LWR at tableLaTeXcolindex}}%
-                "%
+                \textquotedbl{}%
                 \LWR at tdstartstyles%
                 \LWR at addcmidrulewidth%
                 \LWR at addcdashline%
@@ -9328,7 +9395,7 @@
 \newcommand*{\LWR at tdaddstyle}{%
     \ifbool{LWR at tdhavecellstyle}%
         {; }%
-        { style="}%
+        { style=\textquotedbl}%
     \booltrue{LWR at tdhavecellstyle}%
 }
 
@@ -9335,7 +9402,7 @@
 \newcommand*{\LWR at tdendstyles}{%
     \ifbool{LWR at tdhavecellstyle}%
         {%
-            "%
+            \textquotedbl%
             \boolfalse{LWR at tdhavecellstyle}%
         }{}%
 }
@@ -9536,9 +9603,11 @@
 }
 
 \newcommand*{\LWR at subaddtabularcellcolor}[1]{%
-    \LWR at htmltag{div class="cellcolor" style="%
+    \LWR at htmltag{div class=\textquotedbl{}cellcolor\textquotedbl\ % space
+        style=\textquotedbl{}%
         background:\LWR at origpound{}{}#1 %
-    " }%
+        \textquotedbl\ %
+    }% space
     \defaddtocounter{LWR at cellcolordepth}{1}%
 }
 
@@ -9729,11 +9798,11 @@
     \defaddtocounter{LWR at lastmulticolumn}{-1}%
     \LWR at maybenewtablerow%
     \LWR at htmltag{%
-        td colspan="#4" %
+        td colspan=\textquotedbl#4\textquotedbl\ %
         \IfValueT{#2}{ % rows?
-            rowspan="#2" %
+            rowspan=\textquotedbl#2\textquotedbl\ %
         }%
-        class="td%
+        class=\textquotedbl{}td%
         \defcounter{LWR at mcolvertbarsl}{0}%
         \defcounter{LWR at mcolvertbarsr}{0}%
         \defcounter{LWR at mcolvertbarsldash}{0}%
@@ -9759,7 +9828,7 @@
         \ifnumcomp{\value{LWR at mcolvertbarsrdash}}{=}{1}{ tvertbarrdash}{}%
         \ifnumcomp{\value{LWR at mcolvertbarsrdash}}{>}{1}%
             { tvertbarrdoubledash}{}%
-        "%
+        \textquotedbl{}%
         \LWR at tdstartstyles%
         \IfValueT{#1}{% vpos?
             \ifstrequal{#1}{b}%
@@ -10337,7 +10406,7 @@
 
 
 \newcommand*{\LWR at label@subcreatetag}{%
-    \LWR at htmltag{a \LWR at print@mbox{id="\LWR at sanitized"}}%
+    \LWR at htmltag{a \LWR at print@mbox{id=\textquotedbl\LWR at sanitized\textquotedbl}}%
     \LWR at htmltag{/a}%
 }
 
@@ -10408,7 +10477,7 @@
 
 \newcommand*{\LWR at addlinktitle}{%
     \ifdefvoid{\LWR at ThisAltText}{}{ % space
-        title="\LWR at ThisAltText" % space
+        title=\textquotedbl\LWR at ThisAltText\textquotedbl\ % space
         \gdef\LWR at ThisAltText{}%
     }%
 }
@@ -10417,7 +10486,7 @@
 {%
     \LWR at sanitize{#1}%
     \LWR at traceinfo{LWR at startref A: !#1!}%
-    \LWR at htmltag{a href="%
+    \LWR at htmltag{a href=\textquotedbl%
     \LWR at traceinfo{LWR at startref B}%
     \LWR at print@mbox{\LWR at htmlrefsectionfilename{#1}}%
     \LWR at traceinfo{LWR at startref C}%
@@ -10439,7 +10508,7 @@
             }%
     }%
     \LWR at traceinfo{LWR at startref E}%
-    "%
+    \textquotedbl%
     \LWR at addlinktitle%
     }%
     \LWR at traceinfo{LWR at startref F}%
@@ -10495,7 +10564,7 @@
     \catcode`\&=12%
     \catcode`\~=12%
     \catcode`\_=12%
-    \LWR at FBcancel%
+    \LWR at hook@processingtags%
 }
 
 \newcommand*{\LWR at linkmediacatcodes}{%
@@ -10503,7 +10572,7 @@
     \catcode`\%=12%
     \catcode`\~=12%
     \catcode`\_=12%
-    \LWR at FBcancel%
+    \LWR at hook@processingtags%
 }
 
 \NewDocumentCommand{\LWR at subhyperref}{m}{%
@@ -10510,9 +10579,9 @@
     \LWR at traceinfo{LWR at subhyperref !#1!}%
     \LWR at sanitize{#1}%
     \LWR at htmltag{%
-        a href="\LWR at sanitized" % space
+        a href=\textquotedbl\LWR at sanitized\textquotedbl\ % space
         \LWR at addlinktitle % space
-        target="\_{}blank" % space
+        target=\textquotedbl\_{}blank\textquotedbl\ % space
     }%
 }
 
@@ -10525,8 +10594,8 @@
 \NewDocumentCommand{\LWR at subhyperrefclass}{m +m m}{%
     \LWR at htmltag{%
         a % space
-        href="\begingroup\@sanitize#1\endgroup" % space
-        class="#3" % space
+        href=\textquotedbl\begingroup\@sanitize#1\endgroup\textquotedbl\ % space
+        class=\textquotedbl#3\textquotedbl\ % space
         \LWR at addlinktitle % space
     }\LWR at orignewline%
     #2%
@@ -10579,18 +10648,18 @@
     \ifblank{#1}%
     {%
         \LWR at htmltag{img \LWR at indentHTML
-            src="#3.#4" \LWR at indentHTML
-            alt="#3" \LWR at indentHTML
-            style="#5" \LWR at indentHTML
-            class="#2" \LWR at orignewline
+            src=\textquotedbl#3.#4\textquotedbl \LWR at indentHTML
+            alt=\textquotedbl#3\textquotedbl \LWR at indentHTML
+            style=\textquotedbl#5\textquotedbl \LWR at indentHTML
+            class=\textquotedbl#2\textquotedbl \LWR at orignewline
         }%
     }%
     {%
         \LWR at htmltag{img \LWR at indentHTML
-            src="#3.#4" \LWR at indentHTML
-            alt="#1" \LWR at indentHTML
-            style="#5" \LWR at indentHTML
-            class="#2" \LWR at orignewline
+            src=\textquotedbl#3.#4\textquotedbl \LWR at indentHTML
+            alt=\textquotedbl#1\textquotedbl \LWR at indentHTML
+            style=\textquotedbl#5\textquotedbl \LWR at indentHTML
+            class=\textquotedbl#2\textquotedbl \LWR at orignewline
         }%
     }%
 }
@@ -10613,8 +10682,10 @@
     \begingroup%
     \LWR at print@raggedright%
     \LWR at htmltag{%
-        figure id="\LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}" % space
-        class="#1 \@nameuse{LWR at floatstyle@#1}"%
+        figure id=\textquotedbl%
+            \LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}%
+        \textquotedbl\ % space
+        class=\textquotedbl#1 \@nameuse{LWR at floatstyle@#1}\textquotedbl%
     }%
     \ifbool{FormatWP}{%
         \LWR at orignewline%
@@ -10680,13 +10751,17 @@
     \addtocounter{LWR at thisautoid}{1}%
     \ifbool{LWR at doingapar}%
     {%
-        \LWR at htmltag{a id="\LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}" }%
-            \LWR at htmltag{/a }%
+        \LWR at htmltag{a id=\textquotedbl%
+            \LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}%
+            \textquotedbl\ }% space
+        \LWR at htmltag{/a }%
     }%
     {%
         \LWR at stoppars%
-        \LWR at htmltag{a id="\LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}" }%
-            \LWR at htmltag{/a }%
+        \LWR at htmltag{a id=\textquotedbl%
+            \LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}%
+        \textquotedbl\ }% space
+        \LWR at htmltag{/a }%
         \LWR at startpars%
     }%
 }
@@ -11448,7 +11523,7 @@
     \let\enddisplaymath\LWR at orig@enddisplaymath%
     \LWR at restoreorigaccents%
     \LWR at restoreoriglists%
-    \LWR at FBcancel%
+    \LWR at hook@processingtags%
     \ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
         {\LWR at restoreMathJaxformatting}%
         {}%
@@ -12463,8 +12538,10 @@
     }%
     \LWR at traceinfo{lateximage: LWR at LIpage is \arabic{LWR at LIpage}}%
     \LWR at htmltag{span\LWR at indentHTML%
-        id="lateximage-\BaseJobname-\arabic{LWR at lateximagenumber}"\LWR at indentHTML
-        class="lateximagesource"\LWR at orignewline
+        id=\textquotedbl{}%
+            lateximage-\BaseJobname-\arabic{LWR at lateximagenumber}%
+            \textquotedbl\LWR at indentHTML
+        class=\textquotedbl{}lateximagesource\textquotedbl\LWR at orignewline
     }%
     \LWR at traceinfo{lateximage: about to write to \BaseJobname-images.txt}%
     \IfBooleanTF{#1}% starred
@@ -12927,13 +13004,15 @@
 
 \addtocounter{LWR at thisautoidWP}{1}%
 \LWR at htmltag{%
-    div id="\LWR at print@mbox{autoidWP-\arabic{LWR at thisautoidWP}}" %
-    class="wpminipage"%
+    div id=\textquotedbl%
+        \LWR at print@mbox{autoidWP-\arabic{LWR at thisautoidWP}}%
+    \textquotedbl\ % space
+    class=\textquotedbl{}wpminipage\textquotedbl%
 }%
 
 }{}%
 \LWR at traceinfo{minipage: creating div class}%
-\LWR at htmltag{div class="minipage" style="%
+\LWR at htmltag{div class=\textquotedbl{}minipage\textquotedbl\ style=\textquotedbl%
 \ifthenelse{\equal{#1}{t}}{\LWR at print@mbox{vertical-align:bottom} ; }{}%
 \ifthenelse{\equal{#1}{c}}{\LWR at print@mbox{vertical-align:middle} ; }{}%
 \ifthenelse{\equal{#1}{b}}{\LWR at print@mbox{vertical-align:top} ; }{}%
@@ -12955,7 +13034,8 @@
 }%
 \LWR at traceinfo{minipage: about to print the height}%
 \ifblank{#2}{}{height:\LWR at printlength{\LWR at minipageheight} ; }%
-"}%
+\textquotedbl%
+}%
 
 \ifnumequal{\value{LWR at virtualpagedepth}}{1}{%
     \addtolength{\LWR at minipagewidth}{-3em}% undo frame padding
@@ -13698,8 +13778,8 @@
     }%
     {%
         \LWR at htmltagc{%
-            span style="width:\LWR at printlength{\LWR at tempwidth};  % extra space
-                display:inline-block"%
+            span style=\textquotedbl{}width:\LWR at printlength{\LWR at tempwidth};  % extra space
+                display:inline-block\textquotedbl%
         }%
         \ifbool{FormatWP}{%
             \setlength{\LWR at templengthone}{\LWR at tempwidth}%
@@ -13764,7 +13844,7 @@
     \LWR at findcurrenttextcolor%
     \LWR at htmltagc{%
     span\LWR at indentHTML%
-    style="%
+    style=\textquotedbl%
     \ifbool{FormatWP}{}{background:\LWR at currenttextcolor ; }%
     width:\LWR at printlength{\LWR at tempwidth} ; %
     height:\LWR at printlength{\LWR at tempheight} ; %
@@ -13781,7 +13861,7 @@
         transform: translate(0pt,\LWR at printlength{\LWR at tempraise}); %
         \LWR at indentHTML%
     }%
-    display:inline-block;"\LWR at orignewline%
+    display:inline-block;\textquotedbl\LWR at orignewline%
     }%
         \ifbool{FormatWP}{%
             \setlength{\LWR at templengthone}{\LWR at tempwidth}%
@@ -14103,7 +14183,7 @@
     \typeout{Package lwarp:}
     \typeout{If the error}
     \typeout{\space\space``! Undefined control sequence.
-        \space ... \space \protect\@begindocumenthook''}
+        \space ... \space \protect\__hook begindocument''}
     \typeout{occurs here, use the polyglossia macro:}
     \typeout{\space\space\protect\setmainlanguage\protect{...\protect}}
     \typeout{---}
@@ -14144,7 +14224,8 @@
         \ifblank{#2}{%
             \PackageWarningNoLine{lwarp}
                 {%
-                    Lwarp does not provide MathJax support for #1%
+                    Lwarp does not provide MathJax support for #1.\MessageBreak
+                    Use SVG math by removing the Lwarp mathjax option%
                 }
         }{%
             \PackageWarningNoLine{lwarp}
@@ -14164,15 +14245,21 @@
     afterward to resume using MathJax math.\MessageBreak
     Before display math, use \protect\displaymathother\MessageBreak
     to begin using SVG math, and use \protect\displaymathnormal\MessageBreak
-    after to resume using MathJax for the following math%
+    after to resume using MathJax for the following math.\MessageBreak
+    Or, use SVG math for all expressions by removing\MessageBreak
+    the mathjax option for the lwarp package%
 }
 \AtBeginDocument{
     \ifbool{mathjax}{
+        \LWR at nomathjaxwarn{aligned-overset}{}
+        \LWR at nomathjaxwarn{amscdx}
+            {\LWR at forceSVGmessage{amscdx}}
         \LWR at mathjaxwarn{arydshln}
             {In a math array, do not use the optional argument\MessageBreak
             for \protect\cdashline.\space\space
             Furthermore, \protect\cline\space is not\MessageBreak
             supported by MathJax}
+        \LWR at nomathjaxwarn{autoaligne}{}
         \LWR at mathjaxwarn{autonum}
             {MathJax does not support equation+.\MessageBreak
             You may use the warpprint and warpHTML\MessageBreak
@@ -14180,6 +14267,7 @@
             and the equation+ environments}
         \LWR at mathjaxwarn{bigdelim}
             {Delimiters appear only of the first line}
+        \LWR at nomathjaxwarn{boldtensors}{}
         \LWR at mathjaxwarn{booktabs}
             {\protect\cmidrule\space is not displayed}
         \LWR at mathjaxwarn{breqn}
@@ -14194,8 +14282,18 @@
             {\LWR at forceSVGmessage{gauss}}
         \LWR at mathjaxwarn{hhline}
             {A simple \protect\hline\space is used}
+        \LWR at mathjaxwarn{isomath}
+            {Some of the symbol font macros such as \protect\mathsfbfit\MessageBreak
+                do not use a sans font because MathJax does not yet\MessageBreak
+                have sans Greek.  Tensors may look like vectors%
+            }
         \LWR at nomathjaxwarn{jkmath}
             {\LWR at forceSVGmessage{jkmath}}
+        \LWR at mathjaxwarn{libertinust1math}
+            {Some of the symbol font macros such as \protect\mathsfbfit\MessageBreak
+                do not use a sans font because MathJax does not yet\MessageBreak
+                have sans Greek.  Tensors may look like vectors%
+            }
         \LWR at mathjaxwarn{mathtools}
             {See the Lwarp manual regarding the disallowspaces\MessageBreak
             and showonlyrefs options, the alignat environment,\MessageBreak
@@ -14216,13 +14314,15 @@
             }
         \LWR at nomathjaxwarn{pb-diagram}
             {\LWR at forceSVGmessage{pb-diagram}}
+        \LWR at nomathjaxwarn{tensind}{}
         \LWR at mathjaxwarn{unicode-math}
             {Do not use embedded Unicode characters.\MessageBreak
-            Not all characters are encoded correctly.\MessageBreak
-            \protect\left\space and \protect\right\space may not work.\MessageBreak
+            (Not all characters are encoded correctly.)\MessageBreak
             Some symbol fonts are not supported by MathJax,\MessageBreak
             and are only approximated.\MessageBreak
-            Latin characters may not be correct}
+            Greek macros such as \protect\alpha\space respond to the math-style\MessageBreak
+            option.  Latin symbols does not, per MathJax\MessageBreak
+            limitations, unless placed inside \protect\symbit\space or similar}
         \LWR at nomathjaxwarn{unitsdef}{}
         \LWR at mathjaxwarn{witharrows}
             {Arrows can only point to the next line.\MessageBreak



More information about the tex-live-commits mailing list.