texlive[57791] branches/branch2020: lwarp (18feb21)

commits+karl at tug.org commits+karl at tug.org
Thu Feb 18 23:20:50 CET 2021


Revision: 57791
          http://tug.org/svn/texlive?view=revision&revision=57791
Author:   karl
Date:     2021-02-18 23:20:50 +0100 (Thu, 18 Feb 2021)
Log Message:
-----------
lwarp (18feb21)

Modified Paths:
--------------
    branches/branch2020/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua
    branches/branch2020/Master/texmf-dist/doc/latex/lwarp/README.txt
    branches/branch2020/Master/texmf-dist/doc/latex/lwarp/lwarp.pdf
    branches/branch2020/Master/texmf-dist/scripts/lwarp/lwarpmk.lua
    branches/branch2020/Master/texmf-dist/source/latex/lwarp/lwarp.dtx
    branches/branch2020/Master/texmf-dist/source/latex/lwarp/lwarp.ins
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-SIunits.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-abstract.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-accessibility.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-acro.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-adjmulticol.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-afterpage.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithm2e.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithmicx.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-alltt.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-amsmath.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-amsthm.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-atbegshi.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-attachfile.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-attachfile2.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-authblk.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-backnaur.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-backref.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-booktabs.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage2e.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-braket.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-breakurl.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-cancel.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-caption.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-centernot.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-changes.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-chemgreek.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-colonequals.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-colortbl.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-multimedia.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-ctable.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-easy-todo.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-econometrics.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-ed.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-embrac.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-enumitem.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epigraph.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epsfig.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epstopdf-base.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epstopdf.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-errata.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-everyshi.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fancybox.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyhdr.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyref.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyvrb.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fixme.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-float.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-floatflt.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-floatrow.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fontaxes.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-forest.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-glossaries.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-graphics.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-graphicx.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hang.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-idxlayout.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-imakeidx.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-index.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-intopdf.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-karnaugh-map.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-keyfloat.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-lettrine.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-lineno.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-longtable.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-luatodonotes.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-lyluatex.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-makeidx.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathdots.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathfixs.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathtools.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mdframed.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mhchem.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mismath.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-moreverb.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-multicol.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-multiobjective.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-multirow.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-nccmath.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-nfssext-cfr.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-nicefrac.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-nowidow.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-ntheorem.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-parcolumns.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-parnotes.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-komascript.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-memoir.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfrender.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-physics.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-pstricks.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-quoting.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-realscripts.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-rmathbr.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-rotating.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-rotfloat.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-schemata.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-scrextend.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-sidenotes.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-siunitx.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-slantsc.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-splitidx.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-statex2.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-statmath.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-steinmetz.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-struktex.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-subcaption.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-subfig.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-svg.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-textcomp.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-textpos.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-tikz.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-titlesec.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-titling.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-tocloft.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-todonotes.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-trivfloat.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-unicode-math.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-units.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-url.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-verse.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-witharrows.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-wrapfig.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-xcolor.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-xfakebold.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-xfrac.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-xpinyin.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp.sty

Added Paths:
-----------
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-accents.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-amscdx.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-bussproofs.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-caption3.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-citeref.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-cleveref.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-cmbright.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-letters.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-newpxtxmath.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-nonunicode.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-overlaysymbols.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-drftcite.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epsf.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-esvect.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fbox.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fixmath.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fnpara.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fourier.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fvextra.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-gindex.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hepunits.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hhtensor.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-isomath.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-isotope.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-jurabib.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-keystroke.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts-otf.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-libertinust1math.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-lpic.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-luavlna.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathalpha.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathastext.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathdesign.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathpazo.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathptmx.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathspec.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mattens.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-maybemath.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mdwmath.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-menukeys.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-minted.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mleftright.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-multibib.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-newpxmath.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-newtxmath.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-newtxsf.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-nicematrix.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-picinpar.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-pinlabel.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-plimsoll.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-pxfonts.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-repltext.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-rlepsf.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-scalerel.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-selectp.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-seqsplit.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-shadethm.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-shuffle.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-simplebnf.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-skmath.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-splitbib.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-statistics.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-swfigure.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-tcolorbox.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-tensor.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-termcal.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-listof.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-restate.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-thmbox.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-thmtools.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-tikz-imagelabels.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-txfonts.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-txgreeks.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-upgreek.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-ushort.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-varioref.sty
    branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-xevlna.sty

Modified: branches/branch2020/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua
===================================================================
--- branches/branch2020/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua	2021-02-18 22:20:50 UTC (rev 57791)
@@ -1,8 +1,8 @@
 #!/usr/bin/env texlua
 
--- Copyright 2016-2020 Brian Dunn
+-- Copyright 2016-2021 Brian Dunn
 
-printversion = "v0.83"
+printversion = "v0.895"
 requiredconfversion = "2" -- also at *lwarpmk.conf
 
 function printhelp ()
@@ -32,10 +32,11 @@
 lwarpmk pdftosvg <list of file names>: Converts each PDF file to SVG.
 lwarpmk epstopdf <list of file names>: Converts each EPS file to PDF.
 lwarpmk clean [-p project]: Remove *.aux, *.toc, *.lof/t,
-    *.idx, *.ind, *.log, *_html_inc.*, .gl*,
+    *.idx, *.ind, *.bbl, *.log, *_html_inc.*, .gl*,
     *_html.pdf, *_html.html, *_html.sidetoc
 lwarpmk cleanall [-p project]: Remove auxiliary files, project.pdf, *.html
 lwarpmk cleanlimages: Removes all images from the "lateximages" directory.
+lwarpmk -v: Print the version number.
 lwarpmk -h: Print this help message.
 lwarpmk --help: Print this help message.
 
@@ -379,12 +380,13 @@
 -- Remove auxiliary files:
 -- All .aux files are removed since there may be many bbl*.aux files.
 -- Also removes sourcename_html.pdf, sourcename_html.html,
--- and sourcename_html.sidetoc.
+-- and sourcename_html.sidetoc, plus comment_*.cut.
 --
 os.execute ( rmname .. " *.aux " ..
     sourcename ..".toc " .. sourcename .. "_html.toc " ..
     sourcename ..".lof " .. sourcename .. "_html.lof " ..
     sourcename ..".lot " .. sourcename .. "_html.lot " ..
+    sourcename ..".bbl " .. sourcename .. "_html.bbl " ..
     " *.idx " ..
     " *.ind " ..
     sourcename ..".ps " .. sourcename .."_html.ps " ..
@@ -393,7 +395,8 @@
     sourcename .. "_html.pdf " ..
     sourcename .. "_html.html " ..
     sourcename .. "_html.sidetoc " ..
-    " *_html_inc.* "
+    " *_html_inc.* " ..
+    " comment_*.cut"
     )
 end
 
@@ -890,6 +893,12 @@
 elseif (arg[1] == nil) then
 printhelp ()
 
+-- lwarpmk -v:
+
+elseif (arg[1] == "-v" ) then
+-- The version number has already been printed
+-- by the lwarpmk intro.
+
 -- lwarpmk -h or lwarpmk --help :
 
 elseif (arg[1] == "-h" ) or (arg[1] == "--help") then

Modified: branches/branch2020/Master/texmf-dist/doc/latex/lwarp/README.txt
===================================================================
--- branches/branch2020/Master/texmf-dist/doc/latex/lwarp/README.txt	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/doc/latex/lwarp/README.txt	2021-02-18 22:20:50 UTC (rev 57791)
@@ -1,5 +1,5 @@
 
-LaTeX lwarp package v0.83   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: branches/branch2020/Master/texmf-dist/doc/latex/lwarp/lwarp.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020/Master/texmf-dist/scripts/lwarp/lwarpmk.lua
===================================================================
--- branches/branch2020/Master/texmf-dist/scripts/lwarp/lwarpmk.lua	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/scripts/lwarp/lwarpmk.lua	2021-02-18 22:20:50 UTC (rev 57791)
@@ -1,8 +1,8 @@
 #!/usr/bin/env texlua
 
--- Copyright 2016-2020 Brian Dunn
+-- Copyright 2016-2021 Brian Dunn
 
-printversion = "v0.83"
+printversion = "v0.895"
 requiredconfversion = "2" -- also at *lwarpmk.conf
 
 function printhelp ()
@@ -32,10 +32,11 @@
 lwarpmk pdftosvg <list of file names>: Converts each PDF file to SVG.
 lwarpmk epstopdf <list of file names>: Converts each EPS file to PDF.
 lwarpmk clean [-p project]: Remove *.aux, *.toc, *.lof/t,
-    *.idx, *.ind, *.log, *_html_inc.*, .gl*,
+    *.idx, *.ind, *.bbl, *.log, *_html_inc.*, .gl*,
     *_html.pdf, *_html.html, *_html.sidetoc
 lwarpmk cleanall [-p project]: Remove auxiliary files, project.pdf, *.html
 lwarpmk cleanlimages: Removes all images from the "lateximages" directory.
+lwarpmk -v: Print the version number.
 lwarpmk -h: Print this help message.
 lwarpmk --help: Print this help message.
 
@@ -379,12 +380,13 @@
 -- Remove auxiliary files:
 -- All .aux files are removed since there may be many bbl*.aux files.
 -- Also removes sourcename_html.pdf, sourcename_html.html,
--- and sourcename_html.sidetoc.
+-- and sourcename_html.sidetoc, plus comment_*.cut.
 --
 os.execute ( rmname .. " *.aux " ..
     sourcename ..".toc " .. sourcename .. "_html.toc " ..
     sourcename ..".lof " .. sourcename .. "_html.lof " ..
     sourcename ..".lot " .. sourcename .. "_html.lot " ..
+    sourcename ..".bbl " .. sourcename .. "_html.bbl " ..
     " *.idx " ..
     " *.ind " ..
     sourcename ..".ps " .. sourcename .."_html.ps " ..
@@ -393,7 +395,8 @@
     sourcename .. "_html.pdf " ..
     sourcename .. "_html.html " ..
     sourcename .. "_html.sidetoc " ..
-    " *_html_inc.* "
+    " *_html_inc.* " ..
+    " comment_*.cut"
     )
 end
 
@@ -890,6 +893,12 @@
 elseif (arg[1] == nil) then
 printhelp ()
 
+-- lwarpmk -v:
+
+elseif (arg[1] == "-v" ) then
+-- The version number has already been printed
+-- by the lwarpmk intro.
+
 -- lwarpmk -h or lwarpmk --help :
 
 elseif (arg[1] == "-h" ) or (arg[1] == "--help") then

Modified: branches/branch2020/Master/texmf-dist/source/latex/lwarp/lwarp.dtx
===================================================================
--- branches/branch2020/Master/texmf-dist/source/latex/lwarp/lwarp.dtx	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/source/latex/lwarp/lwarp.dtx	2021-02-18 22:20:50 UTC (rev 57791)
@@ -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/03/25 v0.83  Allows LaTeX to directly produce HTML5 output.]
+%<package>    [2021/02/18 v0.895  Allows LaTeX to directly produce HTML5 output.]
 %
 %<*driver>
 \documentclass{ltxdoc}
@@ -24,8 +24,8 @@
 \PassOptionsToPackage{quiet}{textcomp}% Not all chars supported in TT font.
 
 \usepackage{lmodern}
-% \usepackage{libertine}
-\usepackage[space]{erewhon}
+\usepackage{libertine}
+% *88* \usepackage[space]{erewhon}
 \usepackage[varqu,varl]{inconsolata} % typewriter
 % \usepackage{roboto}% conflicts with \textsc inside a float
 % \usepackage{sourcecodepro}
@@ -85,8 +85,10 @@
 \newunicodechar{฿}{\textbaht}
 \newunicodechar{℠}{\textservicemark}
 
-\usepackage[log-declarations=false]{xparse}
+% \usepackage[log-declarations=false]{xparse}
+\usepackage{xparse}
 
+\usepackage{ifptex}% *8* remove later
 
 
 \usepackage[lwarpmk]{lwarp}
@@ -163,6 +165,7 @@
 
 
 \usepackage{enumitem}
+\newlist{inlinedesc}{description*}{1}
 
 \usepackage{array}
 \usepackage{longtable}
@@ -565,8 +568,8 @@
 \DescribeOption{GlossaryCmd}\DescribeDefault{makeglossaries}
 \DescribeOption[lwarpmk]{printglossary}
 \DescribeOption[lwarpmk]{htmlglossary}
-\prog{lwarpmk} has the commands \texttt{lwarpmk printglossary} and
-\texttt{lwarpmk htmlglossary}, which process the glossaries created by the
+\prog{lwarpmk} has the commands \cmds{lwarpmk printglossary} and
+\cmds{lwarpmk htmlglossary}, which process the glossaries created by the
 \pkg{glossaries} package using that package's \prog{makeglossaries} program.
 
 The shell command to execute is set by the \pkg{lwarp} option \optn{GlossaryCmd},
@@ -760,6 +763,10 @@
 
 \newcommand*{\limitspagenote}{%
 \pkg{pagenote} works as-is, but the \optn{page} option is disabled.
+
+Note that labels in page notes do not appear as expected,
+\trouble[labels]{pagenote=\pkg{pagenote}}
+even in the print version.
 }
 
 \newcommand*{\limitsendnotes}{%
@@ -814,27 +821,6 @@
 these environments.  Adding a space on either side may be sufficient.
 }
 
-\newcommand{\limitshspace}{%
-\DescribeMacro{\hspace}%
-\gindex{space>horizontal}%
-\gindex{horizontal space}%
-\cs{hspace} is converted to an inline \HTML\ span of the given width,
-except that \texttt{0} width is ignored,
-a width of \texttt{.16667em} is converted to
-an \HTML\ thin breakable space (\texttt{U+2009}),
-and a \cs{fill} is converted to a \cs{qquad}.
-
-\gindex{\texttt{\textasciitilde}}%
-\gindex{\cs{,}}%
-\DescribeMacro{\,}%
-\texttt{\~} and \cs{,} are converted to \HTML\ entities.
-
-\DescribeMacro{\kern}%
-\DescribeMacro{\hskip}%
-\cs{kern} and \cs{hskip} are entered into the \HTML\ \PDF\ output as-is,
-then interpreted by \prog{pdftotext}, and thus usually appear as a single space.
-}
-
 \newcommand{\limitstextcomp}{%
 Some \pkg{textcomp} symbols do not have Unicode equivalents, and thus
 are not supported.
@@ -848,6 +834,11 @@
 \newcommand{\limitsaccents}{%
 Native \LaTeX\ accents such as \cs{"} will work, but many more kinds of
 accents are available when using Unicode-aware \XeLaTeX\ and \LuaLaTeX.
+If using accents in section names which will become file names, it is recommended
+to use the \LaTeX\ accents such as \cs{"} and \cs{v} instead of Unicode accents.
+The \LaTeX\ accents will have the accents stripped when creating the filenames,
+whereas the Unicode accents will appear in the file names, which may cause
+issues with some operating systems.
 }
 
 \newcommand{\limitsrelsize}{%
@@ -1025,7 +1016,6 @@
 Many features are ignored during the \HTML\ conversion.
 The goal is source-level compatibility.
 
-\cs{titlehead}, \cs{subject},
 \cs{captionformat}, \cs{figureformat}, and \cs{tableformat} are not yet emulated.
 
 \testthis
@@ -1035,6 +1025,10 @@
 }
 
 \newcommand{\limitsmemoir}{
+\pkg{lwarp} uses \pkg{caption}, which causes a warning from \pkg{memoir}.
+\trouble[captions]{memoir=\pkg{memoir}>captions}
+This is normal.  Adjust captions via \pkg{caption}, instead of \pkg{memoir}.
+
 While emulating \pkg{memoir}, \pkg{lwarp} pre-loads
 a number of packages (\cref{sec:patch-memoir-packages}).
 This can cause an options clash when the user's document later loads the same
@@ -1062,19 +1056,52 @@
 which are often newer than the date declared by \pkg{memoir}, it is hoped that
 \pkg{memoir} will update and change its emulated version numbers to match.
 
-\cs{verbfootnote} is not supported.
+\cs{label} accepts an optional \optn{(bookmark)} argument, but this is
+\margintag{\texttt{\cs{label}(bookmark)\{tag\}}}
+ignored in \HTML.
 
-\cs{newfootnoteseries}, etc. are not supported.
+The \env{comment} environment is from the \pkg{comment} package, and thus
+\trouble[\env{comment}]{comment=\env{comment}}
+\trouble{memoir=\pkg{memoir}>comment=\env{comment}}
+requires that the \cs{begin} and \cs{end} each be on its own line:
+\begin{sourcedisplay}
+\cs{begin}\{comment\} \\
+This is a comment. \\
+\cs{end}\{comment\}
+\end{sourcedisplay}
+Comments defined with  \cs{newcomment} use \pkg{memoir}'s defintions, and
+\margintag{\cs{newcomment}}
+behave as expected, where the \cs{begin} and \cs{end} do have to each be on its own line.
 
+\cs{verbfootnote} is not supported.\watchout[verbatim footnotes]
+
+\cs{newfootnoteseries}, etc. are not supported.\watchout[\cs{newfootnoteseries}]
+
 \pkg{lwarp} loads \pkg{pagenote} to perform \pkg{memoir}'s pagenote functions,
+\watchout[page notes]
 but there are minor differences in \cs{pagenotesubhead} and related macros.
 
-Poem numbering is not supported.
+To add support for pagenotes with \pkg{cleveref}, add:
+\margintag{page notes with cleveref}
+\trouble{memoir=\pkg{memoir}>page notes}
+\begin{sourcedisplay}
+\cs{crefname}\{pagenote\}\{page note\}\{page notes\} \\
+\cs{Crefname}\{pagenote\}\{Page note\}\{Page notes\}
+\end{sourcedisplay}
 
+Note that for print mode,
+\margintag{page note \cs{nameref}}
+\cs{nameref} print the section name where the page notes are
+declared in the text, but for \HTML\ it prints the name where the page notes are printed.
+
+Poem numbering is not supported.\watchout[poems]
+
 The \env{verbatim} environment does not yet support the \pkg{memoir} enhancements.
+\watchout[\env{verbatim}]
 It is currently recommended to load and use \pkg{fancyvrb} instead.
 
 The \pkg{memoir} glossary system is not yet supported by \prog{lwarpmk}.
+\watchout[glossaries]
 The \pkg{glossaries} package may be used instead,
 but does require the glossary entries be
 changed from the \pkg{memoir} syntax to the \pkg{glossaries} syntax.
@@ -1116,6 +1143,10 @@
 text in the \HTML-tagged \PDF\ output.  For some settings of
 \cs{HTMLleftmargini} or \cs{HTMLleftskip} the horizontal alignment may not work out
 exactly, in which case a label may be shifted by one space.
+\trouble[\env{verse} margin]{verse=\pkg{verse}>margin}
+\trouble{memoir=\pkg{memoir}>verse>margin}
+During translation to \HTML, the stanza numbers are kept out of the left margin,
+which would have caused \prog{pdftotext} to shift everything over.
 }
 
 
@@ -1224,8 +1255,9 @@
 \subsubsection{\brand{MathJax} option}
 \label{sec:limitsmathjax}
 
-The popular \brand{MathJax} alternative (\url{mathjax.org}) may be used to display math.
+The \brand{MathJax} (\url{mathjax.org}) \LaTeX-math to \HTML\ converter
 \margintag{\brand{MathJax} math option}
+may be used to display math.
 \DescribeProgram{MathJax}
 \gindex{math>mathjax=\brand{MathJax} summary}
 \gindex{mathjax=\brand{MathJax}>summary}
@@ -1237,8 +1269,9 @@
 \item As detokenized printed \LaTeX{} commands placed directly into the \HTML\ output
 for interpretation by the \brand{MathJax} display scripts.  An additional script is used to
 pre-set the equation number format and value according to the current \LaTeX\ values,
-and the \brand{MathJax} cross-referencing system is ignored in favor of the \LaTeX\ internal system,
-seamlessly integrating with the rest of the \LaTeX\ code.
+and the \brand{MathJax} equation numbering system is ignored in favor of the \LaTeX\ internal system,
+seamlessly integrating with the rest of the \HTML\ output, including any math
+appearing in non-\brand{MathJax} \SVG\ output.
 \end{enumerate}
 
 \subsubsection{Customizing \brand{MathJax}}
@@ -1264,12 +1297,6 @@
     \cs{multicolumn} only fills a single cell, resulting in a short row.
     \cs{multirow} simply prints its text on the first line.
 
-\item \brand{MathJax} does not support subequations.
-    \trouble[subequations]{mathjax=\brand{MathJax}>subequations}%
-    \trouble{math>subequations}%
-    This may be improved by parsing the \LaTeX{}
-    math expression to manually insert tags, but this has not yet been done.
-
 \item Footnotes are emulated when used inside a \brand{MathJax} expression.
     \watchout[footnotes]
     For an equation with a single footnote, the correct footnote number is used.
@@ -1289,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},
@@ -1305,19 +1332,23 @@
     While \brand{MathJax} is enabled inside \env{tabbing}, the browser may not correctly
     render the horizontal alignment of the math and text following after on the same line.
 
-\item Other math-related macros and packages are not directly supported by \brand{MathJax},
+\item \brand{MathJax} includes the \prog{textmacros} extension,
+    \margintag{\cs{text}}
+    which supports various macros which are commonly used inside \cs{text},
+    such as \cs{textbf} and text accents.
+    \pkg{Lwarp} supports this extension.
+
+\item Many other math-related macros and packages are
     \trouble[other macros and packages]{mathjax=\brand{MathJax}>unsupported packages}
-    including \cs{ensuremath} and \pkg{bigdelim},
-    and occasionally-used macros such as \cs{relax}.
+    \trouble{package>mathjax=\brand{MathJax} support}
+    not directly supported by \brand{MathJax},
+    including \cs{ensuremath} and occasionally-used macros such as \cs{relax}.
     While using \brand{MathJax}, \pkg{lwarp} provides emulation
-    for footnotes, \pkg{bm}, \pkg{mathtools},
-    \pkg{nicefrac}, \pkg{siunitx}, and \pkg{units}.
-
-\item Starred macros are generally not supported
-    \trouble[starred macros]{starred macros>mathjax=\brand{MathJax}}
-    \trouble{math>starred macros and mathjax=\brand{MathJax}}
-    \trouble{mathjax=\brand{MathJax}>starred macros}
-    by MathJax or the \pkg{lwarp} emulations.
+    for many of these macros, as well as for footnotes and emulation for
+    dozens of packages (see \cref{tab:supported}).
+    In many cases these emulations simply ignore the package in a source-compatible way.
+    Others produce a result which represents the meaning, even if they don't look exact.
+    Look up each package in this document for a description of the limitations of each.
 \end{itemize}
 }
 
@@ -1345,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,
@@ -1355,9 +1386,13 @@
 Another problem is complicated contents
 \margintag{complicated \attribute{alt} tag}
 which do not expand well in an \attribute{alt} tag.
-The macro \cs{inlinemathother} may be used before a dynamic
-math expression, and \cs{inlinemathnormal} after.  Doing so tells \pkg{lwarp} to
-use an unhashed \SVG\ math image, even if MathJax is in use.
+Yet another problem is math packages which are only partially emulated
+\margintag{\brand{MathJax} limitations}
+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 \brand{MathJax}
+is otherwise in use.
 See \cref{sec:localizingdynamicmath}.
 }
 
@@ -1365,7 +1400,7 @@
 \DescribeMacro{\displaymathnormal}
 By default, or when selecting \cs{displaymathnormal},
 \brand{Mathjax} math display environments print their contents
-as text into \HTML,
+as text into \HTML\ for \brand{MathJax} to interpret,
 and \SVG\ display math environments render their contents as \SVG\ images
 and use their contents as the \attribute{alt} tag of \HTML\ output.
 To do so, the contents are loaded into a macro for reuse.
@@ -1376,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}
@@ -1389,6 +1424,27 @@
 
 
 \newcommand{\limitscustomizemathjax}{%
+\pkg{lwarp} detects and adjusts \brand{MathJax} equation numbering format for
+\margintag{equation numbering}
+\gindex{equation numbering>mathjax=\brand{MathJax}}
+\gindex{math>equation numbering, mathjax=\brand{MathJax}}
+\gindex{mathjax=\brand{MathJax}>equation numbering}
+\trouble{equation numbering>mathjax=\brand{MathJax}}
+\trouble{mathjax=\brand{MathJax}>equation numbering}
+\trouble{math>equation numbering>mathjax=\brand{MathJax}}
+\pkg{article} and \pkg{book} style equations as well as
+\pkg{amsmath} \cs{numberwithin} for chapters, sections, and subsections.
+Custom equation number formats may be set as follows, for example:
+\begin{sourcedisplay}
+\cs{renewcommand*}\{\cs{theequation}\}\{\cs{Alph}\{section\}.\cs{arabic}\{equation\}\} \\
+\textred{\cs{AtBeginDocument}\{} \\
+    \fquad\cs{renewcommand*}\{\cs{theMathJaxsection}\}\{\cs{Alph}\{section\}.\} \\
+\textred{\}}
+\end{sourcedisplay}
+The \pkg{amsmath} \env{subequations} environment is supported, but only
+\watchout[\env{subequation}]
+with \cs{alpha} subequation numbering.
+
 \brand{MathJax} does not have preexisting support every possible math function.
 \margintag{global customizations}
 Additional \brand{MathJax} function definitions may be
@@ -1447,9 +1503,45 @@
 To maintain compile speed, use the \env{warpMathJax} environment,
 and use a separate math environment for each definition.
 
-Starred macros are generally not supported
-    \watchout[starred macros]
-    by MathJax or the \pkg{lwarp} emulations.
+\DescribeMacro{\ifstar}
+For \brand{MathJax}, use \cs{ifstar} instead of \cs{@ifstar}:
+\gindex{starred macros}
+\gindex{ifnextstar=\cs{@ifnextstar} with \brand{MathJax}}
+\gindex{@ifstar=\cs{@ifstar} with \brand{MathJax}}
+\gindex{mathjax=\brand{MathJax}>starred macros}
+\trouble{mathjax=\brand{MathJax}>starred macros}
+\trouble{math>starred macros and mathjax=\brand{MathJax}}
+\gindex{mathjax=\brand{MathJax}>@ifstar=\cs{@ifstar} macros}
+\trouble{mathjax=\brand{MathJax}>@ifstar=\cs{@ifstar} macros}
+\trouble{math>@ifstar=\cs{@ifstar} macros and \brand{MathJax}}
+\begin{sourcedisplay}
+\cs{CustomizeMathJax}\{ \\
+    \fquad \cs{def}\cs{myname}\{\\
+        \fqquad \cs{ifstar}\cs{starredaction}\cs{unstarredaction} \\
+        \fqquad \% \textred{(Do not place anything after!)} \\
+    \fquad \}
+\}
+\end{sourcedisplay}
+
+\DescribeMacro{\ifnextchar}
+For \brand{MathJax}, use \cs{ifnextchar} instead of \cs{@ifnextchar}:
+\gindex{@ifnextchar=\cs{@ifnextchar} with \brand{MathJax}}
+\gindex{ifnextchar=\cs{@ifnextchar} with \brand{MathJax}}
+\gindex{mathjax=\brand{MathJax}>@ifnextchar=\cs{@ifnextchar} macros}
+\trouble{mathjax=\brand{MathJax}>@ifnextchar=\cs{@ifnextchar} macros}
+\trouble{math>@ifnextchar=\cs{@ifnextchar} macros and \brand{MathJax}}
+\begin{sourcedisplay}
+\cs{CustomizeMathJax}\{\cs{def}\cs{myname}\{\cs{ifnextchar} X \cs{found}\cs{notfound}\}\}
+\end{sourcedisplay}
+``\texttt{X}'' may be a single \acro{ASCII} character,
+or a hex number inside braces, ex:
+\begin{sourcedisplay}
+\cs{CustomizeMathJax}\{\cs{def}\cs{myname}\{\cs{ifnextchar}\{0x7B\}\cs{found}\cs{notfound}\}\}
+\end{sourcedisplay}
+Use ``\texttt{(}'' or ``\texttt{\{0x28\}}'' for a left parenthesis,
+``\texttt{\{0x7B\}}'' for a left brace,
+``\texttt{\{0x7D\}}'' for a right brace,
+or ``\texttt{\{0x5C\}}'' for a backslash.
 }
 
 %\newcommand{\limitscustomizeKaTeX}{%
@@ -1479,10 +1571,10 @@
 \trouble{math>file name}
 instead of dollar math \texttt{\$x+y\$}.
 (Dollar math works, but appears in the filename.)
-Or, use a short name for the \TOC\ entry without the math, or use \cs{texorpdfstring}:
+Or, use a short name for the \TOC\ entry without the math, or use \cs{texorpdfstring}
+from the \pkg{hyperref} package:
 \begin{sourcedisplay}
-\cs{section}\{A name with math \\
-    \fqquad \cs{texorpdfstring}\{\$1+2=3\$\}\{text description\}\}
+\cs{section}\{Some math \cs{texorpdfstring}\{\$1+2=3\$\}\{three\}\}
 \end{sourcedisplay}
 }
 
@@ -1497,7 +1589,6 @@
     If using \brand{MathJax}:
     \trouble[\brand{MathJax}]{mathjax=\brand{MathJax}>mathtools=\pkg{mathtools}}
     \begin{itemize}
-    \item Starred macros are not available.  Starred environments do work.
     \item \pkg{mathtools} \optn{disallowspaces} does not work for \brand{MathJax}.
         Protect brackets which are not optional arguments, such as:
         \begin{sourcedisplay}
@@ -1513,14 +1604,19 @@
     \item For the new \env{cases}-like environments,
         \cs{text} must be used to set the normal roman font if desired.
     \item \env{alignat} in \brand{MathJax} requires math mode, but
-        in \LaTeX it doesn't.  It may be required to use \env{warpHTML} and
+        in \LaTeX\ it doesn't.  It may be required to use \env{warpHTML} and
         \env{warpprint} to isolate a version for each mode.
-    \item \cs{DeclareParedDelimiter} and related must be in the preamble
+    \item \cs{DeclarePairedDelimiter} and related must be in the preamble
         before \linebreak \texttt{\cs{begin}\{document\}}.
-        The starred versions of each macro are not created.
     \end{itemize}
 }
 
+\newcommand{\limitsacro}{%
+Define acronymn formats using \cs{textbf} instead
+\watchout[formats]
+of \cs{bfseries} etc.
+}
+
 \newcommand{\limitschemfig}{%
 If using \cs{polymerdelim} to add delimiters to a \cs{chemfig},
 wrap both inside a single \env{lateximage}:
@@ -1553,11 +1649,34 @@
 Font control is via \CSS, and the custom \LaTeX\ font settings
 are ignored.
 
+If the print version does not use \pkg{cleveref},
+\trouble[cref reference format undefined]{ntheorem=\pkg{ntheorem}>cref reference format}
+\trouble{cref reference format}
+\trouble{cleveref=\pkg{cleveref}>cref reference format}
+place all \cs{theoremstyle} and \cs{newtheorem}
+declarations in the preamble inside \cs{AtBeginDocument}.\footnote{%
+    \pkg{lwarp} uses \pkg{cleveref} for the \HTML\ conversion,
+    and loads \pkg{cleveref} \cs{AtEndPreamble}, just before \cs{AtBeginDocument}.%
+}
+For some theorems, it may also be required to add inside \cs{AtBeginDocument}
+something such as:
+\begin{sourcedisplay}
+\cs{AtBeginDocument}\{ \% if not using cleveref package \\
+    \fquad \cs{theoremstyle}\{definition\} \\
+    \fquad \cs{newtheorem}\{dtheorem\}\{Definition\} \\
+    \fquad \dots \\
+    \fquad \cs{usepackage}\{etoolbox\} \% for \cs{ifdef} \\
+    \fquad \cs{ifdef}\{\cs{cref}\}\{ \\
+        \fqquad    \cs{crefname}\{Proof\}\{Proof\}\{Proofs\} \\
+    \fquad \}\{\} \\
+\}
+\end{sourcedisplay}
+
 \limitsntheoremnumbering
 }
 
 \newcommand{\limitsntheoremnumbering}{%
-\pkg{ntheorem} has a bug with equation numbering in \AmS\ environments%
+\pkg{ntheorem} has a bug with equation numbering in \AmS\ environments
 \trouble[Equation numbering]{ntheorem=\pkg{ntheorem}>numbering}
 \trouble{math>equation numbering>ntheorem=\pkg{ntheorem}}
 \trouble{AMSmath>ntheorem=\pkg{ntheorem}>numbering}
@@ -1597,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}:
@@ -1611,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)}}
@@ -1618,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}
@@ -1627,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.
@@ -1777,9 +1896,9 @@
 }
 
 \newcommand{\limitscolor}{%
-\pkg{color} is superceded by \pkg{xcolor}, and
-\pkg{lwarp} requires several of the features of \pkg{xcolor}.
-When \pkg{color} is requested, \pkg{xcolor} is loaded as well.
+    \pkg{color} is superceded by \pkg{xcolor}, and
+    \pkg{lwarp} requires several of the features of \pkg{xcolor}.
+    When \pkg{color} is requested, \pkg{xcolor} is loaded as well.
 }
 
 \newcommand{\limitsxcolor}{%
@@ -1965,6 +2084,36 @@
         \trouble[floatrow]{floatrow=\pkg{floatrow}>ttabbox=\cs{ttabbox}}
         which used \cs{ttabbox} from \pkg{floatrow}.
     \item \limitsresumetabular
+    \item To automate the use of \cs{StartDefiningTabulars}
+        \gindex{StartDefiningTabulars=\cs{StartDefiningTabulars}}
+        \gindex{tabular>StartDefiningTabulars=\cs{StartDefiningTabulars}}
+        \gindex{tabular>in environments, catcode of \&}
+        \margintag{For developers:}
+        and \cs{EndDefiningTabulars},
+        these macros may be embedded inside an \HTML\ environment definition
+        to automatically change the catcode of \texttt{\&} before
+        absorbing the arguments.
+        Another environment may be embedded as well.
+        \begin{sourcedisplay}
+        \% Does the work after the catcode has been changed: \\
+        \cs{newcommand}*\{\textblue{\cs{LWR at HTML@subsomename}}\}[2]\{\% \\
+            \fquad \dots \\
+            \fquad \textgreen{\cs{otherenvironmentname} [<args>] \{<args>\}}\quad \% for example \\
+        \} \\
+        \% Change catcode before absorbing arguments: \\
+        \cs{newcommand}*\{\cs{LWR at HTML@somename}\{\% \\
+            \fquad \textred{\cs{StartDefiningTabulars}} \\
+            \fquad \textblue{\cs{LWR at HTML@subsomename}} \\
+        \} \\
+        \% Change catcode again at the end: \\
+        \cs{newcommand}*\{\cs{LWR at HTML@endsomename}\}\{\% \\
+            \fquad \dots \\
+            \fquad \textgreen{\cs{endotherenvironmentname}} \quad \% for example \\
+            \fquad \textred{\cs{StopDefiningTabulars}} \\
+        \} \\
+        \% Combine with the existing print definition: \\
+        \cs{LWR at formattedenv}\{somename\}
+        \end{sourcedisplay}
     \end{itemize}
 
 \item [Cell contents:] \
@@ -2148,16 +2297,16 @@
 To fix this, use \cs{ResumeTabular} as follows.
 This is ignored in print mode.
 \begin{sourcedisplay}
-\textred{\cs{StartDefiningTabulars}} \% because \& is used in a definition \\
+\textred{\cs{StartDefiningTabulars}} \% \quad (\& is used in a definition) \\
 \cs{newenvironment}\{outerenvironment\} \\
 \{ \\
-\cs{tabular}\{cc\} \\
-left \& right \textbackslash\textbackslash \\
+\fquad \cs{tabular}\{cc\} \\
+\fquad left \& right \textbackslash\textbackslash \\
 \} \\
 \{ \\
-\textred{\cs{TabularMacro}\cs{ResumeTabular}} \\
-left \& right \textbackslash\textbackslash \\
-\cs{endtabular} \\
+\fquad \textred{\cs{TabularMacro}\cs{ResumeTabular}} \\
+\fquad left \& right \textbackslash\textbackslash \\
+\fquad \cs{endtabular} \\
 \} \\
 \textred{\cs{StopDefiningTabulars}} \\
 \end{sourcedisplay}
@@ -2432,11 +2581,12 @@
 Also see \pkg{lwarp}'s \cs{fboxBlock} macro and \env{fminipage} environment for
 alternatives to \cs{fbox} for framing environments.
 
-The \pkg{fancybox} documentation's example framed table
+The \pkg{fancybox} documentation's example of a framed table
 \margintag{framed table example}
 using an \cs{fbox} containing a \env{tabular}
 does not work with \pkg{lwarp}, but the \env{FramedTable} environment does work if
-\cs{fbox} is replaced by \cs{fboxBlock}.  This method loses \HTML\ formatting.
+\cs{fbox} is replaced by \cs{fboxBlock}.
+This method does lose some \HTML\ formatting.
 A better method is to enclose the table's contents inside a \env{fminipage} environment.
 The caption may be placed either inside or outside the \env{fminipage}:
 \begin{sourcedisplay}
@@ -2573,6 +2723,16 @@
 % would appear in the List of Figures/Tables before the enclosing figure/table,
 % therefore \pkg{lwarp} does not place subfigures in the LOF/LOT.
 
+To have correct sub table numbers:
+\trouble[table numbering]{table>numbering>subfig=\pkg{subfig}}
+\trouble{subfig=\pkg{subfig}>numbering}
+\trouble{subtable>numbering>subfig=\pkg{subfig}}
+\begin{sourcedisplay}
+\cs{usepackage}\{caption\}\\
+\cs{captionsetup}[table]\{position=top\}
+\end{sourcedisplay}
+
+
 At present, the package options for \optn{lofdepth} and \optn{lotdepth}
 \trouble[\optn{lof/lotdepth}]{subfig=\pkg{subfig}>options}
 are not working.  These counters must be set separately after the
@@ -2579,7 +2739,7 @@
 package has been loaded.
 
 In the document source, use \cs{hfill} and \cs{hspace*}
-\trouble{horizontal spacing}{subfig>inline}
+\trouble[horizontal spacing]{subfig=\pkg{subfig}>inline}
 between subfigures to spread them
 apart horizontally.  The use of other forms of whitespace may
 cause paragraph tags to be generated, resulting in subfigures
@@ -2661,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}
@@ -2705,29 +2864,18 @@
 \newcommand{\limitsphysics}{%
 \pkg{physics} works as-is for \HTML\ with \SVG\ math.
 
-For \brand{MathJax}, emulation is provided via \brand{MathJax} macros.
-These are not the same as the third-party \brand{MathJax} extension.
-
-\begin{itemize}
-\item The \optn{notrig} option is honored.
-\item Starred macros are not yet detected.\watchout
-\item Most macros don't work with \cs{big}, etc.\watchout
-\item Macros do not auto-detect variable numbers of mandatory arguments. \watchout
-    Provide empty \texttt{\{\}} arguments for those which are not used.
-\item Many of the macros do not work with auto-detected delimiters. \watchout
-    Use the delimiter-specific versions instead.
-    Some macros do not even consider the following arguments,
-    so they may work as expected.
-\item For \cs{Re} and \cs{Im}, the arguments must be in braces.\watchout
-\item For \cs{functionalderivative}, for the example in the manual with $(E-TS)$,
-    enclose the parens in braces.
-\item \cs{expectationvalue} requires and uses two mandatory arguments, \watchout
-    unlike the third-party \brand{MathJax} \pkg{physics} extension.
-\item Each of \cs{matrixquantity}, \cs{smallmatrixquantity},
-    and \cs{matrixdeterminant} work,
-    while \cs{identitymatrix} and the following simply print a place-holder,
-    and must be replaced by hand.
-\end{itemize}
+For \brand{MathJax}, the \brand{MathJax} v3 \pkg{physics} extension is used.
+% emulation is provided via \pkg{lwarp}'s \brand{MathJax} macros.
+% These are not the same as the third-party \brand{MathJax} extension.
+% 
+% \begin{itemize}
+% \item The \optn{notrig} option is honored.
+% \item Most macros don't work with \cs{big}, etc.\watchout
+% \item Each of \cs{matrixquantity}, \cs{smallmatrixquantity},
+%     and \cs{matrixdeterminant} work,
+%     while \cs{identitymatrix} and the following simply print a place-holder,
+%     and must be replaced by hand using \env{warpprint} and \env{warpHTML}.
+% \end{itemize}
 }
 
 
@@ -2743,7 +2891,8 @@
 \newcommand{\limitsbabeltwo}{%
 When French is used, the caption separator is
 \trouble[\cs{CaptionSeparator}]{babel=\pkg{babel}>French}
-changed to a dash.  The following may be used to restore it to a colon:
+changed to a dash.  To restore it to a colon,
+the following may be placed before \pkg{lwarp} is loaded:
 \begin{sourcedisplay}
 \cs{renewcommand}*\{\cs{CaptionSeparator}\}\{:\textasciitilde\}
 \end{sourcedisplay}
@@ -2762,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
@@ -2824,29 +2973,8 @@
 \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}
-}
 
-\newcommand{\limitsnewtxmath}{%
-The proper load order is:
-\trouble[loading sequence]{newtxmath=\pkg{newtxmath}}
-\begin{sourcedisplay}
-\textrm{\dots} \\
-\cs{usepackage}\{lwarp\} \\
-\textrm{\dots} \\
-\cs{usepackage}\{amsthm\} \\
-\cs{usepackage}\{newtxmath\} \\
-\textrm{\dots} \\
-\end{sourcedisplay}
-}
 
-
 % For use in the documentation update section:
 \newcommand*{\newlwarpmkconf}{
 Due to changes in \prog{lwarpmk},
@@ -2925,7 +3053,7 @@
 %<*package>
 % \fi
 %
-% \CheckSum{43597}
+% \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
@@ -3051,6 +3179,17 @@
 % \changes{v0.81}{2020/03/04}{\ 2020/03/04}
 % \changes{v0.82}{2020/03/25}{\ 2020/03/25}
 % \changes{v0.83}{2020/03/27}{\ 2020/03/27}
+% \changes{v0.84}{2020/04/24}{\ 2020/04/24}
+% \changes{v0.85}{2020/05/01}{\ 2020/05/01}
+% \changes{v0.86}{2020/05/12}{\ 2020/05/12}
+% \changes{v0.87}{2020/06/03}{\ 2020/06/03}
+% \changes{v0.88}{2020/07/19}{\ 2020/07/19}
+% \changes{v0.89}{2020/09/03}{\ 2020/09/03}
+% \changes{v0.891}{2020/09/22}{\ 2020/09/22}
+% \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}
 
 
 
@@ -3074,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}
 %
@@ -3083,9 +3222,10 @@
 % The \pkg{lwarp} package converts \LaTeX\ to \HTML\ by using \LaTeX\ to process the 
 % user's document and directly generate \HTML\ tags.  External utility programs are only 
 % used for the final conversion of text and images.  Math may be represented 
-% by \SVG\ images or \brand{MathJax}.  Hundreds of \LaTeX\ packages are supported,
-% including dozens with \brand{MathJax} emulation.
-% 
+% by \SVG\ images or \brand{MathJax}.
+% More than 500 \LaTeX\ packages and classes are supported,
+% of which more than 90 also support \brand{MathJax}.
+%
 % Documents may be produced by \DVI\ or \PDF\ \LaTeX, Lua\LaTeX, \XeLaTeX;
 % by several CJK engines, classes, and packages;
 % or by customized systems such as \pkg{perltex} and \pkg{pythontex}.
@@ -3273,11 +3413,261 @@
 %
 % \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
+%       \margintag{\brand{MathJax}}
+%           select math expressions while using \brand{MathJax}.
+%       \item Accept and ignore a star for \cs{hspace}.
+%       \item Ignores \cs{arabic}, \cs{number}, \cs{noalign}.
+%       \item Added \brand{MathJax} emulation for \pkg{backnaur},
+%               \pkg{colortbl}, \pkg{nicematrix}.
+%       \margintag{packages}
+%       \item \pkg{booktabs}: \brand{MathJax} emulation now absorbs and discards trim.
+%       \item \pkg{menukeys}: Updated to v1.6.1.
+%   \end{itemize}
+% \needspace{2\baselineskip}
+% \item[v0.893:] Minor fixes, more packages.
+%   \begin{itemize}
+%       \item Added \brand{MathJax} emulation for \cs{mathnormal}.
+%       \margintag{\brand{MathJax}}
+%       \item Fixed \pkg{pstricks} \env{pspicture*}.
+%       \margintag{packages}
+%       \item Fixed \pkg{tikz} font macros.
+%       \item \pkg{braket}: Now uses the \brand{MathJax} extension.
+%       \item Added \pkg{esvect}, \pkg{fixmath}, \pkg{keystroke}, \pkg{mathastext},
+%           \pkg{menukeys}, \pkg{picinpar}, \pkg{plimsoll}, \pkg{repltext},
+%           \pkg{selectp}, \pkg{seqsplit}, \pkg{simplebnf}, \pkg{statistics},
+%           \pkg{swfigure}.
+%       \item Added \brand{MathJax} emulation for \pkg{mathspec}.
+%       \item Verified to work as-is for \pkg{apxproof}, \pkg{syntaxdi}, \pkg{venndiagram}.
+%   \end{itemize}
+% \needspace{2\baselineskip}
+% \item[v0.892:] \pkg{minted}, \pkg{fvextra}, \brand{MathJax} \cs{left} \Slash \cs{right}.
+%   \begin{itemize}
+%       \item \pkg{fourier}, \pkg{libertinust1math}, \pkg{newpxmath}, \pkg{newtxmath},
+%       \margintag{\brand{MathJax}}
+%           \pkg{newtxsf}, \pkg{unicode-math}: Added \brand{MathJax}
+%           \cs{left} \Slash \cs{right} support for additional delimiters.
+%       \item \pkg{textpos}: Updated to v1.10.
+%       \margintag{packages}
+%       \item \pkg{xcolor}: Fixed optional args for \cs{fcolorbox} and related.
+%       \item Added \pkg{fvextra}, \pkg{minted}.
+%   \end{itemize}
+% \needspace{2\baselineskip}
+% \item[v0.891:] \brand{MathJax} additions and improvements.
+%   \begin{itemize}
+%   \item Now displays inline \cs{verb} text as \cs{texttt}.
+%       \margintag{core}
+%   \item Fixed \pkg{alltt} and verbatims with \LaTeX\ lists.
+%   \item Now generates an error if nested each of \env{warpHTML}, \env{warpprint}, \env{warpMathJax}
+%       inside itself.
+%   \item Added \brand{MathJax} \prog{textmacros} extension, allowing
+%       \margintag{\brand{MathJax}}
+%       formatting inside \cs{text}.
+%   \item \pkg{biblatex}, \pkg{hyperref}: Added back page references.
+%       \margintag{packages}
+%   \item \pkg{fancyvrb}: Fixed \env{BVerbatim} with a label.
+%   \item \pkg{listings}: Fixed \brand{MathJax} with captions, improved \HTML\ sanitation.
+%   \item \pkg{babel-french}: Fixed \cs{texorpdfstring} conflict.
+%   \item Now honors Greek package options for \pkg{mathdesign},
+%           \pkg{mathpazo}, \pkg{mathptmx},
+%           \pkg{newpxmath}, \pkg{newtxmath}.
+%   \item Improved \brand{MathJax} for \pkg{colonequals}, \pkg{mathdesign},
+%           \pkg{mathdots}, \pkg{mathfixs}, \pkg{mathtools}, \pkg{multiobjective},
+%           \pkg{nicefrac}, \pkg{shuffle}, \pkg{units}.
+%   \item \pkg{unicode-math}: Added Greek macros, as well as macros for
+%           the first several categories listed in \cmds{texdoc unimath-symbols}.
+%           Improved symbol shape macros with Greek.  Improved documentation.
+%   \item Added \pkg{bussproofs}, \pkg{cmbright}, \pkg{fourier},
+%           \pkg{kpfonts}, \pkg{kpfonts-otf},
+%           \pkg{libertinust1math}, \pkg{scalerel}, \pkg{txgreeks}.
+%   \end{itemize}
+% \needspace{2\baselineskip}
+% \item[v0.89:] Additional \brand{MathJax} support.
+%   \begin{itemize}
+%   \item Adapted to upcoming \LaTeX\ kernel changes.
+%       \margintag{core}
+%   \item Allows load of \pkg{amsmath} before \pkg{lwarp}.
+%   \item Also removes \filenm{*.bbl} when cleaning aux files.\margintag{\prog{lwarpmk}}
+%   \item \brand{MathJax}: Neutralized \cs{protect}, \cs{mathcode} and related,
+%       \margintag{\brand{MathJax}}
+%       ligatures.  Fixed nested environments.
+%   \item \pkg{caption}: Updated for v3.5, fix for label sep.
+%       \margintag{packages}
+%   \item \pkg{thmtools}: Updated for v0.72.  Fixed \optn{swapnumber}, \optn{margin}.
+%   \item Improved \brand{MathJax} for \pkg{centernot}, \pkg{mathtools},
+%       \pkg{mismath}, \pkg{SIunits}, \pkg{siunitx}, \pkg{statmath}.
+%   \item Added \brand{MathJax} emulation for \pkg{accents}, \pkg{hepunits},
+%       \pkg{hhtensor}, \pkg{mathalpha}, \pkg{mathdesign},
+%       \pkg{mathpazo}, \pkg{mathptmx},
+%       \pkg{mleftright}, \pkg{newpxmath}, \pkg{newtxmath}, \pkg{newtxsf},
+%       \pkg{pxfonts}, \pkg{shuffle}, \pkg{txfonts},
+%       \pkg{upgreek}, \pkg{ushort}.
+%   \item Verified to work as-is: \pkg{authoraftertitle}.
+%   \end{itemize}
+% \needspace{2\baselineskip}
+% \item[v0.88:] Indexing, boxing, theorems.
+%   \begin{itemize}
+%   \item \textgreen{Now has programmed support for more than 500 packages and classes,
+%       of which more than 60 also support \brand{MathJax}.}
+%   \item Fixed: \cs{ref*}, and also added \brand{MathJax} emulation.
+%       \margintag{core}
+%   \item If starting a new paragraph, \cs{hrulefill} creates a
+%       \element{div} with a thin horizontal line across the page.
+%       Use instead of \cs{hrule}.
+%   \item Fixed: Use \cs{chaptername} where appropriate.
+%   \item Fixed: Inline links causing extraneous paragraphs.
+%   \item Added \cmds{lwarpmk -v} to print the version number.
+%       \margintag{\prog{lwarpmk}}
+%   \item Added the \optn{IndexRef} option to control the display of index entries.
+%       \margintag{indexing}
+%       See \cref{sec:optionindexref}.
+%   \item Added \cs{IndexPageSeparator} and \cs{IndexRangeSeparator} for custom index styles.
+%   \item Added support for \pkg{gindex}, \prog{xindex}.
+%   \item Verified to work as-is with \pkg{varindex}.
+%   \item \pkg{cleveref}, \pkg{varioref}: Fix for starred macros.
+%       \margintag{packages}
+%   \item \pkg{varioref}: Removed page-related text from \HTML\ output.
+%   \item \pkg{xfakebold}: Updated to v0.08, using \pkg{pdfrender}.
+%   \item \pkg{caption}, \pkg{scrextend}: Fixed \cs{caption*}.
+%   \item Added \pkg{fbox}, \pkg{shadethm}, \pkg{tcolorbox}, \pkg{termcal},
+%           \pkg{thmbox}, \pkg{thmtools}.
+%   \end{itemize}
+% \needspace{2\baselineskip}
+% \item[v0.87:] \brand{MathJax}, bibliography packages.
+%   \begin{itemize}
+%   \item Added boolean \bool{FixSmallCaps} for fonts which render small caps as
+%       \margintag{core}
+%       all caps.
+%   \item Fixed \cs{bibliography} to use the \HTML\ version's \filenm{.bbl} file.
+%       Previously the \HTML\ bibliography relied on the print version's \filenm{.bbl},
+%       thus would fail if the print document had not yet been created.
+%   \item Added \cs{ifstar} and \cs{ifnextchar} to \brand{MathJax}, and
+%       \margintag{\brand{MathJax}}
+%       removed \cs{DeclareIfstar}.
+%       \watchout[Removed \cs{DeclareIfstar}]
+%       See \cref{sec:limitscustomizemathjax}.
+%   \item \pkg{physics}: Now supports the \brand{MathJax} v3 extension.
+%       \margintag{packages}
+%   \item \pkg{mathtools}: Improved \cs{underbrakcet}, \cs{overbracket} for \brand{MathJax}.
+%   \item \pkg{nccmath}: Improved \cs{underrel} for \brand{MathJax}.
+%   \item \pkg{mhchem}: Now supports the \brand{MathJax} v3 extension for \cs{ce} inside math.
+%   \item \pkg{cancel}: Now supports the \brand{MathJax} v3 extension.
+%   \item \pkg{embrac}: Neutralized kerning for improved \HTML\ conversion.
+%   \item Added \pkg{citeref}, \pkg{drftcite}, \pkg{jurabib}, \pkg{multibib}, \pkg{splitbib}.
+%   \item Verified to work as-is with \pkg{bibtopic}, \pkg{collref}, \pkg{mciteplus}.
+%   \end{itemize}
+% \needspace{2\baselineskip}
+% \item[v0.86:] \brand{MathJax} major updates.
+%   \begin{itemize}
+%   \item Fixed: Filename if named files with \filenm{*}, parens, period in section name.
+%       \margintag{core}
+%   \item Fixed: Labels in \env{eqnarray}, \env{lateximage}.
+%   \item Updated to \brand{MathJax} v3.  New repository.
+%       \margintag{\brand{MathJax}}
+%   \item Fixed forward references for \brand{MathJax}.
+%   \item Improved \brand{MathJax} equation number formatting, now compatible with
+%       \pkg{amsmath} \cs{numberwithin} for chapters, sections, subsections,
+%       as well as \pkg{amsmath} \env{subequation}s.
+%       See \cref{sec:limitscustomizemathjax}.
+%   \item Added \cs{DeclareIfstar} to define starred \TeX\ macros in \brand{MathJax}.
+%       See \cref{sec:limitscustomizemathjax}.
+%   \item Generates an error if \cs{MathJaxFilename} file does not exist.
+%   \item \pkg{mathtools}, \pkg{nccmath}, \pkg{physics}:
+%       \margintag{packages}
+%       Added starred macros for \brand{MathJax}.
+%   \item \pkg{nccmath}: Fixed \cs{nr}, \cs{displaybreak} for \brand{MathJax}.
+%   \item \pkg{xcolor}: Fixed \cs{textcolor} with \pkg{babel-french}.
+%   \end{itemize}
+% \needspace{2\baselineskip}
+% \item[v0.85:] \pkg{fontspec}
+%   \begin{itemize}
+%   \item \pkg{fontspec}: Fixed core font change macros for world languages.
+%       \margintag{packages}
+%   \item \pkg{acro}: Due to v3 changes, when defining acronym formats,
+%       \watchout[\pkg{acro} formats]
+%       use \cs{textbf} instead of \cs{bfseries}, etc.
+%   \item Fixed \pkg{idxlayout}, \pkg{mathtools}, \pkg{titlesec}, \pkg{url}.
+%   \end{itemize}
+% \needspace{2\baselineskip}
+% \item[v0.84:] Previous/next page links, numerous fixes.
+%   \begin{itemize}
+%   \item Added documentation of \env{BlockClass} and \cs{InlineClass}
+%       for \CSS\ \element{div}s and \element{span}s.
+%       \margintag{docs}
+%       See \cref{sec:classstyle}.
+%   \item Added \cs{LinkPrevious}, \cs{LinkNext} page links.
+%       See \cref{sec:htmlsettings}.
+%   \item Added \cs{FirstPageBottom}.
+%       \watchout[home page footer changed]
+%       Home page no longer shares \cs{PageBottom}.
+%       See \cref{sec:htmlsettings}.
+%   \item Improved coexistence with \pkg{comment}, support for nested environments.
+%       \margintag{core}
+%   \item No longer requires but still supports the \pkg{caption} package.
+%   \item Improved filenames and \HTML\ titles when using special characters.
+%   \item Change: Append \filenm{-0} to section named Index
+%       \watchout{previously \_index}
+%       to distinguish from \filenm{index.html}
+%   \item Fixed style tags for \cs{multicolumn}, \cs{multirow}.
+%   \item Fixed spacing in \env{tabbing}.
+%   \item Fixed \env{lateximage} for: \env{quote}, \env{quotation}, \env{verse},
+%               \env{center}, \env{flushleft}, \env{flushright},
+%               \element{par} tags, packages \pkg{verbatim}, \pkg{alltt}, \pkg{epigraph}.
+%   \item Fixed \pkg{textcomp} due to integration into \LaTeX\ kernel.
+%   \item Fixed \cs{itshape}, etc.  Adapted to \LaTeX\ \pkg{fontaxes} integration.
+%   \item Fixed \cs{@fnsymbol}.
+%   \item Warns about section names with dollar-delimited math.
+%   \item Warns about a \element{span} containing a float, caption, section,
+%               \pkg{mdframed}, or other \element{div} object.
+%   \item Only warn about \XeTeX\ logo and \pkg{graphics} if actually used \cs{Xe}.
+%   \item \cmds{lwarpmk clean} also removes \filenm{comment_*.cut}.
+%       \margintag{\prog{lwarpmk}}
+%   \item \pkg{scrextend}, \pkg{scrartcl}, \pkg{scrbook}: Added \cs{titlehead},
+%       \margintag{packages}
+%       \cs{subject}, \cs{subtitle}, \cs{publishers}.
+%   \item \pkg{titling}: Fixed \cs{printthanks}.
+%   \item \pkg{memoir}, \pkg{abstract}: Fixed for updated \pkg{memoir}.
+%   \item \pkg{memoir}: Fixed \cs{newcomment}, pagenotes, crossreferences.
+%               Fixed setting a recursive name.
+%   \item Fixed or improved: \pkg{amsthm}, \pkg{backref}, \pkg{biblatex}, \pkg{fixme},
+%               \pkg{nfssext-cfr}, \pkg{ntheorem}, \pkg{parcolumns},
+%               \pkg{realscripts}, \pkg{rotfloat}, \pkg{titling}.
+%   \item Added \pkg{boxedminipage}, renamed from \pkg{boxedminipage2e} per author.
+%   \item Verified to work as-is with \pkg{mcite}.
+%   \end{itemize}
+% \needspace{2\baselineskip}
 % \item[v0.83:] \pkg{memoir} fixes.
 %   \begin{itemize}
-%   \item \pkg{memoir}: Various fixes and updates, but subcaption labels
+%   \item \pkg{memoir}: Various fixes and updates.
 %       \margintag{packages}
-%       still need work.  (Out of time\dots)
 %   \item \pkg{physunits}: Updated to v1.0.4.
 %   \end{itemize}
 % \needspace{2\baselineskip}
@@ -3447,7 +3837,7 @@
 %       \cmidrule(r){1-1}\cmidrule(l){2-2}
 %       (hard coded as ``image'') & \cs{ImageAltText} \\
 %       \cs{mathimagename} & \cs{MathImageAltText} \\
-%       \cs{pacakgediagramname} & \cs{PackageDiagramAltText} \\
+%       \cs{packagediagramname} & \cs{PackageDiagramAltText} \\
 %       \end{tabular}
 %       \end{center}
 %   \item Added \cs{ImageAltText} for the default \HTML\ \attribute{alt} text for
@@ -3808,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}.
@@ -3890,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}
@@ -3958,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}
@@ -3968,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]
@@ -4135,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}.
@@ -4169,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.
@@ -4197,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}
@@ -4274,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}
@@ -4296,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
@@ -4969,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),
@@ -5074,7 +5464,7 @@
 % Package names are colored according to their support level:
 % \begin{description}
 %   \item[\spkg{name}:] Supported as-is.
-%   \item[\mpkg{name}:] Modifed to work with \HTML\ output, and also
+%   \item[\mpkg{name}:] Modifed to work with \HTML\ output, and perhaps also
 %       as print output in \SVG\ math or \env{lateximage} environments.
 %   \item[\epkg{name}:] Emulated for \HTML\ output.
 %   \item[\ipkg{name}:] Ignored for \HTML\ output, but provides source-level compatibility.
@@ -5081,6 +5471,7 @@
 %   \item[\sjax:] Supported as-is for \brand{MathJax}, subject to limitations.
 %   \item[\ejax:] Emulated for \brand{MathJax} using custom macros, subject to limitations.
 %   \item[\ijax:] Ignored by \brand{MathJax}, but may be used in the document source.
+%                   May be converted to \SVG\ images.
 % \end{description}
 %
 % \renewcommand{\arraystretch}{1.5}
@@ -5119,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},
@@ -5159,7 +5550,7 @@
 %       \ipkg{pagegrid}, \ipkg{pagesel}, \epkg{parallel}, \epkg{parcolumns},
 %       \ipkg{pdfcolparallel}, \ipkg{pdfcolparcolumns}, \ipkg{pdfcrypt}, \ipkg{pdfprivacy},
 %       \ipkg{preview}, \epkg{ragged2e}, \ipkg{returntogrid}, \ipkg{rmpage},
-%       \epkg{scrlayer-scrpage}, \epkg{scrpage2}, \epkg{setspace},
+%       \epkg{scrlayer-scrpage}, \epkg{scrpage2}, \epkg{setspace}, \ipkg{selectp},
 %       \ipkg{textarea}, \ipkg{threadcol},
 %       \ipkg{thumb}, \ipkg{thumbs}, \ipkg{titleps}, \ipkg{tocenter},
 %       \ipkg{turnthepage}, \ipkg{twoup}, \ipkg{typearea},
@@ -5184,21 +5575,28 @@
 %	\ipkg{tocbasic}, \mpkg{tocbibind}, \mpkg{tocdata},
 %   \ipkg{tocloft}, \ipkg{tocstyle}, \spkg{tocvsec2}. \\
 %
-% Title page: & \cs{maketitle}, \env{titlepage}, \mpkg{authblk}, \mpkg{titling}. \\
+% Title page: & \cs{maketitle}, \env{titlepage}, \mpkg{authblk},
+%       \spkg{authoraftertitle}, \mpkg{titling}. \\
 %
 % Front \&\ back matter: & \mpkg{abstract}, \mpkg{appendix}. \\
 %
-% Indexing: & \prog{makeindex} and \prog{xindy} are supported, with hyperlinks.
+% Indexing: & \prog{makeindex}, \prog{xindy}, and \prog{xindex} are supported,
+%   with hyperlinks.
 %
-%   \spkg{hvindex}, \epkg{idxlayout}, \mpkg{imakeidx}, \epkg{index}, \mpkg{makeidx},
-%   \epkg{repeatindex}, \mpkg{splitidx}.
+%   \smallskip
+%
+%   \mpkg{gindex}, \spkg{hvindex}, \epkg{idxlayout}, \mpkg{imakeidx},
+%   \epkg{index}, \mpkg{makeidx},
+%   \epkg{repeatindex}, \mpkg{splitidx}, \spkg{varindex}, \spkg{xindex}.
 %   \\
 %
 % Glossary: & \mpkg{gloss}, \mpkg{glossaries} and \prog{xindy}, \mpkg{nomencl}.\\
 %
-% Bibliography: & \spkg{babelbib}, \mpkg{backref}, \mpkg{biblatex}, \mpkg{bibunits},
-%   \mpkg{chapterbib}, \mpkg{cite}, \ipkg{hypernat}, \mpkg{natbib},
-%   \spkg{notes2bib}, \ipkg{showtags}.
+% Bibliography: & \spkg{babelbib}, \spkg{bibtopic}, \mpkg{backref},
+%   \mpkg{biblatex}, \mpkg{bibunits},
+%   \mpkg{chapterbib}, \mpkg{cite}, \mpkg{citeref}, \spkg{collref}, \mpkg{drftcite},
+%   \ipkg{hypernat}, \mpkg{jurabib}, \spkg{mcite}, \spkg{mciteplus}, \mpkg{multibib},
+%   \mpkg{natbib}, \spkg{notes2bib}, \mpkg{splitbib}, \ipkg{showtags}.
 %
 %   \\
 %
@@ -5205,10 +5603,10 @@
 % \midrule
 %
 % Cross-references: & 
-%   \ipkg{bookmark}, \epkg{breakurl}, \spkg{cleveref}, \epkg{fancyref},
+%   \ipkg{bookmark}, \epkg{breakurl}, \spkg{cleveref}, \mpkg{fancyref},
 %   \ipkg{hypdestopt}, \epkg{hyperref}, \epkg{perpage}, \mpkg{prettyref},
-%   \epkg{titleref}, \mpkg{url}, \spkg{varioref}, \spkg{xcite},
-%   \mpkg{xr}, \mpkg{xr-hyper}, \ipkg{xurl}. \\
+%   \epkg{titleref}, \mpkg{url}, \mpkg{varioref}, \spkg{xcite},
+%   \mpkg{xr}, \mpkg{xr-hyper}, \ipkg{xurl}, \spkg{zref}. \\
 %
 % \midrule
 %
@@ -5237,25 +5635,42 @@
 % 	due to native \LaTeX\ processing.\\
 %
 % Theorems: & Native \LaTeX\ theorems,
-%	\mpkg{amsthm}, \mpkg{ntheorem}, \mpkg{theorem}. \\
+%	\mpkg{amsthm}, \spkg{apxproof}, \mpkg{ntheorem}, \mpkg{shadethm},
+%   \mpkg{theorem}, \mpkg{thmbox}, \mpkg{thmtools}. \\
 %
 % Additional math: & Math fonts via \SVG\ images,
-%   \spkg{amscd}, \spkg{autobreak}\ejax, \ipkg{autonum},
-%   \mpkg{backnaur}, \mpkg{bm}\ejax, \spkg{braket}\ejax,
-%   \mpkg{breqn}, \mpkg{cases}, \spkg{centernot}\ejax, \spkg{colonequals}\ejax,
-%   \spkg{decimal}\ejax,
+%   \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,
+%   \spkg{colonequals}\ejax, \spkg{decimal}\ejax,
 %   \spkg{delarray}, \mpkg{DotArrow}\ejax, \spkg{dotlessi}\ejax, \spkg{dotlessj}\sjax,
-%   \spkg{extarrows}\ejax, \spkg{fouridx}\ejax,
-%   \spkg{guass}, \spkg{icomma}\ijax, \spkg{jkmath},
-%   \spkg{leftidx}\ejax, \spkg{mathcomp}\ejax, \spkg{mathdots}\ejax,
-%   \spkg{mathfixs}\ejax, \spkg{mathpunctspace}\ijax,
-%   \spkg{mathspec}, \mpkg{mathtools}\ejax, \mpkg{mismath}\ejax,
+%   \spkg{esvect}\ejax, \spkg{extarrows}\ejax, \spkg{fixmath}\ejax,
+%   \spkg{fouridx}\ejax, \spkg{fourier}\ejax,
+%   \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{mathpazo}\ejax, \spkg{mathptmx}\ejax,
+%   \spkg{mathpunctspace}\ijax,
+%   \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}, \spkg{noitcrul}\ejax, \spkg{pb-diagram},
-%   \ipkg{resizegather}, \spkg{rmathbr}\ejax, \spkg{stackrel}\ejax,
-%   \mpkg{statex2}\ejax, \spkg{statmath}\ejax,
-%   \spkg{subsupscripts}\ejax, \spkg{textualicomma}\ijax,
-%   \spkg{unicode-math}\ejax, \mpkg{witharrows}\ejax,
+%   \spkg{nicematrix}\ejax, \spkg{noitcrul}\ejax,
+%   \spkg{newpxmath}\ejax, \spkg{newtxmath}\ejax, \spkg{newtxsf}\ejax,
+%   \spkg{pb-diagram},
+%   \spkg{pxfonts}\ejax,
+%   \ipkg{resizegather}\ijax, \spkg{rmathbr}\ejax, \spkg{scalerel}\ejax,
+%   \epkg{shuffle}\ejax, \spkg{skmath}\ejax, \spkg{stackrel}\ejax,
+%   \mpkg{statex2}\ejax, \mpkg{statistics}, \spkg{statmath}\ejax,
+%   \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,
 %   \mpkg{xfakebold}\ejax, \mpkg{xy}.
 %   Many others work as-is. \\
 %
@@ -5276,8 +5691,9 @@
 %   \ipkg{fix2col}, \ipkg{flafter},
 %   \epkg{float}, \epkg{floatflt}, \epkg{floatrow}, \ipkg{fltrace}, \ipkg{ftcap},
 %   \ipkg{hypcap}, \mpkg{keyfloat}, \ipkg{morefloats}, \ipkg{multicap}, \spkg{newfloat},
-%   \epkg{nonfloat}, \ipkg{placeins}, \epkg{rotfloat}, \ipkg{stfloats},
+%   \epkg{nonfloat}, \mpkg{picinpar}, \ipkg{placeins}, \epkg{rotfloat}, \ipkg{stfloats},
 %   \mpkg{subcaption}, \mpkg{subfig}, \epkg{subfigure}, \spkg{subfloat},
+%   \epkg{swfigure},
 %   \epkg{topcapt}, \epkg{trivfloat}, \epkg{wrapfig}. \\
 %
 % \midrule
@@ -5285,7 +5701,7 @@
 % Tabular: &
 %   \env{tabular} environment, \mpkg{array}\ejax, \epkg{arydshln}\ejax,
 %   \mpkg{bigdelim}\ejax, \mpkg{bigstrut}\ejax, \mpkg{booktabs}\ejax,
-%   \mpkg{colortbl}, \mpkg{ctable}, \mpkg{diagbox}, \mpkg{hhline}\ejax, \epkg{longtable},
+%   \mpkg{colortbl}\ijax, \mpkg{ctable}, \mpkg{diagbox}, \mpkg{hhline}\ejax, \epkg{longtable},
 %   \epkg{ltablex}, \epkg{ltxtable},
 %   \mpkg{multirow}\ejax, \epkg{supertabular}, \epkg{tabularx}, \epkg{tabulary},
 %   \epkg{threeparttable}, \mpkg{threeparttablex},
@@ -5299,16 +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{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
 %
@@ -5337,10 +5757,11 @@
 %   \mpkg{quoting}, \mpkg{verse}. \\
 %
 % Verbatim: &
-%   \mpkg{fancyvrb}, \mpkg{moreverb}, \spkg{shortvrb}, \mpkg{verbatim}. \\
+%   \mpkg{fancyvrb}, \mpkg{fvextra}, \mpkg{moreverb}, \spkg{shortvrb}, \mpkg{verbatim}. \\
 %
-% Frames: & \mpkg{boxedminipage2e}, \mpkg{fancybox}, \mpkg{framed}, \mpkg{mdframed},
-%   \epkg{niceframe}, \epkg{shadow}, \epkg{vertbars}. \\
+% Frames: & \mpkg{boxedminipage}, \mpkg{boxedminipage2e},
+%   \mpkg{fancybox}, \mpkg{fbox}\ejax, \mpkg{framed}, \mpkg{mdframed},
+%   \epkg{niceframe}, \epkg{shadow}, \mpkg{tcolorbox}\ejax, \epkg{vertbars}. \\
 %
 % Multi-columns: & \epkg{adjmulticol}, \epkg{multicol},
 %   \ipkg{multicolrule}, \mpkg{vwcol}. \\
@@ -5354,13 +5775,14 @@
 % Direct formatting: & \cs{emph}, \cs{textsuperscript},
 % 	\cs{textbf}, etc are supported.
 % 	\cs{bfseries}, etc.\ are only supported in some cases.
-%   \mpkg{cancel}, \epkg{ellipsis}, \mpkg{embrac}, \spkg{enparen},
+%   \mpkg{cancel}\sjax, \epkg{ellipsis}, \mpkg{embrac}, \spkg{enparen},
 %   \ipkg{hyphenat}, \epkg{lettrine}, \epkg{lips},
-%   \ipkg{lua-check-hyphen}, \ipkg{luacolor}, \epkg{magaz}, \epkg{nolbreaks},
-%   \ipkg{normalcolor},
+%   \ipkg{lua-check-hyphen}, \ipkg{luacolor}, \epkg{magaz}, \ipkg{moresize},
+%   \epkg{nolbreaks}, \ipkg{normalcolor},
 %   \ipkg{pdfcol}, \ipkg{pdfcolmk},
-%   \ipkg{pdfrender}, \epkg{realscripts}, \mpkg{relsize}\ejax,
-%   \ipkg{scalefnt}, \epkg{soul}, \epkg{soulpos}, \epkg{soulutf8}, \mpkg{stackengine},
+%   \ipkg{pdfrender}, \mpkg{realscripts}, \mpkg{relsize}\ejax,
+%   \ipkg{scalefnt}, \mpkg{seqsplit}\ejax, \epkg{soul}, \epkg{soulpos},
+%   \epkg{soulutf8}, \mpkg{stackengine},
 %   \epkg{textfit}, \epkg{thinsp}, \ipkg{trimclip}, \ipkg{truncate},
 %   \mpkg{ulem}, \mpkg{umoline}, \ipkg{underscore}, \ipkg{uspace},
 %   \mpkg{xellipsis}. \\
@@ -5389,15 +5811,26 @@
 %   Appear in \SVG\ math expressions or embedded image environments.
 %   \mpkg{fontaxes}, \mpkg{nfssext-cfr}, \mpkg{slantsc}, \ipkg{tabfigures}.
 %
+%   \smallskip
+%
 %   Tested to work as-is: Special font macros in \spkg{cfr-lm} and others
-%   which use \spkg{nfssext-cfr}. \\
+%   which use \spkg{nfssext-cfr}.
 %
-% Symbols: & Native \LaTeX\ diacriticals, \mpkg{academicons}, \mpkg{bbding},
+%   \smallskip
+%
+%   Also see the math section for math and \brand{MathJax} support for math font packages. \\
+%
+% Symbols: & Native \LaTeX\ diacriticals, \mpkg{academicons}, \spkg{amssymb}\sjax,
+%   \mpkg{bbding},
 %   \mpkg{chemgreek}, \mpkg{dingbat}, \spkg{euro}, \mpkg{eurosym},
-%   \mpkg{fontawesome}, \mpkg{fontawesome5}, \spkg{gensymb}\ejax, \mpkg{marvosym},
-%   \spkg{mathcomp}\ejax, \mpkg{metalogo}, \mpkg{metalogox},
-%   \mpkg{pifont}, \spkg{textalpha},
-%   \mpkg{textcomp}, \spkg{textgreek}, \mpkg{typicons}, \mpkg{xunicode}.
+%   \mpkg{fontawesome}, \mpkg{fontawesome5}, \spkg{gensymb}\ejax, \spkg{latexsym}\sjax,
+%   \mpkg{marvosym},
+%   \mpkg{metalogo}, \mpkg{metalogox},
+%   \mpkg{pifont},
+%   \spkg{textalpha},
+%   \mpkg{textcomp}, \spkg{textgreek},
+%   \mpkg{typicons},
+%   \mpkg{xunicode}.
 %   \\
 %
 % \midrule
@@ -5417,12 +5850,17 @@
 %   \mpkg{chemmacros}, \mpkg{chemnum},
 %   \spkg{circuitikz}, \spkg{econometrics}\ejax, \spkg{elements},
 %   \mpkg{engtlc}\ejax, \spkg{fast-diagram}, \mpkg{ghsystem},
-%   \spkg{hepnicenames}, \spkg{heppennames}, \spkg{karnaughmap}, \mpkg{karnaugh-map},
-%   \mpkg{listings}, \spkg{linop}, \mpkg{mhchem}\sjax, \spkg{pgfgantt},
-%   \mpkg{phfqit}, \spkg{physics}\ejax, \spkg{physunits}\ejax, \spkg{qcircuit},
-%   \mpkg{register}, \spkg{simpler-wick},
-%   \spkg{slashed}\ejax, \mpkg{steinmetz}\ejax, \spkg{structmech}, \mpkg{struktex}.
-%   \spkg{tikz-karnaugh}, \spkg{tikzcodeblocks} \\
+%   \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},
+%   \mpkg{phfqit}, \spkg{physics}\sjax, \spkg{physunits}\ejax,
+%   \spkg{plimsoll}\ejax, \spkg{qcircuit},
+%   \mpkg{register}, \mpkg{simplebnf}, \spkg{simpler-wick},
+%   \spkg{slashed}\ejax, \mpkg{steinmetz}\ejax, \spkg{structmech}, \mpkg{struktex},
+%   \spkg{syntaxdi},
+%   \spkg{tikz-karnaugh}, \spkg{tikzcodeblocks}, \spkg{venndiagram} \\
 %
 % \midrule
 %
@@ -5434,6 +5872,10 @@
 %
 % \midrule
 %
+% Calendars: & \mpkg{termcal} \\
+%
+% \midrule
+%
 % Admonitions: & \epkg{awesomebox}, \epkg{notes}. \\
 %
 % Editorial: & \ipkg{changebar}, \spkg{changelog}, \mpkg{changes},
@@ -5447,7 +5889,7 @@
 %
 % Accessibility: & \epkg{accessibility}\ijax, \ipkg{accsupp}\ijax,
 %   \ipkg{axessibility}\ijax,
-%   \ipkg{pdfcomment}\ijax, \ipkg{tagpdf}. \\
+%   \ipkg{pdfcomment}\ijax, \ipkg{repltext}\ijax, \ipkg{tagpdf}. \\
 %
 % \midrule
 %
@@ -6091,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,
@@ -6211,10 +6653,10 @@
 %
 % \item [|lwarp\_mathjax.txt|:] Inserted into the \HTML\ files when
 %	\brand{MathJax} is used to display math.
-%	This file should not be modified by the user.
+%	Do not modify, see \cs{MathJaxFilename} instead.
 %
-% \item [|comment.cut|:] A temporary file used by \pkg{lwarp} to
-%	conditionally process blocks of text.  This file may be ignored.
+% \item [|comment\_*.cut|:] Temporary files used by \pkg{lwarp} to
+%	conditionally process blocks of text.  These files may be ignored.
 % \end{description}
 %
 % \hrule \medskip
@@ -6586,7 +7028,7 @@
 %
 % The \filenm{<project>-images} directory contains \SVG\ images
 % automatically generated for inline and display math, \pkg{tikz}, etc.
-% To remove all the images from the \filenm{lateximages} directory:
+% To remove all the images from the \filenm{<project>-images} directory:
 %   \userentry{lwarpmk cleanlimages}
 %
 %
@@ -6783,9 +7225,12 @@
 % \gindex{sideTOC=side\TOC>name}
 % \gindex{settings>language}
 %
-% Regional localization is supported by \pkg{lwarp} via the following package options
-% and macros:
+% Regional localization is supported by \pkg{lwarp} via the package options
+% and macros shown in \cref{tab:localization}.
 %
+% \begin{table}
+% \caption{Localization settings}
+% \label{tab:localization}
 % \begin{description}
 % \item [Object names:] \LaTeX\ provides redefinable names for various objects,
 %       and \pkg{lwarp} adds a few more.  Use \cs{renewcommand} to change these.
@@ -6792,6 +7237,8 @@
 %   \begin{description}
 %       \item [\cs{abstractname}:] This macro is honored by \pkg{lwarp}.
 %       \item [\cs{linkhomename}:] Displayed by the link to the homepage.
+%       \item [\cs{linkpreviousname}:] Displayed by the link to the previous page
+%       \item [\cs{linknextname}:] Displayed by the link to the next page.
 %       \item [\cs{sidetocname}:] Displayed at the head of the side\TOC.
 %   \end{description}
 % \item [\HTML\ settings:] See \cref{tab:htmlsettings} and
@@ -6815,6 +7262,7 @@
 %       \item [\optn{pdftotextEnc}:] To adjust the encoding of \prog{pdftotext}.
 %   \end{description}
 % \end{description}
+% \end{table}
 %
 %
 % \subsection{Accessibility}
@@ -6838,8 +7286,11 @@
 % \HTML\ also provides the \attribute{title} attribute, which usually
 % generates a pop-up text.  \pkg{lwarp} can add this to a reference or hyperlink.
 % \brand{MathJax} also has provisions for improved accessibility
-% as well.
+% as well.  See \cref{tab:accessibility}.
 %
+% \begin{table}
+% \caption{Accessibiltiy settings}
+% \label{tab:accessibility}
 % \begin{description}
 % \item [\cs{ImageAltText}:] The default \HTML\ \attribute{alt} text
 %   for \cs{includegraphics} and \env{lateximage}s.
@@ -6897,6 +7348,7 @@
 %   This may be changed by redefining \cs{AltTextOpen} and \cs{AltTextClose}.
 %   Set with \cs{renewcommand}.
 % \end{description}
+% \end{table}
 %
 %
 %
@@ -6951,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.
 %
@@ -7062,10 +7514,9 @@
 % ^^A \gindex{ligatures}\gindex{font>ligatures}
 % \end{enumerate}
 % \end{itemize}
+% \item |\usepackage{newtxmath}| or other math-related font packages.
+%       Many of these load \pkg{amsmath}, which may now be loaded before \pkg{lwarp}.
 % \item |\usepackage{lwarp}| (\cref{sec:loading}) is placed after any of the above, followed by:
-% \item |\usepackage{newtxmath}| or other math-related font packages.
-%       Many of these load \pkg{amsmath}, which must be loaded after \pkg{lwarp},
-%       so they must also be loaded after \pkg{lwarp}.
 % \item |\setmonofont{TeX Gyre Cursor}| or similar may be required if using
 %       \trouble[\pkg{fontspec} with monospaced fonts]{font>monospace}
 %       \trouble{font>ligatures}
@@ -7077,6 +7528,23 @@
 %       with \pkg{fontspec} after loading the traditional font packages.
 %       Monospaced output ligatures must be turned off
 %       to produce the correct \HTML\ characters.
+%
+%       Any monospace font with built-in ligatures may require these ligatures to
+% \changes{v0.84}{2020/04/15}{Docs: \brand{JetBrain Mono} font.}
+%       be disabled for \HTML.  In one example, \brand{JetBrain Mono},
+%       \trouble[\brand{JetBrain Mono}]{font>JetBrain Mono=\brand{JetBrain Mono}}
+%       \trouble{jetbrain mono=\brand{JetBrain Mono}}
+%       \trouble[\HTML\ corrupted]{HTML>corrupted}
+%       \trouble{font>ligatures}
+%       it is required to use
+%       \begin{sourcedisplay}
+%       \cs{setmonofont}\{JetBrains Mono\}[\% \\
+%       \dots \\
+%       \textgreen{Contextuals=AlternateOff,} \\
+%       ]
+%       \end{sourcedisplay}
+%       After \pkg{lwarp} is loaded, the ligature may be re-enabled for print mode
+%       by using \cs{setmonofont} again inside a \env{warpprint} environment.
 % \item \ldots{} the rest of the preamble and the main document.
 % \end{enumerate}
 %
@@ -7089,19 +7557,14 @@
 % \gindex{UTF-8>index}
 % \gindex{index>UTF-8}
 %
-% \pkg{lwarp} uses the \prog{xindy} program to processes indexes.
-% \prog{xelatex} and \prog{lualatex} use \prog{xindy} and
-% \prog{pdflatex} uses \prog{texindy}.
+% \pkg{lwarp} supports \prog{makeindex}, \prog{xindy}, \prog{xindex},
+% and \pkg{glossaries}, \pkg{gloss}, and \pkg{nomencl}.
 %
-% The \pkg{lwarp} option \optn{xindyLanguage} may be used to set the language option
-% for \pkg{xindy}, and the \optn{xindyCodepage} option may be used to set the codepage
-% option for \pkg{xindy}.  These are used for
-% ^^A both
-% index
-% ^^A and glossary
-% generation.
+% See \cref{sec:indexingoverview} for indexing, and
+% \cref{sec:glossaries} for the \pkg{glossaries} package.
 %
 %
+%
 % \clearpage
 %
 % \subsection{\pkg{lwarp} package loading and options}
@@ -7109,7 +7572,7 @@
 % \gindex{settings>lwarp=\pkg{lwarp} package options}
 % 
 % \begin{table}
-% \caption{\pkg{lwarp} package options\label{tab:options}}
+% \caption{\pkg{Lwarp} package options\label{tab:options}}
 % \centering
 % \renewcommand{\arraystretch}{1.2}
 % \begin{tabular}{>{\ttfamily}lp{3.25in}}
@@ -7129,8 +7592,8 @@
 % \midrule
 % \multicolumn{2}{l}{\small For indexing (\cref{sec:indexsetup}) and glossaries (\cref{sec:glossaries}):} \\
 % makeindex & Use \prog{makeindex} to generate indices. \\
+% makeindexStyle & Set a custom style for \prog{makeindex}. \\
 % xindy & Use \prog{xindy} to generate indices. \\
-% makeindexStyle & Set a custom style for \prog{makeindex}. \\
 % xindyStyle & Set a custom style for \prog{xindy}. \\
 % xindyLanguage & The \prog{xindy} language option used for index
 % ^^A and glossary
@@ -7138,9 +7601,12 @@
 % xindyCodepage & The \prog{xindy} codepage option used for index
 % ^^A and glossary
 % generation. \\
+% xindex & Use \prog{xindex} to generate indices. \\
+% xindexConfig & Set a custom configuration file for \prog{xindex}. \\
 % PrintIndexCmd & Shell commands executed by \cmds{lwarpmk printindex}. \\
 % HTMLIndexCmd & Shell commands executed by \cmds{lwarpmk htmlindex}. \\
 % LatexmkIndexCmd & Shell commands executed by \prog{latexmk}. \\
+% IndexRef & How to format index links. \\
 % GlossaryCmd & Shell command executed by \cmds{lwarpmk printglossary} and \cmds{lwarpmk htmlglossary}. \\
 % \midrule
 % \multicolumn{2}{l}{\small Seldom necessary:} \\
@@ -7178,60 +7644,70 @@
 %
 % \begin{description}[itemsep=1\baselineskip]
 %
-% \item[\optn{mathsvg}, \optn{mathjax}:]
+% \item[\optn{mathsvg} \textmd{and} \optn{mathjax}:]
 % \DescribeOption{mathsvg}
 % \DescribeOption{mathjax}
+% \DescribeDefault{mathsvg}
+%   Selects \SVG\ images or \brand{MathJax} for math display.
+%   See \cref{sec:limitsmath}.
 % ^^A \DescribeOption{mathKaTeX}
 % ^^A For math display, select \optn{mathsvg} (default), \optn{mathjax},
 % ^^A or \optn{mathKaTeX}.
-% For math display, select \optn{mathsvg} (default) or \optn{mathjax}.
-% For more information about the math options, see \cref{sec:limitsmath}.
-%
 % 
-% \item[\optn{latexmk}:]
-% \DescribeOption{latexmk}
+% \ItemDescribeOption{latexmk}
 % \DescribeDefault{false} Tells \prog{lwarpmk} to use \prog{latexmk} to recompile the
 %   document several times if necessary.
 %   Otherwise, \prog{lwarpmk} attempts to determing for itself whether to recompile.
 %   See \cref{sec:htmlsettings}.
 %
-% \item[\optn{dvips}:]
-% \DescribeOption{dvips}
+% \ItemDescribeOption{dvips}
 % \DescribeDefault{false} Tells \prog{lwarpmk} to use \prog{dvips} and \prog{ps2pdf} to convert
 %   \DVI\ output to \PDF.
 %
-% \item[\optn{dvipdfm}:]
-% \DescribeOption{dvipdfm}
+% \ItemDescribeOption{dvipdfm}
 % \DescribeDefault{false} Tells \prog{lwarpmk} to use \prog{dvipdfm} to convert
 %   \DVI\ output to \PDF.
 %
-% \item[\optn{dvipdfmx}:]
-% \DescribeOption{dvipdfmx}
+% \ItemDescribeOption{dvipdfmx}
 % \DescribeDefault{false} Tells \prog{lwarpmk} to use \prog{dvipdfmx} to convert
 %   \DVI\ output to \PDF.
 %
 %
-% \item[\optn{HomeHTMLFilename}:]
-% \DescribeOption{HomeHTMLFilename}
-% \DescribeDefault{\{\}}
-% See \cref{sec:htmlsettings}.
+% \ItemDescribeOption{HomeHTMLFilename}
+% \DescribeDefault{\cs{BaseJobname}}
 %
+%   Filename of the homepage, without
+%   the ``\filenm{.html}'' suffix.
+%   Defaults to the \cs{BaseJobname}.  A common setting is:
+%   \begin{sourcedisplay}
+%   |HomeHTMLFilename=index|
+%   \end{sourcedisplay}
+%   causing the
+%   homepage to be the file |index.html|.  Underscores are allowed in
+%   \margintag{filename underscores}
+%   \optn{HomeHTMLFilename} and \optn{HTMLFilename} options, but may need to be escaped
+%   elsewhere, such as when appearing in a list:
+%   \gindex{underscore>filename}\gindex{filename>underscore in}
+%   \changes{v0.24}{2017/03/13}{Docs: Filename underscore.}
+%   \begin{sourcedisplay}
+%        \cs{item} [\cs{href}\{file\textred{\textbackslash\_}name.pdf\}\{text\}] \textbackslash
+%   \end{sourcedisplay}
+%   See \cref{sec:filenameexamples} for examples of naming and numbering \HTML\ files.
 %
-% \item[\optn{HTMLFilename}:]
-% \DescribeOption{HTMLFilename}
-% \DescribeDefault{\{\}}
-% See \cref{sec:htmlsettings}.
+% \ItemDescribeOption{HTMLFilename}
+% \DescribeDefault{<empty>}
+%   A filename prefix for the rest of the \HTML\ web pages.
+%   Useful for numbered web pages with a common prefix.  May be empty.
+%   See \cref{sec:filenameexamples} for examples of naming and numbering \HTML\ files.
 %
 %
-% \item[\optn{ImagesName}:]
-% \DescribeOption{ImagesName}
+% \ItemDescribeOption{ImagesName}
 % \DescribeDefault{image-}
 % The prefix for the images automatically generated by \pkg{lwarp}
 % for objects such as \SVG\ math and \env{lateximage}s.
 %
 %
-% \item[\optn{ImagesDirectory}:]
-% \DescribeOption{ImagesDirectory}
+% \ItemDescribeOption{ImagesDirectory}
 % \DescribeDefault{\cs{jobname}-images}
 % The directory for the images automatically generated by \pkg{lwarp}
 % for objects such as \SVG\ math and \env{lateximage}s.
@@ -7240,22 +7716,19 @@
 % \filenm{image-<nn>}.
 %
 %
-% \item[\optn{PrintLatexCmd}:]
-% \DescribeOption{PrintLatexCmd}
+% \ItemDescribeOption{PrintLatexCmd}
 % \DescribeDefault{<automatic>} Sets the shell commands executed by \cmds{lwarpmk print}.
 %   If not specified, will automatically be set according to the detected \LaTeX\ engine
 %   and the use of \optn{-\/-shell-escape}.
 %
 %
-% \item[\optn{HTMLLatexCmd}:]
-% \DescribeOption{HTMLLatexCmd}
+% \ItemDescribeOption{HTMLLatexCmd}
 % \DescribeDefault{<automatic>} Sets the shell commands executed by \cmds{lwarpmk html}.
 %   If not specified, will automatically be set according to the detected \LaTeX\ engine
 %   and the use of \optn{-\/-shell-escape}.
 %
 %
-% \item[\optn{makeindex}:]
-% \DescribeOption{makeindex}
+% \ItemDescribeOption{makeindex}
 % \DescribeDefault{makeindex} Sets \optn{PrintIndexCmd}, \optn{HTMLIndexCmd},
 %   and \optn{LatexmkImageCmd}
 %   to use \prog{makeindex} when generating indexes with
@@ -7263,8 +7736,13 @@
 %   If neither \optn{makeindex} nor \optn{xindy} is used, \optn{makeindex} is assumed.
 %
 %
-% \item[\optn{xindy}:]
-% \DescribeOption{xindy}
+% \ItemDescribeOption{makeindexStyle}
+% \DescribeDefault{lwarp.ist}
+%   If you wish to use a custom |.ist| file for
+%   index generation, see \cref{sec:modifymakeindex}.
+%
+%
+% \ItemDescribeOption{xindy}
 % \DescribeDefault{makeindex} Sets \optn{PrintIndexCmd}, \optn{HTMLIndexCmd},
 %   and \optn{LatexmkImageCmd}
 %   to use \prog{xindy} when generating indexes with
@@ -7271,35 +7749,37 @@
 %   \cmds{lwarpmk printindex}, \cmds{lwarpmk htmlindex}, or \prog{latexmk}.
 %
 %
-% \item[\optn{makeindexStyle}:]
-% \DescribeOption{makeindexStyle}
-% \DescribeDefault{lwarp.ist}
-%   If you wish to use a custom |.ist| file for
-%   index generation, see \cref{sec:packageoptions}.
-%
-%
-% \item[\optn{xindyStyle}:]
-% \DescribeOption{xindyStyle}
+% \ItemDescribeOption{xindyStyle}
 % \DescribeDefault{lwarp.xdy}
 %   If you wish to use a custom |.xdy| file for
-%   index generation, see \cref{sec:packageoptions}.
+%   index generation, see \cref{sec:modifyxindy}.
 %
 %
-% \item[\optn{xindyLanguage}:]
-% \DescribeOption{xindyLanguage}
+% \ItemDescribeOption{xindyLanguage}
 % \DescribeDefault{english} If using an index or glossary,
 %   see \cref{sec:packageoptions}.
 %
 %
-% \item[\optn{xindyCodepage}:]
-% \DescribeOption{xindyCodepage}
+% \ItemDescribeOption{xindyCodepage}
 % \DescribeDefault{utf8} If using an index,
 % ^^A or glossary,
 %   see \cref{sec:packageoptions}.
 %
 %
-% \item[\optn{PrintIndexCmd}:]
-% \DescribeOption{PrintIndexCmd}
+% \ItemDescribeOption{xindex}
+% \DescribeDefault{makeindex} Sets \optn{PrintIndexCmd}, \optn{HTMLIndexCmd},
+%   and \optn{LatexmkImageCmd}
+%   to use \prog{xindex} when generating indexes with
+%   \cmds{lwarpmk printindex}, \cmds{lwarpmk htmlindex}, or \prog{latexmk}.
+%
+%
+% \ItemDescribeOption{xindexConfig}
+% \DescribeDefault{<empty>}
+%   If you wish to use a custom |xindex-*.lua| file for
+%   index generation, see \cref{sec:modifyxindex}.
+%
+%
+% \ItemDescribeOption{PrintIndexCmd}
 % \DescribeDefault{<automatic>} Sets the shell commands executed by \cmds{lwarpmk printindex}.
 %   If not specified, will be set by the selection of \optn{makeindex} or
 %   \optn{xindy}.  May be used to specify the creation of multiple indexes.
@@ -7321,7 +7801,7 @@
 %
 % If specifying \optn{PrintIndexCmd} manually,
 % \trouble{PrintIndexCmd}
-% \trouble[xindy]{xindy=\pkg{xindy}>options>PrintIndexCmd=\optn{PrintIndexCmd}}
+% \trouble[xindy]{xindy=\prog{xindy}>options>PrintIndexCmd=\optn{PrintIndexCmd}}
 % be sure to assign an \prog{xindy}
 % language and codepage with the |-L| and |-C| \prog{xindy} options, as the
 % \pkg{lwarp} \optn{xindyLanguage} and \optn{xindyCodepage} options are not
@@ -7337,8 +7817,7 @@
 % with the \pkg{lwarp} \optn{PrintIndexCmd} option.
 %
 %
-% \item[\optn{HTMLIndexCmd}:]
-% \DescribeOption{HTMLIndexCmd}
+% \ItemDescribeOption{HTMLIndexCmd}
 % \DescribeDefault{<automatic>} Sets the shell commands executed by \cmds{lwarpmk htmlindex}.
 %   If not specified, will be set by the selection of \optn{makeindex} or
 %   \optn{xindy}.  May be used to specify the creation of multiple indexes.
@@ -7361,7 +7840,7 @@
 % \optn{xindyLanuage}, and \optn{xindyCodepage} options will be used if specified.
 %
 % If specifying \optn{HTMLIndexCmd} manually,
-% \trouble[xindy]{xindy=\pkg{xindy}>options>HTMLIndexCmd=\optn{HTMLIndexCmd}}
+% \trouble[xindy]{xindy=\prog{xindy}>options>HTMLIndexCmd=\optn{HTMLIndexCmd}}
 % be sure to assign an \prog{xindy}
 % language and codepage with the |-L| and |-C| \prog{xindy} options, as the
 % \pkg{lwarp} \optn{xindyLanguage} and \optn{xindyCodepage} options are not
@@ -7371,8 +7850,7 @@
 % worthwhile to use a shell script, then refer to that script with \optn{HTMLIndexCmd}.
 %
 %
-% \item[\optn{LatexmkIndexCmd}:]
-% \DescribeOption{LatexmkIndexCmd}
+% \ItemDescribeOption{LatexmkIndexCmd}
 % \DescribeDefault{<automatic>} Sets the shell commands executed by \prog{latexmk}.
 %   Unlike \optn{PrintIndexCmd} and \optn{HTMLIndexCmd}, \optn{LatexmkIndexCmd}
 %   does not include any filenames, which will be provided instead by \prog{latexmk}.
@@ -7396,7 +7874,7 @@
 % shown above to compile each of multiple indexes if necessary.
 %
 % If specifying \optn{LatexmkIndexCmd} manually,
-% \trouble[xindy]{xindy=\pkg{xindy}>options>LatexmkIndexCmd=\optn{LatexmkIndexCmd}}
+% \trouble[xindy]{xindy=\prog{xindy}>options>LatexmkIndexCmd=\optn{LatexmkIndexCmd}}
 % be sure to assign an \prog{xindy}
 % language and codepage with the |-L| and |-C| \prog{xindy} options, as the
 % \pkg{lwarp} \optn{xindyLanguage} and \optn{xindyCodepage} options are not
@@ -7403,8 +7881,35 @@
 % used for the \optn{LatexmkIndexCmd} option when it is set manually.
 %
 %
-% \item[\optn{GlossaryCmd}:]
-% \DescribeOption{GlossaryCmd}
+% \ItemDescribeOption{IndexRef}
+%   \DescribeDefault{cref}
+%   \label{sec:optionindexref}
+%   Describes how to display the index entries for \HTML\ output.
+%   Possible values are \optn{ref}, \optn{nameref}, \optn{refnameref},
+%   \optn{cref}, \optn{crefnameref}, \optn{autoref}, or a text string
+%   such as \optn{(link)} or \optn{(*)} for each index entry reference.
+%   (Adding parentheses around a single character makes the link
+%   larger and easier to click on.)
+%   The default is \optn{cref}, which is available even if the print document
+%   does not use \pkg{cleveref}, as the \pkg{lwarp} package relies on \pkg{cleveref}
+%   during \HTML\ output.
+%   Option \optn{autoref} gives the same results as \optn{cref}.
+%
+%   \cs{ref} and \cs{cref} to starred or otherwise unknown links will display as
+%   |(*)| instead of |??|.
+%
+%   If using \optn{cref} (the default),
+%   \trouble[??]{index>?? and non-functional link}
+%   \trouble{index>formatting}
+%   and if a reference appears as |??| with a non-functional link,
+%   use \pkg{cleveref}'s \cs{crefname} to give a name to that type of label.
+%
+%   In general, \optn{crefnameref} gives the most information,
+%   but the index can become quite verbose.
+%   Using \optn{(*)} or similar yields a very compact index.
+%
+%
+% \ItemDescribeOption{GlossaryCmd}
 % \DescribeDefault{\cmds{makeglossaries}} Sets the shell command
 %   executed by \cmds{lwarpmk printglossary} and \cmds{lwarpmk htmlglossary}.
 %   The print or \HTML\ glossary filename is appended to this command.
@@ -7411,21 +7916,21 @@
 %   See \cref{sec:glossaries}.
 %
 %
-% \item[\optn{OSWindows}:]
-% \DescribeOption{OSWindows} \pkg{lwarp} attempts to automatically sense \brand{Windows},
+% \ItemDescribeOption{OSWindows}
+% \pkg{lwarp} attempts to automatically sense \brand{Windows},
 %   but it may be forced with this option.
 %   See \cref{sec:OSportabilityusage}.
 %
 %
-% \item[\optn{pdftotextEnc}:]
-% \DescribeOption{pdftotextEnc}
-% \DescribeDefault{UTF-8} Used to specify
+% \ItemDescribeOption{pdftotextEnc}
+% \DescribeDefault{UTF-8}
+%   Used to specify
 %   the encoding used by \prog{pdftotext} during the \PDF-\HTML\ conversion.
 %   In most situations, the default is the correct choice.
 %
 %
-% \item[\optn{lwarpmk}:]
-% \DescribeOption{lwarpmk}  If you wish to have \pkg{lwarp} generate a local
+% \ItemDescribeOption{lwarpmk}
+%   If you wish to have \pkg{lwarp} generate a local
 %   copy of \filenm{lwarpmk.lua} for archival or local-installation purposes,
 %   compile the print version with the \optn{lwarpmk} option set.
 %   See \cref{sec:packageoptions}.
@@ -7439,7 +7944,7 @@
 % \end{quote}
 %
 %
-% \item[\optn{warpprint} and \optn{warpHTML}:]
+% \item[\optn{warpprint} \textmd{and} \optn{warpHTML}:]
 % \DescribeOption{warpprint}
 % \DescribeOption{warpHTML}
 % Usually controlled by \prog{lwarpmk}, and not set in the document.
@@ -7454,8 +7959,7 @@
 % while |<project>_html.tex| will create an \HTML\ version.
 %
 %
-% \item[\optn{BaseJobname}:]
-% \DescribeOption{BaseJobname}
+% \ItemDescribeOption{BaseJobname}
 % \DescribeDefault{\cs{jobname}} Not intended for the user.
 %   Used internally by \pkg{lwarp} when
 %   creating the |*_html.tex| file used to compile the \HTML\ version.
@@ -7478,49 +7982,67 @@
 % \begin{table}[p]
 % \caption{\HTML\ settings}
 % \label{tab:htmlsettings}
-% \begin{tabular}{>{\ttfamily}lp{3in}}
+% \renewcommand{\arraystretch}{1.1}
+% \begin{threeparttable}
+% \begin{tabular}{>{\ttfamily}lcp{3in}}
 % \toprule
-% Macro \Slash Cntr \Slash Bool & Description \\ \midrule
-% \cs{linkhomename} & Name of the link to the homepage. \\
+% Macro \Slash Cntr \Slash Bool & Loc\tnote{*} & Description \\ \midrule
+% \cs{linkhomename} & P & Name of the link to the homepage. \\
+% \cs{linkpreviousname} & P & Name of the link to the previous page. \\
+% \cs{linknextname} & P & Name of the link to the next page. \\
 % \midrule
-% SideTOCDepth & Sectioning depth of the side\TOC. \\
-% \cs{sidetocname} & Name of the side\TOC. \\
+% SideTOCDepth & P & Sectioning depth of the side\TOC. \\
+% \cs{sidetocname} & P & Name of the side\TOC. \\
 % \midrule
-% FileDepth & Sectioning depth of the file splits. \\
-% CombineHigherDepths & Combine higher section levels. \\
-% FileSectionNames & Use section names for file names, else use numbers. \\
-% \cs{FilenameLimit} & Maximum length of the generated filenames. \\
+% FileDepth & P & Sectioning depth of the file splits. \\
+% CombineHigherDepths & P & Combine higher section levels. \\
+% FileSectionNames & P & Use section names for file names, else use numbers. \\
+% \cs{FilenameLimit} & P & Maximum length of the generated filenames. \\
 % \midrule
-% FootnoteDepth & Sectioning depth of footnotes. \\
+% FootnoteDepth & P & Sectioning depth of footnotes. \\
 % \midrule
-% \cs{abstractname} & The name of the abstract. \\
-% \cs{ImageAltText} & \cs{includegraphics} and other images' \attribute{alt} tag. \\
-% \cs{ThisAltText} \marg{text} & Assigns an \attribute{alt} \Slash \attribute{title}
+% \cs{abstractname} & P & The name of the abstract. \\
+% \cs{ImageAltText} & PD & \cs{includegraphics} and other images' \attribute{alt} tag. \\
+% \cs{ThisAltText} \marg{text} & PD & Assigns an \attribute{alt} \Slash \attribute{title}
 %   tag for the next image or link. \\
-% \cs{MathImageAltText} & The \SVG\ math image \env{lateximage} \attribute{alt} tag. \\
-% \cs{PackageDiagramAltText} & The suffix for a package's \env{lateximage} \attribute{alt} tags. \\
-% \cs{AltTextOpen} & Start an \HTML\ \attribute{alt} tag. \\
-% \cs{AltTextClose} & End an \HTML\ \attribute{alt} tag. \\
+% \cs{MathImageAltText} & PD & The \SVG\ math image \env{lateximage} \attribute{alt} tag. \\
+% \cs{PackageDiagramAltText} & PD & The suffix for a package's \env{lateximage} \attribute{alt} tags. \\
+% \cs{AltTextOpen} & PD & Start an \HTML\ \attribute{alt} tag. \\
+% \cs{AltTextClose} & PD & End an \HTML\ \attribute{alt} tag. \\
 % \midrule
-% \cs{CSSFilename} & The \CSS\ for the following files. \\
-% \cs{MathJaxFilename} & The MathJax script for the following files. \\
+% \cs{CSSFilename} & PS & The \CSS\ for the following files. \\
+% \cs{MathJaxFilename} & PS & The \brand{MathJax} script for the following files. \\
 % \midrule
-% \cs{HTMLLanguage} & The \HTML\ \attribute{lang} tag. \\
-% \cs{HTMLTitle} & The homepage's \element{title}, overriding \cs{title}. \\
-% \cs{HTMLTitleBeforeSection} & Set subpage \element{title}s to \newline
+% \cs{HTMLLanguage} & PS & The \HTML\ \attribute{lang} tag. \\
+% \cs{HTMLTitle} & PS & The homepage's \element{title}, overriding \cs{title}. \\
+% \cs{HTMLTitleBeforeSection} & PS & Set subpage \element{title}s to \newline
 %   \fqquad \attribute{\cs{HTMLTitle} - sectionname} \\
-% \cs{HTMLTitleAfterSection} & Set subpage \element{title}s to \newline
+% \cs{HTMLTitleAfterSection} & PS & Set subpage \element{title}s to \newline
 %   \fqquad \attribute{sectioname - \cs{HTMLTitle}}\\
-% \cs{HTMLAuthor} & The \HTML\ \attribute{author} meta tag, overriding \cs{author}. \\
-% \cs{HTMLDescription} & The \HTML\ \attribute{description} meta tag. \\
+% \cs{HTMLAuthor} & PS & The \HTML\ \attribute{author} meta tag, overriding \cs{author}. \\
+% \cs{HTMLDescription} & PS & The \HTML\ \attribute{description} meta tag. \\
 % \midrule
-% \cs{HTMLFirstPageTop} & Heading for the home page. \\
-% \cs{HTMLPageTop} & Heading for the other pages. \\
-% \cs{HTMLPageBottom} & Footing for all pages. \\
+% \cs{HTMLFirstPageTop} & P & Heading for the home page. \\
+% \cs{HTMLFirstPageBottom} & P & Footer for the home page. \\
+% \cs{HTMLPageTop} & PS & Heading for the other pages. \\
+% \cs{HTMLPageBottom} & PS & Footer for the other pages. \\
 % \midrule
-% HTMLDebugComments & Boolean to generate \HTML\ comments. \\
+% \cs{IndexPageSeparator} & P & Index page list separator. \\
+% \cs{IndexRangeSeparator} & P & Index page range separator. \\
+% \midrule
+% FixSmallCaps & P & Set \optn{true} if small caps rendered as all caps. \\
+% HTMLDebugComments & P & Boolean to generate \HTML\ comments. \\
 % \bottomrule
 % \end{tabular}
+% \begin{tablenotes}
+% \item [*]
+%   \begin{inlinedesc}
+%   \item [P:] Preamble,
+%   \item [D:] Anywhere in the document.
+%   \item [S:] Before a section.
+%   \end{inlinedesc} \hspace*{\fill}
+% \end{tablenotes}
+% \end{threeparttable}
 % \end{table}
 %
 % \Cref{tab:htmlsettings} shows several settings may be used
@@ -7540,66 +8062,40 @@
 %
 % \begin{description}[style=unboxed]
 %
-% \item[Options for the \pkg{lwarp} package:] \ \newline
-%   Use the following as options for |\usepackage[<options>]{lwarp}|:
+% \needspace{3\baselineskip}
+% \item[Placed in the preamble before \texttt{\cs{begin}\{document\}}:] \
 %
 %   \begin{description}
 %
-% \ItemDescribeOption{HomeHTMLFilename} \DescribeDefault{\cs{BaseJobname}}
-%   Filename of the homepage, without
-%   the ``\filenm{.html}'' suffix.
-%   Defaults to the \cs{BaseJobname}.  A common setting is:
-%   \begin{sourcedisplay}
-%   |HomeHTMLFilename=index|
-%   \end{sourcedisplay}
-%   causing the
-%   homepage to be the file |index.html|.  Underscores are allowed in
-%   \margintag{filename underscores}
-%   \optn{HomeHTMLFilename} and \optn{HTMLFilename} options, but may need to be escaped
-%   elsewhere, such as when appearing in a list:
-%   \gindex{underscore>filename}\gindex{filename>underscore in}
-%   \changes{v0.24}{2017/03/13}{Docs: Filename underscore.}
-%   \begin{sourcedisplay}
-%        \cs{item} [\cs{href}\{file\textred{\textbackslash\_}name.pdf\}\{text\}] \textbackslash
-%   \end{sourcedisplay}
-%   See \cref{sec:filenameexamples} for examples of naming and numbering \HTML\ files.
+% \ItemDescribeMacro{\HTMLFirstPageTop} \marg{contents}  \DescribeDefault{<empty>} \quad
+%   A user-definable custom action applied
+%   to the top of the home page.  Useful for logos, etc.
+%   \cs{LinkNext} may be used to link to the next web page.
+%   Defaults empty.
+%   Ignored in print output.
 %
-% \ItemDescribeOption{HTMLFilename} \DescribeDefault{<empty>}
-%   A filename prefix for the rest of the \HTML\ web pages.
-%   Useful for numbered web pages with a common prefix.  May be empty.
-%   See \cref{sec:filenameexamples} for examples of naming and numbering \HTML\ files.
+% \ItemDescribeMacro{\HTMLFirstPageBottom} \marg{contents}  \DescribeDefault{<empty>} \quad
+%   A user-definable custom action applied
+%   to the bottom of the home page.  Useful for logos, etc.
+%   \cs{LinkNext} may be used to link to the next web page.
+%   Defaults empty.
+%   Ignored in print output.
 %
-% \ItemDescribeOption{latexmk} \DescribeDefault{false}
-%   Controls whether \pkg{lwarp} uses \prog{latexmk} to
-%   compile the document.  This setting is written to \prog{lwarpmk}'s configuration
-%   files.
-%
-% \ItemDescribeOption{mathsvg} \DescribeDefault{true}
-%   Selects \SVG\ display for math output.  (The default.)
-%
-% \ItemDescribeOption{mathjax} \DescribeDefault{false}
-%   Selects \brand{MathJax} for math output.
-%
-% ^^A \ItemDescribeOption{mathKaTeX} \DescribeDefault{false}
-% ^^A  Selects Ka\TeX\ for math output.
-%
-% \ItemDescribeOption{makeindex} \DescribeDefault{makeindex}
-%   Selects \prog{makeindex} for index generation by \prog{lwarpmk}.
-%
-% \ItemDescribeOption{xindy} \DescribeDefault{makeindex}
-%   Selects \prog{xindy} for index generation by \prog{lwarpmk}.
-%
-%   \end{description} \bigskip
-%
-% \item[Placed in the preamble before \texttt{\cs{begin}\{document\}}:] \
-%
-%   \begin{description}
-%
 % \ItemDescribeMacro{\linkhomename} \DescribeDefault{Home}
 %   Name of the link to the home page.  Paragraphs are allowed.
 %   Redefine with \cs{renewcommand}.
 % \changes{v0.63}{2018/11/29}{Docs: \cs{linkhomename}.}
 %
+% \ItemDescribeMacro{\linkpreviousname} \DescribeDefault{Previous}
+%   Name of the link to the previous page.  Paragraphs are allowed.
+%   Redefine with \cs{renewcommand}.
+% \changes{v0.84}{2020/04/24}{Docs: \cs{linkpreviousname}.}
+%
+% \ItemDescribeMacro{\linknextname} \DescribeDefault{Next}
+%   Name of the link to the next page.  Paragraphs are allowed.
+%   Redefine with \cs{renewcommand}.
+% \changes{v0.84}{2020/04/24}{Docs: \cs{linkpreviousname}.}
+%
 % \ItemDescribeCounter{tocdepth} Sectioning depth of the table of contents.
 %   See \cref{sec:stackdepths} for a list of \LaTeX{} stack depths.
 %
@@ -7717,6 +8213,11 @@
 %   Any pending footnotes are also placed at the bottom of each page
 %   before each file break.
 %
+% \ItemDescribeBoolean{FixSmallCaps} \DescribeDefault{false}
+%   Set |true| if \textsc{Small Caps} are rendering in all caps (``SMALL CAPS'').
+%   May be required for some fonts (\pkg{erewhon}, \pkg{utopia}, \pkg{fbb}, et al.),
+%   and packages such as \pkg{embrac}.
+%
 % \ItemDescribeBoolean{HTMLDebugComments} \DescribeDefault{false}
 %   Set |true| to generate \HTML\ comments, such as which section or \element{div}
 %   is being opened or closed.
@@ -7727,9 +8228,17 @@
 %   by the \pkg{babel} package.  Defaults to ``|Abstract|''.
 %   Redefine with \cs{renewcommand}.
 %
+% \ItemDescribeMacro{\IndexPageSeparator} \DescribeDefault{``, ''}
+%   Index page list separator.  Adjust to match index style file.
+%   If using \pkg{gindex}, this is set automatically to \pkg{gindex}'s \cs{indexpagessep}.
+%
+% \ItemDescribeMacro{\IndexRangeSeparator}  \DescribeDefault{``-\/-''}
+%   Index page range separator.  Adjust to match index style file.
+%   If using \pkg{gindex}, this is set automatically to \pkg{gindex}'s \cs{indexrangesep}.
+%
 % \end{description}
 %
-% \needspace{2\baselineskip}
+% \needspace{3\baselineskip}
 % \item[Placed before \texttt{\cs{begin}\{document\}},
 %   or before any sectioning command which causes a file break:] \
 %
@@ -7749,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
@@ -7803,31 +8312,40 @@
 %   the following files.  May be changed before each each sectioning command which would
 %   cause a file split.
 %
-% \ItemDescribeMacro{\HTMLFirstPageTop} \marg{contents}  \DescribeDefault{<empty>} \quad
-%   A user-definable custom action applied
-%   to the top of the home page.  Useful for logos, etc.
-%   Defaults empty.
-%   Ignored in print output.
-%
 % \ItemDescribeMacro{\HTMLPageTop}  \marg{contents}  \DescribeDefault{<empty>} \quad
 %   A user-definable custom action applied to
 %   the top of pages other than the home page.   Useful for logos, etc.
 %   Defaults empty.
-%   \cs{LinkHome} may be used to place a link back to the homepage.
+%   \cs{LinkHome} may be used to place a link back to the homepage, as well as
+%   \cs{LinkPrevious} and \cs{LinkNext}.
 %   Ignored in print output.
 %
 % \ItemDescribeMacro{\HTMLPageBottom}  \marg{contents}  \DescribeDefault{<empty>} \quad
 %   A user-definable custom action applied to the
-%   bottom of each web page.
+%   bottom of pages other than the home page.
 %   Useful for authors, copyright notices, contact information, etc.
 %   Defaults empty.
-%   \cs{LinkHome} may be used to place a link back to the homepage.
+%   \cs{LinkHome} may be used to place a link back to the homepage, as well as
+%   \cs{LinkPrevious} and \cs{LinkNext}.
 %   Ignored in print output.
 %
+% \ItemDescribeMacro{\LinkHome} Creates a link to the home page.
+%   \gindex{link>home \Slash previous \Slash next page}
+%   \gindex{navigation>link to home \Slash previous \Slash next page}
+%   Usually used in \cs{HTMLPageTop} and related.
+%
+% \ItemDescribeMacro{\LinkPrevious} Creates a link to the previous \HTML\ page,
+%       unless already at the home page.
+%   Usually used in \cs{HTMLPageTop} and related.
+%
+% \ItemDescribeMacro{\LinkNext} Creates a link to the next \HTML\ page, unless
+%       already at the end.
+%   Usually used in \cs{HTMLPageTop} and related.
+%
 % \end{description}
 %
 %
-% \needspace{2\baselineskip}
+% \needspace{3\baselineskip}
 % \item[Placed in the home page before the first sectioning command which causes a file break:] \
 %
 % \begin{description}
@@ -7883,13 +8401,15 @@
 %
 %   \emph{Do not place anything else on the same line as \texttt{\cs{end}\{warpprint\}}}.
 %   \watchout
+%   Also do not nest \env{warpprint} inside itself.
 %
-% \ItemDescribeEnv{warpHTML} An environment which is only used
+% \ItemDescribeEnv{warpHTML} An environment which is only included
 %   while generating \HTML\ output.  This is useful for website logos and
 %   other items which have no purpose in printed output.
 %
 %   \emph{Do not place anything else on the same line as \texttt{\cs{end}\{warpHTML\}}}.
 %   \watchout
+%   Also do not nest \env{warpHTML} inside itself.
 %
 % \ItemDescribeMacro{\warpprintonly} \marg{contents} \quad
 %   A macro version of the \env{warpprint} environment.
@@ -8011,8 +8531,46 @@
 % \VerbatimInput[frame=lines]{sample_project.css}
 %
 % Finally use |\CSSFilename{<project>.css}| in the document to activate the custom \CSS.
-% 
-% 
+%
+%
+% \subsection{Assigning \CSS\ classes and styles}
+% \label{sec:classstyle}
+%
+% \gindex{CSS>class=\attribute{class}}
+% \gindex{CSS>style=\attribute{span}}
+% \gindex{HTML>class=\attribute{class}}
+% \gindex{HTML>style=\attribute{style}}
+% \gindex{HTML>div=\element{div}}
+% \gindex{HTML>span=\element{span}}
+%
+% \HTML\ \CSS\ classes and styles may be assigned to fragments of the document.
+%
+% \DescribeEnv{BlockClass} \oarg{style} \marg{class}
+%
+% An entire block of text, including paragraphs, may be assigned a \CSS\ class
+% and optional \CSS\ style using the \env{BlockClass} environment.
+% The result is placed inside a \element{div}.
+% A \env{BlockClass} may nest other \env{BlockClass}es or \cs{InlineClass}es.
+%
+% \DescribeMacro{\InlineClass}
+%           \parg{\acro{wp} \CSS\ style} \oarg{web \CSS\ style}
+%           \marg{\CSS\ class} \marg{text}
+%
+% A section of text without paragraphs may be assinged a \CSS\ class and optional
+% \CSS\ style using the \cs{InlineClass} macro.
+% The result is placed inside a \element{span}.
+% \cs{InlineClass} may be nested, but per the \HTML\ standard it must not contain
+% \env{BlockClass}, nor may it contain a paragraph, nor several other objects
+% such as \HTML\ figures.
+% \cs{InlineClass} also accepts a second optional parameter, enclosed inside
+% parentheses, which assigns the style while generating output for a word processor,
+% while ignoring the web style.
+%
+% Nullified versions of \env{BlockClass} and \cs{InlineClass} are provided
+% for the print version, so they may be used in the document without
+% placing them inside \env{warpHTML} or \cs{warpHTMLonly}.
+%
+%
 % \subsection{Selecting the operating system}
 % \label{sec:OSportabilityusage}
 % \changes{v0.11}{2016/03/11}{Added section: Selecting the operating system.}
@@ -8022,7 +8580,7 @@
 % 
 % \subsection{Selecting actions for print, \HTML, or \brand{MathJax} output}
 % \label{sec:selectingoutput}
-% \gindex{settings>selecting output}
+% \gindex{settings>selecting print/\HTML\ output}
 % \changes{v0.15}{2016/04/05}{Docs: Clarify print/\HTML\ output.}
 %
 % The following environments and macros are used to select actions which only apply
@@ -8050,6 +8608,8 @@
 % Do \emph{not} place anything else on the same line as |\end{warpHTML}|.
 % \trouble[\texttt{\cs{end}\{warpHTML\}}]{warpHTML}
 % The exact phrase is used to mark the end of the environment.
+% Do not nest \env{warpHTML} inside itself. \watchout[nesting]
+% \env{warpMathJax} may be used inside \env{warpHTML}.
 %
 % \DescribeEnv{warpprint}
 % Anything which is to be done only for print output
@@ -8061,6 +8621,7 @@
 % \end{Verbatim}
 % As above, do not place anything else on the line with |\end{warpprint}|.
 % \trouble[\texttt{\cs{end}\{warpprint\}}]{warpprint}
+% Do not nest \env{warpprint} inside itself.\watchout[nesting]
 %
 % \DescribeEnv{warpall}
 % Anything which is to be done for any output
@@ -8071,6 +8632,8 @@
 % \end{warpall}
 % \end{Verbatim}
 % As above, do not place anything else on the line with |\end{warpall}|.
+% \trouble[\texttt{\cs{end}\{warpall\}}]{warpall}
+% Do not nest \env{warpall} inside itself.\watchout[nesting]
 %
 %
 % Macros are also provided for print-only or \HTML-only code:
@@ -8087,6 +8650,10 @@
 % Anything which is to be done only while using \HTML\ output with \brand{MathJax}
 % is surrounded by a \env{warpMathJax} environment.
 % Usually, this is \cs{CustomizeMathJax}, used to add emulation macros.
+% |\end{warpMathJax}| must appear on its own line.
+% \trouble[\texttt{\cs{end}\{warpMathJax\}}]{warpMathJax}
+% Do not nest \env{warpMathJax} inside itself. \watchout[nesting]
+% \env{warpMathJax} may be used inside \env{warpHTML}.
 %
 %
 % \subsection{Commands to be placed into the \env{warpprint} environment}
@@ -8328,11 +8895,75 @@
 %
 % \limitstext
 %
-% \subsubsection{Horizontal space}
 %
-% \limitshspace
+% \subsubsection{Small caps}
 %
+% \DescribeBoolean{FixSmallCaps}
+% \trouble{font>small caps}
+% \trouble{small caps}
+% \trouble{font>CJK}
+% \trouble{CJK>font}
+% Some fonts, such as \pkg{erewhon}, \pkg{utopia}, or \pkg{fbb}, and some packages
+% such as \pkg{embrac}, copy/paste ``\textsc{Small Caps}''
+% as all caps (``SMALL CAPS''),
+% which \pkg{lwarp} then reads as all caps, so the text is printed in all caps.
+% If small caps are being rendered as all caps, set:
+% \begin{sourceverb}
+% \booltrue{FixSmallCaps}
+% \end{sourceverb}
+% Some CJK fonts may not work if \bool{FixSmallCaps} is set \optn{true}.
+% \watchout[CJK fonts]
+% \trouble{Chinese>font}
+% \trouble{Japanese>font}
+% \trouble{Korean>font}
 %
+%
+% \subsubsection{Horizontal and vertical space and rules}
+%
+% \DescribeMacro{\hspace}
+% \gindex{space>horizontal and vertical}
+% \gindex{horizontal and vertical space}
+% \gindex{vertical space}
+% \cs{hspace} is converted to an inline \HTML\ span of the given width,
+% except that \texttt{0} width is ignored,
+% a width of \texttt{.16667em} is converted to
+% an \HTML\ thin breakable space (\texttt{U+2009}),
+% and a \cs{fill} is converted to a \cs{qquad}.
+%
+% \DescribeMacro{\vspace}
+% \cs{vspace} is ignored for \HTML.
+%
+% \gindex{\texttt{\textasciitilde}}
+% \gindex{\cs{,}}
+% \marginpar{\hspace*{\fill}\texttt{\~}}
+% \DescribeMacro{\,}
+% \texttt{\~} and \cs{,} are converted to \HTML\ entities.
+% 
+% \DescribeMacro{\kern}
+% \DescribeMacro{\hskip}
+% \cs{kern} and \cs{hskip} are entered into the \HTML\ \PDF\ output as-is,
+% then interpreted by \prog{pdftotext}, and thus usually appear as a single space.
+%
+% \DescribeMacro{\rule}
+% \cs{rule} is converted to an \HTML\ rule of the same dimensions,
+% of the currently selected text color.
+%
+% \DescribeMacro{\hrule}
+% \DescribeMacro{\vrule}
+% \trouble{hrule=\cs{hrule}}
+% \gindex{hrule=\cs{hrule}}
+% Both \cs{hrule} and \cs{vrule} are ignored for \HTML.
+% To create a horizontal dividing rule across the page,
+% use \cs{hrulefill} in its own paragraph.
+%
+% \DescribeMacro{\hrulefill}
+% \gindex{rule>horizontal}
+% \gindex{horizontal rule}
+% \cs{hrulefill} usually creates a one-inch rule, similar to a ``fill in the blank''.
+% If it is used at the start of a new paragraph, it creates a \element{div}
+% with a thin horizontal border across the page, as would often be done with \cs{hrule}.
+%
+%
 % \subsubsection{Text alignment}
 %
 % Use the environments \env{center}, \env{flushright}, \env{flushleft} instead
@@ -8474,7 +9105,7 @@
 %		and \cs{StopDefiningTabulars} afterwards.
 %		Also see the \pkg{lwarp} documentation for the \pkg{fancybox} package.
 %	\item [To frame equations:] See \cref{sec:fancybox} for the \pkg{fancybox} package.
-%	\item [For fancy framed minipages:] See packages \pkg{boxedminipage2e},
+%	\item [For fancy framed minipages:] See packages \pkg{boxedminipage},
 %		\pkg{shadow}, \pkg{fancybox}, \pkg{framed}, \pkg{mdframed}.
 %	\item [Custom environments:] Use a custom environment to create a sidebar,
 %		containing a \env{BlockClass} environment
@@ -8502,7 +9133,45 @@
 % \DescribePackage{mdframed}
 % \limitsmdframed
 %
+
+% \subsubsection{\pkg{tcolorbox} package}
+% \label{sec:limitstcolorbox}
 %
+% \DescribePackage{tcolorbox}
+% \trouble{tcolorbox=\pkg{tcolorbox}}
+% \pkg{tcolorbox} is emulated for \HTML\ and \brand{MathJax}, and
+% supported as-is inside a \env{lateximage} or \SVG\ math.
+%
+% What has been tested to work (at least partly) includes:
+% \begin{itemize}[nosep]
+% \item \env{tcolorbox}, \cs{tcbox}.
+% \item Title, subtitle.
+% \item Upper, lower parts.
+% \item Colors and title fonts.
+% \item Floating objects.
+% \item Some layered box features.
+% \item Counters, labels, references.
+% \item \pkg{listings}, \pkg{listingsutf8}.
+% \item \optn{theorems}:
+%           Theorems are supported.
+%           \optn{math}, \optn{ams equation}, etc.\ are not supported. \watchout[math]
+%           Use a \env{tcolorbox} with regular math inside it.
+%           \cs{tcboxmath} and \cs{tcbhighmath} are suppored in \SVG\ math, and
+%           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 \brand{MathJax} emulation is provided for common macros.
+% \end{itemize}
+%
+% If using \pkg{cleveref},
+% \trouble[undefined references]{reference>undefined>tcolorbox=\pkg{tcolorbox}}
+% it may be necessary to name theorems such as:
+% \begin{sourceverb}
+% \crefname{tcb at cnt@mytheo}{my theorem}{my theorems}
+% \end{sourceverb}
+%
+%
+%
 % \subsection{Section names}
 % \label{sec:limitssectionnames}
 %
@@ -8601,6 +9270,14 @@
 % \DescribePackage{varioref}
 % \limitscpageref
 %
+% \pkg{cleveref} changes the behavior of \pkg{varioref} in that
+% \trouble[\pkg{varioref} types]{varioref=\pkg{varioref}}
+% the reference type is automatically printed if \pkg{cleveref} is loaded.
+% \pkg{Lwarp} requires \pkg{cleveref}, so the \HTML\ version will always
+% automatically print the reference types even if the print mode does not.
+% The simplest way to make them match is to require the \pkg{cleveref} package
+% for the document.
+%
 % \subsubsection{Hyperlinks, \pkg{hyperref}, and \pkg{url}}
 %
 % \DescribePackage{hyperref}
@@ -8823,8 +9500,13 @@
 %
 % If using a custom indexing style file,
 % \margintag{custom index style}
-% see \cref{sec:modifymakeindex,sec:modifyxindy}.
+% see \cref{sec:modifymakeindex,sec:modifyxindy,sec:modifyxindex}.
 %
+% To control how the index links appear in the \HTML\ output,
+% \margintag{link appearance}
+% see the \optn{IndexRef} option in \cref{sec:optionindexref},
+% \cpageref{sec:optionindexref}.
+%
 % See \cref{sec:index} for \pkg{lwarp}'s core index and glossary code,
 % \margintag{source code}
 % \gindex{index>source code}
@@ -8835,15 +9517,16 @@
 % and \cref{sec:memoirbackmatter} for \pkg{memoir}'s indexing patches.
 %
 %
-% \subsubsection{Indexing with basic \LaTeX\ and \pkg{makeidx}}
+% \subsubsection{Indexing with \pkg{makeidx}, \prog{makeindex},
+%       \prog{xindy}, \prog{xindex}, \pkg{gindex}}
 % \label{sec:indexsetup}
 %
 % \changes{v0.38}{2017/08/24}{Docs: Index, \pkg{tocbibind}.}
 % \changes{v0.58}{2018/06/14}{Docs: Index, \prog{makeindex}, \pkg{imakeidx}.}
 %
-% \gindex{xindy=\pkg{xindy}>and \pkg{hyperref}}
-% \gindex{hyperref=\pkg{hyperref}>and \pkg{xindy}}
-% \gindex{index>xindy=\pkg{xindy} and \pkg{hyperref}}
+% \gindex{xindy=\prog{xindy}>and \pkg{hyperref}}
+% \gindex{hyperref=\pkg{hyperref}>and \prog{xindy}}
+% \gindex{index>xindy=\prog{xindy}>hyperref=and \pkg{hyperref}}
 % \trouble{index>missing entries}
 % \gindex{index>see, seealso, ranges}
 % \gindex{index>processing}
@@ -8858,6 +9541,9 @@
 % 
 % \needspace{2\baselineskip}
 % \item [For a single index using \prog{makeindex}:]
+% \DescribeProgram{makeindex}
+% \gindex{makeindex=\prog{makeindex}}
+% \gindex{index>makeindex=\prog{makeindex}>setup}
 %     \begin{sourcedisplay}
 %     \cs{usepackage}\textred{[makeindex\textgreen{,latexmk}]}
 %           \{\textblue{lwarp}\}
@@ -8872,8 +9558,13 @@
 %     Otherwise, use \userentry{lwarpmk printindex} \userentry{lwarpmk htmlindex}
 %     to compile the indexes.
 %
+%     To use a custom configuration file, see \cref{sec:modifymakeindex}.
+%
 % \needspace{8\baselineskip}
 % \item [For a single index using \prog{xindy}:]
+% \DescribeProgram{xindy}
+% \gindex{xindy=\prog{xindy}}
+% \gindex{index>xindy=\prog{xindy}>setup}
 %     \begin{sourcedisplay}
 %     \cs{usepackage}[ \\
 %       \fqquad \textred{xindy,} \\
@@ -8889,11 +9580,63 @@
 %     \prog{latexmk} will create the index automatically.
 %     Otherwise, use \userentry{lwarpmk printindex} \userentry{lwarpmk htmlindex}
 %     to compile the indexes.
+%
+%     To use a custom configuration file, see \cref{sec:modifyxindy}.
+%
+% \needspace{8\baselineskip}
+% \item [For a single index using \prog{xindex}:]
+% \DescribeProgram{xindex}
+% \gindex{xindex=\prog{xindex}}
+% \gindex{index>xindex=\prog{xindex}>setup}
+%     \begin{sourcedisplay}
+%     \cs{usepackage}[ \\
+%       \fqquad \textred{xindex,} \\
+%       \fqquad \textgreen{latexmk} \hfill \textrm{<optional>}\\
+%     ]\{\textblue{lwarp}\}
+%     \end{sourcedisplay}
+%     The usual \filenm{.idx} and \filenm{.ind} files will be used.
+%
+%     \prog{lwarpmk} will use \prog{latexmk} if specified, in which case
+%     \prog{latexmk} will create the index automatically.
+%     Otherwise, use \userentry{lwarpmk printindex} \userentry{lwarpmk htmlindex}
+%     to compile the indexes.
+%
+%     To use a custom configuration file, see \cref{sec:modifyxindex}.
+%
+%
+% \needspace{8\baselineskip}
+% \item [For a single index using \pkg{gindex}:]
+% \DescribePackage{gindex}
+% \gindex{gindex=\pkg{gindex}}
+% \gindex{index>gindex=\pkg{gindex}>setup}
+%     \begin{sourcedisplay}
+%     \cs{usepackage}[ \\
+%       \fqquad \textred{makeindex,} \\
+%       \fqquad \textred{makeindexStyle=gindex.ist,} \\
+%       \fqquad \dots or \dots \\
+%       \fqquad \textred{makeindexStyle=gindexh.ist,} \\
+%       \fqquad \textgreen{latexmk} \hfill \textrm{<optional>}\\
+%     ]\{\textblue{lwarp}\}
+%     \end{sourcedisplay}
+%     The usual \filenm{.idx} and \filenm{.ind} files will be used.
+%
+%     \prog{lwarpmk} will use \prog{latexmk} if specified, in which case
+%     \prog{latexmk} will create the index automatically.
+%     Otherwise, use \userentry{lwarpmk printindex} \userentry{lwarpmk htmlindex}
+%     to compile the indexes.
+%
+%     To use a custom configuration file, copy \filenm{gindex.ist} to a new
+%     file, modify, then specify it with \optn{MakeindexStyle} as above.
+%     \pkg{lwarp} will automatically adapt to \pkg{gindex}'s \cs{indexpagessep}
+%     and \cs{indexrangesep} settings.
 % \end{description}
 %
 %
 % \subsubsection{Indexing with \pkg{index}}
 %
+% \DescribeProgram{index}
+% \gindex{index>index=\prog{index}>setup}
+%
 % \pkg{lwarp} is told how to use \prog{makeindex} using the
 % \optn{PrintIndexCmd} and \optn{HTMLIndexCmd} options.
 % The file \filenm{lwarp.ist} is specified, which generates index letter heads for
@@ -8943,6 +9686,9 @@
 %
 % \subsubsection{Indexing with \pkg{splitidx}}
 %
+% \DescribeProgram{splitidx}
+% \gindex{index>splitidx=\prog{splitidx}>setup}
+%
 % \pkg{lwarp} is told how to use \prog{splitindex} using the
 % \optn{PrintIndexCmd} and \optn{HTMLIndexCmd} options.
 % The file \filenm{lwarp.ist} is specified, which generates index letter heads for
@@ -9003,11 +9749,12 @@
 % \end{description}
 %
 %
-%
-%
 % \subsubsection{Indexing with \pkg{imakeidx}}
 % \label{sec:indexingimakeidx}
 %
+% \DescribeProgram{imakeidx}
+% \gindex{index>imakeidx=\prog{imakeidx}>setup}
+%
 % Due to the number of methods which may be used to process multiple indexes,
 % the options for style file and \prog{xindy} language and codepage must be
 % specified in one of several different ways.  These are described in detail later in
@@ -9019,7 +9766,9 @@
 % \optn{options=} option, which must include
 % \pkg{lwarp}'s special \filenm{lwarp.ist} or \filenm{lwarp.xdy} file,
 % or a file based on them.
-% If using a custom indexing style file, see \cref{sec:modifymakeindex,sec:modifyxindy}.
+% If using a custom indexing style file,
+% see \cref{sec:modifymakeindex,sec:modifyxindy,sec:modifyxindex}.
+%
 % The \optn{splitindex} option is also available of shell escape is used,
 % in which case the \pkg{splitidx} package and \prog{splitindex} program will also be used.
 %
@@ -9175,14 +9924,51 @@
 %
 %     Use \userentry{lwarpmk printindex} \userentry{lwarpmk htmlindex}
 %     to compile the indexes.
+%
+% \needspace{2\baselineskip}
+% \item [For multiple indexes using \prog{xindex} and \pkg{imakeidx}, using shell escape:] \
+%
+%       \prog{xindex}, \prog{makeindex}, \prog{imakeidx}, and \prog{splitindex} can
+%       all work together:
+%     \begin{sourcedisplay}
+%     \cs{usepackage}\textred{[\% \\
+%           \fquad xindex, \\
+%           \fquad xindexConfig=-imakeidx, \\
+%           \fquad \textgreen{latexmk} \\
+%       ]}
+%       \{\textblue{lwarp}\} \\
+%     \cs{usepackage}\textred{[makeindex\textgreen{,splitindex}]}\{\textblue{imakeidx}\} \\
+%     \dots \\
+%     \cs{makeindex}[\% \\
+%       \fquad \textgreen{options=\{ -s lwarp.ist\} \}} \\
+%     ] \\
+%     \cs{makeindex}[ \\
+%       \fquad name=secondname, \\
+%       \fquad \textgreen{options=\{ -s lwarp.ist\} \}} \\
+%     ] \\
+%     \end{sourcedisplay}
+%     For the first compile, use:
+%       \watchout[enable shell escape]
+%     \userentry{pdflatex \textred{-\/-shell-escape} projectname.tex}
+%     \userentry{pdflatex \textred{-\/-enable-write18} projectname.tex \quad \textrm{(MiKTeX)}}
+%     or similar with \prog{xelatex} or \prog{lualatex}.
+%     \pkg{lwarp} will remember if shell escape was used.
+%
+%     \prog{xindex} will use \prog{imakeidx},
+%       and \prog{imakeidx} will automatically execute \prog{splitindex} if selected.
+%
+%     If selected, \prog{latexmk} will automatically recompile the entire document
+%       as necessary.
 % \end{description}
 %
 %
 % \subsubsection{Indexes with \pkg{memoir}}
 %
+% \gindex{index>memoir=\pkg{memoir}>setup}
+%
 % \begin{description}
 % \needspace{7\baselineskip}
-% \item [For a single index with \pkg{memoir} and \pkg{makeindex}:]
+% \item [For a single index with \pkg{memoir} and \prog{makeindex}:]
 %   \begin{sourcedisplay}
 %       \cs{documentclass}\{\textblue{memoir}\} \\
 %       \cs{usepackage}\textred{[makeindex\textgreen{,latexmk}]}\{\textblue{lwarp}\} \\
@@ -9198,7 +9984,7 @@
 %     to compile the indexes.
 %
 % \needspace{9\baselineskip}
-% \item [For multiple indexes with \pkg{memoir} and \pkg{makeindex},
+% \item [For multiple indexes with \pkg{memoir} and \prog{makeindex},
 %   using \prog{latexmk}:] \
 %
 % \pkg{lwarp}'s options are used, and are passed to \prog{latexmk}.
@@ -9213,7 +9999,7 @@
 %     when the user executes \cmds{lwarpmk print} and \cmds{lwarpmk html}.
 %
 % \needspace{19\baselineskip}
-% \item [For multiple indexes with \pkg{memoir} and \pkg{makeindex},
+% \item [For multiple indexes with \pkg{memoir} and \prog{makeindex},
 %   \emph{without} \pkg{latexmk}:] \
 %
 %   \prog{lwarpmk} must be told how to create the indexes:
@@ -9244,7 +10030,7 @@
 %     to compile the indexes.
 %
 % \needspace{13\baselineskip}
-% \item [For a single index with \pkg{memoir} and \pkg{xindy}:]
+% \item [For a single index with \pkg{memoir} and \prog{xindy}:]
 %       \begin{sourcedisplay}
 %       \cs{documentclass}\{\textblue{memoir}\} \\
 %       \cs{usepackage}[ \\
@@ -9266,7 +10052,7 @@
 %       to compile the indexes.
 %
 % \needspace{17\baselineskip}
-% \item [For multiple indexes with \pkg{memoir} and \pkg{xindy},
+% \item [For multiple indexes with \pkg{memoir} and \prog{xindy},
 %   using \pkg{latexmk}:] \
 %
 % \pkg{lwarp}'s options are used, and are passed to \prog{latexmk}.
@@ -9286,7 +10072,7 @@
 %       \prog{lwarpmk} will use \prog{latexmk} to create the indexes automatically.
 %
 % \needspace{24\baselineskip}
-% \item [For multiple indexes with \pkg{memoir} and \pkg{xindy},
+% \item [For multiple indexes with \pkg{memoir} and \prog{xindy},
 %   \emph{without} \pkg{latexmk}:] \
 %
 %   \prog{lwarpmk} must be told how to create the indexes:
@@ -9330,8 +10116,8 @@
 % \DescribeFile{lwarp.ist}
 % When using \prog{makeindex}, \prog{lwarpmk} uses the file |lwarp.ist| to process the index.
 % \gindex{lwarp.ist=\filenm{lwarp.ist}>customizing}
-% \gindex{makeindex>customizing}
-% \gindex{index>custom \pkg{makeindex} style file}
+% \gindex{makeindex=\prog{makeindex}>customizing}
+% \gindex{index>makeindex=\prog{makeindex}>custom style file}
 % This file is over-written by \pkg{lwarp} whenever a print version of
 % the document is processed.
 %
@@ -9342,14 +10128,24 @@
 %   Keep the lines which refer to \cs{hyperindexref}.
 %   These lines creates the hyperlinks for the \HTML\ index.  During print output
 %   \cs{hyperindexref} becomes a null function.
+% \item If changing
+%   \begin{sourceverb}
+%   delim_n -and- delim_r
+%   \end{sourceverb}
+%   in \filenm{projectname.ist}, then in the document preamble redefine
+%   \begin{sourceverb}
+%   \IndexPageSeparator -and- \IndexRangeSeparator
+%   \end{sourceverb}
+%   to match.
 % \item In the document source use the \optn{makeindexStyle} option for \pkg{lwarp}:
 % \DescribeOption{makeindexStyle}
-%   \begin{Verbatim}[gobble=2,tabsize=4]
-%       \usepackage[
-%           ... other options ...
-%           \textred{makeindexStyle=projectname.ist},
-%       ]{lwarp}
-%   \end{Verbatim}
+%   \begin{sourcedisplay}
+% \cs{usepackage}[ \\
+%     \fquad \dots other options \dots \\
+%     \fquad \textred{makeindex}, \\
+%     \fquad \textred{makeindexStyle=projectname.ist}, \\
+% ]\{lwarp\}
+%   \end{sourcedisplay}
 %   Likewise, refer to the custom style file if using \cs{PrintIndexCmd},
 %   \cs{HTMLIndexCmd}, or \cs{LatexmkIndexCmd}.
 % \item Recompile the print version, which causes
@@ -9366,8 +10162,8 @@
 % \DescribeFile{lwarp.xdy}
 % When using \prog{xindy}, \prog{lwarpmk} uses the file |lwarp.xdy| to process the index.
 % \gindex{lwarp.xdy=\filenm{lwarp.xdy}>customizing}
-% \gindex{xindy=\pkg{xindy}>customizing}
-% \gindex{index>custom \pkg{xindy} style file}
+% \gindex{xindy=\prog{xindy}>customizing}
+% \gindex{index>xindy=\prog{xindy}>custom style file}
 % This file is over-written by \pkg{lwarp} whenever a print version of
 % the document is processed.
 %
@@ -9387,14 +10183,28 @@
 %   \cs{hyperindexref} becomes a null function.
 %
 %   To create custom styles, refer to the lines for \cs{textbf} and \cs{textit}.
+% \item If changing any of
+%   \begin{sourceverb}
+%   markup-locref-list :sep
+%   markup-locclass-list :open
+%   markup-locclass-list :sep
+%   markup-crossref-layer-list :sep
+%   markup-range :sep
+%   \end{sourceverb}
+%   in \filenm{projectname.xdy}, then in the document preamble redefine
+%   \begin{sourceverb}
+%   \IndexPageSeparator -and- \IndexRangeSeparator
+%   \end{sourceverb}
+%   to match.
 % \item In the document source use the \optn{xindyStyle} option for \pkg{lwarp}:
 % \DescribeOption{xindyStyle}
-%   \begin{Verbatim}[gobble=2,tabsize=4]
-%       \usepackage[
-%           ... other options ...
-%           \textred{xindyStyle=projectname.xdy},
-%       ]{lwarp}
-%   \end{Verbatim}
+%   \begin{sourcedisplay}
+% \cs{usepackage}[ \\
+%   \fquad \dots other options \dots \\
+%   \fquad \textred{xindy}, \\
+%   \fquad \textred{xindyStyle=projectname.xdy}, \\
+% ]\{lwarp\}
+%   \end{sourcedisplay}
 %   Likewise, refer to the custom style file if using \cs{PrintIndexCmd},
 %   \cs{HTMLIndexCmd}, or \cs{LatexmkIndexCmd}.
 % \item Recompile the print version, which causes
@@ -9401,12 +10211,50 @@
 %   \pkg{lwarp} to rewrite the |lwarpmk.conf| configuration file.
 %   This tells \prog{lwarpmk} to use the custom |projectname.xdy| file instead of |lwarp.xdy|.
 % \end{enumerate}
+%
+%
+% \subsubsection{Using a custom \prog{xindex} style file}
+% \label{sec:modifyxindex}
+%
+% \DescribeProgram{xindex}
+% \gindex{xindex=\prog{xindex}>customizing}
+% \gindex{index>xindex=\prog{xindex}>custom configuration file}
+% To use a custom \prog{xindex} style file:
+% \begin{enumerate}
+% \item Copy |xindex-cfg.lua| to a new filename such as \filenm{xindex-projectname.lua}.
+%   The filename must start with \filenm{xindex-} and end with \filenm{.lua}.\watchout[filename]
+% \item Make changes to \filenm{xindex-projectname.lua}.
+% \item If changing
+%   \begin{sourceverb}
+%   itemPageDelimiter -and- rangeSymbol
+%   \end{sourceverb}
+%   in \filenm{xindex-projectname.lua}, then in the document preamble redefine
+%   \begin{sourceverb}
+%   \IndexPageSeparator -and- \IndexRangeSeparator
+%   \end{sourceverb}
+%   to match.
+% \item In the document source use the \optn{xindexConfig} option for \pkg{lwarp}:
+% \DescribeOption{xindexConfig}
+%   \begin{sourcedisplay}
+% \cs{usepackage}[ \\
+%     \fquad \dots other options \dots \\
+%     \fquad \textred{xindex}, \\
+%     \fquad \textred{xindexConfig=projectname}, \quad \% \textgreen{(without xindex- or .lua)} \\
+% ]\{lwarp\}
+%   \end{sourcedisplay}
+%   Likewise, refer to the custom style file if using \cs{PrintIndexCmd},
+%   \cs{HTMLIndexCmd}, or \cs{LatexmkIndexCmd}.
+% \item Recompile the print version, which causes
+%   \pkg{lwarp} to rewrite the |lwarpmk.conf| configuration file.
+%   This tells \prog{lwarpmk} to use the custom
+%   \filenm{xindex-projectname.lua} file instead of the default |xindex-cfg.lua|.
+% \end{enumerate}
 % 
 % 
 % \subsubsection{Additional indexing limitations}
 % \prog{xindy} and \pkg{hyperref} may not work well together for print output
-% \trouble[\pkg{xindy} with \pkg{hyperref}]{xindy=\pkg{xindy}>hyperref=\pkg{hyperref}}
-% \trouble{index>xindy=\pkg{xindy} and \pkg{hyperref}}
+% \trouble[\prog{xindy} with \pkg{hyperref}]{xindy=\prog{xindy}>hyperref=and \pkg{hyperref}}
+% \trouble{index>xindy=\prog{xindy}>hyperref=and \pkg{hyperref}}
 % \trouble{index>see and seealso}
 % \trouble{index>reference ranges}
 % \trouble{index>styling references}
@@ -9450,6 +10298,9 @@
 %
 % 
 % \subsubsection{Index positions, \TOC, \pkg{tocbibind}}
+% \gindex{index>placement}
+% \gindex{index>tocbibind=\pkg{tocbibind}}
+%
 % \limitstocbibind
 %
 % \limitstocloft
@@ -9527,12 +10378,6 @@
 %
 %
 %
-% \subsubsection{\pkg{newtxmath} package}
-%
-% \DescribePackage{newtxmath}
-% \limitsnewtxmath
-%
-%
 % \subsection{Graphics}
 % \label{sec:limitsgraphics}
 %
@@ -9751,7 +10596,42 @@
 % \DescribeClass{memoir}
 % \limitsmemoir
 %
+% The custom frame commands in the \pkg{memoir} manual may be emulated by
+% \trouble[\env{framewithtitle}, \env{titledframe}]{framewithtitle=\env{framewithtitle}}
+% \trouble{titledframe=\env{titledframe}}
+% \trouble{memoir=\pkg{memoir}>\env{framewithtitle}, \env{titledframe}}
+% \gindex{memoir=\pkg{memoir}>\env{framewithtitle}, \env{titledframe}}
+% placing the original defintions in the preamble inside \env{warpprint}
+% environments, and then providing an \HTML\ equivalent:
+% \begin{sourceverb}
+% \begin{warpHTML}
+% \newcommand{\FrameTitle}[2]{%
+%     \textbf{#2}
+% }
+% 
+% \newenvironment{framewithtitle}[2][\FrameFirst at Lab\ (cont.)]{%
+%     \begin{fminipage}{\linewidth}
+%     \textbf{#2}
+%     \begin{minipage}{\linewidth}
+% }
+% {\end{minipage}\end{fminipage}}
+% 
+% \newcommand{\TitleFrame}[2]{%
+%     \par
+%     \textbf{#1}\par
+%     \fboxBlock{#2}
+% }
+% 
+% \newenvironment{titledframe}[2][\FrameFirst at Lab\ (cont.)]{%
+%     \par
+%     \textbf{#2}
+%     \begin{fminipage}{\linewidth}
+% }
+% {\end{fminipage}}
+% \end{warpHTML}
+% \end{sourceverb}
 %
+%
 % \subsection{International languages}
 % \label{sec:international}
 %
@@ -9818,6 +10698,10 @@
 % \limitsfixme
 %
 %
+% \subsubsection{\pkg{acro} package}
+% \limitsacro
+% \trouble{acro=\pkg{acro}}
+%
 % \subsubsection{\pkg{chemfig} package}
 %
 % \limitschemfig
@@ -9835,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}
@@ -9875,7 +10751,7 @@
 % are used to set customized commands to be executed by
 % \cmds{lwarpmk print} and \cmds{lwarpmk html}.
 % \begin{description}
-% \item [\optn{PrintLatexCmd}] should be set to shell commands which take \filenm{project.tex}
+% \item[\optn{PrintLatexCmd}] should be set to shell commands which take \filenm{project.tex}
 %     and generate \filenm{project.pdf}.
 % \item[\optn{HTMLLatexCmd}] should be set to take \filenm{project_html.tex} and
 %     generate \filenm{project_html.pdf}.
@@ -10515,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:
@@ -10581,13 +11457,6 @@
 % \watchout[\TeX\ boxes]
 % require \cs{newpage}, which will not work in a \TeX\ box.
 %
-% \changes{v0.57}{2018/05/28}{Docs: Recreating the index for \pkg{lwarp} source.}
-% To recreate the index for the \pkg{lwarp} documentation:
-% \margintag{index recreation}
-% \begin{Verbatim}[gobble=2,obeytabs,tabsize=4,frame=lines]
-% makeindex -s gglo.ist -o lwarp.gls lwarp.glo
-% splitindex lwarp.idx -- -s gind.ist
-% \end{Verbatim}
 %
 %
 % \subsection{Creating a development system}
@@ -10607,7 +11476,7 @@
 %   hundred additional \filenm{lwarp-*.sty} files for the various packages which are
 %   supported.
 %
-%   To create the documentation \filenm{lwarp.pdf},
+%   To create the initial documentation \filenm{lwarp.pdf},
 %   execute \userentry{pdflatex lwarp.dtx}
 %
 % \item[To make the development files visible to other projects:] \
@@ -10619,6 +11488,7 @@
 %
 %   Inside this directory, create the file \filenm{update}, containing:
 % \begin{Verbatim}[gobble=2,obeytabs,tabsize=4,frame=lines]
+% rm lwarp-*.sty
 % ln -s /path_to_dev_directory/lwarp*.sty .
 % ln -s /path_to_dev_directory/lwarp_baseline_marker.png .
 % ln -s /path_to_dev_directory/lwarp_baseline_marker.eps .
@@ -10654,6 +11524,39 @@
 % setenv PATH ${HOME}/bin:/opt/texbin_local:/opt/texbin:${PATH}
 % \end{Verbatim}
 %
+% \item[To fully compile the \pkg{lwarp} documentation and indexes:] \ \null
+% \changes{v0.57}{2018/05/28}{Docs: Recreating the index for \pkg{lwarp} source.}
+% \changes{v0.87}{2020/05/17}{Docs: Updated docs to compile \pkg{lwarp} documentation.}
+% \gindex{documentation>compile}
+% \gindex{lwarp=\pkg{lwarp}>compiling documentation}
+% \begin{sourcedisplay}
+% pdflatex lwarp.ins \\
+% pdflatex lwarp.dtx \\
+% pdflatex lwarp.dtx \hfill \textgreen{<if necessary>} \\
+% makeindex -s gglo.ist -o lwarp.gls lwarp.glo \hfill \textgreen{<indexes>} \\
+% splitindex lwarp.idx -- -s gind.ist \\
+% pdflatex lwarp.dtx \\
+% pdflatex lwarp.dtx  \hfill \textgreen{<if necessary>} \\
+% makeindex -s gglo.ist -o lwarp.gls lwarp.glo \hfill \textgreen{<indexes>} \\
+% splitindex lwarp.idx -- -s gind.ist  \hfill \textgreen{<again>} \\
+% pdflatex lwarp.dtx \\
+% pdflatex lwarp.dtx  \hfill \textgreen{<if necessary>}
+% \end{sourcedisplay}
+% (The second round of index processing is required to fully resolve the
+% final Index of Indexes.)
+%
+% To make it easier to update the documentation after a minor change,
+% it is useful to create a command script called \filenm{make_index}, containing:
+% \begin{sourceverb}
+% makeindex -s gglo.ist -o lwarp.gls lwarp.glo
+% splitindex lwarp.idx -- -s gind.ist
+% \end{sourceverb}
+%
+% Note that Index of Indexes and the cross-references to the indexes
+% \trouble[references]{index>documentation references}
+% \trouble{documentation>index cross-references}
+% may not be correct until the above has been accomplished.
+%
 % \end{description}
 % 
 %
@@ -10920,10 +11823,13 @@
 % \item[\ctr{SideTOCDepth} < \ctr{FileDepth}:] A warning is displayed if these
 %   counters are set such that the side\TOC\ will not be able to access all pages
 %   of the website.
-% \item[Duplicate filenames:] \pkg{lwarp} may generate file names from section names.
-%   While doing so, the filenames are simplified and special characters are removed.
+% \item[Filenames:] \pkg{lwarp} may generate file names from section names.
+%   While doing so, the filenames are simplified, and special characters
+%   and math are removed.
 %   If this process generates a duplicate filename, and error is generated,
 %   describing the filename and which section name generated it.
+%   A warning is issued if dollar-delimited math is used.
+%   Parenthesis-delimited math is recommended instead.
 % \item[Multirow:] When \cs{multirow} or \cs{multicolrow} are used,
 %   \trouble[\HTML\ corrupted]{HTML>corrupted}
 %   \cs{mrowcell} or \cs{mcolrowcell} must be placed in the appropriate cells to
@@ -10930,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''.
@@ -10985,10 +11891,21 @@
 %		    that your document's \LaTeX{} code is correct, before attempting
 %		    to generate an \HTML\ version.
 %
-%       \item [\texttt{\cs{end}\{warpHTML\}, \cs{end}\{warpprint\}, \cs{end}\{warpall\}}:]
-%           \trouble{warpHTML}\trouble{warpprint}\trouble{warpall}
+%       \item [\texttt{\cs{end}\{warpHTML\}, \cs{end}\{warpprint\},
+%           \cs{end}\{warpall\}, \cs{end}\{warpMathJax\}}:] ~ \\
+%           \trouble{warpHTML}
+%           \trouble{warpprint}\trouble{warpall}\trouble{warpMathJax}
 %           Each of these must be without any other characters on the same line.
+%           \watchout[\env{warpHTML}, \env{warpprint}, \env{warpMathJax}, \env{warpall}] 
 %
+%       \item[``\texttt{Runaway argument? File ended while scanning use of \cs{next}}:] ~ \\
+%           \trouble{warpHTML}
+%           \trouble{warpprint}\trouble{warpall}\trouble{warpMathJax}
+%           \trouble{Runaway argument? File ended \dots}
+%           \trouble{File ended while scanning use of \cs{next}}
+%           Don't use \env{warpHTML}, \env{warpprint}, \env{warpall}, or
+%           \env{warpMathJax} inside itself.
+%
 %       \item [Options clash:] If using \pkg{memoir}, see \cref{sec:limitsmemoir}.
 %
 %       \item [``Missing \cs{begin}\{document\}.'':]
@@ -11029,6 +11946,12 @@
 %           \end{sourcedisplay}
 %           \trouble{Label(s) may have changed}
 %
+%       \item [``Temporary page! LaTeX was unable to guess the total
+%                           number of pages \dots'':] \
+%           Harmless.  Recompile the document one more time.
+%           \trouble{Temporary page \dots unable to guess \dots}
+%           \trouble{LaTeX was unable to guess the total\dots}
+%
 %         \item [``Leaders not followed by proper glue'':] ~ \\
 %           This can be caused by
 %           a missing |l@<floattype>| or |l@<sectiontype>| definition.
@@ -11050,8 +11973,16 @@
 %           \end{sourcedisplay}
 %           inside a group first.
 %
+%           As a stop-gap measure, you may wish to try incrementing
+%           \label{sec:troubletexboxes}
+%           \margintag{\ctr{LWR at texboxdepth}}
+%           the counter \ctr{LWR at texboxdepth} before the problematic
+%           macro, and then decrementing it after.
+%           Doing so tells \pkg{lwarp} to avoid using a \cs{newpage} inside
+%           the macro, which may avoid this error.
+%
 %           Also, custom macros which appear inside a section,
-%           \trouble[macros in section,table,figure names]{sectioning>macro in name}
+%           \trouble[macros in section, table, figure names]{sectioning>macro in name}
 %           \trouble{table>macro in name}
 %           \trouble{figure>macro in name}
 %           figure, or table name should be
@@ -11061,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}.
@@ -11080,6 +12011,27 @@
 %           define new macros for print and \HTML\ modes, see \cref{sec:definingprinthtml}
 %           regarding \cs{LWR at expandableformatted}.
 %
+%       \item[''\texttt{Token not allowed in a PDF string}'':] This \pkg{hyperref}
+%           \trouble{Token not allowed in a PDF string}
+%           \trouble{hyperref=\pkg{hyperref}>Token not allowed in a PDF string}
+%           warning appears while creating the print-mode document, not \HTML.
+%           A low-level macro is being used in a section name which appears
+%           in the \PDF\ bookmarks.  \pkg{hyperref} removes this macro from
+%           the bookmark, and warns of doing so.
+%           To avoid this warning, use \cs{pdfstringdefDisableCommands} in
+%           the preamble to define simplified replacement macros for each, or use
+%           \cs{texorpdfstring} in the \cs{section} or related macro
+%           to declare what to use for the \TeX\ text, v.s. the \PDF\ bookmark.
+%           See the \pkg{hyperref} manual.
+%
+%       \item[``\texttt{Command \cs{textquoteright} invalid in math mode}'':] This
+%           \trouble[quote character]{Command \cs{textquoteright} invalid in math mode}
+%           \trouble{math>Command \cs{textquoteright} invalid in math mode}
+%           \trouble{textquoteright=\cs{textquoteright} invalid in math mode}
+%           can occur when the document source has math containing
+%           the slanted quote |’| character, instead of using
+%           the upright quote |'| character.
+%
 %       \item[Complicated objects inside math:] Some objects, such as \tikz,
 %           \trouble[``impure'' math objects]{math>non-math contents}
 %           may not compile in \pkg{lwarp}'s normal math emulation.
@@ -11168,7 +12120,7 @@
 %	\item Enter \cmds{lwarpmk limages} to refresh the \env{lateximage} images.
 %	\end{itemize}
 %
-% \item[SVG images:] \
+% \item[\SVG\ images:] \
 %
 % \limitssvgimages
 %
@@ -11523,8 +12475,12 @@
 % \changes{v0.63}{2018/11/25}{Added p\TeX support.}
 % \changes{v0.79}{2020/01/05}{\pkg{luatex85}: Removed.}
 % \changes{v0.79}{2020/01/05}{\pkg{ifpdf}, \pkg{ifptex}: Provided by \pkg{iftex}.}
+% \changes{v0.87}{2020/05/21}{\pkg{ifpdf}, \pkg{ifptex}: Restored to work on TL2019 and earlier.}
+% ^^A *8* remove ifpdf, ifptex
 %    \begin{macrocode}
 \RequirePackage{iftex}[2019/11/07]
+\RequirePackage{ifpdf}
+\RequirePackage{ifptex}
 
 \newif\ifxetexorluatex
 
@@ -11610,14 +12566,17 @@
         {%
             Package #1,\MessageBreak
             or one which uses #1,\MessageBreak
-            must be loaded after lwarp
+            must be loaded after Lwarp.\MessageBreak
+            Enter 'H' for possible solutions%
         }
-        {Move \detokenize{\usepackage}{#1} after
-        \detokenize{\usepackage}{lwarp}.\MessageBreak
-        Package #1 may also be loaded by something else,\MessageBreak
-        which must also be moved after lwarp.}
+        {%
+            Move ``\protect\usepackage{#1}'' after
+            ``\protect\usepackage{lwarp}''.\MessageBreak
+            Package #1 may also be loaded by something else,\MessageBreak
+            which must also be moved after Lwarp.%
+        }
 }
-{}
+{\relax}
 }
 %    \end{macrocode}
 % \end{macro}
@@ -11668,11 +12627,14 @@
 %    \begin{macrocode}
 \newcommand*{\LWR at loadbefore}[1]{%
 \@ifpackageloaded{#1}
-{}
+{\relax}
 {
     \PackageError{lwarp}
-    {Package #1 must be loaded before lwarp}
-    {Move \detokenize{\usepackage}{#1} before \detokenize{\usepackage}{lwarp}.}
+    {%
+        Package #1 must be loaded before lwarp.\MessageBreak
+        Enter 'H' for possible solutions%
+    }
+    {Move ``\protect\usepackage{#1}'' before ``\protect\usepackage{lwarp}''.}
 }
 }
 %    \end{macrocode}
@@ -11709,7 +12671,9 @@
 {%
     Package #1 is not supported\MessageBreak
     by lwarp's HTML conversion.\MessageBreak
-    Package(s) #2 may be useful instead%
+    Package(s)\MessageBreak
+    \space\space#2\MessageBreak
+    may be useful instead%
 }
 {%
     Package #1 might conflict with lwarp in some way,\MessageBreak
@@ -11778,7 +12742,7 @@
     or is superceded by another class.\MessageBreak
     For a possible alternative, see class(es) #2.
 }
-}{}%
+}{\relax}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -11794,7 +12758,13 @@
 % \changes{v0.68}{2019/02/26}{Prevented \pkg{alg}, \pkg{algorithmic}, \pkg{fncylab}, \pkg{pdfcprot}.}
 % \changes{v0.80}{2020/02/15}{Prevented \pkg{formula}, \pkg{shadethm}, \pkg{slashbox}.}
 % \changes{v0.81}{2020/02/15}{Prevented \pkg{statex}.}
+% \changes{v0.87}{2020/05/14}{Prevented \pkg{csvtools}.}
+% \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}
 \LWR at earlyclassloadnever{jarticle}{ujarticle}
 \LWR at earlyclassloadnever{jbook}{ujbook}
@@ -11808,23 +12778,21 @@
 \LWR at earlyloadnever{alg}{algorithm2e, algorithmicx}
 \LWR at earlyloadnever{algorithmic}{algorithm2e, algorithmicx}
 \LWR at earlyloadnever{bitfield}{bytefield}
-\LWR at earlyloadnever{boxedminipage}{boxedminipage2e}
 \LWR at earlyloadnever{caption2}{caption}
 % \LWR at earlyloadnever{ccaption}{caption}% might be preloaded by memoir
 \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}
 \LWR at earlyloadnever{glossary}{glossaries}
 \LWR at earlyloadnever{hyper}{hyperref}
+\LWR at earlyloadnever{libgreek}{libertinust1math, newtx}
 \LWR at earlyloadnever{newthm}{ntheorem}
 \LWR at earlyloadnever{pdfcprot}{microtype}
-\LWR at earlyloadnever{picinpar}{floatflt, wrapfig}
 \LWR at earlyloadnever{picins}{floatflt, wrapfig}
 \LWR at earlyloadnever{rplain}{fancyhdr}
-\LWR at earlyloadnever{shadethm}{mdframed}
 \LWR at earlyloadnever{si}{siunitx}
 \LWR at earlyloadnever{sistyle}{siunitx}
 \LWR at earlyloadnever{slashbox}{diagbox}
@@ -11860,6 +12828,7 @@
 % \changes{v0.45}{2017/12/03}{Allows \pkg{memoir}'s preloaded packages.}
 % \changes{v0.58}{2018/06/21}{Fix: \pkg{memoir} and \pkg{ccaption}.}
 % \changes{v0.82}{2020/03/17}{\pkg{syntonly}: Added to \cs{LWR at loadafter}.}
+% \changes{v0.89}{2020/08/12}{Allow preload of \pkg{amsmath}, \pkg{amsthm}, \pkg{centernot}.}
 %
 % The following packages must be loaded after \pkg{lwarp}:
 % ^^A *loadafter
@@ -11871,6 +12840,7 @@
 \LWR at loadafter{a5comb}
 \LWR at notmemoirloadafter{abstract}
 \LWR at loadafter{academicons}
+\LWR at loadafter{accents}
 \LWR at loadafter{accessibility}
 \LWR at loadafter{accsupp}
 \LWR at loadafter{acro}
@@ -11881,8 +12851,9 @@
 \LWR at loadafter{algorithm2e}
 \LWR at loadafter{algorithmicx}
 \LWR at loadafter{alltt}
-\LWR at loadafter{amsmath}
-\LWR at loadafter{amsthm}
+\LWR at loadafter{amscdx}
+% \LWR at loadafter{amsmath}% may be preloaded
+% \LWR at loadafter{amsthm}% may be preloaded
 \LWR at loadafter{anonchap}
 \LWR at loadafter{anysize}
 \LWR at notmemoirloadafter{appendix}
@@ -11891,10 +12862,11 @@
 \LWR at notmemoirloadafter{array}
 \LWR at loadafter{arydshln}
 \LWR at loadafter{asymptote}
-% \LWR at loadafter{atbegshi}% used by morewrites
+% \LWR at loadafter{atbegshi}% now in LaTeX core, also used by morewrites
 \LWR at loadafter{attachfile}
 \LWR at loadafter{attachfile2}
 \LWR at loadafter{authblk}
+\LWR at loadafter{authoraftertitle}% Supported as-is, but must be loaded after.
 \LWR at loadafter{autobreak}
 \LWR at loadafter{autonum}
 \LWR at loadafter{awesomebox}
@@ -11915,11 +12887,13 @@
 \LWR at notmemoirloadafter{booktabs}
 \LWR at loadafter{bophook}
 \LWR at loadafter{bounddvi}
+\LWR at loadafter{boxedminipage}
 \LWR at loadafter{boxedminipage2e}
 \LWR at loadafter{braket}
 \LWR at loadafter{breakurl}
 \LWR at loadafter{breqn}
 \LWR at loadafter{bsheaders}
+\LWR at loadafter{bussproofs}
 \LWR at loadafter{bxpapersize}
 \LWR at loadafter{bytefield}
 \LWR at loadafter{cancel}
@@ -11926,10 +12900,11 @@
 \LWR at loadafter{canoniclayout}
 \LWR at loadafter{caption}
 \LWR at loadafter{caption2}
+\LWR at loadafter{caption3}
 \LWR at loadafter{cases}
 % catoptions is supported by the lwarp core
 % \LWR at loadafter{ccaption}% may be preloaded by memoir
-\LWR at loadafter{centernot}
+% \LWR at loadafter{centernot}% may be preloaded by newtx
 \LWR at loadafter{changebar}
 \LWR at loadafter{changelayout}
 \LWR at notmemoirloadafter{changepage}
@@ -11944,6 +12919,9 @@
 \LWR at loadafter{chkfloat}
 \LWR at notmemoirloadafter{chngpage}
 \LWR at loadafter{cite}
+\LWR at loadafter{citeref}
+\LWR at loadafter{cleveref}
+% cmbright may be preloaded
 \LWR at loadafter{cmdtrack}
 \LWR at loadafter{colonequals}
 \LWR at loadafter{color}
@@ -11967,6 +12945,7 @@
 \LWR at loadafter{draftcopy}
 \LWR at loadafter{draftfigure}
 \LWR at loadafter{draftwatermark}
+\LWR at loadafter{drftcite}
 \LWR at loadafter{easy-todo}
 \LWR at loadafter{ebook}
 \LWR at loadafter{econometrics}
@@ -11981,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}
@@ -11988,10 +12968,11 @@
 \LWR at loadafter{eqparbox}
 \LWR at loadafter{errata}
 \LWR at loadafter{eso-pic}
+\LWR at loadafter{esvect}
 \LWR at loadafter{etoc}
 \LWR at loadafter{eurosym}
 \LWR at loadafter{everypage}
-\LWR at loadafter{everyshi}
+% \LWR at loadafter{everyshi}% now in LaTeX core
 \LWR at loadafter{extarrows}
 \LWR at loadafter{extramarks}
 \LWR at loadafter{fancybox}
@@ -11999,11 +12980,13 @@
 \LWR at loadafter{fancyref}
 \LWR at loadafter{fancytabs}
 \LWR at loadafter{fancyvrb}
+\LWR at loadafter{fbox}
 \LWR at loadafter{fewerfloatpages}
 \LWR at loadafter{figcaps}
 \LWR at loadafter{figsize}
 \LWR at loadafter{fitbox}
 \LWR at loadafter{fix2col}
+\LWR at loadafter{fixmath}
 \LWR at loadafter{fixme}
 \LWR at loadafter{fixmetodonotes}
 \LWR at loadafter{flafter}
@@ -12032,6 +13015,7 @@
 \LWR at loadafter{foreign}
 \LWR at loadafter{forest}
 \LWR at loadafter{fouridx}
+% fourier may be loaded before lwarp
 \LWR at loadafter{framed}
 \LWR at loadafter{ftcap}
 \LWR at loadafter{ftnright}
@@ -12038,11 +13022,13 @@
 \LWR at loadafter{fullminipage}
 \LWR at loadafter{fullpage}
 \LWR at loadafter{fullwidth}
+\LWR at loadafter{fvextra}
 \LWR at loadafter{fwlw}
 \LWR at loadafter{gensymb}
 \LWR at loadafter{gentombow}
 % geometry is always loaded by lwarp, and lwarp-geometry is AtBeginDocument
 \LWR at loadafter{ghsystem}
+\LWR at loadafter{gindex}
 \LWR at loadafter{glossaries}
 \LWR at loadafter{gmeometric}
 % \LWR at loadafter{graphics}% pre-loaded by xunicode
@@ -12055,7 +13041,9 @@
 \LWR at loadafter{gridset}
 \LWR at loadafter{hang}
 \LWR at loadafter{hanging}
+\LWR at loadafter{hepunits}
 \LWR at loadafter{hhline}
+\LWR at loadafter{hhtensor}
 \LWR at loadafter{hypbmsec}
 \LWR at loadafter{hypcap}
 \LWR at loadafter{hypdestopt}
@@ -12066,13 +13054,20 @@
 \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}
+\LWR at loadafter{keystroke}
+% kpfonts may be loaded before lwarp
+% kpfonts-otf may be loaded before lwarp
 \LWR at loadafter{layaureo}
 \LWR at loadafter{layout}
 \LWR at loadafter{layouts}
@@ -12080,11 +13075,13 @@
 \LWR at loadafter{leftidx}
 \LWR at loadafter{letterspace}
 \LWR at loadafter{lettrine}
+% libertinust1math may be loaded before lwarp
 \LWR at loadafter{lineno}
 \LWR at loadafter{lips}
 \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}
@@ -12095,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}
@@ -12103,14 +13101,24 @@
 \LWR at loadafter{marginfix}
 \LWR at loadafter{marginnote}
 \LWR at loadafter{marvosym}
+% mathalpha may be loaded before lwarp
+\LWR at loadafter{mathastext}
 \LWR at loadafter{mathcomp}
+\LWR at loadafter{mathdesign}
 \LWR at loadafter{mathdots}
 \LWR at loadafter{mathfixs}
+\LWR at loadafter{mathpazo}
+\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}
 \LWR at loadafter{metalogo}
 \LWR at loadafter{metalogox}
 \LWR at loadafter{mhchem}
@@ -12119,12 +13127,15 @@
 \LWR at loadafter{midpage}
 \LWR at loadafter{minibox}
 \LWR at loadafter{minitoc}
+\LWR at loadafter{minted}
 \LWR at loadafter{mismath}
+\LWR at loadafter{mleftright}
 % morefloats must be allowed early for print mode
 \LWR at notmemoirloadafter{moreverb}
 % morewrites must be loaded before lwarp
 \LWR at notmemoirloadafter{movie15}
 \LWR at notmemoirloadafter{mparhack}
+\LWR at loadafter{multibib}
 \LWR at loadafter{multicap}
 %\LWR at loadafter{multicol}% loaded by ltxdoc
 \LWR at loadafter{multicolrule}
@@ -12141,11 +13152,14 @@
 \LWR at loadafter{nccmath}
 \LWR at notmemoirloadafter{needspace}
 % newclude must be loaded before lwarp
-\LWR at loadafter{newtxmath}
+% newpxmath may be preloaded
+% newtxmath may be loaded before lwarp
+% newtxsf may be loaded before lwarp
 % newunicodechar must be loaded before lwarp
 \LWR at notmemoirloadafter{nextpage}
 \LWR at loadafter{nicefrac}
 \LWR at loadafter{niceframe}
+\LWR at loadafter{nicematrix}
 \LWR at loadafter{noitcrul}
 \LWR at loadafter{nolbreaks}
 \LWR at loadafter{nomencl}
@@ -12187,7 +13201,9 @@
 \LWR at loadafter{phfqit}
 \LWR at loadafter{physics}
 \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}
@@ -12195,6 +13211,7 @@
 \LWR at loadafter{plextarydshln}
 \LWR at loadafter{plcolortbl}
 \LWR at loadafter{plextdelarray}
+\LWR at loadafter{plimsoll}
 \LWR at loadafter{prelim2e}
 \LWR at loadafter{prettyref}
 \LWR at loadafter{preview}
@@ -12205,6 +13222,7 @@
 \LWR at loadafter{pstricks}
 % \LWR at loadafter{pxatbegshi}% may be used by morewrites
 \LWR at loadafter{pxeveryshi}
+% \LWR at loadafter{pxfonts}% may be loaded before lwarp
 \LWR at loadafter{pxftnright}
 \LWR at loadafter{pxjahyper}
 \LWR at loadafter{quotchap}
@@ -12217,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}
@@ -12226,6 +13245,7 @@
 \LWR at loadafter{rviewport}
 \LWR at loadafter{savetrees}
 % scalefnt is loaded by babel-french
+\LWR at loadafter{scalerel}
 \LWR at loadafter{schemata}
 \LWR at loadafter{scrextend}
 \LWR at loadafter{scrhack}
@@ -12236,6 +13256,7 @@
 \LWR at loadafter{section}
 \LWR at loadafter{sectionbreak}
 \LWR at loadafter{sectsty}
+\LWR at loadafter{selectp}
 \LWR at loadafter{semantic-markup}
 \LWR at notmemoirloadafter{setspace}
 \LWR at loadafter{shadow}
@@ -12243,15 +13264,19 @@
 \LWR at notmemoirloadafter{showidx}
 \LWR at loadafter{showkeys}
 \LWR at loadafter{showtags}
+\LWR at loadafter{shuffle}
 \LWR at loadafter{sidecap}
 \LWR at loadafter{sidenotes}
+\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}
 \LWR at loadafter{soulpos}
 \LWR at loadafter{soulutf8}
+\LWR at loadafter{splitbib}
 \LWR at loadafter{splitidx}
 \LWR at loadafter{srcltx}
 \LWR at loadafter{srctex}
@@ -12259,6 +13284,7 @@
 \LWR at loadafter{stackengine}
 \LWR at loadafter{stackrel}
 \LWR at loadafter{statex2}
+\LWR at loadafter{statistics}
 \LWR at loadafter{statmath}
 \LWR at loadafter{steinmetz}
 \LWR at notltjloadafter{stfloats}
@@ -12269,6 +13295,7 @@
 \LWR at loadafter{subsupscripts}
 \LWR at loadafter{supertabular}
 \LWR at loadafter{svg}
+\LWR at loadafter{swfigure}
 \LWR at loadafter{syntonly}
 \LWR at loadafter{t1inc}
 \LWR at loadafter{tabfigures}
@@ -12276,8 +13303,11 @@
 \LWR at loadafter{tablefootnote}
 \LWR at notmemoirloadafter{tabularx}
 \LWR at loadafter{tabulary}
+\LWR at loadafter{tagpdf}
 \LWR at loadafter{tascmac}
-\LWR at loadafter{tagpdf}
+\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
 \LWR at loadafter{textfit}
@@ -12284,6 +13314,10 @@
 \LWR at loadafter{textpos}
 \LWR at loadafter{theorem}
 \LWR at loadafter{thinsp}
+\LWR at loadafter{thm-listof}
+\LWR at loadafter{thm-restate}
+\LWR at loadafter{thmbox}
+\LWR at loadafter{thmtools}
 \LWR at loadafter{threadcol}
 \LWR at loadafter{threeparttable}
 \LWR at loadafter{threeparttablex}
@@ -12290,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}
@@ -12310,6 +13345,8 @@
 \LWR at loadafter{truncate}
 \LWR at loadafter{turnthepage}
 \LWR at loadafter{twoup}
+% \LWR at loadafter{txfonts}% may be loaded before lwarp
+% txgreeks may be loaded before lwarp
 %    \end{macrocode}
 % \changes{v0.44}{2017/11/19}{Adjustment for \pkg{koma-script}.}
 %    \begin{macrocode}
@@ -12318,13 +13355,15 @@
 % \LWR at loadafter{ulem}% preloaded by ctexart and related classes
 \LWR at loadafter{umoline}
 \LWR at loadafter{underscore}
-\LWR at loadafter{unicode-math}
+% unicode-math may be loaded before lwarp
 \LWR at loadafter{units}
 \LWR at loadafter{unitsdef}
+\LWR at loadafter{upgreek}
 \LWR at loadafter{upref}
 \LWR at loadafter{url}
+\LWR at loadafter{ushort}
 \LWR at loadafter{uspace}
-\LWR at loadafter{varioref}% no lwarp package provided
+\LWR at loadafter{varioref}
 \LWR at notmemoirloadafter{verse}
 \LWR at loadafter{versonotes}
 \LWR at loadafter{vertbars}
@@ -12343,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}
@@ -12368,9 +13408,12 @@
 %
 %    \begin{macrocode}
 \newcommand{\LWR at mdfive}[1]{%
-\PackageError{lwarp}
-{No MD5 macro was found}
-{Lwarp must find the macros pdfmdfivesum or mdfivesum.}
+    \PackageError{lwarp}
+        {No MD5 macro was found}
+        {%
+            Lwarp must find the macros \protect\pdfmdfivesum\space
+            or \protect\mdfivesum.%
+        }
 }
 %    \end{macrocode}
 %
@@ -12441,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
@@ -12499,7 +13542,8 @@
                 {%
                     Lwarp requires a vector font.\MessageBreak
                     Install and load cm-super, lmodern, or another\MessageBreak
-                    Type-1 vector font before loading lwarp%
+                    Type-1 vector font before loading lwarp.\MessageBreak
+                    Enter 'H' for possible solutions%
                 }
                 {%
                     Install cm-super or lmodern.\MessageBreak
@@ -12516,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}.}
@@ -12532,11 +13576,48 @@
 %
 %
 %
+% \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}
 %
 %
+% \subsection{Variables}
+%
+%    \begin{macrocode}
+\newlength{\LWR at templengthone}
+\newlength{\LWR at templengthtwo}
+\newlength{\LWR at templengththree}
+\newcounter{LWR at tempcountone}
+%    \end{macrocode}
+%
+%
 % \subsection{Lengths and units}
 %
 % \begin{macro}{\LWR at providelength} \marg{\cs{lengthname}}
@@ -12593,11 +13674,16 @@
 % \begin{macro}{\LWR at patcherror} \marg{packagename} \marg{macroname}
 %
 % Prints an error if could not patch a macro.
+% \changes{v0.89}{2020/09/01}{Improved message.}
 %    \begin{macrocode}
 \newcommand*{\LWR at patcherror}[2]{%
-\PackageError{lwarp}
-{Unable to patch package #1, macro #2}
-{Please contact the author of the Lwarp package.}
+    \PackageError{lwarp}%
+        {%
+            Unable to patch package #1,\MessageBreak
+            macro \LWRbackslash #2.\MessageBreak
+            Lwarp or #1 may need to be updated%
+        }%
+        {Please contact the maintainer of the Lwarp package.}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -12674,7 +13760,32 @@
 % \end{macro}
 %
 %
+% \subsection{Inside boxes}
 %
+% Greater than zero if currently inside a \TeX\ box,
+% thus should not use \cs{LWR at orignewpage}.
+% See \cref{sec:troubletexboxes}.
+% \changes{v0.88}{2020/06/06}{Added \ctr{LWR at texboxdepth}.}
+%    \begin{macrocode}
+\newcounter{LWR at texboxdepth}
+\setcounter{LWR at texboxdepth}{0}
+%    \end{macrocode}
+%
+% \begin{macro}{\LWR at maybe@orignewpage}
+% Only do \cs{LWR at orignewpage} if not inside a \TeX\ box.
+% \changes{v0.88}{2020/06/06}{Added.}
+%    \begin{macrocode}
+\newcommand*{\LWR at maybe@orignewpage}{%
+    \LWR at traceinfo{LWR at maybe@orignewpage}%
+    \ifnumgreater{\value{LWR at texboxdepth}}{0}
+        {}%
+        {\LWR at orignewpage}%
+    \LWR at traceinfo{LWR at maybe@orignewpage done}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+%
 % \subsection{Global boxes}
 %
 % \begin{macro}{\LWR at gsavebox} \marg{macroname} \marg{contents}
@@ -12728,7 +13839,8 @@
 % Results in the macro name without the leading backslash.
 %
 % Ref: \href{https://tex.stackexchange.com/questions/42318/removing-a-backslash-from-a-character-sequence}
-%       {\texttt{https://tex.stackexchange.com/questions/42318/removing-a-backslash-from-a-character-sequence}}
+%       {\texttt{https://tex.stackexchange.com/questions/42318/ \\
+%           \hspace*{\fill}removing-a-backslash-from-a-character-sequence}}
 %
 % \changes{v0.79}{2020/01/18}{Added.}
 %    \begin{macrocode}
@@ -12742,6 +13854,55 @@
 % \end{macro}
 %
 %
+% \subsection{Title case}
+%
+% \begin{macro}{\LWRtexttitlecase}
+%    \begin{macrocode}
+\ExplSyntaxOn
+\newcommand*{\LWRtexttitlecase}[1]{%
+    \text_titlecase:n{#1}%
+}
+\ExplSyntaxOff
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{LetLtxMacrocs}
+%
+% \begin{macro}{\LWR at LetLtxMacrocs} \marg{newcsname} \marg{oldcsname}
+%
+% \cs{LetLtxMacro} with cs names.
+%
+% \changes{v0.88}{2020/07/05}{Added.}
+%    \begin{macrocode}
+\newcommand*{\LWR at LetLtxMacrocs}[2]{%
+    \expandafter\LetLtxMacro\csname #1\expandafter\endcsname%
+    \csname#2\endcsname%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Absorbing a star}
+%
+% \begin{macro}{\LWR at absorbstar} \marg{csname}
+%
+% Modifies a macro to aborb a star.
+% Used for \pkg{cleveref}, since \pkg{hyperref} is emulated, so the
+% starred macros are not created by \pkg{cleveref}.
+%
+% \changes{v0.88}{2020/07/05}{Added.}
+%    \begin{macrocode}
+\newcommand*{\LWR at absorbstar}[1]{%
+    \LWR at LetLtxMacrocs{LWR at origns@#1}{#1}%
+    \csdef{#1}{\@ifstar{\csuse{LWR at origns@#1}}{\csuse{LWR at origns@#1}}}
+    \expandafter\robustify\csname #1\endcsname
+}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+%
 % \section{Operating-System portability}
 % \label{sec:OSportability}
 % \changes{v0.11}{2016/03/11}{Added section: Operating-System portability.}
@@ -12960,9 +14121,9 @@
 %
 %    \begin{macrocode}
 \DeclareVoidOption{warpprint}{%
-\PackageInfo{lwarp}{Using option 'warpprint'}
-\booltrue{warpingprint}%
-\boolfalse{warpingHTML}%
+    \PackageInfo{lwarp}{Using option 'warpprint'}
+    \booltrue{warpingprint}%
+    \boolfalse{warpingHTML}%
 }
 %    \end{macrocode}
 
@@ -12976,9 +14137,9 @@
 %
 %    \begin{macrocode}
 \DeclareVoidOption{warpHTML}{%
-\PackageInfo{lwarp}{Using option 'warpHTML'}%
-\booltrue{warpingHTML}%
-\boolfalse{warpingprint}%
+    \PackageInfo{lwarp}{Using option 'warpHTML'}%
+    \booltrue{warpingHTML}%
+    \boolfalse{warpingprint}%
 }
 %    \end{macrocode}
 %
@@ -12996,9 +14157,9 @@
 % and may be used for \cs{ifbool} tests.
 %    \begin{macrocode}
 \DeclareVoidOption{mathsvg}{%
-\PackageInfo{lwarp}{Using option 'mathsvg'}
-\boolfalse{mathjax}%
-\boolfalse{LWR at origmathjax}%
+    \PackageInfo{lwarp}{Using option 'mathsvg'}
+    \boolfalse{mathjax}%
+    \boolfalse{LWR at origmathjax}%
 %    \end{macrocode}
 % ^^A %    \begin{macrocode}
 % ^^A \boolfalse{mathKaTeX}%
@@ -13014,9 +14175,9 @@
 % If the \optn{mathjax} option is given, boolean |mathjax| is true, may be used for \cs{ifbool} tests.
 %    \begin{macrocode}
 \DeclareVoidOption{mathjax}{%
-\PackageInfo{lwarp}{Using option 'mathjax'}
-\booltrue{mathjax}%
-\booltrue{LWR at origmathjax}%
+    \PackageInfo{lwarp}{Using option 'mathjax'}
+    \booltrue{mathjax}%
+    \booltrue{LWR at origmathjax}%
 %    \end{macrocode}
 % ^^A %    \begin{macrocode}
 % ^^A \boolfalse{mathKaTeX}%
@@ -13081,8 +14242,8 @@
 
 % \DescribeOption{makeindexStyle} Selects a custom |.ist| file.
 % \DescribeDefault{lwarp.ist}
-% A customized file should be based on |lwarp.ist|, and must retain
-% the lines related to \cs{hyperindexref}.
+% A customized file should be based on |lwarp.ist|.
+% See \cref{sec:modifymakeindex}.
 %
 % \changes{v0.58}{2018/06/21}{Added option \optn{makeindexStyle.}}
 %
@@ -13093,11 +14254,8 @@
 
 % \DescribeOption{xindyStyle} Selects a custom |.xdy| file.
 % \DescribeDefault{lwarp.xdy}
-% A customized file should be based on |lwarp.xdy|, and must retain
-% the line
-% \begin{Verbatim}[gobble=2]
-% (markup-locref :open "\hyperindexref{" :close "}")
-% \end{Verbatim}
+% A customized file should be based on |lwarp.xdy|.
+% See \cref{sec:modifyxindy}.
 %
 % \changes{v0.30}{2017/04/28}{Option \optn{xdyFilename} added.}
 % \changes{v0.54}{2018/04/06}{Option \optn{xdyFilename} changed to \optn{xindyStyle.}}
@@ -13107,7 +14265,7 @@
 %    \end{macrocode}
 
 
-% \DescribeOption{xindyLanguage} Sets the \pkg{xindy} language to be assigned
+% \DescribeOption{xindyLanguage} Sets the \prog{xindy} language to be assigned
 % \DescribeDefault{english}
 %	in \prog{lwarpmk}'s configuration files.  This is then used by \prog{lwarpmk} while
 %	processing the index and glossary.
@@ -13121,7 +14279,7 @@
 %    \end{macrocode}
 
 
-% \DescribeOption{xindyCodepage} Sets the \pkg{xindy} codepage to be assigned
+% \DescribeOption{xindyCodepage} Sets the \prog{xindy} codepage to be assigned
 % \DescribeDefault{utf8}
 %   in \prog{lwarpmk}'s configuration files.  This is then used by \prog{lwarpmk} while
 %   processing the index.
@@ -13135,6 +14293,18 @@
 
 
 
+% \DescribeOption{xindexConfig} Selects a custom |xindex-*.lua| file.
+% \DescribeDefault{<empty>}
+% A customized file should be based on |xindex-cfg.lua|.
+% See \cref{sec:modifyxindex}.
+
+% \changes{v0.88}{2020/07/08}{Option \optn{xindexConfig} added.}
+%    \begin{macrocode}
+\DeclareStringOption[]{xindexConfig}
+%    \end{macrocode}
+
+
+
 % \limitspdftotextenc
 %
 % \changes{v0.54}{2018/04/06}{Add: \optn{pdftotextEnc}.}
@@ -13156,8 +14326,8 @@
 \boolfalse{LWR at creatinglwarpmk}
 
 \DeclareVoidOption{lwarpmk}{
-\PackageInfo{lwarp}{Using option 'lwarpmk'}
-\booltrue{LWR at creatinglwarpmk}
+    \PackageInfo{lwarp}{Using option 'lwarpmk'}
+    \booltrue{LWR at creatinglwarpmk}
 }
 %    \end{macrocode}
 
@@ -13173,8 +14343,8 @@
 %
 %    \begin{macrocode}
 \DeclareVoidOption{OSWindows}{
-\PackageInfo{lwarp}{Using option 'OSWindows'}
-\LWR at setOSWindows
+    \PackageInfo{lwarp}{Using option 'OSWindows'}
+    \LWR at setOSWindows
 }
 %    \end{macrocode}
 
@@ -13246,7 +14416,7 @@
 %    \end{macrocode}
 
 % \DescribeOption{makeindex} Tells \pkg{lwarp} to
-%   use \pkg{makeindex} for index generation.
+%   use \prog{makeindex} for index generation.
 %   When \filenm{lwarpmk.conf} and \filenm{*.lwarpmkconf} are generated,
 %   \optn{PrintIndexCmd} and \optn{HTMLIndexCmd} will be set for \prog{makeindex}
 %   with a single index file.
@@ -13257,7 +14427,7 @@
 
 
 % \DescribeOption{xindy} Tells \pkg{lwarp} to
-%   use \pkg{xindy} for index generation.
+%   use \prog{xindy} for index generation.
 %   When \filenm{lwarpmk.conf} and \filenm{*.lwarpmkconf} are generated,
 %   \optn{PrintIndexCmd} and \optn{HTMLIndexCmd} will be set for \prog{xindy}
 %   with a single index file.
@@ -13267,6 +14437,28 @@
 %    \end{macrocode}
 
 
+% \DescribeOption{xindex} Tells \pkg{lwarp} to
+%   use \prog{xindex} for index generation.
+%   When \filenm{lwarpmk.conf} and \filenm{*.lwarpmkconf} are generated,
+%   \optn{PrintIndexCmd} and \optn{HTMLIndexCmd} will be set for \prog{xindex}
+%   with a single index file.
+% \changes{v0.88}{2020/07/08}{Added \optn{xindex} option.}
+%    \begin{macrocode}
+\DeclareBoolOption[false]{xindex}
+%    \end{macrocode}
+
+
+% \DescribeOption{IndexRef}
+%   \DescribeDefault{cref}
+%   Tells \pkg{lwarp} how to
+%   display the index entries in \HTML output.
+%   See \cref{sec:optionindexref}.
+% \changes{v0.88}{2020/07/18}{Added \optn{IndexRef} option.}
+%    \begin{macrocode}
+\DeclareStringOption[cref]{IndexRef}
+%    \end{macrocode}
+
+
 % \DescribeOption{GlossaryCmd} \DescribeDefault{makeglossaries}
 % The shell command to use to compile the glossary.
 % The print or \HTML\ version of the glossary filename will be appended to this command.
@@ -13392,7 +14584,8 @@
 % \cs{LWR at PrintIndexCmd} and \cs{LWR at HTMLIndexCmd} are tested to see if they are empty.
 % If so, they are set to a reasonable defaults for a single index using \prog{makeindex},
 % then possibly set to defaults for \prog{xindy}
-% if the \pkg{lwarp} \optn{xindy} option was selected.
+% if the \pkg{lwarp} \optn{xindy} option was selected,
+% then likewise for \prog{xindex} if the \optn{xindex} option was selected.
 %
 %    \begin{macrocode}
 \ifdefempty{\LWR at PrintIndexCmd}{
@@ -13408,6 +14601,20 @@
             \jobname.idx%
         }
     }{}
+    \ifbool{LWR at xindex}{
+        \ifdefvoid{\LWR at xindexConfig}{
+            \renewcommand{\LWR at PrintIndexCmd}{%
+                xindex
+                \jobname.idx%
+            }
+        }{
+            \renewcommand{\LWR at PrintIndexCmd}{%
+                xindex
+                -c \LWR at xindexConfig \space
+                \jobname.idx%
+            }
+        }
+    }{}
 }{}
 
 \ifdefempty{\LWR at HTMLIndexCmd}{
@@ -13423,6 +14630,20 @@
             \jobname_html.idx%
         }
     }{}
+    \ifbool{LWR at xindex}{
+        \ifdefvoid{\LWR at xindexConfig}{
+            \renewcommand{\LWR at HTMLIndexCmd}{%
+                xindex
+                \jobname_html.idx%
+            }
+        }{
+            \renewcommand{\LWR at HTMLIndexCmd}{%
+                xindex
+                -c \LWR at xindexConfig \space
+                \jobname_html.idx%
+            }
+        }
+    }{}
 }{}
 
 \ifdefempty{\LWR at LatexmkIndexCmd}{
@@ -13437,11 +14658,22 @@
             -C \LWR at xindyCodepage%
         }
     }{}
+    \ifbool{LWR at xindex}{
+        \ifdefvoid{\LWR at xindexConfig}{
+            \renewcommand{\LWR at LatexmkIndexCmd}{%
+                xindex
+            }
+        }{
+            \renewcommand{\LWR at LatexmkIndexCmd}{%
+                xindex
+                -c \LWR at xindexConfig
+            }
+        }
+    }{}
 }{}
 %    \end{macrocode}
 %
 %
-%
 % \subsection{Conditional compilation}
 %
 % \begin{macro}{\warpprintonly} \marg{contents}
@@ -13474,28 +14706,63 @@
 %    \end{macrocode}
 
 
-% Use |comment_print.cut| for print mode, and
-% |comment_html.cut| for \HTML\ mode.
-% This helps \prog{latexmk} to more reliably know whether to recompile.
+% \begin{macro}{\LWR at includecomment} \marg{env name} \marg{partial filename}
+% \begin{macro}{\LWR at excludecomment} \marg{env name} \marg{partial filename}
 %
-% \changes{v0.37}{2017/08/19}{\pkg{comment}: Maintains independent
-%   cutfiles for print, \HTML.}
-%
+% Use many \pkg{comment} cut files to avoid collision in case the
+% user uses the \pkg{comment} package.  Each filename is ``|comment_#2.cut|''.
+% Based on the \pkg{comment} package.
+% \changes{v0.84}{2020/03/30}{Independent cut files.}
+% \changes{v0.891}{2020/09/15}{Error if nested comment.}
 %    \begin{macrocode}
-\ifbool{warpingHTML}{
-\def\DefaultCutFileName{\def\CommentCutFile{comment_html.cut}}
-}{}
+\def\LWR at includecomment
+ #1#2{\message{Lwarp: Including comment '#1'}%
+    \csarg\def{After#1Comment}{%
+        \CloseAndInputCutFile%
+        \csundef{LWR@#1commentused}%
+    }
+    \csarg\def{#1}{%
+        \endgroup
+        \ifcsdef{LWR@#1commentused}{
+            \PackageError{lwarp}%
+                {Nested #1 environment}%
+                {%
+                    Environment #1 cannot be nested.\MessageBreak
+                    This can happen when a package is loaded
+                    from inside a\MessageBreak
+                    #1 environment.%
+                }%
+        }{\relax}
+        \csdef{LWR@#1commentused}{}
+        \message{Including '#1' comment.}%
+        \def\CommentCutFile{comment_#2.cut}
+        \SetUpCutFile
+        \ProcessComment{#1}
+    }%
+    \CommentEndDef{#1}
+}
 
-\ifbool{warpingprint}{
-\def\DefaultCutFileName{\def\CommentCutFile{comment_print.cut}}
-}{}
+\def\LWR at excludecomment
+ #1#2{\message{Lwarp: Excluding comment '#1'}%
+    \csarg\def{#1}{
+        \endgroup
+        \message{Excluding '#1' comment.}%
+        \begingroup
+           \def\CommentCutFile{comment_#2.cut}
+            \def\ProcessCutFile{}%
+           \def\ThisComment####1{}%
+            \ProcessComment{#1}
+    }%
+    \csarg\def{After#1Comment}{\CloseAndInputCutFile \endgroup}
+    \CommentEndDef{#1}}
 %    \end{macrocode}
+% \end{macro}
+% \end{macro}
 
-
 % \begin{environment}{warpall}
 % Anything in the |warpall| environment will be generated for print or \HTML\ outputs.
 %    \begin{macrocode}
-\includecomment{warpall}
+\LWR at includecomment{warpall}{all}
 %    \end{macrocode}
 % \end{environment}
 
@@ -13505,8 +14772,8 @@
 % For \HTML\ output:
 %    \begin{macrocode}
 \ifbool{warpingHTML}
-    {\includecomment{warpHTML}}
-    {\excludecomment{warpHTML}}%
+    {\LWR at includecomment{warpHTML}{html}}
+    {\LWR at excludecomment{warpHTML}{html}}
 %    \end{macrocode}
 % \end{environment}
 
@@ -13515,8 +14782,8 @@
 % Anything in the |warpprint| environment will be generated for print output only.
 %    \begin{macrocode}
 \ifbool{warpingprint}
-    {\includecomment{warpprint}}
-    {\excludecomment{warpprint}}
+    {\LWR at includecomment{warpprint}{print}}
+    {\LWR at excludecomment{warpprint}{print}}
 %    \end{macrocode}
 % \end{environment}
 
@@ -13526,25 +14793,25 @@
 % \changes{v0.79}{2020/01/26}{Added.}
 %    \begin{macrocode}
 \begin{warpprint}
-\excludecomment{warpMathJax}
+\LWR at excludecomment{warpMathJax}{mathjax}
 \end{warpprint}
 
 \begin{warpHTML}
 \ifbool{mathjax}
-    {\includecomment{warpMathJax}}
-    {\excludecomment{warpMathJax}}
+    {\LWR at includecomment{warpMathJax}{mathjax}}
+    {\LWR at excludecomment{warpMathJax}{mathjax}}
 \end{warpHTML}
 %    \end{macrocode}
 % \end{environment}
 
 
-% \begin{environment}{LWR at creatinglwarpmk}
+% \begin{environment}{LWRcreatelwarpmk}
 % Optionally generate a local copy of \prog{lwarpmk}.
 % Default to no.
 %    \begin{macrocode}
 \ifbool{LWR at creatinglwarpmk}
-    {\includecomment{LWR at createlwarpmk}}
-    {\excludecomment{LWR at createlwarpmk}}
+    {\LWR at includecomment{LWRcreatelwarpmk}{lwarpmk}}
+    {\LWR at excludecomment{LWRcreatelwarpmk}{lwarpmk}}
 %    \end{macrocode}
 % \end{environment}
 %
@@ -13586,6 +14853,7 @@
 % ^^A 
 % ^^A 
 %
+% \DescribePackage{fontspec}
 % Load \pkg{fontspec} if necessary:
 % \changes{v0.50}{2018/02/24}{Fix: Load \pkg{fontspec} if necessary.}
 %    \begin{macrocode}
@@ -13673,8 +14941,16 @@
     tracking=false,
     kerning=false,
     spacing=false}
-
-\DisableLigatures[f,q,t,T,Q]{encoding = *,family = *}
+%    \begin{macrocode}
+%
+% Disable ligatures for typewriter fonts.
+% The comma was causing issues with \brand{MathJax} and \cs{,} followed by a comma.
+% Ligatures for f, q, t, etc used to be disabled for non-typewriter fonts, but
+% are now allowed.
+% \changes{v0.89}{2020/08/01}{Disable typewriter ligatures.}
+% ^^A \DisableLigatures[{,},f,q,t,T,Q]{encoding = *,family = *}% previous
+%    \begin{macrocode}
+\DisableLigatures{encoding = *,family = tt*}
 %    \end{macrocode}
 % ^^A 
 % ^^A 
@@ -13744,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
@@ -14178,7 +15454,7 @@
 %    \begin{macrocode}
 \begin{warpall}
 %    \end{macrocode}
-
+%
 % Remember the original \cs{RequirePackage}:
 %    \begin{macrocode}
 \LetLtxMacro\LWR at origRequirePackage\RequirePackage
@@ -14230,7 +15506,6 @@
 
 
 
-% ^^A *checkload
 % \begin{macro}{\LWR at checkloadfilename} \marg{filename}
 % Checks if this filename should be loaded after \pkg{lwarp},
 % or never at all.
@@ -14244,8 +15519,15 @@
 % \changes{v0.79}{2020/01/09}{Prevented \pkg{bxcjkjatype}, \pkg{hangul}.}
 % \changes{v0.80}{2020/02/15}{Prevented \pkg{formula}, \pkg{shadethm}, \pkg{slashbox}.}
 % \changes{v0.81}{2020/02/28}{Prevented \pkg{statex}.}
+% \changes{v0.87}{2020/05/14}{Prevented \pkg{csvtools}.}
+% \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:
 %
-% The following should never be loaded:
+% ^^A *checkload *loadnever
 %    \begin{macrocode}
 \newcommand*{\LWR at checkloadfilename}[1]{%
 \LWR at checkloadnever{#1}{ae}{cm-super, lmodern}
@@ -14254,23 +15536,21 @@
 \LWR at checkloadnever{#1}{alg}{algorithm2e, algorithmicx}
 \LWR at checkloadnever{#1}{algorithmic}{algorithm2e, algorithmicx}
 \LWR at checkloadnever{#1}{bitfield}{bytefield}
-\LWR at checkloadnever{#1}{boxedminipage}{boxedminipage2e}
 \LWR at checkloadnever{#1}{caption2}{caption}
 \LWR at checkloadnever{#1}{ccaption}{caption}% might be preloaded by memoir
 \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}
 \LWR at checkloadnever{#1}{glossary}{glossaries}
 \LWR at checkloadnever{#1}{hyper}{hyperref}
+\LWR at checkloadnever{#1}{libgreek}{libertinust1math, newtx}
 \LWR at checkloadnever{#1}{newthm}{ntheorem}
 \LWR at checkloadnever{#1}{pdfcprot}{microtype}
-\LWR at checkloadnever{#1}{picinpar}{floatflt, wrapfig}
 \LWR at checkloadnever{#1}{picins}{floatflt, wrapfig}
 \LWR at checkloadnever{#1}{rplain}{fancyhdr}
-\LWR at checkloadnever{#1}{shadethm}{mdframed}
 \LWR at checkloadnever{#1}{si}{siunitx}
 \LWR at checkloadnever{#1}{sistyle}{siunitx}
 \LWR at checkloadnever{#1}{slashbox}{diagbox}
@@ -14284,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}
@@ -14292,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}
@@ -14436,6 +15718,8 @@
 }%
 }
 \LetLtxMacro\usepackage\RequirePackage
+\@onlypreamble\RequirePackage
+\@onlypreamble\usepackage
 %    \end{macrocode}
 % \end{macro}
 
@@ -14455,8 +15739,9 @@
 %    \begin{macrocode}
 \NewDocumentCommand{\LWR at ProvidesPackagePass}{m o}{
     \PackageInfo{lwarp}{%
-        Using package `#1' and adding lwarp modifications,\MessageBreak
-        including options,}%
+        Using package `#1',\MessageBreak
+        and adding lwarp modifications, including options,\MessageBreak%
+    }%
     \IfValueTF{#2}%
         {\ProvidesPackage{lwarp-#1}[#2]}%
         {\ProvidesPackage{lwarp-#1}}%
@@ -14565,28 +15850,6 @@
 
 
 
-% \section{Additional required packages}
-
-% \codehtml
-%    \begin{macrocode}
-\begin{warpHTML}
-%    \end{macrocode}
-
-% \DescribePackage{caption}
-% \changes{v0.47}{2018/01/29}{\pkg{caption}: Also loads \pkg{lwarp-caption}.}
-% \changes{v0.66}{2018/12/29}{\pkg{caption}: Fix for options clash.}
-%    \begin{macrocode}
-\LWR at origRequirePackage{caption}
-\AtBeginDocument{\RequirePackage{lwarp-caption}}%
-%    \end{macrocode}
-
-%    \begin{macrocode}
-\end{warpHTML}
-%    \end{macrocode}
-
-
-
-
 % \section{File handles}
 
 % Defines file handles for writes.
@@ -14657,7 +15920,7 @@
 \immediate\openout\LWR at quickfile #1_html_inc.tex% lwarp
 \immediate\write\LWR at quickfile{\string\input{#1.tex}}% lwarp
 \immediate\closeout\LWR at quickfile% lwarp
-\LWR at orignewpage% changed from clearpage
+\LWR at maybe@orignewpage% changed from clearpage
 \if at filesw
     \immediate\write\@mainaux{\string\@input{#1_html_inc.aux}}% changed
 \fi
@@ -14675,7 +15938,7 @@
         \immediate\write\@partaux{\relax}%
     \fi
     \@input@{#1_html_inc.tex}% changed
-    \LWR at orignewpage% changed from clearpage
+    \LWR at maybe@orignewpage% changed from clearpage
     \@writeckpt{#1}%
     \if at filesw
         \immediate\closeout\@partaux
@@ -14707,29 +15970,29 @@
 % Used to copy the |.toc| file to |.sidetoc| to re-print the \TOC\ in
 % the side\TOC\ navigation pane.
 %    \begin{macrocode}
-\newwrite\LWR at copyoutfile  % open the file to write to
-\newread\LWR at copyinfile      % open the file to read from
+\newwrite\LWR at copyoutfile   % open the file to write to
+\newread\LWR at copyinfile     % open the file to read from
 
 \newcommand*{\LWR at copyfile}[2]{%
-\LWR at traceinfo{LWR at copyfile: copying #1 to #2}
+    \LWR at traceinfo{LWR at copyfile: copying #1 to #2}
 
-\immediate\openout\LWR at copyoutfile=#2
-\openin\LWR at copyinfile=#1
-\begingroup\endlinechar=-1
-\makeatletter
+    \immediate\openout\LWR at copyoutfile=#2
+    \openin\LWR at copyinfile=#1
+    \begingroup\endlinechar=-1
+    \makeatletter
 
-\LWR at traceinfo{LWR at copyfile: about to loop}
+    \LWR at traceinfo{LWR at copyfile: about to loop}
 
-\loop\unless\ifeof\LWR at copyinfile
-  \LWR at traceinfo{LWR at copyfile: one line}
-  \read\LWR at copyinfile to\LWR at fileline  % Read one line and store it into \LWR at fileline
+    \loop\unless\ifeof\LWR at copyinfile
+        \LWR at traceinfo{LWR at copyfile: one line}
+        \read\LWR at copyinfile to\LWR at fileline  % Read one line and store it into \LWR at fileline
 %   \LWR at fileline\par                   % print the content into the pdf
 % print the content:
-  \immediate\write\LWR at copyoutfile{\unexpanded\expandafter{\LWR at fileline}}%
-\repeat
-\immediate\closeout\LWR at copyoutfile
-\LWR at traceinfo{LWR at copyfile: done}
-\endgroup
+        \immediate\write\LWR at copyoutfile{\unexpanded\expandafter{\LWR at fileline}}%
+    \repeat
+    \immediate\closeout\LWR at copyoutfile
+    \LWR at traceinfo{LWR at copyfile: done}
+    \endgroup
 }
 %    \end{macrocode}
 % \end{macro}
@@ -14847,9 +16110,7 @@
 % The new \HTML\ versions of macros and environments are used most of the time.
 % Copies of the print versions are used inside a \env{lateximage} environment,
 % which draws and remembers an image of the printed output, and also several
-% other places.  The copies of the print versions may also be used by the \HTML\
-% versions, such as when the \HTML\ version merely encloses the print version
-% inside \HTML\ tags.
+% other places.
 %
 % The general structure for providing print and \HTML\ versions of a macro or
 % environment is as follows:
@@ -14859,13 +16120,14 @@
 % \item[For a preexisting macro, not defined with \pkg{xparse}:] An \HTML\ version
 % is provided with a special name, inside a \env{warpHTML} environment,
 % then \cs{LWR at formatted} is used to redefine and patch various macros:
-% \begin{Verbatim}[gobble=2,obeytabs,tabsize=4,frame=lines]
+% \needspace{5\baselineskip}
+% \begin{sourceverb}
 % \begin{warpHTML}
 % \newcommand{\LWR at HTML@name}{...}% may also use xparse
 %
 % \LWR at formatted{name}
 % \end{warpHTML}
-% \end{Verbatim}
+% \end{sourceverb}
 % |\LWR at formatted{name}| copies the original print version,
 % then redefines \cs{name} to use either the print or \HTML\ version depending
 % on which mode \pkg{lwarp} is using.  \pkg{xparse} may be used to
@@ -14874,16 +16136,18 @@
 
 % \item[For a preexisiting environment, not defined with \pkg{xparse}:] The process
 % is similar.  Note the use of \cs{LWR at formattedenv} instead of \cs{LWR at formatted}.
-% \begin{Verbatim}[gobble=2,obeytabs,tabsize=4,frame=lines]
+% \needspace{5\baselineskip}
+% \begin{sourceverb}
 % \begin{warpHTML}
 % \newenvironment{LWR at HTML@name}{...}% may also use xparse
 %
 % \LWR at formattedenv{name}
 % \end{warpHTML}
-% \end{Verbatim}
+% \end{sourceverb}
 
 % \item[If the original used \pkg{xparse}:] A copy must be made using a new name:
-% \begin{Verbatim}[gobble=2,obeytabs,tabsize=4,frame=lines]
+% \needspace{7\baselineskip}
+% \begin{sourceverb}
 % \begin{warpHTML}
 % \NewDocumentCommand{\LWR at print@name}{..}{..}% copy the original
 %
@@ -14891,7 +16155,7 @@
 %
 % \LWR at formatted{name}
 % \end{warpHTML}
-% \end{Verbatim}
+% \end{sourceverb}
 % Similar for an environment, using \cs{LWR at formattedenv}.
 % (\cs{LWR at formatted} and \cs{LWR at formattedenv} use \cs{LetLtxMacro} to
 % copy the original print definiton,
@@ -14899,7 +16163,8 @@
 % so the print version must be manually recreated in the \pkg{lwarp} source.)
 
 % \item[For a new macro or environment, not using \pkg{xparse} for the print version:] \
-% \begin{Verbatim}[gobble=2,obeytabs,tabsize=4,frame=lines]
+% \needspace{9\baselineskip}
+% \begin{sourceverb}
 % \begin{warpall}
 % \newcommand{\name}{...}% NOT xparse!
 % \end{warpall}
@@ -14909,7 +16174,7 @@
 %
 % \LWR at formatted{name}
 % \end{warpHTML}
-% \end{Verbatim}
+% \end{sourceverb}
 % Similar for an environment.
 % The plain \cs{name} or environment \env{name} is used for the printed
 % version, and is placed inside \env{warpall}.
@@ -14921,7 +16186,8 @@
 %   by defining the \cs{LWR at print@<name>} version with \pkg{xparse}, along with
 %   \cs{name} defined without \pkg{xparse} to refer directly to the \cs{LWR at print}
 %   version:
-% \begin{Verbatim}[gobble=2,obeytabs,tabsize=4,frame=lines]
+% \needspace{16\baselineskip}
+% \begin{sourceverb}
 % \begin{warpall}
 % \NewDocumentCommand{\LWR at print@name}{...} {...}%      -or-
 % \NewDocumentEnvironment{\LWR at print@name}{...} {...} {...}
@@ -14938,7 +16204,7 @@
 % \LWR at formatted{name}%    -or-
 % \LWR at formattedenv{name}
 % \end{warpHTML}
-% \end{Verbatim}
+% \end{sourceverb}
 %
 % \end{description}
 %
@@ -15001,6 +16267,37 @@
 % \end{macro}
 %
 %
+%
+% \begin{macro}{\LWR at formatted@checkname} \marg{name}
+% \changes{v0.893}{2020/11/15}{Added.}
+%    \begin{macrocode}
+\newcommand*{\LWR at formatted@checkname}[1]{%
+    \ifcsundef{LWR at HTML@#1}{%
+        \PackageError{lwarp}
+        {%
+            \protect\LWR at HTML@#1 is not defined%
+        }
+        {Perhaps it is misspelled.}
+    }{\relax}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\LWR at formatted@checkendname} \marg{name}
+% \changes{v0.893}{2020/11/15}{Added.}
+%    \begin{macrocode}
+\newcommand*{\LWR at formatted@checkendname}[1]{%
+    \ifcsundef{endLWR at HTML@#1}{%
+        \PackageError{lwarp}
+        {%
+            \protect\endLWR at HTML@#1 is not defined%
+        }
+        {Perhaps it is misspelled.}
+    }{\relax}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\LWR at formatted} \marg{macroname} \qquad No backslash in the macro name.
 %
 % If not yet defined, defines \cs{LWR at print@<name>} as
@@ -15008,8 +16305,10 @@
 % Also redefines \cs{<name>} to use \cs{LWR@<format>@<name>},
 % where <format> is set by \cs{LWR at formatting}, and is |print| or |HTML|.
 %
+% \changes{v0.893}{2020/11/15}{Improved error handling.}
 %    \begin{macrocode}
 \newcommand*{\LWR at formatted}[1]{%
+    \LWR at formatted@checkname{#1}%
     \ifcsundef{LWR at print@#1}{%
         \expandafter\LetLtxMacro\csname LWR at print@#1\expandafter\endcsname%
             \csname#1\endcsname%
@@ -15033,8 +16332,10 @@
 %
 % An expandable version of \cs{LWR at formatted}.
 %
+% \changes{v0.893}{2020/11/15}{Improved error handling.}
 %    \begin{macrocode}
 \newcommand*{\LWR at expandableformatted}[1]{%
+    \LWR at formatted@checkname{#1}%
     \ifcsundef{LWR at print@#1}{%
         \expandafter\LetLtxMacro\csname LWR at print@#1\expandafter\endcsname%
             \csname#1\endcsname%
@@ -15060,8 +16361,11 @@
 % Also redefines the environment |<name>| to use environment |LWR@<format>@<name>|,
 % where <format> is set by \cs{LWR at formatting}, and is |print| or |HTML|.
 %
+% \changes{v0.893}{2020/11/15}{Improved error handling.}
 %    \begin{macrocode}
 \newcommand*{\LWR at formattedenv}[1]{%
+    \LWR at formatted@checkname{#1}%
+    \LWR at formatted@checkendname{#1}%
     \ifcsundef{LWR at print@#1}{%
         \expandafter\LetLtxMacro\csname LWR at print@#1\expandafter\endcsname%
             \csname#1\endcsname%
@@ -15083,8 +16387,11 @@
 %
 % An expandable version of \env{LWR at formattedenv}.
 %
+% \changes{v0.893}{2020/11/15}{Improved error handling.}
 %    \begin{macrocode}
 \newcommand*{\LWR at expandableformattedenv}[1]{%
+    \LWR at formatted@checkname{#1}%
+    \LWR at formatted@checkendname{#1}%
     \ifcsundef{LWR at print@#1}{%
         \expandafter\LetLtxMacro\csname LWR at print@#1\expandafter\endcsname%
             \csname#1\endcsname%
@@ -15233,6 +16540,7 @@
 \begin{warpHTML}
 %    \end{macrocode}
 %
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
 \AtBeginDocument{
 \ifbool{FormatWP}{
@@ -15250,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}
@@ -15273,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}
@@ -15287,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
@@ -15341,8 +16649,27 @@
 \let\LWR at origbigskip\bigskip
 
 \let\LWR at origtextellipsis\textellipsis
-\let\LWR at orig@textquotedbl\textquotedbl
+%    \end{macrocode}
+% \changes{v0.88}{2020/07/03}{Added \cs{vdots}.}
+%    \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}
+\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
@@ -15353,14 +16680,7 @@
 
 \let\LWR at origsp\sp
 \let\LWR at origsb\sb
-\LetLtxMacro\LWR at origtextsuperscript\textsuperscript
-\LetLtxMacro\LWR at orig@textsuperscript\@textsuperscript
 
-\AtBeginDocument{
-\LetLtxMacro\LWR at origtextsubscript\textsubscript
-\LetLtxMacro\LWR at orig@textsubscript\@textsubscript
-}
-
 \LetLtxMacro\LWR at origunderline\underline
 %    \end{macrocode}
 %
@@ -15373,7 +16693,6 @@
 
 \let\LWR at orignewline\newline
 
-
 \AtBeginDocument{% in case packages change definition
 \let\LWR at orig@trivlist\@trivlist
 \let\LWR at origtrivlist\trivlist
@@ -15415,6 +16734,7 @@
 % \limitsaccents
 %
 % \changes{v0.37}{2017/08/18}{\protect\LaTeX\ accents: Added.}
+% \changes{v0.84}{2020/04/12}{\protect\LaTeX\ accents: Add'l symbols.}
 %
 % \codehtml
 %    \begin{macrocode}
@@ -15430,29 +16750,41 @@
 %
 % For Unicode engines, only \cs{t} needs to be redefined:
 %    \begin{macrocode}
-\LetLtxMacro\LWR at origt\t
+\LetLtxMacro\LWR at origtie\t
 %    \end{macrocode}
 % For pdf\LaTeX, additional work is required:
 %    \begin{macrocode}
 \ifPDFTeX% pdflatex or dvi latex
-\LetLtxMacro\LWR at origequalaccent\=
+\LetLtxMacro\LWR at origgraveaccent\`
+\LetLtxMacro\LWR at origacuteaccent\'
+\LetLtxMacro\LWR at origcircumflexaccent\^
+\LetLtxMacro\LWR at origtildeaccent\~
+\LetLtxMacro\LWR at origmacronaccent\=
+\LetLtxMacro\LWR at origbreve\u
 \LetLtxMacro\LWR at origdotaccent\.
-\LetLtxMacro\LWR at origu\u
-\LetLtxMacro\LWR at origv\v
-\LetLtxMacro\LWR at origc\c
-\LetLtxMacro\LWR at origd\d
-\LetLtxMacro\LWR at origb\b
+\LetLtxMacro\LWR at origdiaeresisaccent\"
+\LetLtxMacro\LWR at origdoubleacuteaccent\H
+\LetLtxMacro\LWR at origcaronaccent\v
+\LetLtxMacro\LWR at origdotbelowaccent\d
+\LetLtxMacro\LWR at origcedillaaccent\c
+\LetLtxMacro\LWR at origmacronbelowaccent\b
 %    \end{macrocode}
 % The \HTML\ redefinitions follow.
 %
 % For pdf\LaTeX, Unicode diacritical marks are used:
 %    \begin{macrocode}
-\renewcommand*{\=}[1]{#1\HTMLunicode{0305}}
+\renewcommand*{\`}[1]{#1\HTMLunicode{0300}}
+\renewcommand*{\'}[1]{#1\HTMLunicode{0301}}
+\renewcommand*{\^}[1]{#1\HTMLunicode{0302}}
+\renewcommand*{\~}[1]{#1\HTMLunicode{0303}}
+\renewcommand*{\=}[1]{#1\HTMLunicode{0304}}
+\renewcommand*{\u}[1]{#1\HTMLunicode{0306}}
 \renewcommand*{\.}[1]{#1\HTMLunicode{0307}}
-\renewcommand*{\u}[1]{#1\HTMLunicode{0306}}
+\renewcommand*{\"}[1]{#1\HTMLunicode{0308}}
+\renewcommand*{\H}[1]{#1\HTMLunicode{030B}}
 \renewcommand*{\v}[1]{#1\HTMLunicode{030C}}
+\renewcommand*{\d}[1]{#1\HTMLunicode{0323}}
 \renewcommand*{\c}[1]{#1\HTMLunicode{0327}}
-\renewcommand*{\d}[1]{#1\HTMLunicode{0323}}
 \renewcommand*{\b}[1]{#1\HTMLunicode{0331}}
 \fi
 %    \end{macrocode}
@@ -15467,18 +16799,24 @@
 %    \begin{macrocode}
 \ifPDFTeX% pdflatex or dvi latex
 \newcommand*{\LWR at restoreorigaccents}{%
-\LetLtxMacro\=\LWR at origequalaccent%
-\LetLtxMacro\.\LWR at origdotaccent%
-\LetLtxMacro\u\LWR at origu%
-\LetLtxMacro\v\LWR at origu%
-\LetLtxMacro\t\LWR at origt%
-\LetLtxMacro\c\LWR at origc%
-\LetLtxMacro\d\LWR at origd%
-\LetLtxMacro\b\LWR at origb%
+    \LetLtxMacro\`\LWR at origgraveaccent%
+    \LetLtxMacro\'\LWR at origacuteaccent%
+    \LetLtxMacro\^\LWR at origcircumflexaccent%
+    \LetLtxMacro\~\LWR at origtildeaccent%
+    \LetLtxMacro\=\LWR at origmacronaccent%
+    \LetLtxMacro\u\LWR at origbreve%
+    \LetLtxMacro\.\LWR at origdotaccent%
+    \LetLtxMacro\"\LWR at origdiaeresisaccent%
+    \LetLtxMacro\H\LWR at origdoubleacuteaccent%
+    \LetLtxMacro\v\LWR at origcaronaccent%
+    \LetLtxMacro\t\LWR at origtie%
+    \LetLtxMacro\d\LWR at origdotbelowaccent%
+    \LetLtxMacro\c\LWR at origcedillaaccent%
+    \LetLtxMacro\b\LWR at origmacronbelowaccent%
 }%
 \else% XeLaTeX, LuaLaTeX:
 \newcommand*{\LWR at restoreorigaccents}{%
-\LetLtxMacro\t\LWR at origt%
+    \LetLtxMacro\t\LWR at origtie%
 }%
 \fi%
 }% AtBeginDocument
@@ -15513,7 +16851,7 @@
 % Default to no configuration files:
 % \changes{v0.61}{2018/10/02}{Don't write configuration files if processing \pkg{pstool} image.}
 %    \begin{macrocode}
-\excludecomment{LWRwriteconf}
+\LWR at excludecomment{LWRwriteconf}{writeconf}
 %    \end{macrocode}
 %
 % Generate configuration files if print mode and not \filenm{-pstool}:
@@ -15531,7 +16869,7 @@
     }
     {
         \PackageInfo{lwarp}{Generating lwarp configuration files,}%
-        \includecomment{LWRwriteconf}
+        \LWR at includecomment{LWRwriteconf}{writeconf}
     }
 \end{warpprint}
 %    \end{macrocode}
@@ -15626,9 +16964,12 @@
 % Error message if not sure which \LaTeX\ engine is being used.
 %    \begin{macrocode}
 \newcommand*{\LWR at unknownengine}{%
-    \PackageError{lwarp}
-    {Unknown LaTeX engine.}
-    {Lwarp only knows about pdflatex, dvi latex, xelatex, lualatex, and upLateX.}
+    \PackageError{lwarp}%
+        {Unknown LaTeX engine}%
+        {%
+            Lwarp only knows about pdflatex, DVI latex,
+            xelatex, lualatex, and upLateX.%
+        }%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -15656,7 +16997,7 @@
 \newcommand*{\LWR at latexmkcmd}[1]{%
     latexmk  \space \LWR at shellescapecmd \space  #1 \space
     -recorder \space
-    \LWR at latexmkvar{makeindex}{\LWR at LatexmkIndexCmd}
+    \LWR at latexmkvar{makeindex}{\LWR at LatexmkIndexCmd}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -15958,7 +17299,6 @@
 % \changes{v0.58}{2018/06/20}{\filenm{lwarpmk.conf}: Generated \cs{AtBeginDocument}.}
 % \changes{v0.58}{2018/06/20}{\filenm{lwarpmk.conf}: Added options \optn{makeindex} and \optn{xindy}.}
 % \changes{v0.58}{2018/06/21}{\filenm{lwarpmk.conf}: Added option \optn{makeindexstyle}.}
-%
 % \codeconfig
 %    \begin{macrocode}
 \begin{LWRwriteconf}
@@ -15984,7 +17324,6 @@
 % \changes{v0.58}{2018/06/20}{\filenm{*.lwarpmkconf}: Generated \cs{AtBeginDocument}.}
 % \changes{v0.58}{2018/06/20}{\filenm{*.lwarpmkconf}: Added options \optn{makeindex} and \optn{xindy}.}
 % \changes{v0.58}{2018/06/21}{\filenm{*.lwarpmkconf}: Added option \optn{makeindexstyle}.}
-%
 % The \optn{makeindex} and \optn{xindy} options have already been handled
 %   for \filenm{lwarp.conf}.
 %
@@ -16041,6 +17380,15 @@
 % \changes{v0.76}{2019/10/02}{\filenm{lwarp.css}: Fix for small caps.}
 % \changes{v0.79}{2020/01/17}{\filenm{lwarp.css}: Fix: Nested \env{tabular}s.}
 % \changes{v0.81}{2020/02/22}{\filenm{lwarp.css}: Added \pkg{nolbreaks}.}
+% \changes{v0.84}{2020/03/28}{\filenm{lwarp.css}: Added \pkg{koma-*} subject.}
+% \changes{v0.84}{2020/04/10}{\filenm{lwarp.css}: Improved \pkg{realscripts}.}
+% \changes{v0.84}{2020/04/13}{\filenm{lwarp.css}: Improved \pkg{nfssext-cfr}.}
+% \changes{v0.84}{2020/04/18}{\filenm{lwarp.css}: Fix: Minipage tex align.}
+% \changes{v0.84}{2020/04/24}{\filenm{lwarp.css}: Fix: Top nav if narrow window.}
+% \changes{v0.88}{2020/07/04}{\filenm{lwarp.css}: Added \pkg{tcolorbox}, \pkg{thmbox}.}
+% \changes{v0.88}{2020/07/14}{\filenm{lwarp.css}: Added \optn{indexheading} for \pkg{gindex}.}
+% \changes{v0.893}{2020/10/18}{\filenm{lwarp.css}: Added \pkg{keystroke}.}
+% \changes{v0.894}{2020/12/15}{\filenm{lwarp.css}: \TeX\ logos no longer below baseline.}
 %
 % ^^A *lwarp.css
 %
@@ -16050,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
 */
 
 
@@ -16108,10 +17456,11 @@
 span.indexitem {margin-left: 0em}
 span.indexsubitem {margin-left: 2em}
 span.indexsubsubitem {margin-left: 4em}
+div.indexheading {margin-top: 2ex ; font-weight: bold}
 
 div.hidden, span.hidden { display: none ; }
 
-kbd, span.texttt {
+kbd, span.texttt, p span.texttt {
     font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console",
         "Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono",
         "Courier New", monospace;
@@ -16126,10 +17475,6 @@
 
 span.textmd, div.textmd { font-weight: normal; }
 
-span.texteb { font-weight: bolder; }
-
-span.textlg { font-weight: lighter; }
-
 span.textup, div.textup {
     font-style: normal;
     font-variant: normal;
@@ -16158,6 +17503,52 @@
         Geneva, Verdana, sans-serif ;
 }
 
+/* nfssext-cfr lining figures */
+span.textln, div.textln {
+    font-variant-numeric: lining-nums ;
+}
+
+/* nfssext-cfr proportional figures */
+span.textp, div.textp {
+    font-variant-numeric: proportional-nums ;
+}
+
+/* nfssext-cfr tabular figures */
+span.textt, div.textt {
+    font-variant-numeric: tabular-nums ;
+}
+
+/* nfssext-cfr font weights */
+span.textdb, div.textdb {
+    font-weight: 500 ;
+}
+
+span.textsb, div.textsb {
+    font-weight: 600 ;
+}
+
+span.texteb, div.texteb {
+    font-weight: 800 ;
+}
+
+span.textub, div.textub {
+    font-weight: 900 ;
+}
+
+span.textlg, div.textlg {
+    font-weight: 300 ;
+}
+
+span.textel, div.textel {
+    font-weight: 200 ;
+}
+
+span.textul, div.textul {
+    font-weight: 100 ;
+}
+
+
+
 span.textcircled { border: 1px solid black ; border-radius: 1ex ; }
 
 span.underline {
@@ -16170,7 +17561,9 @@
     text-decoration-skip: auto ;
 }
 
+div.hrule { border-top: 1px solid silver }
 
+
 /* for vertical text: */
 div.verticalrl { writing-mode: vertical-rl }
 div.horizontaltb { writing-mode: horizontal-tb }
@@ -16202,16 +17595,16 @@
 .supsubscript sub {
     position: relative;
     display: block;
-    font-size: .5em;
+    font-size: .7em;
     line-height: 1;
 }
 
 .supsubscript sup {
-    top: .5em;
+    top: .3em;
 }
 
 .supsubscript sub {
-    top: .5em;
+    top: .3em;
 }
 
 div.attribution p {
@@ -16290,7 +17683,7 @@
 div.dictumauthor { font-style:italic }
 
 
-/* copyrightbox package */
+/* copyrightbox package: */
 div.copyrightbox { margin: .5ex .5em }
 div.copyrightbox p {margin: 0px .5em ; padding: 0px}
 div.copyrightboxnote {text-align: left ; font-size: 60%}
@@ -16353,6 +17746,11 @@
 span.highlight { background: #F8E800 ; }
 
 
+/* keystroke package: */
+span.keystroke {
+    border-style: outset ;
+    padding: 0pt .5em 0pt .5em ;
+}
 
 
 html body {
@@ -16501,7 +17899,7 @@
 }
 
 section.textbody div.footnotes{
-    margin: 3ex 2em 0ex 2em ;
+    margin: 3ex 2em .5ex 2em ;
     border-bottom: 2px solid silver ;
 }
 
@@ -16693,6 +18091,7 @@
 .minipage, .fminipage, .fcolorminipage {
     /* display: inline-block ; */
         /* Mini pages which follow each other will be tiled. */
+    text-align:left;
     margin: .25em .25em .25em .25em;
     padding: .25em .25em .25em .25em;
     display: inline-flex;
@@ -16755,22 +18154,35 @@
 }
 
 
-.mdframed {
+/* mdframed, tcolorbox, shadebox packages */
+.mdframed, .tcolorbox, .shadebox {
     padding: 0ex ;
     margin: 2ex 0em 2ex 0em ;
+    border: 1px solid black ;
 }
 
-.mdframed p { padding: 0ex .5em 0ex .5em ; }
+.tcolorbox {
+    border-radius: 10pt ;
+    margin: 2ex 1em 2ex 1em ;
+}
 
-.mdframed dl { padding: 1ex .5em 0ex .5em ; }
+.mdframed p, .tcolorbox p { padding: 0ex .5em 0ex .5em ; }
 
-.mdframedtitle {
+.mdframed dl, .tcolorbox dl { padding: 1ex .5em 0ex .5em ; }
+
+.mdframedtitle, .tcolorboxtitle {
     padding: .5ex 0pt 0pt 0pt ;
     border-radius: 10pt 10pt 0pt 0pt ;
     display: block ;
     margin-bottom: 1ex ;
+    border-bottom: 1px solid silver ;
 }
 
+.tcolorboxsubtitle .tcolorbox {
+    margin: 2ex 0em 2ex 0em ;
+    border-radius: 0pt ;
+}
+
 .mdframedsubtitle {
     display: block ;
 }
@@ -16872,7 +18284,10 @@
 
 dl dd p { margin-top: 0em; }
 
-dd ul, dd ol, dd dl { clear: both ; padding-top: 1ex }
+dd ul, dd ol, dd dl {
+    clear: both ;
+/*    padding-top: 1ex ; */
+}
 
 
 nav {
@@ -17188,6 +18603,26 @@
 
 
 
+div.titlehead
+{
+    text-align: left ;
+    font-style: normal ;
+    font-weight: normal ;
+    font-style: normal ;
+    font-size: .8em ;
+    margin: 1ex 0em 1ex 0em ;
+}
+
+div.subject
+{
+    text-align: center ;
+    font-style: normal ;
+    font-weight: bold ;
+    font-style: normal ;
+    font-size: .8em ;
+    margin: 1ex 0em 1ex 0em ;
+}
+
 div.published
 {
     text-align: center ;
@@ -17282,6 +18717,7 @@
 }
 
 
+/* for \LinkHome, \LinkPrevious, and \LinkNext: */
 a.linkhome { font-weight:bold ; font-size: 1em ;}
 
 
@@ -17405,10 +18841,16 @@
 
 /* Native LaTeX theorems: */
 
-.theoremcontents { font-style: italic; margin-top: 3ex ; margin-bottom: 3ex ; }
-.theoremlabel { font-style: normal; font-weight: bold ; margin-right: .5em ; }
+.theoremcontents {
+    font-style: italic; margin-top: 3ex ; margin-bottom: 3ex ;
+}
 
+.theoremlabel {
+    font-style: normal; font-weight: bold ; margin-right: .5em ;
+}
 
+
+
 /* theorem, amsthm, and ntheorem packages */
 
 span.theoremheader, 
@@ -17480,6 +18922,35 @@
 span.amsthmnoteremark {}
 
 
+/* thmbox */
+
+.thmbox {
+    font-style: italic; margin-top: 3ex ; margin-bottom: 3ex ;
+    border: 1px solid gray ;
+    padding: 1ex ;
+}
+
+.thmboxtitle {
+    font-style: normal; font-weight: bold ; margin-right: .5em ;
+    border-bottom: 1px solid gray ;
+}
+
+span.thmboxproofname, span.thmboxexamplename {
+    font-weight: bold ;
+}
+
+div.thmboxproof, div.thmboxexample {
+    font-size: 0.85em ;
+    margin: 2ex ;
+}
+
+div.thmboxleftbar {
+    border-left: 2px solid black ;
+    padding-left: 1em ;
+}
+
+
+
 /* For the backnaur package: */
 div.backnaur {
     display: block ;
@@ -17527,6 +18998,9 @@
 /*
 For CSS LaTeX and related logos:
 Based on spacing demonstrated by the metafont package.
+
+The subscripts are shrunk instead of lowered below the baseline,
+to avoid browser rendering errors with the line height in lists, etc.
 */
 
 .latexlogofont {
@@ -17538,7 +19012,6 @@
 .latexlogo {
     font-family: "Linux Libertine O", "Nimbus Roman No 9 L",
         "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
-    font-size: 1.1em;
 }
 
 .latexlogosup {
@@ -17552,10 +19025,11 @@
 
 .latexlogosub {
   text-transform: uppercase;
-  vertical-align: -0.27ex;
+/*  vertical-align: -0.27ex; */
   margin-left: -0.08em;
   margin-right: -0.07em;
-  font-size: 1em;
+/*  font-size: 1em; */
+    font-size: .7em ;
 }
 
 .latexlogotwoe {
@@ -17565,10 +19039,11 @@
 
 .latexlogotwoesub {
   font-style:italic ;
-  vertical-align: -0.27ex;
+/*  vertical-align: -0.27ex; */
   margin-left: -0.11em;
   margin-right: -0.1em;
-  font-size: 1em;
+/*  font-size: 1em; */
+    font-size: .7em ;
 }
 
 .xelatexlogo {
@@ -17575,14 +19050,14 @@
     font-family: "Linux Libertine O", "Nimbus Roman No 9 L",
         "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
     letter-spacing: .03em ;
-    font-size: 1.1em;
 }
 
 .xelatexlogosub {
-  vertical-align: -0.27ex;
+/*  vertical-align: -0.27ex; */
   margin-left: -0.0667em;
   margin-right: -.05em;
-  font-size: 1em;
+/*  font-size: 1em; */
+    font-size: .7em ;
   letter-spacing: .03em ;
 }
 
@@ -17620,6 +19095,7 @@
         box-shadow: none ;
     }
     span.sidetocthetitle { display: inline }
+    nav.topnavigation { display:block }
     nav.botnavigation { display:block }
     div.bodycontainer { width: 100% }
     .marginpar {
@@ -18283,6 +19759,9 @@
 %    \end{macrocode}
 
 
+
+
+
 % \subsection{\filenm{lwarp_one_limage.cmd}}
 %
 % \DescribeFile{lwarp_one_limage.cmd}
@@ -18337,10 +19816,13 @@
 
 % \subsection{\filenm{lwarp_mathjax.txt}}
 
+% \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.
-% Adjustments are made to allow \LaTeX\ to control the equation tags.
+% 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.
 %
 % \cs{MathJaxFilename} determines which script file is copied into the \HTML\ pages,
 % and defaults to \filenm{lwarp_mathjax.txt}.
@@ -18353,8 +19835,8 @@
 % To generate a custom script, such as to use a local repository,
 % \margintag{custom script}
 % copy \filenm{lwarp_mathjax.txt} to a new file,
-% make changes while keeping \pkg{lwarp}'s adjustments for equation numbering,
-% and use \cs{MathJaxFilename} to select new filename.
+% make changes while keeping \pkg{lwarp}'s adjustments for equation numbering
+% and starred macros, and use \cs{MathJaxFilename} to select the new filename.
 %
 % \changes{v0.28}{2017/04/11}{File: \filenm{lwarp_mathjax.txt}: Updated \protect\acro{CDN} repository.}
 % \changes{v0.30}{2017/04/26}{Fix: \filenm{lwarp_mathjax.txt}: Only written in print mode.}
@@ -18362,13 +19844,19 @@
 % \changes{v0.42}{2017/10/16}{File: \filenm{lwarp_mathjax.txt}: Updated \pkg{siunitx} script.}
 % \changes{v0.45}{2017/12/21}{File: \filenm{lwarp_mathjax.txt}: Allow \brand{MathJax} inside \env{tabbing}.}
 % \changes{v0.45}{2018/01/23}{File: \filenm{lwarp_mathjax.txt}: Allow \brand{MathJax} inside \env{verse}.}
-% \changes{v0.59}{2018/07/13}{File: \filenm{lwarp_mathjax.txt}: Updated to MathJax v2.7.4.}
-% \changes{v0.59}{2018/07/16}{File: \filenm{lwarp_mathjax.txt}: Fix: Removed chapter number from tagged non-numeric MathJax equations.}
+% \changes{v0.59}{2018/07/13}{File: \filenm{lwarp_mathjax.txt}: Updated to \brand{MathJax} v2.7.4.}
+% \changes{v0.59}{2018/07/16}{File: \filenm{lwarp_mathjax.txt}: Fix: Removed chapter number from tagged non-numeric \brand{MathJax} equations.}
 % \changes{v0.62}{2018/11/05}{File: \filenm{lwarp_mathjax.txt}: Removed inoperable \pkg{siunitx} extension.}
-% \changes{v0.70}{2019/03/24}{File: \filenm{lwarp_mathjax.txt}: Updated to MathJax v2.7.5.}
+% \changes{v0.70}{2019/03/24}{File: \filenm{lwarp_mathjax.txt}: Updated to \brand{MathJax} v2.7.5.}
 % \changes{v0.70}{2019/03/24}{File: \filenm{lwarp_mathjax.txt}: Loads \filenm{autoload-all.js} extension.}
-% \changes{v0.76}{2019/10/05}{File: \filenm{lwarp_mathjax.txt}: Updated to MathJax v2.7.6.}
-%
+% \changes{v0.76}{2019/10/05}{File: \filenm{lwarp_mathjax.txt}: Updated to \brand{MathJax} v2.7.6.}
+% \changes{v0.86}{2020/05/03}{File: \filenm{lwarp_mathjax.txt}: Updated to \brand{MathJax} v3 current.}
+% \changes{v0.86}{2020/05/03}{File: \filenm{lwarp_mathjax.txt}: Improved equation numbering.}
+% \changes{v0.86}{2020/05/03}{File: \filenm{lwarp_mathjax.txt}: Added support for starred macros.}
+% \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
@@ -18375,121 +19863,209 @@
 %    \begin{macrocode}
 \begin{LWRwriteconf}
 \begin{filecontents*}[overwrite]{lwarp_mathjax.txt}
-<!-- https://groups.google.com/forum/#!topic/
-                               mathjax-users/jUtewUcE2bY -->
-<script type="text/x-mathjax-config">
-MathJax.Hub.Register.StartupHook("TeX AMSmath Ready",function () {
-    var seteqsectionDefault = {name: "", num: 0};
-    var seteqsections = {}, seteqsection = seteqsectionDefault;
-    var TEX = MathJax.InputJax.TeX, PARSE = TEX.Parse;
-    var AMS = MathJax.Extension["TeX/AMSmath"];
-    TEX.Definitions.Add({
-    macros: {
-        seteqsection: "mySection",
-        seteqnumber: "mySetEqNumber"
-    }
-    });
+<script>
+// Lwarp MathJax emulation code
+//
+// Based on code by Davide P. Cervone.
+// Equation numbering: https://github.com/mathjax/MathJax/issues/2427
+// Starred and ifnextchar macros: https://github.com/mathjax/MathJax/issues/2428
+// \left, \right delimiters: https://github.com/mathjax/MathJax/issues/2535
+// 
+// Modified by Brian Dunn to adjust equation numbering and add subequations.
+//
+// LaTeX can use \seteqnumber{subequations?}{section}{number} before each equation.
+// subequations? is 0 usually, 1 if inside subequations.
+// section is a string printed as-is, or empty.
+// number is auto-incremented by MathJax between equations.
+//
+MathJax = {
+  subequations: "0",
+  section: "",
+  loader: {
+    load: ['[tex]/tagformat', '[tex]/textmacros'],
+  },
+  startup: {
+    ready() {
+      //  These would be replaced by import commands if you wanted to make
+      //  a proper extension.
+      const Configuration = MathJax._.input.tex.Configuration.Configuration;
+      const CommandMap = MathJax._.input.tex.SymbolMap.CommandMap;
+      const Macro = MathJax._.input.tex.Symbol.Macro;
+      const TexError = MathJax._.input.tex.TexError.default;
+      const ParseUtil = MathJax._.input.tex.ParseUtil.default;
+      const expandable = MathJax._.util.Options.expandable;
 
-    PARSE.Augment({
-    mySection: function (name) {
-        seteqsection.num = AMS.number;
-        var n = this.GetArgument(name);
-        if (n === "") {
-            seteqsection = seteqsectionDefault;
-        } else {
-            if (!seteqsections["_"+n])
-                seteqsections["_"+n] = {name:n, num:0};
-            seteqsection = seteqsections["_"+n];
+      //  Insert the replacement string into the TeX string, and check
+      //  that there haven't been too many maxro substitutions (prevents
+      //  infinite loops).
+      const useArgument = (parser, text) => {
+        parser.string = ParseUtil.addArgs(parser, text, parser.string.slice(parser.i));
+        parser.i = 0;
+        if (++parser.macroCount > parser.configuration.options.maxMacros) {
+          throw new TexError('MaxMacroSub1',
+          'MathJax maximum macro substitution count exceeded; ' +
+          'is there a recursive macro call?');
         }
-        AMS.number = seteqsection.num;
-    },
-    mySetEqNumber: function (name) {
-        var n = this.GetArgument(name);
-        if (!n || !n.match(/^ *[0-9]+ *$/))
-            n = "";
-        else
-            n = parseInt(n)-1;
-        <!-- $ syntax highlighting -->
-        if (n === "" || n < 1)
-            TEX.Error
-            ("Argument to "+name+" should be a positive integer");
-        AMS.number = n;
-    }
-    });
-    MathJax.Hub.Config({
-    TeX: {
-        equationNumbers: {
-            formatTag: function (n) {
-                <!-- if not numeric, don't include the chapter -->
-                if (!n.match(/^ *[0-9]+ *$/ ))
-                <!-- $ syntax highlighting -->
-                    return "("+(n).replace(/^\./,"")+")" ;
-                else
-                    return "("+(seteqsection.name+"."+n).replace(/^\./,"")+")" ;
-            },
-            formatID: function (n) {
-                n = (seteqsection.name+'.'+n).replace
-                    (/[:"'<>&]/g,"").replace(/^\./,"");
-                return 'mjx-eqn-' + n;
-            }
+      }
+
+      //  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.
+        IfstarFunction(parser, name) {
+          const resultstar = parser.GetArgument(name);
+          const resultnostar = parser.GetArgument(name);
+          const star = parser.GetStar();                 // true if there is a *
+          useArgument(parser, star ? resultstar : resultnostar);
+        },
+
+        //  This function implements an ifnextchar macro.
+        IfnextcharFunction(parser, name) {
+          let whichchar = parser.GetArgument(name);
+          if (whichchar.match(/^(?:0x[0-9A-F]+|[0-9]+)$/i)) {
+            // $ syntax highlighting
+            whichchar = String.fromCodePoint(parseInt(whichchar));
+          }
+          const resultnextchar = parser.GetArgument(name);
+          const resultnotnextchar = parser.GetArgument(name);
+          const gotchar = (parser.GetNext() === whichchar);
+          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
+            const star = parser.GetStar();                  // true if there is a *
+            const optBrackets = parser.GetBrackets(name);   // contents of optional brackets
+            const newsubequations = parser.GetArgument(name);  // the subequations argument
+            const neweqsection = parser.GetArgument(name);  // the eq section argument
+            const neweqnumber = parser.GetArgument(name);   // the eq number argument
+            MathJax.config.subequations=newsubequations ;   // a string with boolean meaning
+            MathJax.config.section=neweqsection ;           // a string with numeric meaning
+            parser.tags.counter = parser.tags.allCounter = neweqnumber ;
         }
-    }
-    });
-});
-</script>
 
-<!-- http://docs.mathjax.org/en/latest/options/ThirdParty.html -->
-<script type="text/x-mathjax-config">
-  MathJax.Ajax.config.path["Contrib"] =
-    "https://cdn.mathjax.org/mathjax/contrib";
-</script>
+      });
 
-<script type="text/x-mathjax-config">
-MathJax.Hub.Config({
-    TeX: {
-        extensions: ["autoload-all.js"] ,
-        equationNumbers: {
-            autoNumber: "AMS"
+      //  Create the Lwarp-macros package
+      Configuration.create('Lwarp-macros', {
+        handler: {macro: ['Lwarp-macros']}
+      });
+
+      MathJax.startup.defaultReady();
+
+      // For forward references:
+      MathJax.startup.input[0].preFilters.add(({math}) => {
+        if (math.inputData.recompile){
+            MathJax.config.subequations = math.inputData.recompile.subequations;
+            MathJax.config.section = math.inputData.recompile.section;
         }
-    }
-});
-</script>
+      });
+      MathJax.startup.input[0].postFilters.add(({math}) => {
+        if (math.inputData.recompile){
+            math.inputData.recompile.subequations = MathJax.config.subequations;
+            math.inputData.recompile.section = MathJax.config.section;
+        }
+      });
 
-<!-- Alternative CDN provider: -->
-<script type="text/javascript" async
-src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.6/MathJax.js?config=TeX-AMS_HTML-full">
+        // For \left, \right with unicode-math:
+        const {DelimiterMap} = MathJax._.input.tex.SymbolMap;
+        const {Symbol} = MathJax._.input.tex.Symbol;
+        const {MapHandler} = MathJax._.input.tex.MapHandler;
+        const delimiter = MapHandler.getMap('delimiter');
+        delimiter.add('\\lBrack', new Symbol('\\lBrack', '\u27E6'));
+        delimiter.add('\\rBrack', new Symbol('\\rBrack', '\u27E7'));
+        delimiter.add('\\lAngle', new Symbol('\\lAngle', '\u27EA'));
+        delimiter.add('\\rAngle', new Symbol('\\rAngle', '\u27EB'));
+        delimiter.add('\\lbrbrak', new Symbol('\\lbrbrak', '\u2772'));
+        delimiter.add('\\rbrbrak', new Symbol('\\rbrbrak', '\u2773'));
+        delimiter.add('\\lbag', new Symbol('\\lbag', '\u27C5'));
+        delimiter.add('\\rbag', new Symbol('\\rbag', '\u27C6'));
+        delimiter.add('\\llparenthesis', new Symbol('\\llparenthesis', '\u2987'));
+        delimiter.add('\\rrparenthesis', new Symbol('\\rrparenthesis', '\u2988'));
+        delimiter.add('\\llangle', new Symbol('\\llangle', '\u2989'));
+        delimiter.add('\\rrangle', new Symbol('\\rrangle', '\u298A'));
+        delimiter.add('\\Lbrbrak', new Symbol('\\Lbrbrak', '\u27EC'));
+        delimiter.add('\\Rbrbrak', new Symbol('\\Rbrbrak', '\u27ED'));
+        delimiter.add('\\lBrace', new Symbol('\\lBrace', '\u2983'));
+        delimiter.add('\\rBrace', new Symbol('\\rBrace', '\u2984'));
+        delimiter.add('\\lParen', new Symbol('\\lParen', '\u2985'));
+        delimiter.add('\\rParen', new Symbol('\\rParen', '\u2986'));
+        delimiter.add('\\lbrackubar', new Symbol('\\lbrackubar', '\u298B'));
+        delimiter.add('\\rbrackubar', new Symbol('\\rbrackubar', '\u298C'));
+        delimiter.add('\\lbrackultick', new Symbol('\\lbrackultick', '\u298D'));
+        delimiter.add('\\rbracklrtick', new Symbol('\\rbracklrtick', '\u298E'));
+        delimiter.add('\\lbracklltick', new Symbol('\\lbracklltick', '\u298F'));
+        delimiter.add('\\rbrackurtick', new Symbol('\\rbrackurtick', '\u2990'));
+        delimiter.add('\\langledot', new Symbol('\\langledot', '\u2991'));
+        delimiter.add('\\rangledot', new Symbol('\\rangledot', '\u2992'));
+        delimiter.add('\\lparenless', new Symbol('\\lparenless', '\u2993'));
+        delimiter.add('\\rparengtr', new Symbol('\\rparengtr', '\u2994'));
+        delimiter.add('\\Lparengtr', new Symbol('\\Lparengtr', '\u2995'));
+        delimiter.add('\\Rparenless', new Symbol('\\Rparenless', '\u2996'));
+        delimiter.add('\\lblkbrbrak', new Symbol('\\lblkbrbrak', '\u2997'));
+        delimiter.add('\\rblkbrbrak', new Symbol('\\rblkbrbrak', '\u2998'));
+        delimiter.add('\\lvzigzag', new Symbol('\\lvzigzag', '\u29D8'));
+        delimiter.add('\\rvzigzag', new Symbol('\\rvzigzag', '\u29D9'));
+        delimiter.add('\\Lvzigzag', new Symbol('\\Lvzigzag', '\u29DA'));
+        delimiter.add('\\Rvzigzag', new Symbol('\\Rvzigzag', '\u29DB'));
+        delimiter.add('\\lcurvyangle', new Symbol('\\lcurvyangle', '\u29FC'));
+        delimiter.add('\\rcurvyangle', new Symbol('\\rcurvyangle', '\u29FD'));
+        delimiter.add('\\Vvert', new Symbol('\\Vvert', '\u2980'));
+    }   // ready
+  },    // startup
+
+  tex: {
+    packages: {'[+]': ['tagformat', 'Lwarp-macros', 'textmacros']},
+    tags: "ams",
+        tagformat: {
+            number: function (n) {
+                if(MathJax.config.subequations==0)
+                    return(MathJax.config.section + n);
+                else
+                    return(MathJax.config.section + String.fromCharCode(96+n));
+            },
+        },
+  }
+}
 </script>
 
-<!-- No longer supported after April 30, 2017: -->
-<!--
 <script
-  src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML-full">
-</script>
--->
-
+    id="MathJax-script"
+    src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"
+></script>
 \end{filecontents*}
 % \end{Verbatim}% for syntax highlighting
 \end{LWRwriteconf}
 %    \end{macrocode}
 
-% ^^A A possible addition for siuntix:
-% ^^A <!-- https://github.com/burnpanck/MathJax-siunitx -->
-% ^^A 
-% ^^A <script type="text/x-mathjax-config">
-% ^^A  MathJax.Hub.Config({
-% ^^A    extensions: ["tex2jax.js","[siunitx]/siunitx.js"],
-% ^^A    jax: ["input/TeX","output/HTML-CSS"],
-% ^^A    tex2jax: {
-% ^^A         inlineMath: [["$","$"],["\\(","\\)"]] ,
-% ^^A         processClass: "tabbing|verse"
-% ^^A     },
-% ^^A    TeX: {extensions: ["AMSmath.js","AMSsymbols.js", "sinuitx.js"]}
-% ^^A  });
-% ^^A  MathJax.Ajax.config.path['siunitx']  = 'http://rawgit.com/burnpanck/MathJax-siunitx/master/';
-% ^^A  </script>
- 
- 
 
+
 % ^^A \subsection{\filenm{lwarp_KaTeX.txt}}
 
 % ^^A \DescribeFile{lwarp_KaTeX.txt}
@@ -18591,19 +20167,21 @@
 % \changes{v0.59}{2018/08/21}{\prog{lwarpmk}: Consolidated compiling options into \optn{printlatexcmd} and \optn{HTMLlatexcmd}.}
 % \changes{v0.59}{2018/09/06}{\prog{lwarpmk}: Added \cmds{lwarpmk epstopdf}.}
 % \changes{v0.66}{2019/01/27}{\prog{lwarpmk}: Added \optn{ImagesDirectory} and \optn{ImagesName}.}
-% \changes{v0.66}{2019/01/30}{\prog{lwarpmk}: Fix for \cmds{cleanlimages}.}%
-% \changes{v0.68}{2019/03/02}{\prog{lwarpmk}: Improved error handling if incomplete compile.}%
+% \changes{v0.66}{2019/01/30}{\prog{lwarpmk}: Fix for \cmds{cleanlimages}.}
+% \changes{v0.68}{2019/03/02}{\prog{lwarpmk}: Improved error handling if incomplete compile.}
 % \changes{v0.71}{2019/04/11}{\prog{lwarpmk}: If wrong \filenm{lwarpmk.conf} version,
 %                                               or wrong OS,
-%                                               displays the print command to recompile.}%
-% \changes{v0.74}{2019/08/05}{\prog{lwarpmk}: \cmds{lwarpmk clean} removes add'l files.}%
-% \changes{v0.74}{2019/08/14}{\prog{lwarpmk}: \cmds{lwarpmk epstopdf} and \cmds{pdftosvg} honor directories.}%
-% \changes{v0.81}{2020/03/04}{\prog{lwarpmk}: Improved error if in \pkg{lwarp} source directory.}%
+%                                               displays the print command to recompile.}
+% \changes{v0.74}{2019/08/05}{\prog{lwarpmk}: \cmds{lwarpmk clean} removes add'l files.}
+% \changes{v0.74}{2019/08/14}{\prog{lwarpmk}: \cmds{lwarpmk epstopdf} and \cmds{pdftosvg} honor directories.}
+% \changes{v0.81}{2020/03/04}{\prog{lwarpmk}: Improved error if in \pkg{lwarp} source directory.}
+% \changes{v0.84}{2020/03/30}{\prog{lwarpmk}: \optn{clean} also removes \filenm{comment_*.cut}}
+% \changes{v0.89}{2020/08/29}{\prog{lwarpmk}: \optn{clean} also removes \filenm{*.bbl}}
 %
 % The following is only generated if the \optn{lwarpmk} option
 %   was given to \pkg{lwarp}.
 %    \begin{macrocode}
-\begin{LWR at createlwarpmk}
+\begin{LWRcreatelwarpmk}
 %    \end{macrocode}
 %
 % ^^A *lwarpmk.lua
@@ -18611,10 +20189,10 @@
 \begin{filecontents*}[overwrite]{lwarpmk.lua}
 #!/usr/bin/env texlua
 
--- Copyright 2016-2020 Brian Dunn
+-- Copyright 2016-2021 Brian Dunn
 
 
-printversion = "v0.83"
+printversion = "v0.895"
 requiredconfversion = "2" -- also at *lwarpmk.conf
 
 function printhelp ()
@@ -18645,10 +20223,11 @@
 lwarpmk pdftosvg <list of file names>: Converts each PDF file to SVG.
 lwarpmk epstopdf <list of file names>: Converts each EPS file to PDF.
 lwarpmk clean [-p project]: Remove *.aux, *.toc, *.lof/t,
-    *.idx, *.ind, *.log, *_html_inc.*, .gl*,
+    *.idx, *.ind, *.bbl, *.log, *_html_inc.*, .gl*,
     *_html.pdf, *_html.html, *_html.sidetoc
 lwarpmk cleanall [-p project]: Remove auxiliary files, project.pdf, *.html
 lwarpmk cleanlimages: Removes all images from the "lateximages" directory.
+lwarpmk -v: Print the version number.
 lwarpmk -h: Print this help message.
 lwarpmk --help: Print this help message.
 
@@ -19008,12 +20587,13 @@
 -- Remove auxiliary files:
 -- All .aux files are removed since there may be many bbl*.aux files.
 -- Also removes sourcename_html.pdf, sourcename_html.html,
--- and sourcename_html.sidetoc.
+-- and sourcename_html.sidetoc, plus comment_*.cut.
 --
 os.execute ( rmname .. " *.aux " ..
     sourcename ..".toc " .. sourcename .. "_html.toc " ..
     sourcename ..".lof " .. sourcename .. "_html.lof " ..
     sourcename ..".lot " .. sourcename .. "_html.lot " ..
+    sourcename ..".bbl " .. sourcename .. "_html.bbl " ..
     " *.idx " ..
     " *.ind " ..
     sourcename ..".ps " .. sourcename .."_html.ps " ..
@@ -19022,7 +20602,8 @@
     sourcename .. "_html.pdf " ..
     sourcename .. "_html.html " ..
     sourcename .. "_html.sidetoc " ..
-    " *_html_inc.* "
+    " *_html_inc.* " ..
+    " comment_*.cut"
     )
 end
 
@@ -19549,6 +21130,12 @@
 printhelp ()
 
 
+-- lwarpmk -v:
+
+elseif (arg[1] == "-v" ) then
+-- The version number has already been printed
+-- by the lwarpmk intro.
+
 -- lwarpmk -h or lwarpmk --help :
 
 elseif (arg[1] == "-h" ) or (arg[1] == "--help") then
@@ -19568,7 +21155,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\end{LWR at createlwarpmk}
+\end{LWRcreatelwarpmk}
 %    \end{macrocode}
 %
 
@@ -19858,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}
@@ -19908,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.
 %
@@ -19984,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}%
@@ -20082,7 +21669,7 @@
 % such as 100+ for one chapter, 200+ for another chapter, etc.
 %    \begin{macrocode}
 \newcommand*{\SetHTMLFileNumber}[1]{%
-\setcounter{LWR at htmlfilenumber}{#1}%
+    \setcounter{LWR at htmlfilenumber}{#1}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -20108,9 +21695,43 @@
 %    \end{macrocode}
 
 
+% Updated each time a new \HTML\ file is begun.
+% Used to provide \HTML\ previous/next web page links.
+%    \begin{macrocode}
+\newcounter{LWR at HTMLpagenum}
+\setcounter{LWR at HTMLpagenum}{0}
+%    \end{macrocode}
+
+
+% \DescribeCounter{LWR at htmlseqfilenumber}
+% A sequential count of the number of each \HTML\ file as it is being created.
+% Number 0 is the home page.
+% Unlike \cs{LWR at htmlfilenumber}, this one is known to increment by one
+% for each file.  This is used to generate previous \slash next links for
+% each web page, via labels called |\BaseJobname-autofile-*|, and the
+% last page is also labelled |\BaseJobname-autofile-last|.
+%
+% \changes{v0.84}{2020/04/24}{Added prev/next links.}
+%    \begin{macrocode}
+\newcounter{LWR at htmlseqfilenumber}
+\setcounter{LWR at htmlseqfilenumber}{0}
+%    \end{macrocode}
+
+% \DescribeBoolean{LWR at setseqfilelabel}
+% At each new \HTML\ file, this is false until a sectional unit is used,
+% at which point this is set true and a label is placed.
+% In this way, the previous/next labels will point to a named section.
+%    \begin{macrocode}
+\newbool{LWR at setseqfilelabel}
+\setbool{LWR at setseqfilelabel}{false}
+%    \end{macrocode}
+
+
 % \DescribeCounter{LWR at htmlfilenumber}
 % Records the number of each \HTML\ file as it is being created.
 % Number 0 is the home page.
+% This might not be sequential, as the user may use
+% \cs{SetHTMLFileNumber} to create groups of numbered nodes.
 %    \begin{macrocode}
 \newcounter{LWR at htmlfilenumber}
 \setcounter{LWR at htmlfilenumber}{0}
@@ -20125,6 +21746,8 @@
 % \changes{v0.20}{2016/09/11}{Sections called ``Index'' or ``index'' have an underscore
 % prepended to their filenames if no prefix.}
 % \changes{v0.66}{2019/01/30}{Sanitize underscores.}
+% \changes{v0.84}{2020/04/10}{Fix: Sections called ``Index'' or ``index'' have \filenm{-0}
+%       appended to their filenames if no prefix.}
 %
 % Prints the filename for a given section: |\HTMLFilename{}filenumber/name.html|
 %    \begin{macrocode}
@@ -20144,15 +21767,15 @@
 % \LWR at traceinfo{about to assign temp}%
 \LWR at sanitize{#1}%
 \LWR at traceinfo{about to compare with ??}%
-\ifthenelse{\equal{\LWR at sanitized}{??}}%
+\ifdefstring{\LWR at sanitized}{??}
     {\LWR at traceinfo{found ??}}%
     {\LWR at traceinfo{not found ??}}%
 \LWR at traceinfo{about to compare with zero or empty}%
-\ifthenelse{%
-    \equal{\LWR at sanitized}{0}%
-    \OR \equal{\LWR at sanitized}{}%
-    \OR \equal{\LWR at sanitized}{??}%
-}%
+\ifboolexpr{
+    test {\ifdefstring{\LWR at sanitized}{0}} or
+    test {\ifdefstring{\LWR at sanitized}{}} or
+    test {\ifdefstring{\LWR at sanitized}{??}}
+}
 {%
     \LWR at traceinfo{LWR at htmlsectionfilename B \HomeHTMLFilename.html}%
     \HomeHTMLFilename.html%
@@ -20159,18 +21782,20 @@
 }%
 %    \end{macrocode}
 % For a \LaTeX\ section named ``Index'' or ``index'' without a prefix, create a filename
-% with a leading underscore to avoid colliding with the \HTML\ filename |index.html|:
+% with a trailing \filenm{-0} to avoid colliding with the \HTML\ filename |index.html|:
 %    \begin{macrocode}
 {%
     \LWR at traceinfo{LWR at htmlsectionfilename C \LWR at sanitized}%
-    \ifthenelse{%
-        \equal{\HTMLFilename}{} \AND
-        \equal{\LWR at sanitized}{Index} \OR
-        \equal{\LWR at sanitized}{index}%
+    \ifboolexpr{
+            test{\ifdefvoid{\HTMLFilename}} and
+            (
+                test{\ifdefstring{\LWR at sanitized}{Index}} or
+                test{\ifdefstring{\LWR at sanitized}{index}}
+            )
     }%
     {%
-        \LWR at traceinfo{Prefixing the index name with an underscore.}%
-        \_\LWR at sanitized.html%
+        \LWR at traceinfo{Adding a zero to the index filename.}%
+        \LWR at sanitized-0.html%
     }%
 %    \end{macrocode}
 % Otherwise, create a filename with the chosen prefix:
@@ -20189,18 +21814,18 @@
 %
 % 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}!}%
+    \LWR at traceinfo{LWR at htmlrefsectionfilename: !\detokenize{#1}!}%
 %    \end{macrocode}
 % \cs{LWR at nullfonts} to allow math in a section name.
 %    \begin{macrocode}
-\begingroup%
-\LWR at nullfonts%
-\LWR at htmlsectionfilename{\LWR at htmlfileref{#1}}%
-\endgroup%
-\LWR at traceinfo{LWR at htmlrefsectionfilename: done}%
+    \begingroup%
+    \LWR at nullfonts%
+    \LWR at htmlsectionfilename{\LWR at htmlfileref{#1}}%
+    \endgroup%
+    \LWR at traceinfo{LWR at htmlrefsectionfilename: done}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -20243,7 +21868,7 @@
 % The filename must be detokenized for underscores.
 %    \begin{macrocode}
 \newcommand*{\LinkHome}{%
-\LWR at subhyperrefclass{\HomeHTMLFilename.html}{\linkhomename}{linkhome}%
+    \LWR at subhyperrefclass{\HomeHTMLFilename.html}{\linkhomename}{linkhome}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -20302,8 +21927,8 @@
 % Creates a link to the homepage at the top of the page for use when the window is too
 % narrow for the side\TOC.
 %    \begin{macrocode}
-\newcommand*{\LWR at topnavigation}{
-\LWR at htmlelementclassline{nav}{topnavigation}{\LinkHome}
+\newcommand*{\LWR at topnavigation}{%
+    \LWR at htmlelementclassline{nav}{topnavigation}{\LinkHome}
 }
 %    \end{macrocode}
 % \end{macro}
@@ -20313,8 +21938,8 @@
 % Creates a link to the homepage at the bottom of the page for use when the window is too
 % narrow for the side\TOC.
 %    \begin{macrocode}
-\newcommand*{\LWR at botnavigation}{
-\LWR at htmlelementclassline{nav}{botnavigation}{\LinkHome}
+\newcommand*{\LWR at botnavigation}{%
+    \LWR at htmlelementclassline{nav}{botnavigation}{\LinkHome}
 }
 %    \end{macrocode}
 % \end{macro}
@@ -20324,7 +21949,111 @@
 %    \end{macrocode}
 
 
+% \section{Previous \Slash next navigation links}
 
+% \codeall
+%    \begin{macrocode}
+\begin{warpall}
+%    \end{macrocode}
+
+% \begin{macro}{\linkpreviousname} What to call the link to the previous web page.
+% \changes{v0.84}{2020/04/24}{Added prev/next links.}
+%    \begin{macrocode}
+\newcommand*{\linkpreviousname}{Previous}
+%    \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\linknextname} What to call the link to the next web page.
+% \changes{v0.84}{2020/04/24}{Added prev/next links.}
+%    \begin{macrocode}
+\newcommand*{\linknextname}{Next}
+%    \end{macrocode}
+% \end{macro}
+
+%    \begin{macrocode}
+\end{warpall}
+%    \end{macrocode}
+
+
+% \codeprint
+%    \begin{macrocode}
+\begin{warpprint}
+%    \end{macrocode}
+
+% \begin{macro}{\LinkPrevious} Creates a link to the previous web page if there is one.
+%    \begin{macrocode}
+\newcommand*{\LinkPrevious}{}
+%    \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\LinkNext} Creates a link to the next web page if there is one.
+%    \begin{macrocode}
+\newcommand*{\LinkNext}{}
+%    \end{macrocode}
+% \end{macro}
+
+%    \begin{macrocode}
+\end{warpprint}
+%    \end{macrocode}
+
+
+% \codehtml
+%    \begin{macrocode}
+\begin{warpHTML}
+%    \end{macrocode}
+
+% \begin{macro}{\LinkPrevious} Creates a link to the previous web page if there is one.
+%
+% The links refer to the \LaTeX\ labels |\Basejobname-autofile-*|
+%
+% \changes{v0.84}{2020/04/24}{Added prev/next links.}
+%    \begin{macrocode}
+\newcommand*{\LinkPrevious}{%
+    \ifnumless{\value{LWR at htmlseqfilenumber}}{1}{}{%
+        \setcounter{LWR at tempcountone}{\value{LWR at htmlseqfilenumber}-1}%
+        \LWR at subhyperrefclass{%
+            \LWR at htmlrefsectionfilename{%
+                \BaseJobname-autofile-\arabic{LWR at tempcountone}%
+            }%
+        }{\linkpreviousname}{linkhome}%
+    }%
+}
+%    \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\LinkNext} Creates a link to the next web page if there is one.
+%
+% The links refer to the \LaTeX\ labels |\Basejobname-autofile-*| \\
+% and the last is the label |\Basejobname-autofile-last|
+%
+% \changes{v0.84}{2020/04/24}{Added prev/next links.}
+%    \begin{macrocode}
+\newcommand*{\LinkNext}{%
+    \ifcsdef{r@\BaseJobname-autofile-last at lwarp}{%
+        \edef\LWR at tempone{%
+            \LWR at htmlfileref{\BaseJobname-autofile-\arabic{LWR at htmlseqfilenumber}}%
+        }%
+        \edef\LWR at temptwo{%
+            \LWR at htmlfileref{\BaseJobname-autofile-last}%
+        }%
+        \ifdefequal{\LWR at tempone}{\LWR at temptwo}{}{%
+            \setcounter{LWR at tempcountone}{\value{LWR at htmlseqfilenumber}+1}%
+            \LWR at subhyperrefclass{%
+                \LWR at htmlrefsectionfilename{%
+                    \BaseJobname-autofile-\arabic{LWR at tempcountone}%
+                }%
+            }{\linknextname}{linkhome}%
+        }%
+    }{}%
+}
+%    \end{macrocode}
+% \end{macro}
+
+%    \begin{macrocode}
+\end{warpHTML}
+%    \end{macrocode}
+
+
 % \section{\cs{LWRPrintStack} diagnostic tool}
 
 % Diagnostics tool:
@@ -20453,8 +22182,14 @@
 \newcommand{\LWR at forcenewpage}{%
 \LWR at traceinfo{LWR at forcenewpage}%
 \ifinner\else%
-\LWR at stoppars\LWR at orignewpage\LWR at startpars%
+    \LWR at traceinfo{LWR at forcenewpage A}%
+    \LWR at stoppars%
+    \LWR at traceinfo{LWR at forcenewpage B}%
+    \LWR at maybe@orignewpage%
+    \LWR at traceinfo{LWR at forcenewpage C}%
+    \LWR at startpars%
 \fi%
+\LWR at traceinfo{LWR at forcenewpage done}%
 }
 %    \end{macrocode}
 %
@@ -20544,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}
@@ -20559,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}
@@ -20568,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.}
@@ -20594,6 +22345,7 @@
     {}%
     {%
         \LetLtxMacro\LWR at FBcancel\NoAutoSpacing%
+        \appto{\LWR at hook@processingtags}{\LWR at FBcancel}%
     }%
 
 \@ifundefined{frenchbsetup}%
@@ -20606,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%
     }%
@@ -20674,12 +22426,13 @@
 % Break ligatures and use upright apostrophes in \HTML\ tags.
 %
 % \cs{protect} is in case the tag appears in \TOC, \LOF, \LOT.
+% \changes{v0.85}{2020/04/30}{Fix: Added print macros for \pkg{fontspec}.}
 %    \begin{macrocode}
 \newcommand*{\LWR at htmltagc}[1]{%
 \LWR at traceinfo{LWR at htmltagc !\detokenize{#1}!}%
 \begingroup%
-\LWR at FBcancel%
-\ifmmode\else\protect\LWR at origttfamily\fi%
+\LWR at hook@processingtags%
+\ifmmode\else\protect\LWR at print@normalfont\protect\LWR at origttfamily\fi%
 \protect\LWR at origtextless%
 \LWR at isolate{#1}%
 \protect\LWR at origtextgreater%
@@ -20689,7 +22442,36 @@
 % \end{macro}
 % 
 
+% \begin{macro}{\LWR at spanwarnformat} \marg{object}
+%
+% Warns if the given object is used inside a span.
+%    \begin{macrocode}
+\newcommand*{\LWR at spanwarnformat}[1]{%
+    \ifnumcomp{\value{LWR at spandepth}}{>}{0}{%
+        \PackageWarning{lwarp}{%
+            A #1 is being used inside a span.\MessageBreak
+            Formatting may be lost,%
+        }%
+    }{}%
+}
+%    \end{macrocode}
+% \end{macro}
 
+% \begin{macro}{\LWR at spanwarninvalid} \marg{object}
+%
+% Warns if the given object is used inside a span.
+%    \begin{macrocode}
+\newcommand*{\LWR at spanwarninvalid}[1]{%
+    \ifnumcomp{\value{LWR at spandepth}}{>}{0}{%
+        \PackageWarning{lwarp}{%
+            A #1 is being used inside a span.\MessageBreak
+            This generates invalid HTML,%
+        }%
+    }{}%
+}
+%    \end{macrocode}
+% \end{macro}
+
 % \begin{environment}{LWR at nestspan} Disable \env{minipage}, \cs{parbox},
 %	and \HTML\ \element{div}s inside a \element{span}.
 %
@@ -20706,6 +22488,8 @@
 % \changes{v0.44}{2017/11/15}{Added \env{list} and \env{trivlist}.}
 % \changes{v0.70}{2019/04/02}{Improved \env{minipage}, \cs{parbox} inside a span.}
 % \changes{v0.73}{2019/06/23}{Fix: \env{quote}, \env{quotation} inside a span.}
+% \changes{v0.84}{2020/04/22}{Nullified \env{minipage}, \cs{parbox} inside a span.}
+% \changes{v0.84}{2020/04/22}{Issue warnings inside a span.}
 %
 %    \begin{macrocode}
 \newcommand*{\LWR at nestspanitem}{%
@@ -20723,11 +22507,21 @@
 {% not in a lateximage
     \LWR at traceinfo{LWR at nestspan: NOT inside a lateximage}%
     \addtocounter{LWR at spandepth}{1}%
+%    \end{macrocode}
+% Nullify several objects inside the span:
+% ^^A        {\LWR at subhtmlelementclass{span}{inlineminipage}}%
+% ^^A         {\LWR at htmltagc{/span}}%
+%    \begin{macrocode}
     \RenewDocumentEnvironment{minipage}{O{t} o O{t} m}%
-        {\LWR at subhtmlelementclass{span}{inlineminipage}}%
-        {\LWR at htmltagc{/span}}%
-    \RenewDocumentEnvironment{BlockClass}{o m}{}{}%
-    \renewcommand{\BlockClassSingle}[2]{##2}%
+        {\LWR at spanwarnformat{minipage or \protect\parbox}}%
+        {}%
+    \RenewDocumentEnvironment{BlockClass}{o m}%
+        {\LWR at spanwarnformat{multi-paragraph object}}%
+        {}%
+    \renewcommand{\BlockClassSingle}[2]{%
+        {\LWR at spanwarnformat{multi-paragraph object}}%
+        ##2%
+    }%
     \renewcommand{\LWR at forcenewpage}{}%
     \renewcommand{\LWR at liststart}{%
         \let\item\LWR at nestspanitem%
@@ -20811,13 +22605,14 @@
 % \begin{macro}{\LWR at htmlclosecomment}
 % \changes{v0.47}{2018/01/25}{Add \cs{mbox} to prevent line breaks.}
 % \changes{v0.63}{2018/11/30}{Fix: Break ligature for \pkg{luatexko}.}
+% \changes{v0.85}{2020/04/29}{Fix: Added print macros for \pkg{fontspec}.}
 %    \begin{macrocode}
 \newcommand*{\LWR at htmlopencomment}{%
 {%
 % \LWR at traceinfo{LWR at htmlopencomment}%
 \begingroup%
-\LWR at FBcancel%
-\ifmmode\else\protect\LWR at origttfamily\fi%
+\LWR at hook@processingtags%
+\ifmmode\else\protect\LWR at print@normalfont\protect\LWR at origttfamily\fi%
 \LWR at print@mbox{\LWR at origtextless{}!-\/-}%
 \endgroup%
 }%
@@ -20827,8 +22622,8 @@
 {%
 % \LWR at traceinfo{LWR at htmlclosecomment}%
 \begingroup%
-\LWR at FBcancel%
-\ifmmode\else\protect\LWR at origttfamily\fi%
+\LWR at hook@processingtags%
+\ifmmode\else\protect\LWR at print@normalfont\protect\LWR at origttfamily\fi%
 \LWR at print@mbox{-\/-\LWR at origtextgreater}%
 \endgroup%
 }%
@@ -20840,15 +22635,21 @@
 % \begin{macro}{\LWR at htmlcomment} \marg{comment}
 %
 % \changes{v0.28}{2017/04/13}{Breaks ligatures in \HTML\ comments.}
-%
+% \changes{v0.85}{2020/04/29}{Fix: Added print macros for \pkg{fontspec}.}
+% \changes{v0.893}{2020/10/16}{Disabled in math mode.}
 %    \begin{macrocode}
 \newcommand{\LWR at htmlcomment}[1]{%
-\LWR at htmlopencomment{}%
-{%
-\LWR at origttfamily% break ligatures
-#1%
-}%
-\LWR at htmlclosecomment{}}
+\ifmmode%
+\else%
+    \LWR at htmlopencomment{}%
+    {%
+        \LWR at print@normalfont%
+        \LWR at origttfamily% break ligatures
+        #1%
+    }%
+    \LWR at htmlclosecomment{}%
+\fi%
+}
 %    \end{macrocode}
 % \end{macro}
 %
@@ -20874,6 +22675,7 @@
 
 % \subsection{Div class and element class}
 
+
 % \begin{macro}{\LWR at subhtmlelementclass} \marg{element} \oarg{style} \marg{class}
 %
 % Factored and reused in several places.
@@ -20887,21 +22689,22 @@
 % \changes{v0.34}{2017/08/02}{Moved optional argument in front of mandatory.}
 % \changes{v0.63}{2018/11/24}{Fix for \pkg{xeCJK}.}
 % \changes{v0.66}{2019/02/02}{Improved \HTML\ formatting.}
+% \changes{v0.892}{2020/10/03}{Ignore empty class.}
 %
 %    \begin{macrocode}
 \NewDocumentCommand{\LWR at subhtmlelementclass}{m O{} m}{%
 \LWR at traceinfo{LWR at subhtmlelementclass !#1!#2!#3!}%
 \ifblank{#2}%
-{% empty option
+{% empty style
     \LWR at htmltag{%
-        #1 % space
-        class=\textquotedbl#3\textquotedbl\ % space
+        #1%
+        \ifblank{#3}{}{ class=\textquotedbl#3\textquotedbl\ }% spaces
     }%
 }%
-{% non-empty option
+{% non-empty style
     \LWR at htmltag{%
         #1\LWR at indentHTML%
-        class=\textquotedbl#3\textquotedbl\LWR at indentHTML%
+        \ifblank{#3}{}{class=\textquotedbl#3\textquotedbl\LWR at indentHTML}%
         style=\textquotedbl#2\textquotedbl\LWR at orignewline%
     }%
 }%
@@ -21043,12 +22846,12 @@
 % \codehtml
 %    \begin{macrocode}
 \begin{warpHTML}
+
 \NewDocumentEnvironment{LWR at print@BlockClass}{o m}{}{}%
+
 \NewDocumentEnvironment{LWR at HTML@BlockClass}{o m}%
-{%
-    \LWR at htmldivclass[#1]{#2}%
-}
-{\LWR at htmldivclassend{#2}}
+    {\LWR at htmldivclass[#1]{#2}}
+    {\LWR at htmldivclassend{#2}}
 
 \LWR at formattedenv{BlockClass}
 \end{warpHTML}
@@ -21073,7 +22876,7 @@
 %    \begin{macrocode}
 \begin{warpHTML}
 \newcommand{\LWR at HTML@BlockClassSingle}[2]{%
-\LWR at htmlelementclassline{div}{#1}{#2}%
+    \LWR at htmlelementclassline{div}{#1}{#2}%
 }
 
 \LWR at formatted{BlockClassSingle}
@@ -21497,14 +23300,18 @@
 % \begin{macro}{\LWR at startpars}
 % Begin handling \HTML\ paragraphs.
 % This allows an \HTML\ paragraph to start, but one has not yet begun.
+% \changes{v0.84}{2020/04/14}{Ignore if in \env{lateximage}.}
 %    \begin{macrocode}
 \newcommand*{\LWR at startpars}%
 {%
 % \LWR at traceinfo{LWR at startpars}%
 %    \end{macrocode}
-% Ignore if inside a span:
+% Ignore if inside a \env{lateximage} or \element{span}:
 %    \begin{macrocode}
-\ifnumcomp{\value{LWR at spandepth}}{>}{0}%
+\ifboolexpr{
+    test {\ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}} or
+    test {\ifnumcomp{\value{LWR at spandepth}}{>}{0}}
+}%
 {}%
 {%
 %    \end{macrocode}
@@ -21550,13 +23357,17 @@
 % Any currently open \HTML\ paragraph is closed, and no more will be opened.
 %
 % \changes{v0.36}{2017/08/15}{Extra \protect\HTML\ source space after paragraphs.}
+% \changes{v0.84}{2020/04/14}{Ignore if in \env{lateximage}.}
 %    \begin{macrocode}
 \newcommand*{\LWR at stoppars}%
 {%
 %    \end{macrocode}
-% Ignore if inside a span:
+% Ignore if inside a \env{lateximage} or \element{span}:
 %    \begin{macrocode}
-\ifnumcomp{\value{LWR at spandepth}}{>}{0}%
+\ifboolexpr{
+    test {\ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}} or
+    test {\ifnumcomp{\value{LWR at spandepth}}{>}{0}}
+}%
 {}%
 {%
 %    \end{macrocode}
@@ -21635,14 +23446,12 @@
 
 %    \begin{macrocode}
 \AtBeginDocument{
-\def\@afterindentfalse{\let\if at afterindent\iffalse}
-\@afterindentfalse
+    \def\@afterindentfalse{\let\if at afterindent\iffalse}
+    \@afterindentfalse
 }
 \let\LWR at afterindent@syntaxhighlight\fi% syntax highlighting
 %    \end{macrocode}
 
-
-
 %    \begin{macrocode}
 \end{warpHTML}
 %    \end{macrocode}
@@ -21658,8 +23467,10 @@
 % In the following, catcode is manually changed back and forth
 % without groups, since new macros are being defined which must
 % not be contained within the groups.
+% \changes{v0.84}{2020/04/24}{Added \cs{FirstPageBottom}.}
 %    \begin{macrocode}
 \newcommand{\LWR at firstpagetop}{}	% for the home page alone
+\newcommand{\LWR at firstpagebottom}{} % for the home page alone
 \newcommand{\LWR at pagetop}{}			% for all other pages
 \newcommand{\LWR at pagebottom}{}
 %    \end{macrocode}
@@ -21678,7 +23489,20 @@
 %
 % \end{macro}
 %
+% \begin{macro}{\HTMLFirstPageBottom} \marg{text and logos}
 %
+% \changes{v0.84}{2020/04/24}{Added \cs{FirstPageBottom}.}
+%
+%    \begin{macrocode}
+\newcommand{\HTMLFirstPageBottom}[1]{%
+    \renewcommand{\LWR at firstpagebottom}{#1}%
+}
+%    \end{macrocode}
+%
+%
+% \end{macro}
+%
+%
 % \begin{macro}{\HTMLPageTop} \marg{text and logos}
 %
 % \changes{v0.30}{2017/04/28}{Renamed from \cs{SetPageTop}.}
@@ -21752,7 +23576,7 @@
 
 
 
-% \section{MathJax script}
+% \section{\brand{MathJax} script}
 
 % \codehtml
 %    \begin{macrocode}
@@ -21761,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}
@@ -21774,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}
@@ -22198,7 +24022,7 @@
 % \changes{v0.48}{2018/02/11}{Removed \cs{itshape}.}
 %    \begin{macrocode}
 \AtBeginDocument{
-\def\thempfootnote{\@alph\c at mpfootnote}
+    \def\thempfootnote{\@alph\c at mpfootnote}
 }
 %    \end{macrocode}
 % \end{macro}
@@ -22440,6 +24264,7 @@
 \begin{warpHTML}
 %    \end{macrocode}
 
+
 % \begin{macro}{\LWR at thisfilename}
 % The currently-active filename or number.
 % At first, this is the homepage.
@@ -22513,7 +24338,28 @@
 % \end{macro}
 
 
+% \begin{macro}{\LWR at avoiddupfilenames} \qquad
+%   Instructions for how to avoid duplicate filenames.
+%   This is used in a warning in \cs{LWR at filenamenoblanks},
+%   and in an error in \cs{LWR at newhtmlfile}.
+%    \begin{macrocode}
+\newcommand*{\LWR at avoiddupfilenames}{%
+    To avoid duplicate filenames, use the optional\MessageBreak
+    short Table of Contents entry:\MessageBreak
+    \space\space\protect\section[Unique name, no math]{Name with math}%
+        \MessageBreak
+    or use \protect\texorpdfstring, from the hyperref package:\MessageBreak
+    \space\space%
+        \protect\section{\MessageBreak
+            \space\space\space\space\protect\texorpdfstring\MessageBreak
+                \space\space\space\space\space\space%
+                {Name with math}{Unique name, no math}\MessageBreak
+        \space\space}
+}
+%    \end{macrocode}
+% \end{macro}
 
+
 % \begin{macro}{\LWR at filenamenoblanks} \marg{filename}
 %
 % Convert blanks into dashes, removes short words,
@@ -22539,6 +24385,7 @@
 %    \begin{macrocode}
 \edef\LWR at thisnewfilename{#1}%
 %    \end{macrocode}
+%
 % Replaces common macros with hyphens.
 % (\cs{\&} is done by \cs{LWR at nullfonts}.)
 %    \begin{macrocode}
@@ -22555,7 +24402,32 @@
 %    \begin{macrocode}
 \edef\LWR at thisnewfilename{\detokenize\expandafter{\LWR at thisnewfilename}}%
 %    \end{macrocode}
+%
+% Warn if there is dollar math in the section name:
 %    \begin{macrocode}
+\ifbool{FileSectionNames}{%
+    \IfSubStr{\LWR at thisnewfilename}{\LWRdollar}{%
+        \PackageWarning{lwarp}
+        {%
+            This section name:\MessageBreak
+            \space\space``\detokenize\expandafter{#1}''\MessageBreak
+            at the line number listed below,\MessageBreak
+            is using $dollar-delimited math$,
+            which generates\MessageBreak
+            complicated file names.  It is better to use\MessageBreak
+            \space\space%
+                \protect\section{Name with \protect\(parenthesis math\protect\)}%
+                \MessageBreak
+            The math then will be removed from the file name.\MessageBreak
+            \MessageBreak
+            \LWR at avoiddupfilenames%
+            \MessageBreak
+            This section is found before or%
+        }
+    }{}%
+}{}
+%    \end{macrocode}
+%    \begin{macrocode}
 \LWR at traceinfo{LWR at filenamenoblanks edef: !\LWR at thisnewfilename!}%
 \fullexpandarg%
 %    \end{macrocode}
@@ -22564,12 +24436,16 @@
 \LWR at simplifyname*{ }
 %    \end{macrocode}
 % Convert punctutation into hyphens:
+% \changes{v0.86}{2020/05/04}{Fix: \filenm{*}, \filenm{(}, \filenm{)}, \filenm{.} in filename.}
 %    \begin{macrocode}
+\LWR at simplifyname*{*}
+\LWR at simplifyname*{(}
+\LWR at simplifyname*{)}
+\LWR at simplifyname*{.}
 \LWR at simplifyname*{!}
 \LWR at simplifyname*{,}
 \LWR at simplifyname*{'}
 \LWR at simplifyname*{+}
-\LWR at simplifyname*{,}
 \LWR at simplifyname*{/}
 \LWR at simplifyname*{:}
 \LWR at simplifyname*{;}
@@ -22631,28 +24507,31 @@
 %    \begin{macrocode}
 \LWR at simplifycustom%
 %    \end{macrocode}
-% Convert multiple hyphens:
-%    \begin{macrocode}
-\LWR at simplifyname*{-----}
-\LWR at simplifyname*{----}
-\LWR at simplifyname*{---}
-\LWR at simplifyname*{--}
-%    \end{macrocode}
+%
 % If pdf\LaTeX\ and not \optn{utf8} encoding, don't try to convert emdash, endash:
 % \changes{v0.52}{2018/04/01}{Fix: \cs{FileDepth} with non-utf8 encoding.}
+% \changes{v0.84}{2020/04/21}{Fix: Dashes in filename.}
 %    \begin{macrocode}
 \ifPDFTeX% pdflatex or dvi latex
 \ifdefstring{\inputencodingname}{utf8}{%
-\LWR at simplifyname*{—}
+    \LWR at simplifyname*{—}
 %     emdash
-\LWR at simplifyname*{–}
+    \LWR at simplifyname*{–}
 %     endash
 }{}%
 \else% not PDFTeX
-\LWR at simplifyname*{—}
-\LWR at simplifyname*{–}
+    \LWR at simplifyname*{—}
+    \LWR at simplifyname*{–}
 \fi%
 %    \end{macrocode}
+%
+% Convert multiple hyphens:
+%    \begin{macrocode}
+\LWR at simplifyname*{-----}
+\LWR at simplifyname*{----}
+\LWR at simplifyname*{---}
+\LWR at simplifyname*{--}
+%    \end{macrocode}
 % If starts with a dash, remove the leading dash:
 %    \begin{macrocode}
 \IfBeginWith{\LWR at thisnewfilename}{\detokenize{-}}{%
@@ -22726,7 +24605,7 @@
 %
 % Replaces strings inside \cs{tmpb}.
 %
-% Modified from the original by \textsc{Petr Olsak}, from the \pkg{opmac} package.
+% Modified from the original, by \textsc{Petr Olsak}, from the \pkg{opmac} package.
 %
 % \changes{v0.81}{2020/02/24}{Added.}
 %    \begin{macrocode}
@@ -22752,7 +24631,17 @@
 %    \end{macrocode}
 % \end{macro}
 
+% \DescribeBoolean{LWR at MathJax@silentquotes}
+%   If true, double quotes (\cs{"} and |"|) are removed (used for \pkg{mathspec}).
+%   This unfortunately includes double quotes used inside \cs{text} with \brand{MathJax}.
+%   If false, double quotes are escaped.
+%    \begin{macrocode}
+\newbool{LWR at MathJax@silentquotes}
+\boolfalse{LWR at MathJax@silentquotes}
+%    \end{macrocode}
 
+
+
 % \begin{macro}{\LWR at subHTMLsanitize}
 %
 % \cs{LWR at strresult} must first be set by \cs{LWR at HTMLsanitize},
@@ -22775,11 +24664,21 @@
     \LWR at replacestrings{<}{<}%
     \LWR at replacestrings{>}{>}%
 %    \end{macrocode}
-% The double quote occasionally causes problems.
+% The quotes occasionally causes problems.
+% For \pkg{mathspec}, also allow neutralization of \cs{"} and the |"| character.
+% \changes{v0.891}{2020/09/09}{Neutralized single quotes.}
+% \changes{v0.893}{2020/11/22}{Optionally neutralized single quotes.}
 %    \begin{macrocode}
-    \LWR at replacestrings{"}{"}%
+    \ifbool{LWR at MathJax@silentquotes}
+        {%
+            \expandafter\LWR at replacestrings\expandafter{\LWRbackslash"}{}%
+            \LWR at replacestrings{"}{}%
+        }%
+        {\LWR at replacestrings{"}{"}}%
+    \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.
@@ -22803,10 +24702,8 @@
 % and fully expand the strings:
 %    \begin{macrocode}
     \begingroup%
-    \LWR at FBcancel%
-    \fullexpandarg%
-    \protect\StrSubstitute{\detokenize{#1}}%
-        {\detokenize{\&}}{\detokenize{&}}[\LWR at strresult]%
+    \LWR at hook@processingtags%
+    \edef\LWR at strresult{\detokenize{#1}}%
     \LWR at subHTMLsanitize%
     \LWR at strresult%
     \endgroup%
@@ -22818,11 +24715,25 @@
 % \begin{macro}{\LWR at HTMLsanitizeexpand} \marg{text}
 %
 % This version expands the argument before sanitizing it.
+% This is only used for adding math to \brand{MathJax} expressions or
+% \env{lateximage} \attribute{alt} tags.
 %
 % \changes{v0.36}{2017/08/16}{Fix for \pkg{babel-french}.}
 % \changes{v0.51}{2018/03/07}{Fix: Escapes double quotes.}
-% \changes{v0.79}{2020/01/27}{Fix: \cs{\&}.}
+% ^^A \changes{v0.79}{2020/01/27}{Fix: \cs{\&}.}
+% \changes{v0.89}{2020/08/08}{Fix: Nested \brand{MathJax} environments.}
+% ^^A *88*
 %    \begin{macrocode}
+\edef\LWR at beginspaceleftbrace{begin \LWRleftbrace}
+\edef\LWR at beginspaceleftbrace{\detokenize\expandafter{\LWR at beginspaceleftbrace}}
+\edef\LWR at beginleftbrace{begin\LWRleftbrace}
+\edef\LWR at beginleftbrace{\detokenize\expandafter{\LWR at beginleftbrace}}
+
+\edef\LWR at endspacerightbrace{end \LWRrightbrace}
+\edef\LWR at endspacerightbrace{\detokenize\expandafter{\LWR at endspacerightbrace}}
+\edef\LWR at endrightbrace{end\LWRrightbrace}
+\edef\LWR at endrightbrace{\detokenize\expandafter{\LWR at endrightbrace}}
+
 \newrobustcmd{\LWR at HTMLsanitizeexpand}[1]{%
 %    \end{macrocode}
 % Cancel French \pkg{babel} character handling,
@@ -22829,14 +24740,25 @@
 % and fully expand the strings:
 %    \begin{macrocode}
     \begingroup%
-    \LWR at FBcancel%
-    \fullexpandarg%
+    \LWR at hook@processingtags%
 %    \end{macrocode}
 % The difference between this and \cs{LWR at HTMLsanitize} (without ``expand'')
 % is the following \cs{expandafter}:
 %    \begin{macrocode}
-    \protect\StrSubstitute{\detokenize\expandafter{#1}}%
-        {\detokenize{\&}}{\detokenize{&}}[\LWR at strresult]%
+    \edef\LWR at strresult{\detokenize\expandafter{#1}}%
+%    \end{macrocode}
+% The math expression may includes spaces between tokens,
+% but \brand{MathJax} does not want a space between \cs{begin} or \cs{end}
+% and the following brace.
+% This space is removed here.
+% ^^A *88*
+%    \begin{macrocode}
+    \protect\StrSubstitute{\LWR at strresult}%
+        {\LWR at beginspaceleftbrace}{\LWR at beginleftbrace}[\LWR at strresult]%
+    \protect\StrSubstitute{\LWR at strresult}%
+        {\LWR at endspacerightbrace}{\LWR at endrightbrace}[\LWR at strresult]%
+%    \end{macrocode}
+%    \begin{macrocode}
     \LWR at subHTMLsanitize%
     \LWR at strresult%
     \endgroup%
@@ -22869,10 +24791,8 @@
 %    \begin{macrocode}
 \newcommand*{\LWR at subcustomizedmathjax}[1]{%
     \begingroup%
-    \LWR at FBcancel%
-    \fullexpandarg%
-    \protect\StrSubstitute{\detokenize{#1}}%
-        {\detokenize{\&}}{\detokenize{&}}[\LWR at strresult]%
+    \LWR at hook@processingtags%
+    \edef\LWR at strresult{\detokenize{#1}}%
     \LWR at subHTMLsanitize%
     \xdef\LWR at customizedMathJax{%
         \LWR at customizedMathJax%
@@ -22898,8 +24818,8 @@
 \newcommand*{\CustomizeMathJax}[1]{%
     \ifbool{LWR at warnedcustomizemathjax}{}{%
         \StrLen{\detokenize{#1}}[\LWR at tempone]%
-        \ifnumgreater{\LWR at tempone}{200}{%
-            \AtBeginDocument{%
+        \ifnumgreater{\LWR at tempone}{350}{%
+            \AtEndDocument{%
                 \PackageWarningNoLine{lwarp}{%
                     To ensure faster MathJax compilation, place each\MessageBreak
                     custom macro in its own \protect\CustomizeMathJax.\MessageBreak
@@ -22931,7 +24851,8 @@
 %    \end{macrocode}
 % \end{macro}
 
-%
+
+% ^^A *mathjax customizations
 % Default customizations:
 % \margintag{defaults}
 %
@@ -22945,6 +24866,8 @@
 % \changes{v0.51}{2018/03/18}{\brand{MathJax}: Nullifies \cs{ensuremath}.}
 % \changes{v0.57}{2018/05/24}{\brand{MathJax}: Supports \cs{footnote}, \cs{footnotemark}.}
 % \changes{v0.79}{2020/01/24}{\brand{MathJax}: Additional macros.}
+% \changes{v0.893}{2020/10/14}{\brand{MathJax}: Added \cs{mathnormal}.}
+% \changes{v0.894}{2020/12/22}{\brand{MathJax}: Added \cs{arabic}, \cs{number}, \cs{noalign}.}
 %
 % For footnotes, \cs{footnotename} is used in most cases, however
 % for \env{equation} the footnote is picked up from \LaTeX in \cs{LWR at doendequation}.
@@ -22975,11 +24898,18 @@
 \CustomizeMathJax{\def\LWRfootnote{1}}
 \CustomizeMathJax{\newcommand{\footnote}[2][\LWRfootnote]{{}^{\mathrm{#1}}}}
 \CustomizeMathJax{\newcommand{\footnotemark}[1][\LWRfootnote]{{}^{\mathrm{#1}}}}
-\end{warpMathJax}
 %    \end{macrocode}
-
+%
+% \cs{hspace} is modified to accept and ignore a star:
+% \changes{v0.894}{2020/12/21}{\brand{MathJax}: Accept starred \cs{hspace}.}
 %    \begin{macrocode}
-\begin{warpMathJax}
+\CustomizeMathJax{\let\LWRorighspace\hspace}
+\CustomizeMathJax{\renewcommand{\hspace}{\ifstar\LWRorighspace\LWRorighspace}}
+%    \end{macrocode}
+%
+% Various other customizations:
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\mathnormal}[1]{{#1}}}
 \CustomizeMathJax{\newcommand\ensuremath[1]{#1}}
 \CustomizeMathJax{% absorb two optional arguments
     \newcommand{\LWRframebox}[2][]{\fbox{#2}}
@@ -22989,9 +24919,28 @@
 \CustomizeMathJax{\newcommand{\addtolength}[2]{}}
 \CustomizeMathJax{\newcommand{\setcounter}[2]{}}
 \CustomizeMathJax{\newcommand{\addtocounter}[2]{}}
+\CustomizeMathJax{\newcommand{\arabic}[1]{}}
+\CustomizeMathJax{\newcommand{\number}[1]{}}
+\CustomizeMathJax{\newcommand{\noalign}[1]{\text{#1}\notag \\}}
 \CustomizeMathJax{\newcommand{\cline}[1]{}}
 \CustomizeMathJax{\newcommand{\directlua}[1]{\text{(directlua)}}}
 \CustomizeMathJax{\newcommand{\luatexdirectlua}[1]{\text{(directlua)}}}
+%    \end{macrocode}
+%
+% \cs{protect}, \cs{mathchar}, and \cs{delimiter} are silently discarded; and
+% \cs{mathcode} and \cs{delcode} are ignored.
+% \changes{v0.89}{2020/07/27}{mathjax=\brand{MathJax}: Added \cs{protect}, and
+%   \cs{mathcode} and related.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\protect}{}}
+\CustomizeMathJax{\def\LWRabsorbnumber#1 {}}
+\CustomizeMathJax{\def\LWRabsorbquotenumber"#1 {}}
+\CustomizeMathJax{\newcommand{\LWRabsorboption}[1][]{}}
+\CustomizeMathJax{\newcommand{\LWRabsorbtwooptions}[1][]{\LWRabsorboption}}
+\CustomizeMathJax{\def\mathchar{\ifnextchar"\LWRabsorbquotenumber\LWRabsorbnumber}}
+\CustomizeMathJax{\def\mathcode#1={\mathchar}}
+\CustomizeMathJax{\let\delcode\mathcode}
+\CustomizeMathJax{\let\delimiter\mathchar}
 \end{warpMathJax}
 
 \begin{warpHTML}% due to warpMathJax
@@ -22999,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}
@@ -23011,16 +24960,19 @@
 \LWR at stoppars
 \LWR at htmlcomment{MathJax customizations:}
 
-\typeout{---}
-\typeout{Package lwarp:}
-\typeout{Processing MathJax customizations. If this takes too long,}
-\typeout{see the Lwarp manual regarding customizing MathJax.}
 \begin{BlockClass}{hidden}
 \LWR at stoppars
-\LWR at customizedMathJax
+%    \end{macrocode}
+% 
+% Avoid ligatures while printing \brand{MathJax} customizations:
+% \changes{v0.89}{2020/08/02}{Print \brand{MathJax} customizations with typewriter font.}
+%    \begin{macrocode}
+{
+    \LWR at print@ttfamily
+    \LWR at customizedMathJax
+}
 \LWR at startpars
 \end{BlockClass}
-\typeout{---}
 
 \LWR at startpars
 }{}
@@ -23122,6 +25074,34 @@
 \begin{warpHTML}
 %    \end{macrocode}
 
+
+% \begin{macro}{\LWR at createfooter}  If specified, create the first or later web page footer.
+% \changes{v0.73}{2019/06/23}{Fix: Empty header/footer.}
+% \changes{v0.84}{2020/04/24}{Added \cs{FirstPageBottom}.}
+%    \begin{macrocode}
+\newcommand*{\LWR at createfooter}{%
+    \ifnumless{\value{LWR at htmlseqfilenumber}}{1}{%
+        \ifdefempty{\LWR at firstpagebottom}{}{%
+            \LWR at htmlelement{footer}
+
+            \LWR at firstpagebottom
+
+            \LWR at htmlelementend{footer}
+        }%
+    }{%
+        \ifdefempty{\LWR at pagebottom}{}{%
+            \LWR at htmlelement{footer}
+
+            \LWR at pagebottom
+
+            \LWR at htmlelementend{footer}
+        }%
+    }%
+}
+%    \end{macrocode}
+% \end{macro}
+
+
 % \begin{macro}{\LWR at newhtmlfile} \marg{section name}
 % \changes{v0.18}{2016/04/23}{side\TOC\ after title, improving responsive design.}
 % \changes{v0.21}{2017/02/22}{Skip title if not given.}
@@ -23151,21 +25131,8 @@
 %
 % No footer between files if \EPUB:
 %    \begin{macrocode}
-\ifbool{FormatEPUB}
-{}
-{
+\ifbool{FormatEPUB}{}{\LWR at createfooter}
 %    \end{macrocode}
-% \changes{v0.73}{2019/06/23}{Fix: Empty header/footer.}
-%    \begin{macrocode}
-    \ifdefempty{\LWR at pagebottom}{}{%
-        \LWR at htmlelement{footer}
-
-        \LWR at pagebottom
-
-        \LWR at htmlelementend{footer}
-    }
-}
-%    \end{macrocode}
 %
 %
 % No bottom navigation if are finishing the home page or
@@ -23182,9 +25149,12 @@
 \LWR at htmltag{/body}\LWR at orignewline
 \LWR at htmltag{/html}\LWR at orignewline
 \LWR at traceinfo{LWR at newhtmlfile: about to LWR at orignewpage}
-\LWR at orignewpage
-
+\LWR at maybe@orignewpage
+%    \end{macrocode}
+% \changes{v0.84}{2020/04/24}{Added prev/next links.}
+%    \begin{macrocode}
 \addtocounter{LWR at htmlfilenumber}{1}%
+\addtocounter{LWR at htmlseqfilenumber}{1}%
 %    \end{macrocode}
 %
 %
@@ -23221,23 +25191,25 @@
 %    \end{macrocode}
 % If the filename is not unique, create an error.
 %    \begin{macrocode}
-        \PackageError{lwarp}
+        \PackageError{lwarp}%
             {%
-                Section name\MessageBreak
+                The section name:\MessageBreak
                 ``#1'',\MessageBreak
                 at the line number listed below,\MessageBreak
                 generates the filename\MessageBreak
                 ``\LWR at thisfilename'',\MessageBreak
-                which appears to be a duplicate.\MessageBreak
-                There is a previous section with an\MessageBreak
-                identical or similar name%
-            }
+                which appears to be a duplicate.  There is a\MessageBreak
+                previous section with an identical or similar name.\MessageBreak
+                While generating file names, Lwarp sanitizes math,\MessageBreak
+                most symbols, and a few common short words,\MessageBreak
+                and this may cause a conflict.\MessageBreak
+                Enter 'H' for possible solutions%
+            }%
             {%
-                Lwarp sanitizes most symbols and a few common short words
-                when generating file names, and this may cause a conflict.
-            }
-    }
-}
+                \LWR at avoiddupfilenames%
+            }%
+    }%
+}%
 %    \end{macrocode}
 % If using file numbers instead of names, the name is set to the next file number.
 %    \begin{macrocode}
@@ -23250,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}
@@ -23278,7 +25250,7 @@
 
 %    \end{macrocode}
 %
-% Track the page numbers:
+% Track the \PDF\ page numbers of the \HTML\ output:
 % \changes{v0.48}{2018/02/11}{Fix: \TOC, \LOF, \LOT\ links.}
 %    \begin{macrocode}
 \setcounter{LWR at latestautopage}{\value{page}}%
@@ -23332,13 +25304,20 @@
 %
 % Start of the \element{textbody}:
 % \changes{v0.65}{2018/12/18}{Improved \CSS\ for page layout.}
+% \changes{v0.84}{2020/04/24}{Added prev/next links.}
 %    \begin{macrocode}
 \LWR at htmlelementclass{div}{bodycontainer}
 \LWR at htmlelementclass{section}{textbody}
-
 %    \end{macrocode}
 %
+% Not yet found a new section in this file.
+% Once one is found, a label will be placed for
+% previous/next links.
+%    \begin{macrocode}
+\boolfalse{LWR at setseqfilelabel}
+%    \end{macrocode}
 %
+%
 % Print title only if there is one.
 % Skip if formatting for an \EPUB\ or word processor:
 %    \begin{macrocode}
@@ -23396,6 +25375,7 @@
 % \prog{pdflatex} to generate characters and \prog{pdftotext} to read them.
 % If extra symbols appear in the text,
 % \trouble[accents in filenames]{filename>accents}
+% \trouble{accents>file names}
 % \trouble{sectioning>accents}
 % \gindex{filename>accent in}
 % \gindex{accents>in section \& file names}
@@ -23402,14 +25382,19 @@
 % it may be that \prog{pdflatex} is actually producing a symbol over or under a
 % character, resulting in \prog{pdftotext} picking up the accent symbol separately.
 %
-% \XeLaTeX{} and \LuaLaTeX{} directly support accented section and file names.
+% \XeLaTeX{} and \LuaLaTeX{} directly support accented section and file names,
 % \gindex{accents>in section \& file names}
 % \gindex{Unicode>file \& section names}
 % \gindex{UTF-8>file \& section names}
 % \gindex{Xe\LaTeX>file \& section names}
 % \gindex{Lua\LaTeX>file \& section names}
+% but it may be necessary to use \LaTeX\ accents instead of
+% native Unicode accents.  \LaTeX\ accents will have the accents stripped
+% when creating file names, whereas using Unicode accents will create filenames
+% which include accents, which may cause issues with some operating systems.
 %
 %
+%
 % \codehtml
 %    \begin{macrocode}
 \begin{warpHTML}
@@ -23541,6 +25526,10 @@
 % \begin{macro}{\LWR at createautosec} \marg{section type}
 %
 % Create an autosection tag.
+%
+% The use of \cs{textquotedbl} instead of |"| provides improved
+% compatibility with \pkg{xeCJK}.
+%
 % \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
 % \changes{v0.63}{2018/11/24}{Fix for \pkg{xeCJK}.}
 %    \begin{macrocode}
@@ -23663,10 +25652,23 @@
 %
 %
 %
+% \begin{macro}{\LWR at printchaptername}
+% Print \cs{chaptername} in most cases,
+% but this is nullified for \pkg{ctexbook}, \pkg{komascript}, \pkg{ujt*} classes.
+% \changes{v0.88}{2020/06/20}{Conditionally print \cs{chaptername}.}
+%    \begin{macrocode}
+\newcommand*{\LWR at printchaptername}{%
+    \ifdefvoid{\chaptername}{}{\chaptername~}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+%
 % \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
-%   page number to change by the time the following autosec label is created.
+%   was created.  (If a math expression is included in the section name,
+%   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.}
 % \changes{v0.66}{2019/01/28}{\ctr{LWR at currentautosec}: Fix for \LOF, \LOT float in home page.}
 %    \begin{macrocode}
@@ -23689,6 +25691,13 @@
 \IfValueTF{#2}%
     {\LWR at traceinfo{LWR at section: starting #4 #2}}%
     {\LWR at traceinfo{LWR at section: starting #4 #3}}%
+%    \end{macrocode}
+% Warn if starting a section inside a \element{span}:
+% \changes{v0.84}{2020/04/22}{Warn inside a \element{span}.}
+%    \begin{macrocode}
+    \LWR at spanwarninvalid{section}%
+%    \end{macrocode}
+%    \begin{macrocode}
 \LWR at maybeprintpendingfootnotes{\csuse{LWR at depth#4}}%
 \LWR at stoppars%
 \LWR at startnewdepth{#4}%
@@ -23757,10 +25766,11 @@
 % Generate a new \LaTeX\ page so that \TOC\ and index page number points to the section:
 %    \begin{macrocode}
     \LWR at traceinfo{LWR at section: not a new HTML file, about to LWR at orignewpage}%
-    \LWR at orignewpage%
+    \LWR at maybe@orignewpage%
 }% not new file
 
 %    \end{macrocode}
+%
 % Remember this section's name for \cs{nameref}:
 %    \begin{macrocode}
 \IfValueT{#3}{%
@@ -23768,6 +25778,7 @@
     \IfValueTF{#2}{\LWR at setlatestname{#2}}{\LWR at setlatestname{#3}}%
 }%
 %    \end{macrocode}
+%
 % Print an opening comment with the level and the name;
 % ex: ``section'' ``Introduction''
 % Footnotes may be used in section names, which would also appear in the
@@ -23791,6 +25802,7 @@
     \endgroup%
 }{}
 %    \end{macrocode}
+%
 % For inline sections paragraph and subparagraph, start a new paragraph now:
 %    \begin{macrocode}
 \ifthenelse{%
@@ -23799,6 +25811,7 @@
     {\LWR at startpars}%
     {}%
 %    \end{macrocode}
+%
 % Create the opening tag with an autosec:
 %    \begin{macrocode}
 \LWR at traceinfo{LWR at section: about to LWR at createautosec}%
@@ -23808,6 +25821,7 @@
 %    \begin{macrocode}
 \setcounter{LWR at currentautosec}{\value{page}}%
 %    \end{macrocode}
+%
 % Check if starred:
 %    \begin{macrocode}
 \IfBooleanTF{#1}%
@@ -23814,6 +25828,7 @@
 {%
     \LWR at traceinfo{LWR at section: starred}%
 %    \end{macrocode}
+%
 % Starred, but also forcing a \TOC\ entry, so
 % add unnumbered \TOC\ name or regular name:
 %    \begin{macrocode}
@@ -23826,10 +25841,12 @@
     {}%
 }% starred
 %    \end{macrocode}
+%
 % Not starred, so step counter and add to \TOC:
 %    \begin{macrocode}
 {% not starred
 %    \end{macrocode}
+%
 % Only add a numbered \TOC\ entry if section number is not too deep:
 %    \begin{macrocode}
     \ifthenelse{%
@@ -23837,6 +25854,7 @@
     }%
     {% if secnumdepth
 %    \end{macrocode}
+%
 % If in the main matter, step the counter and add the \TOC\ entry.
 % For |article| class, \pkg{lwarp} assumes that all is mainmatter.
 %    \begin{macrocode}
@@ -23846,6 +25864,7 @@
             \LWR at traceinfo{LWR at section: yes mainmatter}%
             \refstepcounter{#4}%
 %    \end{macrocode}
+%
 % Add main matter numbered \TOC\ entry with the \TOC\ name or the regular name:
 % \changes{v0.64}{2018/12/07}{Support for \pkg{ujarticle and related.}}
 %    \begin{macrocode}
@@ -23865,6 +25884,7 @@
             \LWR at traceinfo{LWR at section: finished addcontentsline}%
         }% end of if main matter
 %    \end{macrocode}
+%
 % If not main matter, add unnumbered \TOC\ name or regular name:
 %    \begin{macrocode}
         {% not main matter
@@ -23875,6 +25895,7 @@
         }% end of not main matter
     }% end of secnumdepth
 %    \end{macrocode}
+%
 % Deeper than secnumdepth, so add an unnumbered \TOC\ entry:
 %    \begin{macrocode}
     {%
@@ -23883,6 +25904,7 @@
         }%
     }%
 %    \end{macrocode}
+%
 % For part, print ``Part'':
 %    \begin{macrocode}
     \ifbool{LWR at mainmatter}%
@@ -23895,6 +25917,7 @@
             {\@partnameformat}%
             {}%
 %    \end{macrocode}
+%
 % Print the section number:
 %    \begin{macrocode}
         \LWR at traceinfo{LWR at section: about to print section number}%
@@ -23906,7 +25929,13 @@
                 {\protect\LWR at sectionnumber{\@partcntformat{#4}}}%
                 {%
                     \ifstrequal{#4}{chapter}%
-                        {\protect\LWR at sectionnumber{\@chapcntformat{#4}}}%
+                        {%
+%    \end{macrocode}
+% \changes{v0.88}{2020/06/20}{Conditionally print \cs{chaptername}.}
+%    \begin{macrocode}
+                            \LWR at printchaptername%
+                            \protect\LWR at sectionnumber{\@chapcntformat{#4}}%
+                        }%
                         {\protect\LWR at sectionnumber{\@seccntformat{#4}}}%
                 }%
             }%
@@ -23913,7 +25942,7 @@
             {}%
         \LWR at traceinfo{LWR at section: finished print section number}%
     }{}%
-}% end of not starred
+}% not starred
 %    \end{macrocode}
 % Print the section name:
 %    \begin{macrocode}
@@ -23927,7 +25956,11 @@
 \LWR at htmltag{\@nameuse{LWR at tag#4end}}%
 \LWR at orignewline%
 %    \end{macrocode}
-% Generate a \LaTeX{} label:
+%
+% Generate a \LaTeX{} label.
+%
+% Track the \PDF\ page numbers of the \HTML\ output.
+%
 % \changes{v0.43}{2017/11/01}{Fix: Math in section name.}
 % \changes{v0.48}{2018/02/11}{Fix: \TOC, \LOF, \LOT\ links.}
 % \changes{v0.66}{2019/01/28}{Fix: \TOC, \LOF, \LOT\ links.}
@@ -23937,6 +25970,18 @@
 \setcounter{LWR at latestautopage}{\value{page}}%
 \LWR at newautopagelabel{LWR at currentautosec}\LWR at orignewline%
 %    \end{macrocode}
+%
+% If this is the first section found in this file,
+% create a label for prevous/next links:
+% \changes{v0.84}{2020/04/24}{Added prev/next links.}
+%    \begin{macrocode}
+\ifbool{LWR at setseqfilelabel}{}{%
+    \label{\BaseJobname-autofile-\arabic{LWR at htmlseqfilenumber}}%
+    \booltrue{LWR at setseqfilelabel}%
+}%
+%    \end{macrocode}
+%
+%
 % Start paragraph handing unless is an inline paragraph or subparagraph:
 %    \begin{macrocode}
 \ifthenelse{%
@@ -24190,7 +26235,7 @@
 \newcommand*{\LWR at currentHTMLLanguage}{en-US}
 
 \newcommand*{\HTMLLanguage}[1]{%
-\renewcommand*{\LWR at currentHTMLLanguage}{#1}%
+    \renewcommand*{\LWR at currentHTMLLanguage}{#1}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -24203,18 +26248,19 @@
 % \changes{v0.52}{2018/04/01}{Fix: \cs{FileDepth} with non-utf8 encoding.}
 % \changes{v0.62}{2018/11/02}{Refactored.}
 % \changes{v0.64}{2018/12/07}{Added \pkg{utarticle} and related.}
+% \changes{v0.84}{2020/04/21}{Improved spacing for \pkg{xeCJK}.}
 %    \begin{macrocode}
 \ifPDFTeX% pdflatex or dvi latex
     \ifdefstring{\inputencodingname}{utf8}{%
-        \newcommand*{\theHTMLTitleSeparator}{ — }% EMdash
+        \newcommand*{\theHTMLTitleSeparator}{ —\ }% EMdash
     }{%
-        \newcommand*{\theHTMLTitleSeparator}{ - }% hyphen
+        \newcommand*{\theHTMLTitleSeparator}{ -\ }% hyphen
     }%
 \else%
     \ifpTeX
-        \newcommand*{\theHTMLTitleSeparator}{ - }% hyphen
+        \newcommand*{\theHTMLTitleSeparator}{ -\ }% hyphen
     \else
-        \newcommand*{\theHTMLTitleSeparator}{ — }% EMdash
+        \newcommand*{\theHTMLTitleSeparator}{ —\ }% EMdash
     \fi%
 \fi%
 %    \end{macrocode}
@@ -24280,7 +26326,7 @@
 %    \end{macrocode}
 
 
-% \begin{macro}{\LWR at filestart} \oarg{sectionname} \qquad
+% \begin{macro}{\LWR at filestart} \oarg{section name} \qquad
 % Creates the opening \HTML\ tags.
 % \changes{v0.19}{2016/05/25}{lwarp\_mathjax.txt loaded.}
 % \changes{v0.20}{2016/06/27}{Adds meta description.}
@@ -24291,30 +26337,57 @@
 \newcommand*{\LWR at filestart}[1][]{%
 \LWR at traceinfo{LWR at filestart !#1!}%
 %    \end{macrocode}
+%
 % Locally temporarily disable direct-formatting commands:
 %    \begin{macrocode}
 \begingroup%
 \LWR at nullfonts%
 %    \end{macrocode}
+%
 % Save the section name for use while creating the
 % \HTML\ meta \attribute{title} tag:
 %    \begin{macrocode}
 \edef\theHTMLSection{#1}%
 %    \end{macrocode}
+%
+% Remove extra material:
+% \changes{v0.84}{2020/04/12}{Improved \HTML\ title.}
+%    \begin{macrocode}
+\StrSubstitute{\theHTMLSection}{\protect}{\detokenize{-}}[\theHTMLSection]
+\StrSubstitute{\theHTMLSection}{\detokenize{-----}}{\detokenize{-}}[\theHTMLSection]
+\StrSubstitute{\theHTMLSection}{\detokenize{----}}{\detokenize{-}}[\theHTMLSection]
+\StrSubstitute{\theHTMLSection}{\detokenize{---}}{\detokenize{-}}[\theHTMLSection]
+\StrSubstitute{\theHTMLSection}{\detokenize{--}}{\detokenize{-}}[\theHTMLSection]
+%    \end{macrocode}
+%
+% If starts with a dash, remove the leading dash:
+%    \begin{macrocode}
+\IfBeginWith{\theHTMLSection}{\detokenize{-}}{%
+    \StrGobbleLeft{\theHTMLSection}{1}[\theHTMLSection]%
+}{}%
+%    \end{macrocode}
+%
 % Create the page's \HTML\ header:
 %    \begin{macrocode}
 \LWR at htmltag{!DOCTYPE html}\LWR at orignewline
 %    \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%
 }\LWR at orignewline
 %    \end{macrocode}
+%
 % Start of the meta data:
 %    \begin{macrocode}
 \LWR at htmltag{head}\LWR at orignewline
 %    \end{macrocode}
+%
 % Charset is fixed at UTF-8:
 %    \begin{macrocode}
 \LWR at htmltag{%
@@ -24355,6 +26428,7 @@
     }\LWR at orignewline
 }%
 %    \end{macrocode}
+%
 % Mobile-friendly viewport:
 % \gindex{HTML>meta tag>viewport}
 % \gindex{viewport>HTML meta tag}
@@ -24366,6 +26440,7 @@
     content=\LWR at orig@textquotedbl{}width=device-width, initial-scale=1.0\LWR at orig@textquotedbl\ /%
 }\LWR at orignewline
 %    \end{macrocode}
+%
 % IE patch:
 % \changes{v0.63}{2018/11/30}{Fix: Break ligature for \pkg{luatexko}.}
 %    \begin{macrocode}
@@ -24379,6 +26454,7 @@
 \LWR at htmltag{/script}\LWR at orignewline
 \LWR at htmltag{![endif]-\/-}\LWR at orignewline
 %    \end{macrocode}
+%
 % The page's title, if there is one.  
 % A section name is also added if given.
 % \changes{v0.44}{2017/11/18}{Add \cs{HTMLTitle}.}
@@ -24394,6 +26470,7 @@
         \LWR at htmltag{/title}\LWR at orignewline%
     }%
 %    \end{macrocode}
+%
 % The page's stylesheet:
 %    \begin{macrocode}
 \LWR at htmltag{%
@@ -24404,6 +26481,7 @@
 }%
 \LWR at orignewline
 %    \end{macrocode}
+%
 % Optional \brand{MathJax} support.  The \HTML\ tags must be turned off
 % during the verbatim input, and the paragraph handling which was
 % turned on at the end of verbatim input must be immediately turned off
@@ -24418,8 +26496,19 @@
 % ^^A     \ifbool{mathKaTeX}{%
 % ^^A         \verbatiminput{lwarp_KaTeX.txt}%
 % ^^A     }{%
+% \changes{v0.86}{2020/05/03}{Error if missing file.}
 %    \begin{macrocode}
-        \verbatiminput{\LWR at mathjaxfilename}%
+        \IfFileExists{\LWR at mathjaxfilename}%
+            {\verbatiminput{\LWR at mathjaxfilename}}%
+            {%
+                \PackageError{lwarp}%
+                    {%
+                        \protect\MathJaxFilename\space specified the file\MessageBreak
+                        \space\space\LWR at mathjaxfilename\MessageBreak
+                        which does not exist%
+                    }%
+                    {Specify an existing file, or remove \protect\MathJaxFilename.}%
+            }%
 %    \end{macrocode}
 % ^^A     }%
 %    \begin{macrocode}
@@ -24429,10 +26518,12 @@
 }% end of mathjax
 {}%
 %    \end{macrocode}
+%
 % End of the header:
 %    \begin{macrocode}
 \LWR at htmltag{/head}\LWR at orignewline
 %    \end{macrocode}
+%
 % Start of the body:
 %    \begin{macrocode}
 \LWR at htmltag{body}\LWR at orignewline
@@ -24546,16 +26637,6 @@
 \let\LWR at origcaption\caption
 %    \end{macrocode}
 %
-% Labels:
-% \cs{ltx at label} is used in \pkg{amsmath} environments and is also
-% patched by \pkg{cleveref}.
-% \gindex{label>in HTML}
-% \margintag{Label in \HTML}
-% \changes{v0.20}{2017/01/30}{Fix: math cross references.}
-%    \begin{macrocode}
-\let\LWR at origltx@label\ltx at label
-\let\ltx at label\LWR at htmlmathlabel
-%    \end{macrocode}
 % Not yet started any paragraph handling:
 %    \begin{macrocode}
 \global\boolfalse{LWR at doingapar}
@@ -24562,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}
@@ -24591,6 +26672,13 @@
 \LWR at htmlelementclass{section}{textbody}
 %    \end{macrocode}
 %
+% Create a label for previous/next links, and remember it has been done:
+% \changes{v0.84}{2020/04/24}{Added prev/next links.}
+%    \begin{macrocode}
+\booltrue{LWR at setseqfilelabel}%
+\label{\BaseJobname-autofile-\arabic{LWR at htmlseqfilenumber}}
+%    \end{macrocode}
+%
 % Patch the |itemize|, |enumerate|, and |description| environments and \cs{item}.
 % This works with the native \LaTeX\ environments, as well as
 % those provided by \pkg{enumitem}, \pkg{enumerate}, and \pkg{paralist}.
@@ -24619,8 +26707,22 @@
 % disable \cs{ensuremath} by printing a nullified
 % definition at the start of each file, and add further customizations:
 % \changes{v0.51}{2018/03/18}{MathJax: Nullifies \cs{ensuremath}.}
+% \changes{v0.89}{2020/08/17}{MathJax: Improved info message.}
 %    \begin{macrocode}
+\ifbool{mathjax}{
+    \typeout{---}
+    \typeout{Package lwarp:}
+    \typeout{Processing MathJax customizations for the first HTML page.}
+    \typeout{Later HTML pages will take the same amount of time.}
+    \typeout{If this takes too long, see the Lwarp manual regarding customizing MathJax.}
+}{}
+
 \LWR at customizeMathJax
+
+\ifbool{mathjax}{
+    \typeout{Done.}
+    \typeout{---}
+}{}
 %    \end{macrocode}
 %
 % ^^A % Likewise for Ka\TeX:
@@ -24691,7 +26793,9 @@
 
 % Close the textbody:
 % \changes{v0.65}{2018/12/18}{Improved \CSS\ for page layout.}
+% \changes{v0.84}{2020/04/24}{Added prev/next links.}
 %    \begin{macrocode}
+\label{\BaseJobname-autofile-last}
 \LWR at htmlelementclassend{section}{textbody}
 \LWR at htmlelementclassend{div}{bodycontainer}
 \LWR at htmlelementclassend{div}{bodyandsidetoc}
@@ -24701,17 +26805,10 @@
 \LWR at printpendingfootnotes
 %    \end{macrocode}
 %
-% Create the footer:
-%
-% \changes{v0.73}{2019/06/23}{Fix: Empty header/footer.}
+% Create the footer if not \EPUB\:
+% \changes{v0.84}{2020/04/24}{Fix: No footer for \EPUB}
 %    \begin{macrocode}
-\ifdefempty{\LWR at pagebottom}{}{%
-    \LWR at htmlelement{footer}
-
-    \LWR at pagebottom
-
-    \LWR at htmlelementend{footer}
-}
+\ifbool{FormatEPUB}{}{\LWR at createfooter}
 %    \end{macrocode}
 
 % No bottom navigation if are finishing the home page,
@@ -24735,7 +26832,7 @@
 %    \end{macrocode}
 % Seems to be required sometimes:
 %    \begin{macrocode}
-\LWR at orignewpage
+\LWR at maybe@orignewpage
 }
 %    \end{macrocode}
 % \end{macro}
@@ -24744,42 +26841,94 @@
 
 % \begin{macro}{\enddocument}
 % If labels have not changed, mark successful completion
-% of the \env{lateximages} file.
+% of the \filenm{lateximages.txt} file.
 % Executed as everything is being shut down.
+%
+% For the newer kernel hooks, see \cmds{texdoc lthooks-doc} and \cmds{texdoc ltshipout-doc}.
 % \changes{v0.70}{2019/03/26}{If labels changed, require recompile before making limages.}
+% \changes{v0.89}{2020/07/28}{Adapt to \LaTeX\ core changes.}
 %    \begin{macrocode}
-\xpatchcmd{\enddocument}
-    {%
-        \if at tempswa
-        \@latex at warning@no at line{Label(s) may have changed.
-        Rerun to get cross-references right}%
-        \fi
-    }
-    {%
-        \if at tempswa
-            \@latex at warning@no at line{Label(s) may have changed.
-            Rerun to get cross-references right}%
-        \else
+\ifdef{\AddToHook}{% newer kernel
+    \AddToHook{enddocument/info}{%
+       \if at filesw
+       \ifx \@multiplelabels \relax
+         \if at tempswa
+%    \end{macrocode}
+% This is where warnings of duplicate labels would appear.
+%    \begin{macrocode}
+         \else
+%    \end{macrocode}
+% No duplicate labels, so safe to create images.
+%    \begin{macrocode}
             \immediate\write\LWR at lateximagesfile{%
                 |end|end|end|%
             }%
-        \fi
+         \fi
+       \fi\fi
     }
-    {}
-    {
-        \PackageWarningNoLine{lwarp}
+}% newer kernel
+{% older kernel
+    \xpatchcmd{\enddocument}
         {%
-            Could not patch \protect\enddocument.\MessageBreak
-            If labels have changed, be sure to recompile before\MessageBreak
-            creating lateximages with\MessageBreak
-            \space\space lwarpmk limages,\MessageBreak
-            or the images may be corrupt%
+            \if at tempswa
+            \@latex at warning@no at line{Label(s) may have changed.
+            Rerun to get cross-references right}%
+            \fi
         }
-    }
+        {%
+            \if at tempswa
+                \@latex at warning@no at line{Label(s) may have changed.
+                Rerun to get cross-references right}%
+            \else
 %    \end{macrocode}
+% No duplicate labels, so safe to create images.
+%    \begin{macrocode}
+                \immediate\write\LWR at lateximagesfile{%
+                    |end|end|end|%
+                }%
+            \fi
+        }
+        {}
+        {
+            \AtEndDocument{
+                \PackageWarningNoLine{lwarp}
+                {%
+                    Could not patch \protect\enddocument.\MessageBreak
+                    If labels have changed, be sure to recompile before\MessageBreak
+                    creating lateximages with\MessageBreak
+                    \space\space lwarpmk limages,\MessageBreak
+                    or the images may be corrupt%
+                }
+            }
+        }
+}% older kernel
+%    \end{macrocode}
 % \end{macro}
 
+
+% \section{Nullifying foreground \Slash background hooks}
+%
+% See \cmds{texdoc lthooks-doc} and \cmds{textdoc ltshipout-doc}.
+%
+% \changes{v0.89}{2020/07/28}{Foreground/background hooks: Adapt to \LaTeX\ core changes.}
 %    \begin{macrocode}
+\ifdef{\RemoveFromHook}{
+    \AfterEndPreamble{
+        \IfHookEmptyTF{shipout/background}{}{
+            \PackageInfo{lwarp}{Removing background hook}
+            \RemoveFromHook{shipout/background}[*]
+        }
+        \IfHookEmptyTF{shipout/foreground}{}{
+            \PackageInfo{lwarp}{Removing foreground hook}
+            \RemoveFromHook{shipout/foreground}[*]
+        }
+    }
+}{}
+%    \end{macrocode}
+
+
+
+%    \begin{macrocode}
 \end{warpHTML}
 %    \end{macrocode}
 
@@ -25010,24 +27159,27 @@
 %
 % \subsection{Printing the thanks}
 %
-% \codeall
-%    \begin{macrocode}
-\begin{warpall}
-%    \end{macrocode}
-% \DescribeMacro{\printthanks} Forces the \cs{thanks} to be printed.
-%
+% \begin{macro}{\printthanks} Forces the \cs{thanks} to be printed.
 % This is necessary in a \env{titlingpage} environment
 % when \cs{maketitle} was not used.
-% \changes{v0.73}{2019/06/25}{Fix: Paragraph tags.}
-%    \begin{macrocode}
-\newcommand*{\printthanks}{\LWR at stoppars\@thanks\LWR at startpars}
-%    \end{macrocode}
 %
+% \changes{v0.84}{2020/03/29}{Fix: \cs{printthanks} in print mode.}
 %
+% \codeprint
 %    \begin{macrocode}
-\end{warpall}
+\begin{warpprint}
+\newcommand*{\printthanks}{\@thanks}
+\end{warpprint}
 %    \end{macrocode}
 
+% \changes{v0.73}{2019/06/25}{Fix: Paragraph tags.}
+% \codehtml
+%    \begin{macrocode}
+\begin{warpHTML}
+\newcommand*{\printthanks}{\LWR at stoppars\@thanks\LWR at startpars}
+\end{warpHTML}
+%    \end{macrocode}
+% \end{macro}
 
 
 % \subsection{Printing the title, etc.\ in \HTML}
@@ -25250,12 +27402,22 @@
 % The original definition used \cs{\textbar} which was not being seen by \prog{pdftotext}.
 %
 % \changes{v0.34}{2017/08/07}{Text symbols instead of math.}
+% \changes{v0.84}{2020/04/17}{\cs{LWR at formatted}, fixed double bar.}
 %
 %    \begin{macrocode}
-\def\@fnsymbol#1{\ifcase#1\or *\or \HTMLentity{dagger}\or \HTMLentity{Dagger}\or
-   \HTMLentity{sect}\or \HTMLentity{para}\or \text{\HTMLunicode{2016}}\or
-   **\or \HTMLentity{dagger}\HTMLentity{dagger} \or
-   \HTMLentity{Dagger}\HTMLentity{Dagger} \else\@ctrerr\fi}
+\def\LWR at HTML@@fnsymbol#1{%
+    \ifcase#1\or *\or
+    \HTMLentity{dagger}\or
+    \HTMLentity{Dagger}\or
+    \HTMLentity{sect}\or
+    \HTMLentity{para}\or
+    \HTMLunicode{2016}\or
+    **\or
+    \HTMLentity{dagger}\HTMLentity{dagger} \or
+    \HTMLentity{Dagger}\HTMLentity{Dagger} \else
+    \@ctrerr\fi%
+}
+\LWR at formatted{@fnsymbol}
 %    \end{macrocode}
 % \end{macro}
 %
@@ -25450,10 +27612,16 @@
     }%
 }% yes titling package
 {% no titling package
-    \newcommand{\published}[1]{}%
-    \newcommand*{\printpublished}{}%
-    \newcommand{\subtitle}{}%
-    \newcommand*{\printsubtitle}%
+%    \end{macrocode}
+% \changes{v0.84}{2020/03/28}{Fixed \cs{subtitle}, \cs{printsubtitle} if no \pkg{titling}.}
+% \changes{v0.84}{2020/03/28}{Added \cs{subtitle}, \cs{published} for \pkg{koma*}.}
+%    \begin{macrocode}
+    \def\@published{}%
+    \DeclareDocumentCommand{\published}{m}{\gdef\@published{##1}}%
+    \DeclareDocumentCommand{\printpublished}{}{}%
+    \def\@subtitle{}%
+    \DeclareDocumentCommand{\subtitle}{m}{\gdef\@subtitle{##1}}%
+    \DeclareDocumentCommand{\printsubtitle}{}{}%
 }% no titling package
 }% \AddSubtitlePublished
 %    \end{macrocode}
@@ -25493,12 +27661,12 @@
 %    \begin{macrocode}
 \DeclareDocumentEnvironment{abstract}{O{\abstractname}}
 {
-\LWR at forcenewpage
-\BlockClass{abstract}
-\BlockClassSingle{abstracttitle}{#1}
+    \LWR at forcenewpage
+    \BlockClass{abstract}
+    \BlockClassSingle{abstracttitle}{#1}
 }
 {
-\endBlockClass
+    \endBlockClass
 }
 %    \end{macrocode}
 % \end{environment}
@@ -25523,11 +27691,25 @@
 % Ex: |"A quotation." \attribution{\textsc{Author Name}\\\textsl{Book Title}}|
 %
 % \changes{v0.73}{2019/06/25}{Fix: Paragraph tags.}
+% \changes{v0.84}{2020/04/14}{Added print mode.}
 %
+% \codeall
+%    \begin{macrocode}
+\begin{warpall}
+\newcommand{\attribution}[1]{
+    \begin{flushright}
+    \unskip
+    #1
+    \end{flushright}%
+}
+\end{warpall}
+%    \end{macrocode}
+% \end{macro}
+%
 % \codehtml
 %    \begin{macrocode}
 \begin{warpHTML}
-\newcommand{\attribution}[1]{%
+\newcommand{\LWR at HTML@attribution}[1]{%
     \LWR at stoppars%
     \begin{BlockClass}{attribution}
     #1
@@ -25534,20 +27716,9 @@
     \end{BlockClass}
     \LWR at startpars%
 }
+\LWR at formatted{attribution}
 \end{warpHTML}
 %    \end{macrocode}
-% \codeprint
-%    \begin{macrocode}
-\begin{warpprint}
-\newcommand{\attribution}[1]{
-    \begin{flushright}
-    \unskip
-    #1
-    \end{flushright}%
-}
-\end{warpprint}
-%    \end{macrocode}
-% \end{macro}
 
 
 % \subsection{Quotes, quotations}
@@ -25558,25 +27729,31 @@
 %    \end{macrocode}
 %
 % \begin{environment}{quote}
+% \changes{v0.84}{2020/04/14}{Added print mode.}
 %    \begin{macrocode}
-\renewenvironment*{quote}
+\newenvironment*{LWR at HTML@quote}
 {
     \LWR at forcenewpage
     \LWR at htmlblocktag{blockquote}
 }
 {\LWR at htmlblocktag{/blockquote}}
+
+\LWR at formattedenv{quote}
 %    \end{macrocode}
 % \end{environment}
 %
+% \begin{environment}{quotation}
 % \changes{v0.71}{2019/04/27}{Fix: \env{blockquotation} tag.}
-% \begin{environment}{quotation}
+% \changes{v0.84}{2020/04/14}{Added print mode.}
 %    \begin{macrocode}
-\renewenvironment*{quotation}
+\newenvironment*{LWR at HTML@quotation}
 {
     \LWR at forcenewpage
     \LWR at htmlblocktag{blockquote}
 }
 {\LWR at htmlblocktag{/blockquote}}
+
+\LWR at formattedenv{quotation}
 %    \end{macrocode}
 % \end{environment}
 
@@ -25599,8 +27776,9 @@
 %
 % \begin{environment}{verse}
 % \changes{v0.54}{2018/04/08}{Fix: Line spacing.}
+% \changes{v0.84}{2020/04/14}{Added print mode.}
 %    \begin{macrocode}
-\renewenvironment{verse}
+\newenvironment{LWR at HTML@verse}
                {\let\\\newline% lwarp
                 \list{}{\itemsep      \z@
                         \itemindent   -1.5em%
@@ -25609,6 +27787,8 @@
                         \advance\leftmargin 1.5em}%
                 \item\relax}
                {\endlist}
+
+\LWR at formattedenv{verse}
 %    \end{macrocode}
 % \end{environment}
 %
@@ -25666,6 +27846,7 @@
 %    \end{macrocode}
 %
 %
+%
 % \DescribeLength{\VerbatimHTMLWidth} Width to use in \HTML\ |Verbatim| environment.
 %
 % This width is used when placing line numbers to the right.
@@ -25690,10 +27871,39 @@
 %    \end{macrocode}
 
 
+% \begin{macro}{\verb}
+%
+% Patched to encapsulate the verbatim text inside span
+% with a class of \attribute{texttt}.
+%
+% \changes{v0.891}{2020/09/12}{\cs{verb} as \cs{texttt}.}
+%    \begin{macrocode}
+\LetLtxMacro\LWR at orig@verb at egroup\verb at egroup
+
+\def\LWR at verb@egroup at endspan{%
+    \LWR at orig@verb at egroup%
+    \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=\textquotedbl{}texttt\textquotedbl}%
+        \let\verb at egroup\LWR at verb@egroup at endspan%
+    }
+    {}
+    {\LWR at patcherror{LaTeX}{verb}}
+%    \end{macrocode}
+% \end{macro}
+
+
 % \begin{macro}{\LWR at atbeginverbatim}
 %       \oarg{1: style}
-%       \marg{2: negative \cs{baselineskip} \cs{vspace}}
-%       \marg{3: class}
+%       \marg{2: class}
 %
 % Encloses a verbatim environment with the given \CSS\ class.
 %
@@ -25702,29 +27912,32 @@
 % \changes{v0.51}{2018/03/17}{Adds vertical offset.}
 % \changes{v0.63}{2018/11/24}{Fix for \pkg{xeCJK}.}
 %    \begin{macrocode}
-\newcommand*{\LWR at atbeginverbatim}[3][]
+\newcommand*{\LWR at atbeginverbatim}[2][]
 {%
 %    \end{macrocode}
+% Stop generating \HTML\ paragraph tags:
+%    \begin{macrocode}
+\LWR at stoppars%
+%    \end{macrocode}
 % Avoid excessive space between lines:
+% \changes{v0.891}{2020/09/12}{Fix for verbatim, \pkg{alltt} with lists}
 %    \begin{macrocode}
 \setlength{\parskip}{0ex}%
+\setlength{\topsep}{0pt}%
+\setlength{\partopsep}{0pt}%
 %    \end{macrocode}
-% Stop generating \HTML\ paragraph tags:
-%    \begin{macrocode}
-\LWR at stoppars%
-%    \end{macrocode}
 % Create a new |pre| of the given class.
 % The tags may temporarily be turned off for internal use, such
 % as loading the \brand{MathJax} script.
 %    \begin{macrocode}
 \ifbool{LWR at verbtags}{%
-    \LWR at htmltag{pre class=\textquotedbl#3\textquotedbl%
+    \LWR at htmltag{pre class=\textquotedbl#2\textquotedbl%
         \ifthenelse{\equal{#1}{}}{}{ style=\textquotedbl#1\textquotedbl}%
     }%
-    \LWR at orignewline% pre
-    \leavevmode\unskip\LWR at print@vspace*{-#2\baselineskip}%
+    \par%
 }{}%
 %    \end{macrocode}
+%
 % Use a mono-spaced font to preserve horizontal positioning.
 % If horizontal alignment is important for the user, use a mono-spaced font
 % in the \CSS\ for the |verse| class.
@@ -25734,10 +27947,11 @@
 %    \end{macrocode}
 % \changes{v0.50}{2018/03/02}{Improved column alignment.}
 % \changes{v0.54}{2018/04/06}{Improved column alignment.}
+% \changes{v0.85}{2020/04/29}{Fix: Added print macros for \pkg{fontspec}.}
 %    \begin{macrocode}
-% \LWR at print@normalsize%
+\LWR at print@normalfont%
 \LWR at origttfamily%
-\LWR at print@small%
+\LWR at print@scriptsize%
 %    \end{macrocode}
 % Since inside a \element{pre}, restore the original list processing:
 %    \begin{macrocode}
@@ -25745,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:
@@ -25757,12 +27971,11 @@
 
 
 % \begin{macro}{\LWR at afterendverbatim}
-%       \marg{negative \cs{baselineskip} \cs{vspace}}
 %
 %       Finishes enclosing a verbatim environment.
 % \changes{v0.54}{2018/04/07}{Added vspace argument.}
 %    \begin{macrocode}
-\newcommand*{\LWR at afterendverbatim}[1]{%
+\newcommand*{\LWR at afterendverbatim}{%
 \endgroup%
 \par%
 %    \end{macrocode}
@@ -25769,8 +27982,7 @@
 % At the end of the environment, close the |pre|:
 %    \begin{macrocode}
 \ifbool{LWR at verbtags}{%
-    \LWR at print@vspace*{-#1\baselineskip}%
-    \noindent\LWR at htmltag{/pre}\LWR at orignewline% pre
+    \noindent\LWR at htmltag{/pre}\par% pre
 }{}%
 %    \end{macrocode}
 % Resume regular paragraph handling:
@@ -25786,15 +27998,16 @@
 %
 % Patch \cs{verbatiminput} to add \HTML\ tags:
 %
+% \changes{v0.84}{2020/04/16}{Added print mode.}
 %    \begin{macrocode}
-\let\LWRV at origverbatim@input\verbatim at input
+\newcommand{\LWR at HTML@verbatim at input}[2]{%
+    \ifbool{LWR at verbtags}{\LWR at forcenewpage}{}%
+    \LWR at atbeginverbatim{Verbatim}%
+    \LWR at print@verbatim at input{#1}{#2}%
+    \LWR at afterendverbatim%
+}
 
-\renewcommand{\verbatim at input}[2]{%
-\ifbool{LWR at verbtags}{\LWR at forcenewpage}{}%
-\LWR at atbeginverbatim{2.5}{Verbatim}%
-\LWRV at origverbatim@input{#1}{#2}%
-\LWR at afterendverbatim{1.5}%
-}
+\LWR at formatted{verbatim at input}
 %    \end{macrocode}
 % \end{macro}
 
@@ -25803,16 +28016,25 @@
 % \begin{environment}{verbatim}
 %
 % \changes{v0.20}{2016/12/24}{Added.}
+% \changes{v0.84}{2020/04/16}{Added print mode.}
 %
 %    \begin{macrocode}
 \AfterEndPreamble{
 \LWR at traceinfo{Patching verbatim.}
 \AtBeginEnvironment{verbatim}{%
-\LWR at forcenewpage%
-\LWR at atbeginverbatim{2.5}{verbatim}%
+    \ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}%
+        {}%
+        {%
+            \LWR at forcenewpage%
+            \LWR at atbeginverbatim{verbatim}%
+        }%
 }
 \AfterEndEnvironment{verbatim}{%
-    \LWR at afterendverbatim{1}%
+    \ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}%
+        {}%
+        {%
+            \LWR at afterendverbatim%
+        }%
 }
 }
 %    \end{macrocode}
@@ -25826,16 +28048,24 @@
 % \changes{v0.42}{2017/10/13}{Added.}
 % \changes{v0.52}{2018/03/27}{Fix to allow inside \env{lateximage}.}
 % \changes{v0.58}{2018/06/07}{Improved print/\HTML\ output selection.}
+% \changes{v0.84}{2020/04/17}{Restore spacing.}
 %    \begin{macrocode}
 \newcommand*{\LWR at HTML@tabbing}{%
-\LWR at forcenewpage%
-\LWR at atbeginverbatim{3}{tabbing}%
-\LWR at print@tabbing%
+    \LWR at forcenewpage%
+    \LWR at atbeginverbatim{tabbing}%
+    \let\enskip\LWR at origenskip%
+    \let\quad\LWR at origquad%
+    \let\qquad\LWR at origqquad%
+    \let~\LWR at origtilde%
+    \let\,\LWR at origcomma%
+    \let\thinspace\LWR at origthinspace%
+    \let\negthinspace\LWR at orignegthinspace%
+    \LWR at print@tabbing%
 }
 
 \newcommand*{\LWR at HTML@endtabbing}{%
     \LWR at print@endtabbing%
-    \LWR at afterendverbatim{1}%
+    \LWR at afterendverbatim%
 }
 
 \LWR at formatted{tabbing}
@@ -25872,7 +28102,7 @@
 %    \begin{macrocode}
 \begin{warpHTML}
 %    \end{macrocode}
-
+%
 % \begin{macro}{\@begintheorem} \marg{name} \marg{number}
 %    \begin{macrocode}
 \renewcommand{\@begintheorem}[2]{%
@@ -25883,16 +28113,26 @@
 }
 %    \end{macrocode}
 % \end{macro}
+%
+%
 % \begin{macro}{\@opargbegintheorem} \marg{name} \marg{number} \marg{oparg}
+%
+% \LaTeX\ defines this, but \pkg{amsthm} \cs{relax}es it,
+% so it will not be defined if \pkg{amsthm} is loaded before \pkg{lwarp}.
+% \changes{v0.89}{2020/08/12}{Allow preload of \pkg{amsmath}, \pkg{amsthm}, \pkg{centernot}.}
 %    \begin{macrocode}
-\renewcommand{\@opargbegintheorem}[3]{%
-\LWR at forcenewpage
-\BlockClass{theoremcontents}
-\trivlist
-\item[\InlineClass{theoremlabel}{#1\ #2\ (#3)\ }]\itshape
+\ifundef{\@opargbegintheorem}{}{
+    \renewcommand{\@opargbegintheorem}[3]{%
+        \LWR at forcenewpage
+        \BlockClass{theoremcontents}
+        \trivlist
+        \item[\InlineClass{theoremlabel}{#1\ #2\ (#3)\ }]\itshape
+    }
 }
 %    \end{macrocode}
 % \end{macro}
+%
+%
 % \begin{macro}{\@endtheorem}
 %    \begin{macrocode}
 \renewcommand*{\@endtheorem}{%
@@ -25968,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}
 
@@ -26172,6 +28415,7 @@
 \LWR at nulllistfills%
 }
 %    \end{macrocode}
+%
 % \changes{v0.46}{2018/01/21}{Fix: Stack unnesting.}
 %    \begin{macrocode}
 \newcommand*{\LWR at listend}{%
@@ -26205,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%
 }
@@ -26223,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%
 }
@@ -26325,22 +28575,22 @@
 % \begin{macro}{\LWR at restoreoriglists} Restores the original \env{trivlist} environment.
 %    \begin{macrocode}
 \newcommand*{\LWR at restoreoriglists}{%
-\LWR at traceinfo{LWR at restoreoriglists}%
-\LetLtxMacro\item\LWR at origitem%
-\LetLtxMacro\@item\LWR at orig@item%
-\let\@trivlist\LWR at orig@trivlist%
-\let\trivlist\LWR at origtrivlist%
-\let\endtrivlist\LWR at origendtrivlist%
-\LetLtxMacro\itemize\LWR at origitemize%
-\LetLtxMacro\enditemize\LWR at endorigitemize%
-\LetLtxMacro\enumerate\LWR at origenumerate%
-\LetLtxMacro\endenumerate\LWR at endorigenumerate%
-\LetLtxMacro\description\LWR at origdescription%
-\LetLtxMacro\enddescription\LWR at endorigdescription%
-\let\@mklab\LWR at orig@mklab%
-\let\makelabel\LWR at origmakelabel%
-\let\@donoparitem\LWR at orig@donoparitem%
-\let\@nbitem\LWR at orig@nbitem%
+    \LWR at traceinfo{LWR at restoreoriglists}%
+    \LetLtxMacro\item\LWR at origitem%
+    \LetLtxMacro\@item\LWR at orig@item%
+    \let\@trivlist\LWR at orig@trivlist%
+    \let\trivlist\LWR at origtrivlist%
+    \let\endtrivlist\LWR at origendtrivlist%
+    \LetLtxMacro\itemize\LWR at origitemize%
+    \LetLtxMacro\enditemize\LWR at endorigitemize%
+    \LetLtxMacro\enumerate\LWR at origenumerate%
+    \LetLtxMacro\endenumerate\LWR at endorigenumerate%
+    \LetLtxMacro\description\LWR at origdescription%
+    \LetLtxMacro\enddescription\LWR at endorigdescription%
+    \let\@mklab\LWR at orig@mklab%
+    \let\makelabel\LWR at origmakelabel%
+    \let\@donoparitem\LWR at orig@donoparitem%
+    \let\@nbitem\LWR at orig@nbitem%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -26726,7 +28976,7 @@
 
 % \subsubsection{Longtable variables}
 % \DescribeBoolean{LWR at starredlongtable}
-% Per the \pkg{caption} pacakge, step the counter if |longtable*|.
+% Per the \pkg{caption} package, step the counter if |longtable*|.
 %
 %    \begin{macrocode}
 \newbool{LWR at starredlongtable}
@@ -27960,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{%
@@ -27967,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
@@ -27974,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%
@@ -28030,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%
@@ -28130,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}
@@ -28146,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.}
@@ -28385,15 +30638,6 @@
 
 
 
-% Used to compute margins, tabular trims, column offsets:
-%    \begin{macrocode}
-\newlength{\LWR at templengthone}
-\newlength{\LWR at templengthtwo}
-\newlength{\LWR at templengththree}
-\newcounter{LWR at tempcountone}
-%    \end{macrocode}
-
-
 % \begin{macro}{\LWR at tdstartstyles}
 % Begins possibly adding a table data cell style.
 %    \begin{macrocode}
@@ -28403,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}
@@ -28416,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}%
         }{}%
 }
@@ -28778,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}
@@ -29140,30 +31389,23 @@
     \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.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.84}{2020/04/16}{Fix: Multicolumn style.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
 %    \begin{macrocode}
-        \IfValueT{#1}{% vpos?
-            \ifstrequal{#1}{b}%
-                {style="\LWR at print@mbox{vertical-align:bottom}" }{}%
-            \ifstrequal{#1}{t}%
-                {style="\LWR at print@mbox{vertical-align:top}" }{}%
-        }% vpos?
-        }% rows?
+        class=\textquotedbl{}td%
 %    \end{macrocode}
-% 
-%    \begin{macrocode}
-        class="td%
-%    \end{macrocode}
 % Print the column type and vertical bars:
 %    \begin{macrocode}
         \defcounter{LWR at mcolvertbarsl}{0}%
@@ -29206,17 +31448,38 @@
             { 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}
         \LWR at tdstartstyles%
 %    \end{macrocode}
+%
+% Style for vertical position:
+% \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+%    \begin{macrocode}
+        \IfValueT{#1}{% vpos?
+            \ifstrequal{#1}{b}%
+                {%
+                    \LWR at tdaddstyle%
+                    \LWR at print@mbox{vertical-align:bottom}%
+                }{}%
+            \ifstrequal{#1}{t}%
+                {%
+                    \LWR at tdaddstyle%
+                    \LWR at print@mbox{vertical-align:top}%
+                }{}%
+        }% vpos?
+%    \end{macrocode}
+% 
+% Style for row colors:
 % \changes{v0.49}{2018/02/18}{\pkg{xcolor}: Added tabular row colors.}
 %    \begin{macrocode}
         \LWR at addtabularrowcolor%
 %    \end{macrocode}
+% Other styles:
 %    \begin{macrocode}
         \LWR at addcmidrulewidth%
         \LWR at addcdashline%
@@ -30019,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.}
@@ -30073,16 +32336,7 @@
 % a warning is issued here instructing the user to please isolate the \element{span}
 % to print-only.
 %    \begin{macrocode}
-    \ifnumcomp{\value{LWR at spandepth}}{>}{0}{%
-        \PackageWarning{lwarp}{%
-            A tabular is being used inside a span such as\MessageBreak
-            a minipage. Some formatting may not be correct\MessageBreak
-            in the tabular.\MessageBreak
-            It is recommended to use \protect\warpprintonly\space or the\MessageBreak
-            warpprint environment to isolate the span to\MessageBreak
-            print-only,%
-        }
-    }{}%
+    \LWR at spanwarnformat{tabular}%
     \addtocounter{LWR at tabulardepth}{1}%
 %    \end{macrocode}
 % Not yet started a table row:
@@ -30345,7 +32599,7 @@
 %    \begin{macrocode}
     \ifbool{LWR at usedmultirow}{%
         \ifbool{LWR at foundmrowcell}%
-            {}%
+            {\relax}%
             {%
                 \PackageError{lwarp}%
                 {%
@@ -30431,6 +32685,8 @@
 %	\begin{description}
 %	\item [\cs{label}:] Adds \HTML\ tags (\cref{sec:labels}),
 %		and another \filenm{.aux} entry (\cref{sec:lwarplabelsetup}).
+%       If \pkg{memoir} is used, its \cs{@mem at old@label} points to \pkg{lwarp}'s version,
+%       and \pkg{cleveref} patches.
 %   \item [\cs{newlabel}:] Unchanged.  When the |.aux| file is read, sets \cs{r@<label>@lwarp}.
 %   \item [\cs{r@<label>@lwarp}:] Set to |{{section_name}{file_name}{depth}{number}}|:
 %		\begin{description}
@@ -30497,8 +32753,9 @@
 % description, or caption, for \cs{nameref}.
 %
 % \changes{v0.44}{2017/11/19}{Adjustment for \pkg{koma-script}.}
+% \changes{v0.84}{2020/04/24}{Default name for previous/next links.}
 %    \begin{macrocode}
-\providecommand*{\@currentlabelname}{}
+\def\@currentlabelname{\linkhomename}%
 %    \end{macrocode}
 % \end{macro}
 %
@@ -30614,12 +32871,12 @@
 % \end{macro}
 %
 %
-% \begin{macro}{\LWR at lwarplabel} \marg{label}
+% \begin{macro}{\LWR at write@lwarplabel} \marg{label}
 % Sanitize the name and then creates the label:
 % \changes{v0.66}{2019/01/27}{No longer use \pkg{zref}.}
 %    \begin{macrocode}
-\newcommand*{\LWR at lwarplabel}[1]{%
-    \LWR at traceinfo{LWR at lwarplabel !#1!}%
+\newcommand*{\LWR at write@lwarplabel}[1]{%
+    \LWR at traceinfo{LWR at write@lwarplabel !#1!}%
     \LWR at setlatestname{\@currentlabelname}%
         \@bsphack%
         \protected at write\@auxout{}%
@@ -30647,14 +32904,63 @@
 % \label{sec:labels}
 
 
-% \begin{macro}{\LWR at sublabel} \marg{label} \quad
+% \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=\textquotedbl\LWR at sanitized\textquotedbl}}%
+    \LWR at htmltag{/a}%
+}
+%    \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\LWR at label@inmathcomment}
+% \changes{v0.86}{2020/05/11}{Fix: Labels in \env{eqnarray}.}
+%    \begin{macrocode}
+\newcommand*{\LWR at label@inmathcomment}{%
+    \ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
+    {%
+%    \end{macrocode}
+% The combined \LaTeX\ \& \HTML\ label is printed in a \cs{mbox} field:%
+%    \begin{macrocode}
+        \mbox{%
+%    \end{macrocode}
+% Shift the label over to the right side of the environment to avoid
+% over-printing the math:
+%    \begin{macrocode}
+            \ifdef{\totwidth@}{\ifbool{LWR at amsmultline}{}{\hspace*{\totwidth@}}}{}%
+%    \end{macrocode}
+% Temporarily end the \HTML\ comment,
+% insert the \LaTeX{} \& \HTML\ label, then
+% resume the \HTML\ comment.
+% \cs{@firstofone} is required to remove extra braces
+%   introduced by the \pkg{amsmath} package.)
+%    \begin{macrocode}
+            \LWR at htmlclosecomment%
+            \LWR at label@subcreatetag%
+            \LWR at htmlopencomment%
+        }% mbox
+    }% mathjax
+    {%
+        \LWR at label@subcreatetag%
+    }%
+}
+%    \end{macrocode}
+% \end{macro}
+
+
+
+% \begin{macro}{\LWR at label@createtag} \marg{label} \quad
 % Creates an \HTML\ id tag.
 %
+% Used by \cs{LWR at new@label} and \cs{hyperdef}.
+%
 % \cs{detokenize} is used to allow underscores in the labels.
 % \changes{v0.45}{2017/12/29}{Fix: Labels with underscores.}
 %    \begin{macrocode}
-\newcommand*{\LWR at sublabel}[1]{%
-    \LWR at traceinfo{LWR at sublabel !#1!}%
+\newcommand*{\LWR at label@createtag}[1]{%
+    \LWR at traceinfo{LWR at label@createtag !#1!}%
 %    \end{macrocode}
 % Create an \HTML\ id tag unless are inside a lateximage,
 % since it would appear in the image:
@@ -30663,29 +32969,33 @@
     {}%
     {% not lateximage
 %    \end{macrocode}
-% If not doing a lateximage, create an \HTML\ ID tag:
+% If not doing a lateximage, create an \HTML\ ID tag.
+%
 % \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
-% (To be factored\dots)
+% \changes{v0.86}{2020/05/11}{Fix: Labels in \env{eqnarray}.}
 %    \begin{macrocode}
         \LWR at sanitize{#1}%
-        \ifbool{LWR at doingstartpars}%
-        {% pars allowed
-            \ifbool{LWR at doingapar}%
-            {% par started
-                \LWR at htmltag{a \LWR at print@mbox{id="\LWR at sanitized"}}%
-                \LWR at htmltag{/a}%
-            }% par started
-            {% par not started
-                \LWR at stoppars%
-                \LWR at htmltag{a \LWR at print@mbox{id="\LWR at sanitized"}}%
-                \LWR at htmltag{/a}%
-                \LWR at startpars%
-            }% par not started
-        }% pars allowed
-        {% pars not allowed
-            \LWR at htmltag{a \LWR at print@mbox{id="\LWR at sanitized"}}%
-            \LWR at htmltag{/a}%
-        }% pars not allowed
+        \ifbool{LWR at insidemathcomment}%
+        {% inside HTML math comment
+            \LWR at label@inmathcomment%
+        }% inside HTML math comment
+        {% not inside HTML math comment
+            \ifbool{LWR at doingstartpars}%
+            {% pars allowed
+                \ifbool{LWR at doingapar}%
+                {% par started
+                    \LWR at label@subcreatetag%
+                }% par started
+                {% par not started
+                    \LWR at stoppars%
+                    \LWR at label@subcreatetag%
+                    \LWR at startpars%
+                }% par not started
+            }% pars allowed
+            {% pars not allowed
+                    \LWR at label@subcreatetag%
+            }% pars not allowed
+        }% not inside HTML math comment
     }% not lateximage
 }
 %    \end{macrocode}
@@ -30692,30 +33002,30 @@
 % \end{macro}
 %
 %
-% \begin{macro}{\LWR at new@label} \parg{bookmark} \marg{label} \oarg{type}
+% \begin{macro}{\LWR at new@label} \marg{label}
 %
 % \cs{label} during \HTML\ output when not in \SVG\ math mode,
 % removing extra spaces around the label, as done by a regular \LaTeX\ \cs{label}.
 %
 % The is also used during a \env{lateximage}, including \SVG\ math, since
-% the special label handling is required, but \cs{LWR at sublabel} does not
+% the special label handling is required, but \cs{LWR at label@createtag} does not
 % generate \HTML\ tags inside a \env{lateximage}.
 %
-% \pkg{clevereref} later encases this to add its own cross-referencing.
+% If \pkg{memoir} is used, it's \cs{@mem at old@label} is pointed here.
 %
-% The optional \meta{bookmark} is per the \pkg{memoir} class, and is ignored.
+% \pkg{clevereref} later encases this to add its own cross-referencing,
+% and also patches \pkg{memoir}.
 %
-% The optional \meta{type} is per the \pkg{ntheorem} package, and is ignored.
-%
+% \changes{v0.84}{2020/04/05}{Removed optional args.}
 %    \begin{macrocode}
-\NewDocumentCommand{\LWR at new@label}{d() m o}{%
+\NewDocumentCommand{\LWR at new@label}{m}{%
     \LWR at traceinfo{LWR at new@label: starting}%
-    \LWR at traceinfo{LWR at new@label: !#2!}%
+    \LWR at traceinfo{LWR at new@label: !#1!}%
 % \@bsphack%
 %    \end{macrocode}
 % Create a traditional \LaTeX\ label, as modified by \pkg{cleveref}:
 %    \begin{macrocode}
-    \LWR at orig@label{#2}%
+    \LWR at orig@label{#1}%
 %    \end{macrocode}
 % Create a special label which holds the section number,
 % |LWR at htmlfilenumber|, |LWR at lateximagedepth|, and |LWR at lateximagenumber|:
@@ -30730,8 +33040,8 @@
     \LWR at traceinfo{%
         LWR at new@label: LWR at htmlfilenumber is \arabic{LWR at htmlfilenumber}%
     }%
-    \LWR at lwarplabel{#2}%
-    \LWR at sublabel{#2}%
+    \LWR at write@lwarplabel{#1}%
+    \LWR at label@createtag{#1}%
     % \@esphack%
     \LWR at traceinfo{LWR at new@label: done}%
 }
@@ -30746,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{}%
     }%
 }
@@ -30773,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}%
@@ -30802,7 +33114,10 @@
     {%
         \ifthenelse{\cnttest{\LWR at lateximagedepthref{#1}}{>}{0}}%
             {%
-                \LWR at ImagesName\LWR at lateximagenumberref{#1}%
+%    \end{macrocode}
+% \changes{v0.86}{2020/05/11}{Fixed: \cs{label} inside \env{lateximage}.}
+%    \begin{macrocode}
+                lateximage-\BaseJobname-\LWR at lateximagenumberref{#1}%
             }%
             {%
                 \LWR at traceinfo{LWR at startref D3}%
@@ -30816,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}
@@ -30852,6 +33168,16 @@
 %   Create an internal document reference link,
 %   or without a link if starred per \pkg{hyperref}.
 %
+% \pkg{hyperref} defines a starred version.
+% Since \pkg{hyperref} is only emulated, the starred version is
+% defined here for print mode, in case \cs{ref} is used inside
+% \SVG\ math:
+% \changes{v0.88}{2020/07/05}{Fixed: Starred.}
+%    \begin{macrocode}
+\LWR at absorbstar{ref}%
+%    \end{macrocode}
+%
+% The \HTML\ version:
 % \changes{v0.58}{2018/06/07}{Improved print/\HTML\ output selection.}
 %    \begin{macrocode}
 \NewDocumentCommand{\LWR at HTML@ref}{s m}{%
@@ -30863,22 +33189,18 @@
 
 \LWR at formatted{ref}
 %    \end{macrocode}
+%
+% For \brand{MathJax}:
+% \changes{v0.88}{2020/07/05}{Added \brand{MathJax}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\let\LWRref\ref}
+\CustomizeMathJax{\renewcommand{\ref}{\ifstar\LWRref\LWRref}}
+%    \end{macrocode}
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\LWR at ref@ignorestar} * \marg{label} \quad
-%   For use inside \cs{hyperref}.  Ignores the star, then uses the original \cs{ref}.
 %
-% \changes{v0.57}{2018/06/05}{\pkg{subcaption}: Fix: \cs{subref}.}
-%    \begin{macrocode}
-\NewDocumentCommand{\LWR at ref@ignorestar}{s m}{%
-    \LWR at print@ref{#2}%
-}
-%    \end{macrocode}
-% \end{macro}
-
-
-
+%
 % \label{sec:pagerefpagefor}
 % \begin{macro}{\pagerefPageFor} Text for page references.
 %
@@ -30957,14 +33279,11 @@
 % Emulates \pkg{hyperref}:
 % \begin{macro}{\@currentHref} Added to support \pkg{backref}.
 % \changes{v0.45}{2018/01/14}{Added.}
+% \changes{v0.84}{2020/04/07}{\pkg{backref}: Fixed from \pkg{lwarp} v0.72 changes.}
 %    \begin{macrocode}
 \AtBeginDocument{
-
-\def\@currentHref{%
-    autopage-\theLWR at currentautosec%
+    \def\@currentHref{\BaseJobname-autopage-\theLWR at currentautosec}
 }
-
-}
 %    \end{macrocode}
 % \end{macro}
 
@@ -30983,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}
@@ -31004,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}
@@ -31019,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}
@@ -31053,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%
@@ -31070,7 +33391,7 @@
 
 
 
-% \begin{macro}{\href} \oarg{options} \marg{URL}
+% \begin{macro}{\LWR at href} \oarg{options} \marg{URL}
 %
 % Create a link with accompanying text:
 %
@@ -31078,6 +33399,7 @@
 % \changes{v0.49}{2018/02/18}{Fix: Adapt to classes.}
 % \changes{v0.52}{2018/03/26}{Fix: \progcode{\#}, \progcode{\%}, \progcode{\&}, \progcode{\~}, \progcode{\_} in \URL.}
 % \changes{v0.57}{2018/06/05}{Fix: Text catcodes.}
+% \changes{v0.86}{2020/05/07}{\pkg{hyperref}: Adjusted emulation.}
 %    \begin{macrocode}
 \DeclareDocumentCommand{\LWR at hrefb}{O{} m}{%
     \LWR at ensuredoingapar%
@@ -31086,7 +33408,7 @@
     \LWR at subhyperreftext%
 }
 
-\newrobustcmd*{\href}{%
+\newrobustcmd*{\LWR at href}{%
     \begingroup%
     \LWR at linkcatcodes%
     \LWR at hrefb%
@@ -31094,12 +33416,13 @@
 %    \end{macrocode}
 % \end{macro}
 
-% \begin{macro}{\nolinkurl} \marg{URL}
+% \begin{macro}{\LWR at nolinkurl} \marg{URL}
 %
 % Print the name of the link without creating the link:
 % \changes{v0.43}{2017/10/31}{Made robust.}
 % \changes{v0.45}{2017/12/29}{Fix: Underscore in \URL.}
 % \changes{v0.52}{2018/03/26}{Fix: \progcode{\#}, \progcode{\%}, \progcode{\&}, \progcode{\~}, \progcode{\_} in \URL.}
+% \changes{v0.86}{2020/05/07}{\pkg{hyperref}: Adjusted emulation.}
 %    \begin{macrocode}
 \newcommand*{\LWR at nolinkurlb}[1]{%
     \LWR at ensuredoingapar%
@@ -31109,7 +33432,7 @@
     \endgroup%
 }
 
-\newrobustcmd*{\nolinkurl}{%
+\newrobustcmd*{\LWR at nolinkurl}{%
     \begingroup%
     \LWR at linkcatcodes%
     \LWR at nolinkurlb%
@@ -31118,7 +33441,7 @@
 % \end{macro}
 
 
-% \begin{macro}{\url} \marg{URL}
+% \begin{macro}{\LWR at url} \marg{URL}
 %
 % Create a link whose text name is the address of the link.
 %
@@ -31129,16 +33452,17 @@
 % \changes{v0.45}{2017/12/29}{Improved URLs with underscores.}
 % \changes{v0.49}{2018/02/18}{Fix: Adapt to classes.}
 % \changes{v0.52}{2018/03/26}{Fix: \progcode{\#}, \progcode{\%}, \progcode{\&}, \progcode{\~}, \progcode{\_} in \URL.}
+% \changes{v0.86}{2020/05/07}{\pkg{hyperref}: Adjusted emulation.}
 %    \begin{macrocode}
 \DeclareDocumentCommand{\LWR at urlb}{m}{%
     \LWR at ensuredoingapar%
     \def\LWR at templink{#1}%
     \@onelevel at sanitize\LWR at templink%
-    \href{\LWR at templink}{\LWR at templink}%
+    \LWR at href{\LWR at templink}{\LWR at templink}%
     \endgroup%
 }
 
-\newrobustcmd*{\url}{%
+\newrobustcmd*{\LWR at url}{%
     \begingroup%
     \LWR at linkcatcodes%
     \LWR at urlb%
@@ -31155,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
         }%
     }%
 }
@@ -31225,12 +33550,11 @@
 % \hrule
 % \end{table}
 %
-% \cs{@makecaption} is redefined to print the float number and caption text,
-% separated by \cs{CaptionSeparator}, which works with the \pkg{babel} package to
-% adjust the caption separator according to the language.  French, for example,
-% uses an en-dash instead of a colon: ``Figure 123 -- Caption text''.
+% ^^A \cs{@makecaption} is redefined to print the float number and caption text,
+% ^^A separated by \cs{CaptionSeparator}, which works with the \pkg{babel} package to
+% ^^A adjust the caption separator according to the language.  French, for example,
+% ^^A uses an en-dash instead of a colon: ``Figure 123 -- Caption text''.
 
-
 % \subsection{Float environment}
 
 % \codehtml
@@ -31244,6 +33568,13 @@
 %
 %    \begin{macrocode}
 \NewDocumentCommand{\LWR at floatbegin}{m o}{%
+%    \end{macrocode}
+% Warn if starting a float inside a \element{span}:
+% \changes{v0.84}{2020/04/22}{Warn inside a \element{span}.}
+%    \begin{macrocode}
+    \LWR at spanwarninvalid{float}%
+%    \end{macrocode}
+%    \begin{macrocode}
     \ifbool{FormatWP}{\newline}{}%
     \LWR at stoppars%
 %    \end{macrocode}
@@ -31268,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%
@@ -31281,7 +33615,6 @@
 % Update the caption type:
 %    \begin{macrocode}
     \renewcommand*{\@captype}{#1}%
-    \caption at settype{#1}%
 %    \end{macrocode}
 % Mark the float for a word processor conversion:
 %    \begin{macrocode}
@@ -31292,11 +33625,9 @@
 
     }{}%
 %    \end{macrocode}
-% Look for \cs{centering}, etc:
-% \changes{v0.54}{2018/04/19}{Honor \cs{centering}, etc. in floats.}
-% \changes{v0.55}{2018/04/24}{Fix: Float optional args.}
+% After each \cs{LWR at floatbegin}, look for \cs{centering}, etc next,
+% using \cs{LWR at floatalignment}.
 %    \begin{macrocode}
-    \LWR at futurenonspacelet\LWR at mynexttoken\LWR at floatalignment%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -31319,11 +33650,25 @@
 %
 %
 %
-% \begin{macro}{\@float}
-% \begin{macro}{\@dlbfloat} Support packages which create floats directly.
+% \begin{macro}{\@xfloat}
+% \begin{macro}{\@xdlbfloat} Support packages which create floats directly.
+%
+% Look for \cs{centering}, etc using \cs{LWR at floatalignment}.
+%
+% \changes{v0.54}{2018/04/19}{Honor \cs{centering}, etc. in floats.}
+% \changes{v0.55}{2018/04/24}{Fix: Float optional args.}
+% \changes{v0.84}{2020/04/19}{\pkg{caption} now optional.}
 %    \begin{macrocode}
-\let\@float\LWR at floatbegin
-\let\@dblfloat\LWR at floatbegin
+\AtBeginDocument{
+    \def\@xfloat #1[#2]{%
+        \LWR at floatbegin{#1}[#2]
+        \LWR at futurenonspacelet\LWR at mynexttoken\LWR at floatalignment%
+    }
+    \def\@xdblfloat #1[#2]{%
+        \LWR at floatbegin{#1}[#2]
+        \LWR at futurenonspacelet\LWR at mynexttoken\LWR at floatalignment%
+    }
+}
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -31365,9 +33710,12 @@
 %
 % \begin{macro}{\end at float}
 % \begin{macro}{\end at dlbfloat} Support packages which create floats directly.
+% \changes{v0.84}{2020/04/19}{\pkg{caption} now optional.}
 %    \begin{macrocode}
-\let\end at float\LWR at floatend
-\let\end at dblfloat\LWR at floatend
+\AtBeginDocument{
+    \let\end at float\LWR at floatend
+    \let\end at dblfloat\LWR at floatend
+}
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -31402,11 +33750,27 @@
 % \begin{macro}{\LWR at forcenewautoidanchor}
 % Adds a new \element{autoid} anchor.
 % \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}%
-    \LWR at htmltag{a id="\LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}"}%
-        \LWR at htmltag{/a}%
+    \ifbool{LWR at doingapar}%
+    {%
+        \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=\textquotedbl%
+            \LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}%
+        \textquotedbl\ }% space
+        \LWR at htmltag{/a }%
+        \LWR at startpars%
+    }%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -31479,7 +33843,9 @@
 
 % \subsection{Caption inside a float environment}
 
-% \begin{macro}{\CaptionSeparator} How to separate the float number and the caption text.
+% \begin{macro}{\CaptionSeparator} How to separate the float number and the caption text,
+% if not defined by the user.
+% In most cases, \pkg{caption}'s settings are used instead.
 % \changes{v0.13}{2016/03/23}{Fix for newer babel package.}
 %    \begin{macrocode}
 \AtBeginDocument{\providecommand*{\CaptionSeparator}{:~}}
@@ -31486,27 +33852,57 @@
 %    \end{macrocode}
 % \end{macro}
 
+
+% \begin{macro}{\@caption} \marg{posn} \oarg{name} \marg{long name}
 % \begin{macro}{\@makecaption} \marg{name and num} \marg{text}
 %
 % Prints the float type and number, the caption separator, and the caption text.
+%
+% \cs{@caption} is provided here in case \pkg{caption} is not loaded, and
+% is based on the \pkg{nameref} package.
+%
+% \changes{v0.84}{2020/04/20}{\pkg{caption} now optional.}
 %    \begin{macrocode}
-\AtBeginDocument{\renewcommand{\@makecaption}[2]{%
-    \LWR at traceinfo{@makecaption}%
-    \LWR at isolate{#1}\CaptionSeparator\LWR at isolate{#2}%
-    \LWR at traceinfo{@makecaption: done}%
-}%
+\AtBeginDocument{
+    \@ifpackageloaded{caption}{}{
+        \let\LWR at orig@caption\@caption%
+        \long\def\@caption#1[#2]{%
+%    \end{macrocode}
+% Warn if using a caption inside a \element{span}:
+% \changes{v0.84}{2020/04/22}{Warn inside a \element{span}.}
+%    \begin{macrocode}
+            \LWR at spanwarnformat{caption}%
+%    \end{macrocode}
+%    \begin{macrocode}
+            \LWR at setlatestname{#2}%
+            \LWR at orig@caption{#1}[{#2}]% also takes third argument
+        }%
+
+        \renewcommand{\@makecaption}[2]{%
+            \LWR at traceinfo{@makecaption}%
+            \caption at begin{\@captype}%
+            \LWR at isolate{#1}%
+            \edef\LWR at tempone{#1}%
+            \ifdefvoid{\LWR at tempone}{}{\CaptionSeparator}%
+            \LWR at isolate{#2}%
+            \caption at end%
+            \LWR at traceinfo{@makecaption: done}%
+        }%
+    }
 }
 %    \end{macrocode}
 % \end{macro}
+% \end{macro}
 
 
 % \subsection{Caption and \LOF\ linking and tracking}
 
 % When a new \HTML\ file is marked in the \LaTeX\ \PDF\ file,
+% or at the start of a new section,
 % the \LaTeX\ page number at that point is stored in |LWR at latestautopage|,
 % (and the associated filename is remembered by the special \LaTeX\ labels).
 % This page number is used to generate an |autopage| \HTML\ \element{id}
-% in the \HTML\ output at the start of the new \HTML\ file.
+% in the \HTML\ output at the start of the new \HTML\ file or section.
 % Meanwhile, there is a float counter used to generate an \HTML\ |autoid|
 % \element{id} at the start of the float itself in the \HTML\ file.
 % The |autopage| and |autoid| values to use for each float are written to the
@@ -31541,8 +33937,10 @@
 %    \end{macrocode}
 % \end{macro}
 
+
 % \DescribeCounter{LWR at latestautopage}
-% Updated each time a new \HTML\ file is begun.
+% The \HTML\ output's \PDF\ page number at the start of a new \HTML\ file or section.
+%
 % \cs{LWRsetnextfloat} is written with this and the |autoid|
 % by the modified \cs{addcontentsline} just before each float's entry.
 %    \begin{macrocode}
@@ -31579,7 +33977,7 @@
 %
 % Low-level code to create \HTML\ tags for captions.
 %
-% The print versions are from the \pkg{caption} package.
+% The print versions are from the \pkg{caption} package, if loaded.
 %
 % \changes{v0.47}{2018/01/28}{Fix: Argument passed to \cs{LWR at origcaption@begin}.}
 % \changes{v0.58}{2018/06/07}{Improved print/\HTML\ output selection.}
@@ -31632,10 +34030,17 @@
 % These are assigned \cs{AtBeginDocument} so that other packages
 % which modify captions will have already been loaded before saving the
 % print-mode version.
+%
+% Print versions are provided here in case \pkg{caption} is not loaded.
+%
+% \changes{v0.84}{2020/04/20}{\pkg{caption} now optional.}
 %    \begin{macrocode}
 \AtBeginDocument{
-\LWR at formatted{caption at begin}
-\LWR at formatted{caption at end}
+    \providecommand{\caption at begin}[1]{}
+    \LWR at formatted{caption at begin}
+
+    \providecommand{\caption at end}{}
+    \LWR at formatted{caption at end}
 }
 %    \end{macrocode}
 % \end{macro}
@@ -31646,28 +34051,37 @@
 % Tracks the float number for this caption used outside a float.
 % Patched to create an \HTML\ anchor.
 % \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.84}{2020/04/20}{\pkg{caption} now optional.}
 %    \begin{macrocode}
-\let\LWR at origcaptionlistentry\captionlistentry
+\AtBeginDocument{%
+\@ifpackageloaded{caption}{
+    \let\LWR at origcaptionlistentry\captionlistentry
 
-\renewcommand*{\captionlistentry}{%
-    \LWR at ensuredoingapar%
-    \LWR at origcaptionlistentry%
-}
+    \renewcommand*{\captionlistentry}{%
+        \LWR at ensuredoingapar%
+        \LWR at origcaptionlistentry%
+    }
 %    \end{macrocode}
 %
 % \changes{v0.79}{2019/12/09}{Fix: Duplicate \attribute{auto-id}.}
 %    \begin{macrocode}
-\def\LWR at LTcaptionlistentry{%
-    \LWR at ensuredoingapar%
-    \LWR at forcenewautoidanchor%
-    \bgroup
-    \@ifstar{\egroup\LWR at LT@captionlistentry}% gobble *
-        {\egroup\LWR at LT@captionlistentry}%
-}%
+    \def\LWR at LTcaptionlistentry{%
+        \LWR at ensuredoingapar%
+        \LWR at forcenewautoidanchor%
+        \bgroup%
+        \@ifstar{\egroup\LWR at LT@captionlistentry}% gobble *
+            {\egroup\LWR at LT@captionlistentry}%
+    }%
 
-\def\LWR at LT@captionlistentry#1{%
-    \caption at listentry\@firstoftwo[\LTcaptype]{#1}%
-}%
+    \def\LWR at LT@captionlistentry#1{%
+        \caption at listentry\@firstoftwo[\LTcaptype]{#1}%
+    }%
+}% caption loaded
+{% caption not loaded
+    \newcommand{\captionlistentry}[2][]{}%
+    \newcommand{\LWR at LT@captionlistentry}[2][]{}%
+}
+}% AtBeginDocument
 %    \end{macrocode}
 % \end{macro}
 
@@ -31715,16 +34129,17 @@
 %
 % \begin{macro}{\captionof}
 % Patched to handle paragraph tags.
+% \changes{v0.84}{2020/04/20}{\pkg{caption} now optional.}
 %    \begin{macrocode}
+\RequirePackage{capt-of}
+
 \AtBeginDocument{
+    \let\LWR at origcaptionof\captionof
 
-\let\LWR at origcaptionof\captionof
-
-\renewcommand*{\captionof}{%
-    \LWR at stoppars%
-    \LWR at origcaptionof%
-}
-
+    \renewcommand*{\captionof}{%
+        \LWR at stoppars%
+        \LWR at origcaptionof%
+    }
 }% AtBeginDocument
 %    \end{macrocode}
 % \end{macro}
@@ -31980,10 +34395,11 @@
 %
 % It may be renamed by redefining \cs{sidetocname}, and may contain paragraphs.
 %
-% \CSS\ may be used to format the side\TOC:
+% Per \cref{tab:sidetoccss}, \CSS\ may be used to format the side\TOC.
 %
-% \begin{docsidebar}[CSS related to side\TOC:]
-% \vspace*{-\baselineskip}
+% \begin{table}[h]
+% \caption{CSS related to the side\TOC}
+% \label{tab:sidetoccss}
 % \begin{description}[parsep=0ex]
 % \vspace*{-\baselineskip}
 % \item [|div.sidetoccontainer|:] The entire side\TOC.
@@ -31990,8 +34406,7 @@
 % \item [|div.sidetoctitle|:] The title.
 % \item [|div.sidetoccontents|:] The table of contents.
 % \end{description}
-% \vspace*{-\baselineskip}
-% \end{docsidebar}
+% \end{table}
 
 %    \begin{macrocode}
 \end{warpHTML}
@@ -32010,7 +34425,7 @@
 \newcounter{SideTOCDepth}
 \setcounter{SideTOCDepth}{1}
 
-\AtBeginDocument{%
+\AtEndDocument{%
     \ifnumcomp{\value{SideTOCDepth}}{<}{\value{FileDepth}}{
         \PackageWarningNoLine{lwarp}
         {%
@@ -32123,7 +34538,8 @@
 %    \end{macrocode}
 % Respond to |tocdepth|:
 %    \begin{macrocode}
-    \ifthenelse{\cnttest{#1}{<=}{\value{tocdepth}}}%
+    \ifnumcomp{#1}{>}{\value{tocdepth}}%
+        {}%
         {%
             \LWR at startpars%
 %    \end{macrocode}
@@ -32148,7 +34564,6 @@
 %    \begin{macrocode}
             \LWR at stoppars%
         }%
-        {}%
     \LWR at traceinfo{hypertoc done}%
 }
 %    \end{macrocode}
@@ -32186,7 +34601,6 @@
 %
 %    \begin{macrocode}
 \newcommand{\hypertocfloat}[5]{%
-    \LWR at startpars%
 %    \end{macrocode}
 % If some float-creation package has not yet defined
 % the float type's |lofdepth| counter, etc, define it here:
@@ -32343,7 +34757,18 @@
 %    \end{macrocode}
 
 
+% \begin{macro}{\IndexPageSeparator}
+% \begin{macro}{\IndexRangeSeparator}
+% User-adjustable delimiters for page and range separators in the \filenm{*.ind} files.
+% \changes{v0.88}{2020/07/16}{Added.}
+%    \begin{macrocode}
+\newcommand*{\IndexPageSeparator}{, }
+\newcommand*{\IndexRangeSeparator}{--}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
 
+
 % \begin{environment}{theindex}
 %    \begin{macrocode}
 \@ifundefined{chapter}
@@ -32399,15 +34824,76 @@
 % \end{macro}
 
 
-% \begin{macro}{\@wrindex} \marg{term} \qquad
+% \begin{macro}{\LWR at xindex@modifyentry} \marg{indexing term}
+%
+% If using \prog{xindex}, modifies the pipe character to become \cs{hyperindexformat}.
+% The indexing term is split into two argument at the pipe, then fed to
+% \cs{LWR at xindex@modifyentrysub}.
+%
+% \changes{v0.88}{2020/07/12}{Added support for \prog{xindex}.}
+%    \begin{macrocode}
+\NewDocumentCommand{\LWR at xindex@modifyentry}{>{\SplitArgument{1}{|}}m}
+    {\LWR at xindex@modifyentrysub#1}
+%    \end{macrocode}
+%
+% Handle left and right parenthesis range argument,
+% or add a |hyperindexformat| clause.
+%    \begin{macrocode}
+\newcommand*{\LWR at xindex@modifyentrysub}[2]{%
+    \edef\LWR at tempone{#1}%
+    \edef\LWR at temptwo{#2}%
+    \IfValueTF{#2}{%
+        \ifx#2(%
+            \appto\LWR at tempone{|(}%
+        \else%
+            \ifx#2)%
+                \appto\LWR at tempone{|)}%
+            \else%
+                \appto\LWR at tempone{%
+                    |hyperindexformat\LWRleftbrace%
+                    \LWRbackslash#2%
+                    \LWRrightbrace%
+                }%
+            \fi%
+        \fi%
+    }%
+    {}%
+}
+%    \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\@wrindex} \marg{indexing term} \qquad
 % Redefined to write the |LWR at autoindex| counter instead of |page|.
+%
+% If using \prog{xindex}, the first line is a comment
+% including a special phrase which tricks \prog{xindex} into
+% thinking that \pkg{hyperref} was used.
+%
 % \changes{v0.28}{2017/04/13}{Improved indexing.}
+% \changes{v0.88}{2020/07/12}{Added support for \prog{xindex}.}
 %    \begin{macrocode}
+\newbool{LWR at xindex@tricked}
+\boolfalse{LWR at xindex@tricked}
+
 \def\LWR at wrindex#1{%
+    \ifbool{LWR at xindex}{%
+        \ifbool{LWR at xindex@tricked}{}{%
+            \protected at write\@indexfile{}%
+            {%
+                \LWRpercent\space hyperpage\LWRrightbrace%
+                \LWRpercent\space trick xindex to assume hyperref%
+            }%
+            \global\booltrue{LWR at xindex@tricked}%
+        }%
+        \LWR at xindex@modifyentry{#1}%
+    }{%
+        \def\LWR at tempone{#1}%
+    }%
     \addtocounter{LWR at autoindex}{1}%
-    \LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%
+    \label{LWRindex-\arabic{LWR at autoindex}}%
     \protected at write\@indexfile{}%
-    {\string\indexentry{#1}{\arabic{LWR at autoindex}}}%
+    {\string\indexentry{\LWR at tempone}{\arabic{LWR at autoindex}}}%
     \endgroup%
     \@esphack%
 }
@@ -32434,29 +34920,200 @@
 % \end{macro}
 
 
+% \begin{macro}{\LWR at indexnameref@anonref} \marg{LWR at autoindex}
+%
+% Displays a reference link where there no \cs{ref} available.
+%    \begin{macrocode}
+\newcommand*{\LWR at indexnameref@anonref}[1]{%
+    \LWR at startref{LWRindex-#1}%
+    (*)%
+    \LWR at htmltag{/a}%
+}
+%    \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\LWR at indexnameref@ref} \marg{LWR at autoindex}
+%
+% Creates \cs{ref}-style index references.
+% To avoid an unwanted space if there is nothing to reference,
+% the reference is checked first.
+%    \begin{macrocode}
+\newcommand*{\LWR at indexnameref@ref}[1]{%
+    \edef\LWR at thisref{\csuse{r at LWRindex-#1}}%
+    \ifdefvoid{\LWR at thisref}{}{%
+        \edef\LWR at thisref{\expandafter\@firstoftwo\LWR at thisref}%
+        \ifdefvoid{\LWR at thisref}%
+            {\LWR at indexnameref@anonref{#1}}%
+            {\ref{LWRindex-#1}}%
+    }%
+}
+%    \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\LWR at indexnameref@refnameref} \marg{LWR at autoindex}
+%
+% Creates \cs{ref}-style index references.
+% To avoid an unwanted space if there is nothing to reference,
+% the reference is checked first.
+% For links to starred or |??| objects, only the name is used.
+%    \begin{macrocode}
+\newcommand*{\LWR at indexnameref@refnameref}[1]{%
+    \edef\LWR at thisref{\csuse{r at LWRindex-#1}}%
+    \ifdefvoid{\LWR at thisref}{}{%
+        \edef\LWR at thisref{\expandafter\@firstoftwo\LWR at thisref}%
+        \ifdefvoid{\LWR at thisref}{}{%
+            \ifdefstring{\LWR at thisref}{(*)}%
+                {}%
+                {\ref{LWRindex-#1} }% space
+        }%
+    }%
+    \nameref{LWRindex-#1}%
+}
+%    \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\LWR at indexnameref@cref} \marg{LWR at autoindex}
+%
+% Creates \cs{cref}-style index references.
+% If no numbered reference is available, a \cs{nameref} is used instead.
+% If the reference is |??|, which will be changed by \cs{LWR at indexnameref}
+% to become |(*)|, then the link is changed to show |(*)|.
+%    \begin{macrocode}
+\newcommand*{\LWR at indexnameref@cref}[1]{%
+    \edef\LWR at thisref{\csuse{r at LWRindex-#1}}%
+    \ifdefvoid{\LWR at thisref}{%
+        \nameref{LWRindex-#1}%
+    }{%
+        \edef\LWR at thisref{\expandafter\@firstoftwo\LWR at thisref}%
+        \ifdefvoid{\LWR at thisref}{%
+            \nameref{LWRindex-#1}%
+        }{%
+            \ifdefstring{\LWR at thisref}{(*)}{%
+                \LWR at indexnameref@anonref{#1}%
+            }{%
+                \cref{LWRindex-#1}%
+            }%
+        }%
+    }%
+}
+%    \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\LWR at indexnameref@crefnameref} \marg{LWR at autoindex}
+%
+% Creates \cs{cref}-style index references.
+% If no numbered reference is available, a \cs{nameref} is used instead.
+% If the reference is |??|, which will be changed by \cs{LWR at indexnameref}
+% to become |(*)|, then the link is changed to show only the name.
+%    \begin{macrocode}
+\newcommand*{\LWR at indexnameref@crefnameref}[1]{%
+    \edef\LWR at thisref{\csuse{r at LWRindex-#1}}%
+    \ifdefvoid{\LWR at thisref}%
+        {}%
+        {%
+            \edef\LWR at thisref{\expandafter\@firstoftwo\LWR at thisref}%
+            \ifdefvoid{\LWR at thisref}%
+                {}%
+                {%
+                    \ifdefstring{\LWR at thisref}{(*)}%
+                        {}%
+                        {\cref{LWRindex-#1}} % space
+                }%
+        }%
+    \nameref{LWRindex-#1}%
+}
+%    \end{macrocode}
+% \end{macro}
+
+
 % \begin{macro}{\LWR at indexnameref} \marg{LWR at autoindex}
 %
 % Creates a hyperlink based on the given entry's autoindex.
+% \changes{v0.88}{2020/07/19}{Added \optn{IndexRef} option, refactored.}
 %    \begin{macrocode}
-\newcommand*{\LWR at indexnameref}[1]{\nameref{LWRindex-#1}}
+\newcommand*{\LWR at indexnameref}[1]{%
+    {% group
 %    \end{macrocode}
+% Temporarily redefine \pkg{caption}'s \cs{caption at xref} because it was printing |??|
+% in the indexes, and also causing error on expansion:
+%    \begin{macrocode}
+        \ifdef{\caption at xref}{%
+            \renewcommand*{\caption at xref}[2]{(*)}%
+        }{}%
+%    \end{macrocode}
+%    \begin{macrocode}
+        \ifdefstring{\LWR at IndexRef}{ref}{%
+            \LWR at indexnameref@ref{#1}%
+        }{%
+        \ifdefstring{\LWR at IndexRef}{nameref}{%
+            \nameref{LWRindex-#1}%
+        }{%
+        \ifdefstring{\LWR at IndexRef}{refnameref}{%
+            \LWR at indexnameref@refnameref{#1}%
+        }{%
+        \ifdefstring{\LWR at IndexRef}{cref}{%
+            \LWR at indexnameref@cref{#1}%
+        }{%
+        \ifdefstring{\LWR at IndexRef}{crefnameref}{%
+            \LWR at indexnameref@crefnameref{#1}%
+        }{%
+        \ifdefstring{\LWR at IndexRef}{autoref}{%
+            \LWR at indexnameref@cref{#1}%
+        }{% text string
+            \LWR at startref{LWRindex-#1}%
+            \LWR at IndexRef%
+            \LWR at htmltag{/a}%
+        }}}}}}%
+    }% group
+}
+%    \end{macrocode}
 % \end{macro}
 
-% \begin{macro}{\LWR at doindexentry} \marg{LWR at autoindex, or macros.}
+% \begin{macro}{\LWR at doindexentrysubsub} \marg{range start: LWR at autoindex, or macros.} \marg{range end or blank}
 %
 % Creates a hyperlink, or handles \cs{see}, \cs{textbf}, etc.
 %
 % \changes{v0.58}{2018/06/17}{Adds support for \cs{see}, \cs{seealso}, \cs{emph}, \cs{textbf}, etc.}
+% \changes{v0.88}{2020/07/11}{Handles a range, for \prog{xindex}.}
 %    \begin{macrocode}
-\newrobustcmd{\LWR at doindexentry}[1]{%
+\newrobustcmd{\LWR at doindexentrysubsub}[2]{%
     \IfInteger{#1}%
         {\LWR at indexnameref{#1}}%
         {#1}%
+    \IfValueT{#2}{%
+        \IndexRangeSeparator%
+        \IfInteger{#2}%
+            {\LWR at indexnameref{#2}}%
+            {#2}%
+    }%
 }
 %    \end{macrocode}
 % \end{macro}
+%
+% \begin{macro}{\LWR at doindexentrysub}
+%       \marg{range delimiter} \marg{LWR at autoindex or macros, possible a range}
+% \changes{v0.88}{2020/07/15}{Adapts to \pkg{gindex}.}
+%    \begin{macrocode}
+\NewDocumentCommand{\LWR at doindexentrysub}{m >{\SplitArgument{1}{#1}}m}
+    {\LWR at doindexentrysubsub#2}
+%    \end{macrocode}
+% \end{macro}
 
+% \begin{macro}{\LWR at doindexentry} \marg{LWR at autoindex or macros, possible a range}
+% \changes{v0.88}{2020/07/15}{Adapts to \pkg{gindex}.}
+%    \begin{macrocode}
+\newcommand*{\LWR at doindexentry}[1]{%
+    \relax% required
+    \expandafter\LWR at doindexentrysub\expandafter{\IndexRangeSeparator}{#1}%
+}
+%    \end{macrocode}
+% \end{macro}
 
+
+
 % \begin{macro}{\LWR at hyperindexrefnullified}
 % Handles macros commonly seen inside an \cs{index} entry.
 % Each macro is redefined to create and format a link to its entry.
@@ -32491,18 +35148,94 @@
 % \end{macro}
 
 
-% \begin{macro}{\hyperindexref} \marg{LWR at autoindex}
+% \begin{macro}{\hyperindexref} \marg{list of LWR at autoindex, commas, and ranges}
 %
 % |\hyperindexref{LWR at autoindex}| is inserted into |*.ind| by
-% the \pkg{makeindex} style file \filenm{lwarp.ist} or
-% the \pkg{xindy} style file \filenm{lwarp.xdy}.
+% the \prog{makeindex} style file \filenm{lwarp.ist} or
+% the \prog{xindy} style file \filenm{lwarp.xdy}.
+% For \prog{xindex}, \cs{hyperpage} is inserted, which is \cs{let} to \cs{hyperindexref}.
+% For \prog{gindex}, \cs{addindexitem} and related are inserted, which
+% are defined to use \cs{hyperindexref}.
 %
+% The argument is split at commas, and also for ranges,
+% then passed to \cs{LWR at hyperindexrefsub}.
+%
+% \changes{v0.88}{2020/07/14}{Rewritten to parse commas and ranges.}
+%    \begin{macrocode}
+\newcommand*{\hyperindexref}[1]{%
+    \relax% required
+    \expandafter\LWR at hyperindexref@comma\expandafter{\IndexPageSeparator}{#1}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\LWR at hyperindexref@comma} \marg{separator} \marg{list of args}
+%
+% The list is split at commas, and passed to \cs{LWR at hyperindexref@@comma}.
+%    \begin{macrocode}
+\NewDocumentCommand{\LWR at hyperindexref@comma}
+    {m >{\SplitList{#1}} m}
+    {%
+%    \end{macrocode}
+% Used to place the separtor between each entry, but not before the first.
+%    \begin{macrocode}
+        \def\LWR at hyperindexref@thiscomma{}%
+        \def\LWR at hyperindexref@nextcomma{#1}%
+%    \end{macrocode}
+% Each comma-delimited entry is now passed individually to \cs{LWR at hyperindexref@@comma}.
+%    \begin{macrocode}
+        \ProcessList{#2}\LWR at hyperindexref@@comma%
+    }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\LWR at hyperindexref@@comma} \marg{arg, perhaps with a range}
+%
+% A comma separator is placed if not the first item,
+% then the range is parsed.
+%    \begin{macrocode}
+\newcommand*{\LWR at hyperindexref@@comma}[1]{%
+    \LWR at hyperindexref@thiscomma%
+    \renewcommand{\LWR at hyperindexref@thiscomma}{\LWR at hyperindexref@nextcomma}%
+    \expandafter\LWR at hyperindexref@range\expandafter{\IndexRangeSeparator}{#1}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\LWR at hyperindexref@range} \marg{range delimiter} \marg{arg}
+%    \begin{macrocode}
+\NewDocumentCommand{\LWR at hyperindexref@range}
+    {m >{\SplitArgument{1}{#1}} m}
+    {\LWR at hyperindexrefsub#2}
+%    \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\LWR at hyperindexrefsub}
+%   \marg{range start: LWR at autoindex}
+%   \marg{range end, or |-NoValue-|}
+%
+% Handles the start and end of a range, if applicable.
+%    \begin{macrocode}
+\newcommand*{\LWR at hyperindexrefsub}[2]{%
+    \LWR at hyperindexrefsubtwo{#1}%
+    \IfValueT{#2}{%
+        \IndexRangeSeparator%
+        \LWR at hyperindexrefsubtwo{#2}%
+    }%
+}
+%    \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\LWR at hyperindexrefsubtwo} \marg{LWR at autoindex}
+%
 % \changes{v0.20}{2016/12/19}{Print mode provided in case \pkg{hyperref} not used.}
 % \changes{v0.28}{2017/04/13}{Improved indexing.}
 % \changes{v0.58}{2018/06/17}{Adds support for \cs{see}, \cs{seealso}, \cs{emph}, \cs{textbf}, etc.}
 % \changes{v0.66}{2019/02/05}{Fix: Long index entries.}
+% \changes{v0.88}{2020/07/11}{Adds support for a range, for \prog{xindex}.}
 %    \begin{macrocode}
-\newcommand{\hyperindexref}[1]{%
+\newcommand*{\LWR at hyperindexrefsubtwo}[1]{%
 %    \end{macrocode}
 % In long index lines with numerous entries,
 % \prog{makeindex} can insert a newline before the page number,
@@ -32510,7 +35243,7 @@
 % If the first character is a space, remove it first.
 % ^^A Or use the trimspaces package.
 %    \begin{macrocode}
-    \def\LWR at tempone{#1}%
+    \edef\LWR at tempone{#1}%
     \IfBeginWith{\LWR at tempone}{ }{%
         \StrGobbleLeft{\LWR at tempone}{1}[\LWR at tempone]%
     }{}%
@@ -32532,7 +35265,32 @@
 %    \end{macrocode}
 % \end{macro}
 
+
+% \begin{macro}{\hyperpage} Emulate \pkg{hyperref}.
+% \changes{v0.88}{2020/07/12}{Added.}
 %    \begin{macrocode}
+\LetLtxMacro\hyperpage\hyperindexref
+%    \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\nohyperpage} Emulate \pkg{hyperref}.
+% \changes{v0.88}{2020/07/12}{Added.}
+%    \begin{macrocode}
+\def\nohyperpage#1{}
+%    \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\hyperindexformat} Emulate \pkg{hyperref}.
+% \changes{v0.88}{2020/07/12}{Added.}
+%    \begin{macrocode}
+\def\hyperindexformat#1#2{%
+    #1{\hyperpage{#2}}%
+}%
+%    \end{macrocode}
+% \end{macro}
+
+
+%    \begin{macrocode}
 \end{warpHTML}
 %    \end{macrocode}
 
@@ -32564,6 +35322,7 @@
 %
 %
 % \section{Bibliography presentation}
+% ^^A *bibliography
 %
 % \codehtml
 %    \begin{macrocode}
@@ -32571,21 +35330,12 @@
 %    \end{macrocode}
 %
 %
-% \begin{macro}{\bibliography} \marg{filenames}
-%
-% Modified to use the base jobname instead of the |_html| jobname.
-% \changes{v0.48}{2018/02/04}{Fix: \cs{BaseJobname} for bibliography.}
-%    \begin{macrocode}
-\def\bibliography#1{%
-    \if at filesw
-    \immediate\write\@auxout{\string\bibdata{#1}}%
-    \fi
-%     \@input@{\jobname.bbl}% original
-    \begingroup%
-    \@input@{\BaseJobname.bbl}% lwarp
-    \endgroup%
-}
-%    \end{macrocode}
+% \begin{macro}{\bibliography} \marg{filenames} \qquad
+% At one time this was modified to read \cs{BaseJobname}\filenm{.bbl},
+% which meant the \HTML\ version could not resolve until the print version was
+% also present.  This also confused \pkg{multibib}.
+% It has been reverted to the original to use \cs{jobname}\filenm{.bbl}.
+% \changes{v0.87}{2020/05/17}{Reverted to original.}
 % \end{macro}
 %
 %
@@ -32646,6 +35396,24 @@
 
 % \section{Restoring original formatting}
 %
+% \codehtml
+%    \begin{macrocode}
+\begin{warpHTML}
+%    \end{macrocode}
+%
+%
+% \begin{macro}{\LWR at restoreMathJaxformatting}
+% A few macros (ref: \pkg{tcolorbox}) must be treated
+% separately while printing the \HTML\
+% comment for a \brand{MathJax} expression.
+% These are set here, to which other functions may be appended.
+% \changes{v0.88}{2020/06/25}{Added.}
+%    \begin{macrocode}
+\newcommand*{\LWR at restoreMathJaxformatting}{}
+%    \end{macrocode}
+% \end{macro}
+%
+%
 % \begin{macro}{\LWR at restoreorigformatting}
 % Used to temporarily restore
 % the print-mode meaning of a number of formatting, graphics, and symbols-related
@@ -32669,12 +35437,7 @@
 % \changes{v0.40}{2017/09/09}{Improved \protect\LaTeX\ logos inside a \env{lateximage}.}
 % \changes{v0.40}{2017/09/09}{Nullified \cs{InlineClass}, etc. inside a \env{lateximage}.}
 
-% \codehtml
 %    \begin{macrocode}
-\begin{warpHTML}
-%    \end{macrocode}
-
-%    \begin{macrocode}
 \newcommand*{\LWR at restoreorigformatting}{%
     \LWR at traceinfo{LWR at restoreorigformatting}%
 %    \end{macrocode}
@@ -32705,6 +35468,12 @@
     \let\thinspace\LWR at origthinspace% disable HTML short unbreakable space
     \let\negthinspace\LWR at orignegthinspace% disable HTML negative short unbreakable space
     \let\textellipsis\LWR at origtextellipsis%
+%    \end{macrocode}
+% \changes{v0.88}{2020/07/03}{Added \cs{vdots}.}
+%    \begin{macrocode}
+    \let\vdots\LWR at origvdots%
+%    \end{macrocode}
+%    \begin{macrocode}
     \let\textless\LWR at origtextless%
     \let\textgreater\LWR at origtextgreater%
 %    \end{macrocode}
@@ -32718,10 +35487,6 @@
     \LetLtxMacro\normalfont\LWR at orignormalfont%
     \let\sp\LWR at origsp%
     \let\sb\LWR at origsb%
-    \LetLtxMacro\textsuperscript\LWR at origtextsuperscript%
-    \LetLtxMacro\@textsuperscript\LWR at orig@textsuperscript%
-    \LetLtxMacro\textsubscript\LWR at origtextsubscript%
-    \LetLtxMacro\@textsubscript\LWR at orig@textsubscript%
     \LetLtxMacro\underline\LWR at origunderline%
     \let~\LWR at origtilde%
     \let\enskip\LWR at origenskip%
@@ -32758,7 +35523,15 @@
     \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}:
+% \changes{v0.88}{2020/06/25}{Support for \brand{MathJax}.}
+%    \begin{macrocode}
+    \ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
+        {\LWR at restoreMathJaxformatting}%
+        {}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -32768,12 +35541,230 @@
 %    \end{macrocode}
 %
 %
+% \section{Nullifying filename formatting}
 %
+% The following are used to nullify certain macros and
+% environments while converting section names to file names.
+%
+%
+% \codehtml
+%    \begin{macrocode}
+\begin{warpHTML}
+%    \end{macrocode}
+%
+%
+% Also commonly used are \cs{@empty}, \cs{@gobble}, and \cs{@firstofone}.
+%
+%    \begin{macrocode}
+\newcommand*{\LWR at dash}{-}
+%    \end{macrocode}
+%
+%
+% \begin{macro}{\LWR at nullfonts} Removes formatting during filename operations,
+%       file references, and \HTML\ comments.
+%
+% \textred{Use only inside a group.}\watchout
+%
+% The following are \emph{not} made robust,
+%   since they must be expanded to their nullified versions.
+%
+% \changes{v0.34}{2017/08/05}{Improved font control.}
+% \changes{v0.36}{2017/08/15}{Fix: Filenames while using \brand{MathJax}.}
+% \changes{v0.40}{2017/09/21}{Fix: Long arguments for expandable command.}
+% \changes{v0.43}{2017/10/31}{Fix: Nullify dollar inside filesnames.}
+% \changes{v0.48}{2018/02/04}{Fix: \cs{newline} in title.}
+% \changes{v0.65}{2018/12/09}{Added \cs{textsi}.}
+% \changes{v0.84}{2020/04/11}{Factored out redefinitions.}
+% \changes{v0.84}{2020/04/12}{Fix: Accents.}
+%    \begin{macrocode}
+\catcode`\$=\active% redefining $ below
+\catcode`\_=12% redefining \_ below
+\newcommand*{\LWR at nullfonts}{%
+%    \end{macrocode}
+% Various built-in symbols.
+% \changes{v0.67}{2019/02/13}{Add'l symbols.}
+% \changes{v0.84}{2020/04/12}{Add'l symbols.}
+%    \begin{macrocode}
+    \renewcommand*{\$}{-}%
+    \renewcommand*{\%}{-}%
+    \renewcommand*{\_}{-}%
+    \renewcommand*{\}}{-}%
+    \renewcommand*{\{}{-}%
+    \renewcommand*{\&}{-}% used to be 'and'
+    \renewcommand*{\#}{-}%
+    \renewcommand*{\,}{-}%
+    \renewcommand*{~}{-}%
+%
+% accents:
+    \renewcommand*{\`}[1]{##1}%
+    \renewcommand*{\'}[1]{##1}%
+    \renewcommand*{\^}[1]{##1}%
+    \renewcommand*{\~}[1]{##1}%
+    \renewcommand*{\=}[1]{##1}%
+    \renewcommand*{\u}[1]{##1}%
+    \renewcommand*{\.}[1]{##1}%
+    \renewcommand*{\"}[1]{##1}%
+    \renewcommand*{\H}[1]{##1}%
+    \renewcommand*{\v}[1]{##1}%
+    \renewcommand*{\d}[1]{##1}%
+    \renewcommand*{\c}[1]{##1}%
+    \renewcommand*{\b}[1]{##1}%
+    \renewcommand*{\t}[1]{##1}%
+%
+    \let\newline\LWR at dash%
+    \let\textasciicircum\LWR at dash%
+    \let\textasciitilde\LWR at dash%
+    \let\textasteriskcentered\LWR at dash%
+    \let\textbackslash\LWR at dash%
+    \let\textbar\LWR at dash%
+    \let\textbardbl\LWR at dash%
+    \let\textbigcircle\LWR at dash%
+    \let\textbraceleft\LWR at dash%
+    \let\textbraceright\LWR at dash%
+    \let\textbullet\LWR at dash%
+    \let\textcopyright\LWR at dash%
+    \let\textdagger\LWR at dash%
+    \let\textdaggerdbl\LWR at dash%
+    \let\textdollar\LWR at dash%
+    \let\textellipsis\LWR at dash%
+    \let\textemdash\LWR at dash%
+    \let\textendash\LWR at dash%
+    \let\textexclamdown\LWR at dash%
+    \let\textgreater\LWR at dash%
+    \let\textless\LWR at dash%
+    \let\textordfeminine\LWR at dash%
+    \let\textordmasculine\LWR at dash%
+    \let\textparagraph\LWR at dash%
+    \let\textperiodcentered\LWR at dash%
+    \let\textpertenthousand\LWR at dash%
+    \let\textperthousand\LWR at dash%
+    \let\textquestiondown\LWR at dash%
+    \let\textquotedblleft\LWR at dash%
+    \let\textquotedblright\LWR at dash%
+    \let\textquoteleft\LWR at dash%
+    \let\textquoteright\LWR at dash%
+    \let\textregistered\LWR at dash%
+    \let\textsection\LWR at dash%
+    \let\textsterling\LWR at dash%
+    \let\texttrademark\LWR at dash%
+    \let\textunderscore\LWR at dash%
+    \let\textvisiblespace\LWR at dash%
+    \let\copyright\LWR at dash%
+    \let\dag\LWR at dash%
+    \let\ddag\LWR at dash%
+    \let\dots\LWR at dash%
+    \let\P\LWR at dash%
+    \let\pounds\LWR at dash%
+    \let\S\LWR at dash%
+%
+    \renewcommand*{\aa}{a}%
+    \renewcommand*{\AA}{A}%
+    \renewcommand*{\AE}{AE}%
+    \renewcommand*{\ae}{ae}%
+    \renewcommand*{\dh}{d}%
+    \renewcommand*{\DH}{D}%
+    \renewcommand*{\DJ}{D}%
+    \renewcommand*{\dj}{d}%
+    \renewcommand*{\IJ}{IJ}%
+    \renewcommand*{\ij}{ij}%
+    \renewcommand*{\L}{L}%
+    \renewcommand*{\l}{l}%
+    \renewcommand*{\NG}{NG}%
+    \renewcommand*{\ng}{ng}%
+    \renewcommand*{\O}{O}%
+    \renewcommand*{\o}{o}%
+    \renewcommand*{\oe}{oe}%
+    \renewcommand*{\OE}{OE}%
+    \renewcommand*{\ss}{ss}%
+    \renewcommand*{\SS}{SS}%
+    \renewcommand*{\th}{th}%
+    \renewcommand*{\TH}{TH}%
+%
+    \let\guillemotleft\@empty%
+    \let\guilsinglleft\@empty%
+    \let\quotedblbase\@empty%
+    \let\textquotedbl\@empty%
+    \let\guillemotright\@empty%
+    \let\guilsinglright\@empty%
+    \let\quotesinglbase\@empty%
+%    \end{macrocode}
+%    \begin{macrocode}
+    \renewcommand*{\HTMLunicode}[1]{}%
+    \renewcommand*{\HTMLentity}[1]{}%
+%    \end{macrocode}
+%    \begin{macrocode}
+    \renewcommand{\textsuperscript}[1]{##1}%
+    \renewcommand{\textsubscript}[1]{##1}%
+%    \end{macrocode}
+% \changes{v0.50}{2018/02/20}{Fix: \cs{underline} in sectioning file name.}
+%    \begin{macrocode}
+    \renewcommand{\underline}[1]{##1}%
+%    \end{macrocode}
+% \changes{v0.73}{2019/06/24}{Fix: \cs{hspace} in sectioning file name.}
+%    \begin{macrocode}
+    \RenewDocumentCommand{\hspace}{s m}{}%
+%    \end{macrocode}
+%    \begin{macrocode}
+    \RenewDocumentCommand{\LWR at htmlspanclass}{o m +m}{##3}%
+    \DeclareExpandableDocumentCommand{\InlineClass}{D{(}{)}{} o m +m}{##4}%
+%    \end{macrocode}
+% Nullify math macros.
+% \changes{v0.55}{2018/04/24}{Removed extraneous space which appeared in file links.}
+%    \begin{macrocode}
+    \def\(##1\){}%
+    \def\[##1\]{}%
+    \RenewDocumentCommand{\LWR at subsingledollar}{s m m m}{}%
+%    \end{macrocode}
+% Nullify logos:
+% \changes{v0.66}{2019/02/01}{Logos.}
+%    \begin{macrocode}
+    \renewcommand*{\TeX}{TeX}%
+    \renewcommand*{\LaTeX}{LaTeX}%
+    \renewcommand*{\LaTeXe}{LaTeX2e}%
+    \renewcommand*{\LuaTeX}{LuaTeX}%
+    \renewcommand*{\LuaLaTeX}{LuaLaTeX}%
+    \renewcommand*{\XeTeX}{XeTeX}%
+    \renewcommand*{\XeLaTeX}{XeLaTeX}%
+    \renewcommand*{\ConTeXt}{ConTeXt}%
+    \renewcommand*{\BibTeX}{BibTeX}%
+    \renewcommand*{\MakeIndex}{MakeIndex}%
+    \renewcommand*{\AmS}{AmS}%
+    \renewcommand*{\MiKTeX}{MiKTeX}%
+    \renewcommand*{\LyX}{LyX}%
+%    \end{macrocode}
+% Use the simpler form with \cs{texorpdfstring}:
+% \changes{v0.52}{2018/03/31}{Fix: \cs{texorpdfstring} in section names.}
+% \changes{v0.84}{2020/04/12}{Revised \cs{texorpdfstring}.}
+%    \begin{macrocode}
+    \def\texorpdfstring{\expandafter\@secondoftwo}%
+}
+\catcode`\$=3%
+\catcode`\_=8%
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\FilenameNullify} \marg{redefinitions}
+%
+% Adds more nullifying definitions for filename generation.
+%
+% \changes{v0.67}{2019/02/13}{Added.}
+%    \begin{macrocode}
+\newcommand*{\FilenameNullify}[1]{%
+    \appto{\LWR at nullfonts}{#1}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+%    \begin{macrocode}
+\end{warpHTML}
+%    \end{macrocode}
+%
+%
+%
 % \section{Math}
 % \label{sec:math}
 %
-%
-%
 % \subsection{Limitations}
 %
 % See \nameref{sec:limitsmath}, \cref{sec:limitsmath}.
@@ -32897,6 +35888,18 @@
 %    \end{macrocode}
 
 
+% \DescribeBoolean{LWR at insidemathcomment}
+% True while inside an \HTML\ comment which is displaying a math
+% environment.
+% Used to undo the comment for a moment while creating a \cs{label},
+% so that the label's \HTML\ tags will be seen by \HTML.
+% \changes{v0.86}{2020/05/11}{\bool{LWR at insidemathcomment}: Added.}
+%    \begin{macrocode}
+\newbool{LWR at insidemathcomment}
+\boolfalse{LWR at insidemathcomment}
+%    \end{macrocode}
+
+
 % \DescribeBoolean{LWR at xfakebold}
 % True if \pkg{xfakebold} \cs{setBold} is in use.
 % \changes{v0.67}{2019/02/17}{\pkg{xfakebold}: Added support.}
@@ -32985,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
@@ -33090,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}
@@ -33220,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}
@@ -33372,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}
 %
@@ -33391,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}
@@ -33417,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.}
@@ -33443,17 +36446,25 @@
         }%
 %    \end{macrocode}
 % For \brand{MathJax}, print the math between |\(| and |\)|:
+% \changes{v0.89}{2020/08/01}{TT font for \brand{MathJax}.}
 %    \begin{macrocode}
         {%
             \LWR at traceinfo{LWR at subsingledollar: Mathjax}%
             {%
                 \textbackslash(%
-                \LWR at HTMLsanitize{#4}%
+                {%
+%    \end{macrocode}
+% \cs{ifmmode} to avoid error about \cs{ttfamily} inside math mode
+% in the case of nested math, ex. equation with tcolorbox with math.
+%    \begin{macrocode}
+                    \ifmmode\else\LWR at print@ttfamily\fi%
+                    \LWR at HTMLsanitize{#4}%
+                }%
                 \textbackslash)%
             }%
         }% 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}
@@ -33520,16 +36531,17 @@
 %    \end{macrocode}
 % For \brand{MathJax}, print the math between |\[| and |\]|:
 % \changes{v0.42}{2017/10/16}{Improved line spacing with mathjax.}
+% \changes{v0.89}{2020/08/01}{TT font for \brand{MathJax}.}
 %    \begin{macrocode}
 {
 
     \textbackslash[%
-    \LWR at HTMLsanitize{#1}%
+    {\LWR at print@ttfamily\LWR at HTMLsanitize{#1}}%
     \textbackslash]
 
 }% 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.}
@@ -33569,6 +36581,7 @@
 %
 %
 % \begin{macro}{\LWR at singledollar} \marg{alt text} \marg{math expression}
+% \changes{v0.89}{2020/08/01}{TT font for \brand{MathJax}.}
 %    \begin{macrocode}
 \protected\gdef\LWR at singledollar#1${%
 \ifbool{mathjax}{%
@@ -33605,11 +36618,11 @@
 % Redefine to the above dollar macros.
 %    \begin{macrocode}
 \AtBeginDocument{
-\protected\gdef\(#1\){$#1$}
-\protected\gdef\[#1\]{$$#1$$}
+    \protected\gdef\(#1\){$#1$}
+    \protected\gdef\[#1\]{$$#1$$}
 }
 
-\endgroup
+\endgroup% active $
 %    \end{macrocode}
 % \changes{v0.59}{2018/08/23}{Fix with \cs{displaymathnormal}.}
 %    \begin{macrocode}
@@ -33624,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}
@@ -33711,9 +36724,12 @@
 
 
 % Set the default displaymath to the normal version:
+%
+% \changes{v0.89}{2020/08/12}{Removed \cs{let} of \cs{[}, \cs{]}.}
+% ^^A \LetLtxMacro\[\LWR at openbracketnormal% (but not yet defined)
+% ^^A \LetLtxMacro\]\LWR at closebracketnormal%
+%
 %    \begin{macrocode}
-\LetLtxMacro\[\LWR at openbracketnormal%
-\LetLtxMacro\]\LWR at closebracketnormal%
 \LetLtxMacro\displaymath\LWR at displaymathnormal%
 \LetLtxMacro\enddisplaymath\endLWR at displaymathnormal%
 %    \end{macrocode}
@@ -33775,7 +36791,52 @@
 %    \end{macrocode}
 %
 %
+% Determing how to set \brand{MathJax} section and equation numbers.
+% Adjusts for various kinds of \cs{theequation} to determine
+% \cs{theMathJaxsection} and \cs{theMathJaxequation}.
 %
+%    \begin{macrocode}
+\newcommand\LWR at article@theequation{\@arabic\c at equation}
+
+\newcommand\LWR at book@theequation
+  {\ifnum \c at chapter>\z@ \thechapter.\fi \@arabic\c at equation}
+
+
+\newcommand\LWR at chapter@theequation{\thechapter.\arabic{equation}}
+\newcommand\LWR at section@thequation{\thesection.\arabic{equation}}
+\newcommand\LWR at subsection@thequation{\thesubsection.\arabic{equation}}
+
+\AtBeginDocument{
+    % default per article class:
+    \newcommand*{\theMathJaxsubequations}{0}
+    \newcommand*{\theMathJaxsection}{}
+    \newcommand*{\theMathJaxequation}{\arabic{equation}}
+
+    \ifdefstrequal{\theequation}{\LWR at article@theequation}
+    {}{
+    \ifdefstrequal{\theequation}{\LWR at book@theequation}{
+        \renewcommand*{\theMathJaxsection}{\ifnum \c at chapter>\z@ \thechapter.\fi}
+    }{
+    \ifdefstrequal{\theequation}{\LWR at subsection@thequation}{
+        \renewcommand*{\theMathJaxsection}{\thesubsection{}.}
+    }{
+    \ifdefstrequal{\theequation}{\LWR at section@thequation}{
+        \renewcommand*{\theMathJaxsection}{\thesection{}.}
+    }{
+    \ifdefstrequal{\theequation}{\LWR at chapter@theequation}{
+        \renewcommand*{\theMathJaxsection}{\thechapter{}.}
+    }{% unknown format
+        \PackageWarningNoLine{lwarp}
+        {%
+            Unknown equation tag format for \protect\theequation.\MessageBreak
+            Article-style equation numbering will be used%
+        }
+    }}}}}
+}
+%    \end{macrocode}
+%
+%
+%
 % \begin{macro}{\LWR at syncmathjax} Sets the \brand{MathJax} equation format
 % and number for the following equations.
 %
@@ -33784,44 +36845,35 @@
 %    \begin{macrocode}
 \newcommand*{\LWR at syncmathjax}{%
 %    \end{macrocode}
-% If using chapters, place the chapter number in front of the equation.
-% Otherwise, use the simple equation number.
-% \changes{v0.82}{2020/03/09}{Removed \element{par} tags.}
-%    \begin{macrocode}
-    \ifcsdef{thechapter}{
-        \LWR at stoppars%
-        \InlineClass{hidden}{
-            \textbackslash(
-            \textbackslash{}seteqsection \{\thechapter\}
-            \textbackslash)
-        }
-        \LWR at startpars%
-    }
-    {}% not using chapters
-%    \end{macrocode}
-% \brand{MathJax} doesn't allow setting the equation number to 1:
-%    \begin{macrocode}
-    \ifthenelse{\cnttest{\value{equation}}>0}
-    {
-%    \end{macrocode}
-% Tell \brand{MathJax} that the next set of equations begins with the current \LaTeX{} equation
-% number, plus one.
-%    \begin{macrocode}
-        \setcounter{LWR at nextequation}{\value{equation}}
-        \addtocounter{LWR at nextequation}{1}
-%    \end{macrocode}
+%
+% Tell \brand{MathJax} that the next equation number is
+% the current \LaTeX{} equation number.
+%
+% Before each equation, \pkg{lwarp} inserts into the \HTML\ code:
+% \begin{sourceverb}
+% \seteqnumber{subequations?}{section}{number}
+% \end{sourceverb}
+% \begin{description}
+% \item [|subequations?|] is |0| usually, |1| if inside \pkg{amsmath} \env{subequations}.
+% \item [|section|] is a string printed as-is, or empty.
+% \item [|number|] is auto-incremented by \brand{MathJax} between equations.
+% \end{description}
+%
 % Place the \brand{MathJax} command inside ``\cs{(}'' and ``\cs{)}'' characters,
 % to be printed to \HTML, not interpreted by \LaTeX.
 % \changes{v0.82}{2020/03/09}{Removed \element{par} tags.}
+% \changes{v0.86}{2020/05/08}{Improved \brand{MathJax} equation numbers.}
 %    \begin{macrocode}
         \LWR at stoppars%
         \InlineClass{hidden}{
-            \textbackslash(
-            \textbackslash{}seteqnumber \{\arabic{LWR at nextequation}\}
-            \textbackslash)
+            \textbackslash(%
+            \textbackslash{}seteqnumber%
+            \{\theMathJaxsubequations\}%
+            \{\theMathJaxsection\}%
+            \{\theMathJaxequation\}%
+            \textbackslash)%
         }
         \LWR at startpars%
-    }{}% not eq > 0
 }
 %    \end{macrocode}
 % \end{macro}
@@ -33849,6 +36901,7 @@
 % restore various commands to their \LaTeX\ meanings.
 %    \begin{macrocode}
     \LWR at restoreorigformatting
+    \booltrue{LWR at insidemathcomment}
 %    \end{macrocode}
 % ^^A When a label is encountered, the \HTML\ comment is closed,
 % ^^A the label is generated in an \HTML-output context,
@@ -33868,6 +36921,7 @@
 % Close the \HTML\ comment and resume \HTML\ paragraph handling:
 %    \begin{macrocode}
     \LWR at htmlclosecomment
+    \boolfalse{LWR at insidemathcomment}
     \LWR at startpars
 }
 %    \end{macrocode}
@@ -33885,15 +36939,20 @@
 % Enclose the \brand{MathJax} environment inside printed ``\cs{(}'' and ``\cs{)}'' characters.
 %    \begin{macrocode}
     \LWR at origtilde\LWR at orignewline
-    \textbackslash{}begin\{#1\}
 %    \end{macrocode}
-% Print the contents, sanitizing for \HTML\ special characters.
+% Print the environment name and contents, sanitizing for \HTML\ special characters.
+% \changes{v0.89}{2020/08/01}{TT font for \brand{MathJax}.}
 %    \begin{macrocode}
-    \LWR at HTMLsanitizeexpand{\detokenize\expandafter{#2}}
+    {%
+        \LWR at print@ttfamily%
+        \textbackslash{}begin\{#1\}
+        \LWR at orignewline%
+        \LWR at HTMLsanitizeexpand{\detokenize\expandafter{#2}}%
+        \LWR at orignewline%
+        \textbackslash{}end\{#1\}
+    }%
 %    \end{macrocode}
-% Close the \brand{MathJax} environment:
 %    \begin{macrocode}
-    \textbackslash{}end\{#1\}
     \LWR at orignewline
 }
 %    \end{macrocode}
@@ -33906,10 +36965,10 @@
 % after redefined by \pkg{amsmath}, if loaded.
 %    \begin{macrocode}
 \AtBeginDocument{
-\let\LWR at origequation\equation
-\let\LWR at origendequation\endequation
-\csletcs{LWR at origequation*}{equation*}
-\csletcs{LWR at origendequation*}{endequation*}
+    \let\LWR at origequation\equation
+    \let\LWR at origendequation\endequation
+    \csletcs{LWR at origequation*}{equation*}
+    \csletcs{LWR at origendequation*}{endequation*}
 }
 %    \end{macrocode}
 %
@@ -33953,10 +37012,10 @@
         \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
-% commmands, and the contents of the environment's \cs{BODY}.
+% commands, and the contents of the environment's \cs{BODY}.
 %    \begin{macrocode}
     {% not mathjax
 %    \end{macrocode}
@@ -34085,10 +37144,10 @@
 % Remove existing \env{equation} environment:
 %    \begin{macrocode}
 \AtBeginDocument{
-\let\equation\relax
-\let\endequation\relax
-\csletcs{equation*}{relax}
-\csletcs{endequation*}{relax}
+    \let\equation\relax
+    \let\endequation\relax
+    \csletcs{equation*}{relax}
+    \csletcs{endequation*}{relax}
 }
 %    \end{macrocode}
 
@@ -34100,14 +37159,12 @@
 % macro called \cs{BODY}.
 %    \begin{macrocode}
 \AtBeginDocument{
+    \NewEnviron{equation}%
+        {\LWR at doequation{\BODY}{equation}}%
+        [\LWR at doendequation{equation}]
 
-\NewEnviron{equation}%
-    {\LWR at doequation{\BODY}{equation}}%
-    [\LWR at doendequation{equation}]
-
-\LetLtxMacro\LWR at equationnormal\equation
-\LetLtxMacro\endLWR at equationnormal\endequation
-
+    \LetLtxMacro\LWR at equationnormal\equation
+    \LetLtxMacro\endLWR at equationnormal\endequation
 }% AtBeginDocument
 %    \end{macrocode}
 % \end{environment}
@@ -34116,14 +37173,12 @@
 % \begin{environment}{equation*}
 %    \begin{macrocode}
 \AtBeginDocument{
+    \NewEnviron{equation*}%
+        {\LWR at doequation{\BODY}{equation*}}%
+        [\LWR at doendequation{equation*}]
 
-\NewEnviron{equation*}%
-    {\LWR at doequation{\BODY}{equation*}}%
-    [\LWR at doendequation{equation*}]
-
-\csletcs{LWR at equationnormalstar}{equation*}
-\csletcs{LWR at endequationnormalstar}{endequation*}
-
+    \csletcs{LWR at equationnormalstar}{equation*}
+    \csletcs{LWR at endequationnormalstar}{endequation*}
 }% AtBeginDocument
 %    \end{macrocode}
 % \end{environment}
@@ -34134,10 +37189,10 @@
 % some \tikz\ expressions.
 %    \begin{macrocode}
 \AtBeginDocument{
-\LetLtxMacro\LWR at equationless\equation
-\LetLtxMacro\endLWR at equationless\endequation
-\csletcs{LWR at equationlessstar}{equation*}
-\csletcs{LWR at endequationlessstar}{endequation*}
+    \LetLtxMacro\LWR at equationless\equation
+    \LetLtxMacro\endLWR at equationless\endequation
+    \csletcs{LWR at equationlessstar}{equation*}
+    \csletcs{LWR at endequationlessstar}{endequation*}
 }
 %    \end{macrocode}
 
@@ -34167,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.}
@@ -34231,55 +37286,6 @@
 %    \end{macrocode}
 
 
-% \begin{macro}{\LWR at htmlmathlabel} \marg{label}
-% \gindex{label>math environment}
-%
-% \pkg{lwarp} points \cs{ltx at label} here.
-% This is used by \cs{label} when inside a
-% \LaTeX\ AMS math environment's math display environment.
-%
-% \cs{LWR at origltx@label} points to the \LaTeX\ original,
-% modified by \pkg{lwarp}, then by \pkg{amsmath},
-% then by \pkg{cleveref}.
-%    \begin{macrocode}
-\newcommand*{\LWR at htmlmathlabel}[1]{%
-    \LWR at traceinfo{LWR at htmlmathlabelb #1}%
-%    \end{macrocode}
-% If |mathjax| or |FormatWP|, print the \LaTeX\ expression:
-% \changes{v0.42}{2017/10/26}{If \progcode{FormatWP} print LaTeX expression.}
-%    \begin{macrocode}
-    \ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
-    {%
-%    \end{macrocode}
-% The combined \LaTeX\ \& \HTML\ label is printed in a \cs{text} field:
-%    \begin{macrocode}
-        \text{%
-%    \end{macrocode}
-% Shift the label over to the right side of the environment to avoid
-% over-printing the math:
-%    \begin{macrocode}
-        \ifbool{LWR at amsmultline}{}{\hspace*{\totwidth@}}%
-%    \end{macrocode}
-% Temporarily end the \HTML\ comment,
-% insert the \LaTeX{} \& \HTML\ label, then
-% resume the \HTML\ comment.
-% \cs{@firstofone} is required to remove extra braces
-%	introduced by the \pkg{amsmath} package.)
-%    \begin{macrocode}
-        \LWR at htmlclosecomment%
-        \LWR at origltx@label{#1}%
-        \LWR at htmlopencomment%
-        }% text
-    }% mathjax
-    {%
-        \LWR at origltx@label{#1}%
-    }%
-}
-%    \end{macrocode}
-% \end{macro}
-
-
-
 % \begin{macro}{\LWR at beginhideamsmath}
 % Starts hiding \LaTeX\ math inside an \HTML\ comment.
 %    \begin{macrocode}
@@ -34290,6 +37296,7 @@
 
     \begingroup
     \LWR at restoreorigformatting
+    \booltrue{LWR at insidemathcomment}
 }
 %    \end{macrocode}
 % \end{macro}
@@ -34301,6 +37308,7 @@
     \endgroup
 
     \LWR at htmlclosecomment
+    \boolfalse{LWR at insidemathcomment}
     \LWR at orignewline
     \LWR at startpars
 }
@@ -34317,8 +37325,8 @@
 % \changes{v0.34}{2017/07/29}{Fix: Added the \env{eqnarray} environments.}
 %
 % The \pkg{amsmath} environments already collect their contents
-% in \cs{@envbody} for further processing.  \env{eqnarray} is not an \AmS\ package,
-% and thus requires special handling.
+% in \cs{@envbody} for further processing.
+% \env{eqnarray} is not an \AmS\ package, and thus requires special handling.
 %
 % For \SVG\ math: Each envrionment is encapsulated inside a \env{lateximage} environment,
 % along with a special optional argument of \cs{LWR at amsmathbody}
@@ -34403,11 +37411,12 @@
 % \changes{v0.42}{2017/10/12}{Fix: Numbering and naming AMS math environments.}
 % \changes{v0.50}{2018/03/02}{Improved \SVG\ math display.}
 % \changes{v0.51}{2018/03/11}{Fix: \cs{addcontentsline} inside \SVG\ math.  Provides an autoid anchor.}
+% \changes{v0.89}{2020/08/02}{\cs{textendash} for number range.}
 %    \begin{macrocode}
             \begin{BlockClass}{displaymathnumbered}%
             \LWR at newautoidanchor%
             \booltrue{LWR at indisplaymathimage}%
-            \begin{lateximage}[(\LWR at startingequationtag--\LWR at equationtag)%
+            \begin{lateximage}[(\LWR at startingequationtag\textendash\LWR at equationtag)%
                 \LWR at addmathjax{eqnarray}{\BODY}]*%
 %    \end{macrocode}
 % Support for \pkg{xfakebold}:
@@ -34728,6 +37737,7 @@
 %   prefixed by the equation numbers.
 %
 % \changes{v0.42}{2017/10/12}{Fix: Numbering and naming AMS math environments.}
+% \changes{v0.89}{2020/08/02}{\cs{textendash} for number range.}
 %
 %    \begin{macrocode}
 \newcommand*{\LWR at amsmathbodynumbered}[1]
@@ -34734,7 +37744,7 @@
 {%
     \ifnumcomp{\value{LWR at startingequation}}{=}{\value{equation}}%
         {(\LWR at equationtag)}%
-        {(\LWR at startingequationtag--\LWR at equationtag)} % extra space
+        {(\LWR at startingequationtag\textendash\LWR at equationtag)} % extra space
     \LWR at amsmathbody{#1} % extra space
 }
 %    \end{macrocode}
@@ -34904,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:
@@ -34970,7 +37983,7 @@
 % Start the new \PDF\ page:
 %    \begin{macrocode}
     \LWR at traceinfo{lateximage: about to create a new page}%
-    \LWR at orignewpage%
+    \LWR at maybe@orignewpage%
 %    \end{macrocode}
 % If the current page is larger,
 % typeset the image in a ``standard'' width page and font size:
@@ -35013,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
@@ -35020,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}
@@ -35032,6 +38046,7 @@
         \csletcs{endequation*}{LWR at origendequation*}%
     }% not in display math
 %    \end{macrocode}
+%
 % For \pkg{chemformula}:
 %    \begin{macrocode}
     \LetLtxMacro\LWR at newsingledollar$%
@@ -35043,7 +38058,8 @@
 }% end of \begin{lateximage}
 %    \end{macrocode}
 %
-% When the environment closes:
+%
+% When the \env{lateximage} environment closes:
 % \margintag{\cs{endlateximage}}
 %
 %    \begin{macrocode}
@@ -35050,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}
@@ -35063,17 +38081,20 @@
     \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}
 \LWR at traceinfo{lateximage: ending outer-most lateximage}%
     \endLWR at print@minipage%
-    \LWR at orignewpage%
+    \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}%
@@ -35080,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.}
@@ -35093,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}%
@@ -35104,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}
@@ -35128,7 +38154,7 @@
 %    \end{macrocode}
 
 % \begin{environment}{lateximage} * \oarg{\element{alt} tag} *
-%   \oarg{add'l hashing} \oarg{\CSS\ style}
+%                                   \oarg{add'l hashing} \oarg{\CSS\ style}
 %
 % \env{varwidth} is used to create a box of the natural width of its contents.
 %
@@ -35159,8 +38185,9 @@
 % Replace \env{center} functionality with \CSS\ tags:
 % \changes{v0.42}{2017/10/26}{If \progcode{FormatWP} use explicit \attribute{text-align}.}
 % \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.84}{2020/04/14}{Added print mode.}
 %    \begin{macrocode}
-\renewenvironment*{center}
+\newenvironment*{LWR at HTML@center}
 {
     \LWR at forcenewpage
     \ifbool{FormatWP}
@@ -35168,6 +38195,8 @@
         {\BlockClass{center}}
 }
 {\endBlockClass}
+
+\LWR at formattedenv{center}
 %    \end{macrocode}
 % \end{environment}
 
@@ -35174,8 +38203,9 @@
 
 % \begin{environment}{flushright}
 % \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.84}{2020/04/14}{Added print mode.}
 %    \begin{macrocode}
-\renewenvironment*{flushright}
+\newenvironment*{LWR at HTML@flushright}
 {
     \LWR at forcenewpage
     \ifbool{FormatWP}
@@ -35183,13 +38213,16 @@
         {\BlockClass{flushright}}
 }
 {\endBlockClass}
+
+\LWR at formattedenv{flushright}
 %    \end{macrocode}
 % \end{environment}
 
 % \begin{environment}{flushleft}
 % \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.84}{2020/04/14}{Added print mode.}
 %    \begin{macrocode}
-\renewenvironment*{flushleft}
+\newenvironment*{LWR at HTML@flushleft}
 {
     \LWR at forcenewpage
     \ifbool{FormatWP}
@@ -35197,6 +38230,8 @@
         {\BlockClass{flushleft}}
 }
 {\endBlockClass}
+
+\LWR at formattedenv{flushleft}
 %    \end{macrocode}
 % \end{environment}
 
@@ -35328,11 +38363,33 @@
 \LWR at PreloadedPackage{graphicx}
 %    \end{macrocode}
 
+% \pkg{scalefnt} may have been preloaded by \pkg{babel}
+%    \begin{macrocode}
+\LWR at PreloadedPackage{scalefnt}
+%    \end{macrocode}
+
 % \pkg{fontaxes} must be preloaded so that \pkg{lwarp} may patch it for \HTML.
 %    \begin{macrocode}
 \LWR at PreloadedPackage{fontaxes}
 %    \end{macrocode}
 
+% Various font packages which may be loaded before \pkg{lwarp}:
+%    \begin{macrocode}
+\LWR at PreloadedPackage{cmbright}
+\LWR at PreloadedPackage{fourier}
+\LWR at PreloadedPackage{kpfonts}
+\LWR at PreloadedPackage{kpfonts-otf}
+\LWR at PreloadedPackage{libertinust1math}
+\LWR at PreloadedPackage{pxfonts}
+\LWR at PreloadedPackage{txfonts}
+\LWR at PreloadedPackage{txgreeks}
+\LWR at PreloadedPackage{newpxmath}
+\LWR at PreloadedPackage{newtxmath}
+\LWR at PreloadedPackage{newtxsf}
+\LWR at PreloadedPackage{mathalpha}
+\LWR at PreloadedPackage{unicode-math}
+%    \end{macrocode}
+
 % \pkg{nfssext-cfr} may be preloaded by \pkg{cfm-lm} or related font packages.
 %    \begin{macrocode}
 \LWR at PreloadedPackage{nfssext-cfr}
@@ -35403,7 +38460,7 @@
 \newrobustcmd{\LWR at siunitx@textdegree}{\HTMLentity{deg}}
 \newrobustcmd{\LWR at siunitx@textprime}{\HTMLunicode{2032}}
 \newrobustcmd{\LWR at siunitx@textdblprime}{\HTMLunicode{2033}}
-\newrobustcmd{\LWR at siunitx@textplanckbar}{\text{\textit{\HTMLunicode{0127}}}}
+\newrobustcmd{\LWR at siunitx@textplanckbar}{\text{\textit{\HTMLunicode{210F}}}}
 
 \appto\LWR at restoreorigformatting{%
 \renewrobustcmd{\LWR at siunitx@textcelsius}{\text{\ensuremath{^\circ}C}}%
@@ -35726,16 +38783,9 @@
 
 
 
-
 % \section{\pkg{cleveref}}
-% \label{sec:cleveref}
-
-% \DescribePackage{cleveref}
-% \pkg{cleveref} package is used as-is with minor patches.
 %
-% \limitscpageref
-%
-% \pkg{cleveref} and the following associated macro patches are
+% \pkg{cleveref} and \pkg{lwarp-cleveref} with its associated macro patches are
 % \margintag{loading order}
 % automatically preloaded at the end of the preamble via \cs{AtEndPreamble}
 % and \cs{AfterEndPreamble}.
@@ -35746,182 +38796,26 @@
 % \cs{crefname}, then \pkg{cleveref} may be loaded in the user's preamble near the
 % end, and \pkg{lwarp}'s additional loading of \pkg{cleveref} will have no effect.
 %
-% \Cref{tab:crossrefdata} on page \pageref{tab:crossrefdata}
-% shows the data structure of the label/reference system
-% as revised by \pkg{lwarp} and \pkg{cleveref}.
-
-
-% A few patches allow \pkg{cleveref} to work as-is:
-
-% \codehtml
-%    \begin{macrocode}
-\begin{warpHTML}
-%    \end{macrocode}
+% \cs{AtEndPreable} forces \pkg{cleveref} to be loaded last,
+% if it has not yet been loaded by the user.
 %
-% \cs{AtEndPreable} forces \pkg{cleveref} to be loaded last:
-%
 % \changes{v0.19}{2016/06/06}{cleveref: Loaded \cs{AtEndPreamble}.}
 % \changes{v0.33}{2017/06/18}{cleveref: Fix: Loaded \cs{AtEndPreamble}.}
 %
+% \codehtml
 %    \begin{macrocode}
+\begin{warpHTML}
+
 \AtEndPreamble{
     \RequirePackage{cleveref}
 }
-%    \end{macrocode}
-%
-%
-% \changes{v0.20}{2017/01/05}{\pkg{cleveref} and referencing patches:
-%   Applied \cs{AfterEndPreamble}.}
-%
-% \begin{flushleft}
-% The following patches are applied after \pkg{cleveref} has loaded,
-% and after \cs{AtBeginDocument}.  Print-mode versions are not required
-% since they all come down to \cs{ref} eventually, and \cs{ref} has a print-mode
-% version.
-% \end{flushleft}
-%    \begin{macrocode}
-\AfterEndPreamble{
-\LWR at traceinfo{Patching cleveref.}
-%    \end{macrocode}
 
-% \begin{macro}{\@@@setcref} \marg{kindofref} \marg{label}
-%
-% \cs{@templabel} becomes the section number.
-%
-% \changes{v0.48}{2018/02/10}{Fix for new v0.21 of \pkg{cleveref}.}
-%    \begin{macrocode}
-\def\LWR at orig@@@setcref#1#2{\cref at getlabel{#2}{\@templabel}#1{\@templabel}{}{}}%
-
-\ifdefequal{\@@setcref}{\LWR at orig@@@setcref}{% before v0.21
-    \renewcommand*{\@@setcref}[2]{#1{\ref{#2}}{}{}}
-}{
-    \ifdefequal{\@@@setcref}{\LWR at orig@@@setcref}{% as of v0.21
-        \renewcommand*{\@@@setcref}[2]{#1{\ref{#2}}{}{}}
-    }{
-        \PackageWarning{lwarp-cleveref}{
-            Unknown version of cleveref.
-            \protect\cref\space will fail.
-        }%
-    }
-}
+\end{warpHTML}
 %    \end{macrocode}
-% \end{macro}
-
-%\begin{macro}{\@@@setcrefrange} \marg{text} \marg{label} \marg{label}
-% \changes{v0.48}{2018/02/10}{Fix for new v0.21 of \pkg{cleveref}.}
-%    \begin{macrocode}
-\def\LWR at orig@@@setcrefrange#1#2#3{%
-  \cref at getlabel{#2}{\@labela}%
-  \cref at getlabel{#3}{\@labelb}%
-  #1{\@labela}{\@labelb}{}{}{}{}}%
-
-\ifdefequal{\@@setcrefrange}{\LWR at orig@@@setcrefrange}{
-    \renewcommand{\@@setcrefrange}[3]{%
-        #1{\ref{#2}}{\ref{#3}}{}{}{}{}%
-    }
-}{
-    \ifdefequal{\@@@setcrefrange}{\LWR at orig@@@setcrefrange}{
-        \renewcommand{\@@@setcrefrange}[3]{%
-            #1{\ref{#2}}{\ref{#3}}{}{}{}{}%
-        }
-    }{
-        \PackageWarning{lwarp-cleveref}{
-            Unknown version of cleveref.
-            \protect\crefrange\space will fail.
-        }
-    }
-}
-
-%    \end{macrocode}
-% \end{macro}
-
-% ^^A  orig:
-% ^^A  \def\@@setcpageref#1#2{%
-% ^^A    \cref at getpageref{#2}{\@temppage}#1{\@temppage}{}{}}
-
-
-% \label{sec:cpagereffor}
-% \begin{macro}{\cpagerefFor} Redefinable word between ``page(s)'' and the page numbers.
 %
-% \changes{v0.20}{2017/01/03}{User-redefinable word for page references.}
 %
-%    \begin{macrocode}
-\newcommand*{\cpagerefFor}{for}
-%    \end{macrocode}
-% \end{macro}
-
-% \begin{macro}{\@@@setcpageref} \marg{typeofref} \marg{label},
-% where typeofref is ``page'' or ``pages''
+% \section{Preexisting label and reference definitions}
 %
-% \changes{v0.48}{2018/02/10}{Fix for new v0.21 of \pkg{cleveref}.}
-%    \begin{macrocode}
-\def\LWR at orig@@setcpageref#1#2{% before v0.21
-  \cref at getpageref{#2}{\@temppage}#1{\@temppage}{}{}}%
-
-\def\LWR at orig@@@setcpageref#1#2{% as of v0.21
-  \cpageref at getlabel{#2}{\@temppage}#1{\@temppage}{}{}}%
-
-\ifdefequal{\@@setcpageref}{\LWR at orig@@setcpageref}{
-    \renewcommand*{\@@setcpageref}[2]{%
-        #1{\cpagerefFor\ \cref{#2}}{}{}%
-    }
-}{
-    \ifdefequal{\@@@setcpageref}{\LWR at orig@@@setcpageref}{
-        \renewcommand*{\@@@setcpageref}[2]{%
-            #1{\cpagerefFor\ \cref{#2}}{}{}%
-        }
-    }
-    {
-        \PackageWarning{lwarp-cleveref}{
-            Unknown version of cleveref.
-            \protect\cpageref\space will fail.
-        }
-    }
-}
-%    \end{macrocode}
-% \end{macro}
-
-
-% ^^A  orig:
-% ^^A  \def\@@setcpagerefrange#1#2#3{%
-% ^^A    \cref at getpageref{#2}{\@pagea}%
-% ^^A    \cref at getpageref{#3}{\@pageb}%
-% ^^A    #1{\@pagea}{\@pageb}{}{}{}{}}
-
-%    \begin{macrocode}
-\def\LWR at orig@@setcpagerefrange#1#2#3{% before v0.21
-  \cref at getpageref{#2}{\@pagea}%
-  \cref at getpageref{#3}{\@pageb}%
-  #1{\@pagea}{\@pageb}{}{}{}{}}%
-
-\def\LWR at orig@@@setcpagerefrange#1#2#3{% as of v0.21
-  \cpageref at getlabel{#2}{\@pagea}%
-  \cpageref at getlabel{#3}{\@pageb}%
-  #1{\@pagea}{\@pageb}{}{}{}{}}%
-
-\ifdefequal{\@@setcpagerefrange}{\LWR at orig@@setcpagerefrange}{
-    \renewcommand*{\@@setcpagerefrange}[3]{%
-        #1{\cpagerefFor\ \cref{#2}}{\cref{#3}}{}{}{}{}%
-    }
-}{
-    \ifdefequal{\@@@setcpagerefrange}{\LWR at orig@@@setcpagerefrange}{
-        \renewcommand*{\@@@setcpagerefrange}[3]{%
-            #1{\cpagerefFor\ \cref{#2}}{\cref{#3}}{}{}{}{}%
-        }
-    }
-    {
-        \PackageWarning{lwarp-cleveref}{
-            Unknown version of cleveref.
-            \protect\cpagerefrange\space will fail.
-        }
-    }
-}
-
-}% AfterEndPreamble
-%    \end{macrocode}
-
-
-%
 % Remember and patch some label-related defintions.
 % These will be further encased and patched by other packages later.
 %
@@ -35928,12 +38822,16 @@
 % \cs{label} and \cs{pageref} do NOT change their behavior according to
 % print or \HTML\ output, and thus do not use the \cs{LWR at formatted} system.
 %
+% \codehtml
 %    \begin{macrocode}
-\LetLtxMacro\LWR at orig@label\label
-\RenewDocumentCommand{\label}{}{\LWR at new@label}
+\begin{warpHTML}
 
+\LetLtxMacro\LWR at orig@label\label% includes memoir, before cleveref
+\LetLtxMacro\label\LWR at new@label
+
 \LetLtxMacro\LWR at orig@pageref\pageref
-\RenewDocumentCommand{\pageref}{}{\LWR at new@pageref}
+\LetLtxMacro\pageref\LWR at new@pageref
+
 \end{warpHTML}
 %    \end{macrocode}
 
@@ -36026,7 +38924,7 @@
 %    \begin{macrocode}
 \NewDocumentEnvironment{LWR at setvirtualpage}{s O{1}}{%
     \ifnumequal{\value{LWR at virtualpagedepth}}{0}{%
-        \IfBooleanT{#1}{\LWR at orignewpage}%
+        \IfBooleanT{#1}{\LWR at maybe@orignewpage}%
         \setlength{\linewidth}{6in/#2}%
         \setlength{\textwidth}{6in}%
         \setlength{\textheight}{9in}%
@@ -36180,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%
 }%
 
 }{}%
@@ -36194,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} ; }{}%
@@ -36223,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.
@@ -36721,6 +39624,7 @@
 
 
 
+
 % \section{Direct formatting}
 % \label{sec:directformatting}
 %
@@ -36730,6 +39634,27 @@
 % see \cref{sec:highlevelclasses}.
 
 
+% \codeall
+%    \begin{macrocode}
+\begin{warpall}
+%    \end{macrocode}
+
+% \DescribeBoolean{FixSmallCaps}
+% User may set \bool{FixSmallCaps} to \optn{true} if small caps
+% are being incorrectly rendered as all caps.
+%
+% \changes{v0.87}{2020/05/12}{Added \bool{FixSmallCaps} to remove \cs{LWR at print@scshape}
+%    for \pkg{erewhon}, et. al.}
+%    \begin{macrocode}
+\newbool{FixSmallCaps}
+\boolfalse{FixSmallCaps}
+%    \end{macrocode}
+
+%    \begin{macrocode}
+\end{warpall}
+%    \end{macrocode}
+
+
 % \codehtml
 %    \begin{macrocode}
 \begin{warpHTML}
@@ -36753,8 +39678,6 @@
 }
 
 \LWR at formatted{emph}
-
-\newcommand{\LWR at null@emph}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36769,8 +39692,6 @@
 }
 
 \LWR at formatted{textmd}
-
-\newcommand{\LWR at null@textmd}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36785,8 +39706,6 @@
 }
 
 \LWR at formatted{textbf}
-
-\newcommand{\LWR at null@textbf}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36802,8 +39721,6 @@
 }
 
 \LWR at formatted{texteb}
-
-\newcommand{\LWR at null@texteb}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36819,8 +39736,6 @@
 }
 
 \LWR at formatted{textlg}
-
-\newcommand{\LWR at null@textlg}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36835,8 +39750,6 @@
 }
 
 \LWR at formatted{textrm}
-
-\newcommand{\LWR at null@textrm}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36851,8 +39764,6 @@
 }
 
 \LWR at formatted{textsf}
-
-\newcommand{\LWR at null@textsf}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36866,8 +39777,6 @@
 }
 
 \LWR at formatted{texttt}
-
-\newcommand{\LWR at null@texttt}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36883,8 +39792,6 @@
 }
 
 \LWR at formatted{textup}
-
-\newcommand{\LWR at null@textup}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36898,8 +39805,6 @@
 }
 
 \LWR at formatted{textit}
-
-\newcommand{\LWR at null@textit}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36914,8 +39819,6 @@
 }
 
 \LWR at formatted{textsc}
-
-\newcommand{\LWR at null@textsc}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36931,8 +39834,6 @@
 }
 
 \LWR at formatted{textulc}
-
-\newcommand{\LWR at null@textulc}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36957,8 +39858,6 @@
 }
 
 \LWR at formatted{textsi}
-
-\newcommand{\LWR at null@textsi}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36972,8 +39871,15 @@
 }
 
 \LWR at formatted{textsl}
+%    \end{macrocode}
+% \end{macro}
 
-\newcommand{\LWR at null@textsl}[1]{#1}
+
+% \begin{macro}{\textssc} \marg{text}
+% \changes{v0.84}{2020/04/13}{Moved to core.}
+%    \begin{macrocode}
+\newrobustcmd{\LWR at HTML@textssc}[1]{\textsc{#1}}
+\LWR at formatted{textssc}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36983,244 +39889,35 @@
 \DeclareRobustCommand{\LWR at HTML@textnormal}[1]{\textmd{\textrm{\textup{#1}}}}
 
 \LWR at formatted{textnormal}
-
-\newcommand{\LWR at null@textnormal}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
 
-
-
 %    \begin{macrocode}
-\newcommand{\LWR at null@rmfamily}{}
-\newcommand{\LWR at null@sffamily}{}
-\newcommand{\LWR at null@ttfamily}{}
-\newcommand{\LWR at null@bfseries}{}
-\newcommand{\LWR at null@ebweight}{}
-\newcommand{\LWR at null@lgweight}{}
-\newcommand{\LWR at null@mdseries}{}
-\newcommand{\LWR at null@upshape}{}
-\newcommand{\LWR at null@slshape}{}
-\newcommand{\LWR at null@scshape}{}
-\newcommand{\LWR at null@itshape}{}
-\newcommand{\LWR at null@normalfont}{}
-%    \end{macrocode}
-%
-% \changes{v0.62}{2018/11/17}{Fix for \cs{em}.}
-%    \begin{macrocode}
-\newcommand{\LWR at null@em}{}
-%    \end{macrocode}
-
-
-% \begin{macro}{\LWR at nullfonts} Removes formatting during filename operations,
-%       file references, and \HTML\ comments.
-%
-% \textred{Use only inside a group.}\watchout
-%
-% The following are \emph{not} made robust,
-%   since they must be expanded to their nullified versions.
-%
-% \changes{v0.34}{2017/08/05}{Improved font control.}
-% \changes{v0.36}{2017/08/15}{Fix: Filenames while using \brand{MathJax}.}
-% \changes{v0.40}{2017/09/21}{Fix: Long arguments for expandable command.}
-% \changes{v0.43}{2017/10/31}{Fix: Nullify dollar inside filesnames.}
-% \changes{v0.48}{2018/02/04}{Fix: \cs{newline} in title.}
-% \changes{v0.65}{2018/12/09}{Added \cs{textsi}.}
-%    \begin{macrocode}
-\catcode`\$=\active% redefining $ below
-\catcode`\_=12% redefining \_ below
-\newcommand*{\LWR at nullfonts}{%
-\LetLtxMacro\emph\LWR at null@emph%
-\LetLtxMacro\textmd\LWR at null@textmd%
-\LetLtxMacro\textbf\LWR at null@textbf%
-\LetLtxMacro\textrm\LWR at null@textrm%
-\LetLtxMacro\textsf\LWR at null@textsf%
-\LetLtxMacro\texttt\LWR at null@texttt%
-\LetLtxMacro\textup\LWR at null@textup%
-\LetLtxMacro\textit\LWR at null@textit%
-\LetLtxMacro\textsc\LWR at null@textsc%
-\LetLtxMacro\textulc\LWR at null@textulc%
-\LetLtxMacro\textsi\LWR at null@textsi%
-\LetLtxMacro\textsl\LWR at null@textsl%
-\LetLtxMacro\textnormal\LWR at null@textnormal%
-\LetLtxMacro\rmfamily\LWR at null@rmfamily%
-\LetLtxMacro\sffamily\LWR at null@sffamily%
-\LetLtxMacro\ttfamily\LWR at null@ttfamily%
-\LetLtxMacro\bfseries\LWR at null@bfseries%
-\LetLtxMacro\mdseries\LWR at null@mdseries%
-\LetLtxMacro\upshape\LWR at null@upshape%
-\LetLtxMacro\slshape\LWR at null@slshape%
-\LetLtxMacro\scshape\LWR at null@scshape%
-\LetLtxMacro\ulcshape\LWR at null@ulcshape%
-%    \end{macrocode}
-% \changes{v0.65}{2018/12/10}{Added \cs{sishape}.}
-%    \begin{macrocode}
-\LetLtxMacro\sishape\LWR at null@sishape%
-%    \end{macrocode}
-%    \begin{macrocode}
-\LetLtxMacro\itshape\LWR at null@itshape%
-\LetLtxMacro\normalfont\LWR at null@normalfont%
-\LetLtxMacro\em\LWR at null@em%
-%    \end{macrocode}
-% Various built-in symbols.
-% \changes{v0.67}{2019/02/13}{Add'l symbols.}
-%    \begin{macrocode}
-\renewcommand*{\$}{-}%
-\renewcommand*{\%}{-}%
-\renewcommand*{\_}{-}%
-\renewcommand*{\}}{-}%
-\renewcommand*{\{}{-}%
-\renewcommand*{\&}{and}%
-\renewcommand*{\#}{-}%
-\renewcommand*{\,}{-}%
-\renewcommand*{~}{-}%
-\renewcommand*{\^}[1]{-}%
-\renewcommand*{\~}[1]{-}%
-\renewcommand*{\newline}{-}%
-\renewcommand*{\textasciicircum}{-}%
-\renewcommand*{\textasciitilde}{-}%
-\renewcommand*{\textasteriskcentered}{-}%
-\renewcommand*{\textbackslash}{-}%
-\renewcommand*{\textbar}{-}%
-\renewcommand*{\textbardbl}{-}%
-\renewcommand*{\textbigcircle}{-}%
-\renewcommand*{\textbraceleft}{-}%
-\renewcommand*{\textbraceright}{-}%
-\renewcommand*{\textbullet}{-}%
-\renewcommand*{\textcopyright}{-}%
-\renewcommand*{\textdagger}{-}%
-\renewcommand*{\textdaggerdbl}{-}%
-\renewcommand*{\textdollar}{-}%
-\renewcommand*{\textellipsis}{-}%
-\renewcommand*{\textemdash}{-}%
-\renewcommand*{\textendash}{-}%
-\renewcommand*{\textexclamdown}{-}%
-\renewcommand*{\textgreater}{-}%
-\renewcommand*{\textless}{-}%
-\renewcommand*{\textordfeminine}{-}%
-\renewcommand*{\textordmasculine}{-}%
-\renewcommand*{\textparagraph}{-}%
-\renewcommand*{\textperiodcentered}{-}%
-\renewcommand*{\textpertenthousand}{-}%
-\renewcommand*{\textperthousand}{-}%
-\renewcommand*{\textquestiondown}{-}%
-\renewcommand*{\textquotedblleft}{-}%
-\renewcommand*{\textquotedblright}{-}%
-\renewcommand*{\textquoteleft}{-}%
-\renewcommand*{\textquoteright}{-}%
-\renewcommand*{\textregistered}{-}%
-\renewcommand*{\textsection}{-}%
-\renewcommand*{\textsterling}{-}%
-\renewcommand*{\texttrademark}{-}%
-\renewcommand*{\textunderscore}{-}%
-\renewcommand*{\textvisiblespace}{-}%
-\renewcommand*{\copyright}{-}%
-\renewcommand*{\dag}{-}%
-\renewcommand*{\ddag}{-}%
-\renewcommand*{\dots}{-}%
-\renewcommand*{\P}{-}%
-\renewcommand*{\pounds}{-}%
-\renewcommand*{\S}{-}%
-\renewcommand*{\aa}{a}%
-\renewcommand*{\AA}{A}%
-\renewcommand*{\AE}{AE}%
-\renewcommand*{\ae}{ae}%
-\renewcommand*{\dh}{d}%
-\renewcommand*{\DH}{D}%
-\renewcommand*{\DJ}{D}%
-\renewcommand*{\dj}{d}%
-\renewcommand*{\IJ}{IJ}%
-\renewcommand*{\ij}{ij}%
-\renewcommand*{\L}{L}%
-\renewcommand*{\l}{l}%
-\renewcommand*{\NG}{NG}%
-\renewcommand*{\ng}{ng}%
-\renewcommand*{\O}{O}%
-\renewcommand*{\o}{o}%
-\renewcommand*{\oe}{oe}%
-\renewcommand*{\OE}{OE}%
-\renewcommand*{\ss}{ss}%
-\renewcommand*{\SS}{SS}%
-\renewcommand*{\th}{th}%
-\renewcommand*{\TH}{TH}%
-\renewcommand*{\guillemotleft}{}%
-\renewcommand*{\guilsinglleft}{}%
-\renewcommand*{\quotedblbase}{}%
-\renewcommand*{\textquotedbl}{}%
-\renewcommand*{\guillemotright}{}%
-\renewcommand*{\guilsinglright}{}%
-\renewcommand*{\quotesinglbase}{}%
-%    \end{macrocode}
-%    \begin{macrocode}
-\renewcommand*{\HTMLunicode}[1]{}%
-\renewcommand*{\HTMLentity}[1]{}%
-%    \end{macrocode}
-%    \begin{macrocode}
-\renewcommand{\textsuperscript}[1]{##1}%
-\renewcommand{\textsubscript}[1]{##1}%
-%    \end{macrocode}
-% \changes{v0.50}{2018/02/20}{Fix: \cs{underline} in sectioning file name.}
-%    \begin{macrocode}
-\renewcommand{\underline}[1]{##1}%
-%    \end{macrocode}
-% \changes{v0.73}{2019/06/24}{Fix: \cs{hspace} in sectioning file name.}
-%    \begin{macrocode}
-\RenewDocumentCommand{\hspace}{s m}{}%
-%    \end{macrocode}
-%    \begin{macrocode}
-\RenewDocumentCommand{\LWR at htmlspanclass}{o m +m}{##3}%
-\DeclareExpandableDocumentCommand{\InlineClass}{D{(}{)}{} o m +m}{##4}%
-%    \end{macrocode}
-% Nullify math macros.
-% \changes{v0.55}{2018/04/24}{Removed extraneous space which appeared in file links.}
-%    \begin{macrocode}
-\def\(##1\){}%
-\def\[##1\]{}%
-\RenewDocumentCommand{\LWR at subsingledollar}{s m m m}{}%
-\protected\def$##1${}%
-%    \end{macrocode}
-% Nullify logos:
-% \changes{v0.66}{2019/02/01}{Logos.}
-%    \begin{macrocode}
-\renewcommand*{\TeX}{TeX}%
-\renewcommand*{\LaTeX}{LaTeX}%
-\renewcommand*{\LaTeXe}{LaTeX2e}%
-\renewcommand*{\LuaTeX}{LuaTeX}%
-\renewcommand*{\LuaLaTeX}{LuaLaTeX}%
-\renewcommand*{\XeTeX}{XeTeX}%
-\renewcommand*{\XeLaTeX}{XeLaTeX}%
-\renewcommand*{\ConTeXt}{ConTeXt}%
-\renewcommand*{\BibTeX}{BibTeX}%
-\renewcommand*{\MakeIndex}{MakeIndex}%
-\renewcommand*{\AmS}{AmS}%
-\renewcommand*{\MiKTeX}{MiKTeX}%
-\renewcommand*{\LyX}{LyX}%
-%    \end{macrocode}
-% Use the simpler form with \cs{texorpdfstring}:
-% \changes{v0.52}{2018/03/31}{Fix: \cs{texorpdfstring} in section names.}
-%    \begin{macrocode}
-\let\texorpdfstring\relax%
-\newcommand{\texorpdfstring}[2]{##2}%
+\FilenameNullify{%
+    \LetLtxMacro\emph\@firstofone%
+    \LetLtxMacro\textmd\@firstofone%
+    \LetLtxMacro\textbf\@firstofone%
+    \LetLtxMacro\texteb\@firstofone%
+    \LetLtxMacro\textlg\@firstofone%
+    \LetLtxMacro\textrm\@firstofone%
+    \LetLtxMacro\textsf\@firstofone%
+    \LetLtxMacro\texttt\@firstofone%
+    \LetLtxMacro\textup\@firstofone%
+    \LetLtxMacro\textit\@firstofone%
+    \LetLtxMacro\textsc\@firstofone%
+    \LetLtxMacro\textulc\@firstofone%
+    \LetLtxMacro\textsi\@firstofone%
+    \LetLtxMacro\textsl\@firstofone%
+    \LetLtxMacro\textssc\@firstofone%
+    \LetLtxMacro\textnormal\@firstofone%
 }
-\catcode`\$=3%
-\catcode`\_=8%
 %    \end{macrocode}
-% \end{macro}
 %
 %
-% \begin{macro}{\FilenameNullify} \marg{redefinitions}
 %
-% Adds more nullifying definitions for filename generation.
 %
-% \changes{v0.67}{2019/02/13}{Added.}
-%    \begin{macrocode}
-\newcommand*{\FilenameNullify}[1]{%
-    \appto{\LWR at nullfonts}{#1}%
-}
-%    \end{macrocode}
-% \end{macro}
 %
-%
 % \changes{v0.48}{2018/02/02}{Improved font control.}
 % \changes{v0.72}{2019/05/27}{\pkg{fontaxes}: Added.}
 
@@ -37291,10 +39988,14 @@
 % \changes{v0.48}{2018/02/02}{Improved font control.}
 % \changes{v0.50}{2018/02/20}{Robustify macros.}
 % \changes{v0.72}{2019/05/24}{Use \cs{LWR at formatted} for \cs{bfseries}, etc.}
+% \changes{v0.85}{2020/04/29}{Fix: Added print macros for \pkg{fontspec}.}
 %
 % \begin{macro}{\mdseries}
 %    \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@mdseries}{\renewcommand*{\LWR at f@series}{md}}
+\newrobustcmd*{\LWR at HTML@mdseries}{%
+    \LWR at print@mdseries%
+    \renewcommand*{\LWR at f@series}{md}%
+}
 \LWR at formatted{mdseries}
 %    \end{macrocode}
 % \end{macro}
@@ -37301,7 +40002,10 @@
 
 % \begin{macro}{\bfseries}
 %    \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@bfseries}{\renewcommand*{\LWR at f@series}{bf}}
+\newrobustcmd*{\LWR at HTML@bfseries}{%
+    \LWR at print@bfseries%
+    \renewcommand*{\LWR at f@series}{bf}%
+}
 \LWR at formatted{bfseries}
 %    \end{macrocode}
 % \end{macro}
@@ -37309,7 +40013,10 @@
 % \begin{macro}{\ebweight} From \pkg{nfssext-cfr}.
 % \changes{v0.72}{2019/05/26}{\pkg{nfssext-cfr}: Added.}
 %    \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@ebweight}{\renewcommand*{\LWR at f@series}{eb}}
+\newrobustcmd*{\LWR at HTML@ebweight}{%
+    \LWR at print@ebweight%
+    \renewcommand*{\LWR at f@series}{eb}%
+}
 \LWR at formatted{ebweight}
 %    \end{macrocode}
 % \end{macro}
@@ -37317,7 +40024,10 @@
 % \begin{macro}{\lgweight} From \pkg{nfssext-cfr}.
 % \changes{v0.72}{2019/05/26}{\pkg{nfssext-cfr}: Added.}
 %    \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@lgweight}{\renewcommand*{\LWR at f@series}{lg}}
+\newrobustcmd*{\LWR at HTML@lgweight}{%
+    \LWR at print@lgweight%
+    \renewcommand*{\LWR at f@series}{lg}%
+}
 \LWR at formatted{lgweight}
 %    \end{macrocode}
 % \end{macro}
@@ -37324,7 +40034,10 @@
 
 % \begin{macro}{\rmfamily}
 %    \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@rmfamily}{\renewcommand*{\LWR at f@family}{rm}}
+\newrobustcmd*{\LWR at HTML@rmfamily}{%
+    \LWR at print@rmfamily%
+    \renewcommand*{\LWR at f@family}{rm}%
+}
 \LWR at formatted{rmfamily}
 %    \end{macrocode}
 % \end{macro}
@@ -37331,7 +40044,10 @@
 
 % \begin{macro}{\sffamily}
 %    \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@sffamily}{\renewcommand*{\LWR at f@family}{sf}}
+\newrobustcmd*{\LWR at HTML@sffamily}{%
+    \LWR at print@sffamily%
+    \renewcommand*{\LWR at f@family}{sf}%
+}
 \LWR at formatted{sffamily}
 %    \end{macrocode}
 % \end{macro}
@@ -37338,29 +40054,55 @@
 
 % \begin{macro}{\ttfamily}
 %    \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@ttfamily}{\renewcommand*{\LWR at f@family}{tt}}
+\newrobustcmd*{\LWR at HTML@ttfamily}{%
+    \LWR at print@ttfamily%
+    \renewcommand*{\LWR at f@family}{tt}%
+}
 \LWR at formatted{ttfamily}
 %    \end{macrocode}
 % \end{macro}
-
+%
+%
+% The following use \cs{AtBeginDocument} due to the
+% \LaTeX\ core \cs{reinstall at nfss@defs}, which redefines these
+% \cs{AtBeginDocument}.   See \cmds{texdoc source2e}.
+%
 % \begin{macro}{\upshape}
 %    \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@upshape}{\renewcommand*{\LWR at f@shape}{up}}
-\LWR at formatted{upshape}
+\newrobustcmd*{\LWR at HTML@upshape}{%
+    \LWR at print@upshape%
+    \renewcommand*{\LWR at f@shape}{up}%
+}
+\AtBeginDocument{\LWR at formatted{upshape}}
 %    \end{macrocode}
 % \end{macro}
 
 % \begin{macro}{\itshape}
 %    \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@itshape}{\renewcommand*{\LWR at f@shape}{it}}
-\LWR at formatted{itshape}
+\newrobustcmd*{\LWR at HTML@itshape}{%
+    \LWR at print@itshape%
+    \renewcommand*{\LWR at f@shape}{it}%
+}
+\AtBeginDocument{\LWR at formatted{itshape}}
 %    \end{macrocode}
 % \end{macro}
 
+
 % \begin{macro}{\scshape}
+%
+% Note: \cs{LWR at print@scshape} is not used here since some fonts,
+% such as \pkg{erewhon}, copy/paste as all-caps.
+%
+% \changes{v0.87}{2020/05/12}{Added \bool{FixSmallCaps} to remove \cs{LWR at print@scshape}
+%    for \pkg{erewhon}, et. al.}
 %    \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@scshape}{\renewcommand*{\LWR at f@shapecaps}{sc}}
-\LWR at formatted{scshape}
+\newrobustcmd*{\LWR at HTML@scshape}{%
+    \ifbool{FixSmallCaps}{}{%
+        \LWR at print@scshape%
+    }%
+    \renewcommand*{\LWR at f@shapecaps}{sc}%
+}
+\AtBeginDocument{\LWR at formatted{scshape}}
 %    \end{macrocode}
 % \end{macro}
 
@@ -37370,22 +40112,30 @@
 \@ifundefined{ulcshape}{
     \LetLtxMacro\ulcshape\upshape
 }{}
-\newrobustcmd*{\LWR at HTML@ulcshape}{\renewcommand*{\LWR at f@shapecaps}{ulc}}
-\LWR at formatted{ulcshape}
+\newrobustcmd*{\LWR at HTML@ulcshape}{%
+    \LWR at print@ulcshape%
+    \renewcommand*{\LWR at f@shapecaps}{ulc}%
+}
+\AtBeginDocument{\LWR at formatted{ulcshape}}
 %    \end{macrocode}
 % \end{macro}
 
 % \begin{macro}{\sishape}
 % \changes{v0.65}{2018/12/10}{Added \cs{sishape}.}
+% \changes{v0.87}{2020/05/12}{Added \bool{FixSmallCaps} to remove \cs{LWR at print@scshape}
+%    for \pkg{erewhon}, et. al.}
 %    \begin{macrocode}
 \@ifundefined{sishape}{
     \LetLtxMacro\sishape\scshape
 }{}
 \newrobustcmd*{\LWR at HTML@sishape}{%
+    \ifbool{FixSmallCaps}{}{%
+        \LWR at print@sishape%
+    }%
     \renewcommand*{\LWR at f@shape}{it}
     \renewcommand*{\LWR at f@shapecaps}{sc}%
 }
-\LWR at formatted{sishape}
+\AtBeginDocument{\LWR at formatted{sishape}}
 %    \end{macrocode}
 % \end{macro}
 
@@ -37392,11 +40142,22 @@
 % \begin{macro}{\slshape}
 % \changes{v0.62}{2018/11/11}{Added.}
 %    \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@slshape}{\renewcommand*{\LWR at f@shape}{sl}}
-\LWR at formatted{slshape}
+\newrobustcmd*{\LWR at HTML@slshape}{%
+    \LWR at print@slshape%
+    \renewcommand*{\LWR at f@shape}{sl}%
+}
+\AtBeginDocument{\LWR at formatted{slshape}}
 %    \end{macrocode}
 % \end{macro}
 
+% \begin{macro}{\sscshape}
+% \changes{v0.84}{2020/04/13}{Moved to core.}
+%    \begin{macrocode}
+\newrobustcmd{\LWR at HTML@sscshape}{\LWR at HTML@scshape}
+\AtBeginDocument{\LWR at formatted{sscshape}}
+%    \end{macrocode}
+% \end{macro}
+
 % \begin{macro}{\normalfont}
 % \changes{v0.78}{2019/11/05}{Uses \cs{LWR at formatted}.}
 %    \begin{macrocode}
@@ -37407,6 +40168,27 @@
 
 
 
+%    \begin{macrocode}
+\FilenameNullify{%
+    \LetLtxMacro\rmfamily\@empty%
+    \LetLtxMacro\sffamily\@empty%
+    \LetLtxMacro\ttfamily\@empty%
+    \LetLtxMacro\bfseries\@empty%
+    \LetLtxMacro\ebweight\@empty%
+    \LetLtxMacro\lgweight\@empty%
+    \LetLtxMacro\mdseries\@empty%
+    \LetLtxMacro\upshape\@empty%
+    \LetLtxMacro\slshape\@empty%
+    \LetLtxMacro\sishape\@empty%
+    \LetLtxMacro\scshape\@empty%
+    \LetLtxMacro\itshape\@empty%
+    \LetLtxMacro\ulcshape\@empty%
+    \LetLtxMacro\sscshape\@empty%
+    \LetLtxMacro\normalfont\@empty%
+}
+%    \end{macrocode}
+
+
 % \begin{macro}{\sp} \marg{text}
 
 % For \pkg{siunitx}.  Must work in math mode.
@@ -37426,33 +40208,37 @@
 
 % \begin{macro}{\textsuperscript} \marg{text}
 % \changes{v0.50}{2018/02/20}{Robustify macros.}
+% \changes{v0.84}{2020/04/13}{Use \cs{LWR at formatted}.}
 %    \begin{macrocode}
-\renewrobustcmd{\textsuperscript}[1]{\LWR at htmlspan{sup}{#1}}
+\newrobustcmd{\LWR at HTML@textsuperscript}[1]{\LWR at htmlspan{sup}{#1}}
+\LWR at formatted{textsuperscript}
 %    \end{macrocode}
 % \end{macro}
 
 % \begin{macro}{\@textsuperscript} \marg{text}
 % \changes{v0.42}{2017/10/16}{Added.}
+% \changes{v0.84}{2020/04/13}{Use \cs{LWR at formatted}.}
 %    \begin{macrocode}
-\renewcommand{\@textsuperscript}[1]{\LWR at htmlspan{sup}{#1}}
+\newcommand{\LWR at HTML@@textsuperscript}[1]{\LWR at htmlspan{sup}{#1}}
+\LWR at formatted{@textsuperscript}
 %    \end{macrocode}
 % \end{macro}
 
 % \begin{macro}{\textsubscript} \marg{text}
 % \changes{v0.50}{2018/02/20}{Robustify macros.}
+% \changes{v0.84}{2020/04/13}{Use \cs{LWR at formatted}.  No longer \cs{AtBeginDocument}.}
 %    \begin{macrocode}
-\AtBeginDocument{
-\renewrobustcmd{\textsubscript}[1]{\LWR at htmlspan{sub}{#1}}
-}
+    \newrobustcmd{\LWR at HTML@textsubscript}[1]{\LWR at htmlspan{sub}{#1}}
+    \LWR at formatted{textsubscript}
 %    \end{macrocode}
 % \end{macro}
 
 % \begin{macro}{\@textsubscript} \marg{text}
 % \changes{v0.42}{2017/10/16}{Added.}
+% \changes{v0.84}{2020/04/13}{Use \cs{LWR at formatted}.  No longer \cs{AtBeginDocument}.}
 %    \begin{macrocode}
-\AtBeginDocument{
-\renewcommand{\@textsubscript}[1]{\LWR at htmlspan{sub}{#1}}
-}
+    \newcommand{\LWR at HTML@@textsubscript}[1]{\LWR at htmlspan{sub}{#1}}
+    \LWR at formatted{@textsubscript}
 %    \end{macrocode}
 % \end{macro}
 
@@ -37609,6 +40395,7 @@
 % \changes{v0.45}{2017/12/29}{Improved: Robust \cs{,}, \cs{~}, and \cs{textellipsis} commands.}
 % \changes{v0.56}{2018/05/09}{Added \cs{thinspace}.}
 % \changes{v0.61}{2018/09/23}{Spaces redefined \cs{AtBeginDocument}.}
+% \changes{v0.88}{2020/07/03}{Added \cs{vdots}.}
 %    \begin{macrocode}
 \AtBeginDocument{
 \renewrobustcmd*{\,}{\HTMLunicode{202f}}	% HTML thin non-breakable space
@@ -37616,6 +40403,7 @@
 \renewrobustcmd*{\negthinspace}{\HTMLunicode{202f}}    % HTML thin non-breakable space
 \renewrobustcmd*{~}{\HTMLentity{nbsp}}
 \renewrobustcmd*{\textellipsis}{\HTMLunicode{2026}}
+\renewrobustcmd*{\vdots}{\HTMLunicode{22EE}}
 }
 %    \end{macrocode}
 %
@@ -37681,8 +40469,26 @@
 % \begin{macro}{\hrulefill}
 % \changes{v0.20}{2017/01/19}{Inserts a short rule.}
 % \changes{v0.58}{2018/06/07}{Improved print/\HTML\ output selection.}
+% \changes{v0.88}{2020/06/28}{Full line \element{div} if not started paragraph.}
 %    \begin{macrocode}
-\newcommand*{\LWR at HTML@hrulefill}{\rule{1in}{1pt}}
+\newcommand*{\LWR at HTML@hrulefill}{%
+    \ifbool{LWR at doingapar}%
+        {\rule{1in}{1pt}}%
+        {%
+            \LWR at findcurrenttextcolor%
+            \ifdefstring{\LWR at tempcolor}{000000}%
+            {%
+                \begin{BlockClass}{hrule}%
+                \end{BlockClass}%
+            }%
+            {%
+                \begin{BlockClass}[%
+                    border-top: 1px solid \LWR at origpound\LWR at tempcolor % space
+                ]{hrule}%
+                \end{BlockClass}%
+            }%
+        }%
+}%
 \LWR at formatted{hrulefill}
 %    \end{macrocode}
 % \end{macro}
@@ -37777,7 +40583,7 @@
 % Placed just before \cs{hspace}, \cs{quad}, or \cs{qquad}'s \HTML\ output.
 %    \begin{macrocode}
 \newcommand*{\LWR at minipagestartpars}{%
-\ifbool{LWR at minipagethispar}{\LWR at startpars}{}%
+    \ifbool{LWR at minipagethispar}{\LWR at startpars}{}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -37786,7 +40592,7 @@
 % Placed just after \cs{hspace}, \cs{quad}, or \cs{qquad}'s \HTML\ output.
 %    \begin{macrocode}
 \newcommand*{\LWR at minipagestoppars}{%
-\ifbool{LWR at minipagethispar}{\LWR at stoppars}{}%
+    \ifbool{LWR at minipagethispar}{\LWR at stoppars}{}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -37799,9 +40605,9 @@
 % \changes{v0.65}{2018/12/22}{Changed to Unicode EM SPACE.}
 %    \begin{macrocode}
 \renewrobustcmd*{\quad}{%
-\LWR at minipagestoppars%
-\HTMLunicode{2003}%
-\LWR at minipagestartpars%
+    \LWR at minipagestoppars%
+    \HTMLunicode{2003}%
+    \LWR at minipagestartpars%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -37820,9 +40626,9 @@
 % \changes{v0.65}{2018/12/22}{Changed to Unicode EN SPACE.}
 %    \begin{macrocode}
 \renewrobustcmd*{\enskip}{%
-\LWR at minipagestoppars%
-\HTMLunicode{2002}%
-\LWR at minipagestartpars%
+    \LWR at minipagestoppars%
+    \HTMLunicode{2002}%
+    \LWR at minipagestartpars%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -37881,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,
@@ -38068,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}.
@@ -38107,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,
@@ -38144,6 +40953,33 @@
 %    \end{macrocode}
 % \end{macro}
 %
+%
+% ^^A This doesn't work because \hrule is used in many places at a low level.
+% ^^A % \begin{macro}{\hrule}
+% ^^A % Generates a <div>, then uses the original to consume any arguments.
+% ^^A % The print-mode rule is not seen by \prog{pdftotext}.
+% ^^A %
+% ^^A % \changes{v0.88}{2020/06/22}{Added.}
+% ^^A %    \begin{macrocode}
+% ^^A \renewcommand*{\hrule}{%
+% ^^A     \ifbool{LWR at doingstartpars}%
+% ^^A     {%
+% ^^A         \begin{BlockClass}[border-top:1px solid silver]{hrule}%
+% ^^A         \end{BlockClass}%
+% ^^A     }{}%
+% ^^A     \LWR at orig@hrule%
+% ^^A }
+% ^^A %    \end{macrocode}
+% ^^A %
+% ^^A % Not needed, since print-mode \env{BlockClass} does nothing:
+% ^^A % \begin{sourceverb}
+% ^^A % \appto\LWR at restoreorigformatting{
+% ^^A %     \let\hrule\LWR at orig@hrule%
+% ^^A % }
+% ^^A % \end{sourceverb}
+% ^^A % \end{macro}
+%
+%
 %    \begin{macrocode}
 \end{warpHTML}
 %    \end{macrocode}
@@ -38158,17 +40994,18 @@
 \begin{warpHTML}
 %    \end{macrocode}
 
-% \begin{macro}{\phantomsection}
+% \begin{macro}{\LWR at phantomsection}
 % Emulate the \pkg{hyperref} \cs{phantomsection} command,
 % often used to insert the bibliography into the table of contents.
 % Ignores \cs{ForceHTMLTOC}.
 % \changes{v0.55}{2018/04/26}{Fix: \cs{ForceHTMLTOC} with \cs{phantomsection}.}
+% \changes{v0.86}{2020/05/07}{\pkg{hyperref}: Adjusted emulation.}
 %    \begin{macrocode}
-\DeclareDocumentCommand{\phantomsection}{}{%
-\begingroup%
-\boolfalse{LWR at forcinghtmltoc}%
-\section*{}%
-\endgroup%
+\newrobustcmd*{\LWR at phantomsection}{%
+    \begingroup%
+    \boolfalse{LWR at forcinghtmltoc}%
+    \section*{}%
+    \endgroup%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -38202,23 +41039,34 @@
 %
 %
 % \changes{v0.62}{2018/10/23}{Logos: Fix for \XeTeX\ logo if \pkg{graphics} is not loaded.}
+% \changes{v0.84}{2020/04/06}{Logos: Only warn about \pkg{graphics} if actually use \cs{Xe}.}
 %
 % \codeall
 %    \begin{macrocode}
 \begin{warpall}
+\newbool{LWR at warnXe}
+\boolfalse{LWR at warnXe}
+
 \newrobustcmd*{\Xe}
-    {X\hspace{-.1667em}\raisebox{-.5ex}{E}}
+    {%
+        X\hspace{-.1667em}\raisebox{-.5ex}{E}%
+        \global\booltrue{LWR at warnXe}%
+    }
 
 \AtBeginDocument{
-\@ifpackageloaded{graphics}{
-    \@ifpackageloaded{metalogo}{}{
-        \renewrobustcmd*{\Xe}
-            {X\hspace{-.1667em}\raisebox{-.5ex}{\reflectbox{E}}}
-    }
-}{
-    \PackageWarningNoLine{lwarp}{Load graphicx or graphics
-        for improved XeTeX logo}
+    \@ifpackageloaded{graphics}{
+        \@ifpackageloaded{metalogo}{}{
+            \renewrobustcmd*{\Xe}
+                {X\hspace{-.1667em}\raisebox{-.5ex}{\reflectbox{E}}}
+        }
+    }{}
 }
+
+\AtEndDocument{
+    \ifbool{LWR at warnXe}{
+        \PackageWarningNoLine{lwarp}{Load graphicx or graphics
+            for improved XeTeX logo}
+    }{}
 }
 
 \providerobustcmd*{\XeTeX}{\mbox{\Xe\hspace{-.125em}\TeX}}
@@ -38422,7 +41270,7 @@
 %
 
 
-% \section{\cs{AtBeginDocument}, \cs{AtEndDocument}}
+% \section{Starting and stopping \pkg{lwarp}}
 
 % \codehtml
 %    \begin{macrocode}
@@ -38446,8 +41294,74 @@
 %    \end{macrocode}
 
 
+% \section{Loading \pkg{everyshi} patches}
+%
+% \pkg{everyshi} is emulated by the \LaTeX\ core, so its patches are loaded
+% here.
+% \cs{AtBeginDocument} is used in case an older verison of \LaTeX\ is
+% used.
+%
+% \changes{v0.89}{2020/07/28}{\pkg{everyshi}: Included in \LaTeX\ core.}
+%
+% \codehtml
+%    \begin{macrocode}
+\begin{warpHTML}
+\AtBeginDocument{
+    \@ifpackageloaded{everyshi}{
+        \RequirePackage{lwarp-everyshi}
+    }{}
+}
+\end{warpHTML}
+%    \end{macrocode}
 
 
+% \section{Loading \pkg{textcomp} patches}
+%
+% \pkg{textcomp} has now been integrated into the \LaTeX\ core,
+% so its patches are loaded now.
+%
+% \codehtml
+%
+% \changes{v0.84}{2020/04/14}{Fixed: \pkg{textcomp} now in kernel.}
+%    \begin{macrocode}
+\begin{warpHTML}
+\RequirePackage{lwarp-textcomp}
+\end{warpHTML}
+%    \end{macrocode}
+
+
+
+% \section{Loading \pkg{amsmath}, \pkg{amsthm} patches, \pkg{centernot}}
+%
+% \pkg{amsmath}, \pkg{amsthm}, and \pkg{centernot} may have been preloaded,
+% such as by \pkg{newtx}, so their patches are loaded now.
+%
+% \codehtml
+%
+% \changes{v0.89}{2020/08/12}{Allow preload of \pkg{amsmath}, \pkg{amsthm}, \pkg{centernot}.}
+%    \begin{macrocode}
+\begin{warpHTML}
+\@ifpackageloaded{amsthm}{
+    \RequirePackage{lwarp-amsthm}
+}{}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\@ifpackageloaded{amsmath}{
+    \RequirePackage{lwarp-amsmath}
+}{}
+%    \end{macrocode}
+%
+%
+% \pkg{amsthm} may load \pkg{centernot}, so \pkg{centernot} must be checked second.
+%    \begin{macrocode}
+\@ifpackageloaded{centernot}{
+    \RequirePackage{lwarp-centernot}
+}{}
+\end{warpHTML}
+%    \end{macrocode}
+
+
 % \section{Loading \brand{Koma-script} class patches}
 %
 % Load patches to \pkg{koma-script}.
@@ -38473,22 +41387,25 @@
 % Load patches to \pkg{memoir}.
 %
 % \changes{v0.45}{2017/12/03}{\pkg{memoir}: Added.}
+% \changes{v0.84}{2020/03/31}{\pkg{memoir}: Preloads \pkg{xcolor}.}
 %
+% \codeall
+%    \begin{macrocode}
+\begin{warpprint}
+\@ifclassloaded{memoir}{\LWR at origRequirePackage{xcolor}}{}
+\end{warpprint}
+%    \end{macrocode}
+
 % \codehtml
 %    \begin{macrocode}
 \begin{warpHTML}
-%    \end{macrocode}
-%
-%    \begin{macrocode}
 \@ifclassloaded{memoir}{\RequirePackage{lwarp-patch-memoir}}{}
-%    \end{macrocode}
-%
-%    \begin{macrocode}
 \end{warpHTML}
 %    \end{macrocode}
 
 
 
+
 % \section{\pkg{ut*} class patches}
 %
 % Load patches to \pkg{uj*} and \pkg{ut*} classes, as well as \pkg{ltj*} classes.
@@ -38525,6 +41442,7 @@
             \quad%
         }
     }
+    \renewcommand*{\LWR at printchaptername}{}
 %    \end{macrocode}
 % Use decimal points instead of centered dots:
 %    \begin{macrocode}
@@ -38610,6 +41528,8 @@
             \LWR at isolate{\CTEX at chaptername}~%
             \CTEX at chapter@aftername%
         }%
+
+        \renewcommand*{\LWR at printchaptername}{}
     }{}
 }
 %    \end{macrocode}
@@ -38691,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{---}
@@ -38714,13 +41634,12 @@
 %
 %
 % \section{\brand{MathJax} warnings}
-% ^^A *mathjax
 %
 % \begin{macro}{\LWR at mathjaxwarn} \marg{packagename} \marg{More text.}
 %
 % To be done \cs{AtBeginDocument}.
 %
-% \changes{v0.79}{2020/01/18}{Warn if using packages not supported by \brand{MathJax}.}
+% \changes{v0.79}{2020/01/18}{Warn if using packages partially supported by \brand{MathJax}.}
 %    \begin{macrocode}
 \newcommand*{\LWR at mathjaxwarn}[2]{%
     \@ifpackageloaded{lwarp-#1}{%
@@ -38741,60 +41660,147 @@
     }{}%
 }
 
+% \begin{macro}{\LWR at nomathjaxwarn} \marg{packagename} \marg{More text.}
+%
+% 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}{%
+        \ifblank{#2}{%
+            \PackageWarningNoLine{lwarp}
+                {%
+                    Lwarp does not provide MathJax support for #1.\MessageBreak
+                    Use SVG math by removing the Lwarp mathjax option%
+                }
+        }{%
+            \PackageWarningNoLine{lwarp}
+                {%
+                    Lwarp does not provide MathJax support for #1.\MessageBreak
+                    #2%
+                }
+        }%
+    }{}%
+}
+%    \end{macrocode}
+%
+% \begin{macro}{\LWR at forceSVGmessage} \marg{packagename}
+% \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
+    expressions to preserve #1 visual\MessageBreak
+    features for those particular expressions.\MessageBreak
+    Before the chosen inline math, use \protect\inlinemathother\MessageBreak
+    to begin using SVG math, and \protect\inlinemathnormal\MessageBreak
+    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.\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 \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
             environments to isolate the package load\MessageBreak
             and the equation+ environments}
-        \LWR at mathjaxwarn{backnaur}
-            {You may enclose its uses inside\MessageBreak
-            lateximage environments to force SVG output,\MessageBreak
-            but this also changes the print output}
         \LWR at mathjaxwarn{bigdelim}
             {Delimiters appear only of the first line}
+        \LWR at nomathjaxwarn{boldtensors}{}
         \LWR at mathjaxwarn{booktabs}
-            {In a math array, do not use (trim) for \protect\cmidrule}
+            {\protect\cmidrule\space is not displayed}
         \LWR at mathjaxwarn{breqn}
             {Each environment becomes an SVG image}
+        \LWR at mathjaxwarn{colortbl}
+            {Colors are ignored in MathJax.\MessageBreak
+            (Text mode tabular does support colortbl.)\MessageBreak
+            \LWR at forceSVGmessage{colortbl}}
         \LWR at mathjaxwarn{delarray}
-            {Enclose its uses inside lateximage\MessageBreak
-            environments to force SVG output}
-        \LWR at mathjaxwarn{jkmath}{}
-        \LWR at mathjaxwarn{mathspec}{}
+            {\LWR at forceSVGmessage{delarray}}
+        \LWR at nomathjaxwarn{gauss}
+            {\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}
-            {Avoid starred macros.\MessageBreak
-            See the Lwarp manual for other limitations}
+            {See the Lwarp manual regarding the disallowspaces\MessageBreak
+            and showonlyrefs options, the alignat environment,\MessageBreak
+            and \protect\DeclarePairedDelimiter\space and related%
+            }
+        \LWR at mathjaxwarn{mathspec}
+            {Double quotes are removed, even inside \protect\text}
         \LWR at mathjaxwarn{multirow}
             {Multirow works as expected in text mode, but\MessageBreak
             limited emulation is provided for MathJax math.\MessageBreak
             \protect\multirow\space ignores all arguments except\MessageBreak
             the text}
-        \LWR at mathjaxwarn{pb-diagram}
-            {Enclose its uses inside lateximage environments\MessageBreak
-            to force SVG output}
-        \LWR at mathjaxwarn{physics}
-            {The third-party extension is not yet used.\MessageBreak
-            Avoid starred macros and automatic delimiters.\MessageBreak
-            Use all mandatory arguments, adding empty as needed.\MessageBreak
-            See the Lwarp manual for details}
+        \LWR at mathjaxwarn{nicematrix}
+            {Keys/values are ignored in MathJax.\MessageBreak
+            \protect\Cdots, etc. do not span multiple cells.\MessageBreak
+            AutoNiceMatrix, etc. are not supported for MathJax.\MessageBreak
+            \LWR at forceSVGmessage{nicematrix}%
+            }
+        \LWR at nomathjaxwarn{pb-diagram}
+            {\LWR at forceSVGmessage{pb-diagram}}
+%         \LWR at mathjaxwarn{physics}
+% %             {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}
-            {Not all characters are encoded correctly.\MessageBreak
+            {Do not use embedded Unicode characters.\MessageBreak
+            (Not all characters are encoded correctly.)\MessageBreak
             Some symbol fonts are not supported by MathJax,\MessageBreak
-            and are only approximated}
+            and are only approximated.\MessageBreak
+            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
             Text is only placed on a single line}
-        \LWR at mathjaxwarn{xy}
-            {xy works in text, but in math you must\MessageBreak
-            enclose its uses inside lateximage\MessageBreak
-            environments to force SVG output}
+        \LWR at nomathjaxwarn{xy}
+            {In text, xy works as-is.  SVG images will be generated.\MessageBreak
+            \LWR at forceSVGmessage{xy}}
     }{}
 }
 %    \end{macrocode}
@@ -39050,33 +42056,37 @@
 \InlineClass{abstractrunintitle}{\abstractname}%
 \@bslabeldelim}%
 }
-
+%    \end{macrocode}
+%
+% \changes{v0.84}{2020/03/28}{\pkg{abstract}: Updated for \pkg{memoir}.}
+%    \begin{macrocode}
 \@ifclassloaded{memoir}
 {
   \renewenvironment{abstract}{%
-%     \titlepage
-    \null\vfil
-    \@beginparpenalty\@lowpenalty
+% %     \titlepage
+%     \null\vfil
+%     \@beginparpenalty\@lowpenalty
+  \setup at bstract
     \if at bsrunin
     \else
-      \if at bsstyle
-        \abstitlestyle{\BlockClassSingle{abstracttitle}{\abstractname}}
-      \else
+%       \if at bsstyle
+%         \abstitlestyle{\BlockClassSingle{abstracttitle}{\abstractname}}
+%       \else
         \ifnumber at bs
           \num at bs
         \else
           \begin{\absnamepos}%
   \abstractnamefont \BlockClassSingle{abstracttitle}{\abstractname}
-            \@endparpenalty\@M
+%             \@endparpenalty\@M
           \end\absnamepos%
-%%        \vspace{\abstitleskip}%
+       \vspace{\abstitleskip}%
         \fi
-      \fi
-      \vspace{\abstitleskip}%
+%       \fi
+%       \vspace{\abstitleskip}%
     \fi
     \put at bsintoc%
     \begin{@bstr at ctlist}\if at bsrunin\@bsrunintitle\fi\abstracttextfont}%
-    {\par\end{@bstr at ctlist}\vfil\null%\endtitlepage
+    {\par\end{@bstr at ctlist}%\vfil\null%\endtitlepage
     }
 }{% not memoir
 \if at titlepage
@@ -39196,41 +42206,97 @@
 %
 %
 %
-%
 % \iffalse
-%<*afterpage>
+%<*accents>
 % \fi
 %
-% \part{lwarp-afterpage.sty}
+% \part{lwarp-accents.sty}
 %
-% \section{afterpage}
+% \section{accents}
 %
-% \credits{David Carlisle}
+% \credits{Javier Bezos}
 %
-% \DescribePackage{afterpage} \pkg{afterpage} is emulated.
+% \DescribePackage{accents}
+% \pkg{accents} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
 %
-% \changes{v0.20}{2017/01/11}{\pkg{afterpage}: Added.}
+% \changes{v0.89}{2020/07/21}{\pkg{accents}: Added.}
 %
 % \codehtml
 %
-% Discard all options for \pkg{lwarp-afterpage}:
 %    \begin{macrocode}
-\LWR at ProvidesPackageDrop{afterpage}[2014/10/28]
+\LWR at ProvidesPackagePass{accents}[2006/05/12]
 %    \end{macrocode}
 %
+% For \brand{MathJax}:
 %    \begin{macrocode}
-\newcommand{\afterpage}[1]{#1}
+\begin{warpMathJax}
+\LWR at infoprocessingmathjax{accents}
+
+\CustomizeMathJax{\newcommand{\ring}[1]{\mathring{#1}}}
+\CustomizeMathJax{\newcommand{\accentset}[2]{\overset{#1{}}{#2}}}
 %    \end{macrocode}
 %
+% As of this writing, \brand{MathJax} v3 does not yet support
+% groups for macros, so for \cs{underaccent}, the originals are remembered here,
+% then they are temporarily redefined and used inside \cs{underaccent},
+% then restored to their originals.
+% \cs{LARGE} gives a reasonable size, and \cs{raise} is used to
+% adjust vertically without introducing extra line space.
+%    \begin{macrocode}
+\CustomizeMathJax{\let\LWRgrave\grave}
+\CustomizeMathJax{\let\LWRacute\acute}
+\CustomizeMathJax{\let\LWRcheck\check}
+\CustomizeMathJax{\let\LWRbreve\breve}
+\CustomizeMathJax{\let\LWRbar\bar}
+\CustomizeMathJax{\let\LWRhat\hat}
+\CustomizeMathJax{\let\LWRdot\dot}
+\CustomizeMathJax{\let\LWRtilde\tilde}
+\CustomizeMathJax{\let\LWRddot\ddot}
+\CustomizeMathJax{\let\LWRvec\vec}
+\CustomizeMathJax{\let\LWRwidetilde\widetilde}
+
+\CustomizeMathJax{\newcommand{\underaccent}[2]{%
+    {%
+    \renewcommand{\grave}[1]{{\LARGE\LWRgrave{##1}}}%
+    \renewcommand{\acute}[1]{{\LARGE\LWRacute{##1}}}%
+    \renewcommand{\check}[1]{{\LARGE\LWRcheck{##1}}}%
+    \renewcommand{\breve}[1]{{\LARGE\LWRbreve{##1}}}%
+    \renewcommand{\bar}[1]{{\LARGE\LWRbar{##1}}}%
+    \renewcommand{\hat}[1]{{\LARGE\LWRhat{##1}}}%
+    \renewcommand{\dot}[1]{{\LARGE\LWRdot{##1}}}%
+    \renewcommand{\tilde}[1]{{\LARGE\LWRtilde{##1}}}%
+    \renewcommand{\ddot}[1]{{\LARGE\LWRddot{##1}}}%
+    \renewcommand{\vec}[1]{{\LARGE\LWRvec{##1}}}%
+    \renewcommand{\widetilde}[1]{{\LARGE\LWRwidetilde{\hphantom{#2}}}}%
+    \underset{\raise 2pt {#1{}}}{#2}%
+    \let\grave\LWRgrave%
+    \let\acute\LWRacute%
+    \let\check\LWRcheck%
+    \let\breve\LWRbreve%
+    \let\bar\LWRbar%
+    \let\hat\LWRhat%
+    \let\dot\LWRdot%
+    \let\tilde\LWRtilde%
+    \let\ddot\LWRddot%
+    \let\vec\LWRvec%
+    \let\widetilde\LWRwidetilde%
+    }%
+}}
+
+\CustomizeMathJax{\newcommand{\undertilde}[1]{%
+    \underset{\raise 3pt {\widetilde{\hphantom{#1}}}}{#1}%
+}}
+\end{warpMathJax}
+%    \end{macrocode}
+%
 % \iffalse
-%</afterpage>
+%</accents>
 % \fi
 %
 %
 %
 %
-%
-%
 % \iffalse
 %<*accessibility>
 % \fi
@@ -39252,7 +42318,7 @@
 %
 %    \begin{macrocode}
 \newcommand{\alt}[1]{\ThisAltText{#1}}
-\newcommand{\newhref}[3]{\ThisAltText{#2}\href{#1}{#3}}%
+\newcommand{\newhref}[3]{\ThisAltText{#2}\LWR at href{#1}{#3}}%
 \providecommand{\thead}[1]{\textbf{#1}}
 %    \end{macrocode}
 %
@@ -39325,6 +42391,8 @@
 % \DescribePackage{acro}
 % \pkg{acro} is patched for use by \pkg{lwarp}.
 %
+% \limitsacro
+%
 % \changes{v0.48}{2018/02/02}{\pkg{acro}: Added.}
 %
 % \codehtml
@@ -39352,11 +42420,25 @@
     \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}
 \ExplSyntaxOn
+\@ifpackagelater{acro}{2020/04/29}%
+{}% v3 or later
+{% before v3
 \@ifpackagelater{acro}{2019/09/23}%
 {% v2.10 or later
 \cs_gset_protected:Npn \__acro_typeset:nn #1#2
@@ -39453,6 +42535,7 @@
     \group_end:
   }
 }% before v2.10
+}% before v3
 \ExplSyntaxOff
 %    \end{macrocode}
 
@@ -39601,8 +42684,8 @@
 % \changes{v0.47}{2018/01/26}{\pkg{adjmulticol}: Fix: Line wrap at \HTML\ hyphen.}
 %    \begin{macrocode}
 \BlockClass[%
-\LWR at print@mbox{margin-left:\LWR at printlength{\LWR at templengthone}} ; %
-\LWR at print@mbox{margin-right:\LWR at printlength{\LWR at templengthtwo}}%
+    \LWR at print@mbox{margin-left:\LWR at printlength{\LWR at templengthone}} ; %
+    \LWR at print@mbox{margin-right:\LWR at printlength{\LWR at templengthtwo}}%
 ]{\LWR at mcolstype}%
 }
 {\endBlockClass}
@@ -39885,37 +42968,37 @@
 % and turns off line numbering while creating the \element{div} tags:
 %    \begin{macrocode}
 \renewcommand{\algocf at Vline}[1]{%
-\boolfalse{LWR at algocf@dopars}%
-\begin{BlockClass}{alg2evline}
-\booltrue{LWR at algocf@dopars}%
-#1
-\boolfalse{LWR at algocf@dopars}%
-\end{BlockClass}
-\booltrue{LWR at algocf@dopars}%
+    \boolfalse{LWR at algocf@dopars}%
+    \begin{BlockClass}{alg2evline}
+    \booltrue{LWR at algocf@dopars}%
+    #1
+    \boolfalse{LWR at algocf@dopars}%
+    \end{BlockClass}
+    \booltrue{LWR at algocf@dopars}%
 }
 %    \end{macrocode}
 %
 %    \begin{macrocode}
 \renewcommand{\algocf at Vsline}[1]{%
-\boolfalse{LWR at algocf@dopars}%
-\begin{BlockClass}{alg2evsline}
-\booltrue{LWR at algocf@dopars}%
-#1
-\boolfalse{LWR at algocf@dopars}%
-\end{BlockClass}
-\booltrue{LWR at algocf@dopars}%
+    \boolfalse{LWR at algocf@dopars}%
+    \begin{BlockClass}{alg2evsline}
+    \booltrue{LWR at algocf@dopars}%
+    #1
+    \boolfalse{LWR at algocf@dopars}%
+    \end{BlockClass}
+    \booltrue{LWR at algocf@dopars}%
 }
 %    \end{macrocode}
 %
 %    \begin{macrocode}
 \renewcommand{\algocf at Noline}[1]{%
-\boolfalse{LWR at algocf@dopars}%
-\begin{BlockClass}{alg2enoline}
-\booltrue{LWR at algocf@dopars}%
-#1
-\boolfalse{LWR at algocf@dopars}%
-\end{BlockClass}
-\booltrue{LWR at algocf@dopars}%
+    \boolfalse{LWR at algocf@dopars}%
+    \begin{BlockClass}{alg2enoline}
+    \booltrue{LWR at algocf@dopars}%
+    #1
+    \boolfalse{LWR at algocf@dopars}%
+    \end{BlockClass}
+    \booltrue{LWR at algocf@dopars}%
 }
 %    \end{macrocode}
 %
@@ -39961,13 +43044,9 @@
 %
 % \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.}
 %
-% \codehtml
 %    \begin{macrocode}
-\begin{warpHTML}
-%    \end{macrocode}
-
-%    \begin{macrocode}
 \AtBeginEnvironment{algorithmic}{%
 %
 \let\origALG at doentity\ALG at doentity%
@@ -39975,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}%
@@ -39999,10 +43080,6 @@
 }%
 %    \end{macrocode}
 
-%    \begin{macrocode}
-\end{warpHTML}
-%    \end{macrocode}
-
 % \iffalse
 %</algorithmicx>
 % \fi
@@ -40024,6 +43101,7 @@
 % \pkg{alltt} is patched for use by \pkg{lwarp}.
 %
 % \changes{v0.20}{2017/01/11}{\pkg{alltt}: Added.}
+% \changes{v0.84}{2020/04/16}{\pkg{alltt}: Added print mode.}
 %
 % \codehtml
 %
@@ -40034,13 +43112,30 @@
 %    \begin{macrocode}
 \AfterEndPreamble{
 \LWR at traceinfo{Patching alltt.}
+
 \AtBeginEnvironment{alltt}{%
-\LWR at forcenewpage
-\LWR at atbeginverbatim{3}{alltt}%
+    \ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}%
+        {}%
+        {%
+            \LWR at forcenewpage
+%    \end{macrocode}
+% Vertical spacing changes if inside a list.
+%    \begin{macrocode}
+            \LWR at atbeginverbatim{alltt}%
+        }%
 }
+
 \AfterEndEnvironment{alltt}{%
-    \LWR at afterendverbatim{2}%
+    \ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}%
+        {}%
+        {%
+%    \end{macrocode}
+% Vertical spacing changes if inside a list.
+%    \begin{macrocode}
+            \LWR at afterendverbatim%
+        }%
 }
+
 }
 %    \end{macrocode}
 %
@@ -40051,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
 %
@@ -40074,6 +43216,15 @@
 \LWR at ProvidesPackagePass{amsmath}[2017/09/02]
 %    \end{macrocode}
 %
+% \begin{noindmacro}{\dotso} An \HTML\ text-mode version.
+% \changes{v0.88}{2020/07/03}{\pkg{amsmath}: Added \cs{dotso} text mode.}
+%    \begin{macrocode}
+\newcommand*{\LWR at HTML@dotso}{\textellipsis\ }
+\LWR at formatted{dotso}
+%    \end{macrocode}
+% \end{noindmacro}
+%
+%
 % Patches to allow \cs{eqref} inside a caption:
 %
 % \changes{v0.49}{2018/02/18}{\pkg{amsmath}: Fix: Patches for \cs{eqref}.}
@@ -40128,6 +43279,7 @@
 % Embeds the environment inside a \env{lateximage}.
 %
 % \changes{v0.80}{2020/02/13}{AMS environments: Fix: Centering starred envs.}
+% \changes{v0.89}{2020/08/02}{AMS environments: Fix: \element{ALT} text env name.}
 %    \begin{macrocode}
 \NewDocumentCommand{\LWR at amsmathenv@@before}{s m}{%
     \IfBooleanTF{#1}{
@@ -40137,7 +43289,7 @@
     }
     \LWR at newautoidanchor%
     \booltrue{LWR at indisplaymathimage}%
-    \begin{lateximage}[\LWR at amsmathbodynumbered{#1}]*
+    \begin{lateximage}[\LWR at amsmathbodynumbered{#2}]*%
     \LWR at applyxfakebold%
 }
 %    \end{macrocode}
@@ -40214,7 +43366,7 @@
         {\LWR at amsmathenv@@after}
 %    \end{macrocode}
 % Clear the single-use \attribute{alt} text:
-% \changes{v0.74}{2019/08/20}{Add \cs{ThisAltText}.}
+% \changes{v0.74}{2019/08/20}{\pkg{amsmath}: Add \cs{ThisAltText}.}
 %    \begin{macrocode}
         \gdef\LWR at ThisAltText{}%
     }{}
@@ -40297,7 +43449,7 @@
 
 
 % \begin{environment}{alignat}
-% \changes{v0.51}{2018/03/11}{Fix: Added.}
+% \changes{v0.51}{2018/03/11}{\pkg{amsmath}: Fix: Added.}
 %    \begin{macrocode}
 \BeforeBeginEnvironment{alignat}{\LWR at amsmathenv@before{alignat}}
 
@@ -40315,12 +43467,33 @@
 % \end{environment}
 %
 %
+% \changes{v0.86}{2020/05/08}{\pkg{amsmath}: Added support for \brand{MathJax}.}
+%    \begin{macrocode}
+\AtBeginEnvironment{subequations}{
+    \renewcommand*{\theMathJaxsubequations}{1}
+    \renewcommand*{\theMathJaxsection}{\theparentequation}
+    \renewcommand*{\theMathJaxequation}{\arabic{equation}}
+}
+%    \end{macrocode}
+%
+%
 % 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}
 %
@@ -40374,21 +43547,33 @@
 %    \begin{macrocode}
 \@ifpackageloaded{mdframed}{
     \PackageError{lwarp}
-    {Package mdframed must be loaded after package amsthm}
     {%
-        Move \detokenize{\usepackage}{amsthm} before
-        \detokenize{\usepackage}{mdframed}.\MessageBreak
+        Package mdframed must be loaded after package amsthm.\MessageBreak
+        Enter 'H' for solutions%
+    }
+    {%
+        Move ``\protect\usepackage{amsthm}'' before
+        ``\protect\usepackage{mdframed}''.\MessageBreak
         Package amsthm may be loaded by something else,\MessageBreak
         which must also be moved before mdframed.%
     }
 }
-{}
+{\relax}
 %    \end{macrocode}
 %
+%
+% Necessary for \cs{text}, used by \cs{openbox}, etc., below:
+% \changes{v0.88}{2020/07/01}{\pkg{amsthm}: Requires \pkg{amsmath}.}
 %    \begin{macrocode}
+\RequirePackage{amsmath}
+%    \end{macrocode}
+%
+%
+%    \begin{macrocode}
 \LWR at ProvidesPackagePass{amsthm}[2017/10/31]
 %    \end{macrocode}
-
+%
+%
 % Storage for the style being used for new theorems:
 %    \begin{macrocode}
 \newcommand{\LWR at newtheoremstyle}{plain}
@@ -40423,7 +43608,9 @@
     \else % numbered theorem, need to check for optional arg
       \def\@tempa{\@oparg{\@ynthm{#2}}[]}%
     \fi
-    \AtBeginEnvironment{#2}{\edef\LWR at thisthmstyle{\@nameuse{LWR at thmstyle#2}}}% lwarp
+    \AtBeginEnvironment{#2}{%
+        \edef\LWR at thisthmstyle{\@nameuse{LWR at thmstyle#2}}%
+    }%          lwarp
   }%
   \@tempa
 }
@@ -40432,15 +43619,21 @@
 % Patched to enclose with \CSS:
 %    \begin{macrocode}
 \newcommand{\LWR at haveamsthmname}{
-\renewcommand{\thmname}[1]{\InlineClass{amsthmname\LWR at thisthmstyle}{##1}}
+    \renewcommand{\thmname}[1]{%
+        \InlineClass{amsthmname\LWR at thisthmstyle}{##1}%
+    }
 }
 
 \newcommand{\LWR at haveamsthmnumber}{
-\renewcommand{\thmnumber}[1]{\InlineClass{amsthmnumber\LWR at thisthmstyle}{##1}}
+    \renewcommand{\thmnumber}[1]{%
+        \InlineClass{amsthmnumber\LWR at thisthmstyle}{##1}%
+    }
 }
 
 \newcommand{\LWR at haveamsthmnote}{
-\renewcommand{\thmnote}[1]{\InlineClass{amsthmnote\LWR at thisthmstyle}{##1}}
+    \renewcommand{\thmnote}[1]{%
+        \InlineClass{amsthmnote\LWR at thisthmstyle}{##1}%
+    }
 }
 
 \LWR at haveamsthmname
@@ -40448,15 +43641,22 @@
 \LWR at haveamsthmnote
 %    \end{macrocode}
 %
-% Patches for \CSS:
+% Patched for \CSS:
 %    \begin{macrocode}
 \def\@begintheorem#1#2[#3]{%
+%    \end{macrocode}
+% \changes{v0.84}{2020/04/07}{\pkg{amsthm}: Fix for \cs{nameref}.}
+%    \begin{macrocode}
+    \GetTitleString{#3}%                                lwarp
+    \let\@currentlabelname\GetTitleStringResult%        lwarp
+%    \end{macrocode}
+%    \begin{macrocode}
     \item[
 %   \deferred at thm@head{
 %     \the\thm at headfont \thm at indent
-    \@ifempty{#1}{\let\thmname\@gobble}{\LWR at haveamsthmname}% lwarp
-    \@ifempty{#2}{\let\thmnumber\@gobble}{\LWR at haveamsthmnumber}% lwarp
-    \@ifempty{#3}{\let\thmnote\@gobble}{\LWR at haveamsthmnote}% lwarp
+    \@ifempty{#1}{\let\thmname\@gobble}{\LWR at haveamsthmname}%       lwarp
+    \@ifempty{#2}{\let\thmnumber\@gobble}{\LWR at haveamsthmnumber}%   lwarp
+    \@ifempty{#3}{\let\thmnote\@gobble}{\LWR at haveamsthmnote}%       lwarp
     \thm at swap\swappedhead\thmhead{#1}{#2}{#3}%
     \the\thm at headpunct~
     \thmheadnl % possibly a newline.
@@ -40472,8 +43672,8 @@
 \def\@thm#1#2#3{%
   \ifhmode\unskip\unskip\par\fi
   \normalfont
-  \LWR at forcenewpage% lwarp
-  \BlockClass{amsthmbody\LWR at thisthmstyle}% lwarp
+  \LWR at forcenewpage%                            lwarp
+  \BlockClass{amsthmbody\LWR at thisthmstyle}%     lwarp
   \trivlist
   \let\thmheadnl\relax
   \let\thm at swap\@gobble
@@ -40501,8 +43701,8 @@
 \def\cref at thmoptarg[#1]#2#3#4{%
     \ifhmode\unskip\unskip\par\fi%
     \normalfont%
-    \LWR at forcenewpage% lwarp
-    \BlockClass{amsthmbody\LWR at thisthmstyle}% lwarp
+    \LWR at forcenewpage%                          lwarp
+    \BlockClass{amsthmbody\LWR at thisthmstyle}%   lwarp
     \trivlist%
     \let\thmheadnl\relax%
     \let\thm at swap\@gobble%
@@ -40543,9 +43743,9 @@
 \def\Box{\text{\HTMLunicode{25A1}}}% UTF-8 white box
 
 \appto\LWR at restoreorigformatting{%
-\LetLtxMacro\openbox\LWR at orig@openbox%
-\LetLtxMacro\blacksquare\LWR at orig@blacksquare%
-\LetLtxMacro\Box\LWR at orig@Box%
+    \LetLtxMacro\openbox\LWR at orig@openbox%
+    \LetLtxMacro\blacksquare\LWR at orig@blacksquare%
+    \LetLtxMacro\Box\LWR at orig@Box%
 }% appto
 }{}% @ifundefined
 }% AtBeginDocument
@@ -41116,7 +44316,19 @@
 \LWR at ProvidesPackageDrop{atbegshi}[2011/10/05]
 %    \end{macrocode}
 %
+% \changes{v0.89}{2020/07/28}{\pkg{atbegshi}: Adapt to \LaTeX kernel changes.}
 %    \begin{macrocode}
+\let\AtBeginShipout\relax
+\let\AtBeginShipoutNext\relax
+\let\AtBeginShipoutFirst\relax
+\let\AtBeginShipoutDiscard\relax
+\let\AtBeginShipoutInit\relax
+\let\AtBeginShipoutAddToBox\relax
+\let\AtBeginShipoutAddToBoxForeground\relax
+\let\AtBeginShipoutUpperLeft\relax
+\let\AtBeginShipoutUpperLeftForeground\relax
+\let\AtBeginShipoutOriginalShipout\relax
+
 \newcommand*{\AtBeginShipout}[1]{}
 \newbox\AtBeginShipoutBox
 \newcommand*{\AtBeginShipoutNext}[1]{}
@@ -41131,7 +44343,6 @@
 \def\AtBeginShipoutBoxWidth{0pt}
 \def\AtBeginShipoutBoxHeight{0pt}
 \def\AtBeginShipoutBoxDepth{0pt}
-
 %    \end{macrocode}
 %
 % \iffalse
@@ -41212,7 +44423,7 @@
 % A file annotation becomes a reference:
 %    \begin{macrocode}
 \DeclareRobustCommand{\atfi at insert@file at annot}[1]{%
-    \href{#1}{\LWR at attachfile@appearance}%
+    \LWR at href{#1}{\LWR at attachfile@appearance}%
 }
 %    \end{macrocode}
 
@@ -41310,7 +44521,7 @@
 % A file annotation becomes a reference:
 %    \begin{macrocode}
 \DeclareRobustCommand{\atfi at insert@file at annot}[1]{%
-    \href{#1}{\LWR at attachfile@appearance}%
+    \LWR at href{#1}{\LWR at attachfile@appearance}%
 }
 %    \end{macrocode}
 %
@@ -41382,11 +44593,14 @@
 % Require that \pkg{authblk} be loaded before \pkg{titling}:
 %    \begin{macrocode}
 \@ifpackageloaded{titling}{
-\PackageError{lwarp-authblk}
-{Package authblk must be loaded before titling}
-{Titling appends authblk's author macro, so authblk must be loaded first.}
+    \PackageError{lwarp-authblk}
+        {Package authblk must be loaded before titling}
+        {%
+            Titling appends authblk's author macro,
+            so authblk must be loaded first.%
+        }
 }
-{}
+{\relax}
 %    \end{macrocode}
 %
 % Load \pkg{authblk}:
@@ -41728,7 +44942,8 @@
 % \credits{Adrian P. Robson}
 %
 % \DescribePackage{backnaur}
-% \pkg{backnaur} is patched for use by \pkg{lwarp}.
+% \pkg{backnaur} is patched for use by \pkg{lwarp},
+% and emulated for \brand{MathJax}.
 %
 % \changes{v0.72}{2019/05/20}{\pkg{backnaur}: Added.}
 %
@@ -41743,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 %
@@ -41789,6 +45004,43 @@
 % ^^A % \@ifpackagewith{backnaur}{epsilon}{\renewcommand{\bnfes}{\HTMLunicode{3f5}}}{}% \epsilon
 % ^^A %    \end{macrocode}
 %
+%
+% For \brand{MathJax}:
+%    \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\bnfpn}[1]{\langle \text{\textrm{#1}} \rangle}}
+\CustomizeMathJax{\newcommand{\bnfor}{\; \mid \;}}
+\CustomizeMathJax{\newcommand{\bnfsp}{\;}}
+\@ifpackagewith{backnaur}{perp}{
+    \CustomizeMathJax{\newcommand{\bnfes}{\perp}}
+}{
+    \@ifpackagewith{backnaur}{epsilon}{
+        \CustomizeMathJax{\newcommand{\bnfes}{\epsilon}}
+    }{
+        \CustomizeMathJax{\newcommand{\bnfes}{\lambda}}
+    }
+}
+\@ifpackagewith{backnaur}{tsrm}{
+    \CustomizeMathJax{\newcommand{\bnfts}[1]{\text{#1}}}
+}{
+    \CustomizeMathJax{\newcommand{\bnfts}[1]{\text{\texttt{#1}}}}
+}
+\CustomizeMathJax{\newcommand{\bnftd}[1]{\text{\textit{#1}}}}
+\CustomizeMathJax{\newcommand{\bnfsk}{\dots}}
+\@ifpackagewith{backnaur}{altpo}{
+    \CustomizeMathJax{\newcommand{\bnfpo}{::=}}
+}{
+    \CustomizeMathJax{\newcommand{\bnfpo}{\models}}
+}
+\CustomizeMathJax{\newcommand{\bnfprod}{\ifstar{\LWRbnfprodnn}{\LWRbnfprodyn}}}
+\CustomizeMathJax{\newcommand{\LWRbnfprodyn}[2]{\bnfpn{#1} & \bnfpo & #2}}
+\CustomizeMathJax{\newcommand{\LWRbnfprodnn}[2]{\nonumber \bnfpn{#1} & \bnfpo & #2}}
+\CustomizeMathJax{\newcommand{\bnfmore}{\ifstar{\LWRbnfmorenn}{\LWRbnfmoreyn}}}
+\CustomizeMathJax{\newcommand{\LWRbnfmoreyn}[1]{ &  & #1}}
+\CustomizeMathJax{\newcommand{\LWRbnfmorenn}[1]{\nonumber &  & #1}}
+\end{warpMathJax}
+%    \end{macrocode}
+%
 % \iffalse
 %</backnaur>
 % \fi
@@ -41815,6 +45067,7 @@
 % generating \HTML\ output.
 %
 % \changes{v0.45}{2018/01/14}{\pkg{backref}: Added.}
+% \changes{v0.84}{2020/04/07}{\pkg{backref}: Fixed from \pkg{lwarp} v0.72 changes.}
 %
 % \codehtml
 %
@@ -41824,7 +45077,13 @@
 
 % Force the \optn{hyperref} option:
 %    \begin{macrocode}
-\def\backref{}\let\backrefxxx\hyper at section@backref
+\def\backref{}
+
+\long\def\hyper at section@backref#1#2#3{%
+    \ref{#3}%
+}
+
+\let\backrefxxx\hyper at section@backref
 %    \end{macrocode}
 
 % \iffalse
@@ -42191,7 +45450,12 @@
 }{}
 %    \end{macrocode}
 %
+% \pkg{hyperref} emulation is loaded \cs{AtBeginDocument} to avoid an
+% options clash.
+% \changes{v0.84}{2020/04/24}{\pkg{biblatex}: Fixed: Requires \pkg{hyperref}.}
 %    \begin{macrocode}
+\AtBeginDocument{\RequirePackage{hyperref}}
+
 \LWR at ProvidesPackagePass{biblatex}[2018/03/04]
 %    \end{macrocode}
 %
@@ -42209,6 +45473,7 @@
         {}
         {\listxadd\blx at anchors{\the\c at refsection @\abx at field@entrykey}%
         \hypertarget{cite.\the\c at refsection @\abx at field@entrykey}{}}}
+
 \protected\def\blx at imc@bibhyperref{%
     \@ifnextchar[%]
       {\blx at bibhyperref}
@@ -42245,9 +45510,136 @@
 }
 
 \let\blx at imc@ifhyperref\@firstoftwo
-}
 %    \end{macrocode}
 %
+%
+% The following patches are for back page references.
+%
+% \changes{v0.891}{2020/09/05}{\pkg{biblatex}: Fixed: Back page references.}
+%    \begin{macrocode}
+\DeclareListFormat{pageref}{%
+  \ifnumless{\abx at pagerefstyle}{0}
+    {\usebibmacro{list:plain}%
+     \ifhyperref
+       {%
+%             \hyperlink{page.#1}{#1}%
+            \ref{\BaseJobname-autopage-#1}%  lwarp
+       }
+       {#1}}
+    {\ifnumequal{\value{listcount}}{1}
+       {\usebibmacro{pageref:init}}
+       {}%
+     \usebibmacro{pageref:comp}{#1}%
+     \ifnumequal{\value{listcount}}{\value{liststop}}
+       {\usebibmacro{pageref:dump}}
+       {}}}
+
+\renewbibmacro*{pageref:comp}[1]{%
+  \numdef\abx at range@prev{\abx at range@prev+1}%
+  \ifinteger{#1}
+    {\def\abx at range@num{#1}%
+     \def\abx at range@this{1}%
+     \ifnumequal{\abx at range@this}{\abx at range@last}
+       {}
+       {\def\abx at range@prev{-1}}}
+    {\ifrmnum{#1}
+       {\numdef\abx at range@num{\rmntonum{#1}}%
+        \def\abx at range@this{2}%
+        \ifnumequal{\abx at range@this}{\abx at range@last}
+          {}
+          {\def\abx at range@prev{-1}}}
+       {\undef\abx at range@num
+        \def\abx at range@this{0}%
+        \def\abx at range@prev{-1}}}%
+  \ifdef\abx at range@num
+    {\ifnumequal{\abx at range@num}{\abx at range@prev}
+       {\def\abx at range@hold{#1}%
+        \numdef\abx at range@diff{\abx at range@diff+1}}
+       {\usebibmacro{pageref:dump}%
+        \ifnumgreater{\abx at range@last}{-1}
+          {\printdelim{multilistdelim}}
+          {}%
+        \ifhyperref
+%           {\hyperlink{page.#1}{#1}}
+          {\ref{\BaseJobname-autopage-#1}}%  lwarp
+          {#1}}%
+     \edef\abx at range@prev{\abx at range@num}}
+    {\usebibmacro{pageref:dump}%
+     \ifnumgreater{\abx at range@last}{-1}
+       {\printdelim{multilistdelim}}
+       {}%
+     \ifhyperref
+%        {\hyperlink{page.#1}{#1}}
+       {\ref{\BaseJobname-autopage-#1}}%  lwarp
+       {#1}%
+     \def\abx at range@prev{-1}}%
+  \edef\abx at range@last{\abx at range@this}}
+
+\renewbibmacro*{pageref:dump}{%
+  \ifnumgreater{\abx at range@diff}{0}
+    {\ifcase\abx at pagerefstyle\relax % two
+       \bibrangedash
+       \ifhyperref
+%          {\hyperlink{page.\abx at range@hold}{\abx at range@hold}}
+         {\ref{\BaseJobname-autopage-\abx at range@hold}}%  lwarp
+         {\abx at range@hold}%
+     \or % three
+       \ifnumless{\abx at range@diff}{2}
+         {\printdelim{multilistdelim}}
+         {\bibrangedash}%
+       \ifhyperref
+%          {\hyperlink{page.\abx at range@hold}{\abx at range@hold}}
+         {\ref{\BaseJobname-autopage-\abx at range@hold}}%  lwarp
+         {\abx at range@hold}%
+     \or % two+
+       \ifnumless{\abx at range@diff}{2}
+         {\sqspace
+          \ifhyperref
+%             {\hyperlink{page.\abx at range@hold}{\bibstring{sequens}}}
+            {\ref{\BaseJobname-autopage-\abx at range@hold}}%  lwarp
+            {\bibstring{sequens}}}
+         {\bibrangedash
+          \ifhyperref
+%             {\hyperlink{page.\abx at range@hold}{\abx at range@hold}}
+            {\ref{\BaseJobname-autopage-\abx at range@hold}}%  lwarp
+            {\abx at range@hold}}%
+     \or % three+
+       \ifnumless{\abx at range@diff}{2}
+         {\sqspace
+          \ifhyperref
+%             {\hyperlink{page.\abx at range@hold}{\bibstring{sequens}}}
+            {\ref{\BaseJobname-autopage-\abx at range@hold}}%  lwarp
+            {\bibstring{sequens}}}
+         {\ifnumless{\abx at range@diff}{3}
+            {\sqspace
+             \ifhyperref
+%                {\hyperlink{page.\abx at range@hold}{\bibstring{sequentes}}}
+               {\ref{\BaseJobname-autopage-\abx at range@hold}}%  lwarp
+               {\bibstring{sequentes}}}
+            {\bibrangedash
+             \ifhyperref
+%                {\hyperlink{page.\abx at range@hold}{\abx at range@hold}}
+               {\ref{\BaseJobname-autopage-\abx at range@hold}}%  lwarp
+               {\abx at range@hold}}}%
+     \else % all+
+       \ifnumless{\abx at range@diff}{2}
+         {\sqspace
+          \ifhyperref
+%             {\hyperlink{page.\abx at range@hold}{\bibstring{sequens}}}
+            {\ref{\BaseJobname-autopage-\abx at range@hold}}%  lwarp
+            {\bibstring{sequens}}}
+         {\sqspace
+          \ifhyperref
+%             {\hyperlink{page.\abx at range@hold}{\bibstring{sequentes}}}
+            {\ref{\BaseJobname-autopage-\abx at range@hold}}%  lwarp
+            {\bibstring{sequentes}}}%
+     \fi
+     \def\abx at range@diff{0}}
+    {}}
+
+}% \AfterPreamble
+%    \end{macrocode}
+%
 % \iffalse
 %</biblatex>
 % \fi
@@ -42254,6 +45646,8 @@
 %
 %
 %
+%
+%
 % \iffalse
 %<*bibunits>
 % \fi
@@ -42783,12 +46177,17 @@
 %
 % For \brand{MathJax}:
 % \changes{v0.79}{2020/01/30}{\pkg{booktabs}: Added \brand{MathJax} emulation.}
+% \changes{v0.894}{2020/12/22}{\pkg{booktabs}: \brand{MathJax}: Absorb \cs{cmidrule} trim arg.}
 %    \begin{macrocode}
 \begin{warpMathJax}
 \CustomizeMathJax{\newcommand{\toprule}[1][]{\hline}}
 \CustomizeMathJax{\let\midrule\toprule}
 \CustomizeMathJax{\let\bottomrule\toprule}
-\CustomizeMathJax{\newcommand{\cmidrule}[2][]{}}% avoid (trim)
+\CustomizeMathJax{\def\LWRbooktabscmidruleparen(#1)#2{}}
+\CustomizeMathJax{\newcommand{\LWRbooktabscmidrulenoparen}[1]{}}
+\CustomizeMathJax{\newcommand{\cmidrule}[1][]{%
+    \ifnextchar(\LWRbooktabscmidruleparen\LWRbooktabscmidrulenoparen%
+}}
 \CustomizeMathJax{\newcommand{\morecmidrules}{}}
 \CustomizeMathJax{\newcommand{\specialrule}[3]{\hline}}
 \CustomizeMathJax{\newcommand{\addlinespace}[1][]{}}
@@ -42861,27 +46260,27 @@
 %
 %
 % \iffalse
-%<*boxedminipage2e>
+%<*boxedminipage>
 % \fi
 
-% \part{lwarp-boxedminipage2e.sty}
+% \part{lwarp-boxedminipage.sty}
 
-% \section{boxedminipage2e}
+% \section{boxedminipage}
 %
 % \credits{Scott Pakin}
 %
-% \DescribePackage{boxedminipage2e}
-% \pkg{boxedminipage2e} is emulated for \HTML, and used as-is for \env{lateximage}s.
+% \DescribePackage{boxedminipage}
+% \pkg{boxedminipage} is emulated for \HTML, and used as-is for \env{lateximage}s.
 %
 % \changes{v0.34}{2017/07/26}{\pkg{boxedminipage2e}: Added.}
 % \changes{v0.72}{2019/06/07}{\pkg{boxedminipage2e}: Added support for \env{lateximage}s.}
 % \changes{v0.73}{2019/06/24}{\pkg{boxedminipage2e}: Fix: Paragraph tags.}
+% \changes{v0.84}{2020/04/23}{\pkg{boxedminipage}: Renamed from \pkg{boxedminipage2e} per author.}
 %
 % \codehtml
 %
-% Discard all options for \pkg{lwarp-boxedminipage2e}:
 %    \begin{macrocode}
-\LWR at ProvidesPackagePass{boxedminipage2e}[2015/03/09]
+\LWR at ProvidesPackagePass{boxedminipage}[2020/04/19]
 %    \end{macrocode}
 
 %    \begin{macrocode}
@@ -42899,6 +46298,34 @@
 %    \end{macrocode}
 
 % \iffalse
+%</boxedminipage>
+% \fi
+%
+%
+%
+% \iffalse
+%<*boxedminipage2e>
+% \fi
+
+% \part{lwarp-boxedminipage2e.sty}
+
+% \section{boxedminipage2e}
+%
+% \credits{Scott Pakin}
+%
+% \DescribePackage{boxedminipage2e}
+% \pkg{boxedminipage2e} has been renamed \pkg{boxedminipage} by the author.
+%
+% \changes{v0.84}{2020/04/23}{\pkg{boxedminipage}: Renamed from \pkg{boxedminipage2e} per author.}
+%
+% \codehtml
+%
+% Automatically loads \pkg{boxedminipage}:
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{boxedminipage2e}
+%    \end{macrocode}
+
+% \iffalse
 %</boxedminipage2e>
 % \fi
 %
@@ -42918,9 +46345,10 @@
 %
 % \DescribePackage{braket}
 % \pkg{braket} works as-is for \HTML\ with \SVG\ math.
-% For \brand{MathJax}, emulation is provided by \brand{MathJax} macros.
+% For \brand{MathJax}, the \brand{MathJax} extension is used.
 %
 % \changes{v0.79}{2020/01/29}{\pkg{braket}: Added.}
+% \changes{v0.893}{2020/10/30}{\pkg{braket}: Now uses \brand{MathJax} extension.}
 %
 % \codehtml
 %
@@ -42930,14 +46358,7 @@
 %
 %    \begin{macrocode}
 \begin{warpMathJax}
-\CustomizeMathJax{\newcommand{\bra}[1]{\langle#1\vert}}
-\CustomizeMathJax{\newcommand{\Bra}[1]{\left\langle#1\right\vert}}
-\CustomizeMathJax{\newcommand{\ket}[1]{\vert#1\rangle}}
-\CustomizeMathJax{\newcommand{\Ket}[1]{\left\vert#1\right\rangle}}
-\CustomizeMathJax{\newcommand{\braket}[1]{\langle#1\rangle}}
-\CustomizeMathJax{\newcommand{\Braket}[1]{\left\langle#1\right\rangle}}
-\CustomizeMathJax{\newcommand{\set}[1]{\{#1\}}}
-\CustomizeMathJax{\newcommand{\Set}[1]{\left\{#1\right\}}}
+    \CustomizeMathJax{\require{braket}}
 \end{warpMathJax}
 %    \end{macrocode}
 %
@@ -42973,7 +46394,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\LetLtxMacro\burl\url
+\LetLtxMacro\burl\LWR at url
 
 \NewDocumentCommand{\LWR at burlaltb}{O{} +m m}{%
     \LWR at ensuredoingapar%
@@ -43130,8 +46551,59 @@
 %
 %
 %
+% \iffalse
+%<*bussproofs>
+% \fi
 %
+% \part{lwarp-bussproofs.sty}
+%
+% \section{bussproofs}
+%
+% \credits{Samuel R. Buss}
+%
+% \DescribePackage{bussproofs}
+% \pkg{bussproofs} is used as-is for \HTML, and
+% emulated by \brand{MathJax}'s extension.
+%
+% If not using \brand{MathJax}, inline proofs with \cs{DisplayMath} must be placed
+% \trouble[\cs{DisplayProof}]{bussproofs=\pkg{bussproofs}}
+% inside a math expression.
+%
+% If using \brand{MathJax}, only the \env{prooftree} environment may be used,
+% not \cs{DisplayProof}.
+%
+% \changes{v0.891}{2020/09/20}{\pkg{bussproofs}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{bussproofs}% no date in file
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\ifbool{mathjax}{
+    \CustomizeMathJax{\require{bussproofs}}
+
+    \NewEnviron{LWR at HTML@prooftree}%
+        {\LWR at doequation{\BODY}{prooftree}}%
+        [\LWR at doendequation{prooftree}]
+    \LWR at formattedenv{prooftree}
+}{% SVG HTML
+    \BeforeBeginEnvironment{prooftree}{%
+        \begin{lateximage}[-bussproofs-~\PackageDiagramAltText]%
+    }
+    \AfterEndEnvironment{prooftree}{\end{lateximage}}
+}
+%    \end{macrocode}
+%
 % \iffalse
+%</bussproofs>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*bxpapersize>
 % \fi
 %
@@ -43206,9 +46678,10 @@
 % \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.}
 %
 % \codehtml
 %
@@ -43263,6 +46736,15 @@
 %    \end{macrocode}
 % \end{noindmacro}
 %
+% For \brand{MathJax}:
+%    \begin{macrocode}
+\begin{warpMathJax}
+\PackageWarningNoLine{lwarp, cancel}{The MathJax v3 extension will be used}
+\CustomizeMathJax{\require{cancel}}
+\end{warpMathJax}
+%    \end{macrocode}
+
+%
 % \iffalse
 %</cancel>
 % \fi
@@ -43317,128 +46799,268 @@
 % \pkg{caption} is patched for use by \pkg{lwarp}.
 %
 % \changes{v0.47}{2018/01/25}{\pkg{caption}: Added.}
+% \changes{v0.78}{2019/10/30}{\pkg{caption}: Added warning regarding passing options.}
+% \changes{v0.84}{2020/04/16}{\pkg{caption}: Simplified.}
+% \changes{v0.84}{2020/04/20}{\pkg{caption}: Non-width \cs{parbox}es.}
+% \changes{v0.89}{2020/08/25}{\pkg{caption}: Adapt to v3.5.}
+% \changes{v0.893}{2020/11/26}{\pkg{caption}: Updated date to v3.5g.}
 %
 % \codehtml
 %
-% \changes{v0.78}{2019/10/30}{\pkg{caption}: Added warning regarding passing options.}
 %    \begin{macrocode}
 \typeout{---}
 \typeout{Packages lwarp and caption:}
 \typeout{If a ``Missing \protect\begin\protect{document\protect}'' error occurs here,}
-\typeout{try using: \space \protect\usepackage\protect{caption\protect}\space\protect\captionsetup{options}}
+\typeout{try using: \space \protect\usepackage\protect{caption\protect}\space%
+    \protect\captionsetup{options}}
 \typeout{instead of: \protect\usepackage[options]\protect{caption\protect}.}
 \typeout{---}
 
-\LWR at ProvidesPackagePass{caption}[2019/09/01]
+\LWR at ProvidesPackagePass{caption}[2020/10/26]
 %    \end{macrocode}
-
-%    \begin{macrocode}
-\renewcommand\caption at ibox[3]{%
-  \@testopt{\caption at iibox{#1}{#2}{#3}}{%
-%         \wd\@tempboxa%
-        \linewidth% lwarp
-  }%
-% \LWR at traceinfo{caption at ibox: done}%
-}
-%    \end{macrocode}
 %
+% ^^A This could be given a permanent standardized name, then redefined by lwarp.
 %    \begin{macrocode}
-\long\def\caption at iibox#1#2#3[#4]{%
-  \@testopt{\caption at iiibox{#1}{#2}{#3}{#4}}\captionbox at hj@default
+\long\def\caption at iibox@#1#2#3#4{%
+%   \setbox\@tempboxa\hbox{#4}%
+  \caption at iiibox{#1}{#2}{#3}%
+%         [\wd\@tempboxa]%
+        []%                             lwarp
+        [\captionbox at hj@default]%
+%         {\unhbox\@tempboxa}%
+        {{#4}}%                         lwarp
 }
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\long\def\caption at iiibox#1#2#3#4[#5]#6{%
-%   \setbox\@tempboxa\hbox{#6}%
+\long\def\caption at iiiibox#1#2#3#4#5[#6][#7]#8{%
   \begingroup
   #1*% set \caption at position
   \caption at iftop{%
-    \LWR at traceinfo{caption at iiibox top}%
     \endgroup
-    \parbox[t]{#4}{%
+%    \end{macrocode}
+%
+% ^^A This parbox could be factored out, given a permanent name,
+% ^^A then redefined by lwarp.
+%    \begin{macrocode}
+    \minipagefullwidth%                 lwarp
+    \parbox[t]{\linewidth}{%
       #1\relax
       \caption at setposition t%
-%       \vbox{\caption#2{#3}}%
-      {\caption#2{#3}}% lwarp
+%       #2%
+            {\caption#4{#5}}%
 %       \captionbox at hrule
-%       \csname caption at hj@#5\endcsname
-%       \unhbox\@tempboxa
-       #6% lwarp
+%       \csname caption at hj@#7\endcsname
+      #8%
     }%
   }{%
-    \LWR at traceinfo{caption at iiibox bottom}%
     \endgroup
-    \parbox[b]{#4}{%
+%    \end{macrocode}
+%
+% ^^A This parbox could be factored out, given a permanent name,
+% ^^A then redefined by lwarp.
+%    \begin{macrocode}
+%     \parbox[b]{#6}{%
+    \minipagefullwidth%                 lwarp
+    \parbox[b]{\linewidth}{%            lwarp
       #1\relax
       \caption at setposition b%
-%       \csname caption at hj@#5\endcsname
-%       \unhbox\@tempboxa
-         #6% lwarp
+%       \csname caption at hj@#7\endcsname
+      #8%
 %       \captionbox at hrule
-%       \vtop{\caption#2{#3}}}%
-      {\caption#2{#3}}% lwarp
-     }%
+%       #3
+            {\caption#4{#5}}%
+    }%
   }%
-\LWR at traceinfo{caption at iiibox: done}%
 }
+%    \end{macrocode}
 
-% \def\caption at caption{%
-%   \caption at iftype
-%     {%
-%      \caption at checkgrouplevel\@empty\caption
-%      \caption at star
-%        {\caption at refstepcounter\@captype}%
-%        {\caption at dblarg{\@caption\@captype}}}%
-%     {\caption at Error{\noexpand\caption outside float}%
-%      \caption at gobble}%
-% }
+% \begin{noindmacro}{\caption at makecaption}
+% \changes{v0.71}{2019/04/08}{\pkg{caption}: Reduced underfull \cs{hbox} warnings.}
+% ^^A Lwarp could nullify \caption at make@above/bottom.
+%    \begin{macrocode}
+\long\def\caption at makecaption#1#2{%
+%   \caption at make@above
+  \caption@@make{#1}{#2}%
+%   \caption at make@below
+}
 
-\long\def\caption@@caption#1[#2]#3{%
+\AtBeginDocument{
+    \let\@makecaption\caption at makecaption
+}
 %    \end{macrocode}
+% \end{noindmacro}
+
+
+% Appended to look ahead to the next token for \cs{centering}, etc:
+% \changes{v0.84}{2020/04/20}{\pkg{caption}: Improved integration.}
+% \changes{v0.891}{2020/09/04}{\pkg{caption}: Improved integration.}
 %    \begin{macrocode}
-  \ifcaption at star
-    \else
-    \caption at prepareanchor{#1}{#2}%
-    \memcaptioninfo{#1}{\csname the#1\endcsname}{#2}{#3}%
-    \@nameuse{nag at hascaptiontrue}%
-  \fi
+\AtBeginDocument{
+\xapptocmd{\@xfloat}
+    {\LWR at futurenonspacelet\LWR at mynexttoken\LWR at floatalignment}
+    {}
+    {\LWR at patcherror{caption}{@xfloat}}
+
+\xapptocmd{\@xdblfloat}
+    {\LWR at futurenonspacelet\LWR at mynexttoken\LWR at floatalignment}
+    {}
+    {\LWR at patcherror{caption}{@xdblfloat}}
+}
 %    \end{macrocode}
+
+
+% Updates for late patches for \pkg{scrextend}:
+% \changes{v0.88}{2020/07/15}{\pkg{caption}, \pkg{scrextend}: Fixed \cs{caption*}.}
 %    \begin{macrocode}
-  \par
-  \caption at beginex{#1}{#2}{#3}%
-    \caption at setfloatcapt{%
-      \caption at boxrestore
-      \if at minipage
-        \@setminipage
-      \fi
-      \caption at normalsize
+\caption at AtBeginDocument{
+\@ifpackageloaded{lwarp-scrextend}{
+    \LetLtxMacro\captionbelow\caption
+    \LetLtxMacro\captionabove\caption
+    \LetLtxMacro\captionofbelow\captionof
+    \LetLtxMacro\captionofabove\captionof
+}{}
+}
 %    \end{macrocode}
-% \changes{v0.73}{2019/07/11}{\pkg{caption}: Fix for starred captions.}
+%
+% \iffalse
+%</caption>
+% \fi
+%
+%
+%
+%
+%
+% \iffalse
+%<*caption3>
+% \fi
+%
+% \part{lwarp-caption3.sty}
+
+% \section{caption3}
+%
+% \credits{Axel Sommerfeldt}
+%
+% \DescribePackage{caption3}
+% \pkg{caption3} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.89}{2020/08/25}{\pkg{caption3}: Split from \pkg{lwarp-caption}.}
+% \changes{v0.893}{2020/11/26}{\pkg{caption3}: Updated date to v2.2e.}
+%
+% \codehtml
+%
 %    \begin{macrocode}
-      \ifcaption at star
-        \let\caption at makeanchor\@firstofone
-        #3%                 lwarp
-        \else%              lwarp
-      \@makecaption{\csname fnum@#1\endcsname}%
-                   {\ignorespaces\caption at makeanchor{#3}}%
-        \fi%                lwarp
+\LWR at ProvidesPackagePass{caption3}[2020/10/21]
 %    \end{macrocode}
-% \changes{v0.70}{2019/03/24}{\pkg{caption}: Fix: Extra par tags.}
-%    \begin{macrocode}
-% \par
-      \caption at if@minipage\@minipagetrue\@minipagefalse}%
-  \caption at end%
-}
-%    \end{macrocode}
-
+%
+%
 % \begin{noindmacro}{\caption@@@make}
 %   \marg{caption label} \marg{caption text}
 %    \begin{macrocode}
+\@ifpackagelater{caption3}{2020/08/23}{
 \renewcommand\caption@@@make[2]{%
 \LWR at traceinfo{caption@@@make}%
+%    \end{macrocode}
+%
+% ^^A Lwarp has to stop and start its paragraph handling,
+% ^^A so I guess caption package could provide null macros for
+% ^^A \LWR at stoppars and \LWR at startpars if lwarp has not already defined them.
+%    \begin{macrocode}
+    \LWR at stoppars%                              lwarp
+%    \end{macrocode}
+%
+% ^^A This could be factored out into a macro with a standard name
+% ^^A which lwarp could nullify:
+%    \begin{macrocode}
 %   \sbox\@tempboxa{#1}%
 %   \ifdim\wd\@tempboxa=\z@
+%     \caption at set{labelseparator}{none}%
+%   \fi
+  \caption at ifempty{#2}{%
+    \caption at set{labelseparator}{none}%
+    \caption at set{textformat}{simple}%
+  }%
+  \caption at labelseparator % defines \caption at iflabelfont, 
+%       \caption at labelsep and \caption at labelsep@name
+%       (the latter is needed by \caption at fmt)
+%
+%    \end{macrocode}
+%
+% ^^A This could be factored out into a macro with a standard name
+% ^^A which lwarp could nullify:
+%    \begin{macrocode}
+%   \@setpar{\@@par\caption@@par}\caption@@par
+  \caption at applyfont
+%    \end{macrocode}
+%
+% \cs{caption at fmt} with \optn{plain} format is defined as |{#1#2#3\par}|:
+%
+%    \begin{macrocode}
+%   \caption at fmt
+    {\ifcaption at star\else
+       \begingroup
+         \captionlabelfont
+%    \end{macrocode}
+%
+% ^^A \LWR at isolate could also be provided by caption if lwarp has
+% ^^A not already defined it.  For caption, it might be \@firstofone, for example.
+% ^^A (For lwarp it improved Chinese text handling.)
+%    \begin{macrocode}
+         \LWR at isolate{#1}%                      lwarp
+       \endgroup
+     \fi}%
+    {\ifcaption at star\else
+       \begingroup
+         \caption at iflabelfont\captionlabelfont
+         \relax\caption at labelsep
+       \endgroup
+     \fi}%
+    {{\captiontextfont
+%    \end{macrocode}
+%
+% ^^A Another null macro in caption, which could be provided if
+% ^^A lwarp has not yet defined it:
+%    \begin{macrocode}
+        \let\\\newline%                         lwarp
+%
+      \caption at textstart
+%    \end{macrocode}
+%
+% ^^A This could be factored out into a macro with a standard name
+% ^^A which lwarp could nullify:
+%    \begin{macrocode}
+%       \caption at ifstrut
+%         {\vrule\@height\ht\strutbox\@width\z@}%
+%         {}%
+%       \nobreak\hskip\z at skip % enable hyphenation
+%    \end{macrocode}
+%
+% ^^A \LWR at isolate again:
+%    \begin{macrocode}
+      \LWR at isolate{\caption at textformat{#2}}%    lwarp
+%    \end{macrocode}
+%
+% ^^A This could be factored out into a macro with a standard name
+% ^^A which lwarp could nullify:
+%    \begin{macrocode}
+%       \caption at ifstrut
+%         {\ifhmode\@finalstrut\strutbox\fi}%
+%         {}%
+      \caption at textend}}%
+%    \end{macrocode}
+%
+% ^^A as \LWR at startpars above:
+%    \begin{macrocode}
+    \LWR at startpars%                              lwarp
+\LWR at traceinfo{caption@@@make done}%
+}
+}% later than 2020/08/23
+{% earlier than 2020/08/23
+\renewcommand\caption@@@make[2]{%
+\LWR at traceinfo{caption@@@make}%
+    \LWR at stoppars%                              lwarp
+%   \sbox\@tempboxa{#1}%
+%   \ifdim\wd\@tempboxa=\z@
 %     \let\caption at lsep\relax
 %   \fi
   \caption at ifempty{#2}{%
@@ -43445,6 +47067,7 @@
     \let\caption at lsep\@empty
     \let\caption at tfmt\@firstofone
   }%
+%   \@setpar{\@@par\caption@@par}\caption@@par
   \caption at applyfont
 %    \end{macrocode}
 % \cs{caption at fmt} with \optn{plain} format is defined as |{#1#2#3\par}|:
@@ -43453,7 +47076,7 @@
     {\ifcaption at star\else
        \begingroup
         \captionlabelfont
-         #1%
+         \LWR at isolate{#1}%                      lwarp
        \endgroup
      \fi}%
     {\ifcaption at star\else
@@ -43465,59 +47088,57 @@
      \fi}%
     {{%
         \captiontextfont
+        \let\\\newline%                         lwarp
 %       \caption at ifstrut
 %         {\vrule\@height\ht\strutbox\@width\z@}%
 %         {}%
 %       \nobreak\hskip\z at skip % enable hyphenation
-        \caption at tfmt{#2}%
+        \LWR at isolate{\caption at tfmt{#2}}%        lwarp
 %       \caption at ifstrut
 %         {\ifhmode\@finalstrut\strutbox\fi}%
 %         {}%
       }}%
+    \LWR at startpars%                              lwarp
 \LWR at traceinfo{caption@@@make done}%
 }
+}% earlier than 2020/08/23
 %    \end{macrocode}
 % \end{noindmacro}
-
+%
+%
 % \begin{noindmacro}{\caption@@make@} \marg{} \marg{}
+% ^^A This could be given a standardized name,
+% ^^A and redefined by lwarp as follows.  Most of the original
+% ^^A is thrown away.
 %    \begin{macrocode}
 \renewcommand{\caption@@make@}[2]{%
-  \caption at stepthecounter
-  \caption at beginhook
+  \caption at stepthecounter%
+  \caption at beginhook%
       \caption@@@make{#1}{#2}%
-  \caption at endhook
+  \caption at endhook%
 }
 %    \end{macrocode}
 % \end{noindmacro}
-
-% \begin{noindmacro}{\caption at makecaption}
-% \changes{v0.71}{2019/04/08}{Reduced underfull \cs{hbox} warnings.}
+%
+%
+%
+% ^^A These are simplifications for HTML:
 %    \begin{macrocode}
-\long\def\caption at makecaption#1#2{%
-%   \caption at iftop
-%     {\vskip\belowcaptionskip}%
-%     {\caption at rule\vskip\abovecaptionskip}%
-  \caption@@make{#1}{#2}%
-%   \caption at iftop
-%     {\vskip\abovecaptionskip\caption at rule}%
-%     {\vskip\belowcaptionskip}%
+\DeclareCaptionBox{none}{#2}
+\DeclareCaptionBox{parbox}{%
+    #2%
 }
 %    \end{macrocode}
-% \end{noindmacro}
-
-
+%
+% ^^A Simplification for HTML:
 %    \begin{macrocode}
-% \DeclareCaptionBox{none}{#2}
-\DeclareCaptionBox{parbox}{%
-#2%
-}
 \DeclareCaptionBox{colorbox}{%
-#2%
+    #2%
 }
 %    \end{macrocode}
-
+%
 % \iffalse
-%</caption>
+%</caption3>
 % \fi
 %
 %
@@ -43524,9 +47145,6 @@
 %
 %
 %
-%
-%
-%
 % \iffalse
 %<*cases>
 % \fi
@@ -43596,6 +47214,7 @@
 % and emulated for \brand{MathJax}.
 %
 % \changes{v0.80}{2020/02/08}{\pkg{centernot}: Added.}
+% \changes{v0.89}{2020/08/17}{\pkg{centernot}: Improved.}
 %
 % \codehtml
 %
@@ -43603,9 +47222,17 @@
 \LWR at ProvidesPackagePass{centernot}[2016/05/16]
 %    \end{macrocode}
 %
+% Based on \href{https://github.com/mathjax/MathJax/issues/2107}
+%   {\texttt{https://github.com/mathjax/MathJax/issues/2107}}
+%   with \cs{textstyle} removed to work with sub \Slash super scripts.
+%
 %    \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-overlaysymbols}
+
 \begin{warpMathJax}
-\CustomizeMathJax{\newcommand{\centernot}[1]{\not{\!#1\,}}}
+\CustomizeMathJax{\newcommand{\centernot}[1]{%
+    \LWRoverlaysymbols{\unicode{x2215}}{#1}
+}}
 \end{warpMathJax}
 %    \end{macrocode}
 %
@@ -43774,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.
@@ -43788,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}%
@@ -43796,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
@@ -44132,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.
@@ -44469,7 +48244,7 @@
 % \codehtml
 %
 %    \begin{macrocode}
-\LWR at ProvidesPackagePass{chemgreek}[2016/02/10]
+\LWR at ProvidesPackagePass{chemgreek}[2020/01/16]
 %    \end{macrocode}
 
 %    \begin{macrocode}
@@ -44515,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}
 %
@@ -45731,9 +49506,51 @@
 %
 %
 %
+% \iffalse
+%<*citeref>
+% \fi
 %
+% \part{lwarp-citeref.sty}
 %
+% \section{citeref}
+%
+% \credits{Bj\"orn Briel}
+%
+% \DescribePackage{citeref}
+% \pkg{citeref} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.87}{2020/05/16}{\pkg{citeref}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{citeref}[1999/27/05]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\def\@cprwrite#1={\write\@auxout{\string\citepageref{#1}{\theLWR at currentautosec}}}
+
+\def\citepageref#1#2{%
+    \xdef\cpr at testa{\@nameuse{cpr at last@#1}}%letzte Zitatstelle
+    \xdef\cpr at testb{#2}% Seite dieser Zitatstelle
+    \ifx\cpr at testa\cpr at testb%
+        \relax% Konsekutive identische Seitenangaben weglassen
+    \else%
+        \@namexdef{cpr at last@#1}{#2}%
+        \@ifundefined{cpr@#1}%
+            {\@namexdef{cpr@#1}{\ref{\BaseJobname-autopage-#2}}}%   lwarp
+            {\@namexdef{cpr@#1}{\@nameuse{cpr@#1}, \ref{\BaseJobname-autopage-#2}}}%    lwarp
+    \fi
+    }
+%    \end{macrocode}
+%
 % \iffalse
+%</citeref>
+% \fi
+%
+%
+%
+% \iffalse
 %<*CJK>
 % \fi
 %
@@ -45792,6 +49609,258 @@
 %
 %
 % \iffalse
+%<*cleveref>
+% \fi
+%
+% \part{lwarp-cleveref.sty}
+%
+% \section{cleveref}
+% \label{sec:cleveref}
+%
+% \credits{Toby Cubitt}
+%
+% \DescribePackage{cleveref}
+% \pkg{cleveref} is patched for \HTML, and
+% limited \brand{MathJax} emulation is added.
+%
+% \limitscpageref
+%
+% \Cref{tab:crossrefdata} on page \pageref{tab:crossrefdata}
+% shows the data structure of the label/reference system
+% as revised by \pkg{lwarp} and \pkg{cleveref}.
+%
+% For \brand{MathJax},
+% each references is printed as an \cs{eqref}, without \pkg{cleveref}'s
+% description text.  Page references are also printed as simple \cs{eqref}s.
+% Multiple labels in a single \cs{cref} will print as \texttt{(???)} in \brand{MathJax}.
+% \watchout[multiple labels]
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{cleveref}[2018/03/27]
+%    \end{macrocode}
+%
+%
+% \changes{v0.20}{2017/01/05}{\pkg{cleveref} and referencing patches:
+%   Applied \cs{AfterEndPreamble}.}
+%
+% The following patches are applied.
+% Print-mode versions are not required since they all come down to \cs{ref} eventually,
+% and \cs{ref} has a print-mode version.
+%
+% \begin{macro}{\@@@setcref} \marg{kindofref} \marg{label}
+%
+% \cs{@templabel} becomes the section number.
+%
+% \changes{v0.48}{2018/02/10}{Fix for new v0.21 of \pkg{cleveref}.}
+%    \begin{macrocode}
+\def\LWR at orig@@@setcref#1#2{\cref at getlabel{#2}{\@templabel}#1{\@templabel}{}{}}%
+
+\ifdefequal{\@@setcref}{\LWR at orig@@@setcref}{% before v0.21
+    \renewcommand*{\@@setcref}[2]{#1{\ref{#2}}{}{}}
+}{
+    \ifdefequal{\@@@setcref}{\LWR at orig@@@setcref}{% as of v0.21
+        \renewcommand*{\@@@setcref}[2]{%
+            #1{\ref{#2}}{}{}}
+    }{
+        \PackageWarningNoLine{lwarp-cleveref}{
+            Unknown version of cleveref.
+            \protect\cref\space will fail.
+        }%
+    }
+}
+%    \end{macrocode}
+% \end{macro}
+
+%\begin{macro}{\@@@setcrefrange} \marg{text} \marg{label} \marg{label}
+% \changes{v0.48}{2018/02/10}{Fix for new v0.21 of \pkg{cleveref}.}
+%    \begin{macrocode}
+\def\LWR at orig@@@setcrefrange#1#2#3{%
+  \cref at getlabel{#2}{\@labela}%
+  \cref at getlabel{#3}{\@labelb}%
+  #1{\@labela}{\@labelb}{}{}{}{}}%
+
+\ifdefequal{\@@setcrefrange}{\LWR at orig@@@setcrefrange}{
+    \renewcommand{\@@setcrefrange}[3]{%
+        #1{\ref{#2}}{\ref{#3}}{}{}{}{}%
+    }
+}{
+    \ifdefequal{\@@@setcrefrange}{\LWR at orig@@@setcrefrange}{
+        \renewcommand{\@@@setcrefrange}[3]{%
+            #1{\ref{#2}}{\ref{#3}}{}{}{}{}%
+        }
+    }{
+        \PackageWarningNoLine{lwarp-cleveref}{
+            Unknown version of cleveref.
+            \protect\crefrange\space will fail.
+        }
+    }
+}
+%    \end{macrocode}
+% \end{macro}
+
+% ^^A  orig:
+% ^^A  \def\@@setcpageref#1#2{%
+% ^^A    \cref at getpageref{#2}{\@temppage}#1{\@temppage}{}{}}
+
+
+% \label{sec:cpagereffor}
+% \begin{macro}{\cpagerefFor} Redefinable word between ``page(s)'' and the page numbers.
+%
+% \changes{v0.20}{2017/01/03}{User-redefinable word for page references.}
+%
+%    \begin{macrocode}
+\newcommand*{\cpagerefFor}{for}
+%    \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\@@@setcpageref} \marg{typeofref} \marg{label},
+% where typeofref is ``page'' or ``pages''
+%
+% \changes{v0.48}{2018/02/10}{Fix for new v0.21 of \pkg{cleveref}.}
+%    \begin{macrocode}
+\def\LWR at orig@@setcpageref#1#2{% before v0.21
+  \cref at getpageref{#2}{\@temppage}#1{\@temppage}{}{}}%
+
+\def\LWR at orig@@@setcpageref#1#2{% as of v0.21
+  \cpageref at getlabel{#2}{\@temppage}#1{\@temppage}{}{}}%
+
+\ifdefequal{\@@setcpageref}{\LWR at orig@@setcpageref}{
+    \renewcommand*{\@@setcpageref}[2]{%
+        #1{\cpagerefFor\ \cref{#2}}{}{}%
+    }
+}{
+    \ifdefequal{\@@@setcpageref}{\LWR at orig@@@setcpageref}{
+        \renewcommand*{\@@@setcpageref}[2]{%
+            #1{\cpagerefFor\ \cref{#2}}{}{}%
+        }
+    }
+    {
+        \PackageWarningNoLine{lwarp-cleveref}{
+            Unknown version of cleveref.
+            \protect\cpageref\space will fail.
+        }
+    }
+}
+%    \end{macrocode}
+% \end{macro}
+
+
+% ^^A  orig:
+% ^^A  \def\@@setcpagerefrange#1#2#3{%
+% ^^A    \cref at getpageref{#2}{\@pagea}%
+% ^^A    \cref at getpageref{#3}{\@pageb}%
+% ^^A    #1{\@pagea}{\@pageb}{}{}{}{}}
+
+%    \begin{macrocode}
+\def\LWR at orig@@setcpagerefrange#1#2#3{% before v0.21
+  \cref at getpageref{#2}{\@pagea}%
+  \cref at getpageref{#3}{\@pageb}%
+  #1{\@pagea}{\@pageb}{}{}{}{}}%
+
+\def\LWR at orig@@@setcpagerefrange#1#2#3{% as of v0.21
+  \cpageref at getlabel{#2}{\@pagea}%
+  \cpageref at getlabel{#3}{\@pageb}%
+  #1{\@pagea}{\@pageb}{}{}{}{}}%
+
+\ifdefequal{\@@setcpagerefrange}{\LWR at orig@@setcpagerefrange}{
+    \renewcommand*{\@@setcpagerefrange}[3]{%
+        #1{\cpagerefFor\ \cref{#2}}{\cref{#3}}{}{}{}{}%
+    }
+}{
+    \ifdefequal{\@@@setcpagerefrange}{\LWR at orig@@@setcpagerefrange}{
+        \renewcommand*{\@@@setcpagerefrange}[3]{%
+            #1{\cpagerefFor\ \cref{#2}}{\cref{#3}}{}{}{}{}%
+        }
+    }
+    {
+        \PackageWarningNoLine{lwarp-cleveref}{
+            Unknown version of cleveref.
+            \protect\cpagerefrange\space will fail.
+        }
+    }
+}
+%    \end{macrocode}
+%
+% If \pkg{hyperref} is loaded, \pkg{cleveref} defines starred versions of the following,
+% but since \pkg{hyperref} is only emulated, starred versions are defined here:
+% \changes{v0.88}{2020/07/05}{\pkg{cleveref}, \pkg{varioref}: Fix for starred macros.}
+%    \begin{macrocode}
+\LWR at absorbstar{cref}
+\LWR at absorbstar{Cref}
+\LWR at absorbstar{crefrange}
+\LWR at absorbstar{Crefrange}
+\LWR at absorbstar{cpageref}
+\LWR at absorbstar{Cpageref}
+\LWR at absorbstar{cpagerefrange}
+\LWR at absorbstar{Cpagerefrange}
+\LWR at absorbstar{labelcref}
+\LWR at absorbstar{labelcpageref}
+%    \end{macrocode}
+%
+% ^^A *varioref
+% If \pkg{hyperref} is loaded, \pkg{cleveref} also defines starred versions
+% of \pkg{varioref} macros, so they are defined here.
+%    \begin{macrocode}
+\@ifpackageloaded{varioref}{
+    \LWR at absorbstar{vref}
+    \LWR at absorbstar{Vref}
+    \LWR at absorbstar{vrefrange}
+    \LWR at absorbstar{Vrefrange}
+    \LWR at absorbstar{fullref}
+    \LWR at absorbstar{Fullref}
+}{}% varioref
+%    \end{macrocode}
+%
+%
+% ^^A % For \brand{MathJax} and \pkg{cleveref},
+% ^^A % but not \pkg{varioref} since \pkg{varioref} macros would only
+% ^^A % be useful in math inside a \cs{text} macro, where they do not
+% ^^A % work in \brand{MathJax}.
+% ^^A %
+% ^^A % \changes{v0.88}{2020/07/05}{\pkg{cleveref}: Added \brand{MathJax} emulation.}
+% ^^A %    \begin{macrocode}
+% ^^A \CustomizeMathJax{\newcommand{\cref}{\ifstar\eqref\eqref}}
+% ^^A \CustomizeMathJax{\let\Cref\cref}
+% ^^A \CustomizeMathJax{\newcommand{\LWRcrefrange}[2]{%
+% ^^A     \eqref{#1}--\eqref{#2}%
+% ^^A }}
+% ^^A \CustomizeMathJax{\newcommand{\crefrange}{%
+% ^^A     \ifstar\LWRcrefrange\LWRcrefrange%
+% ^^A }}
+% ^^A \CustomizeMathJax{\let\Crefrange\crefrange}
+% ^^A \CustomizeMathJax{\let\cpageref\cref}
+% ^^A \CustomizeMathJax{\let\Cpageref\cref}
+% ^^A \CustomizeMathJax{\let\cpagerefrange\crefrange}
+% ^^A \CustomizeMathJax{\let\Cpagerefrange\crefrange}
+% ^^A \CustomizeMathJax{\let\labelcref\cref}
+% ^^A \CustomizeMathJax{\let\labelcpageref\cpageref}
+% ^^A %    \end{macrocode}
+% ^^A %
+% ^^A % For \pkg{varioref}, which is modified by \pkg{cleveref},
+% ^^A % so must be patched here:
+% ^^A %    \begin{macrocode}
+% ^^A \CustomizeMathJax{\let\vref\cref}
+% ^^A \CustomizeMathJax{\let\Vref\cref}
+% ^^A \CustomizeMathJax{\let\vpageref\cref}
+% ^^A \CustomizeMathJax{\let\Vpageref\cref}
+% ^^A \CustomizeMathJax{\let\vrefrange\crefrange}
+% ^^A \CustomizeMathJax{\let\Vrefrange\crefrange}
+% ^^A \CustomizeMathJax{\let\vpagerefrange\crefrange}
+% ^^A \CustomizeMathJax{\let\Vpagerefrange\crefrange}
+% ^^A \CustomizeMathJax{\let\fullref\cref}
+% ^^A \CustomizeMathJax{\let\Fullref\cref}
+% ^^A %    \end{macrocode}
+%
+% \iffalse
+%</cleveref>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*clrdblpg>
 % \fi
 %
@@ -45818,6 +49887,63 @@
 %
 %
 % \iffalse
+%<*cmbright>
+% \fi
+%
+% \part{lwarp-cmbright.sty}
+%
+% \section{cmbright}
+%
+% \credits{Walter Schmidt}
+%
+% \DescribePackage{cmbright}
+% \pkg{cmbright} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation ignores all package options,
+% \trouble[limitations]{cmbright=\pkg{cmbright}}
+% except \optn{slantedGreek} is honored, and \cs{mathbold} is available.
+%
+% The dedicated macros for upright Greek letters do work correctly.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.891}{2020/09/14}{\pkg{cmbright}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{cmbright}[2005/04/13]
+
+\LWR at infoprocessingmathjax{cmbright}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+\@ifpackagewith{cmbright}{slantedGreek}
+{
+    \LWR at mathjax@addgreek at u@it*{}{}
+}
+{}
+
+\LWR at mathjax@addgreek at u@up*{up}{}
+
+\CustomizeMathJax{\newcommand{\mathbold}[1]{\boldsymbol{#1}}}
+
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</cmbright>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*cmdtrack>
 % \fi
 %
@@ -45868,6 +49994,7 @@
 % This may need to be undone for some fonts.
 %
 % \changes{v0.81}{2020/03/03}{\pkg{colonequals}: Added.}
+% \changes{v0.891}{2020/09/08}{\pkg{colonequals}: Uses Unicode and \cs{mathrel}.}
 %
 % \codehtml
 %
@@ -45879,24 +50006,24 @@
 \begin{warpMathJax}
 \LWR at infoprocessingmathjax{colonequals}
 
-\CustomizeMathJax{\newcommand{\ratio}{\unicode{x2236}}}
-\CustomizeMathJax{\newcommand{\coloncolon}{\unicode{x2237}}}
-\CustomizeMathJax{\newcommand{\colonequals}{\coloncolon=}}
-\CustomizeMathJax{\newcommand{\coloncolonequals}{\coloncolon=}}
-\CustomizeMathJax{\newcommand{\equalscolon}{=\!\ratio}}
-\CustomizeMathJax{\newcommand{\equalscoloncolon}{=\!\coloncolon}}
-\CustomizeMathJax{\newcommand{\colonminus}{\ratio-}}
-\CustomizeMathJax{\newcommand{\coloncolonminus}{\coloncolon-}}
-\CustomizeMathJax{\newcommand{\minuscolon}{-\ratio}}
-\CustomizeMathJax{\newcommand{\minuscoloncolon}{-\coloncolon}}
-\CustomizeMathJax{\newcommand{\colonapprox}{\ratio\approx}}
-\CustomizeMathJax{\newcommand{\coloncolonapprox}{\coloncolon\approx}}
-\CustomizeMathJax{\newcommand{\approxcolon}{\approx\!\ratio}}
-\CustomizeMathJax{\newcommand{\approxcoloncolon}{\approx\!\coloncolon}}
-\CustomizeMathJax{\newcommand{\colonsim}{\ratio\sim}}
-\CustomizeMathJax{\newcommand{\coloncolonsim}{\coloncolon\sim}}
-\CustomizeMathJax{\newcommand{\simcolon}{\sim\!\ratio}}
-\CustomizeMathJax{\newcommand{\simcoloncolon}{\sim\!\coloncolon}}
+\CustomizeMathJax{\newcommand{\ratio}{\mathrel{\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand{\coloncolon}{\mathrel{\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand{\colonequals}{\mathrel{\unicode{x2236}\!=}}}
+\CustomizeMathJax{\newcommand{\coloncolonequals}{\mathrel{\unicode{x2237}\!=}}}
+\CustomizeMathJax{\newcommand{\equalscolon}{\mathrel{=\!\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand{\equalscoloncolon}{\mathrel{=\!\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand{\colonminus}{\mathrel{\unicode{x2236}-}}}
+\CustomizeMathJax{\newcommand{\coloncolonminus}{\mathrel{\unicode{x2237}-}}}
+\CustomizeMathJax{\newcommand{\minuscolon}{\mathrel{-\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand{\minuscoloncolon}{\mathrel{-\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand{\colonapprox}{\mathrel{\unicode{x2236}\!\approx}}}
+\CustomizeMathJax{\newcommand{\coloncolonapprox}{\mathrel{\unicode{x2237}\!\approx}}}
+\CustomizeMathJax{\newcommand{\approxcolon}{\mathrel{\approx\!\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand{\approxcoloncolon}{\mathrel{\approx\!\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand{\colonsim}{\mathrel{\unicode{x2236}\!\sim}}}
+\CustomizeMathJax{\newcommand{\coloncolonsim}{\mathrel{\unicode{x2237}\!\sim}}}
+\CustomizeMathJax{\newcommand{\simcolon}{\mathrel{\sim\!\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand{\simcoloncolon}{\mathrel{\sim\!\unicode{x2237}}}}
 \end{warpMathJax}
 %    \end{macrocode}
 %
@@ -45906,9 +50033,6 @@
 %
 %
 %
-%
-%
-%
 % \iffalse
 %<*color>
 % \fi
@@ -45938,7 +50062,6 @@
 %
 %
 %
-%
 % \iffalse
 %<*colortbl>
 % \fi
@@ -46066,6 +50189,17 @@
 %    \end{macrocode}
 % \end{noindmacro}
 
+% For \brand{MathJax}, colors are discarded.
+% \changes{v0.894}{2020/12/22}{\pkg{colortbl}: Added \brand{MathJax} emulation.}
+%    \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\columncolor}[2][]{\LWRabsorbtwooptions}}
+\CustomizeMathJax{\let\rowcolor\columncolor}
+\CustomizeMathJax{\let\cellcolor\columncolor}
+\end{warpMathJax}
+%    \end{macrocode}
+
+
 % \iffalse
 %</colortbl>
 % \fi
@@ -46262,6 +50396,7 @@
          \PackageError{lwarp-ctable}{\MessageBreak
             You can, currently, use the sidecap option only with\MessageBreak
             memoir documents. Use topcap or botcap only}
+            {}
       \fi
    \fi
    \ifdim\@CTwidth=0pt\else
@@ -46269,6 +50404,7 @@
          \PackageError{lwarp-ctable}{\MessageBreak
             You may not use the width and maxwidth options together\MessageBreak
             Use either width or maxwidth}
+            {}
       \fi
    \fi
    \ifx\@CTpos\empty
@@ -46276,6 +50412,7 @@
       \PackageError{lwarp-ctable}{\MessageBreak
          You may not use the pos and sideways options together\MessageBreak
          Rotated tables and figures are always typeset on a separate page}
+        {}
       \fi
    \fi
    \ifx\@CTcaption\empty
@@ -46283,6 +50420,7 @@
          \PackageError{lwarp-ctable}{\MessageBreak
             You may not label a captionless table\MessageBreak
             Such a label can't be referenced}
+            {}
       \fi
    \fi
 %    \end{macrocode}
@@ -47000,8 +51138,46 @@
 %
 %
 %
+% \iffalse
+%<*drftcite>
+% \fi
 %
+% \part{lwarp-drftcite.sty}
+%
+% \section{drftcite}
+%
+% \credits{Donald Arseneau}
+%
+% \DescribePackage{drftcite}
+% \pkg{drftcite} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.87}{2020/06/02}{\pkg{drftcite}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{drftcite}[1995/01/23]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\def\@lbibitem[#1]#2{\global\@HighCite\z@
+  \item[
+    \textsuperscript{\@nameuse{DCN@#2\@extra at b@citeb}}~%     lwarp
+    \@biblabel{\@ifundefined{DCN@#2\@extra at b@citeb}{\@warning
+    {Reference `#2' on page \thepage\space was never cited}}{}%
+%    \DC at llap{$^{\@nameuse{DCN@#2\@extra at b@citeb}}$\ \ }%%o
+   \@citeverb{#2}}\hfil]\if at filesw{\def\protect##1{\string ##1\space}%
+   \immediate\write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces}
+%    \end{macrocode}
+%
 % \iffalse
+%</drftcite>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*easy-todo>
 % \fi
 %
@@ -47014,6 +51190,11 @@
 % \DescribePackage{easy-todo}
 % \pkg{easy-todo} is patched for use by \pkg{lwarp}.
 %
+% To remove the ``P.'' heading for \HTML:
+% \begin{sourceverb}
+% \warpHTMLonly{\renewcommand{\todoindexpagetitle}{}}
+% \end{sourceverb}
+%
 % \changes{v0.44}{2017/11/10}{\pkg{easy-todo}: Added.}
 %
 % \codehtml
@@ -47025,12 +51206,12 @@
 % \begin{noindmacro}{\listoftodos}
 % Modified to correct buggy use of \cs{flushright}.
 %    \begin{macrocode}
-\let\LWR at origlistoftodos\listoftodos
+\let\LWR at easytodo@origlistoftodos\listoftodos
 
 \renewcommand{\listoftodos}{%
 \begingroup
 \renewcommand{\flushright}{}
-\LWR at origlistoftodos
+\LWR at easytodo@origlistoftodos
 \endgroup
 }
 %    \end{macrocode}
@@ -47125,6 +51306,7 @@
 % is emulated for \brand{MathJax}.
 %
 % \changes{v0.81}{2020/03/01}{\pkg{econometrics}: Added.}
+% \changes{v0.89}{2020/09/02}{\pkg{econometrics}: Uses \pkg{lwarp-common-mathjax-letters}.}
 %
 % \codehtml
 %
@@ -47132,7 +51314,10 @@
 \LWR at ProvidesPackagePass{econometrics}% no date specified in the original
 %    \end{macrocode}
 %
+%
 %    \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
 \begin{warpMathJax}
 \LWR at infoprocessingmathjax{econometrics}
 
@@ -47169,96 +51354,12 @@
 \CustomizeMathJax{\newcommand{\calY}{\mathcal{Y}}}
 \CustomizeMathJax{\newcommand{\calZ}{\mathcal{Z}}}
 
-\CustomizeMathJax{\newcommand{\mA}{\bm A}}
-\CustomizeMathJax{\newcommand{\va}{\bm a}}
-\CustomizeMathJax{\newcommand{\mB}{\bm B}}
-\CustomizeMathJax{\newcommand{\vb}{\bm b}}
-\CustomizeMathJax{\newcommand{\mC}{\bm C}}
-\CustomizeMathJax{\newcommand{\vc}{\bm c}}
-\CustomizeMathJax{\newcommand{\mD}{\bm D}}
-\CustomizeMathJax{\newcommand{\vd}{\bm d}}
-\CustomizeMathJax{\newcommand{\mE}{\bm E}}
-\CustomizeMathJax{\newcommand{\ve}{\bm e}}
-\CustomizeMathJax{\newcommand{\mF}{\bm F}}
-\CustomizeMathJax{\newcommand{\vf}{\bm f}}
-\CustomizeMathJax{\newcommand{\mG}{\bm G}}
-\CustomizeMathJax{\newcommand{\vg}{\bm g}}
-\CustomizeMathJax{\newcommand{\mH}{\bm H}}
-\CustomizeMathJax{\newcommand{\vh}{\bm h}}
-\CustomizeMathJax{\newcommand{\mI}{\bm I}}
-\CustomizeMathJax{\newcommand{\vi}{\bm i}}
-\CustomizeMathJax{\newcommand{\mJ}{\bm J}}
-\CustomizeMathJax{\newcommand{\vj}{\bm j}}
-\CustomizeMathJax{\newcommand{\mK}{\bm K}}
-\CustomizeMathJax{\newcommand{\vk}{\bm k}}
-\CustomizeMathJax{\newcommand{\mL}{\bm L}}
-\CustomizeMathJax{\newcommand{\vl}{\bm l}}
-\CustomizeMathJax{\newcommand{\mM}{\bm M}}
-\CustomizeMathJax{\newcommand{\vm}{\bm m}}
-\CustomizeMathJax{\newcommand{\mN}{\bm N}}
-\CustomizeMathJax{\newcommand{\vn}{\bm n}}
-\CustomizeMathJax{\newcommand{\mO}{\bm O}}
-\CustomizeMathJax{\newcommand{\vo}{\bm o}}
-\CustomizeMathJax{\newcommand{\mP}{\bm P}}
-\CustomizeMathJax{\newcommand{\vp}{\bm p}}
-\CustomizeMathJax{\newcommand{\mQ}{\bm Q}}
-\CustomizeMathJax{\newcommand{\vq}{\bm q}}
-\CustomizeMathJax{\newcommand{\mR}{\bm R}}
-\CustomizeMathJax{\newcommand{\vr}{\bm r}}
-\CustomizeMathJax{\newcommand{\mS}{\bm S}}
-\CustomizeMathJax{\newcommand{\vs}{\bm s}}
-\CustomizeMathJax{\newcommand{\mT}{\bm T}}
-\CustomizeMathJax{\newcommand{\vt}{\bm t}}
-\CustomizeMathJax{\newcommand{\mU}{\bm U}}
-\CustomizeMathJax{\newcommand{\vu}{\bm u}}
-\CustomizeMathJax{\newcommand{\mV}{\bm V}}
-\CustomizeMathJax{\newcommand{\vv}{\bm v}}
-\CustomizeMathJax{\newcommand{\mW}{\bm W}}
-\CustomizeMathJax{\newcommand{\vw}{\bm w}}
-\CustomizeMathJax{\newcommand{\mX}{\bm X}}
-\CustomizeMathJax{\newcommand{\vx}{\bm x}}
-\CustomizeMathJax{\newcommand{\mY}{\bm Y}}
-\CustomizeMathJax{\newcommand{\vy}{\bm y}}
-\CustomizeMathJax{\newcommand{\mZ}{\bm Z}}
-\CustomizeMathJax{\newcommand{\vz}{\bm z}}
+\LWR at mathjax@addlatin at u@bfit{m}% uppercase Latin, bold italic
+\LWR at mathjax@addlatin at l@bfit{v}% lowercase Latin, bold italic
 
-\CustomizeMathJax{\newcommand{\valpha}{\bm \alpha}}
-\CustomizeMathJax{\newcommand{\vbeta}{\bm \beta}}
-\CustomizeMathJax{\newcommand{\vgamma}{\bm \gamma}}
-\CustomizeMathJax{\newcommand{\vdelta}{\bm \delta}}
-\CustomizeMathJax{\newcommand{\vepsi}{\bm \epsi}}
-\CustomizeMathJax{\newcommand{\vvarepsilon}{\bm \varepsilon}}
-\CustomizeMathJax{\newcommand{\vzeta}{\bm \zeta}}
-\CustomizeMathJax{\newcommand{\veta}{\bm \eta}}
-\CustomizeMathJax{\newcommand{\vtheta}{\bm \theta}}
-\CustomizeMathJax{\newcommand{\viota}{\bm \iota}}
-\CustomizeMathJax{\newcommand{\vkappa}{\bm \kappa}}
-\CustomizeMathJax{\newcommand{\vlambda}{\bm \lambda}}
-\CustomizeMathJax{\newcommand{\vmu}{\bm \mu}}
-\CustomizeMathJax{\newcommand{\vnu}{\bm \nu}}
-\CustomizeMathJax{\newcommand{\vxi}{\bm \xi}}
-\CustomizeMathJax{\newcommand{\vpi}{\bm \pi}}
-\CustomizeMathJax{\newcommand{\vrho}{\bm \rho}}
-\CustomizeMathJax{\newcommand{\vsigma}{\bm \sigma}}
-\CustomizeMathJax{\newcommand{\vtau}{\bm \tau}}
-\CustomizeMathJax{\newcommand{\vupsilon}{\bm \upsilon}}
-\CustomizeMathJax{\newcommand{\vphi}{\bm \phi}}
-\CustomizeMathJax{\newcommand{\vchi}{\bm \chi}}
-\CustomizeMathJax{\newcommand{\vpsi}{\bm \psi}}
-\CustomizeMathJax{\newcommand{\vomega}{\bm \omega}}
+\LWR at mathjax@addgreek at l@bfit{v}{}% lowercase Greek bold italic
+\LWR at mathjax@addgreek at u@bfit*{m}{}% uppercase Greek bold italic, capitalized macro names
 
-\CustomizeMathJax{\newcommand{\mGamma}{\bm \varGamma}}
-\CustomizeMathJax{\newcommand{\mDelta}{\bm \varDelta}}
-\CustomizeMathJax{\newcommand{\mTheta}{\bm \varTheta}}
-\CustomizeMathJax{\newcommand{\mLambda}{\bm \varLambda}}
-\CustomizeMathJax{\newcommand{\mXi}{\bm \varXi}}
-\CustomizeMathJax{\newcommand{\mPi}{\bm \varPi}}
-\CustomizeMathJax{\newcommand{\mSigma}{\bm \varSigma}}
-\CustomizeMathJax{\newcommand{\mUpsilon}{\bm \varUpsilon}}
-\CustomizeMathJax{\newcommand{\mPhi}{\bm \varPhi}}
-\CustomizeMathJax{\newcommand{\mPsi}{\bm \varPsi}}
-\CustomizeMathJax{\newcommand{\mOmega}{\bm \varOmega}}
-
 \CustomizeMathJax{\newcommand{\rb}{\mathrm{b}}}
 \CustomizeMathJax{\newcommand{\rB}{\mathrm{B}}}
 \CustomizeMathJax{\newcommand{\rC}{\mathrm{C}}}
@@ -47389,7 +51490,7 @@
         \textcolor{red}{%
             #1 is only a provisional stub\\\Large
             the Office document
-            \ifx\ed at stubURI\@empty{#2}\else\href{\ed at stubURI}{#2}\fi\
+            \ifx\ed at stubURI\@empty{#2}\else\LWR at href{\ed at stubURI}{#2}\fi\
             contains more text\\which will be merged for the final document%
         }%
     \end{center}%
@@ -47449,7 +51550,7 @@
 % \credits{Clemens Niederberger}
 %
 % \DescribePackage{embrac}
-% \pkg{embrac} is nullfied for \HTML\, and used as-is for print.
+% \pkg{embrac} is patched for \HTML\, and used as-is for print.
 %
 % \changes{v0.65}{2018/12/10}{\pkg{embrac}: Added.}
 %
@@ -47459,7 +51560,14 @@
 \LWR at ProvidesPackagePass{embrac}[2017/07/04]
 %    \end{macrocode}
 %
+% \changes{v0.87}{2020/05/14}{\pkg{embrac}: Neutralized kerning.}
 %    \begin{macrocode}
+\ExplSyntaxOn
+\RenewDocumentCommand{\embrac_kern:n}{m}{}
+\ExplSyntaxOff
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \LetLtxMacro\LWR at orig@HTML at emph\LWR at HTML@emph
 \RenewDocumentCommand{\LWR at HTML@emph}{s m}{\LWR at orig@HTML at emph{#2}}
 
@@ -47645,7 +51753,7 @@
 %
 % \credits{John Lavagnino}
 %
-% \DescribePackage{endnotes} Used as-is.
+% \DescribePackage{endnotes} Patched for \HTML.
 %
 % \limitsendnotes
 %
@@ -48022,12 +52130,7 @@
 %
 %
 %
-% \codehtml
-%    \begin{macrocode}
-\begin{warpHTML}
-%    \end{macrocode}
 
-
 % \cs{newlist} \marg{name} \marg{type} \marg{maxdepth} \\
 % \cs{renewlist} \marg{name} \marg{type} \marg{maxdepth}
 %
@@ -48047,10 +52150,6 @@
 %    \end{macrocode}
 
 
-%    \begin{macrocode}
-\end{warpHTML}
-%    \end{macrocode}
-
 % \iffalse
 %</enumitem>
 % \fi
@@ -48074,88 +52173,102 @@
 % \credits{Peter Wilson}
 %
 % \DescribePackage{epigraph}
-% \pkg{epigraph} is emulated.
+% \pkg{epigraph} is emulated for \HTML, and used as-is for print output.
 %
+% Use \CSS\ to format epigraphs.
+%
 % \changes{v0.42}{2017/10/27}{\pkg{epigraph}: If \progcode{FormatWP} add \HTML\ styles.}
+% \changes{v0.84}{2020/04/16}{\pkg{epigraph}: Added print mode.}
 %
 % \codehtml
 
 %    \begin{macrocode}
-\LWR at ProvidesPackageDrop{epigraph}[2009/09/02]
+\LWR at ProvidesPackagePass{epigraph}[2020/01/02]
 %    \end{macrocode}
 
 % \changes{v0.73}{2019/06/25}{\pkg{epigraph}: Fix: Paragraph tags.}
 %    \begin{macrocode}
-\DeclareDocumentCommand{\qitem}{m m}
-{
-\begin{BlockClass}{qitem}
-#1
-\LWR at stoppars%
-\ifbool{FormatWP}
-{\begin{BlockClass}[border-top:1px solid gray]{epigraphsource}}
-{\begin{BlockClass}{epigraphsource}}
-#2
-\end{BlockClass}
-\end{BlockClass}
+\DeclareDocumentCommand{\LWR at HTML@qitem}{m m}
+{%
+    \begin{BlockClass}{qitem}%
+    #1%
+    \LWR at stoppars%
+    \ifbool{FormatWP}%
+        {\begin{BlockClass}[border-top:1px solid gray]{epigraphsource}}%
+        {\begin{BlockClass}{epigraphsource}}%
+    #2%
+    \end{BlockClass}%
+    \end{BlockClass}%
 }
+\LWR at formatted{qitem}
 %    \end{macrocode}
 
 % \changes{v0.47}{2018/01/26}{\pkg{epigraph}: Fix: Line wrap at \HTML\ hyphen.}
 %    \begin{macrocode}
-\DeclareDocumentCommand{\epigraph}{m m}
-{
-\begin{LWR at BlockClassWP}{\LWR at print@mbox{text-align:right}}{}{epigraph}
-\qitem{#1}{#2}
-\end{LWR at BlockClassWP}
+\DeclareDocumentCommand{\LWR at HTML@epigraph}{m m}
+{%
+    \begin{LWR at BlockClassWP}{\LWR at print@mbox{text-align:right}}{}{epigraph}%
+    \qitem{#1}{#2}%
+    \end{LWR at BlockClassWP}%
 }
+\LWR at formatted{epigraph}
 
-\DeclareDocumentEnvironment{epigraphs}{}
-{\LWR at BlockClassWP{\LWR at print@mbox{text-align:right}}{}{epigraph}}
-{\endLWR at BlockClassWP}
+\DeclareDocumentEnvironment{LWR at HTML@epigraphs}{}
+    {\LWR at BlockClassWP{\LWR at print@mbox{text-align:right}}{}{epigraph}}
+    {\endLWR at BlockClassWP}
+\LWR at formattedenv{epigraphs}
 %    \end{macrocode}
 %
-% Use \CSS\ to format epigraphs.
 %
-% The following are null commands for source compatibility:
+% The following cannot be used in print mode while generating \HTML:
 %    \begin{macrocode}
-\newenvironment*{flushepinormal}{}{}
-%    \end{macrocode}
-%
-% \changes{v0.45}{2017/12/22}{\pkg{epigraph}: Support for \pkg{memoir}.}
-%    \begin{macrocode}
-\@ifclassloaded{memoir}{
-\setlength{\epigraphwidth}{.5\linewidth}
-\renewcommand{\textflush}{flushepinormal}
 \renewcommand{\epigraphhead}[2][0]{#2}
 \renewcommand{\dropchapter}[1]{}
 \renewcommand*{\undodrop}{}
-}{% not memoir
-\newlength{\epigraphwidth}
-\setlength{\epigraphwidth}{.5\linewidth}
-\newcommand{\textflush}{flushepinormal}
-\newcommand{\epigraphflush}{flushright}
-\newcommand{\sourceflush}{flushright}
-\newcommand*{\epigraphsize}{\small}
-\newlength{\epigraphrule}
-\newlength{\beforeepigraphskip}
-\newlength{\afterepigraphskip}
-\newcommand{\epigraphhead}[2][0]{#2}
-\newcommand{\dropchapter}[1]{}
-\newcommand*{\undodrop}{}
-}% not memoir
-
-\let\cleartoevenpage\relax% also in nextpage
-\newcommand{\cleartoevenpage}[1][]{}
 %    \end{macrocode}
 %
-% \changes{v0.79}{2020/01/06}{\pkg{epigraph}: Updated to v1.5e.}
+%
+% \iffalse
+%</epigraph>
+% \fi
+%
+%
+%
+% \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}
-\newif\ifepigraphnoindent
-\newcommand\epigraphnoindent{\epigraphnoindenttrue}
+\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
-%</epigraph>
+%</epsf>
 % \fi
 %
 %
@@ -48176,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:
@@ -48202,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
@@ -48233,11 +52349,12 @@
 %
 % \changes{v0.50}{2018/02/21}{\pkg{epstopdf}: Added.}
 % \changes{v0.59}{2018/08/27}{\pkg{epstopdf}: Improved.}
+% \changes{v0.893}{2020/11/26}{\pkg{epstopdf}: Updated date to v2.11.}
 %
 % \codehtml
 %
 %    \begin{macrocode}
-\LWR at ProvidesPackagePass{epstopdf}[2016/05/15]
+\LWR at ProvidesPackagePass{epstopdf}[2020-01-24]
 %    \end{macrocode}
 %
 % \iffalse
@@ -48260,11 +52377,12 @@
 %
 % \changes{v0.51}{2018/03/03}{\pkg{epstopdf-base}: Added.}
 % \changes{v0.59}{2018/08/27}{\pkg{epstopdf-base}: Improved.}
+% \changes{v0.893}{2020/11/26}{\pkg{epstopdf-base}: Updated date to v2.11.}
 %
 % \codehtml
 %
 %    \begin{macrocode}
-\LWR at ProvidesPackagePass{epstopdf-base}[2016/05/15]
+\LWR at ProvidesPackagePass{epstopdf-base}[2020-01-24]
 %    \end{macrocode}
 %
 % Redefine to remember the image filename, replacing |.pdf| with |.svg|.
@@ -48502,7 +52620,7 @@
 
 % Finish the current page's errata before closing and reloading the list:
 %    \begin{macrocode}
-\preto\PrintErrata{\LWR at orignewpage}
+\preto\PrintErrata{\LWR at maybe@orignewpage}
 %    \end{macrocode}
 
 % No longer defining math macros with the \HTML\ |$|:
@@ -48570,6 +52688,43 @@
 %
 %
 % \iffalse
+%<*esvect>
+% \fi
+%
+% \part{lwarp-esvect.sty}
+%
+% \section{esvect}
+%
+% \credits{Eddie Saudrais}
+%
+% \DescribePackage{esvect}
+% \pkg{esvect} is used as-is for \SVG\ math,
+% and emulated for \brand{MathJax}.
+%
+% \changes{v0.893}{2020/10/14}{\pkg{esvect}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{esvect}% no date given
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\LWResvectvv}[1]{\overrightarrow{#1}}}
+\CustomizeMathJax{\newcommand{\LWResvectvvstar}[2]{\overrightarrow{#1}\!_{#2}}}
+\CustomizeMathJax{\newcommand{\vv}{\ifstar\LWResvectvvstar\LWResvectvv}}
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</esvect>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*etoc>
 % \fi
 %
@@ -48822,12 +52977,16 @@
 % \codehtml
 %
 % Discard all options for \pkg{lwarp-everyshi}:
+% \changes{v0.89}{2020/07/28}{\pkg{everyshi}: Adapt to \LaTeX kernel changes.}
 %    \begin{macrocode}
 \LWR at ProvidesPackageDrop{everyshi}[2001/05/15]
 %    \end{macrocode}
 %
 %    \begin{macrocode}
+\let\EveryShipout\relax
 \newcommand*{\EveryShipout}[1]{}
+
+\let\AtNextShipout\relax
 \newcommand*{\AtNextShipout}[1]{}
 %    \end{macrocode}
 %
@@ -49173,24 +53332,24 @@
 %    \begin{macrocode}
 \let\LWRFB at UseVerbatim\UseVerbatim
 \renewcommand*{\UseVerbatim}[1]{%
-\LWR at atbeginverbatim{3}{Verbatim}%
+\LWR at atbeginverbatim{Verbatim}%
 \LWRFB at UseVerbatim{#1}%
-\LWR at afterendverbatim{.5}%
+\LWR at afterendverbatim%
 }
 
 \let\LWRFB at LUseVerbatim\LUseVerbatim
 
 \renewcommand*{\LUseVerbatim}[1]{%
-\LWR at atbeginverbatim{3}{LVerbatim}%
+\LWR at atbeginverbatim{LVerbatim}%
 \noindent%
 \LWRFB at LUseVerbatim{#1}%
-\LWR at afterendverbatim{.5}%
+\LWR at afterendverbatim%
 }
 
 \def\@BUseVerbatim[#1]#2{%
-\LWR at atbeginverbatim{3}{BVerbatim}%
+\LWR at atbeginverbatim{BVerbatim}%
 \LWRFB at UseVerbatim{#2}%
-\LWR at afterendverbatim{.5}%
+\LWR at afterendverbatim%
 }
 %    \end{macrocode}
 %
@@ -49220,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}
@@ -49232,7 +53392,7 @@
 \newcommand*{\fancyhead}[2][]{}
 \newcommand*{\fancyfoot}[2][]{}
 \newcommand*{\fancyhf}[2][]{}
-\newcommand*{\fancypagestyle}[2]{}
+
 \newcommand*{\lhead}[2][]{}
 \newcommand*{\chead}[2][]{}
 \newcommand*{\rhead}[2][]{}
@@ -49241,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
@@ -49268,11 +53442,14 @@
 %
 % \section{fancyref}
 %
+% \credits{Axel Reichert}
+%
 % \DescribePackage{fancyref}
-% \pkg{fancyref} is emulated.
+% \pkg{fancyref} is modifed for \HTML\ output.
 %
 % \changes{v0.44}{2017/11/22}{\pkg{fancyref}: Added.}
 % \changes{v0.48}{2018/02/04}{\pkg{fancyref}: Now directly supported.}
+% \changes{v0.88}{2020/07/20}{\pkg{fancyref}: Now uses \pkg{varioref} which ignores page-related output.}
 %
 % \codehtml
 %
@@ -49292,36 +53469,6 @@
     \renewcommand*{\fancyrefhook}[1]{#1}%
 }
 %    \end{macrocode}
-
-% Modified to ignore the page number and \pkg{varioref}.
-%    \begin{macrocode}
-\renewcommand*{\@f at ref}[4]{%
-  \@ifundefined{#1r@#2@#3}{%
-    \PackageError{lwarp-fancyref}{%
-      \backslashchar#1ref\space format ``#2''
-      undefined\MessageBreak
-      for label type ``#3''%
-    }{%
-      The format ``#2'' was not defined for the label type
-      ``#3''\MessageBreak
-      and the \backslashchar#1ref\space command.  Perhaps
-      you have only misspelled its name.\MessageBreak
-      Otherwise you will have to define it with
-      \protect\new#1refformat\MessageBreak
-      prior to using it.%
-    }%
-  }{%
-    \fancyrefhook{%
-      \@nameuse{#1r@#2@#3}%
-        {\ref{#3\fancyrefargdelim#4}}%
-%         {\pageref{#3\fancyrefargdelim#4}}% original
-%         {\@fancyref at page@ref{#3\fancyrefargdelim#4}}% original
-        {}% lwarp
-        {}% lwarp
-    }%
-  }%
-}%
-%    \end{macrocode}
 %
 % \iffalse
 %</fancyref>
@@ -49507,11 +53654,10 @@
 %    \end{macrocode}
 %
 % Adds \HTML\ formatting:
+% \changes{v0.891}{2020/09/12}{\pkg{fancyvrb}: Fix: \env{BVerbatim} with labels.}
 %    \begin{macrocode}
 \def\FV at BUseVerbatim#1{%
-    \LWR at atbeginverbatim{0}{verbatim}%
     \FV at BVerbatimBegin#1\FV at BVerbatimEnd%
-    \LWR at afterendverbatim{0}%
 }
 %    \end{macrocode}
 
@@ -49526,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}%
@@ -49536,14 +53683,14 @@
     \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%
     \fi
 \fi
-\LWR at atbeginverbatim{0}{verbatim}%
+\LWR at atbeginverbatim{verbatim}%
 % }%
 }
 
@@ -49550,14 +53697,14 @@
 \newcommand*{\LWR at fvendnone}{%
 \LWR at traceinfo{fvendnone}%
 % \hbox to\z@{
-\LWR at afterendverbatim{0}%
+\LWR at afterendverbatim%
 \LWR at stoppars%
 \ifx\FV at LabelPositionBottomLine\relax\else
     \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%
@@ -49662,7 +53809,14 @@
 \let\FV at LeftListFrame\relax%
 \let\FV at RightListFrame\relax%
 \let\FV at EndListFrame\LWR at fvendline}
-
+%    \end{macrocode}
+%
+% Seems to be required in some situations:
+% \changes{v0.892}{2020/10/06}{\pkg{fancyvrb}: Provided \cs{FV at FrameFillLine}.}
+%    \begin{macrocode}
+\def\FV at FrameFillLine{}%
+%    \end{macrocode}
+%    \begin{macrocode}
 \def\FV at Frame@leftline{%
 \renewcommand*{\LWR at FVstyle}{%
     \LWR at currenttextcolorstyle\LWR at indentHTMLtwo%
@@ -49736,19 +53890,44 @@
 }
 %    \end{macrocode}
 
-% \begin{environment}{BVerbatim}
+% \changes{v0.892}{2020/10/05}{\pkg{fancyvrb}: Adapted to \pkg{fvextra}.}
 %    \begin{macrocode}
-\AtBeginEnvironment{BVerbatim}
-{%
-\LWR at forcenewpage% instead of \preto
-\LWR at atbeginverbatim{0}{bverbatim}%
+\def\FV at ListProcessLine@i#1{%
+%   \hbox{%
+    \ifvoid\@labels\else
+      \hbox to \z@{\kern\@totalleftmargin\box\@labels\hss}%
+    \fi
+    \FV at ListProcessLine{#1}%
+%   }%
+%   \let\FV at ProcessLine\FV at ListProcessLine@ii%
 }
+%    \end{macrocode}
 
-\AfterEndEnvironment{BVerbatim}
-{%
-\LWR at afterendverbatim{0}%
-}
+% \changes{v0.892}{2020/10/05}{\pkg{fancyvrb}: Adapted to \pkg{fvextra}.}
+%    \begin{macrocode}
+\def\FV at ListProcessLastLine{}
 %    \end{macrocode}
+
+
+% \begin{environment}{BVerbatim}
+% \changes{v0.891}{2020/09/12}{\pkg{fancyvrb}: Fix: \env{BVerbatim} with labels.}
+%    \begin{macrocode}
+
+\xpretocmd{\FV at BeginVBox}
+    {%
+        \LWR at forcenewpage% instead of \preto
+        \LWR at atbeginverbatim{bverbatim}%
+    }
+    {}
+    {\LWR at patcherror{fancyvrb}{FV at BeginVBox}}
+
+\xapptocmd{\FV at EndVBox}
+    {%
+        \LWR at afterendverbatim%
+    }
+    {}
+    {\LWR at patcherror{fancyvrb}{FV at EndVBox}}
+%    \end{macrocode}
 % \end{environment}
 
 % End of the modifications to make at the end of the preamble:
@@ -49765,6 +53944,169 @@
 %
 %
 % \iffalse
+%<*fbox>
+% \fi
+%
+% \part{lwarp-fbox.sty}
+%
+% \section{fbox}
+%
+% \credits{Herbert Voß}
+%
+% \DescribePackage{fbox}
+% \pkg{fbox} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.88}{2020/06/30}{\pkg{fbox}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{fbox}[2020/06/22]
+%    \end{macrocode}
+%
+% This will be \cs{LWR at formatted} when  \cs{AtBeginDocument}:
+%    \begin{macrocode}
+\LetLtxMacro\LWR at HTML@fbox\fbox
+%    \end{macrocode}
+%
+% Instead of using the original, the new version is used with all borders:
+%    \begin{macrocode}
+\renewcommand*{\orig at fbox}{\FBox at i[tblr]}
+%    \end{macrocode}
+%
+% \begin{noindmacro}{LWR at fboxpkg@border}
+% \marg{1: top \Slash bottom \Slash left \Slash right} \marg{2: padding, or empty}
+%
+% Accumulates \HTML\ styles for border, and padding if given:
+%    \begin{macrocode}
+\newcommand*{\LWR at fboxpkg@border}[2]{%
+    \appto\LWR at tempone{%
+        border-#1: % space
+        \LWR at printlength{\LWR at atleastonept} % space
+        solid \LWR at origpound\LWR at tempcolor ;\LWR at indentHTML
+    }%
+    \ifblank{#2}{}{%
+        \appto\LWR at tempone{%
+            padding-#1: \LWR at printlength{#2} ;\LWR at indentHTML
+        }%
+    }%
+}
+%    \end{macrocode}
+% \end{noindmacro}
+%
+% A hack to reuse the same code for inline and blocks:
+%    \begin{macrocode}
+\newbool{LWR at fboxpkg@ispar}
+\boolfalse{LWR at fboxpkg@ispar}
+%    \end{macrocode}
+%
+% Acculumate \HTML\ styles for left and right padding,
+% depending on \cs{if at fbox@space at left}, \cs{if at fbox@space at right}:
+%    \begin{macrocode}
+\newcommand{\LWR at fboxpkg@lrpadding}[1]{%
+    \csuse{if at fbox@space@#1}%
+        \appto\LWR at tempone{%
+            padding-#1: \LWR at printlength{\fbox@@sep};\LWR at indentHTML
+        }
+    \else%
+        \appto\LWR at tempone{%
+            padding-#1: 0pt;\LWR at indentHTML
+        }
+    \fi%
+}
+%    \end{macrocode}
+%
+% The \HTML\ version, modified to use \HTML\ styles and either
+% an \cs{InlineClass} or \env{BlockClass}:
+%    \begin{macrocode}
+\newcommand{\LWR at HTML@FBox at iii}[1]{%
+%    \end{macrocode}
+%
+% Find and set the text color, rule width, margin:
+%    \begin{macrocode}
+    \LWR at forceminwidth{\fbox@@rule}%
+    \LWR at findcurrenttextcolor%
+    \def\LWR at tempone{%
+        color: \LWR at origpound\LWR at tempcolor ; \LWR at indentHTML
+        margin: 1ex ; \LWR at indentHTML
+    }%
+%    \end{macrocode}
+%
+% Add left/right padding:
+%    \begin{macrocode}
+    \LWR at fboxpkg@lrpadding{left}%
+    \LWR at fboxpkg@lrpadding{right}%
+%    \end{macrocode}
+%
+% Per the original to decode the borders, in a new way:
+%    \begin{macrocode}
+    \ifnum\the\@tempcntb>8\relax
+        \advance\@tempcntb by -8
+        \LWR at fboxpkg@border{top}{\fbox@@sep}%
+    \fi
+    \ifnum\@tempcntb>3
+        \advance\@tempcntb by -4
+        \LWR at fboxpkg@border{left}{}%
+    \fi
+    \ifnum\@tempcntb>1
+        \LWR at fboxpkg@border{right}{}%
+    \fi
+    \ifodd\@tempcntb
+        \LWR at fboxpkg@border{bottom}{\fbox@@sep}%
+    \fi
+%    \end{macrocode}
+%
+% Generate a \env{BlockClass} or \cs{InlineClass} with the contents:
+%    \begin{macrocode}
+    \color at begingroup
+    \ifbool{LWR at fboxpkg@ispar}%
+        {%
+            \begin{BlockClass}[\LWR at tempone]{fboxpkg}%
+                #1%
+            \end{BlockClass}%
+        }%
+        {%
+            \InlineClass[\LWR at tempone]{fboxpkg}{%
+                #1%
+            }%
+        }%
+    \color at endgroup
+    \boolfalse{LWR at fboxpkg@ispar}% globally
+}
+\LWR at formatted{FBox at iii}
+%    \end{macrocode}
+%
+% For \cs{fparbox}, set the use of \env{BlockClass}, then reuse the above:
+%    \begin{macrocode}
+\long\def\LWR at HTML@FParBox at i[#1]#2{%
+    \booltrue{LWR at fboxpkg@ispar}%
+    \FBox at i[#1]{#2}
+}
+\LWR at formatted{FParBox at i}
+
+\long\def\LWR at HTML@FParBox at ii#1{%
+    \booltrue{LWR at fboxpkg@ispar}%
+    \FBox at i[tblr]{#1}%
+}
+\LWR at formatted{FParBox at ii}
+%    \end{macrocode}
+%
+% For \brand{MathJax}, absorb and ignore star and optional arguments:
+%    \begin{macrocode}
+\CustomizeMathJax{\let\LWRorigfbox\fbox}
+\CustomizeMathJax{\newcommand{\LWRfboxpkgtwo}[2][]{\LWRorigfbox{#2}}}
+\CustomizeMathJax{\renewcommand{\fbox}{\ifstar\LWRfboxpkgtwo\LWRfboxpkgtwo}}
+\CustomizeMathJax{\newcommand{\fparbox}{\fbox}}
+%    \end{macrocode}
+%
+% \iffalse
+%</fbox>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*fewerfloatpages>
 % \fi
 %
@@ -49946,8 +54288,49 @@
 %
 %
 %
+% \iffalse
+%<*fixmath>
+% \fi
 %
+% \part{lwarp-fixmath.sty}
+%
+% \section{fixmath}
+%
+% \credits{Walter Schmidt}
+%
+% \DescribePackage{fixmath}
+% \pkg{fixmath} is used as-is for \SVG\ math, and
+% emulated for \brand{MathJax}.
+%
+% \brand{MathJax} does not have full font support for bold italic Greek.
+% \watchout[limitations]
+%
+% \changes{v0.893}{2020/10/30}{\pkg{fixmath}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{fixmath}[2000/04/11]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+\LWR at mathjax@addgreek at u@it*{}{}
+\LWR at mathjax@addletter{\BooleanTrue}{up}{}{delta}{0394}
+\LWR at mathjax@addletter{\BooleanTrue}{up}{}{omega}{03A9}
+\CustomizeMathJax{\newcommand{\mathbold}[1]{\boldsymbol{#1}}}
+\end{warpMathJax}
+%    \end{macrocode}
+%
 % \iffalse
+%</fixmath>
+% \fi
+%
+%
+%
+% \iffalse
 %<*fixme>
 % \fi
 %
@@ -49977,10 +54360,15 @@
 %    \end{macrocode}
 %
 % Float-related macros required by \pkg{lwarp}:
+% \changes{v0.84}{2020/04/09}{\pkg{fixme}: Added section name.}
 %    \begin{macrocode}
 \newcommand{\ext at fixme}{lox}
 
-\renewcommand{\l at fixme}[2]{\hypertocfloat{1}{fixme}{lox}{#1}{#2}}
+\renewcommand{\l at fixme}[2]{%
+    \hypertocfloat{1}{fixme}{lox}%
+        {\LWR at nameref{\BaseJobname-autopage-\arabic{LWR at nextautopage}} --- #1}
+        {#2}
+}
 %    \end{macrocode}
 %
 % Other modifications:
@@ -50169,10 +54557,6 @@
 \LWR at ProvidesPackageDrop{float}[2001/11/08]
 %    \end{macrocode}
 
-% \begin{noindmacro}{\listof}
-% See \cref{sec:listof} for the \cs{listof} command.
-% \end{noindmacro}
-
 % \begin{macro}{\LWR at floatstyle}
 % The default float style:
 %    \begin{macrocode}
@@ -50189,27 +54573,27 @@
 %
 %    \begin{macrocode}
 \NewDocumentCommand{\newfloat}{m m m o}{%
-\IfValueTF{#4}%
-{\DeclareFloatingEnvironment[fileext=#3,within=#4]{#1}}%
-{\DeclareFloatingEnvironment[fileext=#3]{#1}}%
+    \IfValueTF{#4}%
+        {\DeclareFloatingEnvironment[fileext=#3,within=#4]{#1}}%
+        {\DeclareFloatingEnvironment[fileext=#3]{#1}}%
 %    \end{macrocode}
 % Remember the float style:
 % \changes{v0.57}{2018/05/14}{\pkg{float}: Added float styles.}
 %    \begin{macrocode}
-\csedef{LWR at floatstyle@#1}{\LWR at floatstyle}%
+    \csedef{LWR at floatstyle@#1}{\LWR at floatstyle}%
 %    \end{macrocode}
 % \pkg{newfloat} package automatically creates the \cs{listof} command
 % for new floats, but \pkg{float} does not,
 % so remove \cs{listof} here in case it is manually created later.
 %    \begin{macrocode}
-\cslet{listof#1s}\relax%
-\cslet{listof#1es}\relax%
+    \cslet{listof#1s}\relax%
+    \cslet{listof#1es}\relax%
 %    \end{macrocode}
 % Likesize, \pkg{newfloat} also creates \cs{l@<type>}, but \pkg{float} does not,
 % so remove it here:
 % \changes{v0.57}{2018/05/26}{\pkg{float}: Fix: Do not pre-define \cs{l at name}.}
 %    \begin{macrocode}
-\cslet{l@#1}\relax%
+    \cslet{l@#1}\relax%
 }
 %    \end{macrocode}
 % \end{noindmacro}
@@ -50217,9 +54601,15 @@
 % \begin{noindmacro}{\floatname} \marg{type} \marg{name}
 %
 % Sets the text name of the float, such as ``Figure''.
+% Avoids trying to set a recursive name, from \pkg{trivfloat}.
+% \changes{v0.84}{2020/04/08}{\pkg{float}: Fix: Recursive name.}
 %    \begin{macrocode}
 \NewDocumentCommand{\floatname}{m +m}{%
-    \SetupFloatingEnvironment{#1}{name=#2}%
+    \def\LWR at tempone{#2}%
+    \def\LWR at temptwo{\@nameuse{#1name}}%
+    \ifdefequal{\LWR at tempone}{\LWR at temptwo}{}{%
+        \SetupFloatingEnvironment{#1}{name=#2}%
+    }%
 }
 %    \end{macrocode}
 % \end{noindmacro}
@@ -50254,6 +54644,10 @@
 %    \end{macrocode}
 % \end{noindmacro}
 
+% \begin{noindmacro}{\listof}
+% See \cref{sec:listof} for the \cs{listof} command in the \pkg{lwarp} core.
+% \end{noindmacro}
+
 % \iffalse
 %</float>
 % \fi
@@ -50310,7 +54704,7 @@
         }%
         {marginblock}%
     }%
-    \captionsetup{type=#2}%
+    \renewcommand*{\@captype}{#2}%
 }
 {%
     \endLWR at BlockClassWP%
@@ -50410,8 +54804,8 @@
 
 \AtBeginDocument{
 \@ifpackageloaded{subcaption}
-{\booltrue{LWR at subcaptionloaded}}
-{\boolfalse{LWR at subcaptionloaded}}
+    {\booltrue{LWR at subcaptionloaded}}
+    {\boolfalse{LWR at subcaptionloaded}}
 }
 %    \end{macrocode}
 
@@ -50672,9 +55066,9 @@
 % inside a \CSS\ \element{div} of class |floatfoot|.
 %    \begin{macrocode}
 \NewDocumentCommand{\floatfoot}{s +m}{%
-\begin{BlockClass}{floatfoot}
-#2
-\end{BlockClass}
+    \begin{BlockClass}{floatfoot}
+    #2
+    \end{BlockClass}
 }
 %    \end{macrocode}
 % \end{noindmacro}
@@ -50695,19 +55089,19 @@
 %    \end{macrocode}
 % The row of floats is placed into a \element{div} of class |floatrow|:
 %    \begin{macrocode}
-\LWR at forcenewpage
-\BlockClass{floatrow}
+    \LWR at forcenewpage
+    \BlockClass{floatrow}
 %    \end{macrocode}
 % While inside the floatrow, |LWR at insubfloatrow| is set true,
 % which tells \cs{floatbox} to use \cs{subfigure} or \cs{subtable}.
 %    \begin{macrocode}
-\begingroup
-\booltrue{LWR at insubfloatrow}
+    \begingroup%
+    \booltrue{LWR at insubfloatrow}%
 }
-{
-\endgroup
-\endBlockClass
-\boolfalse{LWR at insubfloatrow}
+{%
+    \endgroup%
+    \endBlockClass%
+    \boolfalse{LWR at insubfloatrow}%
 }
 %    \end{macrocode}
 % \end{noindenvironment}
@@ -51141,6 +55535,7 @@
 % Swashes and figure styles are ignored for \HTML.
 %
 % \changes{v0.72}{2019/05/27}{\pkg{fontaxes}: Added.}
+% \changes{v0.84}{2020/04/13}{\pkg{fontaxes}: Moved sscshape to core.  \cs{FilenameNullify}.}
 %
 % \codehtml
 %
@@ -51149,29 +55544,17 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\newrobustcmd{\LWR at HTML@sscshape}{\LWR at HTML@scshape}
-\LWR at formatted{sscshape}
-\newcommand*{\LWR at null@sscshape}{}
-
-\newrobustcmd{\LWR at HTML@textssc}[1]{\textsc{#1}}
-\LWR at formatted{textssc}
-\newcommand*{\LWR at null@textssc}[1]{#1}
-
 \ifdef{\LWR at HTML@swshape}{}{% duplicated by nfssext-cfr
     \newcommand{\LWR at HTML@swshape}{}
     \LWR at formatted{swshape}
-    \newcommand*{\LWR at null@swshape}{}
 
-    \newcommand{\LWR at HTML@textsw}[1]{#1}
+    \newrobustcmd{\LWR at HTML@textsw}[1]{#1}
     \LWR at formatted{textsw}
-    \newcommand*{\LWR at null@textsw}[1]{#1}
-}
 
-\appto{\LWR at nullfonts}{%
-\LetLtxMacro\sscshape\LWR at null@sscshape%
-\LetLtxMacro\textssc\LWR at null@textssc%
-\LetLtxMacro\swshape\LWR at null@swshape%
-\LetLtxMacro\textsw\LWR at null@textsw%
+    \FilenameNullify{%
+        \LetLtxMacro\swshape\@empty%
+        \LetLtxMacro\textsw\firstofone%
+    }
 }
 %    \end{macrocode}
 %
@@ -51256,7 +55639,8 @@
 \providecommand*{\multfootsep}{,}
 %    \end{macrocode}
 %
-% Using \pkg{cleveref}:
+% Using \pkg{cleveref}.
+% \cs{labelcref} only prints the number of the object, not its type.
 %    \begin{macrocode}
 \providecommand*{\footref}[1]{\labelcref{#1}}
 %    \end{macrocode}
@@ -51538,7 +55922,9 @@
 %    \end{macrocode}
 
 %    \begin{macrocode}
-\BeforeBeginEnvironment{forest}{\begin{lateximage}[forest]}
+\BeforeBeginEnvironment{forest}{%
+    \begin{lateximage}[-forest-~\PackageDiagramAltText]%
+}
 
 \AfterEndEnvironment{forest}{\end{lateximage}}
 
@@ -51546,8 +55932,9 @@
   \forest at config{#2}%
   \IfBooleanTF{#1}{%
         \PackageError{lwarp-forest}%
-        {Starred \Forest is not supported}%
-        {Lwarp uses an environment for images, but \Forest* cannot work in an environment.}%
+        {\protect\Forest* is not supported}%
+        {Lwarp uses an environment for images,\MessageBreak
+            but \protect\Forest* cannot work in an environment.}%
         \let\forest at next\forest at env%
     }{\let\forest at next\forest at group@env}%
     \begin{lateximage}[-forest-~\PackageDiagramAltText]%     lwarp
@@ -51603,6 +55990,118 @@
 %
 %
 % \iffalse
+%<*fourier>
+% \fi
+%
+% \part{lwarp-fourier.sty}
+%
+% \section{fourier}
+%
+% \credits{Michel Bovani}
+%
+% \DescribePackage{fourier}
+% \pkg{fourier} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation ignores all package options,
+% \trouble[limitations]{fourier=\pkg{fourier}}
+% except \optn{sloped} and \optn{upright} are honored for Greek characters,
+% but \brand{MathJax} cannot yet honor these for Latin characters.
+%
+% The dedicated macros for upright and italic Greek letters do work correctly.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.891}{2020/09/14}{\pkg{fourier}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{fourier}[2020/03/03]
+
+\LWR at infoprocessingmathjax{fourier}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-overlaysymbols}
+
+\begin{warpMathJax}
+
+\@ifpackagewith{fourier}{sloped}
+    {
+        \LWR at mathjax@addgreek at l@up{other}{}
+        \LWR at mathjax@addgreek at u@it*{other}{}
+    }% sloped
+    {% not sloped
+        \@ifpackagewith{fourier}{upright}
+            {% upright option
+                \LWR at mathjax@addgreek at l@up{}{}
+                \LWR at mathjax@addgreek at u@up*{}{}
+                \LWR at mathjax@addgreek at l@it{other}{}
+                \LWR at mathjax@addgreek at u@it*{other}{}
+            }
+            {% neither sloped nor upright
+                \LWR at mathjax@addgreek at l@up{other}{}
+                \LWR at mathjax@addgreek at u@it*{other}{}
+            }
+    }
+
+\CustomizeMathJax{\newcommand{\othergreek}[1]{#1}}
+\CustomizeMathJax{\let\varvarrho\varrho}
+\CustomizeMathJax{\let\varvarpi\varpi}
+\CustomizeMathJax{\let\othervarvarpi\othervarpi}
+\CustomizeMathJax{\let\othervarvarrho\othervarrho}
+\CustomizeMathJax{\let\varpartialdiff\partial}
+%    \end{macrocode}
+%
+% \filenm{lwarp_mathjax.txt} adds \cs{left} \Slash \cs{right} support for
+% delimiters.
+% \changes{v0.892}{2020/09/26}{\pkg{fourier}: Added \cs{left} \Slash \cs{right} support in \filenm{lwarp_mathjax.txt}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\let\llbracket\lBrack}
+\CustomizeMathJax{\let\rrbracket\rBrack}
+\CustomizeMathJax{\let\dblbrackleft\lBrack}
+\CustomizeMathJax{\let\dblbrackright\rBrack}
+
+\CustomizeMathJax{\let\VERT|}
+
+\CustomizeMathJax{\newcommand{\parallelslant}{\mathrel{\unicode{x02AFD}}}}
+\CustomizeMathJax{\newcommand{\thething}{\mathord{\unicode{x1F60E}}}}
+\CustomizeMathJax{\newcommand{\nparallelslant}{%
+    \mathrel{\LWRoverlaysymbols{-}{\unicode{x02AFD}}}%
+}}
+\CustomizeMathJax{\newcommand{\xswordsup}{\mathord{\unicode{x2694}}}}
+\CustomizeMathJax{\newcommand{\xswordsdown}{\mathord{\unicode{x2694}}}}% up
+\CustomizeMathJax{\newcommand{\notowns}{\mathrel{\unicode{x220C}}}}
+
+\CustomizeMathJax{\newcommand{\iintop}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintop}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\oiint}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\let\oiintop\oiint}
+\CustomizeMathJax{\newcommand{\oiiint}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\let\oiiintop\oiiint}
+\CustomizeMathJax{\newcommand{\slashint}{\mathop{\unicode{x2A0D}}\limits}}
+\CustomizeMathJax{\let\slashintop\slashint}
+
+\CustomizeMathJax{\let\overgroup\overparen}
+\CustomizeMathJax{\let\wideparen\overparen}
+\CustomizeMathJax{\let\widearc\overparen}
+\CustomizeMathJax{\let\wideOarc\overrightarrow}
+\CustomizeMathJax{\newcommand{\widering}[1]{\stackrel{\unicode{x2218}}{\overgroup{#1}}}}
+
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</fourier>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*framed>
 % \fi
 
@@ -51911,8 +56410,201 @@
 %
 %
 %
+% \iffalse
+%<*fvextra>
+% \fi
 %
+% \part{lwarp-fvextra.sty}
+%
+% \section{fvextra}
+%
+% \credits{Geoffrey M. Poore}
+%
+% \DescribePackage{fvextra}
+% \pkg{fvextra} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.892}{2020/10/05}{\pkg{fvextra}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{fvextra}[2019/02/04]
+%    \end{macrocode}
+%
+% Ignored are \optn{highlight},
+%   \optn{showtabs}, \optn{obeytabs}, \optn{tab}, \optn{tabcolor}.
+%   Also ignored are all options regarding line breaking
+%   except \optn{breaklines}, which is emulated as true.
+%
+% \optn{tabsize} is honored.
+%
+% If line numbers on the right side are used along with \optn{breaklines},
+% the line numbers will not be aligned.
+%    \begin{macrocode}
+
+\define at booleankey{FV}{obeytabs}%
+%   {\let\FV at ObeyTabsInit\FV@@ObeyTabsInit}%
+  {\let\FV at ObeyTabsInit\relax}
+  {\let\FV at ObeyTabsInit\relax}
+
+\define at key{FV}{tabcolor}%
+ {}
+
+\define at key{FV}{tab}{}
+
+\define at booleankey{FV}{showtabs}%
+%  {\def\FV at TabChar{\FV at TabColor{\FancyVerbTab}}}%
+ {\let\FV at TabChar\relax}
+ {\let\FV at TabChar\relax}
+
+\newbool{LWR at FV@breaklines}
+
+\define at booleankey{FV}{breaklines}%
+  {\FV at BreakLinesfalse
+    \booltrue{LWR at FV@breaklines}
+    \let\FV at ListProcessLine\FV at ListProcessLine@NoBreak}
+  {\FV at BreakLinesfalse
+    \boolfalse{LWR at FV@breaklines}
+    \let\FV at ListProcessLine\FV at ListProcessLine@NoBreak}
+% \fvset{breaklines}
+
+\define at key{FV}{breakanywheresymbolpre}{\def\FancyVerbBreakAnywhereSymbolPre{}}
+\fvset{breakanywheresymbolpre={}}
+
+\define at key{FV}{breakanywheresymbolpost}{\def\FancyVerbBreakAnywhereSymbolPost{}}
+\fvset{breakanywheresymbolpost={}}
+
+\define at key{FV}{breakbeforesymbolpre}{\def\FancyVerbBreakBeforeSymbolPre{}}
+\fvset{breakbeforesymbolpre={}}
+
+\define at key{FV}{breakbeforesymbolpost}{\def\FancyVerbBreakBeforeSymbolPost{}}
+\fvset{breakbeforesymbolpost={}}
+
+\define at key{FV}{breakaftersymbolpre}{\def\FancyVerbBreakAfterSymbolPre{}}
+\fvset{breakaftersymbolpre={}}
+
+\define at key{FV}{breakaftersymbolpost}{\def\FancyVerbBreakAfterSymbolPost{}}
+\fvset{breakaftersymbolpost={}}
+
+\define at key{FV}{breaksymbolleft}{\def\FancyVerbBreakSymbolLeft{}}
+
+\define at key{FV}{breaksymbol}{\fvset{breaksymbolleft={}}}
+
+\fvset{breaksymbolleft={}}
+
+\define at key{FV}{breaksymbolright}{\def\FancyVerbBreakSymbolRight{}}
+\fvset{breaksymbolright={}}
+
+\def\FV at ListProcessLine@NoBreak#1{%
+%   \hbox to \hsize{%
+%     \kern\leftmargin
+%     \hbox to \linewidth{%
+      \FV at LeftListNumber%
+      \FV at LeftListFrame%
+      \FancyVerbFormatLine{%
+        \FancyVerbHighlightLine{%
+          \FV at ObeyTabs{\FancyVerbFormatText{#1}}}}%\hss
+      \FV at RightListFrame%
+      \FV at RightListNumber%
+%     }%
+%     \hss}%
+\null\par%                   lwarp
+}
+
+
+\newcommand*{\LWR at FV@linethensep}{%
+    \ifbool{LWR at FV@breaklines}%
+        {\theFancyVerbLine\kern\FV at NumberSep}%
+        {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}%
+}
+
+\newcommand*{\LWR at FV@septhenline}{%
+    \ifbool{LWR at FV@breaklines}%
+        {\kern\FV at NumberSep\theFancyVerbLine}%
+        {\hbox to\z@{\kern\FV at NumberSep\theFancyVerbLine\hss}}%
+}
+
+\xpatchcmd{\FV at Numbers@left}
+    {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+    {\LWR at FV@linethensep}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@left A}}
+
+\xpatchcmd{\FV at Numbers@left}
+    {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+    {\LWR at FV@linethensep}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@left B}}
+
+\xpatchcmd{\FV at Numbers@left}
+    {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+    {\LWR at FV@linethensep}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@left C}}
+
+\xpatchcmd{\FV at Numbers@right}
+    {\hbox to\z@{\kern\FV at NumberSep\theFancyVerbLine\hss}}
+    {\LWR at FV@septhenline}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@right A}}
+
+\xpatchcmd{\FV at Numbers@right}
+    {\hbox to\z@{\kern\FV at NumberSep\theFancyVerbLine\hss}}
+    {\LWR at FV@septhenline}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@right B}}
+
+\xpatchcmd{\FV at Numbers@right}
+    {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+    {\LWR at FV@linethensep}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@right C}}
+
+\xpatchcmd{\FV at Numbers@both}
+    {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+    {\LWR at FV@linethensep}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@both A}}
+
+\xpatchcmd{\FV at Numbers@both}
+    {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+    {\LWR at FV@linethensep}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@both B}}
+
+\xpatchcmd{\FV at Numbers@both}
+    {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+    {\LWR at FV@linethensep}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@both C}}
+
+\xpatchcmd{\FV at Numbers@both}
+    {\hbox to\z@{\kern\FV at NumberSep\theFancyVerbLine\hss}}
+    {\LWR at FV@septhenline}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@both D}}
+
+\xpatchcmd{\FV at Numbers@both}
+    {\hbox to\z@{\kern\FV at NumberSep\theFancyVerbLine\hss}}
+    {\LWR at FV@septhenline}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@both E}}
+
+\xpatchcmd{\FV at Numbers@both}
+    {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+    {\LWR at FV@linethensep}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@both F}}
+%    \end{macrocode}
+%
 % \iffalse
+%</fvextra>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*fwlw>
 % \fi
 %
@@ -52132,6 +56824,75 @@
 %
 %
 % \iffalse
+%<*gindex>
+% \fi
+%
+% \part{lwarp-gindex.sty}
+%
+% \section{gindex}
+%
+% \credits{Javier Bezos}
+%
+% \DescribePackage{gindex}
+% \pkg{gindex} is patched for use by \pkg{lwarp}.
+%
+% See \cref{sec:indexsetup}.
+%
+% \changes{v0.88}{2020/07/16}{\pkg{gindex}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{gindex}[2019/10/07]
+%    \end{macrocode}
+%
+% Set the index page and range separators.
+% These are set \cs{AtBeginDocument} to allow the user to change them.
+% They are then protected so that the \pkg{lwarp} core looks for the
+% tokens instead of their expanded contents, since the \filenm{*.ind}
+% files will contain \cs{indexpagessep} and \cs{indexrangesep} instead of
+% their literal contents.
+% Finally, \pkg{lwarp} is told of the \pkg{gindex} macros.
+%    \begin{macrocode}
+\AtBeginDocument{
+    \robustify{\indexpagessep}
+    \robustify{\indexrangesep}
+    \renewcommand*{\IndexPageSeparator}{\indexpagessep}
+    \renewcommand*{\IndexRangeSeparator}{\indexrangesep}
+}
+%    \end{macrocode}
+%
+% \cs{hyperindexref} is added:
+%    \begin{macrocode}
+\def\addindexitem#1#2{%
+  \indexflushitem
+  \gix at getspecial#1\indexspecial\indexspecial\@@\indexitem{\hyperindexref{#2}}}
+
+\def\addindexsubitem#1#2{%
+  \stepcounter{indexsubitems}%
+  \gix at getspecial#1\indexspecial\indexspecial\@@\indexsubitem{\hyperindexref{#2}}}
+
+\def\addindexsubsubitem#1#2{%
+  \gix at getspecial#1\indexspecial\indexspecial\@@\indexsubsubitem{\hyperindexref{#2}}}
+%    \end{macrocode}
+%
+% Uses a \element{div} of class \attribute{indexheading}:
+%    \begin{macrocode}
+\renewcommand\indexheading[1]{%
+    \begin{BlockClass}{indexheading}
+    \MakeUppercase{#1}%
+    \end{BlockClass}
+}
+%    \end{macrocode}
+%
+% \iffalse
+%</gindex>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*gloss>
 % \fi
 %
@@ -52207,7 +56968,7 @@
 %    \begin{macrocode}
 \renewcommand*{\@p at glossarysection}[2]{%
   \glsclearpage
-  \phantomsection
+  \LWR at phantomsection
   \ifdefempty\@@glossarysecstar
   {%
     \csname\@@glossarysec\endcsname{#2}%
@@ -52320,10 +57081,11 @@
 % \changes{v0.40}{2017/09/07}{\pkg{graphics}: Moved out of the \pkg{lwarp} core.}
 % \changes{v0.40}{2017/09/07}{\pkg{graphics}: Restores \cs{includegraphics}
 %       and \cs{DeclareGraphicsExtensions} in a \env{lateximage}.}
+% \changes{v0.893}{2020/11/26}{\pkg{graphics}: Updated date to v1.4c.}
 %
 % \codehtml
 %    \begin{macrocode}
-\LWR at ProvidesPackagePass{graphics}[2017/06/25]
+\LWR at ProvidesPackagePass{graphics}[2020/08/30]
 %    \end{macrocode}
 
 
@@ -52489,9 +57251,8 @@
 \define at key{igraph}{scale}{%
     \ifthenelse{\equal{#1}{1}}{}{%  must expand #1
         \PackageWarning{lwarp}{%
-            It is recommended to use\MessageBreak
-            [width=xx\protect\linewidth]\MessageBreak
-            instead of [scale=yy],%
+            It is recommended to use ``[width=xx\protect\linewidth]''\MessageBreak
+            instead of ``[scale=yy]'',%
         }%
     }%
     \renewcommand*{\LWR at igxscale}{#1}%
@@ -52732,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}
@@ -52742,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
@@ -52755,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}{}}%
@@ -52787,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}
@@ -52816,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.}
@@ -52893,9 +57657,18 @@
     \Ginclude at graphics{\detokenize\expandafter{\LWR at tempone}}%
     \endgroup%
     \filename at parse{\LWR at parsedfilename}%
+%    \end{macrocode}
+%
+% Remove doubled |//| in the directory path,
+% from the 2020/10/01 \LaTeX\ kernel change.
+% \changes{v0.892}{2020/10/01}{\pkg{graphics}: Fix path from kernel change.}
+%    \begin{macrocode}
+    \StrSubstitute{\LWR at parsedfilename}{//}{/}[\LWR at parsedfilename]%
+%    \end{macrocode}
+%    \begin{macrocode}
     \LWR at traceinfo{LWR at parsedfilename is \LWR at parsedfilename}%
-% \LWR at sanitize{\LWR at parsedfilename}%
 %    \end{macrocode}
+% ^^A \LWR at sanitize{\LWR at parsedfilename}%
 %
 % If formatting for a word processor, find and set the actual image size,
 % without rotation, using \PDF\ instead of \SVG\ to find the original bounding box:
@@ -52907,7 +57680,7 @@
 % alt tag, style, and class:
 %    \begin{macrocode}
     \LWR at traceinfo{LWR at includegraphicsb: about to create href}%
-    \href{\LWR at parsedfilename}%
+    \LWR at href{\LWR at parsedfilename}%
     {% start of href
         \LWR at traceinfo{LWR at includegraphicsb: about to LWR at htmltag}%
         \LWR at htmltag{\LWR at ig@htmltag}%
@@ -53033,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:
@@ -53049,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:
@@ -53085,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:
@@ -53096,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:
@@ -53126,7 +57901,7 @@
 \AtBeginDocument{
 
 \newcommand{\LWR at HTML@reflectbox}[1]{%
-\scalebox{-1}[1]{#1}%
+    \scalebox{-1}[1]{#1}%
 }% \reflectbox
 
 \LWR at formatted{reflectbox}
@@ -53146,7 +57921,7 @@
 \AtBeginDocument{
 
 \NewDocumentCommand{\LWR at HTML@resizebox}{s m m m}{%
-#4%
+    #4%
 }
 
 \LWR at formatted{resizebox}
@@ -53182,10 +57957,11 @@
 % \pkg{lwarp-graphics} handles the syntax of either \pkg{graphics} or \pkg{graphicx}.
 %
 % \changes{v0.40}{2017/09/07}{\pkg{graphicx}: Moved out of the \pkg{lwarp} core.}
+% \changes{v0.893}{2020/11/26}{\pkg{graphicx}: Updated date to v1.2b.}
 %
 % \codehtml
 %    \begin{macrocode}
-\LWR at ProvidesPackagePass{graphicx}[2017/06/01]
+\LWR at ProvidesPackagePass{graphicx}[2020/09/09]
 %    \end{macrocode}
 
 % \iffalse
@@ -53355,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
 %
@@ -53389,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}%
@@ -53397,7 +58174,7 @@
             \LWR at print@mbox{%
                 text-indent:-\LWR at printlength{\hangingindent}%
             }%
-        "%
+        \textquotedbl%
     }%
     \let\item\LWR at itemizeitem%
     \list{}{}%
@@ -53512,6 +58289,99 @@
 %
 %
 % \iffalse
+%<*hepunits>
+% \fi
+%
+% \part{lwarp-hepunits.sty}
+%
+% \section{hepunits}
+%
+% \credits{Andy Buckley}
+%
+% \DescribePackage{hepunits}
+% \pkg{hepunits} is used as-is, and emulated for \brand{MathJax}.
+%
+% \changes{v0.89}{2020/07/23}{\pkg{hepunits}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{hepunits}[2020/04/10]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\begin{warpMathJax}
+\LWR at infoprocessingmathjax{hepunits}
+
+\ifx\@HEPopt at sicmds\@yes
+\CustomizeMathJax{\newcommand{\micron}{\micro\metre}}
+\CustomizeMathJax{\newcommand{\mrad}{\milli\radian}}
+\fi
+
+\CustomizeMathJax{\newcommand{\gauss}{\mathrm{G}}}
+
+\CustomizeMathJax{\newcommand{\invcmsq}{\centi\metre\tothe{-2}}}
+\CustomizeMathJax{\newcommand{\invcmsqpersecond}{\invcmsq\second\tothe{-1}}}
+\CustomizeMathJax{\newcommand{\invcmsqpersec}{\invcmsqpersecond}}
+
+%% (Inverse) cross-sections
+\CustomizeMathJax{\newcommand{\invbarn}{\barn\tothe{-1}}}
+
+\ifx\@HEPopt at noprefixcmds\@empty
+\CustomizeMathJax{\newcommand{\millibarn}{\milli\barn}}
+\CustomizeMathJax{\newcommand{\microbarn}{\micro\barn}}
+\CustomizeMathJax{\newcommand{\nanobarn}{\nano\barn}}
+\CustomizeMathJax{\newcommand{\picobarn}{\pico\barn}}
+\CustomizeMathJax{\newcommand{\femtobarn}{\femto\barn}}
+\CustomizeMathJax{\newcommand{\attobarn}{\atto\barn}}
+\CustomizeMathJax{\newcommand{\zeptobarn}{\zepto\barn}}
+\CustomizeMathJax{\newcommand{\yoctobarn}{\yocto\barn}}
+\CustomizeMathJax{\newcommand{\invnanobarn}{\nano\invbarn}}
+\CustomizeMathJax{\newcommand{\invpicobarn}{\pico\invbarn}}
+\CustomizeMathJax{\newcommand{\invfemtobarn}{\femto\invbarn}}
+\CustomizeMathJax{\newcommand{\invattobarn}{\atto\invbarn}}
+\CustomizeMathJax{\newcommand{\invzeptobarn}{\zepto\invbarn}}
+\CustomizeMathJax{\newcommand{\invyoctobarn}{\yocto\invbarn}}
+\CustomizeMathJax{\newcommand{\invnb}{\invnanobarn}}
+\CustomizeMathJax{\newcommand{\invpb}{\invpicobarn}}
+\CustomizeMathJax{\newcommand{\invfb}{\invfemtobarn}}
+\CustomizeMathJax{\newcommand{\invab}{\invattobarn}}
+\CustomizeMathJax{\newcommand{\invzb}{\invzeptobarn}}
+\CustomizeMathJax{\newcommand{\invyb}{\invyoctobarn}}
+\fi
+
+\CustomizeMathJax{\newcommand{\electronvoltc}{\electronvolt\per\mathit{c}}}
+\CustomizeMathJax{\newcommand{\electronvoltcsq}{\electronvolt\per\mathit{c}\squared}}
+\CustomizeMathJax{\let\eVc\electronvoltc}
+\CustomizeMathJax{\let\eVcsq\electronvoltcsq}
+
+\ifx\@HEPopt at noprefixcmds\@empty
+\CustomizeMathJax{\newcommand{\meV}{\milli\eV}}
+\CustomizeMathJax{\newcommand{\keV}{\kilo\eV}}
+\CustomizeMathJax{\newcommand{\MeV}{\mega\eV}}
+\CustomizeMathJax{\newcommand{\GeV}{\giga\eV}}
+\CustomizeMathJax{\newcommand{\TeV}{\tera\eV}}
+\CustomizeMathJax{\newcommand{\meVc}{\milli\eVc}}
+\CustomizeMathJax{\newcommand{\keVc}{\kilo\eVc}}
+\CustomizeMathJax{\newcommand{\MeVc}{\mega\eVc}}
+\CustomizeMathJax{\newcommand{\GeVc}{\giga\eVc}}
+\CustomizeMathJax{\newcommand{\TeVc}{\tera\eVc}}
+\CustomizeMathJax{\newcommand{\meVcsq}{\milli\eVcsq}}
+\CustomizeMathJax{\newcommand{\keVcsq}{\kilo\eVcsq}}
+\CustomizeMathJax{\newcommand{\MeVcsq}{\mega\eVcsq}}
+\CustomizeMathJax{\newcommand{\GeVcsq}{\giga\eVcsq}}
+\CustomizeMathJax{\newcommand{\TeVcsq}{\tera\eVcsq}}
+\fi
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</hepunits>
+% \fi
+%
+%
+%
+% \iffalse
 %<*hhline>
 % \fi
 %
@@ -53564,6 +58434,62 @@
 %
 %
 % \iffalse
+%<*hhtensor>
+% \fi
+%
+% \part{lwarp-hhtensor.sty}
+%
+% \section{hhtensor}
+%
+% \credits{Harald Harders}
+%
+% \DescribePackage{hhtensor}
+% \pkg{hhtensor} is used as-is, and emulated for \brand{MathJax}.
+%
+% \changes{v0.88}{2020/07/23}{\pkg{hhtensor}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{hhtensor}[2011/12/29]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\begin{warpMathJax}
+\iftensor at bold
+  \CustomizeMathJax{\newcommand{\vec}[1]{\boldsymbol{#1}}}
+  \CustomizeMathJax{\newcommand{\matr}[1]{\boldsymbol{#1}}}
+  \CustomizeMathJax{\newcommand{\tens}[2]{\boldsymbol{#1}}}
+\else
+  \iftensor at uline
+    \CustomizeMathJax{\newcommand{\vec}[1]{\ushort{#1}}}
+    \CustomizeMathJax{\newcommand{\matr}[1]{\ushortd{#1}}}
+    \CustomizeMathJax{\newcommand{\tens}[2]{
+        \underset{
+            \raise{.5ex}{\underset{#2}{\sim}}
+        }{#1}
+    }}
+  \else
+    \CustomizeMathJax{\newcommand{\matr}[1]{\vec{\vec{#1}}}}
+    \CustomizeMathJax{\newcommand{\tens}[2]{
+        \underset{
+            \raise{.5ex}{\underset{#2}{\sim}}
+        }{#1}
+    }}
+  \fi
+\fi
+\CustomizeMathJax{\newcommand{\dcdot}{\mathrel{\cdot\mkern 0.0mu \cdot}}}
+\CustomizeMathJax{\newcommand{\trans}{{}^{\mathrm{T}}}}
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</hhtensor>
+% \fi
+%
+%
+%
+% \iffalse
 %<*hypbmsec>
 % \fi
 %
@@ -53684,7 +58610,7 @@
 
 % \section{hyperref}
 %
-% \credits{Sebastian Rahtz, Heiko Oberdiek}
+% \credits{Sebastian Rahtz, Heiko Oberdiek, The \LaTeX3 Project}
 %
 % \DescribePackage{hyperref}
 % \pkg{hyperref} is emulated.
@@ -53697,22 +58623,277 @@
 % \ProvidesPackage{lwarp-#1-#2}% not allowed
 \PackageInfo{lwarp}{%
 Using the lwarp HTML version of package `hyperref',\MessageBreak
-and discarding options.\MessageBreak
+and discarding options except backref, pagebackref.\MessageBreak
 (Not using \protect\ProvidesPackage, so that other packages\MessageBreak
 do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
+%    \end{macrocode}
+%
+%
+% \changes{v0.891}{2020/09/05}{\pkg{hyperref}: Added \optn{backref}, \optn{pagebackref}.}
+%    \begin{macrocode}
+\SetupKeyvalOptions{family=LWR at hyperref,prefix=LWR at hyperref@}
 
-\DeclareOption*{}
+\newcommand{\hypersetup}[1]{\setkeys{LWR at hyperref}{#1}}
+
+\define at key{LWR at hyperref}{a4paper}[]{}
+\define at key{LWR at hyperref}{a5paper}[]{}
+\define at key{LWR at hyperref}{b5paper}[]{}
+\define at key{LWR at hyperref}{letterpaper}[]{}
+\define at key{LWR at hyperref}{legalpaper}[]{}
+\define at key{LWR at hyperref}{executivepaper}[]{}
+\define at key{LWR at hyperref}{implicit}[]{}
+\define at key{LWR at hyperref}{draft}[]{}
+\define at key{LWR at hyperref}{final}[]{}
+\define at key{LWR at hyperref}{setpagesize}[]{}
+\define at key{LWR at hyperref}{debug}[]{}
+\define at key{LWR at hyperref}{linktocpage}[]{}
+\define at key{LWR at hyperref}{linktoc}[]{}
+\define at key{LWR at hyperref}{extension}[]{}
+\define at key{LWR at hyperref}{verbose}[]{}
+\define at key{LWR at hyperref}{typexml}[]{}
+\define at key{LWR at hyperref}{raiselinks}[]{}
+\define at key{LWR at hyperref}{breaklinks}[]{}
+\define at key{LWR at hyperref}{localanchorname}[]{}
+\define at key{LWR at hyperref}{pageanchor}[]{}
+\define at key{LWR at hyperref}{plainpages}[]{}
+\define at key{LWR at hyperref}{naturalnames}[]{}
+\define at key{LWR at hyperref}{hypertexnames}[]{}
+\define at key{LWR at hyperref}{nesting}[]{}
+\define at key{LWR at hyperref}{destlabel}[]{}
+\define at key{LWR at hyperref}{unicode}[]{}
+\define at key{LWR at hyperref}{pdfencoding}[]{}
+\define at key{LWR at hyperref}{psdextra}[]{}
+\define at key{LWR at hyperref}{pdfversion}[]{}
+\define at key{LWR at hyperref}{dvipdfmx-outline-open}[]{}
+\define at key{LWR at hyperref}{driverfallback}[]{}
+\define at key{LWR at hyperref}{customdriver}[]{}
+\define at key{LWR at hyperref}{hyperfigures}[]{}
+\define at key{LWR at hyperref}{hyperfootnotes}[]{}
+\define at key{LWR at hyperref}{hyperindex}[]{}
+\define at key{LWR at hyperref}{encap}[]{}
+\define at key{LWR at hyperref}{colorlinks}[]{}
+\define at key{LWR at hyperref}{ocgcolorlinks}[]{}
+\define at key{LWR at hyperref}{frenchlinks}[]{}
+\define at key{LWR at hyperref}{bookmarks}[]{}
+\define at key{LWR at hyperref}{bookmarksopen}[]{}
+\define at key{LWR at hyperref}{bookmarksdepth}[]{}
+\define at key{LWR at hyperref}{bookmarksopenlevel}[]{}
+\define at key{LWR at hyperref}{bookmarkstype}[]{}
+\define at key{LWR at hyperref}{bookmarksnumbered}[]{}
+\define at key{LWR at hyperref}{CJKbookmarks}[]{}
+\define at key{LWR at hyperref}{link}[]{}
+\define at key{LWR at hyperref}{anchor}[]{}
+\define at key{LWR at hyperref}{cite}[]{}
+\define at key{LWR at hyperref}{file}[]{}
+\define at key{LWR at hyperref}{url}[]{}
+\define at key{LWR at hyperref}{menu}[]{}
+\define at key{LWR at hyperref}{run}[]{}
+\define at key{LWR at hyperref}{linkbordercolor}[]{}
+\define at key{LWR at hyperref}{anchorbordercolor}[]{}
+\define at key{LWR at hyperref}{citebordercolor}[]{}
+\define at key{LWR at hyperref}{filebordercolor}[]{}
+\define at key{LWR at hyperref}{urlbordercolor}[]{}
+\define at key{LWR at hyperref}{menubordercolor}[]{}
+\define at key{LWR at hyperref}{runbordercolor}[]{}
+\define at key{LWR at hyperref}{pagecolor}[]{}
+\define at key{LWR at hyperref}{baseurl}[]{}
+\define at key{LWR at hyperref}{linkfileprefix}[]{}
+\define at key{LWR at hyperref}{pdfpagetransition}[]{}
+\define at key{LWR at hyperref}{pdfpageduration}[]{}
+\define at key{LWR at hyperref}{pdfpagehidden}[]{}
+\define at key{LWR at hyperref}{pagebordercolor}[]{}
+\define at key{LWR at hyperref}{allbordercolors}[]{}
+\define at key{LWR at hyperref}{pdfhighlight}[]{}
+\define at key{LWR at hyperref}{pdfborder}[]{}
+\define at key{LWR at hyperref}{pdfborderstyle}[]{}
+\define at key{LWR at hyperref}{pdfprintpagerange}[]{}
+\define at key{LWR at hyperref}{pdfusetitle}[]{}
+\define at key{LWR at hyperref}{pdftitle}[]{}
+\define at key{LWR at hyperref}{pdfauthor}[]{}
+\define at key{LWR at hyperref}{pdfproducer}[]{}
+\define at key{LWR at hyperref}{pdfcreator}[]{}
+\define at key{LWR at hyperref}{addtopdfcreator}[]{}
+\define at key{LWR at hyperref}{pdfcreationdate}[]{}
+\define at key{LWR at hyperref}{pdfmoddate}[]{}
+\define at key{LWR at hyperref}{pdfsubject}[]{}
+\define at key{LWR at hyperref}{pdfkeywords}[]{}
+\define at key{LWR at hyperref}{pdftrapped}[]{}
+\define at key{LWR at hyperref}{pdfinfo}[]{}
+\define at key{LWR at hyperref}{pdfview}[]{}
+\define at key{LWR at hyperref}{pdflinkmargin}[]{}
+\define at key{LWR at hyperref}{pdfstartpage}[]{}
+\define at key{LWR at hyperref}{pdfstartview}[]{}
+\define at key{LWR at hyperref}{pdfremotestartview}[]{}
+\define at key{LWR at hyperref}{pdfpagescrop}[]{}
+\define at key{LWR at hyperref}{pdftoolbar}[]{}
+\define at key{LWR at hyperref}{pdfmenubar}[]{}
+\define at key{LWR at hyperref}{pdfwindowui}[]{}
+\define at key{LWR at hyperref}{pdffitwindow}[]{}
+\define at key{LWR at hyperref}{pdfcenterwindow}[]{}
+\define at key{LWR at hyperref}{pdfdisplaydoctitle}[]{}
+\define at key{LWR at hyperref}{pdfa}[]{}
+\define at key{LWR at hyperref}{pdfnewwindow}[]{}
+\define at key{LWR at hyperref}{pdflang}[]{}
+\define at key{LWR at hyperref}{pdfpagelabels}[]{}
+\define at key{LWR at hyperref}{pdfescapeform}[]{}
+\define at key{LWR at hyperref}{english}[]{}
+\define at key{LWR at hyperref}{UKenglish}[]{}
+\define at key{LWR at hyperref}{british}[]{}
+\define at key{LWR at hyperref}{USenglish}[]{}
+\define at key{LWR at hyperref}{american}[]{}
+\define at key{LWR at hyperref}{german}[]{}
+\define at key{LWR at hyperref}{austrian}[]{}
+\define at key{LWR at hyperref}{ngerman}[]{}
+\define at key{LWR at hyperref}{naustrian}[]{}
+\define at key{LWR at hyperref}{russian}[]{}
+\define at key{LWR at hyperref}{brazil}[]{}
+\define at key{LWR at hyperref}{brazilian}[]{}
+\define at key{LWR at hyperref}{portuguese}[]{}
+\define at key{LWR at hyperref}{spanish}[]{}
+\define at key{LWR at hyperref}{catalan}[]{}
+\define at key{LWR at hyperref}{afrikaans}[]{}
+\define at key{LWR at hyperref}{french}[]{}
+\define at key{LWR at hyperref}{frenchb}[]{}
+\define at key{LWR at hyperref}{francais}[]{}
+\define at key{LWR at hyperref}{acadian}[]{}
+\define at key{LWR at hyperref}{canadien}[]{}
+\define at key{LWR at hyperref}{italian}[]{}
+\define at key{LWR at hyperref}{magyar}[]{}
+\define at key{LWR at hyperref}{hungarian}[]{}
+\define at key{LWR at hyperref}{greek}[]{}
+\define at key{LWR at hyperref}{dutch}[]{}
+\define at key{LWR at hyperref}{tex4ht}[]{}
+\define at key{LWR at hyperref}{pdftex}[]{}
+\define at key{LWR at hyperref}{luatex}[]{}
+\define at key{LWR at hyperref}{nativepdf}[]{}
+\define at key{LWR at hyperref}{dvipdfm}[]{}
+\define at key{LWR at hyperref}{dvipdfmx}[]{}
+\define at key{LWR at hyperref}{xetex}[]{}
+\define at key{LWR at hyperref}{pdfmark}[]{}
+\define at key{LWR at hyperref}{dvips}[]{}
+\define at key{LWR at hyperref}{hypertex}[]{}
+\define at key{LWR at hyperref}{vtex}[]{}
+\define at key{LWR at hyperref}{vtexpdfmark}[]{}
+\define at key{LWR at hyperref}{dviwindo}[]{}
+\define at key{LWR at hyperref}{dvipsone}[]{}
+\define at key{LWR at hyperref}{textures}[]{}
+\define at key{LWR at hyperref}{latex2html}[]{}
+\define at key{LWR at hyperref}{ps2pdf}[]{}
+\define at key{LWR at hyperref}{vietnamese}[]{}
+\define at key{LWR at hyperref}{vietnam}[]{}
+\define at key{LWR at hyperref}{arabic}[]{}
+\define at key{LWR at hyperref}{hidelinks}[]{}
+\define at key{LWR at hyperref}{draft}[]{}
+\define at key{LWR at hyperref}{nolinks}[]{}
+\define at key{LWR at hyperref}{final}[]{}
+\define at key{LWR at hyperref}{pdfa}[]{}
+\define at key{LWR at hyperref}{pdfversion}[]{}
+\define at key{LWR at hyperref}{typexml}[]{}
+\define at key{LWR at hyperref}{tex4ht}[]{}
+\define at key{LWR at hyperref}{pdftex}[]{}
+\define at key{LWR at hyperref}{nativepdf}[]{}
+\define at key{LWR at hyperref}{dvipdfm}[]{}
+\define at key{LWR at hyperref}{dvipdfmx}[]{}
+\define at key{LWR at hyperref}{dvipdfmx-outline-open}[]{}
+\define at key{LWR at hyperref}{pdfmark}[]{}
+\define at key{LWR at hyperref}{dvips}[]{}
+\define at key{LWR at hyperref}{hypertex}[]{}
+\define at key{LWR at hyperref}{vtex}[]{}
+\define at key{LWR at hyperref}{vtexpdfmark}[]{}
+\define at key{LWR at hyperref}{dviwindo}[]{}
+\define at key{LWR at hyperref}{dvipsone}[]{}
+\define at key{LWR at hyperref}{textures}[]{}
+\define at key{LWR at hyperref}{latex2html}[]{}
+\define at key{LWR at hyperref}{ps2pdf}[]{}
+\define at key{LWR at hyperref}{xetex}[]{}
+\define at key{LWR at hyperref}{driverfallback}[]{}
+\define at key{LWR at hyperref}{customdriver}[]{}
+\define at key{LWR at hyperref}{pdfversion}[]{}
+\define at key{LWR at hyperref}{bookmarks}[]{}
+\define at key{LWR at hyperref}{ocgcolorlinks}[]{}
+\define at key{LWR at hyperref}{colorlinks}[]{}
+\define at key{LWR at hyperref}{frenchlinks}[]{}
+\define at key{LWR at hyperref}{backref}[]{}
+\define at key{LWR at hyperref}{pagebackref}[]{}
+\define at key{LWR at hyperref}{destlabel}[]{}
+\define at key{LWR at hyperref}{pdfpagescrop}[]{}
+\define at key{LWR at hyperref}{pdfpagemode}[]{}
+\define at key{LWR at hyperref}{pdfnonfullscreenpagemode}[]{}
+\define at key{LWR at hyperref}{pdfdirection}[]{}
+\define at key{LWR at hyperref}{pdfviewarea}[]{}
+\define at key{LWR at hyperref}{pdfviewclip}[]{}
+\define at key{LWR at hyperref}{pdfprintarea}[]{}
+\define at key{LWR at hyperref}{pdfprintclip}[]{}
+\define at key{LWR at hyperref}{pdfprintscaling}[]{}
+\define at key{LWR at hyperref}{pdfduplex}[]{}
+\define at key{LWR at hyperref}{pdfpicktraybypdfsize}[]{}
+\define at key{LWR at hyperref}{pdfprintpagerange}[]{}
+\define at key{LWR at hyperref}{pdfnumcopies}[]{}
+\define at key{LWR at hyperref}{pdfstartview}[]{}
+\define at key{LWR at hyperref}{pdfstartpage}[]{}
+\define at key{LWR at hyperref}{pdftoolbar}[]{}
+\define at key{LWR at hyperref}{pdfmenubar}[]{}
+\define at key{LWR at hyperref}{pdfwindowui}[]{}
+\define at key{LWR at hyperref}{pdffitwindow}[]{}
+\define at key{LWR at hyperref}{pdfcenterwindow}[]{}
+\define at key{LWR at hyperref}{pdfdisplaydoctitle}[]{}
+\define at key{LWR at hyperref}{pdfpagelayout}[]{}
+\define at key{LWR at hyperref}{pdflang}[]{}
+\define at key{LWR at hyperref}{baseurl}[]{}
+\define at key{LWR at hyperref}{pdfusetitle}[]{}
+\define at key{LWR at hyperref}{pdfpagelabels}[]{}
+\define at key{LWR at hyperref}{hyperfootnotes}[]{}
+\define at key{LWR at hyperref}{hyperfigures}[]{}
+\define at key{LWR at hyperref}{hyperindex}[]{}
+\define at key{LWR at hyperref}{encap}[]{}
+\define at key{LWR at hyperref}{linkcolor}[]{}
+\define at key{LWR at hyperref}{anchorcolor}[]{}
+\define at key{LWR at hyperref}{citecolor}[]{}
+\define at key{LWR at hyperref}{filecolor}[]{}
+\define at key{LWR at hyperref}{urlcolor}[]{}
+\define at key{LWR at hyperref}{menucolor}[]{}
+\define at key{LWR at hyperref}{runcolor}[]{}
+\define at key{LWR at hyperref}{allcolors}[]{}
+
+\DeclareStringOption[false]{backref}[section]
+
+\DeclareBoolOption{pagebackref}
+
+\DeclareDefaultOption{}
+
+\ProcessKeyvalOptions*\relax
 %    \end{macrocode}
-% \changes{v0.68}{2019/02/28}{\pkg{hyperref}: Fix for options with braces.}
+%
+% Maybe load \pkg{backref}:
 %    \begin{macrocode}
-% \ProcessOptions\relax
-\let\ds@\@empty%         from the original \ProcessOptions
-\edef\@curroptions{}%    lwarp modification to \ProcessOptions
-\@process at ptions\relax%  from the original \ProcessOptions
+\ifdefstring{\LWR at hyperref@backref}{section}
+    {\RequirePackage{backref}}
+    {}
+
+\ifdefstring{\LWR at hyperref@backref}{slide}
+    {\RequirePackage{backref}}
+    {}
+
+\ifdefstring{\LWR at hyperref@backref}{page}
+    {\RequirePackage{backref}}
+    {}
+
+\ifLWR at hyperref@pagebackref
+    \RequirePackage{backref}
+\fi
 %    \end{macrocode}
+%
+%
+% \changes{v0.86}{2020/05/07}{\pkg{hyperref}: Adjusted emulation.}
+%    \begin{macrocode}
+\LetLtxMacro\href\LWR at href
+\LetLtxMacro\nolinkurl\LWR at nolinkurl
+\LetLtxMacro\url\LWR at url
+\LetLtxMacro\phantomsection\LWR at phantomsection
+%    \end{macrocode}
 
+
 %    \begin{macrocode}
-\newcommand*{\hypersetup}[1]{}
 \newcommand*{\hyperbaseurl}[1]{}
 %    \end{macrocode}
 
@@ -53725,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%
 }
@@ -53754,7 +58940,7 @@
 %    \begin{macrocode}
 \NewDocumentCommand{\LWR at hyperdefb}{m m +m}{%
     \LWR at ensuredoingapar%
-    \LWR at sublabel{#1.#2}%
+    \LWR at label@createtag{#1.#2}%
     #3%
     \endgroup%
 }
@@ -53774,13 +58960,16 @@
 % \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.
+%
+% To avoid nested links, \cs{ref} is temporarily redefined to the print version.
 %    \begin{macrocode}
 \newcommand{\LWR at hyperreffinish}[1]{%
     \begingroup%
-    \RenewDocumentCommand{\ref}{}{\LWR at ref@ignorestar}%
-    #1%
+    \RenewDocumentCommand{\ref}{s m}{\LWR at print@ref{##2}}%
+   #1%
     \endgroup%
     \LWR at htmltag{/a}%
 }
@@ -53787,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%
@@ -53955,7 +59144,9 @@
 % \begin{noindmacro}{\texorpdfstring} \marg{\TeX{}string} \marg{PDFstring}
 %
 % \changes{v0.48}{2018/02/02}{\pkg{hyperref}: \cs{texorpdfstring} now uses the \TeX\ string.}
+% \changes{v0.891}{2020/09/21}{\pkg{hyperref}: Fixed \cs{texorpdfstring} with \pkg{babel-french}.}
 %    \begin{macrocode}
+\let\texorpdfstring\relax
 \newcommand{\texorpdfstring}[2]{#1}
 %    \end{macrocode}
 % \end{noindmacro}
@@ -54229,16 +59420,24 @@
 %
 %    \begin{macrocode}
 \newcommand{\LWR at indexprenote}{}
+%    \end{macrocode}
+%
+% \cs{AtBeginDocument} to help with package load order.
+% \changes{v0.85}{2020/04/29}{\pkg{idxlayout}: Fixed: \cs{AtBeginDocument} for load order.}
+%    \begin{macrocode}
+\AtBeginDocument{
+    \preto\printindex{
 
-\preto\printindex{
+    \LWR at maybe@orignewpage
+    \LWR at startpars
 
-\LWR at orignewpage
-\LWR at startpars
+    \LWR at indexprenote
 
-\LWR at indexprenote
-
+    }
 }
-
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \newcommand{\setindexprenote}[1]{\renewcommand{\LWR at indexprenote}{#1}}
 \newcommand*{\noindexprenote}{\renewcommand{\LWR at indexprenote}{}}
 
@@ -54340,7 +59539,7 @@
 \catcode`\_=12%
 
 \renewcommand*{\printindex}[1][\imki at jobname]{%
-\LWR at orignewpage%
+\LWR at maybe@orignewpage%
 \LWR at startpars%
 \ifstrequal{#1}{\imki at jobname}{%
   \@ifundefined{#1 at idxfile}{%
@@ -54423,7 +59622,7 @@
 %    \begin{macrocode}
 \renewcommand\imki at wrindexentrysplit[3]{%
 \addtocounter{LWR at autoindex}{1}%
-\LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%
+\label{LWRindex-\arabic{LWR at autoindex}}%
   \expandafter\protected at write\csname#1 at idxfile\endcsname{}%
     {\string\indexentry{#2}{\arabic{LWR at autoindex}}}%
 }
@@ -54430,7 +59629,7 @@
 
 \renewcommand\imki at wrindexentryunique[3]{%
 \addtocounter{LWR at autoindex}{1}%
-\LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%
+\label{LWRindex-\arabic{LWR at autoindex}}%
   \protected at write\@indexfile{}%
     {\string\indexentry[#1]{#2}{\arabic{LWR at autoindex}}}%
 }
@@ -54453,7 +59652,7 @@
 %
 % \begin{noindmacro}{\LWR at imki@setxdydefopts}
 %
-% Sets the \pkg{xindy} \HTML\ options, ignoring the user's settings.
+% Sets the \prog{xindy} \HTML\ options, ignoring the user's settings.
 %    \begin{macrocode}
 \newcommand*{\LWR at imki@setxdydefopts}{%
     \edef\imki at options{ \space %
@@ -54468,7 +59667,7 @@
 % \begin{noindmacro}{\LWR at imki@setdefopts} \marg{user options}
 %
 % Sets the \HTML\ options, added to the user's settings,
-% depending on whether \pkg{makeindex} or \pkg{xindy} are used.
+% depending on whether \prog{makeindex} or \prog{xindy} are used.
 %
 % For \prog{makeindex}, the user's choice is ignored, and only the \pkg{lwarp}
 % version is used.  (Only one style at a time is possible.)
@@ -54570,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
 %
@@ -54621,7 +59846,7 @@
     {\begingroup}
     {%
         \addtocounter{LWR at autoindex}{1}%                    lwarp
-        \LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%    lwarp
+        \label{LWRindex-\arabic{LWR at autoindex}}%    lwarp
         \begingroup%
     }
     {}
@@ -54740,7 +59965,7 @@
 %
 %    \begin{macrocode}
 \NewDocumentCommand{\attachandlink}{o m o m m}{%
-    \href{#2}{#5}%
+    \LWR at href{#2}{#5}%
 }
 %    \end{macrocode}
 %
@@ -54751,8 +59976,243 @@
 %
 %
 %
+% \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
+%
+% \part{lwarp-jurabib.sty}
+%
+% \section{jurabib}
+%
+% \credits{Jens Berger}
+%
+% \DescribePackage{jurabib}
+% \pkg{jurabib} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.87}{2020/05/18}{\pkg{jurabib}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{jurabib}[2004/01/25]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\renewrobustcmd{\jblangle}{\textless}
+
+\renewrobustcmd{\jbrangle}{\textgreater}
+
+\renewcommand*{\jb at biblaw@item}{%
+    \hspace{0.5em}%
+%     $\triangleright$
+    \HTMLunicode{25B7}%     lwarp
+    \hspace{0.5em}%
+}
+
+\renewrobustcmd{\jbarchsig}[2]{%
+     \ifjbweareinbib
+        \settowidth{\jb at subarchitemwidth}{\jbsamesubarchindent+#1}%
+        \setlength{\jb at subarchentrywidth}{\textwidth-\jb at subarchitemwidth-4em}%
+%         \begin{tabular}{@{}p{\jb at subarchitemwidth}@{}j{\jb at subarchentrywidth}@{}}%
+           #1\ifjb at dot\unskip\unskip\unskip.\fi
+%             &
+            \quad%      lwarp
+            \ifthenelse{\equal{#2}{}}{}{\jbarchnameformat{#2}}%
+%         \end{tabular}
+     \fi
+}%
+
+
+\xpatchcmd{\jb at do@post at item}
+    {\begin{tabular}{p{\jb at biblaw@item at width}j{\jb at biblaw@entry at width}}}
+    {}
+    {}
+    {\LWR at patcherror{jurabib}{jb at do@post at item 1}}
+
+\xpatchcmd{\jb at do@post at item}
+    {\multicolumn{2}{p{\columnwidth}}{\jb@@name}}
+    {\jb@@name}
+    {}
+    {\LWR at patcherror{jurabib}{jb at do@post at item 2}}
+
+\xpatchcmd{\jb at do@post at item}
+    {\jb at biblaw@item & \jb@@fulltitle}
+    {\jb at biblaw@item \quad \jb@@fulltitle}
+    {}
+    {\LWR at patcherror{jurabib}{jb at do@post at item 3}}
+
+\xpatchcmd{\jb at do@post at item}
+    {\end{tabular}}
+    {}
+    {}
+    {\LWR at patcherror{jurabib}{jb at do@post at item 4}}
+
+\xpatchcmd{\jb at do@post at item}
+    {\begin{minipage}[t]{\bibnumberwidth}}
+    {}
+    {}
+    {\LWR at patcherror{jurabib}{jb at do@post at item 5}}
+
+\xpatchcmd{\jb at do@post at item}
+    {\end{minipage}}
+    {\quad}
+    {}
+    {\LWR at patcherror{jurabib}{jb at do@post at item 6}}
+%    \end{macrocode}
+%
+% \iffalse
+%</jurabib>
+% \fi
+%
+%
+%
+%
+%
+%
+% \iffalse
 %<*karnaugh-map>
 % \fi
 %
@@ -54773,8 +60233,10 @@
 \LWR at ProvidesPackagePass{karnaugh-map}[2017/02/20]
 %    \end{macrocode}
 %
-% (It is hard to patch this macro, so the entire thing is redefined here,
-%   with the \pkg{lwarp} modificaitions identified in comments.)
+% This patch is needed only because \pkg{lwarp} changes the definition of \cs{\&},
+% and the original uses \cs{ifnum} to compare |0| with \cs{\&}.
+% It is hard to patch this environment, so the entire thing is redefined here,
+%   with the \pkg{lwarp} modifications identified in comments.
 %
 %    \begin{macrocode}
 \RenewDocumentEnvironment{karnaugh-map}{s O{4} O{4} O{1} O{$X_1X_0$} O{$X_3X_2$} O{$X_5X_4$}} {%
@@ -54867,12 +60329,15 @@
 %     \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
-    }{}%    lwarp
+    }{\relax}%    lwarp
     \begin{tikzpicture}
       % grid
       % for all dimensions
@@ -54956,7 +60421,7 @@
 %    \begin{macrocode}
 \LWR at ProvidesPackagePass{keyfloat}[2019/09/23]
 
-\@ifpackagelater{keyfloat}{2019/09/23}{}{
+\@ifpackagelater{keyfloat}{2019/09/23}{\relax}{
     \PackageError{lwarp-keyfloat}
     {%
         The keyfloat package is out of date.\MessageBreak
@@ -55217,7 +60682,7 @@
         {float:right; width:2in; margin:10pt}%
         {}%
         {marginblock}%
-    \captionsetup{type=#2}%
+    \renewcommand*{\@captype}{#2}%
     \minipage{\LWR at usersmarginparwidth}%
     \setlength{\marginparwidth}{.95\LWR at usersmarginparwidth}%
 }
@@ -55278,6 +60743,295 @@
 %
 %
 % \iffalse
+%<*keystroke>
+% \fi
+%
+% \part{lwarp-keystroke.sty}
+%
+% \section{keystroke}
+%
+% \credits{Werner Fink}
+%
+% \DescribePackage{keystroke}
+% \pkg{keystroke} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.893}{2020/10/18}{\pkg{keystroke}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{keystroke}[2010/04/23]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\newcommand*{\LWR at HTML@keystroke}[1]{
+    \InlineClass{keystroke}{#1}
+}
+\LWR at formatted{keystroke}
+
+
+\newcommand*{\LWR at HTML@Return}{\keystroke{\HTMLunicode{021A9}}}
+\LWR at formatted{Return}
+
+\newcommand*{\LWR at HTML@BSpace}{\keystroke{\HTMLunicode{027FB}}}
+\LWR at formatted{BSpace}
+
+\newcommand*{\LWR at HTML@Tab}{\keystroke{|\HTMLunicode{021C6}|}}
+\LWR at formatted{Tab}
+
+\newcommand*{\LWR at HTML@UArrow}{\keystroke{\HTMLunicode{02191}}}
+\LWR at formatted{UArrow}
+
+\newcommand*{\LWR at HTML@DArrow}{\keystroke{\HTMLunicode{02193}}}
+\LWR at formatted{DArrow}
+
+\newcommand*{\LWR at HTML@LArrow}{\keystroke{\HTMLunicode{02190}}}
+\LWR at formatted{LArrow}
+
+\newcommand*{\LWR at HTML@RArrow}{\keystroke{\HTMLunicode{02192}}}
+\LWR at formatted{RArrow}
+
+% Preserves the language options:
+\LetLtxMacro\LWR at HTML@Shift\Shift
+\xpatchcmd{\LWR at HTML@Shift}
+    {$\Uparrow$}
+    {\HTMLunicode{21D1}}
+    {}
+    {}
+\LWR at formatted{Shift}
+
+\LetLtxMacro\LWR at HTML@PgUp\PgUp
+\xpatchcmd{\LWR at HTML@PgUp}
+    {$\uparrow$}
+    {\HTMLunicode{2191}}
+    {}
+    {}
+\LWR at formatted{PgUp}
+
+\LetLtxMacro\LWR at HTML@PgDown\PgDown
+\xpatchcmd{\LWR at HTML@PgDown}
+    {$\downarrow$}
+    {\HTMLunicode{2193}}
+    {}
+    {}
+\LWR at formatted{PgDown}
+%    \end{macrocode}
+%
+% \iffalse
+%</keystroke>
+% \fi
+%
+%
+%
+% \iffalse
+%<*kpfonts>
+% \fi
+%
+% \part{lwarp-kpfonts.sty}
+%
+% \section{kpfonts}
+%
+% \credits{Christophe Caignaert}
+%
+% \DescribePackage{kpfonts}
+% \pkg{kpfonts} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation honors the options
+% \trouble[limitations]{kpfonts=\pkg{kpfonts}}
+%   \optn{uprightRoman} for \cs{D} only,
+%   \optn{classicReIm},
+%   \optn{frenchstyle} for Greek only,
+%   \optn{upright} for Greek only,
+%   \optn{uprightgreeks},
+%   \optn{slantedGreeks},
+%   and \optn{mathcalasscript}.
+%
+% The dedicated macros for Greek work correctly.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.891}{2020/09/19}{\pkg{kpfonts}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{kpfonts}[2010/08/20]
+
+\LWR at infoprocessingmathjax{kpfonts}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-newpxtxmath}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+\ifkp at calasscr
+    \CustomizeMathJax{\let\LWRorigmathscr\mathscr}
+    \CustomizeMathJax{\let\LWRorigmathcal\mathcal}
+    \CustomizeMathJax{\let\mathscr\LWRorigmathcal}
+    \CustomizeMathJax{\let\mathcal\LWRorigmathscr}
+\fi
+
+\ifkp at upgrk % lowercase
+    \LWR at mathjax@addgreek at l@up{}{}
+    \LWR at mathjax@addgreek at l@it{other}{}
+\else
+    \LWR at mathjax@addgreek at l@up{other}{}
+\fi
+
+\ifkp at slGrk
+    \LWR at mathjax@addgreek at u@it*{}{}
+    \LWR at mathjax@addgreek at u@up*{other}{}
+    \LWR at mathjax@addgreek at u@up*{var}{}
+\else
+    \LWR at mathjax@addgreek at u@it*{other}{}
+    \LWR at mathjax@addgreek at u@it*{var}{}
+\fi
+
+\LWR at mathjax@addgreek at u@up*{}{up}
+\LWR at mathjax@addgreek at l@up{}{up}
+
+\LWR at mathjax@addgreek at u@it*{}{sl}
+\LWR at mathjax@addgreek at l@it{}{sl}
+
+\CustomizeMathJax{\newcommand{\partialsl}{\mathord{\unicode{x1D715}}}}
+\CustomizeMathJax{\let\partialup\uppartial}% not upright
+
+\ifkp at oldReIm
+\else
+    \CustomizeMathJax{\renewcommand{\Re}{\mathfrak{Re}}}
+    \CustomizeMathJax{\renewcommand{\Im}{\mathfrak{Im}}}
+\fi
+
+\ifkp at Dcommand
+    \ifkp at upRm%
+        \CustomizeMathJax{
+            \def\D#1{\mathclose{\,\mathrm{d}}#1}
+        }
+    \else
+        \CustomizeMathJax{
+            \def\D#1{\mathclose{\,\mathit{d}}#1}
+        }
+    \fi
+\fi
+
+\CustomizeMathJax{\let\pounds\mathsterling}
+\CustomizeMathJax{\let\kppounds\mathsterling}
+
+\CustomizeMathJax{\newcommand{\mathup}[1]{\mathrm{#1}}}% never sans
+\CustomizeMathJax{\let\mathupright\mathup}
+
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</kpfonts>
+% \fi
+%
+%
+%
+% \iffalse
+%<*kpfonts-otf>
+% \fi
+%
+% \part{lwarp-kpfonts-otf.sty}
+%
+% \section{kpfonts-otf}
+%
+% \credits{Daniel Flipo}
+%
+% \DescribePackage{kpfonts-otf}
+% \pkg{kpfonts-otf} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation honors the options
+% \trouble[limitations]{kpfonts-otf=\pkg{kpfonts-otf}}
+%   \optn{fancyReIm},
+%   \optn{mathcal},
+%   \optn{frenchstyle} for Greek only,
+%   and \optn{mathcalasscript}.
+%
+% Also see the options for \pkg{unicode-math}, which is loaded by \pkg{kpfonts-otf}.
+%
+% The \pkg{unicode-math} dedicated macros for Greek work correctly.
+%
+% The \brand{MathJax} emulation does not change with the use of \cs{mathversion}.
+% \watchout[\cs{mathversion}]
+% Whatever emulation is established at the begin of the document will remain.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.891}{2020/09/20}{\pkg{kpfonts-otf}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{kpfonts-otf}[2020/06/20]
+
+\LWR at infoprocessingmathjax{kpfonts-otf}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-nonunicode}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+\ifkp at calasscr
+    \CustomizeMathJax{\let\mathscr\mathcal}
+\else
+    \CustomizeMathJax{\let\mathcal\mathscr}
+\fi
+
+\ifkp at frenchstyle
+    \LWR at mathjax@addgreek at l@up{}{}
+    \LWR at mathjax@addgreek at u@up*{}{}
+\fi
+
+\ifkp at oldReIm
+    \CustomizeMathJax{\renewcommand{\Re}{\mathfrak{Re}}}
+    \CustomizeMathJax{\renewcommand{\Im}{\mathfrak{Im}}}
+\else
+\fi
+
+\ifkp at Dcommand
+    \CustomizeMathJax{
+        \def\D#1{\mathclose{\,\mathrm{d}}#1}
+    }
+\fi
+
+\CustomizeMathJax{\let\varint\int}
+\CustomizeMathJax{\let\variint\iint}
+\CustomizeMathJax{\let\variiint\iiint}
+\CustomizeMathJax{\let\variiiint\iiiint}
+\CustomizeMathJax{\let\varidotsint\idotsint}
+
+\CustomizeMathJax{\newcommand{\varointctrclockwise}{\mathop{\unicode{x2939}\!\!\unicode{x0222E}}}}
+\CustomizeMathJax{\newcommand{\oiintclockwise}{\mathop{\unicode{x0222F}\!\!\unicode{x2938}}}}
+\CustomizeMathJax{\newcommand{\oiintctrclockwise}{\mathop{\unicode{x2939}\!\!\unicode{x0222F}}}}
+\CustomizeMathJax{\newcommand{\varoiintclockwise}{\mathop{\unicode{x0222F}\!\!\unicode{x2938}}}}
+\CustomizeMathJax{\newcommand{\varoiintctrclockwise}{\mathop{\unicode{x2939}\!\!\unicode{x0222F}}}}
+\CustomizeMathJax{\newcommand{\oiiintclockwise}{\mathop{\unicode{x02230}\!\!\unicode{x2938}}}}
+\CustomizeMathJax{\newcommand{\oiiintctrclockwise}{\mathop{\unicode{x2939}\!\!\unicode{x02230}}}}
+\CustomizeMathJax{\newcommand{\varoiiintclockwise}{\mathop{\unicode{x02230}\!\!\unicode{x2938}}}}
+\CustomizeMathJax{\newcommand{\varoiiintctrclockwise}{\mathop{\unicode{x2939}\!\!\unicode{x02230}}}}
+\CustomizeMathJax{\newcommand{\sqiint}{\mathop{\unicode{x2A16}\!\!\unicode{x2A16}}}}
+\CustomizeMathJax{\newcommand{\sqiiint}{\mathop{\unicode{x2A16}\!\!\unicode{x2A16}\!\!\unicode{x2A16}}}}
+
+\CustomizeMathJax{\let\widearc\overparen}
+\CustomizeMathJax{\let\widearcarrow\overrightarrow}
+\CustomizeMathJax{\let\overrightarc\overrightarrow}
+
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</kpfonts-otf>
+% \fi
+%
+%
+%
+% \iffalse
 %<*layaureo>
 % \fi
 %
@@ -55634,7 +61388,7 @@
 % \cs{lettrine} \oarg{keys} \marg{letter} \marg{additional text}
 %    \begin{macrocode}
 \DeclareDocumentCommand{\lettrine}{o m m}{%
-\InlineClass{lettrine}{#2}\InlineClass{lettrinetext}{#3} % extra space
+    \InlineClass{lettrine}{#2}\InlineClass{lettrinetext}{#3} % extra space
 }
 
 \newcounter{DefaultLines}
@@ -55668,9 +61422,394 @@
 %
 %
 %
+% \iffalse
+%<*libertinust1math>
+% \fi
 %
+% \part{lwarp-libertinust1math.sty}
 %
+% \section{libertinust1math}
+%
+% \credits{Michael Sharpe}
+%
+% \DescribePackage{libertinust1math}
+% \pkg{libertinust1math} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation honors
+% \optn{frenchmath} for Greek but not Latin characters,
+% and \optn{slantedGreek}, \optn{uprightGreek}, and \optn{ISO}
+% also adjust Greek characters.
+% \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} 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
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{libertinust1math}[2020/06/10]
+
+\LWR at infoprocessingmathjax{libertinust1math}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+\iflibus at slantedG
+    \LWR at mathjax@addgreek at u@it*{}{}
+\else
+    \LWR at mathjax@addgreek at u@up*{}{}
+\fi
+
+\LWR at mathjax@addgreek at u@it*{}{it}
+\LWR at mathjax@addgreek at u@up*{up}{}
+\LWR at mathjax@addgreek at u@up*{}{up}
+
+\iflibus at frenchm
+    \LWR at mathjax@addgreek at l@up{}{}
+\else
+    \LWR at mathjax@addgreek at l@it{}{}
+\fi
+
+\LWR at mathjax@addgreek at l@it{}{it}
+\LWR at mathjax@addgreek at l@up{}{up}
+\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{\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}
+\CustomizeMathJax{\let\mathboldsans\mathsfbfit}
+\CustomizeMathJax{\let\mathbold\mathbfit}
+%    \end{macrocode}
+%
+% \filenm{lwarp_mathjax.txt} adds \cs{left} \Slash \cs{right} support for
+% delimiters.
+% \changes{v0.892}{2020/09/26}{\pkg{libertinust1math}: Added \cs{left} \Slash \cs{right} support in \filenm{lwarp_mathjax.txt}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\let\dlb\lBrack}
+\CustomizeMathJax{\let\drb\rBrack}
+
+\CustomizeMathJax{\let\sqrtsign\sqrt}
+
+\CustomizeMathJax{\let\smallintsl\smallint}
+\CustomizeMathJax{\newcommand{\smalliintsl}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiintsl}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiiintsl}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\newcommand{\smallointsl}{\mathop{\unicode{x222E}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiintsl}{\mathop{\unicode{x222F}}\limits}}
+
+\CustomizeMathJax{\let\smallintup\smallint}
+\CustomizeMathJax{\newcommand{\smalliintup}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiintup}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiiintup}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\newcommand{\smallointup}{\mathop{\unicode{x222E}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiintup}{\mathop{\unicode{x222F}}\limits}}
+
+\CustomizeMathJax{\let\intslop\int}
+\CustomizeMathJax{\newcommand{\iintslop}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintslop}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\iiiintslop}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\let\ointslop\oint}
+\CustomizeMathJax{\newcommand{\oiintslop}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiintslop}{\mathop{\unicode{x2230}}\limits}}
+
+\CustomizeMathJax{\let\intupop\int}
+\CustomizeMathJax{\newcommand{\iintupop}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintupop}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\iiiintupop}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\let\ointupop\oint}
+\CustomizeMathJax{\newcommand{\oiintupop}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiintupop}{\mathop{\unicode{x2230}}\limits}}
+
+\CustomizeMathJax{\newcommand{\smalliint}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiint}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiiint}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloint}{\mathop{\unicode{x222E}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiint}{\mathop{\unicode{x222F}}\limits}}
+
+\CustomizeMathJax{\let\intop\int}
+\CustomizeMathJax{\newcommand{\iintop}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintop}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\iiiintop}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\let\ointop\oint}
+\CustomizeMathJax{\newcommand{\oiintop}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiintop}{\mathop{\unicode{x2230}}\limits}}
+
+\CustomizeMathJax{\newcommand{\oiint}{\mathop{\unicode{x222F}}\limits}}
+
+\CustomizeMathJax{\newcommand{\bigcupdot}{\mathop{\unicode{x2A03}}}}
+\CustomizeMathJax{\newcommand{\bigsqcap}{\mathop{\unicode{x2A05}}}}
+\CustomizeMathJax{\newcommand{\xsol}{\mathop{\unicode{x29F8}}}}
+\CustomizeMathJax{\newcommand{\xbsol}{\mathop{\unicode{x29F9}}}}
+\CustomizeMathJax{\let\prodop\prod}
+\CustomizeMathJax{\let\coprodop\coprod}
+\CustomizeMathJax{\let\sumop\sum}
+\CustomizeMathJax{\let\bigwedgeop\bigwedge}
+\CustomizeMathJax{\let\bigveeop\bigvee}
+\CustomizeMathJax{\let\bigcapop\bigcap}
+\CustomizeMathJax{\let\bigcupop\bigcup}
+\CustomizeMathJax{\let\xsolop\xsol}
+\CustomizeMathJax{\let\xbsolop\xbsol}
+\CustomizeMathJax{\let\bigodotop\bigodot}
+\CustomizeMathJax{\let\bigoplusop\bigoplus}
+\CustomizeMathJax{\let\bigotimesop\bigotimes}
+\CustomizeMathJax{\let\bigcupdotop\bigcupdot}
+\CustomizeMathJax{\let\biguplusop\biguplus}
+\CustomizeMathJax{\let\bigsqcapop\bigsqcap}
+\CustomizeMathJax{\let\bigsqcupop\bigsqcup}
+
+\CustomizeMathJax{\newcommand{\ovhook}[1]{\mathord{#1\unicode{x00309}}}}
+\CustomizeMathJax{\newcommand{\candra}[1]{\mathord{#1\unicode{x00310}}}}
+\CustomizeMathJax{\newcommand{\oturnedcomma}[1]{\mathord{#1\unicode{x00312}}}}
+\CustomizeMathJax{\newcommand{\ocommatopright}[1]{\mathord{#1\unicode{x00315}}}}
+\CustomizeMathJax{\newcommand{\droang}[1]{\mathord{#1\unicode{x0031A}}}}
+\CustomizeMathJax{\newcommand{\leftharpoonaccent}[1]{\mathord{#1\unicode{x020D0}}}}
+\CustomizeMathJax{\newcommand{\rightharpoonaccent}[1]{\mathord{#1\unicode{x020D1}}}}
+\CustomizeMathJax{\newcommand{\leftarrowaccent}[1]{\mathord{#1\unicode{x020D0}}}}
+\CustomizeMathJax{\let\rightarrowaccent\vec}
+
+\CustomizeMathJax{\newcommand{\leftrightarrowaccent}[1]{\mathord{#1\unicode{x020E1}}}}
+\CustomizeMathJax{\newcommand{\annuity}[1]{\mathord{#1\unicode{x020E7}}}}
+\CustomizeMathJax{\newcommand{\widebridgeabove}[1]{\mathord{#1\unicode{x020E9}}}}
+\CustomizeMathJax{\newcommand{\asteraccent}[1]{\mathord{#1\unicode{x020F0}}}}
+
+% neutralized:
+\CustomizeMathJax{\newcommand{\braceld}{}}
+\CustomizeMathJax{\newcommand{\bracerd}{}}
+\CustomizeMathJax{\newcommand{\bracelu}{}}
+\CustomizeMathJax{\newcommand{\braceru}{}}
+\CustomizeMathJax{\newcommand{\braceex}{}}
+\CustomizeMathJax{\newcommand{\bracemu}{}}
+\CustomizeMathJax{\newcommand{\bracemd}{}}
+\CustomizeMathJax{\newcommand{\parenld}{}}
+\CustomizeMathJax{\newcommand{\parenrd}{}}
+\CustomizeMathJax{\newcommand{\parenlu}{}}
+\CustomizeMathJax{\newcommand{\parenru}{}}
+\CustomizeMathJax{\newcommand{\bracketld}{}}
+\CustomizeMathJax{\newcommand{\bracketrd}{}}
+\CustomizeMathJax{\newcommand{\bracketlu}{}}
+\CustomizeMathJax{\newcommand{\bracketru}{}}
+\CustomizeMathJax{\newcommand{\bracketex}{}}
+\CustomizeMathJax{\newcommand{\parenex}{}}
+
+\CustomizeMathJax{\newcommand{lhook}{~}}
+\CustomizeMathJax{\newcommand{rhook}{~}}
+\CustomizeMathJax{\newcommand{relbar}{-}}
+\CustomizeMathJax{\newcommand{Relbar}{=}}
+
+\CustomizeMathJax{\newcommand{\mapstochar}{\mathrel{\unicode{x21A6}}}}
+
+\CustomizeMathJax{\newcommand{\Zbar}{\mathord{\unicode{x0001B5}}}}
+\CustomizeMathJax{\newcommand{\notchar}{\mathrel{\unicode{x000AC}}}}
+\CustomizeMathJax{\newcommand{\upbackepsilon}{\mathord{\unicode{x03F6}}}}
+\CustomizeMathJax{\newcommand{\smblkcircle}{\mathbin{\unicode{x02022}}}}
+\CustomizeMathJax{\newcommand{\enleadertwodots}{\mathord{\unicode{x02025}}}}
+\CustomizeMathJax{\newcommand{\unicodeellipsis}{\mathord{\unicode{x02026}}}}
+\CustomizeMathJax{\newcommand{\mathellipsis}{\mathinner{\unicode{x02026}}}}
+\CustomizeMathJax{\newcommand{\dprime}{\mathord{\unicode{x02033}}}}
+\CustomizeMathJax{\newcommand{\trprime}{\mathord{\unicode{x02034}}}}
+\CustomizeMathJax{\newcommand{\backdprime}{\mathord{\unicode{x02036}}}}
+\CustomizeMathJax{\newcommand{\backtrprime}{\mathord{\unicode{x02037}}}}
+\CustomizeMathJax{\newcommand{\caretinsert}{\mathord{\unicode{x02038}}}}
+\CustomizeMathJax{\newcommand{\Exclam}{\mathord{\unicode{x0203C}}}}
+
+\CustomizeMathJax{\newcommand{\hyphenbullet}{\mathord{\unicode{x02043}}}}
+\CustomizeMathJax{\newcommand{\fracslash}{\mathbin{\unicode{x02044}}}}
+\CustomizeMathJax{\newcommand{\Question}{\mathord{\unicode{x02047}}}}
+\CustomizeMathJax{\newcommand{\closure}{\mathrel{\unicode{x02050}}}}
+\CustomizeMathJax{\newcommand{\qprime}{\mathord{\unicode{x02057}}}}
+\CustomizeMathJax{\newcommand{\vertoverlay}{\mathrel{\unicode{x020D2}}}}
+\CustomizeMathJax{\newcommand{\enclosecircle}{\mathord{\unicode{x020DD}}}}
+\CustomizeMathJax{\newcommand{\enclosesquare}{\mathord{\unicode{x020DE}}}}
+\CustomizeMathJax{\newcommand{\enclosetriangle}{\mathord{\unicode{x020E4}}}}
+\CustomizeMathJax{\newcommand{\Eulerconst}{\mathord{\unicode{x02107}}}}
+\CustomizeMathJax{\newcommand{\turnediota}{\mathord{\unicode{x02129}}}}
+\CustomizeMathJax{\newcommand{\Angstrom}{\mathord{\unicode{x0212B}}}}
+
+\CustomizeMathJax{\newcommand{\sansLturned}{\mathord{\unicode{x02142}}}}
+\CustomizeMathJax{\newcommand{\sansLmirrored}{\mathord{\unicode{x02143}}}}
+\CustomizeMathJax{\newcommand{\Yup}{\mathord{\unicode{x02144}}}}
+\CustomizeMathJax{\newcommand{\upand}{\mathbin{\unicode{x0214B}}}}
+\CustomizeMathJax{\newcommand{\increment}{\mathord{\unicode{x02206}}}}
+\CustomizeMathJax{\newcommand{\smallin}{\mathrel{\unicode{x0220A}}}}
+\CustomizeMathJax{\newcommand{\nni}{\mathrel{\unicode{x0220C}}}}
+
+\CustomizeMathJax{\newcommand{\smallni}{\mathrel{\unicode{x0220D}}}}
+\CustomizeMathJax{\newcommand{\QED}{\mathord{\unicode{x0220E}}}}
+\CustomizeMathJax{\newcommand{\vysmwhtcircle}{\mathbin{\unicode{x02218}}}}
+\CustomizeMathJax{\newcommand{\vysmblkcircle}{\mathbin{\unicode{x02219}}}}
+\CustomizeMathJax{\newcommand{\rightangle}{\mathord{\unicode{x0221F}}}}
+
+\CustomizeMathJax{\newcommand{\Colon}{\mathrel{\unicode{x02237}}}}
+\CustomizeMathJax{\newcommand{\dotminus}{\mathbin{\unicode{x02238}}}}
+\CustomizeMathJax{\newcommand{\dashcolon}{\mathrel{\unicode{x02239}}}}
+\CustomizeMathJax{\newcommand{\dotsminusdots}{\mathrel{\unicode{x0223A}}}}
+\CustomizeMathJax{\newcommand{\kernelcontraction}{\mathrel{\unicode{x0223B}}}}
+\CustomizeMathJax{\newcommand{\invlazys}{\mathbin{\unicode{x0223E}}}}
+
+\CustomizeMathJax{\newcommand{\sinewave}{\mathord{\unicode{x0223F}}}}
+\CustomizeMathJax{\newcommand{\nsime}{\mathrel{\unicode{x02244}}}}
+\CustomizeMathJax{\newcommand{\simneqq}{\mathrel{\unicode{x02246}}}}
+\CustomizeMathJax{\newcommand{\napprox}{\mathrel{\unicode{x02249}}}}
+\CustomizeMathJax{\newcommand{\approxident}{\mathrel{\unicode{x0224B}}}}
+\CustomizeMathJax{\newcommand{\backcong}{\mathrel{\unicode{x0224C}}}}
+
+\CustomizeMathJax{\newcommand{\nasymp}{\mathrel{\unicode{x0226D}}}}
+\CustomizeMathJax{\newcommand{\nlesssim}{\mathrel{\unicode{x02274}}}}
+\CustomizeMathJax{\newcommand{\ngtrsim}{\mathrel{\unicode{x02275}}}}
+\CustomizeMathJax{\newcommand{\nlessgtr}{\mathrel{\unicode{x02278}}}}
+\CustomizeMathJax{\newcommand{\ngtrless}{\mathrel{\unicode{x02279}}}}
+
+\CustomizeMathJax{\newcommand{\nsubset}{\mathrel{\unicode{x02284}}}}
+\CustomizeMathJax{\newcommand{\nsupset}{\mathrel{\unicode{x02285}}}}
+
+\CustomizeMathJax{\newcommand{\cupleftarrow}{\mathbin{\unicode{x0228C}}}}
+\CustomizeMathJax{\newcommand{\cupdot}{\mathbin{\unicode{x0228D}}}}
+\CustomizeMathJax{\newcommand{\circledequal}{\mathbin{\unicode{x0229C}}}}
+
+\CustomizeMathJax{\newcommand{\assert}{\mathrel{\unicode{x022A6}}}}
+\CustomizeMathJax{\newcommand{\VDash}{\mathrel{\unicode{x022AB}}}}
+\CustomizeMathJax{\newcommand{\prurel}{\mathrel{\unicode{x022B0}}}}
+
+\CustomizeMathJax{\newcommand{\origof}{\mathrel{\unicode{x022B6}}}}
+\CustomizeMathJax{\newcommand{\smallprod}{\mathop{\unicode{x0220F}}}}% not small
+\CustomizeMathJax{\newcommand{\smallcoprod}{\mathop{\unicode{x02210}}}}% not small
+\CustomizeMathJax{\newcommand{\smallsum}{\mathop{\unicode{x02211}}}}% not small
+\CustomizeMathJax{\newcommand{\Hfraktur}{\mathord{\unicode{x1D525}}}}
+\CustomizeMathJax{\newcommand{\dsol}{\mathbin{\unicode{x029F6}}}}
+\CustomizeMathJax{\newcommand{\rsolbar}{\mathbin{\unicode{x029F7}}}}
+
+\CustomizeMathJax{\newcommand{\eqless}{\mathrel{\unicode{x022DC}}}}
+\CustomizeMathJax{\newcommand{\eqgtr}{\mathrel{\unicode{x022DD}}}}
+\CustomizeMathJax{\newcommand{\npreccurlyeq}{\mathrel{\unicode{x022E0}}}}
+\CustomizeMathJax{\newcommand{\nsucccurlyeq}{\mathrel{\unicode{x022E1}}}}
+\CustomizeMathJax{\newcommand{\nsqsubseteq}{\mathrel{\unicode{x022E2}}}}
+\CustomizeMathJax{\newcommand{\nsqsupseteq}{\mathrel{\unicode{x022E3}}}}
+\CustomizeMathJax{\newcommand{\sqsubsetneq}{\mathrel{\unicode{x022E4}}}}
+\CustomizeMathJax{\newcommand{\sqsupsetneq}{\mathrel{\unicode{x022E5}}}}
+\CustomizeMathJax{\newcommand{\nvartriangleleft}{\mathrel{\unicode{x022EA}}}}
+\CustomizeMathJax{\newcommand{\nvartriangleright}{\mathrel{\unicode{x022EB}}}}
+
+\CustomizeMathJax{\newcommand{\vdotsmath}{\mathrel{\unicode{x022EE}}}}
+\CustomizeMathJax{\newcommand{\unicodecdots}{\mathord{\unicode{x022EF}}}}
+\CustomizeMathJax{\newcommand{\adots}{\mathrel{\unicode{x022F0}}}}
+\CustomizeMathJax{\newcommand{\succneq}{\mathrel{\unicode{x02AB2}}}}
+\CustomizeMathJax{\newcommand{\preceqq}{\mathrel{\unicode{x02AB3}}}}
+\CustomizeMathJax{\newcommand{\succeqq}{\mathrel{\unicode{x02AB4}}}}
+\CustomizeMathJax{\newcommand{\precneq}{\mathrel{\unicode{x02AB1}}}}
+
+\CustomizeMathJax{\newcommand{\mapsfrom}{\mathrel{\unicode{x021A4}}}}
+
+\CustomizeMathJax{\newcommand{\longmapsfrom}{\mathrel{\unicode{x027FB}}}}
+
+\CustomizeMathJax{\newcommand{\diameter}{\mathord{\unicode{x02300}}}}
+\CustomizeMathJax{\newcommand{\coloneq}{\mathrel{\unicode{x02254}}}}
+\CustomizeMathJax{\newcommand{\eqcolon}{\mathrel{\unicode{x02255}}}}
+\CustomizeMathJax{\newcommand{\arceq}{\mathrel{\unicode{x02258}}}}
+\CustomizeMathJax{\newcommand{\wedgeq}{\mathrel{\unicode{x02259}}}}
+\CustomizeMathJax{\newcommand{\veeeq}{\mathrel{\unicode{x0225A}}}}
+
+\CustomizeMathJax{\newcommand{\stareq}{\mathrel{\unicode{x0225B}}}}
+\CustomizeMathJax{\newcommand{\eqdef}{\mathrel{\unicode{x0225D}}}}
+\CustomizeMathJax{\newcommand{\measeq}{\mathrel{\unicode{x0225E}}}}
+\CustomizeMathJax{\newcommand{\questeq}{\mathrel{\unicode{x0225F}}}}
+\CustomizeMathJax{\newcommand{\nequiv}{\mathrel{\unicode{x02262}}}}
+\CustomizeMathJax{\newcommand{\Equiv}{\mathrel{\unicode{x02263}}}}
+
+\CustomizeMathJax{\newcommand{\house}{\mathord{\unicode{x02302}}}}
+
+\CustomizeMathJax{\newcommand{\musicalnote}{\mathord{\unicode{x0266A}}}}
+\CustomizeMathJax{\newcommand{\degree}{\mathord{\unicode{x000B0}}}}
+\CustomizeMathJax{\newcommand{\mathsection}{\mathord{\unicode{x000A7}}}}
+\CustomizeMathJax{\newcommand{\mathparagraph}{\mathord{\unicode{x000B6}}}}
+\CustomizeMathJax{\newcommand{\checkmarkmath}{\mathord{\unicode{x02713}}}}
+\CustomizeMathJax{\newcommand{\invnot}{\mathord{\unicode{x02310}}}}
+
+\CustomizeMathJax{\newcommand{\mathvisiblespace}{\mathord{\unicode{x02423}}}}
+\CustomizeMathJax{\newcommand{\mdlgblksquare}{\mathord{\unicode{x025A0}}}}
+\CustomizeMathJax{\newcommand{\mdlgwhtsquare}{\mathord{\unicode{x025A1}}}}
+
+\CustomizeMathJax{\newcommand{\bigblacktriangleup}{\mathord{\unicode{x025B2}}}}
+\CustomizeMathJax{\newcommand{\varbigtriangleup}{\mathord{\unicode{x025B3}}}}
+
+\CustomizeMathJax{\newcommand{\bigblacktriangledown}{\mathord{\unicode{x025BC}}}}
+\CustomizeMathJax{\newcommand{\varbigtriangledown}{\mathord{\unicode{x025BD}}}}
+\CustomizeMathJax{\newcommand{\Longmapsfrom}{\mathrel{\unicode{x027FD}}}}
+
+% bug in print font:
+\CustomizeMathJax{\newcommand{\mdlgblkdiamond}{\mathord{\unicode{x025C6}}}}
+
+\CustomizeMathJax{\newcommand{\mdlgwhtdiamond}{\mathord{\unicode{x025C7}}}}
+\CustomizeMathJax{\newcommand{\Longmapsto}{\mathrel{\unicode{x027FE}}}}
+\CustomizeMathJax{\newcommand{\fisheye}{\mathord{\unicode{x025C9}}}}
+\CustomizeMathJax{\newcommand{\mdlgwhtlozenge}{\mathord{\unicode{x025CA}}}}
+\CustomizeMathJax{\newcommand{\mdlgwhtcircle}{\mathbin{\unicode{x025CB}}}}
+\CustomizeMathJax{\newcommand{\bullseye}{\mathord{\unicode{x025CE}}}}
+\CustomizeMathJax{\newcommand{\mdlgblkcircle}{\mathord{\unicode{x025CF}}}}
+
+\CustomizeMathJax{\newcommand{\Nwarrow}{\mathrel{\unicode{x021D6}}}}
+\CustomizeMathJax{\newcommand{\Nearrow}{\mathrel{\unicode{x021D7}}}}
+\CustomizeMathJax{\newcommand{\Searrow}{\mathrel{\unicode{x021D8}}}}
+\CustomizeMathJax{\newcommand{\Swarrow}{\mathrel{\unicode{x021D9}}}}
+
+\CustomizeMathJax{\newcommand{\Mapsfrom}{\mathord{\unicode{x02906}}}}
+\CustomizeMathJax{\newcommand{\smwhtcircle}{\mathord{\unicode{x025E6}}}}
+\CustomizeMathJax{\newcommand{\smwhtdiamond}{\mathbin{\unicode{x022C4}}}}
+\CustomizeMathJax{\newcommand{\Mapsto}{\mathord{\unicode{x02907}}}}
+
+\CustomizeMathJax{\let\ngets\nleftarrow}
+\CustomizeMathJax{\let\nsimeq\nsime}
+\CustomizeMathJax{\let\nle\nleq}
+\CustomizeMathJax{\let\nge\ngeq}
+
+\end{warpMathJax}
+%    \end{macrocode}
+%
 % \iffalse
+%</libertinust1math>
+% \fi
+%
+%
+% \iffalse
 %<*lineno>
 % \fi
 %
@@ -55684,6 +61823,7 @@
 % \pkg{lineno} is partly emulated, but mostly ignored.
 %
 % \changes{v0.49}{2018/02/19}{\pkg{lineno}: Added.}
+% \changes{v0.892}{2020/10/02}{\pkg{lineno}: Fix for \env{internallinenumbers*}.}
 %
 % \codehtml
 %
@@ -55749,7 +61889,7 @@
 
 \newcommand\internallinenumbers{}
 \let\endinternallinenumbers\endlinenumbers
-\@namedef{internallinenumbers*}{\internallinenumbers*}
+\@namedef{internallinenumbers*}{\internallinenumbers}
 \expandafter\let\csname endinternallinenumbers*\endcsname\endlinenumbers
 
 \newcommand*{\linenoplaceholder}[1]{% redefine per language
@@ -55880,16 +62020,12 @@
 %
 % \changes{v0.20}{2017/01/01}{\pkg{listings}: Added.}
 %
-% \codehtml
-%    \begin{macrocode}
-\begin{warpHTML}
-%    \end{macrocode}
 %
-%
 %    \begin{macrocode}
 \LWR at ProvidesPackagePass{listings}[2018/09/02]
 %    \end{macrocode}
 
+%
 % ^^A For passing optional arguments to an environment, see:
 % ^^A \href
 % ^^A {http://tex.stackexchange.com/questions/9035/how-to-pass-an-optional-argument-to-an-environment-with-verbatim-content}
@@ -55920,6 +62056,7 @@
 % Use the \pkg{listings} \optn{literate} option to replace
 % \HTML\ entities:
 % \changes{v0.60}{2018/09/12}{\pkg{listings}: Fix for \HTML\ entities.}
+% \changes{v0.891}{2020/09/21}{\pkg{listings}: Improved \HTML\ sanitizing.}
 %    \begin{macrocode}
 \def\lstset@#1{\endgroup%
 %  \ifx\@empty#1%
@@ -55930,7 +62067,17 @@
             ,literate=%
             {<}{\HTMLentity{lt}}{4}%
             {>}{\HTMLentity{gt}}{4}%
-            {\&}{\HTMLentity{amp}}{5}%
+            {'}{\HTMLentity{apos}}{6}%
+            {`}{\HTMLentity{grave}}{7}%
+%    \end{macrocode}
+% The ampersand is not treated here, as the result is inconsistent spacing.
+% It is nevertheless converted to |&| elsewhere.
+% Sanitizing the double quote interferes with \pkg{listings}' conversion of
+% visible spaces inside strings.
+% \changes{v0.891}{2020/09/21}{\pkg{listings}: Improved spacing around ampersand.}
+% ^^A       {"}{\HTMLentity{quot}}{6}%
+% ^^A       {\&}{\HTMLentity{amp}}{5}% inconsistent spacing
+%    \begin{macrocode}
         }%
 %     \fi%
 }
@@ -55949,6 +62096,15 @@
 % \changes{v0.51}{2018/03/17}{\pkg{listings}: Forces cleared options.}
 %    \begin{macrocode}
 \LWR at traceinfo{lst at Init}%
+%    \end{macrocode}
+%
+% \cs{LWR at forcenewpage} is moved to the start to avoid a spurrious bug
+% with paragraph handling and conditionals.
+% \changes{v0.891}{2020/09/16}{\pkg{listings}: Fix for \brand{MathJax}: Moved \cs{LWR at forcenewpage} to start.}
+%    \begin{macrocode}
+\lst at ifdisplaystyle%
+    \LWR at forcenewpage%
+\fi%
 \renewcommand*{\@captype}{lstlisting}%
 \let\lst at aboveskip\z@\let\lst at belowskip\z@%
 \gdef\lst at boxpos{t}%
@@ -55976,18 +62132,24 @@
 % produce the \element{pre}, then
 % reenable line numbers.
 %    \begin{macrocode}
-\LWR at traceinfo{About to create verbatim.}%
-\let\lsthk at EveryPar\relax%
-\LWR at forcenewpage
-\LWR at atbeginverbatim{2}{programlisting}%
+    \LWR at traceinfo{About to create verbatim.}%
+    \let\lsthk at EveryPar\relax%
+%    \end{macrocode}
+% \changes{v0.891}{2020/09/16}{\pkg{listings}: Fix for \brand{MathJax}: Moved \cs{LWR at forcenewpage} to start.}
+%    \begin{macrocode}
+    \LWR at atbeginverbatim{programlisting}%
 
-\let\lsthk at EveryPar\LWR at origlsthkEveryPar%
+    \let\lsthk at EveryPar\LWR at origlsthkEveryPar%
 \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}%
 }
 
 %    \end{macrocode}
@@ -56005,14 +62167,14 @@
 % produce the \element{/pre}, then
 % reenable line numbers:
 %    \begin{macrocode}
-\let\lsthk at EveryPar\relax%
-\LWR at afterendverbatim{0}%
-\let\lsthk at EveryPar\LWR at origlsthkEveryPar%
+    \let\lsthk at EveryPar\relax%
+    \LWR at afterendverbatim%
+    \let\lsthk at EveryPar\LWR at origlsthkEveryPar%
 \else%
 %    \end{macrocode}
 % Inline, so create the closing \element{/span}:
 %    \begin{macrocode}
-\ifbool{LWR at verbtags}{\noindent\LWR at htmltag{/span}}{}%
+    \ifbool{LWR at verbtags}{\noindent\LWR at htmltag{/span}}{}%
 \fi%
 %    \end{macrocode}
 % Final \pkg{listings} deinit:
@@ -56030,6 +62192,7 @@
 %
 % Patched for \pkg{lwarp}.
 %    \begin{macrocode}
+
 \def\lst at MakeCaption#1{%
 \LWR at traceinfo{MAKING CAPTION at #1}%
   \lst at ifdisplaystyle
@@ -56047,8 +62210,10 @@
         \lst at ifnolol\else
             \ifx\lst@@caption\@empty
                 \ifx\lst at caption\@empty
-                    \ifx\lst at intname\@empty \else \def\lst at temp{ }%
-                    \ifx\lst at intname\lst at temp \else
+                    \ifx\lst at intname\@empty
+                    \else
+                        \def\lst at temp{ }%
+                        \ifx\lst at intname\lst at temp \else
 %    \end{macrocode}
 % This code places a contents entry for a non-float.
 % This would have to be modified for \pkg{lwarp}:
@@ -56055,7 +62220,8 @@
 %    \begin{macrocode}
 \LWR at traceinfo{addcontents lst at name: -\lst at name-}%
 %                            \addcontentsline{lol}{lstlisting}{\lst at name}
-                    \fi\fi
+                        \fi
+                    \fi
                 \fi
             \else
 %    \end{macrocode}
@@ -56094,9 +62260,9 @@
 %    \begin{macrocode}
 %                  \lst at maketitle\lst at title % (AS)
 \LWR at traceinfo{Making title: \lst at title}%
-\begin{BlockClass}{lstlistingtitle}% lwarp
-\lst at maketitle\lst at title% lwarp
-\end{BlockClass}% lwarp
+\begin{BlockClass}{lstlistingtitle}%    lwarp
+\lst at maketitle\lst at title%               lwarp
+\end{BlockClass}%                       lwarp
              \fi
 \LWR at traceinfo{About to assign label: !\lst at label!}%
         \ifx\lst at label\@empty\else
@@ -56118,6 +62284,11 @@
   \fi
 \LWR at traceinfo{DONE WITH CAPTION at #1}%
 }
+
+\renewcommand{\lst at maketitle}[1]{%
+    \LWR at isolate{#1}%
+}%
+
 %    \end{macrocode}
 % \end{noindmacro}
 %
@@ -56152,10 +62323,6 @@
     }{\PackageError{lwarp-listings}{Numbers #1 unknown}\@ehc}}
 %    \end{macrocode}
 %
-%    \begin{macrocode}
-\end{warpHTML}
-%    \end{macrocode}
-
 % \iffalse
 %</listings>
 % \fi
@@ -56308,13 +62475,20 @@
 % not at each caption.
 %
 % Options [c], [l], and [r] are ignored.
+%
+% \changes{v0.84}{2020/04/20}{\pkg{caption} now optional.}
+%
 %    \begin{macrocode}
 \newenvironment{longtable*}[2][]{%
     \LWR at floatbegin{table}%
-    \setcaptiontype{\LTcaptype}%
-    \caption at setoptions{longtable}%
-    \caption at setoptions{@longtable}%
-    \caption at LT@setup%
+    \ifdef{\setcaptiontype}{% caption package:
+        \setcaptiontype{\LTcaptype}%
+        \caption at setoptions{longtable}%
+        \caption at setoptions{@longtable}%
+        \caption at LT@setup%
+    }{% w/o caption package:
+        \renewcommand*{\@captype}{\LTcaptype}%
+    }%
     \booltrue{LWR at starredlongtable}%
     \boolfalse{LWR at longtable@havehead}%
     \let\captionlistentry\LWR at LTcaptionlistentry%
@@ -56324,10 +62498,14 @@
 
 \newenvironment{longtable}[2][]{%
     \LWR at floatbegin{table}%
-    \setcaptiontype{\LTcaptype}%
-    \caption at setoptions{longtable}%
-    \caption at setoptions{@longtable}%
-    \caption at LT@setup%
+    \ifdef{\setcaptiontype}{% caption package:
+        \setcaptiontype{\LTcaptype}%
+        \caption at setoptions{longtable}%
+        \caption at setoptions{@longtable}%
+        \caption at LT@setup%
+    }{% w/o caption package:
+        \renewcommand*{\@captype}{\LTcaptype}%
+    }%
     \refstepcounter{\LTcaptype}%
     \boolfalse{LWR at longtable@havehead}%
     \let\captionlistentry\LWR at LTcaptionlistentry%
@@ -56345,7 +62523,7 @@
 % Error for heads which should have been in \cs{warpprintonly}:
 %    \begin{macrocode}
 \newcommand*{\LWR at longtable@headerror}{%
-    \PackageError{lwarp}
+    \PackageError{lwarp-longtable}
     {For longtable:\MessageBreak
     1: Keep either one of an \protect\endhead\space or
         \protect\endfirsthead\space\MessageBreak
@@ -56430,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
 
@@ -56604,7 +62818,7 @@
 %
 % The print version does not seem to honor \env{longtable*} from the
 % \trouble[table numbering]{ltxtable=\pkg{ltxtable}>numbering}
-% \trouble{table>numbering}
+% \trouble{table>numbering>ltextable=\pkg{ltxtable}}
 % \pkg{caption} package, while \pkg{lwarp} does.
 %
 % \changes{v0.44}{2017/11/15}{\pkg{ltxtable}: Added.}
@@ -56937,7 +63151,7 @@
 \let\LWRTODONOTES at orig@todototoc\todototoc
 
 \renewcommand*{\todototoc}{%
-\phantomsection%
+\LWR at phantomsection%
 \LWRTODONOTES at orig@todototoc%
 }
 
@@ -57019,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
 %
@@ -57104,7 +63353,7 @@
 % This allows for correct spacing in the musical score.
 % \changes{v0.74}{2019/08/13}{\pkg{lyluatex}: Adapts to user's geometry.}
 %    \begin{macrocode}
-    \LWR at orignewpage%
+    \LWR at maybe@orignewpage%
     \LWR at origloadgeometry{LWR at usergeometry}%
     \LWR at print@normalsize%
 %    \end{macrocode}
@@ -57161,7 +63410,7 @@
 %    \end{macrocode}
 % Move to a new page and renew the regular page geometry:
 %    \begin{macrocode}
-    \LWR at orignewpage%
+    \LWR at maybe@orignewpage%
     \LWR at origrestoregeometry%
 %    \end{macrocode}
 % End of the local group.
@@ -57257,7 +63506,7 @@
 % \changes{v0.58}{2018/06/13}{Fix: Extra \cs{newpage} to flush pending \cs{index} writes.}
 %    \begin{macrocode}
 \preto\printindex{%
-    \LWR at orignewpage%
+    \LWR at maybe@orignewpage%
     \LWR at startpars%
 }
 %    \end{macrocode}
@@ -57596,6 +63845,122 @@
 %
 %
 % \iffalse
+%<*mathalpha>
+% \fi
+%
+% \part{lwarp-mathalpha.sty}
+%
+% \section{mathalpha}
+%
+% \credits{Michael Sharpe}
+%
+% \DescribePackage{mathalpha}
+% \pkg{mathalpha} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation ignores all package options,
+% \trouble[limitations]{mathalpha=\pkg{mathalpha}}
+% and some bold fonts may not be not supported by \brand{MathJax}.
+%
+% \changes{v0.89}{2020/08/31}{\pkg{mathalpha}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{mathalpha}[2019/10/05]
+
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\mathbbb}[1]{\boldsymbol{\mathbb{#1}}}}% not bold
+\CustomizeMathJax{\newcommand{\mathbcal}[1]{\boldsymbol{\mathcal{#1}}}}
+\CustomizeMathJax{\newcommand{\mathbfrak}[1]{\boldsymbol{\mathfrak{#1}}}}
+\CustomizeMathJax{\newcommand{\mathbscr}[1]{\boldsymbol{\mathscr{#1}}}}% not bold
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</mathalpha>
+% \fi
+%
+%
+%
+%
+% \iffalse
+%<*mathastext>
+% \fi
+%
+% \part{lwarp-mathastext.sty}
+%
+% \section{mathastext}
+%
+% \credits{Jean-Fran\c{c}ois Burnol}
+%
+% \DescribePackage{mathastext}
+% \pkg{mathastext} is used as-is for \SVG\ math,
+% and emulated for \brand{MathJax}.
+%
+% \changes{v0.893}{2020/10/14}{\pkg{mathastext}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{mathastext}[2019/11/16]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+\ifmst at itgreek
+%     \LWR at mathjax@addgreek at l@it{}{}
+\else
+    \ifmst at upgreek
+        \LWR at mathjax@addgreek at l@up{}{}
+    \else
+        \ifmst at frenchmath
+            \LWR at mathjax@addgreek at l@up{}{}
+        \else
+            \ifmst at italic
+%               \LWR at mathjax@addgreek at l@it{}{}
+            \else
+                \LWR at mathjax@addgreek at l@up{}{}
+            \fi
+        \fi
+    \fi
+\fi
+
+\ifcase\mst at greek@select
+    \or{\LWR at mathjax@addgreek at u@it*{}{}}
+%     \or{\LWR at mathjax@addgreek at u@up*{}{}}
+\fi
+
+\CustomizeMathJax{\newcommand{\mathnormalbold}[1]{\boldsymbol{#1}}}
+\CustomizeMathJax{\newcommand{\MathEulerBold}[1]{\boldsymbol{#1}}}
+\CustomizeMathJax{\newcommand{\MathEuler}[1]{{#1}}}
+\CustomizeMathJax{\newcommand{\MathPSymbol}[1]{{#1}}}
+\CustomizeMathJax{\let\fouriervec\vec}
+\CustomizeMathJax{\let\pmvec\vec}
+\CustomizeMathJax{\let\inodot\imath}
+\CustomizeMathJax{\let\jnodot\jmath}
+\CustomizeMathJax{\let\shortiff\iff}
+\CustomizeMathJax{\let\longto\longrightarrow}
+\CustomizeMathJax{\newcommand{\inftypsy}{\mathord{\unicode{x221E}}}}
+\CustomizeMathJax{\newcommand{\proptopsy}{\mathrel{\unicode{x221D}}}}
+\CustomizeMathJax{\let\prodpsy\prod}
+\CustomizeMathJax{\let\sumpsy\sum}
+\CustomizeMathJax{\let\MToriginalprod\prod}
+\CustomizeMathJax{\let\MToriginalsum\sum}
+\CustomizeMathJax{\newcommand{\DotTriangle}{\mathord{\unicode{x2234}}}}
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</mathastext>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*mathcomp>
 % \fi
 %
@@ -57636,7 +64001,131 @@
 %
 %
 %
+%
 % \iffalse
+%<*mathdesign>
+% \fi
+%
+% \part{lwarp-mathdesign.sty}
+%
+% \section{mathdesign}
+%
+% \credits{Paul Pichaureau}
+%
+% \DescribePackage{mathdesign}
+% \pkg{mathdesign} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation ignores all package options
+% \trouble[limitations]{mathdesign=\pkg{mathdesign}}
+% except \optn{greekuppercase} and \optn{greeklowercase}.
+% The dedicated macros for upright and italic greek letters work correctly,
+% although the user may wish to swap the definitions for
+% epsilon and phi.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.89}{2020/08/08}{\pkg{mathdesign}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{mathdesign}[2013/08/29]
+%    \end{macrocode}
+%
+% For \brand{MathJax}:
+%    \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-overlaysymbols}
+
+\begin{warpMathJax}
+\LWR at infoprocessingmathjax{mathdesign}
+%    \end{macrocode}
+
+% Default greek upright or italicized:
+%
+% \changes{v0.891}{2020/09/06}{\pkg{mathdesign}: Honors \optn{greekuppercase},
+%                                                   \optn{greeklowercase}.}
+%    \begin{macrocode}
+\if at MD@grupright
+\LWR at mathjax@addgreek at l@up{}{}
+\fi
+
+\if at MD@GRupright
+\else
+\LWR at mathjax@addgreek at u@it*{}{}
+\fi
+%    \end{macrocode}
+%
+% Upright:
+%    \begin{macrocode}
+\LWR at mathjax@addgreek at l@up{}{up}
+\LWR at mathjax@addgreek at u@up*{}{up}
+%    \end{macrocode}
+%
+% Italicized:
+%    \begin{macrocode}
+\LWR at mathjax@addgreek at l@it{}{it}
+\LWR at mathjax@addgreek at u@it*{}{it}
+%    \end{macrocode}
+%
+% Adapt to \pkg{mathdesign} inconsistency:
+%    \begin{macrocode}
+\CustomizeMathJax{\let\digammaup\Digammaup}
+\CustomizeMathJax{\renewcommand{\digammait}{\mathit{\digammaup}}}
+%    \end{macrocode}
+%
+% Extra symbols:
+% \changes{v0.891}{2020/09/08}{\pkg{mathdesign}: Added \cs{mathrel}, \cs{mathord}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\smallin}{\mathrel{\unicode{x220A}}}}
+\CustomizeMathJax{\newcommand{\smallowns}{\mathrel{\unicode{x220D}}}}
+\CustomizeMathJax{\newcommand{\notsmallin}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x220A}}}}}
+\CustomizeMathJax{\newcommand{\notsmallowns}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x220D}}}}}
+\CustomizeMathJax{\newcommand{\rightangle}{\mathord{\unicode{x221F}}}}
+%    \end{macrocode}
+%
+% Integrals:
+% \changes{v0.891}{2020/09/08}{\pkg{mathdesign}: Added \cs{mathop}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\intclockwise}{\mathop{\unicode{x2231}}\limits}}
+\CustomizeMathJax{\newcommand{\ointclockwise}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\ointctrclockwise}{\mathop{\unicode{x2233}}\limits}}
+\CustomizeMathJax{\newcommand{\oiint}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiint}{\mathop{\unicode{x2230}}\limits}}
+%    \end{macrocode}
+%
+% Math and text mode:
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\ddag}{\unicode{x2021}}}
+\CustomizeMathJax{\newcommand{\P}{\unicode{x00B6}}}
+\CustomizeMathJax{\newcommand{\copyright}{\unicode{x00A9}}}
+\CustomizeMathJax{\newcommand{\dag}{\unicode{x2020}}}
+\CustomizeMathJax{\newcommand{\pounds}{\unicode{x00A3}}}
+%    \end{macrocode}
+%
+% Extra symbols:
+% \changes{v0.891}{2020/09/08}{\pkg{mathdesign}: Added \cs{mathinner}, \cs{mathbin}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\iddots}{\mathinner{\unicode{x22F0}}}}
+\CustomizeMathJax{\newcommand{\utimes}{\mathbin{\overline{\times}}}}
+\CustomizeMathJax{\newcommand{\dtimes}{\mathbin{\underline{\times}}}}
+\CustomizeMathJax{\newcommand{\udtimes}{\mathbin{\overline{\underline{\times}}}}}
+\CustomizeMathJax{\newcommand{\leftwave}{\left\{}}
+\CustomizeMathJax{\newcommand{\rightwave}{\right\}}}
+
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</mathdesign>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*mathdots>
 % \fi
 %
@@ -57651,6 +64140,7 @@
 % emulated for \brand{MathJax}.
 %
 % \changes{v0.80}{2020/02/16}{\pkg{mathdots}: Added.}
+% \changes{v0.891}{2020/09/08}{\pkg{mathdots}: Added more macros, \cs{mathinner}.}
 %
 % \codehtml
 %
@@ -57660,7 +64150,15 @@
 %
 %    \begin{macrocode}
 \begin{warpMathJax}
-\CustomizeMathJax{\newcommand{\iddots}{\unicode{x22F0}}}
+\CustomizeMathJax{\newcommand{\iddots}{\mathinner{\unicode{x22F0}}}}
+\CustomizeMathJax{\let\fixedddots\ddots}
+\CustomizeMathJax{\let\fixedvdots\vdots}
+\CustomizeMathJax{\let\fixediddots\iddots}
+\CustomizeMathJax{\let\originalddots\ddots}
+\CustomizeMathJax{\let\originalvdots\vdots}
+\CustomizeMathJax{\let\originaliddots\iddots}
+\CustomizeMathJax{\let\originaldddot\dddot}
+\CustomizeMathJax{\let\originalddddot\ddddot}
 \end{warpMathJax}
 %    \end{macrocode}
 %
@@ -57688,6 +64186,7 @@
 % Greek letters are unchanged.\watchout
 %
 % \changes{v0.80}{2020/02/09}{\pkg{mathfixs}: Added.}
+% \changes{v0.891}{2020/09/08}{\pkg{mathfixs}: Added \cs{mathinner}.}
 %
 % \codehtml
 %
@@ -57698,7 +64197,7 @@
 %    \begin{macrocode}
 \begin{warpMathJax}
 \CustomizeMathJax{\newcommand{\rfrac}[2]{\tfrac{#1}{#2}}}
-\CustomizeMathJax{\newcommand{\vfrac}[2]{{}^{#1}\!/{}_{#2}}}
+\CustomizeMathJax{\newcommand{\vfrac}[2]{\mathinner{{}^{#1}\!/{}_{#2}}}}
 \CustomizeMathJax{\newcommand{\ProvideMathFix}[1]{}}
 \CustomizeMathJax{\newcommand{\mathbold}[1]{\boldsymbol{#1}}}
 \CustomizeMathJax{\newcommand{\.}{\,}}
@@ -57714,6 +64213,234 @@
 %
 %
 % \iffalse
+%<*mathpazo>
+% \fi
+%
+% \part{lwarp-mathpazo.sty}
+%
+% \section{mathpazo}
+%
+% \credits{Walter Schmidt}
+%
+% \DescribePackage{mathpazo}
+% \pkg{mathpazo} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation ignores all package options.
+% \trouble[limitations]{mathpazo=\pkg{mathpazo}}
+% The dedicated macros for upright greek letters do work correctly.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.89}{2020/08/10}{\pkg{mathpazo}: Added.}
+% \changes{v0.891}{2020/09/06}{\pkg{mathpazo}: Honors \optn{slantedGreek}.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{mathpazo}[2020/03/25]
+%    \end{macrocode}
+%
+% For \brand{MathJax}:
+%    \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+\LWR at infoprocessingmathjax{mathpazo}
+
+\ifpazo at slGreek
+\LWR at mathjax@addgreek at u@it*{}{}
+\fi
+
+\LWR at mathjax@addgreek at u@up*{up}{}
+
+\CustomizeMathJax{\newcommand{\mathbold}[1]{\boldsymbol{#1}}}
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</mathpazo>
+% \fi
+%
+%
+%
+% \iffalse
+%<*mathptmx>
+% \fi
+%
+% \part{lwarp-mathptmx.sty}
+%
+% \section{mathptmx}
+%
+% \credits{Walter Schmidt}
+%
+% \DescribePackage{mathptmx}
+% \pkg{mathptmx} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation ignores all package options.
+% \trouble[limitations]{mathptmx=\pkg{mathptmx}}
+% The dedicated macros for upright greek letters do work correctly.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.89}{2020/08/10}{\pkg{mathptmx}: Added.}
+% \changes{v0.891}{2020/09/06}{\pkg{mathptmx}: Honors \optn{slantedGreek}.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{mathptmx}[2020/03/25]
+%    \end{macrocode}
+%
+% For \brand{MathJax}:
+%    \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+\LWR at infoprocessingmathjax{mathptmx}
+
+\@ifpackagewith{mathptmx}{slantedGreek}
+    {\LWR at mathjax@addgreek at u@it*{}{}}
+    {}
+
+\LWR at mathjax@addgreek at u@up*{up}{}
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</mathptmx>
+% \fi
+%
+%
+%
+%
+% \iffalse
+%<*mathspec>
+% \fi
+%
+% \part{lwarp-mathspec.sty}
+%
+% \section{mathspec}
+%
+% \credits{Andrew Gilbert Moschou}
+%
+% \DescribePackage{mathspec}
+% \pkg{mathspec} is used as-is with \SVG\ math,
+% and is emulated for \brand{MathJax}.
+%
+% Double quotes (\cs{"} and the |"| character)
+% \trouble[quotes]{mathspec=\pkg{mathspec}}
+% are removed during \brand{MathJax} emulation,
+% but this also includes inside \cs{text}.
+%
+% \changes{v0.893}{2020/11/22}{\pkg{mathspec}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{mathspec}[2016/12/22]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+%    \end{macrocode}
+%
+% Neutralize double quotes (|"| and \cs{"}):
+%    \begin{macrocode}
+\booltrue{LWR at MathJax@silentquotes}
+%    \end{macrocode}
+%
+% Sort options for out Greek emulation:
+%    \begin{macrocode}
+\AtBeginDocument{
+\ifcase\eu at GreekUppercase@@value %% If Greek Uppercase Regular
+    \LWR at mathjax@addgreek at u@up*{}{}
+\or %% If Greek Uppercase Italic 
+    \LWR at mathjax@addgreek at u@it*{}{}
+\or %% If Greek Uppercase Plain
+    \LWR at mathjax@addgreek at u@up*{}{}
+\fi
+\ifcase\eu at GreekLowercase@@value %% If Greek Lowercase Regular
+    \LWR at mathjax@addgreek at l@up{}{}
+\or %% If Greek Lowercase Italic
+    \LWR at mathjax@addgreek at l@it{}{}
+\or %% If Greek Lowercase Plain
+    \LWR at mathjax@addgreek at l@it{}{}
+\fi
+}
+%    \end{macrocode}
+%
+% Swap definitions according the \pkg{mathspec} conditionals:
+%    \begin{macrocode}
+\newcommand*{\LWR at mathspec@varforms}{%
+\eu at ifbooltrue{GreekLowercase}{
+    \eu at ifbooltrue{exchangebetaforms}{
+        \CustomizeMathJax{\let\LWRorigbeta\beta}
+        \CustomizeMathJax{\let\beta\varbeta}
+        \CustomizeMathJax{\let\varbeta\LWRorigbeta}
+    }
+    \eu at ifbooltrue{exchangeepsilonforms}{
+        \CustomizeMathJax{\let\LWRorigepsilon\epsilon}
+        \CustomizeMathJax{\let\epsilon\varepsilon}
+        \CustomizeMathJax{\let\varepsilon\LWRorigepsilon}
+    }
+    \eu at ifbooltrue{exchangethetaforms}{
+        \CustomizeMathJax{\let\LWRorigtheta\theta}
+        \CustomizeMathJax{\let\theta\vartheta}
+        \CustomizeMathJax{\let\vartheta\LWRorigtheta}
+    }
+    \eu at ifbooltrue{exchangekappaforms}{
+        \CustomizeMathJax{\let\LWRorigkappa\kappa}
+        \CustomizeMathJax{\let\kappa\varkappa}
+        \CustomizeMathJax{\let\varkappa\LWRorigkappa}
+    }
+    \eu at ifbooltrue{exchangepiforms}{
+        \CustomizeMathJax{\let\LWRorigpi\pi}
+        \CustomizeMathJax{\let\pi\varpi}
+        \CustomizeMathJax{\let\varpi\LWRorigpi}
+    }
+    \eu at ifbooltrue{exchangerhoforms}{
+        \CustomizeMathJax{\let\LWRorigrho\rho}
+        \CustomizeMathJax{\let\rho\varrho}
+        \CustomizeMathJax{\let\varrho\LWRorigrho}
+    }
+    \eu at ifbooltrue{exchangephiforms}{
+        \CustomizeMathJax{\let\LWRorigphi\phi}
+        \CustomizeMathJax{\let\phi\varphi}
+        \CustomizeMathJax{\let\varphi\LWRorigphi}
+    }
+}
+\eu at ifbooltrue{GreekUppercase}{
+    \eu at ifbooltrue{exhangeThetaforms}{
+        \CustomizeMathJax{\let\LWRorigTheta\Theta}
+        \CustomizeMathJax{\let\Theta\varTheta}
+        \CustomizeMathJax{\let\varTheta\LWRorigTheta}
+    }
+}
+}
+%    \end{macrocode}
+%
+% Append new action to \pkg{mathspec}'s \cs{AtBeginDocument} code:
+%    \begin{macrocode}
+\xapptocmd{\exchangeforms}
+    {\AtBeginDocument{\LWR at mathspec@varforms}}
+    {}
+    {\LWR at patcherror{mathspec}{exchangeforms}}
+
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</mathspec>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*mathtools>
 % \fi
 %
@@ -57777,6 +64504,9 @@
 % For \brand{MathJax}:
 %
 % \changes{v0.79}{2020/01/26}{\pkg{mathtools}: Added \brand{MathJax} emulation.}
+% \changes{v0.87}{2020/05/20}{\pkg{mathtools}: Updated starred macros.}
+% \changes{v0.87}{2020/05/20}{\pkg{mathtools}: Improved \cs{underbraket}, \cs{overbracket}.}
+% \changes{v0.891}{2020/09/19}{\pkg{mathtools}: Improved \cs{underbraket}, \cs{overbracket}.}
 %    \begin{macrocode}
 \begin{warpMathJax}
 \LWR at infoprocessingmathjax{mathtools}
@@ -57794,7 +64524,16 @@
 \CustomizeMathJax{\newcommand{\crampedclap}[2][]{{#1#2}}}
 \CustomizeMathJax{\newenvironment{crampedsubarray}[1]{}{}}
 \CustomizeMathJax{\newcommand{\crampedsubstack}{}}
-\CustomizeMathJax{\newcommand{\smashoperator}[2][]{#2}}
+%    \end{macrocode}
+% \changes{v0.89}{2020/08/21}{\pkg{mathtools}: Minor improvements.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\smashoperator}[2][]{#2\limits}}
+%    \end{macrocode}
+% \changes{v0.89}{2020/08/21}{\pkg{mathtools}: Added \cs{adjustlimits}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\adjustlimits}{}}
+%    \end{macrocode}
+%    \begin{macrocode}
 \CustomizeMathJax{\newcommand{\SwapAboveDisplaySkip}{}}
 
 \CustomizeMathJax{\require{extpfeil}}
@@ -57812,10 +64551,14 @@
 \CustomizeMathJax{\Newextarrow\xleftharpoonup{10,10}{0x21bc}}
 \CustomizeMathJax{\Newextarrow\xleftrightharpoons{10,10}{0x21cb}}
 
-\CustomizeMathJax{\newcommand{\LWRdounderbracket}[1]{\underline{#1}}}
+\CustomizeMathJax{\newcommand{\LWRdounderbracket}[3]{%
+    \mathinner{\underset{#3}{\underline{\llcorner{#1}\lrcorner}}}%
+}}
 \CustomizeMathJax{\newcommand{\LWRunderbracket}[2][]{\LWRdounderbracket{#2}}}
 \CustomizeMathJax{\newcommand{\underbracket}[1][]{\LWRunderbracket}}
-\CustomizeMathJax{\newcommand{\LWRdooverbracket}[1]{\overline{#1}}}
+\CustomizeMathJax{\newcommand{\LWRdooverbracket}[3]{%
+    \mathinner{\overset{#3}{\overline{\ulcorner{#1}\urcorner}}}%
+}}
 \CustomizeMathJax{\newcommand{\LWRoverbracket}[2][]{\LWRdooverbracket{#2}}}
 \CustomizeMathJax{\newcommand{\overbracket}[1][]{\LWRoverbracket}}
 
@@ -57863,37 +64606,107 @@
     \def\LWRAboxed#1&#2&#3!|!{\fbox{\(#1\)}&\fbox{\(#2\)}}
     \newcommand{\Aboxed}[1]{\LWRAboxed#1&&!|!}
 }
-
+%    \end{macrocode}
+%
+% \changes{v0.86}{2020/05/09}{\pkg{mathtools}: Added \cs{ArrowBetweenLines*}.}
+%    \begin{macrocode}
 \CustomizeMathJax{
-    \newcommand{\ArrowBetweenLines}[1][\Updownarrow]{#1}%   no starred
+    \newcommand{\LWRABLines}[1][\Updownarrow]{#1 \notag \\}% star/nostar the same
+    \newcommand{\ArrowBetweenLines}{\ifstar\LWRABLines\LWRABLines}
 }
+%    \end{macrocode}
+%
+% \changes{v0.85}{2020/05/01}{\pkg{mathtools}: Fixed: \cs{shortintertext}.}
+% \changes{v0.86}{2020/05/09}{\pkg{mathtools}: Added starred delimited macros.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\shortintertext}[1]{\text{#1}\notag \\}}
 
-\CustomizeMathJax{\newcommand{\shortintertext}[1]{\\ \text{#1}\notag \\}}
+\CustomizeMathJax{\newcommand{\vdotswithin}[1]{\hspace{.5em}\vdots}}
+%    \end{macrocode}
+%
+% \changes{v0.86}{2020/05/09}{\pkg{mathtools}: Added \cs{shortvdotswithin*}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\LWRshortvdotswithinstar}[1]{\vdots \hspace{.5em} & \\}}
+\CustomizeMathJax{\newcommand{\LWRshortvdotswithinnostar}[1]{& \hspace{.5em}\vdots \\}}
+\CustomizeMathJax{%
+    \newcommand{\shortvdotswithin}%
+        {\ifstar\LWRshortvdotswithinstar\LWRshortvdotswithinnostar}%
+}
 
-\CustomizeMathJax{\newcommand{\vdotswithin}[1]{\hspace{.5em}\vdots}}
-\CustomizeMathJax{\newcommand{\shortvdotswithin}[1]{ & \hspace{.5em}\vdots \\}}
 \CustomizeMathJax{\newcommand{\MTFlushSpaceAbove}{}}
 \CustomizeMathJax{\newcommand{\MTFlushSpaceBelow}{\\}}
 
-% The following does not create a starred version of the macro:
 \LetLtxMacro\LWR at mathtools@orig at DeclarePairedDelimiter\DeclarePairedDelimiter
 \renewcommand{\DeclarePairedDelimiter}[3]{
     \LWR at mathtools@orig at DeclarePairedDelimiter{#1}{#2}{#3}
-    \CustomizeMathJax{\newcommand{#1}[2][]{{##1#2##2##1#3}}}
+% starred:
+    \appto\LWR at customizedMathJax{\LWRbackslash(}
+    \appto\LWR at customizedMathJax{%
+        \LWRbackslash{}newcommand\{\LWRbackslash\macrotocsname{#1}LWRsubstar\}%
+    }%
+    \appto\LWR at customizedMathJax{[2][]}%
+    \appto\LWR at customizedMathJax{\{\{}%
+    \LWR at subcustomizedmathjax{##1\left#2##2##1\right#3}%
+    \appto\LWR at customizedMathJax{\}\}}%
+    \appto\LWR at customizedMathJax{\LWRbackslash)\par}%
+% not starred:
+    \appto\LWR at customizedMathJax{\LWRbackslash(}
+    \appto\LWR at customizedMathJax{%
+        \LWRbackslash{}newcommand\{\LWRbackslash\macrotocsname{#1}LWRsubnostar\}%
+    }%
+    \appto\LWR at customizedMathJax{[2][]}%
+    \appto\LWR at customizedMathJax{\{\{}%
+    \LWR at subcustomizedmathjax{##1#2##2##1#3}%
+    \appto\LWR at customizedMathJax{\}\}}%
+    \appto\LWR at customizedMathJax{\LWRbackslash)\par}%
+% user macro:
+    \appto\LWR at customizedMathJax{\LWRbackslash(}
+    \appto\LWR at customizedMathJax{%
+        \LWRbackslash{}newcommand\{\LWRbackslash{}\macrotocsname{#1}\}%
+        \{\LWRbackslash{}ifstar%
+            \LWRbackslash{}\macrotocsname{#1}LWRsubstar%
+            \LWRbackslash{}\macrotocsname{#1}LWRsubnostar%
+        \}%
+    }%
+    \appto\LWR at customizedMathJax{\LWRbackslash)\par}%
 }
 \@onlypreamble\DeclareParedDelimiter
 
 % (DeclarePairedDelimiterX is already defined to use \DeclarePairedDelimiterXPP.)
 
-% The following does not create a starred version of the macro.
 \LetLtxMacro\LWR at mathtools@orig at DeclarePairedDelimiterXPP\DeclarePairedDelimiterXPP
 \DeclareDocumentCommand{\DeclarePairedDelimiterXPP}{m O{1} m m m m m}{
     \LWR at mathtools@orig at DeclarePairedDelimiterXPP{#1}[#2]{#3}{#4}{#5}{#6}{#7}
+% subsubstar, second opt arg
     \appto\LWR at customizedMathJax{\LWRbackslash(}%
     \appto\LWR at customizedMathJax{%
-        \LWRbackslash{}newcommand\{\LWRbackslash\macrotocsname{#1}LWRsub\}%
+        \LWRbackslash{}newcommand\{\LWRbackslash\macrotocsname{#1}LWRsubsubstar\}%
     }%
     \appto\LWR at customizedMathJax{[#2]}%
+    \appto\LWR at customizedMathJax{\{\{\LWRbackslash{}left}%
+    \LWR at subcustomizedmathjax{#3#4#7}%
+    \appto\LWR at customizedMathJax{\LWRbackslash{}right}%
+    \LWR at subcustomizedmathjax{#5#6}%
+    \appto\LWR at customizedMathJax{\}\}}%
+    \appto\LWR at customizedMathJax{\LWRbackslash)\par}%
+% substar, first opt arg
+    \appto\LWR at customizedMathJax{\LWRbackslash(}%
+    \appto\LWR at customizedMathJax{%
+        \LWRbackslash{}newcommand\{\LWRbackslash\macrotocsname{#1}LWRsubstar\}[1][]%
+    }%
+    \appto\LWR at customizedMathJax{%
+        \{
+        \LWRbackslash{}def\LWRbackslash{}delimsize\{\#1\}
+        \LWRbackslash\macrotocsname{#1}LWRsubsubstar
+        \}%
+    }%
+    \appto\LWR at customizedMathJax{\LWRbackslash)\par}%
+% subsubnostar, second opt arg
+    \appto\LWR at customizedMathJax{\LWRbackslash(}%
+    \appto\LWR at customizedMathJax{%
+        \LWRbackslash{}newcommand\{\LWRbackslash\macrotocsname{#1}LWRsubsubnostar\}%
+    }%
+    \appto\LWR at customizedMathJax{[#2]}%
     \appto\LWR at customizedMathJax{\{\{\LWRbackslash{}delimsize}%
     \LWR at subcustomizedmathjax{#3#4#7}%
     \appto\LWR at customizedMathJax{\LWRbackslash{}delimsize}%
@@ -57900,17 +64713,30 @@
     \LWR at subcustomizedmathjax{#5#6}%
     \appto\LWR at customizedMathJax{\}\}}%
     \appto\LWR at customizedMathJax{\LWRbackslash)\par}%
+% subnostar, first opt arg
     \appto\LWR at customizedMathJax{\LWRbackslash(}%
     \appto\LWR at customizedMathJax{%
-        \LWRbackslash{}newcommand\{\LWRbackslash\macrotocsname{#1}\}[1][]%
+        \LWRbackslash{}newcommand\{\LWRbackslash\macrotocsname{#1}LWRsubnostar\}[1][]%
     }%
     \appto\LWR at customizedMathJax{%
         \{
         \LWRbackslash{}def\LWRbackslash{}delimsize\{\#1\}
-        \LWRbackslash\macrotocsname{#1}LWRsub
+        \LWRbackslash\macrotocsname{#1}LWRsubsubnostar
         \}%
     }%
     \appto\LWR at customizedMathJax{\LWRbackslash)\par}%
+% user macro:
+    \appto\LWR at customizedMathJax{\LWRbackslash(}
+    \appto\LWR at customizedMathJax{%
+        \LWRbackslash{}newcommand\{%
+            \LWRbackslash{}\macrotocsname{#1}%
+        \}%
+            \{\LWRbackslash{}ifstar%
+                \LWRbackslash{}\macrotocsname{#1}LWRsubstar%
+                \LWRbackslash{}\macrotocsname{#1}LWRsubnostar%
+            \}%
+    }%
+    \appto\LWR at customizedMathJax{\LWRbackslash)\par}%
 }
 \@onlypreamble\DeclareParedDelimiterXPP
 \@onlypreamble\DeclareParedDelimiterX
@@ -57917,28 +64743,35 @@
 
 \CustomizeMathJax{\newcommand\lparen{(}}
 \CustomizeMathJax{\newcommand\rparen{)}}
-\CustomizeMathJax{\newcommand{\vcentcolon}{:}}
 \CustomizeMathJax{\newcommand{\ordinarycolon}{:}}
+%    \end{macrocode}
+% \changes{v0.89}{2020/08/21}{\pkg{mathtools}: Minor improvements.}
+% \changes{v0.891}{2020/09/08}{\pkg{mathtools}: Uses Unicode and \cs{mathrel}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\vcentcolon}{\mathrel{\unicode{x2236}}}}
 
-\CustomizeMathJax{\newcommand\dblcolon{\vcentcolon\vcentcolon}}
-\CustomizeMathJax{\newcommand\coloneqq{\vcentcolon=}}
-\CustomizeMathJax{\newcommand\Coloneqq{\dblcolon=}}
-\CustomizeMathJax{\newcommand\coloneq{\vcentcolon{-}}}
-\CustomizeMathJax{\newcommand\Coloneq{\dblcolon{-}}}
+\CustomizeMathJax{\newcommand\dblcolon{\mathrel{\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand\coloneqq{\mathrel{\unicode{x2236}\!=}}}
+\CustomizeMathJax{\newcommand\Coloneqq{\mathrel{\unicode{x2237}\!=}}}
+\CustomizeMathJax{\newcommand\coloneq{\mathrel{\unicode{x2236}-}}}
+\CustomizeMathJax{\newcommand\Coloneq{\mathrel{\unicode{x2237}-}}}
 
-\CustomizeMathJax{\newcommand\eqqcolon{=\vcentcolon}}
-\CustomizeMathJax{\newcommand\Eqqcolon{=\dblcolon}}
-\CustomizeMathJax{\newcommand\eqcolon{\mathrel{-}\vcentcolon}}
-\CustomizeMathJax{\newcommand\Eqcolon{\mathrel{-}\dblcolon}}
+\CustomizeMathJax{\newcommand\eqqcolon{\mathrel{=\!\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand\Eqqcolon{\mathrel{=\!\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand\eqcolon{\mathrel{-\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand\Eqcolon{\mathrel{-\unicode{x2237}}}}
 
-\CustomizeMathJax{\newcommand\colonapprox{\vcentcolon\approx}}
-\CustomizeMathJax{\newcommand\Colonapprox{\dblcolon\approx}}
-\CustomizeMathJax{\newcommand\colonsim{\vcentcolon\sim}}
-\CustomizeMathJax{\newcommand\Colonsim{\dblcolon\sim}}
+\CustomizeMathJax{\newcommand\colonapprox{\mathrel{\unicode{x2236}\!\approx}}}
+\CustomizeMathJax{\newcommand\Colonapprox{\mathrel{\unicode{x2237}\!\approx}}}
+\CustomizeMathJax{\newcommand\colonsim{\mathrel{\unicode{x2236}\!\sim}}}
+\CustomizeMathJax{\newcommand\Colonsim{\mathrel{\unicode{x2237}\!\sim}}}
 
-\CustomizeMathJax{\newcommand{\nuparrow}{\cancel{\uparrow}}}
-\CustomizeMathJax{\newcommand{\ndownarrow}{\cancel{\downarrow}}}
-\CustomizeMathJax{\newcommand{\bigtimes}{{\Large\times}}}
+%    \end{macrocode}
+% \changes{v0.89}{2020/08/21}{\pkg{mathtools}: Minor improvements.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\nuparrow}{\mathrel{\cancel{\uparrow}}}}
+\CustomizeMathJax{\newcommand{\ndownarrow}{\mathrel{\cancel{\downarrow}}}}
+\CustomizeMathJax{\newcommand{\bigtimes}{\mathop{\Large\times}\limits}}
 
 \CustomizeMathJax{\newcommand{\prescript}[3]{{}^{#1}_{#2}#3}}
 
@@ -57969,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
 
@@ -58138,6 +65134,11 @@
 \newcommand*{\LWR at mdframedstart}{%
 \LWR at traceinfo{LWR at mdframedstart start}%
 %    \end{macrocode}
+% Warn if starting a frame inside a \element{span}:
+% \changes{v0.84}{2020/04/22}{\pkg{mdframed}: Warn inside a \element{span}.}
+%    \begin{macrocode}
+    \LWR at spanwarninvalid{mdframe}%
+%    \end{macrocode}
 % Turn off paragraph handling during the generation of
 % the encapsulating tags:
 %    \begin{macrocode}
@@ -58147,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}
@@ -58180,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,
@@ -58599,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
 %
@@ -58752,9 +65792,66 @@
 %
 %
 %
+% \iffalse
+%<*menukeys>
+% \fi
 %
+% \part{lwarp-menukeys.sty}
 %
+% \section{menukeys}
+%
+% \credits{Tobias Weh}
+%
+% \DescribePackage{menukeys}
+% \pkg{menukeys} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.893}{2020/11/07}{\pkg{menukeys}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{menukeys}[2020/12/19]
+%    \end{macrocode}
+%
+% Patch to use a \env{lateximage} whose \attribute{alt} text
+% is the contents of this use of the macro.
+% A hash on these contents allows the reuse of the image for
+% each instance of the same contents.
+% \changes{v0.893}{2020/12/24}{\pkg{menukeys}: Updated to v1.6.1.}
+%    \begin{macrocode}
+\xpatchcmd{\tw at define@menu at macro@}
+    {\@nameuse{tw at style@#4 at pre}}
+    {%
+        \begin{lateximage}*[\detokenize{##2}]%
+        \@nameuse{tw at style@#4 at pre}%
+    }
+    {}
+    {\LWR at patcherror{menukeys}{tw at define@menu at macro@}}
+
+\xpatchcmd{\tw at define@menu at macro@}
+    {\@nameuse{tw at style@#4 at post}}
+    {%
+        \@nameuse{tw at style@#4 at post}%
+        \end{lateximage}%
+    }
+    {}
+    {\LWR at patcherror{menukeys}{tw at define@menu at macro@ B}}
+%    \end{macrocode}
+%
+% Patch the existing macros:
+%    \begin{macrocode}
+\renewmenumacro{\menu}[>]{menus}
+\renewmenumacro{\directory}[/]{paths}
+\renewmenumacro{\keys}[+]{roundedkeys}
+%    \end{macrocode}
+%
 % \iffalse
+%</menukeys>
+% \fi
+%
+%
+%
+% \iffalse
 %<*metalogo>
 % \fi
 %
@@ -58863,15 +65960,9 @@
 % \begin{sourceverb}
 % $\ce{C6H5-CHO}$
 % \end{sourceverb}
-%
-% If \emph{not} used inside a math expression, \pkg{lwarp} converts standalone \pkg{mhchem}
-% \marginpar{not inside math}
-% expressions into \SVG\ math images.
-%
-% If the \brand{MathJax} \pkg{mhchem} extension is not used,
-% \margintag{\brand{MathJax} without \pkg{mhchem} extension}
-% expressions inside math must be placed
-% between \cs{displaymathother} and \cs{displaymathnormal}:
+% To force the use of \SVG\ math for an expression which does not work with
+% \brand{MathJax},
+% place the expression between \cs{displaymathother} and \cs{displaymathnormal}:
 % \begin{sourcedisplay}
 % \cs{displaymathother} \\
 % \cs{[} \cs{ce}\{ \dots\ \} \cs{]}  \qquad \dots \qquad \$ \cs{ce} \{ \dots\ \} \$ \\
@@ -58878,6 +65969,10 @@
 % \cs{displaymathnormal}
 % \end{sourcedisplay}
 %
+% If \emph{not} used inside a math expression, \pkg{lwarp} converts standalone \pkg{mhchem}
+% \marginpar{not inside math}
+% expressions into \SVG\ math images.
+%
 % When producing \HTML\ output without the \brand{MathJax} \pkg{mhchem} extension,
 % \pkg{lwarp} does not support
 % \trouble[nested math]{mhchem=\pkg{mhchem}>nested dollar signs}
@@ -58905,6 +66000,7 @@
 %
 % \changes{v0.51}{2018/03/04}{\pkg{mhchem}: Added.}
 % \changes{v0.74}{2019/08/26}{\pkg{mhchem}: Modified for new \env{lateximage}.}
+% \changes{v0.87}{2020/06/02}{\pkg{mhchem}: Now uses \brand{MathJax} v3 extension.}
 %
 % \codehtml
 %
@@ -59016,6 +66112,10 @@
 \LetLtxMacro\ce\LWR at mhchem@origce%
 \LetLtxMacro\cesplit\LWR at mhchem@origcesplit%
 }
+
+\begin{warpMathJax}
+\CustomizeMathJax{\require{mhchem}}
+\end{warpMathJax}
 %    \end{macrocode}
 
 % \iffalse
@@ -59255,6 +66355,85 @@
 %
 %
 % \iffalse
+%<*minted>
+% \fi
+%
+% \part{lwarp-minted.sty}
+%
+% \section{minted}
+%
+% \credits{Geoffrey M. Poore}
+%
+% \DescribePackage{minted}
+% \pkg{minted} is patched for use by \pkg{lwarp}.
+%
+%
+% \optn{mathescape} and \optn{highlightlines} don't work.
+% \trouble[limitations]{minted=\pkg{minted}}
+% Line numbers on the right will not be aligned.
+% Due to \prog{pdftotext}, extra spaces may appear in broken lines
+% if other formatting is included.
+%
+% \changes{v0.892}{2020/10/07}{\pkg{minted}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{minted}[2017/07/19]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\xpatchcmd{\minted}
+    {\setkeys{minted at opt@cmd}{#1}}
+    {%
+        \setkeys{minted at opt@cmd}{%
+            #1,%
+            mathescape=false,breaklines,texcomments=false,highlightlines={}%
+        }%
+    }
+    {}
+    {\LWR at patcherror{minted}{minted}}
+
+\xpatchcmd{\mintinline}
+    {\setkeys{minted at opt@cmd}{#1}}
+    {\setkeys{minted at opt@cmd}{%
+            #1,%
+            mathescape=false,breaklines,texcomments=false,highlightlines={}%
+        }%
+    }
+    {}
+    {\LWR at patcherror{minted}{mintinline}}
+
+\xpatchcmd{\mint}
+    {\setkeys{minted at opt@cmd}{#1}}
+    {%
+        \setkeys{minted at opt@cmd}{%
+            #1,%
+            mathescape=false,breaklines,texcomments=false,highlightlines={}%
+        }%
+    }
+    {}
+    {\LWR at patcherror{minted}{mint}}
+
+\xpatchcmd{\inputminted}
+    {\setkeys{minted at opt@cmd}{#1}}
+    {\setkeys{minted at opt@cmd}{%
+            #1,%
+            mathescape=false,breaklines,texcomments=false,highlightlines={}%
+        }%
+    }
+    {}
+    {\LWR at patcherror{minted}{inputminted}}
+%    \end{macrocode}
+%
+% \iffalse
+%</minted>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*mismath>
 % \fi
 %
@@ -59292,6 +66471,7 @@
 % \cs{mathset} may be set with \cs{CustomizeMathJax} in the preamble.
 %
 % \changes{v0.80}{2020/02/14}{\pkg{mismath}: Added.}
+% \changes{v0.89}{2020/09/02}{\pkg{mismath}: Improved math operators.}
 %
 % \codehtml
 %
@@ -59351,48 +66531,48 @@
 \CustomizeMathJax{\newcommand{\V}{\operatorname{\probastyle{V}}}}
 \CustomizeMathJax{\newcommand{\Par}{\unicode{x00B6}}}
 
-\CustomizeMathJax{\newcommand{\adj}{\mathrm{adj}}}
-\CustomizeMathJax{\newcommand{\Aut}{\mathrm{Aut}}}
-\CustomizeMathJax{\newcommand{\Conv}{\mathrm{Conv}}}
-\CustomizeMathJax{\newcommand{\cov}{\mathrm{cov}}}
-\CustomizeMathJax{\newcommand{\Cov}{\mathrm{Cov}}}
-\CustomizeMathJax{\newcommand{curl}{\operatorname{\vect{\mathrm{curl}}}}}
-\CustomizeMathJax{\newcommand{\divg}{\mathrm{div}}}
-\CustomizeMathJax{\newcommand{\End}{\mathrm{End}}}
+\CustomizeMathJax{\DeclareMathOperator{\adj}{adj}}
+\CustomizeMathJax{\DeclareMathOperator{\Aut}{Aut}}
+\CustomizeMathJax{\DeclareMathOperator{\Conv}{Conv}}
+\CustomizeMathJax{\DeclareMathOperator{\cov}{cov}}
+\CustomizeMathJax{\DeclareMathOperator{\Cov}{Cov}}
+\CustomizeMathJax{\newcommand{\curl}{\operatorname{\vect{\mathrm{curl}}}}}
+\CustomizeMathJax{\DeclareMathOperator{\divg}{div}}
+\CustomizeMathJax{\DeclareMathOperator{\End}{End}}
 
-\CustomizeMathJax{\newcommand{\erf}{\mathrm{erf}}}
-\CustomizeMathJax{\newcommand{grad}{\operatorname{\vect{\mathrm{grad}}}}}
-\CustomizeMathJax{\newcommand{\id}{\mathrm{id}}}
-\CustomizeMathJax{\newcommand{\Id}{\mathrm{Id}}}
-\CustomizeMathJax{\newcommand{\im}{\mathrm{im}}}
+\CustomizeMathJax{\DeclareMathOperator{\erf}{erf}}
+\CustomizeMathJax{\newcommand{\grad}{\operatorname{\vect{\mathrm{grad}}}}}
+\CustomizeMathJax{\DeclareMathOperator{\id}{id}}
+\CustomizeMathJax{\DeclareMathOperator{\Id}{Id}}
+\CustomizeMathJax{\DeclareMathOperator{\im}{im}}
 \CustomizeMathJax{\let\oldIm\Im}
 \CustomizeMathJax{\renewcommand{\Im}{\operatorname{Im}}}
-\CustomizeMathJax{\newcommand{\lb}{\mathrm{lb}}}
-\CustomizeMathJax{\newcommand{\lcm}{\mathrm{lcm}}}
+\CustomizeMathJax{\DeclareMathOperator{\lb}{lb}}
+\CustomizeMathJax{\DeclareMathOperator{\lcm}{lcm}}
 
-\CustomizeMathJax{\newcommand{\rank}{\mathrm{rank}}}
+\CustomizeMathJax{\DeclareMathOperator{\rank}{rank}}
 \CustomizeMathJax{\let\oldRe\Re}
 \CustomizeMathJax{\renewcommand{\Re}{\operatorname{Re}}}
-\CustomizeMathJax{\newcommand{rot}{\operatorname{\vect{\mathrm{rot}}}}}
-\CustomizeMathJax{\newcommand{\sgn}{\mathrm{sgn}}}
-\CustomizeMathJax{\newcommand{\spa}{\mathrm{span}}}
-\CustomizeMathJax{\newcommand{\tr}{\mathrm{tr}}}
-\CustomizeMathJax{\newcommand{\Var}{\mathrm{Var}}}
-\CustomizeMathJax{\newcommand{\Zu}{\mathrm{Z}}}
+\CustomizeMathJax{\newcommand{\rot}{\operatorname{\vect{\mathrm{rot}}}}}
+\CustomizeMathJax{\DeclareMathOperator{\sgn}{sgn}}
+\CustomizeMathJax{\DeclareMathOperator{\spa}{span}}
+\CustomizeMathJax{\DeclareMathOperator{\tr}{tr}}
+\CustomizeMathJax{\DeclareMathOperator{\Var}{Var}}
+\CustomizeMathJax{\DeclareMathOperator{\Zu}{Z}}
 
-\CustomizeMathJax{\newcommand{\arccot}{\mathrm{arccot}}}
-\CustomizeMathJax{\newcommand{\sech}{\mathrm{sech}}}
-\CustomizeMathJax{\newcommand{\csch}{\mathrm{csch}}}
-\CustomizeMathJax{\newcommand{\arsinh}{\mathrm{arsinh}}}
-\CustomizeMathJax{\newcommand{\arcosh}{\mathrm{arcosh}}}
-\CustomizeMathJax{\newcommand{\artanh}{\mathrm{artanh}}}
-\CustomizeMathJax{\newcommand{\arcoth}{\mathrm{arcoth}}}
-\CustomizeMathJax{\newcommand{\arsech}{\mathrm{arsech}}}
-\CustomizeMathJax{\newcommand{\arcsch}{\mathrm{arcsch}}}
+\CustomizeMathJax{\DeclareMathOperator{\arccot}{arccot}}
+\CustomizeMathJax{\DeclareMathOperator{\sech}{sech}}
+\CustomizeMathJax{\DeclareMathOperator{\csch}{csch}}
+\CustomizeMathJax{\DeclareMathOperator{\arsinh}{arsinh}}
+\CustomizeMathJax{\DeclareMathOperator{\arcosh}{arcosh}}
+\CustomizeMathJax{\DeclareMathOperator{\artanh}{artanh}}
+\CustomizeMathJax{\DeclareMathOperator{\arcoth}{arcoth}}
+\CustomizeMathJax{\DeclareMathOperator{\arsech}{arsech}}
+\CustomizeMathJax{\DeclareMathOperator{\arcsch}{arcsch}}
 
-\CustomizeMathJax{\newcommand{\bigO}{\mathcal{O}}}
-\CustomizeMathJax{\newcommand{\bigo}{\mathrm{O}}}
-\CustomizeMathJax{\newcommand{\lito}{\mathrm{o}}}
+\CustomizeMathJax{\DeclareMathOperator{\bigO}{\mathcal{O}}}
+\CustomizeMathJax{\DeclareMathOperator{\bigo}{O}}
+\CustomizeMathJax{\DeclareMathOperator{\lito}{o}}
 
 \CustomizeMathJax{\newcommand{\R}{\mathset{R}}}
 \CustomizeMathJax{\newcommand{\C}{\mathset{C}}}
@@ -59476,8 +66656,43 @@
 %
 %
 %
+% \iffalse
+%<*mleftright>
+% \fi
 %
+% \part{lwarp-mleftright.sty}
+%
+% \section{mleftright}
+%
+% \credits{Heiko Oberdiek}
+%
+% \DescribePackage{mleftright}
+% \pkg{mleftright} is used as-is, and is emulated for \brand{MathJax}.
+%
+% \changes{v0.88}{2020/07/22}{\pkg{mleftright}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{mleftright}[2019/12/03]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\mleft}{\left}}
+\CustomizeMathJax{\newcommand{\mright}{\right}}
+\CustomizeMathJax{\newcommand{\mleftright}{}}
+\CustomizeMathJax{\newcommand{\mleftrightrestore}{}}
+\end{warpMathJax}
+%    \end{macrocode}
+%
 % \iffalse
+%</mleftright>
+% \fi
+%
+%
+%
+% \iffalse
 %<*morefloats>
 % \fi
 %
@@ -59520,22 +66735,18 @@
 % \changes{v0.34}{2017/08/02}{\pkg{moreverb}: Added.}
 % \changes{v0.42}{2017/10/27}{\pkg{moreverb}: Simplified formatting of listings.}
 %
-% \codehtml
 %    \begin{macrocode}
-\begin{warpHTML}
-%    \end{macrocode}
-%
-%    \begin{macrocode}
 \LWR at ProvidesPackagePass{moreverb}[2008/06/03]
 %    \end{macrocode}
 %
+%
 %    \begin{macrocode}
 \BeforeBeginEnvironment{verbatimtab}{%
 \LWR at forcenewpage
-\LWR at atbeginverbatim{3}{Verbatim}%
+\LWR at atbeginverbatim{Verbatim}%
 }
 \AfterEndEnvironment{verbatimtab}{%
-\LWR at afterendverbatim{1}%
+\LWR at afterendverbatim%
 }
 
 
@@ -59543,27 +66754,27 @@
 
 \renewcommand{\@verbatimtabinput}[2][]{%
 \LWR at forcenewpage
-\LWR at atbeginverbatim{3}{Verbatim}%
+\LWR at atbeginverbatim{Verbatim}%
 \LWRMV at orig@verbatimtabinput[#1]{#2}%
-\LWR at afterendverbatim{1}%
+\LWR at afterendverbatim%
 }
 
 \BeforeBeginEnvironment{listing}{%
 \LWR at forcenewpage
-\LWR at atbeginverbatim{3}{programlisting}%
+\LWR at atbeginverbatim{programlisting}%
 }
 
 \AfterEndEnvironment{listing}{%
-\LWR at afterendverbatim{1}%
+\LWR at afterendverbatim%
 }
 
 \BeforeBeginEnvironment{listingcont}{%
 \LWR at forcenewpage
-\LWR at atbeginverbatim{3}{programlisting}%
+\LWR at atbeginverbatim{programlisting}%
 }
 
 \AfterEndEnvironment{listingcont}{%
-\LWR at afterendverbatim{1}%
+\LWR at afterendverbatim%
 }
 %    \end{macrocode}
 
@@ -59592,9 +66803,9 @@
 
 \renewcommand{\@listinginput}[3][]{
 \LWR at forcenewpage
-\LWR at atbeginverbatim{3}{programlisting}%
+\LWR at atbeginverbatim{programlisting}%
 \LWRMV@@listinginput[#1]{#2}{#3}%
-\LWR at afterendverbatim{1}%
+\LWR at afterendverbatim%
 }
 
 
@@ -59601,19 +66812,15 @@
 \renewenvironment*{boxedverbatim}
 {
 \LWR at forcenewpage
-\LWR at atbeginverbatim{3}{boxedverbatim}%
+\LWR at atbeginverbatim{boxedverbatim}%
 \verbatim%
 }
 {
 \endverbatim%
-\LWR at afterendverbatim{1}%
+\LWR at afterendverbatim%
 }
 %    \end{macrocode}
 %
-%    \begin{macrocode}
-\end{warpHTML}
-%    \end{macrocode}
-%
 % \iffalse
 %</moreverb>
 % \fi
@@ -59705,8 +66912,44 @@
 %
 %
 %
+% \iffalse
+%<*multibib>
+% \fi
 %
+% \part{lwarp-multibib.sty}
+%
+% \section{multibib}
+%
+% \credits{Thorsten Hansen}
+%
+% \DescribePackage{multibib}
+% \pkg{multibib} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.87}{2020/05/17}{\pkg{multibib}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{multibib}[2008/12/10]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\xpatchcmd{\newcites}
+    {{\@suffix}}
+    {{\@suffix_html}}
+    {}
+    {\LWR at patcherror{multibib}{newcites}}
+%    \end{macrocode}
+%
 % \iffalse
+%</multibib>
+% \fi
+%
+%
+%
+%
+%
+% \iffalse
 %<*multicap>
 % \fi
 %
@@ -59767,9 +67010,6 @@
 %
 % The content is placed inside a \element{div} of class |multicols|.
 
-%    \begin{macrocode}
-\begin{warpHTML}
-%    \end{macrocode}
 
 % \begin{noindenvironment}{multicols} * \marg{numcols} \oarg{heading}
 %    \begin{macrocode}
@@ -59829,9 +67069,6 @@
 }
 %    \end{macrocode}
 
-%    \begin{macrocode}
-\end{warpHTML}
-%    \end{macrocode}
 
 % \iffalse
 %</multicol>
@@ -59941,8 +67178,11 @@
 \CustomizeMathJax{\newcommand{\negdom}{\not\prec}}
 \CustomizeMathJax{\newcommand{\weakdom}{\preccurlyeq}}
 \CustomizeMathJax{\newcommand{\negweakdom}{\not\preccurlyeq}}
-\CustomizeMathJax{\newcommand{\strictdom}{\prec\!\!\!\prec}}
-\CustomizeMathJax{\newcommand{\negstrictdom}{\not\prec\!\!\!\prec}}
+%    \end{macrocode}
+% \changes{v0.891}{2020/09/08}{\pkg{multiobjective}: Improved.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\strictdom}{\mathord{\prec}\!\!\!\mathord{\prec}}}
+\CustomizeMathJax{\newcommand{\negstrictdom}{\mathord{\not\prec}\!\!\!\mathord{\prec}}}
 \CustomizeMathJax{\newcommand{\multepsilondom}{\preccurlyeq_{\epsilon\cdot}}}
 \CustomizeMathJax{\newcommand{\addiepsilondom}{\preccurlyeq_{\epsilon +}}}
 \CustomizeMathJax{\newcommand{\better}{\triangleleft}}
@@ -59992,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.
 %
@@ -60005,7 +67244,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\LWR at ProvidesPackagePass{multirow}[2018/08/03]
+\LWR at ProvidesPackagePass{multirow}[2021/01/29]
 %    \end{macrocode}
 %
 %
@@ -60020,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.}
@@ -60044,26 +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}
-% The vertical alignment, if given:
-% \changes{v0.79}{2020/01/17}{\pkg{multirow}: Fix: Centered vertical alignment.}
-%    \begin{macrocode}
-\ifstrequal{#1}{c}{style="\LWR at print@mbox{vertical-align:middle}" }{}%
-\ifstrequal{#1}{b}{style="\LWR at print@mbox{vertical-align:bottom}" }{}%
-\ifstrequal{#1}{t}{style="\LWR at print@mbox{vertical-align:top}" }{}%
-%    \end{macrocode}
-% The left/right border, if given:
-%    \begin{macrocode}
-\ifdefvoid{\LWR at multirowborder}{}{%
-style="\LWR at print@mbox{border-\LWR at multirowborder:} 2px dotted black ; %
-\LWR at print@mbox{padding-\LWR at multirowborder:} 2px" %
-}%
-%    \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}.}
@@ -60077,11 +67309,32 @@
 \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}
 \LWR at tdstartstyles%
+%    \end{macrocode}
+% The vertical alignment, if given:
+% \changes{v0.79}{2020/01/17}{\pkg{multirow}: Fix: Centered vertical alignment.}
+% \changes{v0.84}{2020/04/16}{Fix: Multirow style.}
+%    \begin{macrocode}
+\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}}{}%
+\ifstrequal{#1}{t}{\LWR at tdaddstyle\LWR at print@mbox{vertical-align:top}}{}%
+%    \end{macrocode}
+% The left/right border, if given:
+% \changes{v0.84}{2020/04/16}{Fix: Multirow style.}
+%    \begin{macrocode}
+\ifdefvoid{\LWR at multirowborder}{}{%
+    \LWR at tdaddstyle%
+    \LWR at print@mbox{border-\LWR at multirowborder:} 2px dotted black ; %
+    \LWR at print@mbox{padding-\LWR at multirowborder:} 2px%
+}%
+%    \end{macrocode}
+%
+% Additional style elements:
+%    \begin{macrocode}
 \LWR at addcmidrulewidth%
 \LWR at addcdashline%
 \LWR at addtabularrulecolors%
@@ -60093,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}{}%
@@ -60752,14 +68018,26 @@
 \newcommand*{\LWR at nccmath@eqs}[2][]{\begin{eqnarray}#2\end{eqnarray}}
 
 \begin{warpMathJax}
-\CustomizeMathJax{\renewcommand{\intertext}[2][]{\\ \text{#2}\notag \\}}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\CustomizeMathJax{\renewcommand{\intertext}[2][]{\text{#2}\notag \\}}
 \CustomizeMathJax{\newenvironment{fleqn}[1][]{}{}}
 \CustomizeMathJax{\newenvironment{ceqn}{}{}}
 \CustomizeMathJax{\newenvironment{darray}[2][c]{\begin{array}[#1]{#2}}{\end{array}}}
 \CustomizeMathJax{\newcommand{\dmulticolumn}[3]{#3}}
-\CustomizeMathJax{\newcommand{\nr}{\\[.5ex]}}
+%    \end{macrocode}
+%
+% As of v0.86, \brand{MathJax} v3 does not offer \cs{\textbackslash*}, so
+% the unstarred version is used here.
+% \changes{v0.86}{2020/05/10}{\pkg{nccmath}: Fixed \cs{nr}, added starred.}
+% \changes{v0.87}{2020/05/20}{\pkg{nccmath}: Updated starred, improved \cs{underref}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\LWRnrnostar}[1][0.5ex]{\\[#1]}}
+\CustomizeMathJax{\newcommand{\nr}{\ifstar\LWRnrnostar\LWRnrnostar}}
+
 \CustomizeMathJax{\newcommand{\mrel}[1]{\begin{aligned}#1\end{aligned}}}
-\CustomizeMathJax{\newcommand{\underrel}[2]{{#1}_{#2}}}
+\CustomizeMathJax{\newcommand{\underrel}[2]{\underset{#2}{#1}}}
 \CustomizeMathJax{\newcommand{\medmath}[1]{#1}}
 \CustomizeMathJax{\newcommand{\medop}[1]{#1}}
 \CustomizeMathJax{\newcommand{\medint}[1]{#1}}
@@ -60767,6 +68045,16 @@
 \CustomizeMathJax{\newcommand{\mfrac}[2]{\frac{#1}{#2}}}
 \CustomizeMathJax{\newcommand{\mbinom}[2]{\binom{#1}{#2}}}
 \CustomizeMathJax{\newenvironment{mmatrix}{\begin{matrix}}{\end{matrix}}}
+%    \end{macrocode}
+%
+% \changes{v0.86}{2020/05/10}{\pkg{nccmath}: Added \cs{displaybreak}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\displaybreak}[1][]{}}
+%    \end{macrocode}
+%
+% \cs{eq}, \cs{eqs}, \cs{eqalign} are created by \LaTeX, not \brand{MathJax}.
+%
+%    \begin{macrocode}
 \end{warpMathJax}
 %    \end{macrocode}
 %
@@ -60809,8 +68097,221 @@
 %
 %
 %
+% \iffalse
+%<*newpxmath>
+% \fi
 %
+% \part{lwarp-newpxmath.sty}
+%
+% \section{newpxmath}
+%
+% \credits{Michael Sharpe}
+%
+% \DescribePackage{newpxmath}
+% \pkg{newpxmath} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation ignores all package options,
+% \trouble[limitations]{newpxmath=\pkg{newpxmath}}
+% except \optn{slantedGreek} is honored.
+% The dedicated macros for upright and italic Greek do work correctly.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.89}{2020/08/31}{\pkg{newpxmath}: Added.}
+% \changes{v0.891}{2020/09/06}{\pkg{newpxmath}: Honors \optn{uprightGreek}, \optn{slantedGreek}.}
+%
+% \codehtml
+%
+% The \brand{MathJax} code from \pkg{newtxmath} is used:
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{newpxmath}[2020/01/09]
+
+\LWR at infoprocessingmathjax{newpxmath}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-newpxtxmath}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+%   * \marg{2: prefix} \marg{3: postfix} \marg{4: i/u: italic/upright}
+\LWR at mathjax@addgreek at u@up*{}{up}
+\LWR at mathjax@addgreek at u@up*{up}{}
+\LWR at mathjax@addgreek at l@up{up}{}
+\LWR at mathjax@addgreek at l@up{}{up}
+\LWR at mathjax@addgreek at u@it*{}{it}
+\LWR at mathjax@addgreek at l@it{}{it}
+%    \end{macrocode}
+%
+% Optional slanted Greek:
+%    \begin{macrocode}
+\ifpx at slantedG
+    \LWR at mathjax@addgreek at u@it*{}{}
+\fi
+
+\end{warpMathJax}
+%    \end{macrocode}
+%
 % \iffalse
+%</newpxmath>
+% \fi
+%
+%
+%
+% \iffalse
+%<*newtxmath>
+% \fi
+%
+% \part{lwarp-newtxmath.sty}
+%
+% \section{newtxmath}
+%
+% \credits{Michael Sharpe}
+%
+% \DescribePackage{newtxmath}
+% \pkg{newtxmath} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation ignores all package options,
+% \trouble[limitations]{newtxmath=\pkg{newtxmath}}
+% except \optn{slantedGreek} is honored, and
+% except that bold italic Latin letters are not defined for \brand{MathJax} if
+% the option is not selected.
+%
+% The dedicated macros for upright and italic Greek and bold italic Latin letters
+% do work correctly.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.89}{2020/08/31}{\pkg{newtxmath}: Added.}
+% \changes{v0.891}{2020/09/06}{\pkg{newtxmath}: Honors \optn{uprightGreek}, \optn{slantedGreek}.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{newtxmath}[2020/08/04]
+
+\LWR at infoprocessingmathjax{newtxmath}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-newpxtxmath}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+%   * \marg{2: prefix} \marg{3: postfix} \marg{4: i/u: italic/upright}
+\LWR at mathjax@addgreek at u@up*{}{up}
+\LWR at mathjax@addgreek at u@up*{up}{}
+\LWR at mathjax@addgreek at l@up{up}{}
+\LWR at mathjax@addgreek at l@up{}{up}
+\LWR at mathjax@addgreek at u@it*{}{it}
+\LWR at mathjax@addgreek at l@it{}{it}
+
+% only newtxmath, not newpxmath:
+\LWR at mathjax@addgreek at u@it*{it}{}
+\LWR at mathjax@addgreek at l@it{it}{}
+
+% only newtxmath, not newpxmath:
+\ifdef{\iftx at BI}{
+    \iftx at BI
+        \LWR at mathjax@addlatin at u@bfit{BI}
+        \LWR at mathjax@addlatin at l@bfit{BI}
+    \fi
+}{}
+%    \end{macrocode}
+%
+% Optional slanted Greek:
+%    \begin{macrocode}
+\iftx at slantedG
+    \LWR at mathjax@addgreek at u@it*{}{}
+\fi
+
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</newtxmath>
+% \fi
+%
+%
+%
+%
+% \iffalse
+%<*newtxsf>
+% \fi
+%
+% \part{lwarp-newtxsf.sty}
+%
+% \section{newtxsf}
+%
+% \credits{Michael Sharpe}
+%
+% \DescribePackage{newtxsf}
+% \pkg{newtxsf} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation ignores all package options,
+% \trouble[limitations]{newtxsf=\pkg{newtxsf}}
+% except \optn{slantedGreek} is honored.
+% The dedicated macros for upright and italic Greek and bold italic Latin letters
+% do work correctly.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.89}{2020/08/31}{\pkg{newtxsf}: Added.}
+% \changes{v0.891}{2020/09/06}{\pkg{newpxmath}: Honors \optn{uprightGreek}, \optn{slantedGreek}.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{newtxsf}[2020/05/02]
+
+\LWR at infoprocessingmathjax{newtxsf}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-newpxtxmath}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+%   * \marg{2: prefix} \marg{3: postfix} \marg{4: i/u: italic/upright}
+\LWR at mathjax@addgreek at u@up*{}{up}
+\LWR at mathjax@addgreek at u@up*{up}{}
+\LWR at mathjax@addgreek at l@up{up}{}
+\LWR at mathjax@addgreek at l@up{}{up}
+\LWR at mathjax@addgreek at u@it*{}{it}
+\LWR at mathjax@addgreek at l@it{}{it}
+
+% only newtxmath, not newpxmath:
+\LWR at mathjax@addgreek at u@it*{it}{}
+\LWR at mathjax@addgreek at l@it{it}{}
+%
+% only newtxmath, not newpxmath:
+\ifdef{\iftx at BI}{
+    \iftx at BI
+        \LWR at mathjax@addlatin at u@bfit{BI}
+        \LWR at mathjax@addlatin at l@bfit{BI}
+    \fi
+}{}
+%    \end{macrocode}
+%
+% Optional slanted Greek:
+%    \begin{macrocode}
+\iftx at slantedG
+    \LWR at mathjax@addgreek at u@it*{}{}
+\fi
+
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</newtxsf>
+% \fi
+%
+%
+%
+% \iffalse
 %<*nextpage>
 % \fi
 
@@ -60871,9 +68372,10 @@
 %
 %
 % Macros which are present in the \pkg{lwarp} core are commented out here.
+% \changes{v0.84}{2020/04/13}{\pkg{nfssext-cfr}: Improved.}
 %    \begin{macrocode}
 \newrobustcmd{\LWR at HTML@lnstyle}{}
-\newrobustcmd{\LWR at HTML@osstyle}{}
+\newrobustcmd{\LWR at HTML@osstyle}{\LWR at HTML@scshape}
 \newrobustcmd{\LWR at HTML@instyle}{}
 \newrobustcmd{\LWR at HTML@sustyle}{}
 \newrobustcmd{\LWR at HTML@swstyle}{}
@@ -60890,7 +68392,7 @@
 \newrobustcmd{\LWR at HTML@qtstyle}{}
 \newrobustcmd{\LWR at HTML@shstyle}{}
 \newrobustcmd{\LWR at HTML@swashstyle}{}
-\newrobustcmd{\LWR at HTML@tmstyle}{}
+\newrobustcmd{\LWR at HTML@tmstyle}{\renewcommand*{\LWR at f@family}{tt}}
 \newrobustcmd{\LWR at HTML@tvstyle}{\renewcommand*{\LWR at f@family}{tt}}
 \newrobustcmd{\LWR at HTML@tstyle}{}
 \newrobustcmd{\LWR at HTML@lstyle}{}
@@ -60914,13 +68416,13 @@
 \newrobustcmd{\LWR at HTML@exwidth}{}
 \newrobustcmd{\LWR at HTML@uxwidth}{}
 \newrobustcmd{\LWR at HTML@mbweight}{\renewcommand*{\LWR at f@series}{md}}
-\newrobustcmd{\LWR at HTML@dbweight}{\renewcommand*{\LWR at f@series}{bf}}
-\newrobustcmd{\LWR at HTML@sbweight}{\renewcommand*{\LWR at f@series}{bf}}
+\newrobustcmd{\LWR at HTML@dbweight}{\renewcommand*{\LWR at f@series}{db}}
+\newrobustcmd{\LWR at HTML@sbweight}{\renewcommand*{\LWR at f@series}{sb}}
 % \newrobustcmd{\LWR at HTML@ebweight}{\renewcommand*{\LWR at f@series}{eb}}
-\newrobustcmd{\LWR at HTML@ubweight}{\renewcommand*{\LWR at f@series}{eb}}
+\newrobustcmd{\LWR at HTML@ubweight}{\renewcommand*{\LWR at f@series}{ub}}
 % \newrobustcmd{\LWR at HTML@lgweight}{\renewcommand*{\LWR at f@series}{lg}}
-\newrobustcmd{\LWR at HTML@elweight}{\renewcommand*{\LWR at f@series}{lg}}
-\newrobustcmd{\LWR at HTML@ulweight}{\renewcommand*{\LWR at f@series}{lg}}
+\newrobustcmd{\LWR at HTML@elweight}{\renewcommand*{\LWR at f@series}{el}}
+\newrobustcmd{\LWR at HTML@ulweight}{\renewcommand*{\LWR at f@series}{ul}}
 % \newrobustcmd{\LWR at HTML@itshape}{}
 % \newrobustcmd{\LWR at HTML@scshape}{}
 % \newrobustcmd{\LWR at HTML@upshape}{}
@@ -60981,9 +68483,9 @@
 % \LWR at formatted{lgweight}
 \LWR at formatted{elweight}
 \LWR at formatted{ulweight}
-% \LWR at formatted{itshape}
-% \LWR at formatted{scshape}
-% \LWR at formatted{upshape}
+\LWR at formatted{itshape}% adapt to the new print version
+\LWR at formatted{scshape}% adapt to the new print version
+\LWR at formatted{upshape}% adapt to the new print version
 \LWR at formatted{dfshape}
 
 \ifdef{\LWR at HTML@swshape}{}{% duplicated by fontaxes
@@ -60991,135 +68493,81 @@
 }
 
 \LWR at formatted{ornament}
-
-
-\newcommand{\LWR at null@lnstyle}{}
-\newcommand{\LWR at null@osstyle}{}
-\newcommand{\LWR at null@instyle}{}
-\newcommand{\LWR at null@sustyle}{}
-\newcommand{\LWR at null@swstyle}{}
-\newcommand{\LWR at null@pstyle}{}
-\newcommand{\LWR at null@tistyle}{}
-\newcommand{\LWR at null@ostyle}{}
-\newcommand{\LWR at null@postyle}{}
-\newcommand{\LWR at null@ltstyle}{}
-\newcommand{\LWR at null@ofstyle}{}
-\newcommand{\LWR at null@altstyle}{}
-\newcommand{\LWR at null@regstyle}{}
-\newcommand{\LWR at null@embossstyle}{}
-\newcommand{\LWR at null@ornamentalstyle}{}
-\newcommand{\LWR at null@qtstyle}{}
-\newcommand{\LWR at null@shstyle}{}
-\newcommand{\LWR at null@swashstyle}{}
-\newcommand{\LWR at null@tmstyle}{}
-\newcommand{\LWR at null@tvstyle}{}
-\newcommand{\LWR at null@tstyle}{}
-\newcommand{\LWR at null@lstyle}{}
-\newcommand{\LWR at null@tlstyle}{}
-\newcommand{\LWR at null@plstyle}{}
-\newcommand{\LWR at null@tostyle}{}
-% \newcommand{\LWR at null@sishape}{}
-\newcommand{\LWR at null@olshape}{}
-\newcommand{\LWR at null@scolshape}{}
-\newcommand{\LWR at null@ushape}{}
-\newcommand{\LWR at null@scushape}{}
-\newcommand{\LWR at null@uishape}{}
-\newcommand{\LWR at null@rishape}{}
-\newcommand{\LWR at null@regwidth}{}
-\newcommand{\LWR at null@nwwidth}{}
-\newcommand{\LWR at null@cdwidth}{}
-\newcommand{\LWR at null@ecwidth}{}
-\newcommand{\LWR at null@ucwidth}{}
-\newcommand{\LWR at null@etwidth}{}
-\newcommand{\LWR at null@epwidth}{}
-\newcommand{\LWR at null@exwidth}{}
-\newcommand{\LWR at null@uxwidth}{}
-\newcommand{\LWR at null@mbweight}{}
-\newcommand{\LWR at null@dbweight}{}
-\newcommand{\LWR at null@sbweight}{}
-% \newcommand{\LWR at null@ebweight}{}
-\newcommand{\LWR at null@ubweight}{}
-% \newcommand{\LWR at null@lgweight}{}
-\newcommand{\LWR at null@elweight}{}
-\newcommand{\LWR at null@ulweight}{}
-% \newcommand{\LWR at null@itshape}{}
-% \newcommand{\LWR at null@scshape}{}
-% \newcommand{\LWR at null@upshape}{}
-\newcommand{\LWR at null@dfshape}{}
-
-\ifdef{\LWR at HTML@swshape}{}{% duplicated by fontaxes
-    \newcommand{\LWR at null@swshape}{}
+%    \end{macrocode}
+%
+% \changes{v0.84}{2020/04/11}{\pkg{nfssext-cfr}: \cs{FilenameNullify}.}
+%    \begin{macrocode}
+\FilenameNullify{%
+    \LetLtxMacro\lnstyle\@empty%
+    \LetLtxMacro\osstyle\@empty%
+    \LetLtxMacro\instyle\@empty%
+    \LetLtxMacro\sustyle\@empty%
+    \LetLtxMacro\swstyle\@empty%
+    \LetLtxMacro\pstyle\@empty%
+    \LetLtxMacro\tistyle\@empty%
+    \LetLtxMacro\ostyle\@empty%
+    \LetLtxMacro\postyle\@empty%
+    \LetLtxMacro\ltstyle\@empty%
+    \LetLtxMacro\ofstyle\@empty%
+    \LetLtxMacro\altstyle\@empty%
+    \LetLtxMacro\regstyle\@empty%
+    \LetLtxMacro\embossstyle\@empty%
+    \LetLtxMacro\ornamentalstyle\@empty%
+    \LetLtxMacro\qtstyle\@empty%
+    \LetLtxMacro\shstyle\@empty%
+    \LetLtxMacro\swashstyle\@empty%
+    \LetLtxMacro\tmstyle\@empty%
+    \LetLtxMacro\tvstyle\@empty%
+    \LetLtxMacro\tstyle\@empty%
+    \LetLtxMacro\lstyle\@empty%
+    \LetLtxMacro\tlstyle\@empty%
+    \LetLtxMacro\plstyle\@empty%
+    \LetLtxMacro\tostyle\@empty%
+%   \LetLtxMacro\sishape\@empty%
+    \LetLtxMacro\olshape\@empty%
+    \LetLtxMacro\scolshape\@empty%
+    \LetLtxMacro\ushape\@empty%
+    \LetLtxMacro\scushape\@empty%
+    \LetLtxMacro\uishape\@empty%
+    \LetLtxMacro\rishape\@empty%
+    \LetLtxMacro\regwidth\@empty%
+    \LetLtxMacro\nwwidth\@empty%
+    \LetLtxMacro\cdwidth\@empty%
+    \LetLtxMacro\ecwidth\@empty%
+    \LetLtxMacro\ucwidth\@empty%
+    \LetLtxMacro\etwidth\@empty%
+    \LetLtxMacro\epwidth\@empty%
+    \LetLtxMacro\exwidth\@empty%
+    \LetLtxMacro\uxwidth\@empty%
+    \LetLtxMacro\mbweight\@empty%
+    \LetLtxMacro\dbweight\@empty%
+    \LetLtxMacro\sbweight\@empty%
+%   \LetLtxMacro\ebweight\@empty%
+    \LetLtxMacro\ubweight\@empty%
+%   \LetLtxMacro\lgweight\@empty%
+    \LetLtxMacro\elweight\@empty%
+    \LetLtxMacro\ulweight\@empty%
+%   \LetLtxMacro\itshape\@empty%
+%   \LetLtxMacro\scshape\@empty%
+%   \LetLtxMacro\upshape\@empty%
+    \LetLtxMacro\dfshape\@empty%
+    \LetLtxMacro\swshape\@empty%
+    \LetLtxMacro\ornament\@gobble%
 }
 
-\newcommand{\LWR at null@ornament}[1]{}
-
-\appto{\LWR at nullfonts}{%
-\LetLtxMacro\lnstyle\LWR at null@lnstyle%
-\LetLtxMacro\osstyle\LWR at null@osstyle%
-\LetLtxMacro\instyle\LWR at null@instyle%
-\LetLtxMacro\sustyle\LWR at null@sustyle%
-\LetLtxMacro\swstyle\LWR at null@swstyle%
-\LetLtxMacro\pstyle\LWR at null@pstyle%
-\LetLtxMacro\tistyle\LWR at null@tistyle%
-\LetLtxMacro\ostyle\LWR at null@ostyle%
-\LetLtxMacro\postyle\LWR at null@postyle%
-\LetLtxMacro\ltstyle\LWR at null@ltstyle%
-\LetLtxMacro\ofstyle\LWR at null@ofstyle%
-\LetLtxMacro\altstyle\LWR at null@altstyle%
-\LetLtxMacro\regstyle\LWR at null@regstyle%
-\LetLtxMacro\embossstyle\LWR at null@embossstyle%
-\LetLtxMacro\ornamentalstyle\LWR at null@ornamentalstyle%
-\LetLtxMacro\qtstyle\LWR at null@qtstyle%
-\LetLtxMacro\shstyle\LWR at null@shstyle%
-\LetLtxMacro\swashstyle\LWR at null@swashstyle%
-\LetLtxMacro\tmstyle\LWR at null@tmstyle%
-\LetLtxMacro\tvstyle\LWR at null@tvstyle%
-\LetLtxMacro\tstyle\LWR at null@tstyle%
-\LetLtxMacro\lstyle\LWR at null@lstyle%
-\LetLtxMacro\tlstyle\LWR at null@tlstyle%
-\LetLtxMacro\plstyle\LWR at null@plstyle%
-\LetLtxMacro\tostyle\LWR at null@tostyle%
-% \LetLtxMacro\sishape\LWR at null@sishape
-\LetLtxMacro\olshape\LWR at null@olshape%
-\LetLtxMacro\scolshape\LWR at null@scolshape%
-\LetLtxMacro\ushape\LWR at null@ushape%
-\LetLtxMacro\scushape\LWR at null@scushape%
-\LetLtxMacro\uishape\LWR at null@uishape%
-\LetLtxMacro\rishape\LWR at null@rishape%
-\LetLtxMacro\regwidth\LWR at null@regwidth%
-\LetLtxMacro\nwwidth\LWR at null@nwwidth%
-\LetLtxMacro\cdwidth\LWR at null@cdwidth%
-\LetLtxMacro\ecwidth\LWR at null@ecwidth%
-\LetLtxMacro\ucwidth\LWR at null@ucwidth%
-\LetLtxMacro\etwidth\LWR at null@etwidth%
-\LetLtxMacro\epwidth\LWR at null@epwidth%
-\LetLtxMacro\exwidth\LWR at null@exwidth%
-\LetLtxMacro\uxwidth\LWR at null@uxwidth%
-\LetLtxMacro\mbweight\LWR at null@mbweight%
-\LetLtxMacro\dbweight\LWR at null@dbweight%
-\LetLtxMacro\sbweight\LWR at null@sbweight%
-% \LetLtxMacro\ebweight\LWR at null@ebweight%
-\LetLtxMacro\ubweight\LWR at null@ubweight%
-% \LetLtxMacro\lgweight\LWR at null@lgweight%
-\LetLtxMacro\elweight\LWR at null@elweight%
-\LetLtxMacro\ulweight\LWR at null@ulweight%
-% \LetLtxMacro\itshape\LWR at null@itshape%
-% \LetLtxMacro\scshape\LWR at null@scshape%
-% \LetLtxMacro\upshape\LWR at null@upshape%
-\LetLtxMacro\dfshape\LWR at null@dfshape%
-\LetLtxMacro\swshape\LWR at null@swshape%
-\LetLtxMacro\ornament\LWR at null@ornament%
-}
-
-\newrobustcmd{\LWR at HTML@textln}[1]{#1}
+\newrobustcmd{\LWR at HTML@textln}[1]{\InlineClass{textln}{#1}}
 \newrobustcmd{\LWR at HTML@textos}[1]{\textsc{#1}}
 \newrobustcmd{\LWR at HTML@textin}[1]{#1}
 \newrobustcmd{\LWR at HTML@textsu}[1]{#1}
 % \newrobustcmd{\LWR at HTML@textsi}[1]{#1}
 \newrobustcmd{\LWR at HTML@textdf}[1]{#1}
-
-\ifdef{\LWR at HTML@swshape}{}{% duplicated by fontaxes
+%    \end{macrocode}
+%
+% \changes{v0.883}{2020/11/16}{\pkg{nfssext-cfr}: Fixed \cs{textsw}.}
+%    \begin{macrocode}
+\ifdef{\LWR at HTML@textsw}{}{% duplicated by fontaxes
     \newrobustcmd{\LWR at HTML@textsw}[1]{#1}
+    \LWR at formatted{textsw}
 }
 
 \newrobustcmd{\LWR at HTML@textti}[1]{#1}
@@ -61131,15 +68579,15 @@
 \newrobustcmd{\LWR at HTML@textorn}[1]{#1}
 \newrobustcmd{\LWR at HTML@textqt}[1]{#1}
 \newrobustcmd{\LWR at HTML@textsh}[1]{#1}
-\newrobustcmd{\LWR at HTML@texttm}[1]{#1}
+\newrobustcmd{\LWR at HTML@texttm}[1]{\texttt{#1}}
 \newrobustcmd{\LWR at HTML@texttv}[1]{\texttt{#1}}
-\newrobustcmd{\LWR at HTML@textl}[1]{#1}
-\newrobustcmd{\LWR at HTML@texto}[1]{#1}
-\newrobustcmd{\LWR at HTML@textp}[1]{#1}
-\newrobustcmd{\LWR at HTML@textt}[1]{#1}
+\newrobustcmd{\LWR at HTML@textl}[1]{\InlineClass{textln}{#1}}
+\newrobustcmd{\LWR at HTML@texto}[1]{\textsc{#1}}
+\newrobustcmd{\LWR at HTML@textp}[1]{\InlineClass{textp}{#1}}
+\newrobustcmd{\LWR at HTML@textt}[1]{\InlineClass{textt}{#1}}
 \newrobustcmd{\LWR at HTML@textpl}[1]{#1}
 \newrobustcmd{\LWR at HTML@textpo}[1]{\textsc{#1}}
-\newrobustcmd{\LWR at HTML@texttl}[1]{#1}
+\newrobustcmd{\LWR at HTML@texttl}[1]{\InlineClass{textln}{#1}}
 \newrobustcmd{\LWR at HTML@textto}[1]{\textsc{#1}}
 \newrobustcmd{\LWR at HTML@textol}[1]{#1}
 \newrobustcmd{\LWR at HTML@textswash}[1]{#1}
@@ -61156,14 +68604,14 @@
 \newrobustcmd{\LWR at HTML@textex}[1]{#1}
 \newrobustcmd{\LWR at HTML@textux}[1]{#1}
 \newrobustcmd{\LWR at HTML@textrw}[1]{#1}
-\newrobustcmd{\LWR at HTML@textmb}[1]{\textmd{#1}}
-\newrobustcmd{\LWR at HTML@textdb}[1]{\textbf{#1}}
-\newrobustcmd{\LWR at HTML@textsb}[1]{\textbf{#1}}
-% \newrobustcmd{\LWR at HTML@texteb}[1]{#1}
-\newrobustcmd{\LWR at HTML@textub}[1]{\texteb{#1}}
-% \newrobustcmd{\LWR at HTML@textlg}[1]{#1}
-\newrobustcmd{\LWR at HTML@textel}[1]{\textlg{#1}}
-\newrobustcmd{\LWR at HTML@textul}[1]{\textlg{#1}}
+\newrobustcmd{\LWR at HTML@textmb}[1]{{\LWR at HTML@mbweight\InlineClass{textmb}{#1}}}
+\newrobustcmd{\LWR at HTML@textdb}[1]{{\LWR at HTML@dbweight\InlineClass{textdb}{#1}}}
+\newrobustcmd{\LWR at HTML@textsb}[1]{{\LWR at HTML@sbweight\InlineClass{textsb}{#1}}}
+% \newrobustcmd{\LWR at HTML@texteb}[1]}{#1}
+\newrobustcmd{\LWR at HTML@textub}[1]{{\LWR at HTML@ubweight\InlineClass{textub}{#1}}}
+% \newrobustcmd{\LWR at HTML@textlg}[1]}{#1}
+\newrobustcmd{\LWR at HTML@textel}[1]{{\LWR at HTML@elweight\InlineClass{textel}{#1}}}
+\newrobustcmd{\LWR at HTML@textul}[1]{{\LWR at HTML@ulweight\InlineClass{textul}{#1}}}
 
 \LWR at formatted{textln}
 \LWR at formatted{textos}
@@ -61171,7 +68619,6 @@
 \LWR at formatted{textsu}
 % \LWR at formatted{textsi}
 \LWR at formatted{textdf}
-\LWR at formatted{textsw}
 \LWR at formatted{textti}
 \LWR at formatted{textlt}
 \LWR at formatted{textof}
@@ -61215,112 +68662,62 @@
 \LWR at formatted{textel}
 \LWR at formatted{textul}
 
-\newrobustcmd{\LWR at null@textln}[1]{#1}
-\newrobustcmd{\LWR at null@textos}[1]{#1}
-\newrobustcmd{\LWR at null@textin}[1]{#1}
-\newrobustcmd{\LWR at null@textsu}[1]{#1}
-% \newrobustcmd{\LWR at null@textsi}[1]{#1}
-\newrobustcmd{\LWR at null@textdf}[1]{#1}
-
-\ifdef{\LWR at HTML@swshape}{}{% duplicated by fontaxes
-    \newrobustcmd{\LWR at null@textsw}[1]{#1}
+%    \end{macrocode}
+%
+% \changes{v0.84}{2020/04/11}{\pkg{nfssext-cfr}: \cs{FilenameNullify}.}
+%    \begin{macrocode}
+\FilenameNullify{%
+    \LetLtxMacro\textln\@firstofone%
+    \LetLtxMacro\textos\@firstofone%
+    \LetLtxMacro\textin\@firstofone%
+    \LetLtxMacro\textsu\@firstofone%
+%   \LetLtxMacro\textsi\@firstofone%
+    \LetLtxMacro\textdf\@firstofone%
+    \LetLtxMacro\textsw\@firstofone%
+    \LetLtxMacro\textti\@firstofone%
+    \LetLtxMacro\textlt\@firstofone%
+    \LetLtxMacro\textof\@firstofone%
+    \LetLtxMacro\textalt\@firstofone%
+    \LetLtxMacro\textreg\@firstofone%
+    \LetLtxMacro\emboss\@firstofone%
+    \LetLtxMacro\textorn\@firstofone%
+    \LetLtxMacro\textqt\@firstofone%
+    \LetLtxMacro\textsh\@firstofone%
+    \LetLtxMacro\texttm\@firstofone%
+    \LetLtxMacro\texttv\@firstofone%
+    \LetLtxMacro\textl\@firstofone%
+    \LetLtxMacro\texto\@firstofone%
+    \LetLtxMacro\textp\@firstofone%
+    \LetLtxMacro\textt\@firstofone%
+    \LetLtxMacro\textpl\@firstofone%
+    \LetLtxMacro\textpo\@firstofone%
+    \LetLtxMacro\texttl\@firstofone%
+    \LetLtxMacro\textto\@firstofone%
+    \LetLtxMacro\textol\@firstofone%
+    \LetLtxMacro\textswash\@firstofone%
+    \LetLtxMacro\textu\@firstofone%
+    \LetLtxMacro\textscu\@firstofone%
+    \LetLtxMacro\textui\@firstofone%
+    \LetLtxMacro\textri\@firstofone%
+    \LetLtxMacro\textnw\@firstofone%
+    \LetLtxMacro\textcd\@firstofone%
+    \LetLtxMacro\textec\@firstofone%
+    \LetLtxMacro\textuc\@firstofone%
+    \LetLtxMacro\textet\@firstofone%
+    \LetLtxMacro\textep\@firstofone%
+    \LetLtxMacro\textex\@firstofone%
+    \LetLtxMacro\textux\@firstofone%
+    \LetLtxMacro\textrw\@firstofone%
+    \LetLtxMacro\textmb\@firstofone%
+    \LetLtxMacro\textdb\@firstofone%
+    \LetLtxMacro\textsb\@firstofone%
+%   \LetLtxMacro\texteb\@firstofone%
+    \LetLtxMacro\textub\@firstofone%
+%   \LetLtxMacro\textlg\@firstofone%
+    \LetLtxMacro\textel\@firstofone%
+    \LetLtxMacro\textul\@firstofone%
 }
 
-\newrobustcmd{\LWR at null@textti}[1]{#1}
-\newrobustcmd{\LWR at null@textlt}[1]{#1}
-\newrobustcmd{\LWR at null@textof}[1]{#1}
-\newrobustcmd{\LWR at null@textalt}[1]{#1}
-\newrobustcmd{\LWR at null@textreg}[1]{#1}
-\newrobustcmd{\LWR at null@emboss}[1]{#1}
-\newrobustcmd{\LWR at null@textorn}[1]{#1}
-\newrobustcmd{\LWR at null@textqt}[1]{#1}
-\newrobustcmd{\LWR at null@textsh}[1]{#1}
-\newrobustcmd{\LWR at null@texttm}[1]{#1}
-\newrobustcmd{\LWR at null@texttv}[1]{#1}
-\newrobustcmd{\LWR at null@textl}[1]{#1}
-\newrobustcmd{\LWR at null@texto}[1]{#1}
-\newrobustcmd{\LWR at null@textp}[1]{#1}
-\newrobustcmd{\LWR at null@textt}[1]{#1}
-\newrobustcmd{\LWR at null@textpl}[1]{#1}
-\newrobustcmd{\LWR at null@textpo}[1]{#1}
-\newrobustcmd{\LWR at null@texttl}[1]{#1}
-\newrobustcmd{\LWR at null@textto}[1]{#1}
-\newrobustcmd{\LWR at null@textol}[1]{#1}
-\newrobustcmd{\LWR at null@textswash}[1]{#1}
-\newrobustcmd{\LWR at null@textu}[1]{#1}
-\newrobustcmd{\LWR at null@textscu}[1]{#1}
-\newrobustcmd{\LWR at null@textui}[1]{#1}
-\newrobustcmd{\LWR at null@textri}[1]{#1}
-\newrobustcmd{\LWR at null@textnw}[1]{#1}
-\newrobustcmd{\LWR at null@textcd}[1]{#1}
-\newrobustcmd{\LWR at null@textec}[1]{#1}
-\newrobustcmd{\LWR at null@textuc}[1]{#1}
-\newrobustcmd{\LWR at null@textet}[1]{#1}
-\newrobustcmd{\LWR at null@textep}[1]{#1}
-\newrobustcmd{\LWR at null@textex}[1]{#1}
-\newrobustcmd{\LWR at null@textux}[1]{#1}
-\newrobustcmd{\LWR at null@textrw}[1]{#1}
-\newrobustcmd{\LWR at null@textmb}[1]{#1}
-\newrobustcmd{\LWR at null@textdb}[1]{#1}
-\newrobustcmd{\LWR at null@textsb}[1]{#1}
-% \newrobustcmd{\LWR at null@texteb}[1]{#1}
-\newrobustcmd{\LWR at null@textub}[1]{#1}
-% \newrobustcmd{\LWR at null@textlg}[1]{#1}
-\newrobustcmd{\LWR at null@textel}[1]{#1}
-\newrobustcmd{\LWR at null@textul}[1]{#1}
-
-\appto{\LWR at nullfonts}{%
-\LetLtxMacro\textln\LWR at null@textln%
-\LetLtxMacro\textos\LWR at null@textos%
-\LetLtxMacro\textin\LWR at null@textin%
-\LetLtxMacro\textsu\LWR at null@textsu%
-% \LetLtxMacro\textsi\LWR at null@textsi%
-\LetLtxMacro\textdf\LWR at null@textdf%
-\LetLtxMacro\textsw\LWR at null@textsw%
-\LetLtxMacro\textti\LWR at null@textti%
-\LetLtxMacro\textlt\LWR at null@textlt%
-\LetLtxMacro\textof\LWR at null@textof%
-\LetLtxMacro\textalt\LWR at null@textalt%
-\LetLtxMacro\textreg\LWR at null@textreg%
-\LetLtxMacro\emboss\LWR at null@emboss%
-\LetLtxMacro\textorn\LWR at null@textorn%
-\LetLtxMacro\textqt\LWR at null@textqt%
-\LetLtxMacro\textsh\LWR at null@textsh%
-\LetLtxMacro\texttm\LWR at null@texttm%
-\LetLtxMacro\texttv\LWR at null@texttv%
-\LetLtxMacro\textl\LWR at null@textl%
-\LetLtxMacro\texto\LWR at null@texto%
-\LetLtxMacro\textp\LWR at null@textp%
-\LetLtxMacro\textt\LWR at null@textt%
-\LetLtxMacro\textpl\LWR at null@textpl%
-\LetLtxMacro\textpo\LWR at null@textpo%
-\LetLtxMacro\texttl\LWR at null@texttl%
-\LetLtxMacro\textto\LWR at null@textto%
-\LetLtxMacro\textol\LWR at null@textol%
-\LetLtxMacro\textswash\LWR at null@textswash%
-\LetLtxMacro\textu\LWR at null@textu%
-\LetLtxMacro\textscu\LWR at null@textscu%
-\LetLtxMacro\textui\LWR at null@textui%
-\LetLtxMacro\textri\LWR at null@textri%
-\LetLtxMacro\textnw\LWR at null@textnw%
-\LetLtxMacro\textcd\LWR at null@textcd%
-\LetLtxMacro\textec\LWR at null@textec%
-\LetLtxMacro\textuc\LWR at null@textuc%
-\LetLtxMacro\textet\LWR at null@textet%
-\LetLtxMacro\textep\LWR at null@textep%
-\LetLtxMacro\textex\LWR at null@textex%
-\LetLtxMacro\textux\LWR at null@textux%
-\LetLtxMacro\textrw\LWR at null@textrw%
-\LetLtxMacro\textmb\LWR at null@textmb%
-\LetLtxMacro\textdb\LWR at null@textdb%
-\LetLtxMacro\textsb\LWR at null@textsb%
-% \LetLtxMacro\texteb\LWR at null@texteb%
-\LetLtxMacro\textub\LWR at null@textub%
-% \LetLtxMacro\textlg\LWR at null@textlg%
-\LetLtxMacro\textel\LWR at null@textel%
-\LetLtxMacro\textul\LWR at null@textul%
-}
-
 \providecommand*{\zeroslash}{0}
 \newrobustcmd*{\LWR at HTML@zeroslash}{0}
 \LWR at formatted{zeroslash}
@@ -61380,10 +68777,11 @@
 \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}
-\CustomizeMathJax{\newcommand{\nicefrac}[3][]{#2/#3}}
+\CustomizeMathJax{\newcommand{\nicefrac}[3][]{\mathinner{{}^{#2}\!/\!_{#3}}}}
 \end{warpMathJax}
 %    \end{macrocode}
 %
@@ -61443,8 +68841,179 @@
 %
 %
 %
+% \iffalse
+%<*nicematrix>
+% \fi
 %
+% \part{lwarp-nicematrix.sty}
+%
+% \section{nicematrix}
+%
+% \credits{F. Pantigny}
+%
+% \DescribePackage{nicematrix}
+% \pkg{nicematrix} is used as-is for \SVG\ math, and
+% is emulated for \brand{MathJax}.
+%
+% Keys/values are ignored in \brand{MathJax}.
+% \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
+% math expressions, for inline math use
+% \cs{inlinemathother} and \cs{inlinemathnormal}, or
+% for display math use \cs{displaymathother} and \cs{displaymathnormal}.
+% 
+% \changes{v0.894}{2020/12/21}{\pkg{nicematrix}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{nicematrix}[2020/11/23]
+%    \end{macrocode}
+%
+% \env{NiceTabular} must be converted to \SVG\ to support the
+% various \pkg{nicematrix} options:
+%    \begin{macrocode}
+\begin{warpHTML}
+\BeforeBeginEnvironment{NiceTabular}{%
+    \begin{lateximage}[-nicematrix-~\PackageDiagramAltText]%
+}
+\AfterEndEnvironment{NiceTabular}{\end{lateximage}}
+\BeforeBeginEnvironment{NiceTabular*}{%
+    \begin{lateximage}[-nicematrix-~\PackageDiagramAltText]%
+}
+\AfterEndEnvironment{NiceTabular*}{\end{lateximage}}
+\end{warpHTML}
+%    \end{macrocode}
+%
+% Special handling for the optional arguments, and the lack of a delimiter:
+%    \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\LWRnicearrayarray}[1]{\begin{array}{#1}}}
+\CustomizeMathJax{\def\LWRnicearrayarrayopt#1[#2] {\begin{array}{#1}}}
+
+\CustomizeMathJax{%
+    \newenvironment{NiceArray}[2][]%
+        {\ifnextchar[{\LWRnicearrayarrayopt{#2}}{\LWRnicearrayarray{#2}}}%
+        {\end{array}}%
+}
+
+\CustomizeMathJax{%
+    \newcommand{\LWRnicearraywithdelimtwo}[2][]{%
+        \ifnextchar[{\LWRnicearrayarrayopt{#2}}{\LWRnicearrayarray{#2}}%
+    }%
+}
+%    \end{macrocode}
+%
+% General case with left \Slash right delimiters:
+%    \begin{macrocode}
+\CustomizeMathJax{%
+    \newenvironment{NiceArrayWithDelims}[2]%
+        {%
+            \def\LWRnicearrayrightdelim{\right#2}%
+            \left#1%
+            \LWRnicearraywithdelimtwo%
+        }%
+        {\end{array}\LWRnicearrayrightdelim}%
+}
+%    \end{macrocode}
+%
+% Instances of specific delimiters:
+%    \begin{macrocode}
+\CustomizeMathJax{%
+    \newenvironment{pNiceArray}
+        {\begin{NiceArrayWithDelims}{(}{)}}
+        {\end{NiceArrayWithDelims}}
+}
+
+\CustomizeMathJax{%
+    \newenvironment{bNiceArray}
+        {\begin{NiceArrayWithDelims}{[}{]}}
+        {\end{NiceArrayWithDelims}}
+}
+
+\CustomizeMathJax{%
+    \newenvironment{BNiceArray}
+        {\begin{NiceArrayWithDelims}{\{}{\}}}
+        {\end{NiceArrayWithDelims}}
+}
+
+\CustomizeMathJax{%
+    \newenvironment{vNiceArray}
+        {\begin{NiceArrayWithDelims}{\vert}{\vert}}
+        {\end{NiceArrayWithDelims}}
+}
+
+\CustomizeMathJax{%
+    \newenvironment{VNiceArray}
+        {\begin{NiceArrayWithDelims}{\Vert}{\Vert}}
+        {\end{NiceArrayWithDelims}}
+}
+%    \end{macrocode}
+%
+% Ignore optional arg and use standard environments:
+%    \begin{macrocode}
+\CustomizeMathJax{\newenvironment{NiceMatrix}[1][]{\begin{matrix}}{\end{matrix}}}
+\CustomizeMathJax{\newenvironment{pNiceMatrix}[1][]{\begin{pmatrix}}{\end{pmatrix}}}
+\CustomizeMathJax{\newenvironment{bNiceMatrix}[1][]{\begin{bmatrix}}{\end{bmatrix}}}
+\CustomizeMathJax{\newenvironment{BNiceMatrix}[1][]{\begin{Bmatrix}}{\end{Bmatrix}}}
+\CustomizeMathJax{\newenvironment{vNiceMatrix}[1][]{\begin{vmatrix}}{\end{vmatrix}}}
+\CustomizeMathJax{\newenvironment{VNiceMatrix}[1][]{\begin{Vmatrix}}{\end{Vmatrix}}}
+%    \end{macrocode}
+%
+% Ignore optional argument and size.  Print contents.
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\LWRnicematrixBlock}[1]{#1}}
+\CustomizeMathJax{\def\LWRnicematrixBlockopt<#1>#2{#2}}
+
+\CustomizeMathJax{%
+    \newcommand{\Block}[2][]{\ifnextchar<\LWRnicematrixBlockopt\LWRnicematrixBlock}%
+}
+%    \end{macrocode}
+%
+% Form an approximation:
+%    \begin{macrocode}
+\CustomizeMathJax{%
+    \newcommand{\diagbox}[2]{%
+        \begin{array}{l}\hfill\quad#2\\\hline#1\quad\hfill\end{array}%
+    }%
+}
+%    \end{macrocode}
+%
+% More approximations:
+%    \begin{macrocode}
+\CustomizeMathJax{\let\hdottedline\hdashline}
+
+\CustomizeMathJax{\newcommand{\ldots}[1][]{\dots}}
+\CustomizeMathJax{\newcommand{\Cdots}[1][]{\cdots}}
+\CustomizeMathJax{\newcommand{\Vdots}[1][]{\vdots}}
+\CustomizeMathJax{\newcommand{\Ddots}[1][]{\ddots}}
+\CustomizeMathJax{\newcommand{\Iddots}[1][]{\mathinner{\unicode{x22F0}}}}
+
+\CustomizeMathJax{\newcommand{\Hdotsfor}[1]{\ldots}}
+\CustomizeMathJax{\newcommand{\Vdotsfor}[1]{\vdots}}
+%    \end{macrocode}
+%
+% There is no way to emulate \env{AutoNiceMatrix} in \brand{MathJax}.
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\AutoNiceMatrix}[2]{\text{(AutoNiceMatrix #1)}}}
+\CustomizeMathJax{\let\pAutoNiceMatrix\AutoNiceMatrix}
+\CustomizeMathJax{\let\bAutoNiceMatrix\AutoNiceMatrix}
+\CustomizeMathJax{\let\BAutoNiceMatrix\AutoNiceMatrix}
+\CustomizeMathJax{\let\vAutoNiceMatrix\AutoNiceMatrix}
+\CustomizeMathJax{\let\VAutoNiceMatrix\AutoNiceMatrix}
+\end{warpMathJax}
+%    \end{macrocode}
+%
 % \iffalse
+%</nicematrix>
+% \fi
+%
+%
+%
+% \iffalse
 %<*noitcrul>
 % \fi
 %
@@ -61756,7 +69325,6 @@
 %
 %
 % Discard all options for \pkg{lwarp-nowidow}:
-
 % \codehtml
 %    \begin{macrocode}
 \LWR at ProvidesPackageDrop{nowidow}[2011/09/20]
@@ -61844,8 +69412,22 @@
 % \codehtml
 %
 % Some disabled options:
+% \changes{v0.84}{2020/04/06}{\pkg{ntheorem}: Warning if \optn{thref}.}
 %    \begin{macrocode}
-\DeclareOption{thref}{}
+\DeclareOption{thref}{
+    \AtEndDocument{
+        \PackageWarningNoLine{lwarp}{%
+            Lwarp uses cleveref, which takes over ntheorem's\MessageBreak
+            referencing, including
+                \protect\label \space and \protect\thref.\MessageBreak
+            Cleveref does not accept ntheorem's optional\MessageBreak
+            argument for \protect\label, so it will appear\MessageBreak
+            in the text.  It is recommended to remove the\MessageBreak
+            thref option, \protect\usepackage{cleveref} instead,\MessageBreak
+            and remove any trailing optional arguments for \protect\label%
+        }%
+    }
+}
 
 
 \newbool{LWR at ntheoremmarks}
@@ -62040,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}
@@ -62946,7 +70532,14 @@
         }%
         \setkeys{LWRparcols}{#1}%
     }
-    {\end{LWR at setvirtualpage}}
+    {%
+%    \end{macrocode}
+%
+% \changes{v0.84}{2020/04/21}{\pkg{parcolumns}: Fixed: Missing \cs{colplacechunks}.}
+%    \begin{macrocode}
+        \colplacechunks%
+        \end{LWR at setvirtualpage}%
+    }
 
 \newcommand{\LWR at parcolumns@onecol}[1]{%
     \ifbool{LWR at parcolumns@started}%
@@ -63069,8 +70662,8 @@
 }
 
 \AtBeginDocument{
-\crefname{parnotemark}{paragraph note}{paragraph notes}%
-\Crefname{parnotemark}{Paragraph note}{Paragraph notes}
+    \crefname{parnotemark}{paragraph note}{paragraph notes}
+    \Crefname{parnotemark}{Paragraph note}{Paragraph notes}
 }
 %    \end{macrocode}
 %
@@ -63092,8 +70685,6 @@
 \end{warpMathJax}
 %    \end{macrocode}
 %
-%
-%
 % \iffalse
 %</parnotes>
 % \fi
@@ -63713,20 +71304,27 @@
 % \section{pdfrender}
 %
 % \DescribePackage{pdfrender}
-% \pkg{pdfrender} is ignored.
+% \pkg{pdfrender} is allowed during \HTML, but it has no effect on
+% \HTML\ text output.
+% \pkg{pdfrender} is enabled for use with \pkg{xfakebold}, and
+% it is enabled during \HTML\ so that it may be in use when
+% an \SVG\ math image is started.
+% I.e. \pkg{xfakebold}'s \cs{setBold} may be used outside of a
+% math expression and still be detected when the math begins.
 %
+% The \pkg{lwarp-pdfrender} package is present because it used to
+% disable \pkg{pdfrender}, so this newer version is to overwrite
+% older versions.
+%
 % \changes{v0.49}{2018/02/15}{\pkg{pdfrender}: Added.}
+% \changes{v0.88}{2020/06/29}{\pkg{pdfrender}: Restored for \pkg{xfakebold}.}
 %
 % \codehtml
 %
 %    \begin{macrocode}
-\LWR at ProvidesPackageDrop{pdfrender}[2016/05/17]
+\LWR at ProvidesPackagePass{pdfrender}[2019/12/29]
 %    \end{macrocode}
 %
-%    \begin{macrocode}
-\newcommand*{\pdfrender}[1]{}
-\newcommand{\textpdfrender}[2]{#2}
-%    \end{macrocode}
 %
 % \iffalse
 %</pdfrender>
@@ -64016,6 +71614,7 @@
 % \limitsphysics
 %
 % \changes{v0.79}{2020/01/29}{\pkg{physics}: Added.}
+% \changes{v0.87}{2020/06/02}{\pkg{physics}: Now uses \brand{MathJax} v3 extension.}
 %
 % \codehtml
 %
@@ -64024,288 +71623,9 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-% doesn't work with \big, etc:
 \begin{warpMathJax}
-\LWR at infoprocessingmathjax{physics}
-
-\CustomizeMathJax{\newcommand{\quantity}{}}
-\CustomizeMathJax{\let\qty\quantity}
-\CustomizeMathJax{\newcommand{\pqty}[1]{\left(#1\right)}}
-\CustomizeMathJax{\newcommand{\bqty}[1]{\left\lbrack#1\right\rbrack}}
-\CustomizeMathJax{\newcommand{\vqty}[1]{\left\vert#1\right\rvert}}
-\CustomizeMathJax{\newcommand{\Bqty}[1]{\left\lbrace#1\right\rbrace}}
-
-% doesn't work with \big, etc., no star
-\CustomizeMathJax{\newcommand{\absolutevalue}[1]{\left\lvert#1\right\rvert}}
-\CustomizeMathJax{\let\abs\absolutevalue}
-
-% doesn't work with \big, etc., no star
-\CustomizeMathJax{\newcommand{\norm}[1]{%
-    \left\lvert\left\lvert#1\right\rvert\right\rvert}%
-}
-
-% doesn't work with \big, etc., no star, no paren or bracket
-\CustomizeMathJax{\newcommand{\evaluated}[1]{#1\vert}}
-\CustomizeMathJax{\let\eval\evaluated}
-
-% no \Big, star
-\CustomizeMathJax{\newcommand{\order}[1]{\mathcal{O}\left(#1\right)}}
-
-% no \Big, star
-\CustomizeMathJax{\newcommand{\commutator}[2]{\left\lbrack#1,#2\right\rbrack}}
-\CustomizeMathJax{\let\comm\commutator}
-
-% no \Big, star
-\CustomizeMathJax{\newcommand{\anticommutator}[2]{%
-    \left\lbrace#1,#2\right\rbrace}%
-}
-\CustomizeMathJax{\let\acomm\anticommutator}
-
-% no \Big, star
-\CustomizeMathJax{\let\poissonbracket\anticommutator}
-\CustomizeMathJax{\let\pb\anticommutator}
-
-% no star
-\CustomizeMathJax{\newcommand{\vectorbold}[1]{\mathbf{#1}}}
-\CustomizeMathJax{\let\vb\vectorbold}
-
-% no star
-\CustomizeMathJax{\newcommand{\vectorarrow}[1]{\vec{\mathbf{#1}}}}
-\CustomizeMathJax{\let\va\vectorarrow}
-
-% no star
-\CustomizeMathJax{\newcommand{\vectorunit}[1]{\mathbf{\hat{#1}}}}
-\CustomizeMathJax{\let\va\vectorunit}
-
-\CustomizeMathJax{\newcommand{\dotproduct}{\boldsymbol\cdot}}
-\CustomizeMathJax{\let\vdot\dotproduct}
-
-\CustomizeMathJax{\newcommand{\crossproduct}{\boldsymbol\times}}
-\CustomizeMathJax{\let\cross\crossproduct}
-\CustomizeMathJax{\let\cp\crossproduct}
-
-\CustomizeMathJax{\newcommand{\gradient}{\mathbf{\nabla}}}
-\CustomizeMathJax{\let\grad\gradient}
-
-\CustomizeMathJax{\let\divisionsymbol\div}
-
-\CustomizeMathJax{\newcommand{\divergence}{\nabla\vdot}}
-\CustomizeMathJax{\let\div\divergence}
-
-\CustomizeMathJax{\newcommand{\curl}{\nabla\cross}}
-
-\CustomizeMathJax{\newcommand{\laplacian}{\nabla^2}}
-
-% responds to notrig option
-\ifx\trigopt 1
-    \CustomizeMathJax{\DeclareMathOperator{\sine}{sin}}
-    \CustomizeMathJax{\DeclareMathOperator{\cosine}{cos}}
-    \CustomizeMathJax{\DeclareMathOperator{\tangent}{tan}}
-    \CustomizeMathJax{\DeclareMathOperator{\cosecant}{csc}}
-    \CustomizeMathJax{\DeclareMathOperator{\secant}{sec}}
-    \CustomizeMathJax{\DeclareMathOperator{\cotangent}{cot}}
-    \CustomizeMathJax{\DeclareMathOperator{\arcsine}{arcsin}}
-    \CustomizeMathJax{\DeclareMathOperator{\arccosine}{arccos}}
-    \CustomizeMathJax{\DeclareMathOperator{\arctangent}{arctan}}
-    \CustomizeMathJax{\DeclareMathOperator{\hypsine}{sinh}}
-    \CustomizeMathJax{\DeclareMathOperator{\hypcosine}{cosh}}
-    \CustomizeMathJax{\DeclareMathOperator{\hyptangent}{tanh}}
-    \CustomizeMathJax{\DeclareMathOperator{\hypcotangent}{coth}}
-    \CustomizeMathJax{\DeclareMathOperator{\exponential}{exp}}
-    \CustomizeMathJax{\DeclareMathOperator{\logarithm}{log}}
-    \CustomizeMathJax{\DeclareMathOperator{\naturallogarithm}{\ln}}
-    \CustomizeMathJax{\DeclareMathOperator{\determinant}{det}}
-    \CustomizeMathJax{\DeclareMathOperator{\Probability}{Pr}}
-    \CustomizeMathJax{\newcommand{\sin}[1][{}]{\mathrm{sin}^#1}}
-    \CustomizeMathJax{\newcommand{\sinh}[1][{}]{\mathrm{sinh}^#1}}
-    \CustomizeMathJax{\newcommand{\arcsin}[1][{}]{\mathrm{arcsin}^#1}}
-    \CustomizeMathJax{\newcommand{\asin}[1][{}]{\mathrm{asin}^#1}}
-    \CustomizeMathJax{\newcommand{\cos}[1][{}]{\mathrm{cos}^#1}}
-    \CustomizeMathJax{\newcommand{\cosh}[1][{}]{\mathrm{cosh}^#1}}
-    \CustomizeMathJax{\newcommand{\arccos}[1][{}]{\mathrm{arccos}^#1}}
-    \CustomizeMathJax{\newcommand{\acos}[1][{}]{\mathrm{acos}^#1}}
-    \CustomizeMathJax{\newcommand{\tan}[1][{}]{\mathrm{tan}^#1}}
-    \CustomizeMathJax{\newcommand{\tanh}[1][{}]{\mathrm{tanh}^#1}}
-    \CustomizeMathJax{\newcommand{\arctan}[1][{}]{\mathrm{arctan}^#1}}
-    \CustomizeMathJax{\newcommand{\atan}[1][{}]{\mathrm{atan}^#1}}
-    \CustomizeMathJax{\newcommand{\csc}[1][{}]{\mathrm{csc}^#1}}
-    \CustomizeMathJax{\newcommand{\csch}[1][{}]{\mathrm{csch}^#1}}
-    \CustomizeMathJax{\newcommand{\arccsc}[1][{}]{\mathrm{arccsc}^#1}}
-    \CustomizeMathJax{\newcommand{\acsc}[1][{}]{\mathrm{acsc}^#1}}
-    \CustomizeMathJax{\newcommand{\sec}[1][{}]{\mathrm{sec}^#1}}
-    \CustomizeMathJax{\newcommand{\sech}[1][{}]{\mathrm{sech}^#1}}
-    \CustomizeMathJax{\newcommand{\arcsec}[1][{}]{\mathrm{arcsec}^#1}}
-    \CustomizeMathJax{\newcommand{\asec}[1][{}]{\mathrm{asec}^#1}}
-    \CustomizeMathJax{\newcommand{\cot}[1][{}]{\mathrm{cot}^#1}}
-    \CustomizeMathJax{\newcommand{\coth}[1][{}]{\mathrm{coth}^#1}}
-    \CustomizeMathJax{\newcommand{\arccot}[1][{}]{\mathrm{arccot}^#1}}
-    \CustomizeMathJax{\newcommand{\acot}[1][{}]{\mathrm{acot}^#1}}
-\else
-    \CustomizeMathJax{\DeclareMathOperator{\arccsc}{arccsc}}
-    \CustomizeMathJax{\DeclareMathOperator{\arcsec}{arcsec}}
-    \CustomizeMathJax{\DeclareMathOperator{\arccot}{arccot}}
-    \CustomizeMathJax{\DeclareMathOperator{\asin}{asin}}
-    \CustomizeMathJax{\DeclareMathOperator{\acos}{acos}}
-    \CustomizeMathJax{\DeclareMathOperator{\atan}{atan}}
-    \CustomizeMathJax{\DeclareMathOperator{\acsc}{acsc}}
-    \CustomizeMathJax{\DeclareMathOperator{\asec}{asec}}
-    \CustomizeMathJax{\DeclareMathOperator{\acot}{acot}}
-    \CustomizeMathJax{\DeclareMathOperator{\csch}{csch}}
-    \CustomizeMathJax{\DeclareMathOperator{\sech}{sech}}
-    \CustomizeMathJax{\newcommand{\tr}{\trace}}
-    \CustomizeMathJax{\newcommand{\Tr}{\Trace}}
-    \CustomizeMathJax{\newcommand{\Res}{\Residue}}
-\fi
-
-\CustomizeMathJax{\DeclareMathOperator{\trace}{tr}}
-\CustomizeMathJax{\let\tr\trace}
-\CustomizeMathJax{\DeclareMathOperator{\Trace}{Tr}}
-\CustomizeMathJax{\let\Tr\Trace}
-\CustomizeMathJax{\DeclareMathOperator{\rank}{rank}}
-\CustomizeMathJax{\DeclareMathOperator{\erf}{erf}}
-\CustomizeMathJax{\DeclareMathOperator{\Residue}{Res}}
-\CustomizeMathJax{\newcommand{\principalvalue}{\mathcal{P}}}
-\CustomizeMathJax{\let\pv\principalvalue}
-\CustomizeMathJax{\newcommand{\PV}{\text{P.V.}}}
-\CustomizeMathJax{\newcommand{\real}{\mathcal{R}}}
-\CustomizeMathJax{\newcommand{\imaginary}{\mathcal{I}}}
-
-% must be brace arguments
-\CustomizeMathJax{\newcommand{\Re}[1]{\mathrm{Re}\left\lbrace#1\right\rbrace}}
-\CustomizeMathJax{\newcommand{\Im}[1]{\mathrm{Im}\left\lbrace#1\right\rbrace}}
-
-\CustomizeMathJax{\newcommand{\qqtext}[1]{\quad\mathrm{#1}\quad}}
-\CustomizeMathJax{\let\qq\qqtext}
-\CustomizeMathJax{\newcommand{\qqcomma}{\text{,}\quad}}
-\CustomizeMathJax{\let\qc\qqcomma}
-\CustomizeMathJax{\newcommand{\qcc}{\quad\text{c.c.}\quad}}
-\CustomizeMathJax{\let\qcc}
-\CustomizeMathJax{\newcommand{\qif}{\quad\text{if}\quad}}
-\CustomizeMathJax{\newcommand{\qthen}{\quad\text{then}\quad}}
-\CustomizeMathJax{\newcommand{\qelse}{\quad\text{else}\quad}}
-\CustomizeMathJax{\newcommand{\qotherwise}{\quad\text{otherwise}\quad}}
-\CustomizeMathJax{\newcommand{\qunless}{\quad\text{unless}\quad}}
-\CustomizeMathJax{\newcommand{\qgiven}{\quad\text{given}\quad}}
-\CustomizeMathJax{\newcommand{\qusing}{\quad\text{using}\quad}}
-\CustomizeMathJax{\newcommand{\qassume}{\quad\text{assume}\quad}}
-\CustomizeMathJax{\newcommand{\qsince}{\quad\text{since}\quad}}
-\CustomizeMathJax{\newcommand{\qlet}{\quad\text{let}\quad}}
-\CustomizeMathJax{\newcommand{\qfor}{\quad\text{for}\quad}}
-\CustomizeMathJax{\newcommand{\qall}{\quad\text{all}\quad}}
-\CustomizeMathJax{\newcommand{\qeven}{\quad\text{even}\quad}}
-\CustomizeMathJax{\newcommand{\qodd}{\quad\text{odd}\quad}}
-\CustomizeMathJax{\newcommand{\qinteger}{\quad\text{integer}\quad}}
-\CustomizeMathJax{\newcommand{\qand}{\quad\text{and}\quad}}
-\CustomizeMathJax{\newcommand{\qor}{\quad\text{or}\quad}}
-\CustomizeMathJax{\newcommand{\qas}{\quad\text{as}\quad}}
-\CustomizeMathJax{\newcommand{\qin}{\quad\text{in}\quad}}
-
-\CustomizeMathJax{\newcommand{\differential}[1][]{\text{d}^{#1}}}
-\CustomizeMathJax{\let\dd\differential}
-
-\CustomizeMathJax{\newcommand{\derivative}[3][]{%
-    \frac{\text{d}^{#1}#2}{\text{d}#3^{#1}}}%
-}
-\CustomizeMathJax{\let\dv\derivative}
-
-\CustomizeMathJax{\newcommand{\partialderivative}[3][]{%
-    \frac{\partial^{#1}#2}{\partial#3^{#1}}}%
-}
-\CustomizeMathJax{\let\pderivative\partialderivative}
-\CustomizeMathJax{\let\pdv\partialderivative}
-
-\CustomizeMathJax{\newcommand{\variation}{\delta}}
-\CustomizeMathJax{\let\var\variation}
-
-% Must provide two mandatory args.
-% For the example in the manual with (E-TS), enclose the parens in braces
-\CustomizeMathJax{\newcommand{\functionalderivative}[3][]{%
-    \frac{\delta^{#1}#2}{\delta#3^{#1}}}%
-}
-\CustomizeMathJax{\let\fdv\functionalderivative}
-
-
-% use \braket to contract
-\CustomizeMathJax{\newcommand{\bra}[1]{\langle{#1}\rvert}}
-\CustomizeMathJax{\newcommand{\ket}[1]{\lvert{#1}\rangle}}
-
-% must have two args
-\CustomizeMathJax{\newcommand{\innerproduct}[2]{%
-    \left\langle{#1}\middle\vert{#2}\right\rangle}%
-}
-\CustomizeMathJax{\let\braket\innerproduct}
-\CustomizeMathJax{\let\ip\innerproduct}
-
-% must have two args
-\CustomizeMathJax{\newcommand{\outerproduct}[2]{%
-    \left\lvert{#1}\middle\rangle\!\middle\langle#2\right\rvert}%
-}
-\CustomizeMathJax{\let\dyad\outerproduct}
-\CustomizeMathJax{\let\op\outerproduct}
-
-% must have two args, unlike the MathJax version
-\CustomizeMathJax{\newcommand{\expectationvalue}[2]{%
-    \left\langle{#2}\middle\vert{#1}\middle\vert{#2}\right\rangle}%
-}
-\CustomizeMathJax{\let\expval\expectationvalue}
-\CustomizeMathJax{\let\ev\expectationvalue}
-
-\CustomizeMathJax{\newcommand{\matrixelement}[3]{%
-    \left\langle{#1}\middle\vert{#2}\middle\vert{#3}\right\rangle}%
-}
-\CustomizeMathJax{\let\mel\matrixelement}
-
-\CustomizeMathJax{\newcommand{\matrixquantity}[1]{\begin{matrix}#1\end{matrix}}}
-\CustomizeMathJax{\let\mqty\matrixquantity}
-\CustomizeMathJax{\newcommand{\pmqty}[1]{\begin{pmatrix}#1\end{pmatrix}}}
-\CustomizeMathJax{\newcommand{\Pmqty}[1]{%
-    \left\lgroup\begin{matrix}#1\end{matrix}\right\rgroup}%
-}
-\CustomizeMathJax{\newcommand{\bmqty}[1]{\begin{bmatrix}#1\end{bmatrix}}}
-\CustomizeMathJax{\newcommand{\vmqty}[1]{\begin{vmatrix}#1\end{vmatrix}}}
-
-\CustomizeMathJax{\newcommand{\smallmatrixquantity}[1]{%
-    \begin{smallmatrix}#1\end{smallmatrix}}%
-}
-\CustomizeMathJax{\let\smqty\smallmatrixquantity}
-\CustomizeMathJax{\newcommand{\spmqty}[1]{%
-    \pqty{\begin{smallmatrix}#1\end{smallmatrix}}}%
-}
-\CustomizeMathJax{\newcommand{\sPmqty}[1]{%
-    \left\lgroup\begin{smallmatrix}#1\end{smallmatrix}\right\rgroup}%
-}
-\CustomizeMathJax{\newcommand{\sbmqty}[1]{%
-    \bqty{\begin{smallmatrix}#1\end{smallmatrix}}}%
-}
-\CustomizeMathJax{\newcommand{\svmqty}[1]{%
-    \vqty{\begin{smallmatrix}#1\end{smallmatrix}}}%
-}
-
-\CustomizeMathJax{\let\matrixdeterminant\vmqty}
-\CustomizeMathJax{\let\mdet\vmqty}
-\CustomizeMathJax{\let\smdet\svmqty}
-
-\CustomizeMathJax{\newcommand{\identitymatrix}[1]{(\text{imat}\{#1\})}}
-\CustomizeMathJax{\let\imat\identitymatrix}
-
-\CustomizeMathJax{\newcommand{\xmatrix}[3]{(\text{xmat}\{\}\{#2\}\{#3\})}}
-\CustomizeMathJax{\let\xmat\xmatrix}
-
-\CustomizeMathJax{\newcommand{\zeromatrix}[2]{(\text{zmat}\{#1\}\{#2\})}}
-\CustomizeMathJax{\let\zmat\zeromatrix}
-
-\CustomizeMathJax{\newcommand{\paulimatrix}[1]{(\text{pmat}\{#1\})}}
-\CustomizeMathJax{\let\pmat\paulimatrix}
-
-\CustomizeMathJax{\newcommand{\diagonalmatrix}[2][]{%
-    \left(\text{dmat}\right)}%
-}
-\CustomizeMathJax{\let\dmat\diagonalmatrix}
-
-\CustomizeMathJax{\newcommand{\antidiagonalmatrix}[2][]{%
-    \left(\text{admat}\right)}%
-}
-\CustomizeMathJax{\let\admat\antidiagonalmatrix}
+\PackageWarningNoLine{lwarp, physics}{The MathJax v3 extension will be used}
+\CustomizeMathJax{\require{physics}}
 \end{warpMathJax}
 %    \end{macrocode}
 %
@@ -64434,6 +71754,118 @@
 %
 %
 % \iffalse
+%<*picinpar>
+% \fi
+%
+% \part{lwarp-picinpar.sty}
+%
+% \section{picinpar}
+%
+% \credits{Friedhelm Sowa}
+%
+% \DescribePackage{picinpar}
+% \pkg{picinpar} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.893}{2020/11/15}{\pkg{picinpar}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{picinpar}% No date is assigned.
+%    \end{macrocode}
+%
+% The \env{window} is floated by a \env{BlockClass} style.
+%    \begin{macrocode}
+\long\def\LWR at HTML@window[#1,#2,#3,#4] {%
+    \if #2r%
+        \begin{BlockClass}[float:right]{marginblock}%
+    \else%
+        \begin{BlockClass}[float:left]{marginblock}%
+    \fi%
+    #3\par%
+    #4%
+    \end{BlockClass}%
+}
+
+\def\endLWR at HTML@window{}
+
+\LWR at formattedenv{window}
+%    \end{macrocode}
+%
+% The \env{framepic} and \env{wframepic} are placed inside a \env{BlockClass}
+% of class \attribute{framebox}.
+%    \begin{macrocode}
+\def\LWR at HTML@framepic#1{%
+    \begin{BlockClass}{framebox}
+    \expandafter\box\csname #1box\endcsname%
+    \end{BlockClass}
+}
+\LWR at formatted{framepic}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\def\LWR at HTML@wframepic#1{%
+    \begin{BlockClass}{framebox}
+    \expandafter\box\csname #1box\endcsname%
+    \end{BlockClass}
+}
+\LWR at formatted{wframepic}
+%    \end{macrocode}
+%
+% The caption is placed inside a \env{BlockClass} of class \attribute{figurecaption}.
+%    \begin{macrocode}
+\long\def\LWR at HTML@@makewincaption#1#2{%
+\begin{BlockClass}{figurecaption}
+#1: #2
+\end{BlockClass}
+}
+\LWR at formatted{@makewincaption}
+%    \end{macrocode}
+%
+% With \HTML\ output, \env{figwindow} and \env{tabwindow} must not pre-decrement
+% their counters.
+%    \begin{macrocode}
+\long\def\LWR at HTML@figwindow[#1,#2,#3,#4] {%
+%      \advance\c at figure -1
+     \window[#1,#2,{#3},{\def\@captype{figure}%
+        \wincaption#4\par}] }
+
+\def\endLWR at HTML@figwindow{\endwindow}
+
+\LWR at formattedenv{figwindow}
+%    \end{macrocode}
+%
+% For \env{tabwindow}, to change the catcode of |&|,
+% \cs{StartDefiningTabulars} is used before
+% absorbing the arguments, and \cs{EndDefiningTabulars} is used
+% at the end of the environment.
+%    \begin{macrocode}
+\long\def\LWR at HTML@subtabwindow[#1,#2,#3,#4] {%
+%      \advance\c at table -1
+     \window[#1,#2,{#3},{\def\@captype{table}%
+        \wincaption#4\par}] }
+
+\newcommand*{\LWR at HTML@tabwindow}{%
+    \StartDefiningTabulars%
+    \LWR at HTML@subtabwindow%
+}
+
+\def\endLWR at HTML@tabwindow{%
+    \endwindow%
+    \StopDefiningTabulars%
+}
+
+\LWR at formattedenv{tabwindow}
+%    \end{macrocode}
+%
+% \iffalse
+%</picinpar>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*pifont>
 % \fi
 %
@@ -64481,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
 %
@@ -64676,9 +72149,53 @@
 %
 %
 %
+% \iffalse
+%<*plimsoll>
+% \fi
 %
+% \part{lwarp-plimsoll.sty}
 %
+% \section{plimsoll}
+%
+% \credits{Palle Jørgensen}
+%
+% \DescribePackage{plimsoll}
+% \pkg{plimsoll} is used as-is for \SVG\ math, and
+% emulated for \brand{MathJax}.
+%
+% The \optn{circ} option is honored.
+% For \brand{MathJax}, \cs{plimsollsans} is the same as \cs{plimsollroman}.
+%
+% \changes{v0.893}{2020/10/12}{\pkg{plimsoll}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{plimsoll}[2020/10/09]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\plimsollroman}{\unicode{x029B5}}}
+
+\CustomizeMathJax{\let\plimsoll\plimsollroman}
+\CustomizeMathJax{\let\plimsollsans\plimsoll}
+
+\ifdefstring{\stst}{^{\circ}}
+    {\CustomizeMathJax{\newcommand{\stst}{^{\circ}}}}
+    {\CustomizeMathJax{\newcommand{\stst}{^{\plimsoll}}}}
+\end{warpMathJax}
+%    \end{macrocode}
+%
 % \iffalse
+%</plimsoll>
+% \fi
+%
+%
+%
+%
+%
+% \iffalse
 %<*prelim2e>
 % \fi
 %
@@ -64965,6 +72482,7 @@
 % \limitspstricks
 %
 % \changes{v0.59}{2018/09/05}{\pkg{pstricks}: Added.}
+% \changes{v0.893}{2020/10/28}{\pkg{pstricks}: Fixed \env{pspicture*}.}
 %
 % \codehtml
 %
@@ -64977,6 +72495,11 @@
     \begin{lateximage}[pspicture]%
 }
 \AfterEndEnvironment{pspicture}{\end{lateximage}}
+
+\BeforeBeginEnvironment{pspicture*}{%
+    \begin{lateximage}[pspicture]%
+}
+\AfterEndEnvironment{pspicture*}{\end{lateximage}}
 %    \end{macrocode}
 %
 % \iffalse
@@ -65047,6 +72570,45 @@
 %
 %
 % \iffalse
+%<*pxfonts>
+% \fi
+%
+% \part{lwarp-pxfonts.sty}
+%
+% \section{pxfonts}
+%
+% \credits{Young Ryu}
+%
+% \DescribePackage{pxfonts}
+% \pkg{pxfonts} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% \changes{v0.89}{2020/08/10}{\pkg{pxfonts}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{pxfonts}[2008/01/22]
+%    \end{macrocode}
+%
+% For \brand{MathJax}:
+%    \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+\LWR at infoprocessingmathjax{pxfonts}
+
+\LWR at mathjax@addgreek at l@up{}{up}
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</pxfonts>
+% \fi
+%
+%
+%
+% \iffalse
 %<*pxftnright>
 % \fi
 %
@@ -65221,7 +72783,7 @@
 \xpatchcmd{\endquoting}{\quo at endtext}
     {\quo at endtext\end{LWR at blocktextcurrentfont}\LWR at stoppars}
     {}
-    {\LWR at patcherror{imakeidx}{endquoting}}
+    {\LWR at patcherror{quoting}{endquoting}}
 %    \end{macrocode}
 
 % \iffalse
@@ -65307,22 +72869,143 @@
 % \changes{v0.38}{2017/08/26}{\pkg{realscripts}: Added.}
 % \changes{v0.42}{2017/10/16}{\pkg{realscripts}: Fix for subscripts in a \env{lateximage}.}
 % \changes{v0.47}{2018/01/26}{\pkg{realscripts}: Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.84}{2020/04/10}{\pkg{realscripts}: Fixed starred \cs{textsuperscript},
+%                                                   \cs{textsubscript}.}
+% \changes{v0.84}{2020/04/13}{\pkg{realscripts}: Improved supersub scripts.}
+% \changes{v0.84}{2020/04/13}{\pkg{realscripts}: Added print mode.}
 %
 % \codehtml
 %
 %    \begin{macrocode}
-\LWR at ProvidesPackageDrop{realscripts}[2016/02/13]
+\LWR at ProvidesPackagePass{realscripts}[2016/02/13]
 %    \end{macrocode}
 %
+%
+% The following are copied verbatim from the original,
+% but given new names, since \pkg{xparse} definitions should not be \cs{let}.
 %    \begin{macrocode}
-\let\realsuperscript\textsuperscript
-\let\realsubscript\textsubscript
+\ExplSyntaxOn
 
-\let\fakesuperscript\textsuperscript
-\let\fakesubscript\textsubscript
+\DeclareDocumentCommand \LWR at print@realsubscript {m} {
+  \fontspec_if_fontspec_font:TF {
+    \fontspec_if_opentype:TF
+    { \fontspec_if_feature:nTF {+subs}
+        { {\addfontfeature{VerticalPosition=Inferior}#1} }
+        { \fontspec_if_feature:nTF {+sinf}
+            { {\addfontfeature{VerticalPosition=ScientificInferior}#1} }
+            { \fakesubscript{#1} }
+        }
+    }
+    { \fontspec_if_aat_feature:nnTF {10} {2}
+        { {\addfontfeature{VerticalPosition=Inferior}#1} }
+        { \fakesubscript{#1} }
+    }
+  }
+  { \fakesubscript{#1} }
+}
 
-\newlength{\subsupersep}
+\DeclareDocumentCommand \LWR at HTML@realsubscript {m} {
+    \LWR at HTML@textsubscript{#1}
+}
 
+\LWR at formatted{realsubscript}
+
+
+\DeclareDocumentCommand \LWR at print@realsuperscript {m} {
+  \fontspec_if_fontspec_font:TF
+  {
+    \fontspec_if_opentype:TF
+    { \fontspec_if_feature:nTF {+sups}
+      { {\addfontfeature{VerticalPosition=Superior}#1} }
+      { \fakesuperscript{#1} }
+    }
+    { \fontspec_if_aat_feature:nnTF {10} {1}
+      { {\addfontfeature{VerticalPosition=Superior}#1} }
+      { \fakesuperscript{#1} }
+    }
+  }
+  { \fakesuperscript{#1} }
+}
+
+\DeclareDocumentCommand \LWR at HTML@realsuperscript {m} {
+    \LWR at HTML@textsuperscript{#1}
+}
+
+\LWR at formatted{realsuperscript}
+
+
+\DeclareDocumentCommand \LWR at print@textsubsuperscript {s O{l} mm} {
+  \leavevmode
+  \group_begin:
+  \IfBooleanTF #1
+  {
+    \hbox_set:Nn \l_tmpa_box {\textsubscript*{#3}}
+    \hbox_set:Nn \l_tmpb_box {\textsuperscript*{#4}}
+  }
+  {
+    \hbox_set:Nn \l_tmpa_box {\textsubscript{#3}}
+    \hbox_set:Nn \l_tmpb_box {\textsuperscript{#4}}
+  }
+  \hbox_set:Nn \l_tmpa_box
+    { \box_move_down:nn \subsupersep {\box_use:N \l_tmpa_box} }
+  \hbox_set:Nn \l_tmpb_box
+    { \box_move_up:nn \subsupersep {\box_use:N \l_tmpb_box} }
+  \str_case:nnF {#2}
+  {
+    {l}{\use_i:nnn}
+    {c}{\use_ii:nnn}
+    {r}{\use_iii:nnn}
+  }
+  {
+    \PackageWarning{realscripts}{
+      Unknown~alignment~option~`#2'. \MessageBreak
+      One~ of~ `l',~ `c',~ `r',~ only
+    }
+    \use_i:nnn
+  }
+  {
+    \hbox_overlap_right:n { \box_use:N \l_tmpa_box }
+    \hbox_overlap_right:n { \box_use:N \l_tmpb_box }
+    \skip_horizontal:n {
+      \dim_max:nn {\box_wd:N \l_tmpa_box} {\box_wd:N \l_tmpb_box}
+    }
+  }
+  {
+    \dim_compare:nTF { \box_wd:N \l_tmpa_box > \box_wd:N \l_tmpb_box }
+    {
+      \skip_horizontal:n {
+        0.5\box_wd:N \l_tmpa_box-0.5\box_wd:N \l_tmpb_box
+      }
+      \box_use:N \l_tmpb_box
+      \skip_horizontal:n {
+        -0.5\box_wd:N \l_tmpa_box-0.5\box_wd:N \l_tmpb_box
+      }
+      \box_use:N \l_tmpa_box
+    }
+    {
+      \skip_horizontal:n {
+        0.5\box_wd:N \l_tmpb_box-0.5\box_wd:N \l_tmpa_box
+      }
+      \box_use:N \l_tmpa_box
+      \skip_horizontal:n {
+        -0.5\box_wd:N \l_tmpb_box-0.5\box_wd:N \l_tmpa_box
+      }
+      \box_use:N \l_tmpb_box
+    }
+  }
+  {
+    \skip_horizontal:n {
+      \dim_max:nn {\box_wd:N \l_tmpa_box} {\box_wd:N \l_tmpb_box}
+    }
+    \hbox_overlap_left:n { \box_use:N \l_tmpa_box }
+    \hbox_overlap_left:n { \box_use:N \l_tmpb_box }
+  }
+  \group_end:
+}
+
+\ExplSyntaxOff
+
+
 \newcommand*{\LWR at realscriptsalign}{}
 
 \newcommand*{\LWR at setrealscriptsalign}[1]{%
@@ -65339,18 +73022,23 @@
     }{}%
 }
 
-\DeclareDocumentCommand \textsubsuperscript {s O{l} mm} {%
+\DeclareDocumentCommand \LWR at HTML@textsubsuperscript {s O{l} mm} {%
     \LWR at setrealscriptsalign{#2}%
     \InlineClass[\LWR at realscriptsalign]{supsubscript}{%
         \textsuperscript{#4}\textsubscript{#3}%
     }%
 }
+\LWR at formatted{textsubsuperscript}
 
-\DeclareDocumentCommand \textsupersubscript {s O{l} mm} {%
-    \LWR at setrealscriptsalign{#2}%
-    \InlineClass[\LWR at realscriptsalign]{supsubscript}{%
-        \textsubscript{#4}\textsuperscript{#3}%
-    }%
+\FilenameNullify{%
+    \RenewDocumentCommand{\textsuperscript}{s m}{}%
+    \RenewDocumentCommand{\textsubscript}{s m}{}%
+    \renewcommand{\fakesubscript}[1]{}%
+    \renewcommand{\fakesuperscript}[1]{}%
+    \renewcommand{\realsubscript}[1]{}%
+    \renewcommand{\realsuperscript}[1]{}%
+    \renewcommand{\textsubsuperscript}[2]{}%
+    \renewcommand{\textsupersubscript}[2]{}%
 }
 %    \end{macrocode}
 %
@@ -65615,8 +73303,44 @@
 %
 %
 %
+% \iffalse
+%<*repltext>
+% \fi
 %
+% \part{lwarp-repltext.sty}
+%
+% \section{repltext}
+%
+% \DescribePackage{repltext}
+% \pkg{repltext} is ignored.
+%
+% \changes{v0.893}{2020/10/16}{\pkg{repltext}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackageDrop{repltext}[2020/09/25]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\newcommand{\repltext}[2]{#2}
+\newcommand*{\prevrepl}{}
+%    \end{macrocode}
+%
+% For \brand{MathJax}:
+%    \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\repltext}[2]{#2}}
+\end{warpMathJax}
+%    \end{macrocode}
+%
 % \iffalse
+%</repltext>
+% \fi
+%
+%
+%
+% \iffalse
 %<*resizegather>
 % \fi
 %
@@ -65680,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
 %
@@ -65696,11 +73463,12 @@
 % emulated for \brand{MathJax}.
 %
 % \changes{v0.80}{2020/02/17}{\pkg{rmathbr}: Added.}
+% \changes{v0.894}{2020/12/16}{\pkg{rmathbr}: Updated to v1.1.}
 %
 % \codehtml
 %
 %    \begin{macrocode}
-\LWR at ProvidesPackagePass{rmathbr}[2016/04/10]
+\LWR at ProvidesPackagePass{rmathbr}[2020/12/11]
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -65826,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}
 
 
@@ -65874,6 +73656,7 @@
 % \pkg{rotfloat} is emulated.
 %
 % \changes{v0.34}{2017/07/25}{\pkg{rotfloat}: Added.}
+% \changes{v0.84}{2020/04/08}{\pkg{rotfloat}: Fix: Requires \pkg{rotating}.}
 %
 % \codehtml
 %    \begin{macrocode}
@@ -65880,6 +73663,7 @@
 \LWR at ProvidesPackageDrop{rotfloat}[2004/01/04]
 
 \RequirePackage{float}
+\RequirePackage{rotating}
 %    \end{macrocode}
 %
 %
@@ -66026,6 +73810,63 @@
 %
 %
 % \iffalse
+%<*scalerel>
+% \fi
+%
+% \part{lwarp-scalerel.sty}
+%
+% \section{scalerel}
+%
+% \credits{Steven B. Segletes}
+%
+% \DescribePackage{scalerel}
+% \pkg{scalerel} is used as-is for \SVG\ math, and is
+% emulated and ignored for \brand{MathJax}.
+%
+% \changes{v0.891}{2020/09/10}{\pkg{scalerel}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{scalerel}[2016/12/29]
+%    \end{macrocode}
+%
+% For \brand{MathJax}:
+%    \begin{macrocode}
+\begin{warpMathJax}
+\LWR at infoprocessingmathjax{scalerel}
+
+\CustomizeMathJax{\newcommand{\scalerel}{\ifstar{\scalerelplain}{\scalerelplus}}}
+\CustomizeMathJax{\newcommand{\scalerelplain}[3][]{#2}}
+\CustomizeMathJax{\newcommand{\scalerelplus}[3][]{#2#3}}
+\CustomizeMathJax{\newcommand{\stretchrel}{\ifstar{\stretchrelplain}{\stretchrelplus}}}
+\CustomizeMathJax{\newcommand{\stretchrelplain}[3][]{#2}}
+\CustomizeMathJax{\newcommand{\stretchrelplus}[3][]{#2#3}}
+\CustomizeMathJax{\newcommand{\scaleto}[3][]{#2}}
+\CustomizeMathJax{\newcommand{\stretchto}[3][]{#2}}
+\CustomizeMathJax{\newcommand{\scaleleftright}[4][]{#2#3#4}}
+\CustomizeMathJax{\newcommand{\stretchleftright}[4][]{#2#3#4}}
+\CustomizeMathJax{\newcommand{\hstretch}[2]{#2}}
+\CustomizeMathJax{\newcommand{\vstretch}[2]{#2}}
+\CustomizeMathJax{\newcommand{\scaleobj}[2]{#2}}
+\CustomizeMathJax{\newcommand{\ThisStyle}[1]{#1}}
+\CustomizeMathJax{\newcommand{\SavedStyle}{}}
+\CustomizeMathJax{\def\scriptstyleScaleFactor{.7}}
+\CustomizeMathJax{\def\scriptscriptstyleScaleFactor{.5}}
+\CustomizeMathJax{\newcommand{\discernmathstyle}{}}
+\CustomizeMathJax{\newcommand{\ignoremathstyle}[1][T]{}}
+\CustomizeMathJax{\newcommand{\Isnextbyte}[3][v]{}}
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</scalerel>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*schemata>
 % \fi
 %
@@ -66039,11 +73880,12 @@
 % \pkg{schemata} is patched for use by \pkg{lwarp}.
 %
 % \changes{v0.50}{2018/02/23}{\pkg{schemata}: Added.}
+% \changes{v0.893}{2020/11/26}{\pkg{schemata}: Added \element{alt} text.}
 %
 % \codehtml
 %
 %    \begin{macrocode}
-\LWR at ProvidesPackagePass{schemata}[2016/01/25]
+\LWR at ProvidesPackagePass{schemata}[2020/11/23]
 %    \end{macrocode}
 
 %    \begin{macrocode}
@@ -66051,17 +73893,17 @@
 \LetLtxMacro\LWR at schemata@origSchema\Schema
 
 \renewcommand{\schema}[3][open]{%
-\begin{lateximage}%
-\LWR at print@normalsize
-\LWR at schemata@origschema[#1]{#2}{#3}%
-\end{lateximage}%
+    \begin{lateximage}[-schemata-~\PackageDiagramAltText]%
+    \LWR at print@normalsize%
+    \LWR at schemata@origschema[#1]{#2}{#3}%
+    \end{lateximage}%
 }
 
 \renewcommand{\Schema}[5][open]{%
-\begin{lateximage}%
-\LWR at print@normalsize
-\LWR at schemata@origSchema[#1]{#2}{#3}{#4}{#5}%
-\end{lateximage}%
+    \begin{lateximage}[-schemata-~\PackageDiagramAltText]%
+    \LWR at print@normalsize%
+    \LWR at schemata@origSchema[#1]{#2}{#3}{#4}{#5}%
+    \end{lateximage}%
 }
 %    \end{macrocode}
 
@@ -66086,11 +73928,12 @@
 %
 % \changes{v0.44}{2017/11/20}{\pkg{scrextend}: Added.}
 % \changes{v0.47}{2018/01/26}{\pkg{scrextend}: Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.84}{2020/03/28}{\pkg{scrextend}: Updated to v3.29.}
 %
 % \codehtml
 %
 %    \begin{macrocode}
-\LWR at ProvidesPackageDrop{scrextend}[2018/03/30]
+\LWR at ProvidesPackageDrop{scrextend}[2020/01/24]
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -66105,15 +73948,84 @@
 \DeclareDocumentCommand{\useseriesofkomafont}{m}{}
 \DeclareDocumentCommand{\useshapeofkomafont}{m}{}
 
+\providecommand*{\coverpagetopmargin}{}
+\providecommand*{\coverpagebottommargin}{}
+\providecommand*{\coverpageleftmargin}{}
+\providecommand*{\coverpagerightmargin}{}
+
+%    \end{macrocode}
+%
+% Title page:
+% \changes{v0.84}{2020/03/28}{\pkg{scrextend}: Added \cs{titlehead}, \cs{subject},
+%                               \cs{subtitle}, \cs{published}.}
+%    \begin{macrocode}
 \AtBeginDocument{
     \let\LWR at koma@orig at maketitle\maketitle
     \DeclareDocumentCommand{\maketitle}{o}{\LWR at koma@orig at maketitle}
 }
 
+\DeclareDocumentCommand{\@maketitle}{}{%
+    \ifdefvoid{\@titlehead}{}{%
+        \begin{BlockClass}{titlehead}%
+        \@titlehead%
+        \end{BlockClass}%
+    }%
+    \ifdefvoid{\@subject}{}{%
+        \begin{BlockClass}{subject}%
+        \@subject%
+        \end{BlockClass}%
+    }%
+    \LWR at stoppars%
+    \LWR at htmltag{\LWR at tagtitle}%
+    \@title%
+    \LWR at htmltag{\LWR at tagtitleend}%
+    \ifdefvoid{\@subtitle}{}{%
+        \begin{BlockClass}{subtitle}%
+        \@subtitle%
+        \end{BlockClass}%
+    }%
+    \LWR at startpars%
+    \begin{BlockClass}{author}%
+%    \end{macrocode}
+%    \begin{macrocode}
+    \renewcommand*{\cr}{}%
+    \renewcommand*{\crcr}{}%
+    \renewcommand*{\noalign}{}%
+%    \end{macrocode}
+%    \begin{macrocode}
+        \renewcommand{\and}{%
+            \end{BlockClass}%
+            \begin{BlockClass}{oneauthor}%
+        }%
+        \begin{BlockClass}{oneauthor}%
+            \@author%
+        \end{BlockClass}%
+    \end{BlockClass}%
+    \begin{BlockClass}{titledate}%
+    \@date%
+    \end{BlockClass}%
+    \ifdefvoid{\@published}{}{%
+        \begin{BlockClass}{published}%
+        \@published%
+        \end{BlockClass}%
+    }%
+}
+
+\AddSubtitlePublished
+
 \DeclareDocumentCommand{\extratitle}{m}{}
-\DeclareDocumentCommand{\titlehead}{m}{}
-\DeclareDocumentCommand{\subject}{m}{}
+\DeclareDocumentCommand{\frontispiece}{m}{}
+
+\def\@titlehead{}%
+\DeclareDocumentCommand{\titlehead}{m}{\gdef\@titlehead{#1}}%
+
+\def\@subject{}%
+\DeclareDocumentCommand{\subject}{m}{\gdef\@subject{#1}}%
+
+% \subtitle and \published are defined by \AddSubtitlePublished
+
 \DeclareDocumentCommand{\publishers}{m}{\published{#1}}
+
 \DeclareDocumentCommand{\uppertitleback}{m}{}
 \DeclareDocumentCommand{\lowertitleback}{m}{}
 \DeclareDocumentCommand{\dedication}{m}{}
@@ -66120,8 +74032,6 @@
 
 \DeclareDocumentCommand{\ifthispageodd}{m m}{#1}
 
-\DeclareDocumentCommand{\titlepagestyle}{}{}
-
 \DeclareDocumentCommand{\cleardoublepageusingstyle}{m}{}
 \DeclareDocumentCommand{\cleardoubleemptypage}{}{}
 \DeclareDocumentCommand{\cleardoubleplainpage}{}{}
@@ -66726,8 +74636,37 @@
 %
 %
 %
+% \iffalse
+%<*selectp>
+% \fi
 %
+% \part{lwarp-selectp.sty}
+%
+% \section{selectp}
+%
+% \DescribePackage{selectp}
+% \pkg{selectp} is ignored.
+%
+% \changes{v0.893}{2020/10/16}{\pkg{selectp}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackageDrop{selectp}% no date given
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\newcommand*{\outputonly}[1]{}
+%    \end{macrocode}
+%
 % \iffalse
+%</selectp>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*semantic-markup>
 % \fi
 %
@@ -66805,6 +74744,79 @@
 %
 %
 % \iffalse
+%<*seqsplit>
+% \fi
+%
+% \part{lwarp-seqsplit.sty}
+%
+% \section{seqsplit}
+%
+% \credits{Boris Veytsman}
+%
+% \DescribePackage{seqsplit}
+% \pkg{seqsplit} is patched for use by \pkg{lwarp}.
+%
+% For \HTML\ output, the results are similar to print mode, and
+% respond to window size.
+%
+% For \SVG\ math, the
+% \trouble[\SVG\ math results]{seqsplit=\pkg{seqsplit}}
+% output differs from print mode in that the contents
+% are formatted in a minipage, which is then inline with the surrounding math.
+%
+% For \brand{MathJax}, the contents are used as-is.
+%
+% \changes{v0.893}{2020/10/16}{\pkg{seqsplit}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{seqsplit}[2006/08/07]
+%    \end{macrocode}
+%
+% Special handling because \pkg{lwarp} uses a box for \SVG\ math,
+% which does not normally allow line breaks, so
+% a print-mode \env{minipage} must be used to allow line breaks.
+% The \env{minipage} will not be wrapped inline with any surrounding math.
+%    \begin{macrocode}
+\begin{warpHTML}
+\LetLtxMacro\LWR at orig@seqsplit\seqsplit
+
+\renewcommand*{\seqsplit}[1]{%
+    \ifmmode%
+        \begin{LWR at print@minipage}{6in}%
+        \LWR at orig@seqsplit{#1}%
+        \end{LWR at print@minipage}%
+    \else%
+        \InlineClass[word-wrap:break-word]{seqsplit}{\LWR at orig@seqsplit{#1}}%
+    \fi
+}
+%    \end{macrocode}
+%
+% Between characters, an empty \HTML\ comment is placed to allow a
+% line wrap in the \HTML\ source, without adding spaces in the output.
+%    \begin{macrocode}
+\AtBeginDocument{
+    \newcommand*{\LWR at HTML@seqinsert}{%
+        \LWR at htmlcomment{ }%
+    }
+    \LWR at formatted{seqinsert}
+}
+\end{warpHTML}
+
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\seqsplit}[1]{#1}}
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</seqsplit>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*setspace>
 % \fi
 
@@ -66873,7 +74885,51 @@
 %
 %
 %
+%
+%
 % \iffalse
+%<*shadethm>
+% \fi
+%
+% \part{lwarp-shadethm.sty}
+%
+% \section{shadethm}
+%
+% \credits{Jim Hefferon}
+%
+% \DescribePackage{shadethm}
+% \pkg{shadethm} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.88}{2020/07/07}{\pkg{shadethm}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{shadethm}[1999/11/23]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\newenvironment{LWR at HTML@shadebox}
+{%
+    \convertcolorspec{named}{shadethmcolor}{HTML}\LWR at tempcolor%
+    \convertcolorspec{named}{shaderulecolor}{HTML}\LWR at tempcolortwo%
+    \begin{BlockClass}[%
+        background: \LWR at origpound\LWR at tempcolor ;
+        border: 1px solid \LWR at origpound\LWR at tempcolortwo ;
+    ]{shadebox}
+}%
+{\end{BlockClass}}
+\LWR at formattedenv{shadebox}
+%    \end{macrocode}
+%
+% \iffalse
+%</shadethm>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*shadow>
 % \fi
 
@@ -67051,6 +75107,82 @@
 %
 %
 % \iffalse
+%<*shuffle>
+% \fi
+%
+% \part{lwarp-shuffle.sty}
+%
+% \section{shuffle}
+%
+% \credits{Julian Gilbey and Antoine Lejay}
+%
+% \DescribePackage{shuffle}
+% \pkg{shuffle} is emulated for \SVG\ math, and
+% also emulated for \brand{MathJax}.
+%
+% The font used for \pkg{shuffle} may not render correctly when
+% converted to \SVG\ math, so a \env{picture} environment drawing
+% is used instead.
+%
+% For \brand{MathJax}, the Unicode character is used, and for
+% \cs{cshuffle} a \cs{bar} is added.
+%
+% \changes{v0.89}{2020/07/26}{\pkg{shuffle}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackageDrop{shuffle}[2008/10/27]
+\LWR at origRequirePackage{lwarp-common-mathjax-overlaysymbols}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\newcommand*{\LWR at shuffle@start}{%
+    \hspace*{.2em}
+    \begin{picture}(.75,0.65)
+    \setlength{\unitlength}{1em}
+    \put(0,0){\line(1,0){.75}}
+    \put(0,0){\line(0,1){.5}}
+    \put(.375,0){\line(0,1){.5}}
+    \put(.75,0){\line(0,1){.5}}
+}
+
+\newcommand*{\LWR at shuffle@finish}{%
+    \end{picture}
+    \hspace*{.75em}
+    \hspace*{.2em}
+}
+
+\newcommand*{\shuffle}{%
+    \LWR at shuffle@start%
+    \LWR at shuffle@finish%
+}
+
+\newcommand*{\cshuffle}{%
+    \LWR at shuffle@start%
+    \put(.05,.65){\line(1,0){.65}}%
+    \LWR at shuffle@finish%
+}
+%    \end{macrocode}
+%
+% \changes{v0.891}{2020/09/08}{\pkg{shuffle}: Added \cs{mathbin}, improved bar.}
+%    \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\shuffle}{\mathbin{\unicode{0x29E2}}}}
+\CustomizeMathJax{\newcommand{\cshuffle}{%
+    \mathbin{\LWRoverlaysymbols{\raise{.6ex}{-}}{\unicode{0x29E2}}}%
+}}
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</shuffle>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*sidecap>
 % \fi
 
@@ -67139,16 +75271,17 @@
 %
 % \begin{noindmacro}{\sidecaption} * \oarg{entry} \oarg{offset} \marg{text}
 % \changes{v0.47}{2018/01/30}{\pkg{sidenotes}: Fix for \SVG\ math in captions.}
+% \changes{v0.84}{2020/04/16}{\pkg{sidenotes}: \cs{sidecaption} not long arg.}
 %    \begin{macrocode}
-\RenewDocumentCommand \sidecaption {s o o +m}
+\RenewDocumentCommand \sidecaption {s o o m}
 {
     \LWR at stoppars
     \begingroup
-  \captionsetup{style=sidecaption}
+  \captionsetup{style=sidecaption}%
   \IfBooleanTF{#1}
   { % starred
     \begin{BlockClass}[border:none ; box-shadow:none]{marginblock}
-    \caption*{#4}
+    \caption*{#4}%
     \end{BlockClass}
   }
   { % unstarred
@@ -67172,11 +75305,11 @@
 %    \begin{macrocode}
 \NewDocumentEnvironment{KFLTsidenotes at marginfloat}{O{-1.2ex} m}
 {% start
-\LWR at BlockClassWP{float:right; width:2in; margin:10pt}{}{marginblock}%
-\captionsetup{type=#2}%
+    \LWR at BlockClassWP{float:right; width:2in; margin:10pt}{}{marginblock}%
+    \renewcommand*{\@captype}{#2}%
 }
 {%
-\endLWR at BlockClassWP%
+    \endLWR at BlockClassWP%
 }
 
 \RenewDocumentEnvironment{marginfigure}{o}
@@ -67232,9 +75365,89 @@
 %
 %
 %
+% \iffalse
+%<*simplebnf>
+% \fi
 %
+% \part{lwarp-simplebnf.sty}
 %
+% \section{simplebnf}
+%
+% \credits{Jay Lee}
+%
+% \DescribePackage{simplebnf}
+% \pkg{simplebnf} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.893}{2020/10/29}{\pkg{simplebnf}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{simplebnf}[2020/09/01]
+%    \end{macrocode}
+%
+% The entire object is placed inside a \env{lateximage} whose
+% \attribute{alt} text is the \LaTeX\ source \acro{BNF} expression.
+%    \begin{macrocode}
+\ExplSyntaxOn
+
+\RenewDocumentEnvironment { bnfgrammar } { +b }
+  {
+    %% \l__input_seq is a list of term definitions.
+    \regex_split:nnN { ;; } { #1 } \l__input_seq
+    \begin{center}
+    \begin{lateximage}[#1]%     lwarp
+      \tl_set:Nn \l__table_tl
+        {
+          \begin{tabular}{lcll}
+        }
+    \bool_set_true:N \l_tmp_first_term % Is this the first term in this grammar?
+    \seq_map_inline:Nn \l__input_seq
+      {
+        %% \l__term_seq    - (term, rhses)...
+        %% \l__term_tl     - term
+        %% \l__keypairs_tl - rhses
+        \regex_split:nnN { ::= } { ##1 } \l__term_seq
+        \seq_pop_left:NN \l__term_seq \l__term_tl
+        \seq_pop_left:NN \l__term_seq \l__keypairs_tl
+
+        \regex_replace_once:nnN { ^\s+ } {} \l__term_tl
+
+        \bool_if:NTF \l_tmp_first_term
+          {
+            \bool_set_false:N \l_tmp_first_term
+          }
+          {
+            \tl_put_right:Nn \l__table_tl { \\ }
+          }
+        \tl_put_right:Nx \l__table_tl
+          {
+            \bnfexpr { \l__term_tl } & \g__simplebnf_defeq_tl &
+          }
+        %% \l__keypairs_seq - (rhs:annot | rhs)...
+        \seq_set_split:NnV \l__keypairs_seq { | } \l__keypairs_tl
+
+        \bool_set_true:N \l__first_rhs
+        \seq_map_function:NN \l__keypairs_seq \simplebnf_typeset_rhs:n
+      }
+
+    \tl_put_right:Nn \l__table_tl { \end{tabular} }
+    \tl_use:N \l__table_tl
+    \end{lateximage}%       lwarp
+    \end{center}
+  }
+  { }
+
+\ExplSyntaxOff
+%    \end{macrocode}
+%
 % \iffalse
+%</simplebnf>
+% \fi
+%
+%
+%
+% \iffalse
 %<*SIunits>
 % \fi
 %
@@ -67539,7 +75752,7 @@
 \CustomizeMathJax{\newcommand{\barn}{\mathrm{b}}}
 \CustomizeMathJax{\newcommand{\bbar}{\mathrm{bar}}}
 \CustomizeMathJax{\newcommand{\gal}{\mathrm{Gal}}}
-\CustomizeMathJax{\newcommand{\angstrom}{\mathrm{\unicode{x00C5}}}}
+\CustomizeMathJax{\newcommand{\angstrom}{\mathrm{\unicode{x212B}}}}
 \CustomizeMathJax{\newcommand{\rperminute}{\mathrm{r}\per\minute}}
 \CustomizeMathJax{\newcommand{\rpersecond}{\mathrm{r}\per\second}}
 \CustomizeMathJax{\newcommand{\squaremetre}{\power{\metre}{2}}}
@@ -67554,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}}
@@ -67568,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}}
@@ -67597,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}}
@@ -67612,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}
 %
@@ -67681,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
 %
@@ -67713,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.}
@@ -67949,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
@@ -67961,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
@@ -67973,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
@@ -67983,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
@@ -67998,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
@@ -68015,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.)
@@ -68025,21 +76318,249 @@
 %    \begin{macrocode}
 \begin{warpMathJax}
 \LWR at infoprocessingmathjax{siunitx}
+%    \end{macrocode}
+%
+% \changes{v0.89}{2020/07/23}{\pkg{siunitx}: Fix: \brand{MathJax} for \cs{tothe}, \cs{raiseto}.}
+%    \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}}}
-\CustomizeMathJax{\newcommand{\numrange}[3][]{\mathrm{#2~-- #3}}}
+%    \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{\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~-- #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}}}
@@ -68089,8 +76610,8 @@
 \CustomizeMathJax{\newcommand{\electronvolt}{\mathrm{eV}}}
 \CustomizeMathJax{\newcommand{\elementarycharge}{\mathit{e}}}
 \CustomizeMathJax{\newcommand{\hartree}{\mathit{E}_{\mathrm{h}}}}
-\CustomizeMathJax{\newcommand{\planckbar}{\mathit{\unicode{x0127}}}}
-\CustomizeMathJax{\newcommand{\angstrom}{\mathrm{\unicode{x00C5}}}}
+\CustomizeMathJax{\newcommand{\planckbar}{\mathit{\unicode{x210F}}}}
+\CustomizeMathJax{\newcommand{\angstrom}{\mathrm{\unicode{x212B}}}}
 \CustomizeMathJax{\let\LWRorigbar\bar}
 \CustomizeMathJax{\newcommand{\bar}{\mathrm{bar}}}
 \CustomizeMathJax{\newcommand{\barn}{\mathrm{b}}}
@@ -68265,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
 %
@@ -68278,6 +77175,7 @@
 % \pkg{slantsc} is emulated for \HTML, and used as-is for print output.
 %
 % \changes{v0.72}{2019/05/27}{\pkg{slantsc}: Added.}
+% \changes{v0.84}{2020/04/11}{\pkg{slantsc}: \cs{FilenameNullfiy}.}
 %
 % \codehtml
 %
@@ -68289,10 +77187,8 @@
 \newcommand*{\LWR at HTML@noscshape}{}
 \LWR at formatted{noscshape}
 
-\newcommand*{\LWR at null@noscshape}{}
-
-\appto{\LWR at nullfonts}{%
-\LetLtxMacro\noscshape\LWR at null@noscshape%
+\FilenameNullify{%
+    \LetLtxMacro\noscshape\@empty%
 }
 %    \end{macrocode}
 %
@@ -68547,8 +77443,70 @@
 %
 %
 %
+% \iffalse
+%<*splitbib>
+% \fi
 %
+% \part{lwarp-splitbib.sty}
+%
+% \section{splitbib}
+%
+% \credits{Nicolas Markey}
+%
+% \DescribePackage{splitbib}
+% \pkg{splitbib} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.87}{2020/05/17}{\pkg{splitbib}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{splitbib}[2005/12/22]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\def\NMSB at stylebox#1#2{%
+\begin{BlockClass}[text-align:center ; border: 1px solid black]{splitbibbox}
+    \csname SB\NMSB at level font\endcsname{\LWR at textcurrentfont{#1#2}}
+\end{BlockClass}
+}
+
+\def\NMSB at stylebar#1#2{%
+\begin{BlockClass}[%
+    text-align:center ;
+    border-top: 1px solid black ;
+    border-bottom: 1px solid black ;
+]{splitbibbar}
+    \csname SB\NMSB at level font\endcsname{\LWR at textcurrentfont{#1#2}}
+\end{BlockClass}
+}
+
+\def\NMSB at styledash#1#2{%
+\begin{BlockClass}[%
+    text-align:center ;
+]{splitbibdash}
+    \csname SB\NMSB at level font\endcsname{\LWR at textcurrentfont{---~#1#2~---}}
+\end{BlockClass}
+}
+
+\def\NMSB at stylenone#1#2{%
+    \par
+}
+
+\def\NMSB at stylesimple#1#2{%
+\par
+ \csname SB\NMSB at level font\endcsname{\LWR at textcurrentfont{#1#2}}
+\par
+}
+%    \end{macrocode}
+%
 % \iffalse
+%</splitbib>
+% \fi
+%
+%
+%
+% \iffalse
 %<*splitidx>
 % \fi
 %
@@ -68598,7 +77556,7 @@
     \csname index@#1 at hook\endcsname
 %     \expandafter\ifx\csname @@wrsindex\endcsname\relax
     \addtocounter{LWR at autoindex}{1}%                    lwarp
-    \LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%    lwarp
+    \label{LWRindex-\arabic{LWR at autoindex}}%    lwarp
 %       \@@@wrsindex{#1}{{\@tempa}{\thepage}}%
       \@@@wrsindex{#1}{{\@tempa}{\arabic{LWR at autoindex}}}%
 %     \else
@@ -68964,6 +77922,7 @@
 % \end{sourceverb}
 %
 % \changes{v0.81}{2020/02/28}{\pkg{statex2}: Added.}
+% \changes{v0.87}{2020/05/31}{\pkg{statex2}: \cs{pBin} exponent.}
 %
 % \codehtml
 %
@@ -69080,7 +78039,7 @@
     \I[#1]{\{0, 1,\., #2\}}, \where #3>0,\; #4>0 \and n=1, 2,\.}%
 }}
 \CustomizeMathJax{\newcommand{\pBin}[3][x]{%
-    \mb{\binom{#2}{#1}#3^#1} \LWRwrapparen{\mb{{1-#3}^{#2-#1}}}%
+    \mb{\binom{#2}{#1}#3^{#1}} \LWRwrapparen{\mb{{1-#3}^{#2-#1}}}%
     \mb{\I[#1]{\{0,1,\.,#2\}}, \where p \in (0, 1) \and n=1, 2,\.}%
 }}
 \CustomizeMathJax{\newcommand{\pPoi}[2][x]{%
@@ -69175,6 +78134,386 @@
 %
 %
 % \iffalse
+%<*statistics>
+% \fi
+%
+% \part{lwarp-statistics.sty}
+%
+% \section{statistics}
+%
+% \credits{Julien Rivaud}
+%
+% \DescribePackage{statistics}
+% \pkg{statistics} is patched for use by \pkg{lwarp}.
+%
+% The \pkg{statistics} documentation examples include the use of the \cs{color} macro.
+% \trouble[\cs{color}]{statistics=\pkg{statistics}}
+%  Use \cs{textcolor} instead.
+%
+% The \pkg{statistics} package uses math \env{array}s, but the
+% \watchout[math]
+% \HTML\ version uses text \env{tabular}s to allow text copy/paste.
+% If math is required, use \cs{ensuremath} or \cs{(} and \cs{)} as needed.
+%
+% Pre/postline is ignored, and \cs{hline} is used instead.
+% Each table will have an \cs{hline} above and below as a frame.
+%
+% \changes{v0.893}{2020/11/11}{\pkg{statistics}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{statistics}[2019/09/29]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\ExplSyntaxOn
+%    \end{macrocode}
+%
+% ^^A % For lateximage output using math array instead of text tabular:
+% ^^A % \RenewDocumentCommand \StatsTable { +O{} +m +O{} } {
+% ^^A % \begin{lateximage}[StatsTable]
+% ^^A %     \group_begin:
+% ^^A %     \cs_if_exist:NF \firsthline {
+% ^^A %         \cs_set_eq:NN \firsthline \hline
+% ^^A %     }
+% ^^A %     \cs_if_exist:NF \lasthline {
+% ^^A %         \cs_set_eq:NN \lasthline \hline
+% ^^A %     }
+% ^^A %     \cs_if_exist:NF \IN {
+% ^^A %         \cs_set_eq:NN \IN \__statistics_IN:w
+% ^^A %     }
+% ^^A %     \__statistics_setup:nn { table } { #1, #3 }
+% ^^A %     \tl_if_single:nTF { #2 } {
+% ^^A %         \cs_if_exist:NF #2 { #2 }
+% ^^A %         \tl_set_eq:NN \l__statistics_data_tl #2
+% ^^A %     }{
+% ^^A %         \tl_set:Nn \l__statistics_data_tl { #2 }
+% ^^A %     }
+% ^^A %     \cs_set_nopar:Npn \getvalue {
+% ^^A %         \seq_item:Nn \l__statistics_store_values_seq
+% ^^A %     }
+% ^^A %     \cs_set_nopar:Npn \getcount {
+% ^^A %         \seq_item:Nn \l__statistics_store_count_seq
+% ^^A %     }
+% ^^A %     \fp_zero:N \l__statistics_total_fp
+% ^^A %     \keyval_parse:NNV
+% ^^A %             \__statistics_table_count:n
+% ^^A %             \__statistics_table_count:nn
+% ^^A %             \l__statistics_data_tl
+% ^^A %     \__statistics_table_start:
+% ^^A %     \fp_zero:N \l__statistics_table_prevICF_fp
+% ^^A %     \keyval_parse:NNV
+% ^^A %             \__statistics_table_make:n
+% ^^A %             \__statistics_table_make:nn
+% ^^A %             \l__statistics_data_tl
+% ^^A %     \__statistics_table_end:
+% ^^A %     \group_end:
+% ^^A % \end{lateximage}
+% ^^A % }
+%
+%
+% To use text \env{tabular} instead of math \env{array}.
+% This allows text copy/paste of the results.
+%
+%
+% In the following, all changes for the Lwarp package are labelled "lwarp".
+%
+% Redefined using the lwarp version of |&|:
+%    \begin{macrocode}
+\StartDefiningTabulars%     lwarp
+\cs_set_protected_nopar:Nn \__statistics_table_make:nn {
+    \int_compare:nT
+            { 0 < \l__statistics_table_maxcols_int
+                = \l__statistics_nbvals_int } {
+        \__statistics_table_end:
+        \tl_use:N \l__statistics_table_sep_tl
+        \__statistics_table_start:
+    }
+    \int_incr:N \l__statistics_nbvals_int
+    \int_incr:N \l__statistics_currange_int
+    \fp_add:Nn \l__statistics_curtotal_fp { #2 }
+    \__statistics_set_if_shown:N \l_tmpa_bool
+    \tl_set:Nx \l_tmpa_tl {
+        \exp_not:n { & \tl_set:Nn \currentcolumn } {
+            \int_use:N \l__statistics_currange_int
+        }
+    }
+    \bool_if:NTF \l_tmpa_bool {
+        \tl_put_right:Nn \l_tmpa_tl
+            {\__statistics_table_shown_format:n}
+    }{
+        \tl_put_right:Nn \l_tmpa_tl
+            {\__statistics_table_hidden_format:n}
+    }
+    \seq_put_right:Nn \l__statistics_store_values_seq { #1 }
+    \bool_if:NT \l__statistics_table_values_bool {
+        \tl_put_right:Nx \l__statistics_table_values_tl {
+            \exp_not:V \l_tmpa_tl {
+                \exp_not:n {
+                    \__statistics_table_values_format:n { #1 }
+                }
+            }
+        }
+    }
+    \seq_put_right:Nx \l__statistics_store_counts_seq { \fp_eval:n {#2} }
+    \bool_if:NT \l__statistics_table_counts_bool {
+        \tl_put_right:Nx \l__statistics_table_counts_tl {
+            \exp_not:V \l_tmpa_tl {
+                \exp_not:n {
+                    \__statistics_table_counts_format:n {
+                        { \__statistics_table_allcounts_format:n { #2 } }
+                    }
+                }
+            }
+        }
+    }
+    \bool_if:NT \l__statistics_table_icc_bool {
+        \tl_put_right:Nx \l__statistics_table_icc_tl {
+            \exp_not:V \l_tmpa_tl {
+                \exp_not:n { \__statistics_table_icc_format:n }
+                {
+                    \exp_not:n{ \__statistics_table_allcounts_format:n }
+                        { \fp_use:N \l__statistics_curtotal_fp }
+                }
+            }
+        }
+    }
+    \bool_if:NT \l__statistics_table_dcc_bool {
+        \tl_put_right:Nx \l__statistics_table_dcc_tl {
+            \exp_not:V \l_tmpa_tl {
+                \exp_not:n { \__statistics_table_dcc_format:n }
+                {
+                    \exp_not:n{ \__statistics_table_allcounts_format:n }
+                    {
+                        \fp_eval:n {
+                            \l__statistics_total_fp
+                                - \l__statistics_curtotal_fp
+                                + #2
+                        }
+                    }
+                }
+            }
+        }
+    }
+    \fp_set:Nn \l__statistics_table_curICF_fp {
+        round(\l__statistics_curtotal_fp
+                / \l__statistics_total_fp,
+              \l__statistics_table_round_int)
+    }
+    \bool_if:NT \l__statistics_table_frequencies_bool {
+        \tl_put_right:Nx \l__statistics_table_frequencies_tl {
+            \exp_not:V \l_tmpa_tl {
+                \exp_not:n { \__statistics_table_frequencies_format:n }
+                {
+                    \exp_not:n{ \__statistics_table_allfreqs_format:n }
+                    {
+                        \fp_eval:n {
+                            \l__statistics_table_curICF_fp
+                                - \l__statistics_table_prevICF_fp
+                        }
+                    }
+                }
+            }
+        }
+    }
+    \bool_if:NT \l__statistics_table_icf_bool {
+        \tl_put_right:Nx \l__statistics_table_icf_tl {
+            \exp_not:V \l_tmpa_tl {
+                \exp_not:n { \__statistics_table_icf_format:n }
+                {
+                    \exp_not:n{ \__statistics_table_allfreqs_format:n }
+                        { \fp_to_decimal:N \l__statistics_table_curICF_fp }
+                }
+            }
+        }
+    }
+    \bool_if:NT \l__statistics_table_dcf_bool {
+        \tl_put_right:Nx \l__statistics_table_dcf_tl {
+            \exp_not:V \l_tmpa_tl {
+                \exp_not:n { \__statistics_table_dcf_format:n }
+                {
+                    \exp_not:n{ \__statistics_table_allfreqs_format:n }
+                    {
+                        \fp_eval:n {
+                            1 - \l__statistics_table_prevICF_fp
+                        }
+                    }
+                }
+            }
+        }
+    }
+    \fp_set_eq:NN
+        \l__statistics_table_prevICF_fp
+        \l__statistics_table_curICF_fp
+}
+\StopDefiningTabulars%  lwarp
+%    \end{macrocode}
+
+
+% Redefined using \env{tabular}.
+% Also, preline and postline do not work correctly with \pkg{lwarp},
+% which looks for certain tokens to detect \cs{hline}s, so \cs{hline}
+% is used instead.
+%    \begin{macrocode}
+\cs_set_protected_nopar:Nn \__statistics_table_end: {
+    \tl_set:Nx \l__statistics_table_preamble_tl {
+%         \exp_not:n { \begin{array}[ }
+        \exp_not:n {\begin{tabular}[ }%      lwarp
+            \exp_not:V \l__statistics_table_valign_tl
+        \exp_not:n { ] }
+                { \exp_not:V \l__statistics_table_headcoltype_tl
+                  \prg_replicate:nn { \l__statistics_nbvals_int }
+                    { \exp_not:V \l__statistics_table_coltype_tl } }
+    }
+    \seq_clear:N \l__statistics_table_contents_seq
+    \clist_map_inline:nn { values, counts, icc, dcc, frequencies, icf, dcf } {
+        \bool_if:cT { l__statistics_table_##1_bool } {
+            \seq_put_right:Nv
+                    \l__statistics_table_contents_seq
+                    { l__statistics_table_##1_tl }
+        }
+    }
+%     $
+    \tl_use:N \l__statistics_table_preamble_tl
+        \hline%      lwarp
+%         \l__statistics_table_preline_tl
+        \seq_use:Nn
+                \l__statistics_table_contents_seq
+                { \l__statistics_table_newline_tl }
+        \\
+%         \l__statistics_table_postline_tl
+        \hline%      lwarp
+%     \end{array}$
+    \end{tabular}%      lwarp
+}
+%    \end{macrocode}
+
+
+% With \pkg{lwarp}, \cs{ensuremath} creates an \SVG\ image, but its
+% \attribute{alt} tag does not contain the text of the contents
+% for copy/paste, since these expressions are usually not simple
+% text.
+% For the \pkg{statistics} package, copy/paste is restored by
+% using text instead of math output.
+%
+% For the leftmost column.
+% Redefined to use text output:
+%    \begin{macrocode}
+\cs_set_protected_nopar:Nn \__statistics_table_start: {
+    \int_zero:N \l__statistics_nbvals_int
+    \clist_pop:NNT \l__statistics_table_maxcols_clist \l_tmpa_tl {
+        \int_set:Nn \l__statistics_table_maxcols_int { \l_tmpa_tl }
+    }
+    \clist_map_inline:nn { values, counts, frequencies, icc, icf, dcc, dcf } {
+        \tl_set:cx { l__statistics_table_##1_tl } {
+%             \exp_not:N \ensuremath {
+                \exp_not:N \hbox {
+                    \exp_not:c { l__statistics_table_##1_name_tl }
+                }
+%             }
+        }
+    }
+}
+%    \end{macrocode}
+
+% For the first row.
+% Redefined to use text output:
+%    \begin{macrocode}
+\RenewDocumentCommand \__statistics_IN:w { m u{;} u{;} m } {
+%     \ensuremath{ \left#1 \num{#2} \mathbin{;} \num{#3} \right#4 }
+    #1 #2 ; #3 #4%      lwarp
+}
+
+\__statistics_setup:nn { table } {
+%     values/format = \ensuremath{#1},
+    values/format = {#1},%      lwarp
+}
+%    \end{macrocode}
+%
+% Added \cs{ExplSyntaxOn/Off} to avoid errors.
+% (In once instance, a double subscript error appeared.)
+%    \begin{macrocode}
+\RenewDocumentCommand \StatsGraph { +O{} +m +O{} } {
+    \group_begin:
+    \int_gincr:N \g__statistics_graph_last_int
+    \tl_set:Nx \l_tmpa_tl {
+        \exp_not:n { g__statistics_graph_xstep_ }
+        \int_use:N \g__statistics_graph_last_int
+        \exp_not:n { _tl }
+    }
+    \tl_if_exist:cTF { \l_tmpa_tl } {
+        \fp_gset:Nn \g__statistics_graph_xstep_fp
+            { \tl_use:c {\l_tmpa_tl} }
+    }{
+        \fp_gset:Nn \g__statistics_graph_xstep_fp { \c_one_int }
+    }
+    \__statistics_setup:nn { graph } { #1, #3 }
+    \tl_if_single:nTF { #2 } {
+        \cs_if_exist:NF #2 { #2 }
+        \tl_set_eq:NN \l__statistics_data_tl #2
+    }{
+        \tl_set:Nn \l__statistics_data_tl { #2 }
+    }
+    \fp_zero:N \l__statistics_graph_maxheight_fp
+    \fp_set:Nn \l__statistics_graph_minvalue_fp {inf}
+    \fp_set:Nn \l__statistics_graph_maxvalue_fp {-inf}
+    \fp_zero:N \l__statistics_total_fp
+    \int_zero:N \l__statistics_nbvals_int
+    \bool_set_true:N \l__statistics_graph_allranges_bool
+    \keyval_parse:NNV
+            \__statistics_graph_prepare:n
+            \__statistics_graph_prepare:nn
+            \l__statistics_data_tl
+    \tl_clear:N \l__statistics_graph_tikzdata_tl
+    \tl_clear:N \l__statistics_graph_tikzinfo_tl
+    \int_zero:N \l__statistics_currange_int
+    \bool_if:NTF \l__statistics_graph_allranges_bool {
+        \bool_if:NTF \l__statistics_graph_cumulative_bool {
+ \ExplSyntaxOn%     lwarp
+            \__statistics_graph_dopicture_cumulative:
+ \ExplSyntaxOff%    lwarp
+        }{
+ \ExplSyntaxOn%     lwarp
+            \__statistics_graph_dopicture_hist:
+ \ExplSyntaxOff%    lwarp
+        }
+    }{
+ \ExplSyntaxOn%    lwarp
+        \__statistics_graph_dopicture_comb:
+ \ExplSyntaxOff%    lwarp
+    }
+    \iow_now:Nx \@auxout {
+        \exp_not:n {
+            \ExplSyntaxOn
+            \tl_gset:cn
+        }
+        {
+            \exp_not:n {g__statistics_graph_xstep_}
+            \int_use:N \g__statistics_graph_last_int
+            \exp_not:n {_tl}
+        }
+        {
+            \fp_to_decimal:N \g__statistics_graph_xstep_fp
+        }
+        \exp_not:n {
+            \ExplSyntaxOff
+        }
+    }
+    \group_end:
+}
+
+\ExplSyntaxOff
+%    \end{macrocode}
+%
+% \iffalse
+%</statistics>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*statmath>
 % \fi
 %
@@ -69189,6 +78528,8 @@
 % is emulated for \brand{MathJax}.
 %
 % \changes{v0.81}{2020/02/28}{\pkg{statmath}: Added.}
+% \changes{v0.89}{2020/09/01}{\pkg{statmath}: Fixed \optn{abcbm},
+%                                   uses \pkg{lwarp-common-mathjax-letters}.}
 %
 % \codehtml
 %
@@ -69197,11 +78538,17 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
 \begin{warpMathJax}
 \LWR at infoprocessingmathjax{statmath}
 
-\CustomizeMathJax{\let\abcbf\mathbf}
+\ifdefequal{\abcbf}{\mathbf}
+    {\CustomizeMathJax{\newcommand{\abcbf}[1]{\mathbf{#1}}}}
+    {\CustomizeMathJax{\newcommand{\abcbf}[1]{\boldsymbol{#1}}}}
+
 \CustomizeMathJax{\newcommand{\greekbf}[1]{\boldsymbol{#1}}}
+
 \CustomizeMathJax{\newcommand{\bfA}{\abcbf A}}
 \CustomizeMathJax{\newcommand{\bfB}{\abcbf B}}
 \CustomizeMathJax{\newcommand{\bfC}{\abcbf C}}
@@ -69254,47 +78601,12 @@
 \CustomizeMathJax{\newcommand{\bfx}{\abcbf x}}
 \CustomizeMathJax{\newcommand{\bfy}{\abcbf y}}
 \CustomizeMathJax{\newcommand{\bfz}{\abcbf z}}
-\CustomizeMathJax{\newcommand{\bfalpha}{\greekbf \alpha}}
-\CustomizeMathJax{\newcommand{\bfbeta}{\greekbf \beta}}
-\CustomizeMathJax{\newcommand{\bfdelta}{\greekbf \delta}}
-\CustomizeMathJax{\newcommand{\bfepsilon}{\greekbf \epsilon}}
-\CustomizeMathJax{\newcommand{\bfvarepsilon}{\greekbf \varepsilon}}
-\CustomizeMathJax{\newcommand{\bfzeta}{\greekbf \zeta}}
-\CustomizeMathJax{\newcommand{\bfeta}{\greekbf \eta}}
-\CustomizeMathJax{\newcommand{\bftheta}{\greekbf \theta}}
-\CustomizeMathJax{\newcommand{\bfvartheta}{\greekbf \vartheta}}
-\CustomizeMathJax{\newcommand{\bfgamma}{\greekbf \gamma}}
-\CustomizeMathJax{\newcommand{\bfkappa}{\greekbf \kappa}}
-\CustomizeMathJax{\newcommand{\bflambda}{\greekbf \lambda}}
-\CustomizeMathJax{\newcommand{\bfmu}{\greekbf \mu}}
-\CustomizeMathJax{\newcommand{\bfnu}{\greekbf \nu}}
-\CustomizeMathJax{\newcommand{\bfxi}{\greekbf \xi}}
-\CustomizeMathJax{\newcommand{\bfpi}{\greekbf \pi}}
-\CustomizeMathJax{\newcommand{\bfvarpi}{\greekbf \varpi}}
-\CustomizeMathJax{\newcommand{\bfrho}{\greekbf \rho}}
-\CustomizeMathJax{\newcommand{\bfvarrho}{\greekbf \varrho}}
-\CustomizeMathJax{\newcommand{\bfsigma}{\greekbf \sigma}}
-\CustomizeMathJax{\newcommand{\bfvarsigma}{\greekbf \varsigma}}
-\CustomizeMathJax{\newcommand{\bftau}{\greekbf \tau}}
-\CustomizeMathJax{\newcommand{\bfupsilon}{\greekbf \upsilon}}
-\CustomizeMathJax{\newcommand{\bfphi}{\greekbf \phi}}
-\CustomizeMathJax{\newcommand{\bfvarphi}{\greekbf \varphi}}
-\CustomizeMathJax{\newcommand{\bfchi}{\greekbf \chi}}
-\CustomizeMathJax{\newcommand{\bfpsi}{\greekbf \psi}}
-\CustomizeMathJax{\newcommand{\bfomega}{\greekbf \omega}}
-\CustomizeMathJax{\newcommand{\bfiota}{\greekbf \iota}}
-\CustomizeMathJax{\newcommand{\bfGamma}{\greekbf \Gamma}}
-\CustomizeMathJax{\newcommand{\bfDelta}{\greekbf \Delta}}
-\CustomizeMathJax{\newcommand{\bfTheta}{\greekbf \Theta}}
-\CustomizeMathJax{\newcommand{\bfLambda}{\greekbf \Lambda}}
-\CustomizeMathJax{\newcommand{\bfXi}{\greekbf \Xi}}
-\CustomizeMathJax{\newcommand{\bfPi}{\greekbf \Pi}}
-\CustomizeMathJax{\newcommand{\bfSigma}{\greekbf \Sigma}}
-\CustomizeMathJax{\newcommand{\bfUpsilon}{\greekbf \Upsilon}}
-\CustomizeMathJax{\newcommand{\bfPhi}{\greekbf \Phi}}
-\CustomizeMathJax{\newcommand{\bfPsi}{\greekbf \Psi}}
-\CustomizeMathJax{\newcommand{\bfOmega}{\greekbf \Omega}}
+
+\LWR at mathjax@addgreek at l@bfit{bf}{}% Greek lowercase bold face italic
+\LWR at mathjax@addgreek at u@bfup*{bf}{}% Greek uppercase bold face upright, cap macros.
+
 \CustomizeMathJax{\newcommand{\bfzero}{\greekbf 0}}
+
 \CustomizeMathJax{\DeclareMathOperator{\cov}{Cov}}
 \CustomizeMathJax{\DeclareMathOperator{\E}{E}}
 \CustomizeMathJax{\DeclareMathOperator{\V}{V}}
@@ -69343,13 +78655,11 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\begin{warpHTML}
 \renewcommand{\phase}[2][]{%
     \begin{lateximage}*[steinmetz\{\detokenize{#2}\}]
     \ensuremath{\underline{/#2}}
     \end{lateximage}
 }
-\end{warpHTML}
 
 \begin{warpMathJax}
 \CustomizeMathJax{\newcommand{\phase}[2][]{\underline{/#2}}}
@@ -69423,11 +78733,12 @@
 %
 % \changes{v0.67}{2019/02/17}{\pkg{struktex}: Added.}
 % \changes{v0.74}{2019/09/01}{\pkg{struktex}: \attribute{alt} text.}
+% \changes{v0.893}{2020/11/26}{\pkg{struktex}: Removed package date.}
 %
 % \codehtml
 %
 %    \begin{macrocode}
-\LWR at ProvidesPackagePass{struktex}[2018/06/04]
+\LWR at ProvidesPackagePass{struktex}
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -69482,23 +78793,18 @@
 % In print mode the minipages are used to place the items next to each other.
 % In \HTML\ they are placed side-by-side automatically.
 %    \begin{macrocode}
-\ifdef{\subcaption at minipage}{
-    \xpatchcmd{\subcaption at minipage}
-        {\minipage}
-        {\minipagefullwidth\minipage}
-        {}
-        {\LWR at patcherror{subcaption}{subcaption at minipage}}
-}{}
+\xpretocmd{\subcaption at iiminipage}
+    {\minipagefullwidth}
+    {}
+    {\LWR at patcherror{subcaption}{subcaption at iiminipage}}
 %    \end{macrocode}
 %
 % Likewise for a \cs{subcaptionbox}:
 %    \begin{macrocode}
-\ifdef{\subcaptionbox}{
-    \xpretocmd{\subcaptionbox}
-        {\minipagefullwidth}
-        {}
-        {\LWR at patcherror{subcaption}{subcaptionbox}}
-}{}
+\xpretocmd{\subcaptionbox}
+    {\minipagefullwidth}
+    {}
+    {\LWR at patcherror{subcaption}{subcaptionbox}}
 %    \end{macrocode}
 %
 % \iffalse
@@ -69683,8 +78989,8 @@
 %         {\box0}%
         {
 % 			\parbox[t]{\the\@tempdima}{%
-\LWR at traceinfo{sfsubcap B1}% lwarp
-            \LWR at figcaption% lwarp
+\LWR at traceinfo{sfsubcap B1}%    lwarp
+            \LWR at figcaption%    lwarp
             \caption at make
                 {\@nameuse{sub\@captype name}}%
                 {\@nameuse{thesub\@captype}}%
@@ -69692,8 +78998,8 @@
 %    \end{macrocode}
 % \changes{v0.45}{2017/12/18}{\pkg{subfig}: Fix for subcaption end tag.}
 %    \begin{macrocode}
-            \endLWR at figcaption% lwarp
-\LWR at traceinfo{sfsubcap B2}% lwarp
+            \endLWR at figcaption%     lwarp
+\LWR at traceinfo{sfsubcap B2}%        lwarp
 % 			}%
         }%
         {\dimen@\ht0%
@@ -69758,7 +79064,7 @@
 % comes from the |sub@<label>|:
 %    \begin{macrocode}
 \renewcommand{\sf at subref}[1]{%
-\LWR at subnewref{#1}{sub@#1}%
+    \LWR at subnewref{#1}{sub@#1}%
 }
 %    \end{macrocode}
 % \end{noindmacro}
@@ -70055,11 +79361,12 @@
 % \pkg{svg} is patched for use by \pkg{lwarp}.
 %
 % \changes{v0.79}{2020/01/05}{\pkg{svg}: Added.}
+% \changes{v0.893}{2020/11/26}{\pkg{svg}: Updated date to v2.02j.}
 %
 % \codehtml
 %
 %    \begin{macrocode}
-\LWR at ProvidesPackagePass{svg}[2019/10/22]
+\LWR at ProvidesPackagePass{svg}[2020/10/23]
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -70091,9 +79398,51 @@
 %
 %
 %
+% \iffalse
+%<*swfigure>
+% \fi
 %
+% \part{lwarp-swfigure.sty}
 %
+% \section{swfigure}
+%
+% \credits{Claudio Beccari}
+%
+% \DescribePackage{swfigure}
+% \pkg{swfigure} is emulated.
+%
+% \changes{v0.893}{2020/11/24}{\pkg{swfigure}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackageDrop{swfigure}[2020-11-10]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\NewDocumentEnvironment{DFimage}%
+  {O{SW} m O{#4} m o D(){0.8} D<>{0} D||{0.25} D!!{}}%
+{%
+    \begin{figure}
+    \centering
+    \includegraphics{#2}
+    \caption[#3]{#4}
+    \IfValueT{#5}{\label{#5}}
+    \end{figure}
+}%
+{}%
+%    \end{macrocode}
+%
 % \iffalse
+%</swfigure>
+% \fi
+%
+%
+%
+%
+%
+%
+% \iffalse
 %<*syntonly>
 % \fi
 %
@@ -70572,6 +79921,518 @@
 %
 %
 % \iffalse
+%<*tcolorbox>
+% \fi
+%
+% \part{lwarp-tcolorbox.sty}
+%
+% \section{tcolorbox}
+%
+% \credits{Thomas F. Sturm}
+%
+% \DescribePackage{tcolorbox}
+% \pkg{tcolorbox} is patched for use by \pkg{lwarp}.
+%
+% See \cref{sec:limitstcolorbox} for limitations.
+%
+% \changes{v0.88}{2020/06/25}{\pkg{tcolorbox}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{tcolorbox}[2020/04/28]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\newbool{LWR at havetcblower}
+\boolfalse{LWR at havetcblower}
+%    \end{macrocode}
+%
+% Colors are supported via \HTML\ styles:
+%    \begin{macrocode}
+\newcommand{\LWR at tcolorbox@findcolors}{%
+    \convertcolorspec{named}{tcbcolback}{HTML}\LWR at tcbcolback
+    \convertcolorspec{named}{tcbcolframe}{HTML}\LWR at tcbcolframe
+    \iftcb at titlefilled%
+        \convertcolorspec{named}{tcbcolbacktitle}{HTML}\LWR at tcbcolbacktitle
+    \else
+        \convertcolorspec{named}{tcbcolframe}{HTML}\LWR at tcbcolbacktitle
+    \fi
+    \convertcolorspec{named}{tcbcoltitle}{HTML}\LWR at tcbcoltitle
+    \convertcolorspec{named}{tcbcolupper}{HTML}\LWR at tcbcolupper
+    \convertcolorspec{named}{tcbcollower}{HTML}\LWR at tcbcollower
+}
+
+\newcommand*{\LWR at tcolorbox@titlecolorstyles}{%
+    border-top: 1px solid \LWR at origpound\LWR at tcbcolframe ;
+    border-bottom: 1px solid \LWR at origpound\LWR at tcbcolframe ;
+    background: \LWR at origpound\LWR at tcbcolbacktitle ;
+    color: \LWR at origpound\LWR at tcbcoltitle ;
+}
+%    \end{macrocode}
+%
+% The title is placed inside its own \element{div} of class \optn{tcolorboxtitle}.
+%    \begin{macrocode}
+\newcommand*{\LWR at showtitle@}[1]{%
+    \begin{BlockClass}[
+        \LWR at tcolorbox@titlecolorstyles
+    ]{tcolorboxtitle}
+%                     \cmdKV at LWRtcolorbox@title\par
+    \kvtcb at before@title#1\kvtcb at after@title
+    \end{BlockClass}
+}
+%    \end{macrocode}
+%
+% If no title, a non-breakable space is used to take some vertical space.
+%    \begin{macrocode}
+\newcommand*{\LWR at showtitle}[1]{%
+    \iftcb at titlevisible
+    \LWR at showtitle@{#1}
+    \else
+    \LWR at showtitle@{~}
+    \fi
+}
+
+\newcommand*{\LWR at tcolorbox@dophantom}{%
+%     \sbox\tcb at phantombox{\kvtcb at phantom}%
+%     \iftcb at hasPhantom%
+%         \box\tcb at phantombox%
+%         \tcb at hasPhantomfalse%
+%     \fi%
+    \kvtcb at phantom
+    \let\kvtcb at phantom\@empty%
+}
+%    \end{macrocode}
+%
+% The \env{tcolorbox} is placed inside
+% an external \element{div} of class \optn{\#1}, which
+% is \optn{tcolorbox} or \optn{tcolorbox inlineminipage}.
+% The upper and lower parts are placed into their own internal
+% \element{div}s of class \optn{tcolorboxupper} and \optn{tcolorboxlower}.
+%    \begin{macrocode}
+\newcommand*{\LWR at tcolorboxstart}[1]{
+    \LWR at tcolorbox@findcolors
+    \begin{BlockClass}[
+        border: 1px solid \LWR at origpound\LWR at tcbcolframe ;
+        background: \LWR at origpound\LWR at tcbcolback ;
+    ]{#1}
+    \LWR at tcolorbox@dophantom%
+    \ifdefvoid{\kvtcb at title}
+        {}
+        {
+            \LWR at showtitle{\kvtcb at title}
+        }
+    \begin{BlockClass}[
+        color: \LWR at origpound\LWR at tcbcolupper ;
+    ]{tcolorboxupper}
+}
+%    \end{macrocode}
+%
+% Floats enclose the \env{tcolorbox}.
+%    \begin{macrocode}
+\newcommand*{\LWR at tcolorbox@dostartfloat}{%
+    \ifx\kvtcb at float\@empty%
+%         \tcb at set@normal at unbroken@beforeafter%
+    \else%
+%         \edef\tcb at before@unbroken{%
+%             \noexpand\tcb at float@env at begin{tcbfloat}[\kvtcb at float]%
+%             \noexpand\kvtcb at everyfloat%
+%         }%
+%         \let\tcb at after@unbroken=\tcb at float@env at end%
+        \tcb at float@env at begin{tcbfloat}[\kvtcb at float]
+        \noexpand\kvtcb at everyfloat
+    \fi%
+}
+
+\newcommand*{\LWR at tcolorbox@doendfloat}{%
+    \ifx\kvtcb at float\@empty%
+    \else%
+        \tcb at float@env at end%
+    \fi%
+}
+%    \end{macrocode}
+%
+% Footnotes are handled via the main footnote mechanism, and
+% pending notes are printed before and after each \env{tcolorbox}.
+% Footnote numbering will not match the print output.
+%    \begin{macrocode}
+\renewenvironment{tcolorbox}[1][]
+    {
+        \ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}%
+        {
+            \PackageError{lwarp}
+                {%
+                    Lwarp cannot process a tcolorbox inside a lateximage\MessageBreak
+                    or SVG math.\MessageBreak
+                    Enter 'H' for possible solutions%
+                }
+                {%
+                    Use \protect\tcbox, \protect\tcboxmath, or
+                    \protect\tcbhighmath\space instead.\MessageBreak%
+                    (Inside math, you probably want to use these anyhow.)%
+                }
+        }{\relax}
+        \LWR at printpendingfootnotes
+        \tcb at layer@inc
+        \tcb at apply@box at options{#1}
+        \LWR at tcolorbox@dostartfloat%
+%         \tcbset{title=,#1}
+        \boolfalse{LWR at havetcblower}
+        \LWR at tcolorboxstart{tcolorbox}
+        \tcb at insert@before at upper%
+    }
+    {
+        \ifbool{LWR at havetcblower}{%
+            \tcb at insert@after at lower%
+        }{%
+            \tcb at insert@after at upper%
+        }%
+        \end{BlockClass}
+        \LWR at printpendingfootnotes
+        \tcb at layer@dec
+        \end{BlockClass}
+        \LWR at tcolorbox@doendfloat%
+    }
+%    \end{macrocode}
+%
+% For the lower part, the upper part is finished then the lower is started.
+% \cs{tcblower} is only temporarily defined where appropriate, so the \HTML\ version is
+% defined globally via \cs{newcommand} instead of \cs{renewcommand}.
+%    \begin{macrocode}
+\newcommand{\tcblower}{
+    \tcb at insert@after at upper%
+    \end{BlockClass}
+    \begin{BlockClass}[%
+        border-top: 1px dashed \LWR at origpound\LWR at tcbcolframe ;
+        color: \LWR at origpound\LWR at tcbcollower ;
+    ]{tcolorboxlower}
+    \tcb at insert@before at lower%
+}
+%    \end{macrocode}
+%
+% Starred and unstarred \cs{tcbline} are simple \cs{hrule}s.
+%    \begin{macrocode}
+\AtBeginDocument{
+\ifdef{\tcbline}{
+    \newcommand*{\LWR at sub@tcbline}{%
+        \begin{BlockClass}{hrule}
+        \end{BlockClass}
+    }
+    \newcommand{\LWR at HTML@tcbline}{\@ifstar\LWR at sub@tcbline\LWR at sub@tcbline}
+    \LWR at formatted{tcbline}
+}{}
+}
+
+\newcommand{\LWR at HTML@tcbox}[2][]{
+    \LWR at printpendingfootnotes
+    \LWR at tcolorbox@dostartfloat%
+    \begingroup
+    \tcb at layer@inc
+    \tcb at apply@box at options{#1}
+%     \tcbset{title=,#1}
+    \boolfalse{LWR at havetcblower}
+    \LWR at tcolorboxstart{tcolorbox inlineminipage}
+    \tcb at insert@before at upper%
+    #2
+    \ifbool{LWR at havetcblower}{%
+        \tcb at insert@after at lower%
+    }{%
+        \tcb at insert@after at upper%
+    }%
+    \end{BlockClass}
+    \LWR at printpendingfootnotes
+    \end{BlockClass}
+    \tcb at layer@dec%
+    \endgroup%
+    \LWR at tcolorbox@dostartfloat%
+    \global\booltrue{LWR at minipagethispar}%
+}
+\LWR at formatted{tcbox}
+
+\appto\LWR at restoreMathJaxformatting{%
+    \renewcommand{\tcbox}[2][]{#2}%
+}
+%    \end{macrocode}
+%
+% Patches for the subtitle, which is placed inside a \element{div}
+% of class \optn{tcolorboxsubtitle}.
+%    \begin{macrocode}
+\xpatchcmd{\tcbsubtitle}
+    {\begingroup}
+    {\begingroup\let\kvtcb at title\relax\begin{BlockClass}{tcolorboxsubtitle}}
+    {}
+    {\LWR at patcherror{tcolorbox}{tcbsubtitle}}
+
+\xpatchcmd{\tcbsubtitle}
+    {\endgroup}
+    {\end{BlockClass}\endgroup}
+    {}
+    {\LWR at patcherror{tcolorbox}{tcbsubtitleB}}
+%    \end{macrocode}
+%
+% \cs{tcboxfit} is the same as \cs{tcbox}.
+%    \begin{macrocode}
+\AtBeginDocument{
+    \ifdef{\tcboxfit}{%
+        \let\LWR at HTML@tcboxfit\tcbox%
+        \LWR at formatted{tcboxfit}
+    }{}
+}
+%    \end{macrocode}
+%
+% \cs{tcbtitle} is patched to support the text font.
+%    \begin{macrocode}
+\LetLtxMacro\LWR at HTML@tcbtitle\tcbtitle
+\xpatchcmd{\LWR at HTML@tcbtitle}
+    {\kvtcb at before@title\tcbtitletext}
+    {\kvtcb at before@title\LWR at textcurrentfont{\LWR at textcurrentcolor{\tcbtitletext}}}
+    {}
+    {\LWR at patcherror{tcolorbox}{LWR at HTML@tcbtitle}}
+\LWR at formatted{tcbtitle}
+%    \end{macrocode}
+%
+% List-of:
+%    \begin{macrocode}
+\renewcommand*\l at tcolorbox[2]{\hypertocfloat{1}{tcolorbox}{lof}{#1}{#2}}
+%    \end{macrocode}
+%
+% Theorem limitations.
+% An error is printed if the document uses \optn{math}, \optn{ams equation}, etc.
+% \cs{tcboxmath} and \cs{tcbhighmath} are ignored for \HTML.
+%    \begin{macrocode}
+\AtBeginDocument{
+\pgfkeysifdefined{/tcb/libload/theorems}{
+
+    \def\LWR at HTML@tcb at hack@amsmath{%
+        \PackageError{lwarp}
+            {%
+                tcolorbox ``math'', ``ams equation'', and related\MessageBreak
+                are not supported.\MessageBreak
+                \protect\tcboxmath\space and
+                \protect\tcbhighmath\space are emulated.\MessageBreak
+                Enter 'H' for possible solutions%
+            }
+            {%
+                Remove tcolorbox math-related options, and instead\MessageBreak
+                use the usual math environments inside each tcolorbox.%
+            }
+    }
+    \LWR at formatted{tcb at hack@amsmath}
+
+    % Cause an error if using math:
+    \tcbset{%
+        math upper/.style={before upper*=\tcb at hack@amsmath,after upper*=$},%
+        math lower/.style={before lower*=\tcb at hack@amsmath,after lower*=$},%
+    }
+
+    \appto\LWR at restoreorigformatting{%
+    \tcbset{%
+        math upper/.style={before upper*=$\displaystyle,after upper*=$},%
+        math lower/.style={before lower*=$\displaystyle,after lower*=$},%
+    }%
+    }
+
+    \newcommand{\LWR at HTML@tcboxmath}[2][]{#2}
+    \LWR at formatted{tcboxmath}
+    \newcommand{\LWR at HTML@tcbhighmath}[2][]{#2}
+    \LWR at formatted{tcbhighmath}
+    \appto\LWR at restoreMathJaxformatting{%
+        \renewcommand{\tcboxmath}[2][]{#2}%
+        \renewcommand{\tcbhighmath}[2][]{#2}%
+    }
+}{}% theorems loaded
+}% AtBeginDocument
+%    \end{macrocode}
+%
+% For \brand{MathJax}:
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\tcbset}[1]{}}
+\CustomizeMathJax{\newcommand{\tcbsetforeverylayer}[1]{}}
+\CustomizeMathJax{\newcommand{\tcbox}[2][]{\boxed{\text{#2}}}}
+\CustomizeMathJax{\newcommand{\tcboxfit}[2][]{\boxed{#2}}}
+\CustomizeMathJax{\newcommand{\tcblower}{}}
+\CustomizeMathJax{\newcommand{\tcbline}{}}
+\CustomizeMathJax{\newcommand{\tcbtitle}{}}
+\CustomizeMathJax{\newcommand{\tcbsubtitle[2][]{\mathrm{#2}}}}
+\CustomizeMathJax{\newcommand{\tcboxmath}[2][]{\boxed{#2}}}
+\CustomizeMathJax{\newcommand{\tcbhighmath}[2][]{\boxed{#2}}}
+%    \end{macrocode}
+%
+% \iffalse
+%</tcolorbox>
+% \fi
+%
+%
+%
+%
+% \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
+%
+% \part{lwarp-termcal.sty}
+%
+% \section{termcal}
+%
+% \credits{Bill Mitchell}
+%
+% \DescribePackage{termcal}
+% \pkg{termcal} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.88}{2020/06/19}{\pkg{termcal}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{termcal}% questionable date in the .sty file
+%    \end{macrocode}
+%
+% Nullify the @{} because everything is being done in a token  list.
+%    \begin{macrocode}
+\xpatchcmd{\endcalendar}
+    {@{}}
+    {}
+    {}
+    {\LWR at patcherror{termcal}{endcalendar}}
+%    \end{macrocode}
+%
+% Remove the hbox:
+%    \begin{macrocode}
+\xpatchcmd{\ca at doaday}
+    {\hbox to \hsize{\calprintdate\hfill\ifclassday\calprintclass\fi}}
+    {%
+        \calprintdate\hfill\ifclassday\calprintclass\fi%
+    }
+    {}
+    {\LWR at patcherror{termcal}{ca at doaday}}
+%    \end{macrocode}
+%
+% Change each of two ampersands to call the lwarp tabular version:
+%    \begin{macrocode}
+\xpatchcmd{\calday}
+    {&}
+    {\LWR at tabularampersand}
+    {}
+    {\LWR at patcherror{termcal}{calday}}
+
+\xpatchcmd{\calday}
+    {&}
+    {\LWR at tabularampersand}
+    {}
+    {\LWR at patcherror{termcal}{calday B}}
+%    \end{macrocode}
+%
+% \iffalse
+%</termcal>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*textarea>
 % \fi
 %
@@ -70754,7 +80615,7 @@
 % \changes{v0.62}{2018/11/17}{\pkg{textcomp}: Fix conflict with \pkg{xunicode}.}
 %    \begin{macrocode}
 \providecommand*{\LWR at HTML@textcircled}[1]{%
-\InlineClass[border: 1px solid \LWR at currenttextcolor]{textcircled}{#1}%
+    \InlineClass[border: 1px solid \LWR at currenttextcolor]{textcircled}{#1}%
 }
 
 \LWR at formatted{capitalcedilla}
@@ -70770,6 +80631,7 @@
 \LWR at formatted{capitalbreve}
 \LWR at formatted{capitalmacron}
 \LWR at formatted{capitaldotaccent}
+
 \LWR at formatted{textcircled}
 %    \end{macrocode}
 % Nullify \pkg{textcomp} macros when generating filenames:
@@ -70901,7 +80763,7 @@
 
 % \codehtml
 %    \begin{macrocode}
-\LWR at ProvidesPackageDrop{textpos}[2019/04/15]
+\LWR at ProvidesPackageDrop{textpos}[2020/09/26]
 %    \end{macrocode}
 
 %    \begin{macrocode}
@@ -70908,6 +80770,8 @@
 \NewDocumentEnvironment{textblock}{m o r()}{}{}
 \NewDocumentEnvironment{textblock*}{m o r()}{}{}
 \newcommand*{\TPGrid}[3][]{}
+\def\TPShowGrid{\@ifstar{\@TPShowGrid}{\@TPShowGrid}}
+\def\@TPShowGrid#1#2{}
 \NewDocumentCommand{\TPMargin}{s o}{}
 \newcommand*{\textblockcolour}[1]{}
 \newcommand*{\textblockrulecolour}[1]{}
@@ -71202,7 +81066,214 @@
 %
 %
 %
+%
+%
+% ^^A *thmtools: See thm-listof and thm-restate, following:
+%
 % \iffalse
+%<*thm-listof>
+% \fi
+%
+% \part{lwarp-thm-listof.sty}
+%
+% \section{thm-listof}
+%
+% \credits{Ulrich M. Schwarz, Yukai Chou}
+%
+% \DescribePackage{thm-listof}
+% \pkg{thm-listof} is part of \pkg{thmtools}, and is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.88}{2020/07/03}{\pkg{thm-listof}: Added.}
+% \changes{v0.89}{2020/09/02}{\pkg{thm-listof}: Updated to v0.72.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{thm-listof}[2019/12/22]
+%    \end{macrocode}
+%
+% For font control, see the generated \HTML\ and
+% use \CSS\ per \pkg{amsthm} or \pkg{ntheorem}.
+%
+% Other \pkg{thm-*} package may be loaded by \pkg{thm-listof}.
+%    \begin{macrocode}
+\@ifpackagelater{thm-listof}{2020/08/01}{% v0.72
+  \def\thmtlo at newentry{%
+    \csdef{l@\thmt at envname}##1##2{\hypertocfloat{1}{figure}{lof}{##1}{##2}}%
+  }
+}{% earlier than v0.72
+    \xpatchcmd{\listoftheorems}
+        {%
+            \@xa\protected at edef\csname l@\thmt at envname\endcsname{%
+                \@nx\@dottedtocline{1}{1.5em}{\@nx\thmt at listnumwidth}%
+            }%
+        }
+        {%
+            \csdef{l@\thmt at envname}##1##2{\hypertocfloat{1}{figure}{lof}{##1}{##2}}%
+        }
+        {}
+        {\LWR at patcherror{thm-listof}{listoftheorems}}
+
+    \xpatchcmd{\thmt at mklistcmd}
+        {%
+            \@xa\protected at edef\csname l@\thmt at envname\endcsname{%
+                \@nx\@dottedtocline{1}{1.5em}{\@nx\thmt at listnumwidth}%
+            }%
+        }
+        {%
+            \csdef{l@\thmt at envname}##1##2{\hypertocfloat{1}{figure}{lof}{##1}{##2}}%
+        }
+        {}
+        {\LWR at patcherror{thm-listof}{thmt at mklistcmd}}
+}
+%    \end{macrocode}
+%
+% \iffalse
+%</thm-listof>
+% \fi
+%
+%
+%
+% \iffalse
+%<*thm-restate>
+% \fi
+%
+% \part{lwarp-thm-restate.sty}
+%
+% \section{thm-restate}
+%
+% \credits{Ulrich M. Schwarz}
+%
+% \DescribePackage{thm-restate}
+% \pkg{thm-restate} is part of \pkg{thmtools}, and is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.88}{2020/07/03}{\pkg{thm-restate}: Added.}
+% \changes{v0.89}{2020/09/02}{\pkg{thm-restate}: Updated to v0.72, no changes needed.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{thm-restate}[2020/08/01]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\xpatchcmd{\thmt at restatable}
+    {\@ifstar}
+    {\edef\LWR at thisthmstyle{#2}\@ifstar}
+    {}
+    {\LWR at patcherror{thm-restate}{thmt at restatable}}
+%    \end{macrocode}
+%
+% \iffalse
+%</thm-restate>
+% \fi
+%
+%
+%
+%
+% \iffalse
+%<*thmbox>
+% \fi
+%
+% \part{lwarp-thmbox.sty}
+%
+% \section{thmbox}
+%
+% \credits{Emmanuel Beffara}
+%
+% \DescribePackage{thmbox}
+% \pkg{thmbox} is emulated for use by \pkg{lwarp}.
+%
+% \changes{v0.88}{2020/07/04}{\pkg{thmbox}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{thmbox}[2005/04/24]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\renewenvironment{thmbox}[2][]%
+    {%
+        \begin{BlockClass}{thmbox}
+        \begin{BlockClass}{thmboxtitle}
+        #2
+        \end{BlockClass}
+    }
+    {\end{BlockClass}}
+
+\renewenvironment{proof}[1][]
+    {%
+        \begin{BlockClass}{thmboxproof}%
+        \InlineClass{thmboxproofname}{\proofname\ #1\unskip\,:}
+    }
+    {%
+        \qquad\HTMLunicode{220E}% end of proof symbol
+        \end{BlockClass}
+    }
+
+\renewenvironment{example}[1][\examplename]%
+    {%
+        \begin{BlockClass}{thmboxexample}%
+        \InlineClass{thmboxexamplename}{#1\,:}
+    }
+    {\end{BlockClass}}
+
+\renewenvironment{leftbar}[1][]%
+    {\begin{BlockClass}{thmboxleftbar}}
+    {\end{BlockClass}}
+%    \end{macrocode}
+%
+% \iffalse
+%</thmbox>
+% \fi
+%
+%
+%
+%
+%
+% \iffalse
+%<*thmtools>
+% \fi
+%
+% \part{lwarp-thmtools.sty}
+%
+% \section{thmtools}
+%
+% \credits{Ulrich M. Schwarz}
+%
+% \DescribePackage{thmtools}
+% \pkg{thmtools} is patched for use by \pkg{lwarp}.
+%
+% Also see \pkg{thm-listof} and \pkg{thm-restate}.
+%
+% \changes{v0.89}{2020/09/02}{\pkg{thmtools}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{thmtools}[2020/08/01]
+%    \end{macrocode}
+%
+% The following patches either \pkg{thm-amsthm} or \pkg{thm-ntheorem}.
+%    \begin{macrocode}
+\def\thmt at headstyle@margin{%
+    \InlineClass{amsthmnnumbertheorem}{\NUMBER}
+    \ 
+    \InlineClass{amsthmnametheorem}{\NAME}
+    \InlineClass{amsthmnotetheorem}{\NOTE}
+}
+
+\let\thmt at headstyle@swapnumber\thmt at headstyle@margin
+%    \end{macrocode}
+%
+% \iffalse
+%</thmtools>
+% \fi
+%
+%
+%
+% \iffalse
 %<*threadcol>
 % \fi
 %
@@ -71531,21 +81602,24 @@
 
 \let\pgfutil at raggedleft\LWR at print@raggedleft
 \let\pgfutil at raggedright\LWR at print@raggedright
-
-\def\pgfutil at font@tiny{\LWR at printtiny}
-\def\pgfutil at font@scriptsize{\LWR at printscriptsize}
-\def\pgfutil at font@footnotesize{\LWR at printfootnotesize}
+%    \end{macrocode}
+%
+% \changes{v0.893}{2020/11/09}{\pkg{tikz}: Fixed font macros.}
+%    \begin{macrocode}
+\def\pgfutil at font@tiny{\LWR at print@tiny}
+\def\pgfutil at font@scriptsize{\LWR at print@scriptsize}
+\def\pgfutil at font@footnotesize{\LWR at print@footnotesize}
 \def\pgfutil at font@small{\LWR at print@small}
 \def\pgfutil at font@normalsize{\LWR at print@normalsize}
-\def\pgfutil at font@large{\LWR at printlarge}
-\def\pgfutil at font@Large{\LWR at printLarge}
-\def\pgfutil at font@huge{\LWR at printhuge}
-\def\pgfutil at font@Huge{\LWR at printHuge}
+\def\pgfutil at font@large{\LWR at print@large}
+\def\pgfutil at font@Large{\LWR at print@Large}
+\def\pgfutil at font@huge{\LWR at print@huge}
+\def\pgfutil at font@Huge{\LWR at print@Huge}
 
-\def\pgfutil at font@itshape{\LWR at origitshape}
-\def\pgfutil at font@bfseries{\LWR at origbfseries}
+\def\pgfutil at font@itshape{\LWR at print@itshape}
+\def\pgfutil at font@bfseries{\LWR at print@bfseries}
 
-\def\pgfutil at font@normalfont{\LWR at orignormalfont}
+\def\pgfutil at font@normalfont{\LWR at print@normalfont}
 %    \end{macrocode}
 
 % \iffalse
@@ -71556,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
 
@@ -71861,10 +81971,28 @@
 %
 %
 % Discard all options for \pkg{lwarp-titlesec}:
-
+%
 % \codehtml
+%
+% \changes{v0.85}{2020/04/30}{\pkg{titlesec}: \optn{pagestyles} option.}
 %    \begin{macrocode}
-\LWR at ProvidesPackageDrop{titlesec}[2016/03/21]
+\PackageInfo{lwarp}{Using the lwarp version of package `titlesec'.}%
+\ProvidesPackage{lwarp-titlesec}[2016/03/21]
+
+\newbool{LWR at loadtitleps}
+\boolfalse{LWR at loadtitleps}
+
+\DeclareOption{pagestyles}{
+    \booltrue{LWR at loadtitleps}
+}
+
+\DeclareOption*{}
+
+\ProcessOptions\relax
+
+\ifbool{LWR at loadtitleps}{
+    \RequirePackage{lwarp-titleps}
+}{}
 %    \end{macrocode}
 
 % \begin{noindmacro}{\titlelabel} \marg{label-format}
@@ -72221,16 +82349,18 @@
 % then initilize:
 %
 % \changes{v0.39}{2017/09/03}{\pkg{titling}: Removed extraneous \protect\env{center} environments.}
+% \changes{v0.84}{2020/04/22}{\pkg{titling}: \cs{AtBeginDocument}.}
 %    \begin{macrocode}
+\AtBeginDocument{
+    \pretitle{}
+    \posttitle{}
 
-\pretitle{}
-\posttitle{}
+    \preauthor{}
+    \postauthor{}
 
-\preauthor{}
-\postauthor{}
-
-\predate{}
-\postdate{}
+    \predate{}
+    \postdate{}
+}
 %    \end{macrocode}
 %
 %
@@ -72244,7 +82374,7 @@
 % Redefine the footnote mark:
 %
 %    \begin{macrocode}
-\def\@makefnmark{\textsuperscript{\@thefnmark}}
+    \def\@makefnmark{\textsuperscript{\@thefnmark}}%
 %    \end{macrocode}
 %
 % \begin{center}
@@ -72258,11 +82388,11 @@
 % Redefine the footnote text:
 %
 %    \begin{macrocode}
-\long\def\@makefntext##1{%
+    \long\def\@makefntext##1{%
 %    \end{macrocode}
 % Make the footnote mark and some extra horizontal space for the tags:
 %    \begin{macrocode}
-\makethanksmark~%
+        \makethanksmark~%
 %    \end{macrocode}
 % \begin{center}
 % \begin{minipage}{.7\linewidth}
@@ -72274,8 +82404,8 @@
 %
 % Print the text:
 %    \begin{macrocode}
-##1%
-}% \@makefntext
+        ##1%
+    }% \@makefntext
 }
 %    \end{macrocode}
 % \end{macro}
@@ -72306,32 +82436,32 @@
 %    \end{macrocode}
 % An \HTML\ titlepage \element{div} is used for all classes.
 %    \begin{macrocode}
-\begin{titlepage}
+    \begin{titlepage}
 %    \end{macrocode}
 % Select which kind of footnote marks to use:
 %    \begin{macrocode}
-\@bsmarkseries
+    \@bsmarkseries
 %    \end{macrocode}
 % Set up special patches:
 %    \begin{macrocode}
-\LWR at maketitlesetup
+    \LWR at maketitlesetup
 %    \end{macrocode}
 % Typeset the title, etc:
 %    \begin{macrocode}
-\@maketitle
+    \@maketitle
 %    \end{macrocode}
 % Immediately generate any \cs{thanks} footnotes:
 % \changes{v0.73}{2019/06/25}{\pkg{titling}: Fix: Paragraph tags.}
 %    \begin{macrocode}
-\LWR at stoppars\@thanks\LWR at startpars
+    \LWR at stoppars\@thanks\LWR at startpars
 %    \end{macrocode}
 % Close the \HTML\ titlepage div:
 %    \begin{macrocode}
-\end{titlepage}
+    \end{titlepage}
 %    \end{macrocode}
 % Reset the footnote counter:
 %    \begin{macrocode}
-\@bscontmark
+    \@bscontmark
 }
 %    \end{macrocode}
 % \end{macro}
@@ -73073,21 +83203,21 @@
 %    \begin{macrocode}
 \DeclareDocumentCommand{\newlistof}{o m m m}
 {%
-\IfValueTF{#1}
-{\newlistentry[#1]{#2}{#3}{0}}
-{\newlistentry{#2}{#3}{0}}
-\@namedef{ext@#2}{#3}
-\@ifundefined{c@#3depth}{\newcounter{#3depth}}{}
-\setcounter{#3depth}{1}
-\@namedef{cftmark#3}{}
-\@namedef{listof#2}{\listof{#2}{#4}}
-\@namedef{@cftmake#3title}{}
-\expandafter\newlength\csname cftbefore#3titleskip\endcsname
-\expandafter\newlength\csname cftafter#3titleskip\endcsname
-\@namedef{cft#3titlefont}{}
-\@namedef{cftafter#3title}{}
-\@namedef{cft#3prehook}{}
-\@namedef{cft#3posthook}{}
+    \IfValueTF{#1}%
+        {\newlistentry[#1]{#2}{#3}{0}}%
+        {\newlistentry{#2}{#3}{0}}%
+    \@namedef{ext@#2}{#3}%
+    \@ifundefined{c@#3depth}{\newcounter{#3depth}}{}%
+    \setcounter{#3depth}{1}%
+    \@namedef{cftmark#3}{}%
+    \@namedef{listof#2}{\listof{#2}{#4}}%
+    \@namedef{@cftmake#3title}{}%
+    \expandafter\newlength\csname cftbefore#3titleskip\endcsname%
+    \expandafter\newlength\csname cftafter#3titleskip\endcsname%
+    \@namedef{cft#3titlefont}{}%
+    \@namedef{cftafter#3title}{}%
+    \@namedef{cft#3prehook}{}%
+    \@namedef{cft#3posthook}{}%
 }
 %    \end{macrocode}
 % \end{noindmacro}
@@ -73262,7 +83392,7 @@
 \let\LWRTODONOTES at orig@todototoc\todototoc
 
 \renewcommand*{\todototoc}{%
-\phantomsection%
+\LWR at phantomsection%
 \LWRTODONOTES at orig@todototoc%
 }
 
@@ -73438,7 +83568,6 @@
 %
 % \codehtml
 %
-% Discard all options for \pkg{lwarp-transparent}:
 %    \begin{macrocode}
 \LWR at ProvidesPackagePass{transparent}[2019/11/29]
 %    \end{macrocode}
@@ -73551,20 +83680,11 @@
 % Is used by \pkg{trivfloat} to correct float chapter numbers,
 % but is not needed for \pkg{lwarp}.
 
-% \codehtml
 %    \begin{macrocode}
-\begin{warpHTML}
-%    \end{macrocode}
-
-%    \begin{macrocode}
 \AtBeginDocument{\DeclareDocumentCommand{\tfl at chapter@fix}{m m}{}}
 %    \end{macrocode}
 
-%    \begin{macrocode}
-\end{warpHTML}
-%    \end{macrocode}
 
-
 % \subsection{Combining \cs{newfloat}, \cs{trivfloat}, and \pkg{algorithmicx}}
 % \label{sec:combiningfloats}
 % \gindex{newfloat=\pkg{newfloat}>with \pkg{trivfloat}, \pkg{algorithmicx}}
@@ -73571,10 +83691,6 @@
 % \gindex{trivfloat=\pkg{trivfloat}>with \pkg{newfloat}, \pkg{algorithmicx}}
 % \gindex{algorithmicx=\pkg{algorithmicx}>with \pkg{newfloat}, \pkg{trivfloat}}
 %
-% \codeall
-%    \begin{macrocode}
-\begin{warpall}
-%    \end{macrocode}
 
 % \textred{For both print and \HTML\ output:}
 %
@@ -73601,9 +83717,6 @@
 % \makeatletter
 % \end{Verbatim}
 
-%    \begin{macrocode}
-\end{warpall}
-%    \end{macrocode}
 
 % \iffalse
 %</trivfloat>
@@ -73706,7 +83819,103 @@
 %
 %
 %
+%
 % \iffalse
+%<*txfonts>
+% \fi
+%
+% \part{lwarp-txfonts.sty}
+%
+% \section{txfonts}
+%
+% \credits{Young Ryu}
+%
+% \DescribePackage{txfonts}
+% \pkg{txfonts} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% \changes{v0.89}{2020/08/10}{\pkg{txfonts}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{txfonts}[2008/01/22]
+%    \end{macrocode}
+%
+% For \brand{MathJax}:
+%    \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+\LWR at infoprocessingmathjax{txfonts}
+
+\LWR at mathjax@addgreek at l@up{}{up}
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</txfonts>
+% \fi
+%
+%
+%
+% \iffalse
+%<*txgreeks>
+% \fi
+%
+% \part{lwarp-txgreeks.sty}
+%
+% \section{txgreeks}
+%
+% \credits{Jean-Fran\c{c}ois Burnol}
+%
+% \DescribePackage{txgreeks}
+% \pkg{txgreeks} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation honors all package options.
+%
+% \changes{v0.891}{2020/09/14}{\pkg{txgreeks}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{txgreeks}[2011/03/16]
+
+\LWR at infoprocessingmathjax{txgreeks}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+\iftgs at uplower% upright lowercase Greek
+    \LWR at mathjax@addgreek at l@up{}{}
+    \LWR at mathjax@addgreek at l@it{other}{}
+\else% italic lowercase Greek
+    \LWR at mathjax@addgreek at l@it{}{}
+    \LWR at mathjax@addgreek at l@up{other}{}
+\fi
+
+\iftgs at itupper % italic uppercase Greek
+    \LWR at mathjax@addgreek at u@it*{}{}
+    \LWR at mathjax@addgreek at u@up*{other}{}
+    \LWR at mathjax@addgreek at u@up*{var}{}
+\else% upright uppercase Greek
+    \LWR at mathjax@addgreek at u@up*{}{}
+    \LWR at mathjax@addgreek at u@it*{other}{}
+    \LWR at mathjax@addgreek at u@it*{var}{}
+\fi
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</txgreeks>
+% \fi
+%
+%
+%
+% \iffalse
 %<*typearea>
 % \fi
 %
@@ -74016,12 +84225,54 @@
 % \DescribePackage{unicode-math}
 % \pkg{unicode-math} is supported as-is for \HTML\ with \SVG math.
 %
-% For \brand{MathJax}, many characters may not be read correctly,
-% such as bold letters,
-% and so are not read correctly by \prog{pdftotext} for \HTML.
+% If the document source includes embedded Unicode characters,
+% \trouble[\brand{MathJax}]{unicode-math=\pkg{unicode-math}}
+% \trouble{mathjax=\brand{MathJax}>unicode-math=\pkg{unicode-math}}
+% these may not be reproduced correctly for \prog{pdftotext},
+% and thus not display correctly in \brand{MathJax}.
+%
 % Symbol font commands are emulated, but not all combinations are
-% supported by MathJax.
+% 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.
 %
+% The \brand{MathJax} emulation does not change with the use of \cs{mathversion}.
+% \watchout[\cs{mathversion}]
+% Whatever emulation is established at the begin of the document will remain.
+%
+% The option \optn{sans-style} honors \optn{upright} and \optn{italic},
+% but \optn{italic} will not be sans, in order to support Greek macros.
+%
+% Greek macros such as \cs{alpha} respond to the \optn{math-style} option.
+% Latin symbols does not, per \brand{MathJax} limitations, unless placed inside
+% \cs{symbit} or similar.
+%
+% Macros from the categories \cs{mathopen}, \cs{mathclose}, and \cs{mathfence}
+% are emulated.  Due to current \brand{MathJax} limitations, not all
+% stretch to the correct height.
+%
+% Also emulated are macros from the categories
+% \cs{mathpunct}, \cs{mathover}, \cs{mathunder}, \cs{mathaccent},
+% \cs{mathbotaccent}, and \cs{mathop}.
+%
+% The individual \pkg{unicode-math} macros
+% of categories \cs{mathbin}, \cs{mathord}, and \cs{mathrel}
+% are not emulated for \brand{MathJax},
+% as there are more than two thousand of them, but they may be added as needed.
+% Place the following in the document preamble after loading \pkg{unicode-math},
+% including a definition for each macro which is used in the document
+% but undefined in \brand{MathJax}:
+%
+% \begin{sourceverb}
+% \begin{warpMathJax}
+% \CustomizeMathJax{\newcommand{\uplus}{\mathbin{\unicode{x0228E}}}}
+% ...
+% \end{warpMathJax}
+% \end{sourceverb}
+%
+% Use \cs{mathrel}, \cs{mathbin}, etc. depending on the category of each macro.
+% For a list of macro names and symbols, see \cmds{texdoc unimath-symbols}.
+%
 % \changes{v0.79}{2020/01/30}{\pkg{unicode-math}: Added.}
 % \changes{v0.80}{2020/02/15}{\pkg{unicode-math}: Improved \brand{MathJax}.}
 %
@@ -74039,6 +84290,8 @@
 % ^^A math-sans-serif-bold-italic | math-monospace | math-initial | math-tailed |
 % ^^A math-looped | math-stretched
 %    \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
 \begin{warpMathJax}
 \LWR at infoprocessingmathjax{unicode-math}
 
@@ -74050,17 +84303,18 @@
 \CustomizeMathJax{\let\symcal\mathcal}
 \CustomizeMathJax{\let\symscr\mathscr}
 \CustomizeMathJax{\let\symfrak\mathfrak}
+
 \CustomizeMathJax{\let\symsfup\mathsf}
 
-% \CustomizeMathJax{\let\symsfit\mathit}% not sans
-\CustomizeMathJax{\newcommand{\symsfit}[1]{%
-    \mmlToken{mi}[mathvariant="sans-serif-italic"]{#1}}%
-}
+\CustomizeMathJax{\let\symsfit\mathit}% not sans
+% \CustomizeMathJax{\newcommand{\symsfit}[1]{%
+%     \mmlToken{mi}[mathvariant="sans-serif-italic"]{#1}}% not greek
+% }
 
-% \CustomizeMathJax{\let\symbfsf\mathbf}% not sans
-\CustomizeMathJax{\newcommand{\symbfsf}[1]{%
-    \mmlToken{mi}[mathvariant="bold-sans-serif"]{#1}}%
-}
+\CustomizeMathJax{\let\symbfsf\mathbf}% not sans
+% \CustomizeMathJax{\newcommand{\symbfsf}[1]{%
+%     \mmlToken{mi}[mathvariant="bold-sans-serif"]{#1}}% not greek
+% }
 
 \CustomizeMathJax{\let\symbfup\mathbf}
 \CustomizeMathJax{\newcommand{\symbfit}[1]{\boldsymbol{#1}}}
@@ -74068,23 +84322,23 @@
 
 \CustomizeMathJax{\let\symbfscr\mathscr}% not bold
 % \CustomizeMathJax{\newcommand{\symbfscr}[1]{
-%     \mmlToken{mi}[mathvariant="math-bold-script"]{#1}}
+%     \mmlToken{mi}[mathvariant="math-bold-script"]{#1}}% not greek
 % }
 
 \CustomizeMathJax{\let\symbffrak\mathfrak}% not bold
 % \CustomizeMathJax{\newcommand{\symbffrak}[1]{%
-%     \mmlToken{mi}[mathvariant="math-bold-fraktur"]{#1}}%
+%     \mmlToken{mi}[mathvariant="math-bold-fraktur"]{#1}}% not greek
 % }
 
-% \CustomizeMathJax{\let\symbfsfup\mathbf}% not sans
-\CustomizeMathJax{\newcommand{\symbfsfup}[1]{%
-    \mmlToken{mi}[mathvariant="bold-sans-serif"]{#1}}%
-}
+\CustomizeMathJax{\let\symbfsfup\mathbf}% not sans
+% \CustomizeMathJax{\newcommand{\symbfsfup}[1]{%
+%     \mmlToken{mi}[mathvariant="bold-sans-serif"]{#1}}% not greek
+% }
 
-% \CustomizeMathJax{\let\symbfsfit\mathit}% not bold nor sans
-\CustomizeMathJax{\newcommand{\symbfsfit}[1]{%
-    \mmlToken{mi}[mathvariant="sans-serif-bold-italic"]{#1}}%
-}
+\CustomizeMathJax{\newcommand{\symbfsfit}[1]{\boldsymbol{#1}}}% not sans
+% \CustomizeMathJax{\newcommand{\symbfsfit}[1]{%
+%     \mmlToken{mi}[mathvariant="sans-serif-bold-italic"]{#1}}% not greek
+% }
 
 % Duplicates below are commented out.
 \CustomizeMathJax{\let\symup\mathrm}
@@ -74091,7 +84345,24 @@
 \CustomizeMathJax{\let\symbf\mathbf}% \symbfup defined above
 \CustomizeMathJax{\let\symit\mathit}
 % \CustomizeMathJax{\let\symbfit\mathit}% not bold
-\CustomizeMathJax{\let\symsf\mathsf}
+%    \end{macrocode}
+%
+% \changes{v0.891}{2020/09/21}{\pkg{unicode-math}: Added \optn{sans-style}.}
+%    \begin{macrocode}
+\ExplSyntaxOn
+\AtBeginDocument{
+\bool_if:NTF \g__um_sfliteral_bool
+    {\CustomizeMathJax{\let\symsf\symsfup}}
+    {
+        \bool_if:NTF \g__um_upsans_bool
+            {\CustomizeMathJax{\let\symsf\symsfup}}
+            {\CustomizeMathJax{\let\symsf\symsfit}}
+    }
+}
+\ExplSyntaxOff
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 % \CustomizeMathJax{\let\symbfsfup\mathbf}% not sans
 % \CustomizeMathJax{\let\symsfit\mathit}% not sans
 % \CustomizeMathJax{\let\symbfsfit\mathit}% not bold nor sans
@@ -74102,6 +84373,126 @@
 % \CustomizeMathJax{\let\symbfscr\mathscr}% not bold
 % \CustomizeMathJax{\let\symfrak\mathfrak}
 \CustomizeMathJax{\let\symbffrac\mathbffrac}
+%    \end{macrocode}
+%
+% Some symbol categories defined by \pkg{unicode-math},
+% in case they are used inside custom macros:
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\mathfence}[1]{\mathord{#1}}}
+\CustomizeMathJax{\newcommand{\mathover}[1]{#1}}
+\CustomizeMathJax{\newcommand{\mathunder}[1]{#1}}
+\CustomizeMathJax{\newcommand{\mathaccent}[1]{#1}}
+\CustomizeMathJax{\newcommand{\mathbotaccent}[1]{#1}}
+\CustomizeMathJax{\newcommand{\mathalpha}[1]{\mathord{#1}}}
+%    \end{macrocode}
+%
+% \optn{math-style} is one of: \optn{ISO}, \optn{TeX}, \optn{french}, \optn{upright},
+% or \optn{literal},
+% which set |\g__um_upGreek_bool| and |\g__um_upgreek_bool|.
+%
+% \changes{v0.80}{2020/02/15}{\pkg{unicode-math}: Improved \brand{MathJax}.}
+%    \begin{macrocode}
+\ExplSyntaxOn
+
+\AtBeginDocument{
+\bool_if:NTF \g__um_upGreek_bool
+    {\LWR at mathjax@addgreek at u@up*{}{}}
+    {\LWR at mathjax@addgreek at u@it*{}{}}
+
+\bool_if:NTF \g__um_upgreek_bool
+    {\LWR at mathjax@addgreek at l@up{}{}}
+    {\LWR at mathjax@addgreek at l@it{}{}}
+}
+
+\LWR at mathjax@addgreek at u@up*{up}{}
+\LWR at mathjax@addgreek at u@it*{it}{}
+\LWR at mathjax@addgreek at l@up{up}{}
+\LWR at mathjax@addgreek at l@it{it}{}
+
+\ExplSyntaxOff
+
+\CustomizeMathJax{\let\lparen(}
+\CustomizeMathJax{\let\rparen)}
+\CustomizeMathJax{\newcommand{\cuberoot}[1]{\,{}^3\!\!\sqrt{#1}}\,}
+\CustomizeMathJax{\newcommand{\fourthroot}[1]{\,{}^4\!\!\sqrt{#1}}\,}
+%    \end{macrocode}
+%
+% Many \cs{mathopen} \Slash \cs{mathclose} delimiters are
+% defined in \filenm{lwarp_mathjax.txt}, where
+% \cs{left} \Slash \cs{right} support is added.
+% \changes{v0.892}{2020/09/26}{\pkg{unicode-math}: Adeed \brand{MathJax} support for \cs{left} \Slash \cs{right}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\longdivision}[1]{\mathord{\unicode{x027CC}#1}}}
+
+\CustomizeMathJax{\newcommand{\mathcomma}{,}}
+\CustomizeMathJax{\newcommand{\mathcolon}{:}}
+\CustomizeMathJax{\newcommand{\mathsemicolon}{;}}
+
+\CustomizeMathJax{\newcommand{\overbracket}[1]{\mathinner{\overline{\ulcorner{#1}\urcorner}}}}
+\CustomizeMathJax{\newcommand{\underbracket}[1]{\mathinner{\underline{\llcorner{#1}\lrcorner}}}}
+
+\CustomizeMathJax{\newcommand{\overbar}[1]{\mathord{#1\unicode{x00305}}}}
+\CustomizeMathJax{\newcommand{\ovhook}[1]{\mathord{#1\unicode{x00309}}}}
+\CustomizeMathJax{\newcommand{\ocirc}[1]{\mathord{#1\unicode{x0030A}}}}
+\CustomizeMathJax{\newcommand{\candra}[1]{\mathord{#1\unicode{x00310}}}}
+\CustomizeMathJax{\newcommand{\oturnedcomma}[1]{\mathord{#1\unicode{x00312}}}}
+\CustomizeMathJax{\newcommand{\ocommatopright}[1]{\mathord{#1\unicode{x00315}}}}
+\CustomizeMathJax{\newcommand{\droang}[1]{\mathord{#1\unicode{x0031A}}}}
+\CustomizeMathJax{\newcommand{\leftharpoonaccent}[1]{\mathord{#1\unicode{x020D0}}}}
+\CustomizeMathJax{\newcommand{\rightharpoonaccent}[1]{\mathord{#1\unicode{x020D1}}}}
+\CustomizeMathJax{\newcommand{\vertoverlay}[1]{\mathord{#1\unicode{x020D2}}}}
+\CustomizeMathJax{\newcommand{\leftarrowaccent}[1]{\mathord{#1\unicode{x020D0}}}}
+\CustomizeMathJax{\newcommand{\annuity}[1]{\mathord{#1\unicode{x020E7}}}}
+\CustomizeMathJax{\newcommand{\widebridgeabove}[1]{\mathord{#1\unicode{x020E9}}}}
+\CustomizeMathJax{\newcommand{\asteraccent}[1]{\mathord{#1\unicode{x020F0}}}}
+\CustomizeMathJax{\newcommand{\threeunderdot}[1]{\mathord{#1\unicode{x020E8}}}}
+
+\CustomizeMathJax{\newcommand{\Bbbsum}{\mathop{\unicode{x2140}}\limits}}
+\CustomizeMathJax{\newcommand{\oiint}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiint}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\newcommand{\intclockwise}{\mathop{\unicode{x2231}}\limits}}
+\CustomizeMathJax{\newcommand{\ointclockwise}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\ointctrclockwise}{\mathop{\unicode{x2233}}\limits}}
+\CustomizeMathJax{\newcommand{\varointclockwise}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\leftouterjoin}{\mathop{\unicode{x27D5}}\limits}}
+\CustomizeMathJax{\newcommand{\rightouterjoin}{\mathop{\unicode{x27D6}}\limits}}
+\CustomizeMathJax{\newcommand{\fullouterjoin}{\mathop{\unicode{x27D7}}\limits}}
+\CustomizeMathJax{\newcommand{\bigbot}{\mathop{\unicode{x27D8}}\limits}}
+\CustomizeMathJax{\newcommand{\bigtop}{\mathop{\unicode{x27D9}}\limits}}
+\CustomizeMathJax{\newcommand{\xsol}{\mathop{\unicode{x29F8}}\limits}}
+\CustomizeMathJax{\newcommand{\xbsol}{\mathop{\unicode{x29F9}}\limits}}
+\CustomizeMathJax{\newcommand{\bigcupdot}{\mathop{\unicode{x2A03}}\limits}}
+\CustomizeMathJax{\newcommand{\bigsqcap}{\mathop{\unicode{x2A05}}\limits}}
+\CustomizeMathJax{\newcommand{\conjquant}{\mathop{\unicode{x2A07}}\limits}}
+\CustomizeMathJax{\newcommand{\disjquant}{\mathop{\unicode{x2A08}}\limits}}
+\CustomizeMathJax{\newcommand{\bigtimes}{\mathop{\unicode{x2A09}}\limits}}
+\CustomizeMathJax{\newcommand{\modtwosum}{\mathop{\unicode{x2A0A}}\limits}}
+\CustomizeMathJax{\newcommand{\sumint}{\mathop{\unicode{x2A0B}}\limits}}
+\CustomizeMathJax{\newcommand{\intbar}{\mathop{\unicode{x2A0D}}\limits}}
+\CustomizeMathJax{\newcommand{\intBar}{\mathop{\unicode{x2A0E}}\limits}}
+\CustomizeMathJax{\newcommand{\fint}{\mathop{\unicode{x2A0F}}\limits}}
+\CustomizeMathJax{\newcommand{\cirfnint}{\mathop{\unicode{x2A10}}\limits}}
+\CustomizeMathJax{\newcommand{\awint}{\mathop{\unicode{x2A11}}\limits}}
+\CustomizeMathJax{\newcommand{\rppolint}{\mathop{\unicode{x2A12}}\limits}}
+\CustomizeMathJax{\newcommand{\scpolint}{\mathop{\unicode{x2A13}}\limits}}
+\CustomizeMathJax{\newcommand{\npolint}{\mathop{\unicode{x2A14}}\limits}}
+\CustomizeMathJax{\newcommand{\pointint}{\mathop{\unicode{x2A15}}\limits}}
+\CustomizeMathJax{\newcommand{\sqint}{\mathop{\unicode{x2A16}}\limits}}
+\CustomizeMathJax{\newcommand{\intlarhk}{\mathop{\unicode{x2A17}}\limits}}
+\CustomizeMathJax{\newcommand{\intx}{\mathop{\unicode{x2A18}}\limits}}
+\CustomizeMathJax{\newcommand{\intcap}{\mathop{\unicode{x2A19}}\limits}}
+\CustomizeMathJax{\newcommand{\intcup}{\mathop{\unicode{x2A1A}}\limits}}
+\CustomizeMathJax{\newcommand{\upint}{\mathop{\unicode{x2A1B}}\limits}}
+\CustomizeMathJax{\newcommand{\lowint}{\mathop{\unicode{x2A1C}}\limits}}
+\CustomizeMathJax{\newcommand{\bigtriangleleft}{\mathop{\unicode{x2A1E}}\limits}}
+\CustomizeMathJax{\newcommand{\zcmp}{\mathop{\unicode{x2A1F}}\limits}}
+\CustomizeMathJax{\newcommand{\zpipe}{\mathop{\unicode{x2A20}}\limits}}
+\CustomizeMathJax{\newcommand{\zproject}{\mathop{\unicode{x2A21}}\limits}}
+\CustomizeMathJax{\newcommand{\biginterleave}{\mathop{\unicode{x2AFC}}\limits}}
+\CustomizeMathJax{\newcommand{\bigtalloblong}{\mathop{\unicode{x2AFF}}\limits}}
+\CustomizeMathJax{\newcommand{\arabicmaj}{\mathop{\unicode{x1EEF0}}\limits}}
+\CustomizeMathJax{\newcommand{\arabichad}{\mathop{\unicode{x1EEF1}}\limits}}
+
 \end{warpMathJax}
 %    \end{macrocode}
 %
@@ -74169,11 +84560,12 @@
 \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}
-\CustomizeMathJax{\newcommand{\unit}[2][]{#1 #2}}
-\CustomizeMathJax{\newcommand{\unitfrac}[3][]{#1 #2/#3}}
+\CustomizeMathJax{\newcommand{\unit}[2][]{#1 \mathinner{#2}}}
+\CustomizeMathJax{\newcommand{\unitfrac}[3][]{#1 \mathinner{{}^{#2}\!/\!_{#3}}}}
 \end{warpMathJax}
 %    \end{macrocode}
 
@@ -74249,7 +84641,50 @@
 %
 %
 %
+%
 % \iffalse
+%<*upgreek>
+% \fi
+%
+% \part{lwarp-upgreek.sty}
+%
+% \section{upgreek}
+%
+% \credits{Walter Schmidt}
+%
+% \DescribePackage{upgreek}
+% \pkg{upgreek} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% \changes{v0.89}{2020/08/10}{\pkg{upgreek}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{upgreek}[2003/02/12]
+%    \end{macrocode}
+%
+% For \brand{MathJax}:
+%    \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+\LWR at infoprocessingmathjax{upgreek}
+
+\LWR at mathjax@addgreek at l@up{up}{}
+\LWR at mathjax@addgreek at u@up{Up}{}
+
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</upgreek>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*upref>
 % \fi
 %
@@ -74292,11 +84727,12 @@
 %
 % \changes{v0.52}{2018/03/29}{\pkg{url}: Added.}
 % \changes{v0.80}{2020/02/06}{\pkg{url}: Creates hyperlinks.}
+% \changes{v0.85}{2020/05/01}{\pkg{url}: Fixed print mode.}
 %
 % \codehtml
 %
 %    \begin{macrocode}
-\LetLtxMacro\LWR at url@orig at url\url
+\LetLtxMacro\LWR at url@orig at url\LWR at url
 
 \LWR at ProvidesPackagePass{url}[2013/09/16]
 %    \end{macrocode}
@@ -74310,9 +84746,10 @@
 % ^^A        \LWR at url@origUrl at FormatString%
 %
 %    \begin{macrocode}
-\renewcommand*{\Url at FormatString}{%
+\newcommand*{\LWR at HTML@Url at FormatString}{%
     \expandafter\LWR at url@orig at url\expandafter{\Url at String}%
 }
+\LWR at formatted{Url at FormatString}
 %    \end{macrocode}
 %
 % \iffalse
@@ -74321,7 +84758,48 @@
 %
 %
 %
+%
+%
 % \iffalse
+%<*ushort>
+% \fi
+%
+% \part{lwarp-ushort.sty}
+%
+% \section{ushort}
+%
+% \credits{Martin V\"ath}
+%
+% \DescribePackage{ushort}
+% \pkg{ushort} is used as-is, and emulated for \brand{MathJax}.
+%
+% \changes{v0.88}{2020/07/23}{\pkg{ushort}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{ushort}[2001/06/13]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\ushortdline}[1]{%
+    \kern{.1em}\underline{\underline{{#1}}}\kern{.1em}%
+}}
+\CustomizeMathJax{\newcommand{\ushort}[1]{\kern{.1em}\underline{#1}\kern{.1em}}}
+\CustomizeMathJax{\newcommand{\ushortd}[1]{\ushortdline{#1}}}
+\CustomizeMathJax{\newcommand{\ushortw}[1]{\kern{.1em}\underline{#1}\kern{.1em}}}
+\CustomizeMathJax{\newcommand{\ushortdw}[1]{\ushortdline{#1}}}
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</ushort>
+% \fi
+%
+%
+%
+% \iffalse
 %<*uspace>
 % \fi
 %
@@ -74348,6 +84826,44 @@
 %
 %
 % \iffalse
+%<*varioref>
+% \fi
+%
+% \part{lwarp-varioref.sty}
+%
+% \section{varioref}
+%
+% \credits{Frank Mittelbach}
+%
+% \DescribePackage{varioref}
+% \pkg{varioref} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.88}{2020/07/05}{\pkg{varioref}: Removed page-related text.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{varioref}[2020/01/23]
+%    \end{macrocode}
+%
+% Page-related output is not used for \HTML\ output.
+%    \begin{macrocode}
+\def\reftextfaceafter {\unskip}%
+\def\reftextfacebefore{\unskip}%
+\def\reftextafter     {\unskip}%
+\def\reftextbefore    {\unskip}%
+\def\reftextcurrent   {\unskip}%
+\def\reftextfaraway#1{\unskip}%
+\def\reftextpagerange#1#2{\unskip}%
+%    \end{macrocode}
+%
+% \iffalse
+%</varioref>
+% \fi
+%
+%
+%
+% \iffalse
 %<*verse>
 % \fi
 %
@@ -74391,11 +84907,12 @@
 %    \begin{macrocode}
 \LWR at restoreoriglists%
 %    \end{macrocode}
-% \DescribePackage{verse}\DescribeClass{memoir}\gindex{memoir=\pkg{memoir}>verse}
+% \DescribePackage{verse}
+% \DescribeClass{memoir}%
 % The \pkg{verse} or \pkg{memoir} packages can place stanza numbers to the left
 % with their \cs{flagverse} command. \DescribeMacro{\flagverse}
-% Do not allow them to go into the left margin, which would cause \prog{pdfcrop}
-% to crop the entire page further to the left:
+% The following does not allow them to go into the left margin,
+% which would cause \prog{pdfcrop} to crop the entire page further to the left.
 % \DescribeLength{\vleftskip}
 %    \begin{macrocode}
 \ifdef{\vleftskip}{%
@@ -74403,7 +84920,7 @@
 \setlength{\leftmargini}{\HTMLleftmargini}
 }{}
 \LWR at forcenewpage
-\LWR at atbeginverbatim{3}{verse}%
+\LWR at atbeginverbatim{verse}%
 }
 %    \end{macrocode}
 % After the end of the \env{verse} environment, which places the \element{pre} tag at the
@@ -74411,7 +84928,7 @@
 %    \begin{macrocode}
 \AtEndEnvironment{verse}{%
 \leavevmode%
-\LWR at afterendverbatim{1}%
+\LWR at afterendverbatim%
 }
 %    \end{macrocode}
 % Patch to place poemtitle inside an \HTML\ \element{span} of class |poemtitle|:
@@ -74971,8 +85488,6 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\begin{warpHTML}
-\makeatletter
 \ifbool{mathjax}{
     % For the hidden print version in the HTML:
     \newcommand{\Arrow}[2][]{}
@@ -75029,8 +85544,6 @@
     }
     \AfterEndEnvironment{DispWithArrows*}{\end{lateximage}\end{BlockClass}}
 }
-\makeatother
-\end{warpHTML}
 
 \begin{warpMathJax}
 \CustomizeMathJax{\newenvironment{WithArrows}[1][]{\begin{aligned}}{\end{aligned}}}
@@ -75100,37 +85613,37 @@
 
 \NewDocumentEnvironment{wrapfigure}{o m o m}
 {%
-\begin{LWR at setvirtualpage}*%
-\LWR at subwrapfigure{#2}{#4}%
-\captionsetup{type=figure}%
+    \begin{LWR at setvirtualpage}*%
+    \LWR at subwrapfigure{#2}{#4}%
+    \renewcommand*{\@captype}{figure}%
 }
 {%
-\endLWR at BlockClassWP%
-\end{LWR at setvirtualpage}%
+    \endLWR at BlockClassWP%
+    \end{LWR at setvirtualpage}%
 }
 
 
 \NewDocumentEnvironment{wraptable}{o m o m}
 {%
-\begin{LWR at setvirtualpage}*%
-\LWR at subwrapfigure{#2}{#4}%
-\captionsetup{type=table}%
+    \begin{LWR at setvirtualpage}*%
+    \LWR at subwrapfigure{#2}{#4}%
+    \renewcommand*{\@captype}{table}%
 }
 {%
-\endLWR at BlockClassWP%
-\end{LWR at setvirtualpage}%
+    \endLWR at BlockClassWP%
+    \end{LWR at setvirtualpage}%
 }
 
 
 \NewDocumentEnvironment{wrapfloat}{m o m o m}
 {%
-\begin{LWR at setvirtualpage}*%
-\LWR at subwrapfigure{#3}{#5}%
-\captionsetup{type=#1}%
+    \begin{LWR at setvirtualpage}*%
+    \LWR at subwrapfigure{#3}{#5}%
+    \renewcommand*{\@captype}{#1}%
 }
 {%
-\endLWR at BlockClassWP%
-\end{LWR at setvirtualpage}%
+    \endLWR at BlockClassWP%
+    \end{LWR at setvirtualpage}%
 }
 
 \newlength{\wrapoverhang}
@@ -75328,9 +85841,6 @@
 \LWR at ProvidesPackagePass{xcolor}[2016/05/11]
 %    \end{macrocode}
 
-%    \begin{macrocode}
-\begin{warpHTML}
-%    \end{macrocode}
 %
 %
 % \subsection{Remembering and restoring original definitions}
@@ -75355,7 +85865,7 @@
 % \subsection{\cs{normalcolor}}
 %
 % \begin{macro}{\normalcolor}
-% \changes{v0.75}{2019/09/12}{Added for \HTML.}
+% \changes{v0.75}{2019/09/12}{\pkg{xcolor}: Added for \HTML.}
 %    \begin{macrocode}
 \DeclareRobustCommand{\LWR at HTML@normalcolor}{\color{black}}%
 
@@ -75397,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}%
@@ -75409,9 +85919,9 @@
 % \end{macro}
 %
 %
-% \begin{noindmacro}{\LWR at colorstyle} \marg{2: model} \marg{3: color}
+% \begin{noindmacro}{\LWR at colorstyle} \marg{1: model} \marg{2: color}
 %
-% \changes{v0.19}{2016/06/01}{Supports colored \cs{rule}.}
+% \changes{v0.19}{2016/06/01}{\pkg{xcolor}: Supports colored \cs{rule}.}
 % \changes{v0.36}{2017/08/11}{\pkg{xcolor}: Refactored \cs{LWR at colorstyle}.}
 %
 % For a color style, prints the color converted to \HTML\ colors.
@@ -75419,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}
@@ -75440,11 +85950,11 @@
 % Similar to \cs{textcolor}, but prints black text against a color background.
 %
 % Converted into an \HTML\ hex color span.
-% \changes{v0.44}{2017/11/10}{Added.}
+% \changes{v0.44}{2017/11/10}{\pkg{xcolor}: Added \cs{LWR at backgroundcolor}.}
 %    \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%
 }%
@@ -75481,7 +85991,7 @@
 % the lack of \HTML\ states and scoping limitations.
 % Use \cs{textcolor} if possible.
 %
-% \changes{v0.73}{2019/06/14}{Added \HTML\ support.}
+% \changes{v0.73}{2019/06/14}{\pkg{xcolor}: Added \HTML\ support.}
 %    \begin{macrocode}
 \NewDocumentCommand{\LWR at HTML@color}{o m}{%
 \IfValueTF{#1}{%
@@ -75507,9 +86017,11 @@
 %
 % \changes{v0.57}{2018/06/02}{\pkg{xcolor}: New system for switching print and \HTML\ outputs.}
 % \changes{v0.81}{2020/02/28}{\pkg{xcolor}: \cs{textcolor}: Spurrious space.}
+% \changes{v0.86}{2020/05/12}{\pkg{xcolor}: \cs{textcolor}: Fixed for \pkg{babel-french}.}
 %    \begin{macrocode}
 \NewDocumentCommand{\LWR at HTML@textcolor}{o m m}{%
 \begingroup%
+\LWR at hook@processingtags%
 \IfValueTF{#1}{%
     \color[#1]{#2}%
 }{%
@@ -75553,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}%
@@ -75562,7 +86074,7 @@
 }
 
 \AtBeginDocument{
-\LWR at formatted{colorbox}
+    \LWR at formatted{colorbox}
 }
 %    \end{macrocode}
 % \end{macro}
@@ -75576,9 +86088,9 @@
 %    \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}{Fix: Horiz white space.}
+% \changes{v0.62}{2018/11/11}{\pkg{xcolor}: Fix: Horiz white space.}
 %    \begin{macrocode}
 \LWR at stoppars%
 %    \end{macrocode}
@@ -75593,13 +86105,13 @@
 %    \end{macrocode}
 % Prevent paragraph tags around horizontal white space
 % until the start of the next paragraph:
-% \changes{v0.62}{2018/11/11}{Fix: Horiz white space.}
+% \changes{v0.62}{2018/11/11}{\pkg{xcolor}: Fix: Horiz white space.}
 %    \begin{macrocode}
 \global\booltrue{LWR at minipagethispar}%
 }
 
 \AtBeginDocument{
-\LWR at formatted{colorboxBlock}
+    \LWR at formatted{colorboxBlock}
 }
 %    \end{macrocode}
 % \end{macro}
@@ -75613,11 +86125,12 @@
 % A background color of |none| creates a colored frame without a background color.
 %
 % \changes{v0.57}{2018/06/02}{\pkg{xcolor}: New system for switching print and \HTML\ outputs.}
+% \changes{v0.892}{2020/10/05}{\pkg{xcolor}: Fixed second optional arg.}
 %    \begin{macrocode}
-\NewDocumentCommand{\LWR at HTML@fcolorbox}{O{named} m O{named} m +m}{%
+\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
@@ -75635,7 +86148,7 @@
 }
 
 \AtBeginDocument{
-\LWR at formatted{fcolorbox}
+    \LWR at formatted{fcolorbox}
 }
 %    \end{macrocode}
 % \end{macro}
@@ -75648,14 +86161,15 @@
 %
 % A background color of |none| creates a colored frame without a background color.
 %
+% \changes{v0.892}{2020/10/05}{\pkg{xcolor}: Fixed second optional arg.}
 %    \begin{macrocode}
-\NewDocumentCommand{\LWR at HTML@fcolorboxBlock}{O{named} m O{named} m +m}{%
+\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}{Fix: Horiz white space.}
+% \changes{v0.62}{2018/11/11}{\pkg{xcolor}: Fix: Horiz white space.}
 %    \begin{macrocode}
 \LWR at stoppars%
 %    \end{macrocode}
@@ -75681,7 +86195,7 @@
 %    \end{macrocode}
 % Prevent paragraph tags around horizontal white space
 % until the start of the next paragraph:
-% \changes{v0.62}{2018/11/11}{Fix: Horiz white space.}
+% \changes{v0.62}{2018/11/11}{\pkg{xcolor}: Fix: Horiz white space.}
 %    \begin{macrocode}
 \global\booltrue{LWR at minipagethispar}%
 \LWR at traceinfo{HTML fcolorboxBlock done}%
@@ -75688,7 +86202,7 @@
 }
 
 \AtBeginDocument{
-\LWR at formatted{fcolorboxBlock}
+    \LWR at formatted{fcolorboxBlock}
 }
 %    \end{macrocode}
 % \end{macro}
@@ -75699,7 +86213,7 @@
 %
 % A print-output version is defined in the \pkg{lwarp} core: \cref{sec:xcolorpatches}
 %
-% \changes{v0.34}{2017/07/31}{Added.}
+% \changes{v0.34}{2017/07/31}{\pkg{xcolor}: Added \cs{LWR at subfcolorminipage}.}
 %
 % \begin{noindmacro}{\LWR at subfcolorminipage}
 %	\marg{framemodel} \marg{framecolor} \marg{background tag} \marg{height}
@@ -75706,7 +86220,7 @@
 %    \begin{macrocode}
 \NewDocumentCommand{\LWR at subfcolorminipage}{m m m m}{%
 %    \end{macrocode}
-% \changes{v0.62}{2018/11/11}{Fix: Horiz white space.}
+% \changes{v0.62}{2018/11/11}{\pkg{xcolor}: Fix: Horiz white space.}
 %    \begin{macrocode}
 \LWR at stoppars%
 %    \end{macrocode}
@@ -75726,10 +86240,11 @@
 %	\oarg{1:framemodel} \marg{2:framecolor} \oarg{3:boxmodel} \marg{4:boxcolor} 
 %	\oarg{5:align} \oarg{6:height} \oarg{7:inner-align} \marg{8:width}
 %
+% \changes{v0.892}{2020/10/05}{\pkg{xcolor}: Fixed second optional arg.}
 %    \begin{macrocode}
-\NewDocumentEnvironment{LWR at HTML@fcolorminipage}{O{named} m O{named} m O{c} o o m}
+\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}%
@@ -75748,7 +86263,7 @@
 %    \end{macrocode}
 % Prevent paragraph tags around horizontal white space
 % until the start of the next paragraph:
-% \changes{v0.62}{2018/11/11}{Fix: Horiz white space.}
+% \changes{v0.62}{2018/11/11}{\pkg{xcolor}: Fix: Horiz white space.}
 %    \begin{macrocode}
     \global\booltrue{LWR at minipagethispar}%
 }
@@ -75871,11 +86386,7 @@
 }
 %    \end{macrocode}
 % \end{noindmacro}
-
 %
-%    \begin{macrocode}
-\end{warpHTML}
-%    \end{macrocode}
 %
 % \iffalse
 %</xcolor>
@@ -76013,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
 %
@@ -76026,26 +86573,29 @@
 % \pkg{xfakebold} is patched for use by \pkg{lwarp},
 % and additional underlying support is found in the \pkg{lwarp} core.
 %
-% Note that the print version resets to unbold at each page break,
-% \trouble[page breaks]{xfakebold=\pkg{xfakebold}}
-% whereas the \HTML\ version maintains the bold state until it is undone.
+% \pkg{xfakebold} is only used in \SVG\ math and \env{lateximage}s.
+% \trouble[text mode]{xfakebold=\pkg{xfakebold}}
+% Text mode is not set bold, but \cs{setBold} in text will be applied
+% to any following \SVG\ math.
 %
 % \changes{v0.67}{2019/02/17}{\pkg{xfakebold}: Added.}
+% \changes{v0.88}{2020/06/29}{\pkg{xfakebold}: Now works with \pkg{pdfrender}.}
 %
 % \codehtml
 %
 %    \begin{macrocode}
-\LWR at ProvidesPackagePass{xfakebold}[2018/07/25]
+\LWR at ProvidesPackagePass{xfakebold}[2020/06/24]
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\let\LWR at orig@setBold\setBold
-\let\LWR at orig@unsetBold\unsetBold
-\renewcommand*{\setBold}{\booltrue{LWR at xfakebold}}
-\renewcommand*{\unsetBold}{\boolfalse{LWR at xfakebold}}
+\newcommand*{\LWR at HTML@setBold}{\booltrue{LWR at xfakebold}}
+\LWR at formatted{setBold}
 
+\newcommand*{\LWR at HTML@unsetBold}{\boolfalse{LWR at xfakebold}}
+\LWR at formatted{unsetBold}
+
 \renewcommand*{\LWR at applyxfakebold}{%
-    \ifbool{LWR at xfakebold}{\LWR at orig@setBold}{\LWR at orig@unsetBold}%
+    \ifbool{LWR at xfakebold}{\LWR at print@setBold}{\LWR at print@unsetBold}%
 }
 %    \end{macrocode}
 %
@@ -76109,12 +86659,7 @@
 % In math mode, which will appear inside a \env{lateximage}, no adjustments
 % are necessary.
 
-% \codeall
-%    \begin{macrocode}
-\begin{warpall}
-%    \end{macrocode}
 
-
 % \begin{macro}{\xfracHTMLfontsize}
 % \changes{v0.19}{2016/06/06}{Added.}
 % \gindex{font>size>xfrac=\pkg{xfrac}}
@@ -76124,17 +86669,7 @@
 %    \end{macrocode}
 % \end{macro}
 
-%    \begin{macrocode}
-\end{warpall}
-%    \end{macrocode}
 
-
-% \codehtml
-%    \begin{macrocode}
-\begin{warpHTML}
-%    \end{macrocode}
-
-
 % Instances of \pkg{xfrac} for various font choices:
 % \margintag{instances}
 %
@@ -76236,9 +86771,6 @@
 \end{warpMathJax}
 %    \end{macrocode}
 
-%    \begin{macrocode}
-\end{warpHTML}
-%    \end{macrocode}
 %
 % \iffalse
 %</xfrac>
@@ -76520,8 +87052,12 @@
 %
 % The \pkg{lwarp} core uses the following to disable CJK \pkg{xpinyin} for
 % filenames, side\TOC, and footnotes.
+%
+% \changes{v0.84}{2020/04/21}{\pkg{xpinyin}: Disables pinyin when null fonts.}
 %    \begin{macrocode}
 \renewcommand*{\LWR at disablepinyin}{\disablepinyin}
+
+\FilenameNullify{\LWR at disablepinyin}
 %    \end{macrocode}
 %
 % \iffalse
@@ -77132,10 +87668,16 @@
 }
 %    \end{macrocode}
 %
+% Do not use \cs{chaptername}:
+%    \begin{macrocode}
+\renewcommand*{\LWR at printchaptername}{}
+%    \end{macrocode}
+%
 % Simple captions are used in all cases.
 % \changes{v0.73}{2019/07/10}{\pkg{lwarp-patch-komascript}: Fix for captions.}
 %    \begin{macrocode}
 \AtBeginDocument{
+\AtBeginDocument{
     \LetLtxMacro\captionbelow\caption
     \LetLtxMacro\captionabove\caption
 
@@ -77142,6 +87684,7 @@
     \LetLtxMacro\captionofbelow\captionof
     \LetLtxMacro\captionofabove\captionof
 }
+}
 
 \RenewDocumentEnvironment{captionbeside}{o m o o o s}
 {}
@@ -77247,12 +87790,12 @@
 \RequirePackage{lwarp-parskip}
 \RequirePackage{lwarp-setspace}% req'd
 \RequirePackage{lwarp-showidx}
-\RequirePackage{lwarp-subcaption}% req'd for \subfloat
 %    \end{macrocode}
 
-% \changes{v0.83}{2020/03/27}{\pkg{lwarp-patch-memoir}: No longer require \pkg{subfigure}.}
+% \changes{v0.83}{2020/03/27}{\pkg{lwarp-patch-memoir}: No longer requires \pkg{subfigure}.}
+% \changes{v0.84}{2020/04/05}{\pkg{lwarp-patch-memoir}: No longer requires \pkg{subcaption}.}
 
-% ^^A Not sure why this is here:
+% ^^A Forgot why this is here:
 %    \begin{macrocode}
 \makeindex
 %    \end{macrocode}
@@ -77267,14 +87810,52 @@
 %    \end{macrocode}
 %
 %
-% \subsection{Preliminary setup}
+% \subsection{Label handling}
 %
-% Bypass the \pkg{memoir} package mechanism:
+% Insert the \pkg{lwarp} label mechanism into the \pkg{memoir} package mechanism:
+%
+% \begin{itemize}
+% \item \cs{@mem at old@label} is the \LaTeX\ definition of \cs{label}.
+% \item \cs{LWR at orig@label} adds the \pkg{memoir} definition.
+% \item \pkg{lwarp}'s \cs{LWR at new@label} uses \cs{LWR at orig@label}.
+% \item Want \pkg{memoir}'s \cs{label} to use \pkg{lwarp}'s \cs{label},
+%               which then would use \LaTeX's \cs{label}.
+% \item So:
+%   \begin{itemize}
+%       \item \cs{@mem at old@label} becomes \cs{LWR at new@label}.
+%       \item \cs{LWR at orig@label} becomes \cs{@mem at old@label}.
+%   \end{itemize}
+% \item \pkg{cleveref} then encapsulates all the above.
+% \item For a subcaption, \pkg{cleveref} modifies \pkg{memoir}'s \cs{sf at memsub@label}.
+% \end{itemize}
+% \changes{v0.84}{2020/04/05}{\pkg{lwarp-patch-memoir}: Fix: \cs{label}.}
 %    \begin{macrocode}
-\LetLtxMacro\LWR at orig@label\@mem at old@label
+\let\LWR at orig@label\@mem at old@label
+\let\@mem at old@label\LWR at new@label
 %    \end{macrocode}
+%
+% Patches for subfloats to support additional \pkg{lwarp} labels:
+%    \begin{macrocode}
+\AtBeginDocument{
+    \renewcommand*{\sf@@memsub at label}[1]{%
+        \@bsphack
+        \sf@@memsub at label@hook{#1}%
+        \@memoldlabel{#1}%
+        \LWR at label@createtag{sub@#1}%
+        \protected at write\@auxout{}{%
+            \string\newlabel{sub@#1}%
+            {{\@nameuse{@@thesub\@captype}}%
+            {\thepage}}}%
+        \LWR at write@lwarplabel{sub@#1}%
+        \@esphack
+    }
+}
+%    \end{macrocode}
 
 %
+%
+% \subsection{Page layout}
+%
 % \pkg{memoir} already set the page size to a default,
 % so it must be forced large for \pkg{lwarp}'s use,
 % to avoid tag overflows off the page.
@@ -77284,9 +87865,6 @@
 \setulmarginsandblock{1in}{1in}{*}
 %    \end{macrocode}
 %
-%
-% \subsection{Page layout}
-%
 % \changes{v0.83}{2020/03/27}{\pkg{lwarp-patch-memoir}: Updated for new sizes.}
 %    \begin{macrocode}
 \renewcommand*{\stockavi}{}
@@ -77495,8 +88073,11 @@
 \renewcommand\titlingpageend[2]{}
 %    \end{macrocode}
 %
+%
 % \subsection{Abstracts}
 %    \begin{macrocode}
+% \newlength{\absindent}
+% \newlength{\absparsep}
 \renewcommand*{\abstractcol}{}
 \renewcommand*{\abstractintoc}{}
 \renewcommand*{\abstractnum}{}
@@ -77722,10 +88303,15 @@
 \renewcommand*{\makeheadposition}[5]{}
 \renewcommand{\makepsmarks}[2]{}
 \renewcommand*{\makeheadfootstrut}[3]{}
-
-\renewcommand{\createplainmark}[3]{}
+%    \end{macrocode}
+%
+% \changes{v0.84}{2020/04/06}{\pkg{lwarp-patch-memoir}: Creates mark macros.}
+%    \begin{macrocode}
+\renewcommand{\createmark}[5]{\csdef{#1mark}[1]{}}
+\renewcommand{\createplainmark}[3]{\csdef{#1mark}{}}
+%    \end{macrocode}
+%    \begin{macrocode}
 \renewcommand{\memUChead}[1]{}
-\renewcommand{\createmark}[5]{}
 \renewcommand*{\clearplainmark}[1]{}
 \renewcommand*{\clearmark}[1]{}
 \renewcommand{\addtopsmarks}[3]{}
@@ -78031,15 +88617,51 @@
 \DeclareRobustCommand{\cftpagenumberson}[1]{}
 %    \end{macrocode}
 %
+%
 % \subsection{Floats and captions}
 %
+%
+% \begin{noindmacro}{\@xfloat}
+% \begin{noindmacro}{\@xdblfloat}
+% Reestablish \pkg{lwarp}'s takeover the float handing,
+% which \pkg{memoir} tried to grab:
+%
+% \changes{v0.84}{2020/04/20}{\pkg{lwarp-patch-memoir}: Use \LaTeX\ captions.}
+%    \begin{macrocode}
+\AtBeginDocument{
+\def\@xfloat #1[#2]{%
+    \LWR at floatbegin{#1}[#2]
+    \normalsize
+    \@nameuse{#1adjustment}%
+    \LWR at futurenonspacelet\LWR at mynexttoken\LWR at floatalignment%
+}
+\def\@xdblfloat #1[#2]{%
+    \LWR at floatbegin{#1}[#2]
+    \normalsize
+    \@nameuse{#1adjustment}%
+    \LWR at futurenonspacelet\LWR at mynexttoken\LWR at floatalignment%
+}
+}
+%    \end{macrocode}
+% \end{noindmacro}
+% \end{noindmacro}
+%
+%
 % \begin{noindmacro}{\newfloat} \oarg{1: within} \marg{2: type}
 %                           \marg{3: ext} \marg{4: capname}
 %    \begin{macrocode}
 \RenewDocumentCommand{\newfloat}{o m m m}{%
-    \IfValueTF{#1}%
-        {\DeclareFloatingEnvironment[fileext=#3,within=#1,name={#4}]{#2}}%
-        {\DeclareFloatingEnvironment[fileext=#3,name={#4}]{#2}}%
+    \def\LWR at tempone{#4}%
+    \def\LWR at temptwo{\@nameuse{#2name}}%
+    \ifdefequal{\LWR at tempone}{\LWR at temptwo}{% recursive name, already defined
+        \IfValueTF{#1}%
+            {\DeclareFloatingEnvironment[fileext=#3,within=#1]{#2}}%
+            {\DeclareFloatingEnvironment[fileext=#3]{#2}}%
+    }{% not recursive name
+        \IfValueTF{#1}%
+            {\DeclareFloatingEnvironment[fileext=#3,within=#1,name={#4}]{#2}}%
+            {\DeclareFloatingEnvironment[fileext=#3,name={#4}]{#2}}%
+    }%
 %    \end{macrocode}
 % \pkg{newfloat} package automatically creates the \cs{listof} command
 % for new floats, but \pkg{float} does not,
@@ -78091,7 +88713,7 @@
 \NewDocumentEnvironment{KFLTmemoir at marginfloat}{O{-1.2ex} m}
 {% start
     \LWR at BlockClassWP{float:right; width:2in; margin:10pt}{}{marginblock}%
-    \captionsetup{type=#2}%
+    \renewcommand*{\@captype}{#2}%
 }
 {%
     \endLWR at BlockClassWP%
@@ -78118,7 +88740,13 @@
 \renewcommand*{\setFloatBlockFor}{}
 
 \renewcommand{\captiontitlefinal}[1]{}
-
+%    \end{macrocode}
+%
+% \cs{flegtable}, \cs{flegfigure}, \cs{flegtoctable}, \cs{flegtocfigure}
+% are defined by \pkg{memoir} using \cs{newfloat}.
+% These are defined with an |@| in \pkg{ccaption}.
+%
+%    \begin{macrocode}
 \renewcommand{\flegtable}{\tablename}
 \renewcommand{\flegfigure}{\figurename}
 \renewcommand{\flegtoctable}{}
@@ -78125,17 +88753,15 @@
 \renewcommand{\flegtocfigure}{}
 %    \end{macrocode}
 %
-% \cs{subfloat} is from the \pkg{subcaption} package.
-% \changes{v0.83}{2020/03/27}{\pkg{lwarp-patch-memoir}: Use \pkg{subcaption} instead of \pkg{subfig}.}
+% \changes{v0.84}{2020/04/05}{\pkg{lwarp-patch-memoir}: No longer uses \pkg{subcaption}.}
 %    \begin{macrocode}
-\renewcommand{\subcaption}[2][]{%
-    \ifblank{#1}{\subfloat[#2]{}}{\subfloat[#1][#2]{}}%
+\renewcommand{\@makesubfloatcaption}[2]{%
+    \minipagefullwidth
+    \begin{minipage}{\linewidth}%
+    #1 \ignorespaces #2 \unskip%
+    \end{minipage}
 }
 
-\renewcommand{\contsubcaption}{\ContinuedFloat\subcaption}
-
-\LetLtxMacro\subcaptionref\subref
-
 \renewcommand*{\tightsubcaptions}{}
 \renewcommand*{\loosesubcaptions}{}
 
@@ -78162,11 +88788,18 @@
 % \newif\ifscapmargleft
 \scapmargleftfalse
 \renewcommand*{\setsidecappos}[1]{}
-
+%    \end{macrocode}
+%
+%
+% \begin{noindenvironment}{sidecontcaption}
+% \changes{v0.84}{2020/04/20}{\pkg{lwarp-patch-memoir}: \pkg{caption} now optional, removed dup caption.}
+%    \begin{macrocode}
 \RenewDocumentEnvironment{sidecontcaption}{m o}
 {}
 {%
-    \ContinuedFloat%
+    \ifdef{\ContinuedFloat}%
+        {\ContinuedFloat}%
+        {\addtocounter{\@captype}{-1}}%
     \caption{#1}%
 %    \end{macrocode}
 % Without \cs{@captype}, the section is referred to instead.
@@ -78174,6 +88807,9 @@
     \IfValueT{#2}{\label[\@captype]{#2}}%
 }
 %    \end{macrocode}
+% \end{noindenvironment}
+%
+%
 % \cs{sidenamedlegend} does not appear to use the \TOC\ argument.
 %    \begin{macrocode}
 \renewenvironment{sidenamedlegend}[2][]{
@@ -78207,7 +88843,7 @@
 }
 %    \end{macrocode}
 %
-% \subsection{Page notes}
+% \subsection{Footnotes and page notes}
 %
 %    \begin{macrocode}
 \renewcommand*{\feetabovefloat}{}
@@ -78216,7 +88852,7 @@
 
 \renewcommand*{\verbfootnote}[2][]{%
     \PackageError{lwarp,memoir}%
-    {Verbatim footnotes are not yet supported by lwarp.}%
+    {Verbatim footnotes are not yet supported by lwarp}%
     {This may be improved some day.}%
 }
 
@@ -78228,7 +88864,7 @@
 
 \renewcommand*{\newfootnoteseries}[1]{%
     \PackageError{lwarp,memoir}%
-    {Memoir footnote series are not yet supported by lwarp.}%
+    {Memoir footnote series are not yet supported by lwarp}%
     {This may be improved some day.}%
 }
 
@@ -78285,18 +88921,61 @@
 \renewcommand*{\sidefootmarkstyle}[1]{}
 \renewcommand*{\sidefoottextfont}{}
 \renewcommand*{\sidefootform}{}
-
+%    \end{macrocode}
+%
+% \changes{v0.84}{2020/03/31}{\pkg{lwarp-patch-memoir}: Fixed pagenotes.}
+%    \begin{macrocode}
 \renewcommand*{\continuousnotenums}{\pncontopttrue}% from pagenote
 \renewcommand*{\notepageref}{}
 \renewcommand*{\prenotetext}{}
 \renewcommand*{\postnotetext}{}
-\renewcommand*{\idtextinnotes}[1]{}
-\renewcommand*{\printpageinnotes}[1]{}
-\renewcommand*{\printpageinnoteshyperref}[1]{}
+\LetLtxMacro\printpageinnoteshyperref\printpageinnotes
 \renewcommand*{\foottopagenote}{}
 \renewcommand*{\pagetofootnote}{}
 %    \end{macrocode}
 %
+% \begin{noindmacro}{\m at m@wrpnote}
+% \begin{noindmacro}{\startnoteentrystart}
+% To have \pkg{cleveref} work with page note labels,
+% the following patch writes \cs{thepagenote} and also adds |\arabic{pagenote}|
+% to the first argument written to the \filenm{.ent} file:
+% \begin{sourcedisplay}
+% \cs{startnoteentry}\textred{\{}\{\cs{thepagenote}\}\{\cs{arabic}\{pagenote\}\}\textred{\}} \dots
+% \end{sourcedisplay}
+% The arabic value is required for \pkg{cleveref}.
+% \cs{thepagenote} becomes |\@firstoftwo#1| and
+% the arabic value becomes |\@secondoftwo#1|.
+%
+% Note that for print mode,\watchout[\cs{nameref}]
+% \cs{nameref} print the section name where the page notes are
+% declared in the text, but for \HTML\ it prints the name where the page notes are printed.
+% \changes{v0.84}{2020/04/02}{\pkg{lwarp-patch-memoir}: Improved \pkg{cleveref} support.}
+%    \begin{macrocode}
+\xpatchcmd{\m at m@wrpnote}
+    {\string\startnoteentry{\thepagenote}}
+    {\string\startnoteentry{{\thepagenote}{\arabic{pagenote}}}}
+    {}
+    {\LWR at patcherror{memoir}{m at m@wrpnote}}
+
+\renewcommand\startnoteentrystart[4]{%
+  \prenoteinnotes%
+  \noteidinnotes{\@firstoftwo#1}{#2}%
+  \@ifmtarg{#2}{%
+%         \phantomsection\def\@currentlabel{#1}%            original
+        \def\@currentlabel{\@firstoftwo#1}%                 lwarp
+        \def\cref at currentlabel{%                            lwarp
+            [pagenote][\@secondoftwo#1][]\@firstoftwo#1%    lwarp
+        }%                                                  lwarp
+  }{}%
+  \pagenoteanchor{#4}%
+  \pageinnotes{#3}%
+  \prenotetext%
+}
+%    \end{macrocode}
+% \end{noindmacro}
+% \end{noindmacro}
+%
+%
 % \subsection{Decorative text}
 %
 %    \begin{macrocode}
@@ -78345,12 +89024,10 @@
 \renewenvironment{qshade}{\shaded}{\endshaded}
 %    \end{macrocode}
 %
-% Use the \pkg{comment} package:
+% \changes{v0.84}{2020/03/30}{\pkg{lwarp-patch-memoir}: Uses \pkg{memoir}'s
+%                               \cs{newcomment}, \cs{commentsoff}, \cs{commentson}.}
+%
 %    \begin{macrocode}
-\renewcommand*{\commentsoff}[1]{\includecomment{#1}}
-\renewcommand*{\commentson}[1]{\excludecomment{#1}}
-\LetLtxMacro\renewcomment\commentson
-
 \renewcommand*{\setverbatimfont}[1]{}
 \renewcommand*{\tabson}[1]{}
 \renewcommand*{\tabsoff}{}
@@ -78429,6 +89106,7 @@
 % \subsection{Back matter}
 % \label{sec:memoirbackmatter}
 %
+% \begin{noindmacro}{\@@wrindexhyp}
 % Redefined to write the |LWR at autoindex| counter instead of |page|.
 % Note that \pkg{memoir} has two versions, depending on the use of \pkg{hyperref}.
 %    \begin{macrocode}
@@ -78436,7 +89114,7 @@
 
 \def\@@wrindexhyp#1||\\{%
     \addtocounter{LWR at autoindex}{1}%
-    \LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%
+    \label{LWRindex-\arabic{LWR at autoindex}}%
 %     \ifshowindexmark\@showidx{#1}\fi
     \protected at write\@auxout{}%
 %         {\string\@@wrindexm at m{\@idxfile}{#1}{\thepage}}%
@@ -78444,7 +89122,9 @@
     \endgroup
     \@esphack}%
 %    \end{macrocode}
+% \end{noindmacro}
 %
+% \begin{noindmacro}{\@@wrspindexhyp}
 % \label{sec:specialindex}
 % \cs{specialindex} behaves like a regular \cs{index}, pointing to where
 % \cs{specialindex} is used.
@@ -78454,7 +89134,7 @@
 %    \begin{macrocode}
 \def\@@wrspindexhyp#1||\\{%
     \addtocounter{LWR at autoindex}{1}%
-    \LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%
+    \label{LWRindex-\arabic{LWR at autoindex}}%
 %     \ifshowindexmark\@showidx{#1}\fi
     \protected at write\@auxout{}%
 %         {\string\@@wrindexm at m{\@idxfile}{#1}{\@nameuse{the\@sptheidx}}}%
@@ -78464,8 +89144,10 @@
 
 }% \AtBeginDocument
 %    \end{macrocode}
+% \end{noindmacro}
 
 
+% \begin{noindmacro}{\@spindex}
 % Patched to append |_html| to the file:
 % \changes{v0.83}{2020/03/26}{\pkg{lwarp-patch-memoir}: Fixed: \cs{specialindex}.}
 %    \begin{macrocode}
@@ -78483,8 +89165,10 @@
    \@sanitize
    \@wrspindex}}
 %    \end{macrocode}
+% \end{noindmacro}
 
 
+% \begin{noindmacro}{\makeindex}
 % Patched to use |_html| filename and \cs{BaseJobname}:
 % \changes{v0.58}{2018/06/22}{\pkg{lwarp-patch-memoir}: Fix for multiple indexes.}
 %    \begin{macrocode}
@@ -78501,7 +89185,9 @@
   \fi}
 \catcode`\_=8%
 %    \end{macrocode}
+% \end{noindmacro}
 
+% \begin{noindmacro}{\printindex}
 % Patched to use |_html| filename and \cs{BaseJobname}.
 % This will later be patched by the \pkg{lwarp} core.
 % \changes{v0.58}{2018/06/22}{\pkg{lwarp-patch-memoir}: Fix for multiple indexes.}
@@ -78510,6 +89196,7 @@
 \renewcommand{\printindex}[1][\BaseJobname]{\@input@{#1_html.ind}}
 \catcode`\_=8%
 %    \end{macrocode}
+% \end{noindmacro}
 %
 %    \begin{macrocode}
 \DeclareDocumentCommand{\newblock}{}{}
@@ -78606,7 +89293,13 @@
     \end{center}
     \@nameuse{flegtoc\@captype}{#1}
 }
-
+%    \end{macrocode}
+%
+% \cs{flegtable}, \cs{flegfigure}, \cs{flegtoctable}, \cs{flegtocfigure}
+% are defined by \pkg{memoir} using \cs{newfloat}.
+% These are defined with an |@| in \pkg{ccaption}.
+%
+%    \begin{macrocode}
 \renewcommand{\newfixedcaption}[3][\caption]{%
   \renewcommand{#2}{\def\@captype{#3}#1}}
 \renewcommand{\renewfixedcaption}[3][\caption]{%
@@ -78643,52 +89336,105 @@
     \endgroup%
 }
 %    \end{macrocode}
-% ^^A *8* todo:
+%
+% ^^A *88*
+% Only in \pkg{ccaption}, not in \pkg{memoir}:
 %    \begin{macrocode}
-% only in ccaption, not in memoir:
 % \LetLtxMacro\longbitwonumcaption\bitwonumcaption%
 % \LetLtxMacro\longbionenumcaption\bitwonumcaption%
 % \LetLtxMacro\longbicaption\bicaption%
-
-\RenewDocumentCommand{\subtop}{O{} O{} m}{%
-    \subfloat[#1][#2]{#3}%
-}
-
-\RenewDocumentCommand{\subbottom}{O{} O{} m}{%
-    \subfloat[#1][#2]{#3}%
-}
 %    \end{macrocode}
 %
-% \changes{v0.83}{2020/03/27}{\pkg{lwarp-patch-memoir}: Fixed: \cs{contsubtop}, \cs{contsubbottom}.}
+% Patches for subfloats to support additional \pkg{lwarp} labels:
 %    \begin{macrocode}
-\renewcommand{\contsubtop}{%
-    \ContinuedFloat
-    \subtop%
-}
+\renewcommand{\@memsubbody}{%
+  \bgroup
+  \let\label=\memsub at label
+  \ifdonemaincaption\else
+    \advance\csname c@\@captype\endcsname\@ne
+  \fi
+  % \refstepcounter{sub\@captype}\@contkeep%
+%   \leavevmode%            lwarp
+  \@ifnextchar [%
+    {\@memsubfig}%
+    {\@memsubfig[\@empty]}}
 
-\renewcommand{\contsubbottom}{%
-    \ContinuedFloat
-    \subbottom%
+\renewcommand{\@memcontsubbody}{%
+  \bgroup
+  \let\label=\memsub at label
+  \@contset
+  % \refstepcounter{sub\@captype}\@contkeep%
+%   \leavevmode%            lwarp
+  \@ifnextchar [%
+    {\@memsubfig}%
+    {\@memsubfig[\@empty]}}
+
+
+\long\def\@memsubfloat#1[#2][#3]#4{%
+%   \@tempcnta=\@ne
+%   \if at tightsubcap
+%     \if at minipage
+%       \@tempcnta=\z@
+%     \else
+%       \ifdim\lastskip=\z@
+%         \@tempcnta=\@ne
+%       \else
+%         \@tempcnta=\tw@
+%       \fi
+%     \fi
+%   \fi
+%   \if at contbotsub
+%     \def\subfig at top{\subfloattopskip}%
+%     \def\subfig at bottom{\subfloatbottomskip}%
+%   \else
+%     \def\subfig at top{\subfloatbottomskip}%
+%     \def\subfig at bottom{\subfloattopskip}%
+%   \fi
+%   \setbox\@tempboxa \hbox{#4}%
+%   \@tempdima=\wd\@tempboxa
+%   \vbox
+  \bgroup%
+    \mem at step@subcounter%
+%     \vbox
+    \LWR at stoppars%
+    \minipagefullwidth%                 lwarp
+    \begin{minipage}{\linewidth}%       lwarp
+    \bgroup
+%     \ifcase\@tempcnta
+%       \@minipagefalse
+%     \or
+%       \vspace{\subfig at top}
+%     \or
+%       \ifdim \lastskip=\z@ \else
+%         \@tempskipb\subfig at top\@xaddvskip
+%       \fi
+%     \fi
+    \if at contbotsub
+      #4% \box\@tempboxa
+      \egroup
+      \ifx \@empty#3\relax \else
+%         \vskip\subfloatcapskip
+        \@memsubcaption{#1}{#2}{#3}%
+      \fi
+    \else
+      \ifx \@empty#3\relax \else
+        \@memsubcaption{#1}{#2}{#3}%
+%         \vskip\subfloatcapskip
+%         \vskip\subfloatcaptopadj
+      \fi\egroup
+      #4% \box\@tempboxa
+    \fi
+%     \vspace{\subfig at bottom}
+    \end{minipage}%                     lwarp
+    \LWR at startpars%                     lwarp
+  \egroup
+\egroup
 }
 %    \end{macrocode}
-%    \begin{macrocode}
-\renewcommand{\subconcluded}{}
-
-\let\contsubtable\contsubtop
-\let\contsubfigure\contsubbottom
-%    \end{macrocode}
-% ^^A *8* todo:
-% ^^A tocloft stuff
-%    \begin{macrocode}
-\newcommand{\newfloatentry}[4][\@empty]{TODO: newfloatentry}
-\newcommand{\newfloatlist}[5][\@empty]{TODO: newfloatlist}
-\newcommand{\newfloatenv}[4][\@empty]{TODO: newfloatenv}
-\DeclareRobustCommand{\newfloatpagesoff}[1]{}
-\DeclareRobustCommand{\newfloatpageson}[1]{}
-\newcommand{\setnewfloatindents}[3]{}
-%    \end{macrocode}
 %
+% \changes{v0.84}{2020/04/05}{\pkg{lwarp-patch-memoir}: \cs{contsubtop}, etc. now as-is.}
 %
+%
 % \subsection{Final patchwork}
 %
 %    \begin{macrocode}
@@ -78702,6 +89448,8 @@
 % \fi
 %
 %
+%
+%
 % \addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
 %
 %
@@ -78822,7 +89570,7 @@
 % \changes{v0.78}{2019/11/07}{\pkg{lwarp-common-multimedia}: Fix links with new LaTeX kernel.}
 %    \begin{macrocode}
     \LWR at startpars
-    \href{\LWR at parsedfilename}{#1}
+    \LWR at href{\LWR at parsedfilename}{#1}
     \LWR at stoppars
 %    \end{macrocode}
 % Finish.
@@ -78831,8 +89579,8 @@
     \end{BlockClass}
 }{%
     \PackageError{lwarp-common-multimedia}
-    {File '#2' not found}
-    {Perhaps an incorrect path?}
+        {File '#2' not found}
+        {Perhaps an incorrect path?}
 }%
 }
 %    \end{macrocode}
@@ -78880,7 +89628,7 @@
 % The poster text inside paragraph tags, along with a reference to the \URL.
 %    \begin{macrocode}
     \LWR at startpars
-    \href{#2}{#1}
+    \LWR at href{#2}{#1}
     \LWR at stoppars
 %    \end{macrocode}
 % Finish.
@@ -78938,11 +89686,13 @@
 \newcommand*{\LWR at multimedia@percenterror}{%
     \PackageError{lwarp-media9}
     {%
-        Do not use a percent comment
-        between\MessageBreak
+        Do not use a percent comment between\MessageBreak
         \protect\includemedia\space arguments%
     }
-    {Percent is changed to a regular character to allow its use inside a URL.}
+    {%
+        Percent is changed to a regular character\MessageBreak
+        to allow its use inside a URL.%
+    }
 }
 %    \end{macrocode}
 % \end{noindmacro}
@@ -78993,7 +89743,7 @@
 %    \end{macrocode}
 % If unknown, create a link to it.
 %    \begin{macrocode}
-        \href{#3}{#2}% unknown format
+        \LWR at href{#3}{#2}% unknown format
     }}}}}}}}%
 %    \end{macrocode}
 % Paragraph handling:
@@ -79018,6 +89768,1046 @@
 % \fi
 %
 %
+%
+% ^^A *common-mathjax-letters
+% ^^A *letters
+%
+% \iffalse
+%<*common-mathjax-letters>
+% \fi
+%
+% \part{lwarp-common-mathjax-letters.sty}
+%
+% \section{common-mathjax-letters}
+%
+% \DescribePackage{lwarp-common-mathjax-letters}
+% Common code used by a number of packages to generate Greek math characters
+% for \brand{MathJax}.
+%
+% \changes{v0.89}{2020/08/10}{\pkg{lwarp-common-mathjax-letters}: Added.}
+% \changes{v0.893}{2020/08/10}{\pkg{lwarp-common-mathjax-letters}: Added \cs{varbeta}.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\ProvidesPackage{lwarp-common-mathjax-letters}[2020/08/10]
+%    \end{macrocode}
+%
+%
+% \begin{noindmacro}{\LWR at mathjax@addletter}
+%   * \marg{2: capitalize name?} \marg{3: prefix} \marg{4: postfix}
+%   \marg{5: name} \marg{6: unicode}
+%
+% Star to italicize the result, used when the unicode character does not exist.
+%    \begin{macrocode}
+\begin{warpMathJax}
+
+\NewDocumentCommand{\LWR at mathjax@addletter}{s m m m m m}{
+    \IfBooleanTF{#2}%
+        {\edef\LWR at tempone{\LWRtexttitlecase{#5}}}%
+        {\edef\LWR at tempone{#5}}%
+    \xdef\LWR at customizedMathJax{%
+        \LWR at customizedMathJax%
+        \LWRbackslash(%
+        \LWRbackslash def\LWRbackslash%
+        #3% prefix
+        \LWR at tempone%name
+        #4% postfix
+        \LWRleftbrace%
+    }%
+    \IfBooleanTF{#1}{%
+        \xdef\LWR at customizedMathJax{%
+            \LWR at customizedMathJax%
+            \LWRbackslash mathit\LWRleftbrace%
+            \LWRbackslash unicode\LWRleftbrace x#6\LWRrightbrace%
+            \LWRrightbrace%
+        }%
+    }{%
+        \xdef\LWR at customizedMathJax{%
+            \LWR at customizedMathJax%
+            \LWRbackslash unicode\LWRleftbrace x#6\LWRrightbrace%
+        }%
+    }%
+    \xdef\LWR at customizedMathJax{%
+        \LWR at customizedMathJax%
+        \LWRrightbrace\LWRbackslash)\par%
+    }%
+}
+%    \end{macrocode}
+% \end{noindmacro}
+%
+%
+% \begin{noindmacro}{\LWR at mathjax@addgreek at l@up}
+%   * \marg{2: prefix} \marg{3: postfix}
+%
+% Star to capitalize the macro names.
+%
+% Adds \cs{CustomizeMathjax} expressions to define a set of macros for
+% Greek letters, lowercase upright.
+%    \begin{macrocode}
+\NewDocumentCommand{\LWR at mathjax@addgreek at l@up}{s m m}{
+    \LWR at mathjax@addletter{#1}{#2}{#3}{alpha}{03B1}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{beta}{03B2}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varbeta}{03D0}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{gamma}{03B3}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{digamma}{03DD}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{delta}{03B4}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{epsilon}{03F5}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varepsilon}{03B5}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{zeta}{03B6}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{eta}{03B7}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{theta}{03B8}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{vartheta}{03D1}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{iota}{03B9}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{kappa}{03BA}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varkappa}{03F0}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{lambda}{03BB}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{mu}{03BC}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{nu}{03BD}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{xi}{03BE}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omicron}{03BF}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{pi}{03C0}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varpi}{03D6}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{rho}{03C1}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varrho}{03F1}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{sigma}{03C3}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varsigma}{03C2}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{tau}{03C4}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{upsilon}{03C5}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{phi}{03D5}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varphi}{03C6}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{chi}{03C7}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{psi}{03C8}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omega}{03C9}
+}
+%    \end{macrocode}
+% \end{noindmacro}
+%
+%
+% \begin{noindmacro}{\LWR at mathjax@addgreek at u@up}
+%   * \marg{2: prefix} \marg{3: postfix}
+%
+% Star to capitalize the macro names.
+%
+% Adds \cs{CustomizeMathjax} expressions to define a set of macros for
+% Greek letters, uppercase upright.
+%    \begin{macrocode}
+\NewDocumentCommand{\LWR at mathjax@addgreek at u@up}{s m m}{
+    \LWR at mathjax@addletter{#1}{#2}{#3}{alpha}{0391}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{beta}{0392}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{gamma}{0393}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{digamma}{03DC}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{delta}{0394}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{epsilon}{0395}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{zeta}{0396}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{eta}{0397}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{theta}{0398}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{vartheta}{03F4}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{iota}{0399}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{kappa}{039A}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{lambda}{039B}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{mu}{039C}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{nu}{039D}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{xi}{039E}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omicron}{039F}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{pi}{03A0}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varpi}{03D6}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{rho}{03A1}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{sigma}{03A3}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{tau}{03A4}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{upsilon}{03A5}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{phi}{03A6}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{chi}{03A7}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{psi}{03A8}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omega}{03A9}
+}
+%    \end{macrocode}
+% \end{noindmacro}
+%
+%
+% \begin{noindmacro}{\LWR at mathjax@addgreek at l@it}
+%   * \marg{2: prefix} \marg{3: postfix}
+%
+% Star to capitalize the macro names.
+%
+% Adds \cs{CustomizeMathjax} expressions to define a set of macros for
+% Greek letters, lowercase italic.
+%
+%    \begin{macrocode}
+\NewDocumentCommand{\LWR at mathjax@addgreek at l@it}{s m m}{
+    \LWR at mathjax@addletter{#1}{#2}{#3}{alpha}{1D6FC}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{beta}{1D6FD}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varbeta}{03D0}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{gamma}{1D6FE}
+    \LWR at mathjax@addletter*{#1}{#2}{#3}{digamma}{03DD}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{delta}{1D6FF}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{epsilon}{1D716}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varepsilon}{1D700}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{zeta}{1D701}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{eta}{1D702}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{theta}{1D703}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{vartheta}{1D717}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{iota}{1D704}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{kappa}{1D705}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varkappa}{1D718}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{lambda}{1D706}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{mu}{1D707}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{nu}{1D708}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{xi}{1D709}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omicron}{1D70A}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{pi}{1D70B}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varpi}{1D71B}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{rho}{1D70C}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varrho}{1D71A}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{sigma}{1D70E}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varsigma}{1D70D}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{tau}{1D70F}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{upsilon}{1D710}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{phi}{1D719}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varphi}{1D711}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{chi}{1D712}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{psi}{1D713}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omega}{1D714}
+}
+%    \end{macrocode}
+% \end{noindmacro}
+%
+%
+% \begin{noindmacro}{\LWR at mathjax@addgreek at u@it}
+%   * \marg{2: prefix} \marg{3: postfix}
+%
+% Star to capitalize the macro names.
+%
+% Adds \cs{CustomizeMathjax} expressions to define a set of macros for
+% Greek letters, uppercase italic.
+%    \begin{macrocode}
+\NewDocumentCommand{\LWR at mathjax@addgreek at u@it}{s m m}{
+    \LWR at mathjax@addletter{#1}{#2}{#3}{alpha}{1D6E2}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{beta}{1D6E3}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{gamma}{1D6E4}
+    \LWR at mathjax@addletter*{#1}{#2}{#3}{digamma}{03DC}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{delta}{1D6E5}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{epsilon}{1D6E6}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{zeta}{1D6E7}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{eta}{1D6E8}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{theta}{1D6E9}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{vartheta}{1D6F3}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{iota}{1D6EA}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{kappa}{1D6EB}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{lambda}{1D6EC}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{mu}{1D6ED}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{nu}{1D6EE}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{xi}{1D6EF}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omicron}{1D6F0}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{pi}{1D6F1}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{rho}{1D6F2}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{sigma}{1D6F4}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{tau}{1D6F5}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{upsilon}{1D6F6}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{phi}{1D6F7}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{chi}{1D6F8}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{psi}{1D6F9}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omega}{1D6FA}
+}
+%    \end{macrocode}
+% \end{noindmacro}
+%
+%
+% \begin{noindmacro}{\LWR at mathjax@addgreek at l@bfit}
+%   * \marg{2: prefix} \marg{3: postfix}
+%
+% Star to capitalize the macro names.
+%
+% Adds \cs{CustomizeMathjax} expressions to define a set of macros for
+% Greek letters, lowercase boldface italic.
+%
+%    \begin{macrocode}
+\NewDocumentCommand{\LWR at mathjax@addgreek at l@bfit}{s m m}{
+    \LWR at mathjax@addletter{#1}{#2}{#3}{alpha}{1D736}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{beta}{1D737}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varbeta}{03D0}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{gamma}{1D738}
+    \LWR at mathjax@addletter*{#1}{#2}{#3}{digamma}{03DD}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{delta}{1D739}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{epsilon}{1D750}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varepsilon}{1D73A}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{zeta}{1D73B}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{eta}{1D73C}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{theta}{1D73D}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{vartheta}{1D751}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{iota}{1D73E}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{kappa}{1D73F}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varkappa}{1D752}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{lambda}{1D740}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{mu}{1D741}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{nu}{1D742}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{xi}{1D743}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omicron}{1D744}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{pi}{1D745}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varpi}{1D755}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{rho}{1D746}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varrho}{1D754}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{sigma}{1D748}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varsigma}{1D747}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{tau}{1D749}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{upsilon}{1D74A}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{phi}{1D753}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varphi}{1D74B}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{chi}{1D74C}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{psi}{1D74D}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omega}{1D74E}
+}
+%    \end{macrocode}
+% \end{noindmacro}
+%
+%
+% \begin{noindmacro}{\LWR at mathjax@addgreek at u@bfit}
+%   * \marg{2: prefix} \marg{3: postfix}
+%
+% Star to capitalize the macro names.
+%
+% Adds \cs{CustomizeMathjax} expressions to define a set of macros for
+% Greek letters, uppercase boldface italic.
+%    \begin{macrocode}
+\NewDocumentCommand{\LWR at mathjax@addgreek at u@bfit}{s m m}{
+    \LWR at mathjax@addletter{#1}{#2}{#3}{alpha}{1D71C}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{beta}{1D71D}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{gamma}{1D71E}
+    \LWR at mathjax@addletter*{#1}{#2}{#3}{digamma}{03DC}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{delta}{1D71F}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{epsilon}{1D720}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{zeta}{1D721}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{eta}{1D722}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{theta}{1D723}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{vartheta}{1D72D}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{iota}{1D724}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{kappa}{1D725}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{lambda}{1D726}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{mu}{1D727}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{nu}{1D728}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{xi}{1D729}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omicron}{1D72A}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{pi}{1D72B}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{rho}{1D72C}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{sigma}{1D72E}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{tau}{1D72F}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{upsilon}{1D730}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{phi}{1D731}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{chi}{1D732}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{psi}{1D733}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omega}{1D734}
+}
+%    \end{macrocode}
+% \end{noindmacro}
+%
+% \cs{LWR at mathjax@addgreek at u@bfup} is not needed.
+%
+% \begin{noindmacro}{\LWR at mathjax@addgreek at u@bfup}
+%   * \marg{2: prefix} \marg{3: postfix}
+%
+% Star to capitalize the macro names.
+%
+% Adds \cs{CustomizeMathjax} expressions to define a set of macros for
+% Greek letters, uppercase boldface upright.
+%    \begin{macrocode}
+\NewDocumentCommand{\LWR at mathjax@addgreek at u@bfup}{s m m}{
+    \LWR at mathjax@addletter{#1}{#2}{#3}{alpha}{1D6A8}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{beta}{1D6A9}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{gamma}{1D6AA}
+    \LWR at mathjax@addletter*{#1}{#2}{#3}{digamma}{03DC}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{delta}{1D6AB}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{epsilon}{1D6AC}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{zeta}{1D6AD}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{eta}{1D6AE}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{theta}{1D6AF}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{vartheta}{1D6B9}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{iota}{1D6B0}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{kappa}{1D6B1}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{lambda}{1D6B2}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{mu}{1D6B3}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{nu}{1D6B4}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{xi}{1D6B5}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omicron}{1D6B6}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{pi}{1D6B7}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{rho}{1D6B8}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{sigma}{1D6BA}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{tau}{1D6BB}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{upsilon}{1D6BC}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{phi}{1D6BD}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{chi}{1D6BE}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{psi}{1D6BF}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omega}{1D6C0}
+}
+%    \end{macrocode}
+% \end{noindmacro}
+%
+%
+% \begin{noindmacro}{\LWR at mathjax@addlatin at u@bfit} \marg{prefix}
+%
+% Adds \cs{CustomizeMathjax} expressions to define a set of macros for
+% bold-face italic Latin letters, uppercase and lowercase.
+%    \begin{macrocode}
+\NewDocumentCommand{\LWR at mathjax@addlatin at u@bfit}{m}{
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{A}{1D468}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{B}{1D469}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{C}{1D46A}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{D}{1D46B}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{E}{1D46C}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{F}{1D46D}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{G}{1D46E}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{H}{1D46F}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{I}{1D470}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{J}{1D471}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{K}{1D472}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{L}{1D473}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{M}{1D474}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{N}{1D475}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{O}{1D476}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{P}{1D477}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{Q}{1D478}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{R}{1D479}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{S}{1D47A}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{T}{1D47B}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{U}{1D47C}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{V}{1D47D}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{W}{1D47E}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{X}{1D47F}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{Y}{1D480}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{Z}{1D481}
+}
+%    \end{macrocode}
+% \end{noindmacro}
+%
+% \begin{noindmacro}{\LWR at mathjax@addlatin at l@bfit} \marg{prefix}
+%
+% Adds \cs{CustomizeMathjax} expressions to define a set of macros for
+% bold-face italic Latin letters, uppercase and lowercase.
+%    \begin{macrocode}
+\NewDocumentCommand{\LWR at mathjax@addlatin at l@bfit}{m}{
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{a}{1D482}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{b}{1D483}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{c}{1D484}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{d}{1D485}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{e}{1D486}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{f}{1D487}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{g}{1D488}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{h}{1D489}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{i}{1D48A}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{j}{1D48B}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{k}{1D48C}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{l}{1D48D}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{m}{1D48E}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{n}{1D48F}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{o}{1D490}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{p}{1D491}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{q}{1D492}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{r}{1D493}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{s}{1D494}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{t}{1D495}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{u}{1D496}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{v}{1D497}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{w}{1D498}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{x}{1D499}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{y}{1D49A}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{z}{1D49B}
+}
+%    \end{macrocode}
+% \end{noindmacro}
+%
+%
+%    \begin{macrocode}
+\end{warpMathJax}
+%    \end{macrocode}
+
+
+% \iffalse
+%</common-mathjax-letters>
+% \fi
+%
+%
+%
+%
+% ^^A *common-mathjax-newpxtxmath
+% ^^A *newpxtxmath
+%
+% \iffalse
+%<*common-mathjax-newpxtxmath>
+% \fi
+%
+% \part{lwarp-common-mathjax-newpxtxmath.sty}
+%
+% \section{common-mathjax-newpxtxmath}
+%
+% \credits{Michael Sharpe}
+%
+% \DescribePackage{lwarp-common-mathjax-newpxtxmath}
+% Common code used by \pkg{newpxmath}, \pkg{newtxmath}, and \pkg{newtxsf}
+% for \brand{MathJax}.
+%
+% \changes{v0.89}{2020/08/31}{\pkg{lwarp-common-mathjax-newpxtxmath}: Added.}
+% \changes{v0.891}{2020/09/20}{\pkg{lwarp-common-mathjax-newpxtxmath}: Reverse factored out Greek, non-\brand{Unicode}.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\ProvidesPackage{lwarp-common-mathjax-newpxtxmath}[2020/09/20]
+%    \end{macrocode}
+%
+% For \brand{MathJax}:
+%    \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-nonunicode}
+\LWR at origRequirePackage{lwarp-common-mathjax-overlaysymbols}
+
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\fAlt}{f}}
+\CustomizeMathJax{\newcommand{\rhoAlt}{\rho}}
+
+\CustomizeMathJax{\newcommand{\imathscr}{\mathord{\mathscr{i}}}}
+\CustomizeMathJax{\newcommand{\jmathscr}{\mathord{\mathscr{j}}}}
+%    \end{macrocode}
+%
+% \filenm{lwarp_mathjax.txt} adds \cs{left} \Slash \cs{right} support for
+% delimiters.
+% \changes{v0.892}{2020/09/26}{\pkg{lwarp-common-mathjax-newpxtxmath}: Added \cs{left} \Slash \cs{right} support in \filenm{lwarp_mathjax.txt}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\let\llbracket\lBrack}
+\CustomizeMathJax{\let\rrbracket\rBrack}
+
+\CustomizeMathJax{\let\smlbrace\{}
+\CustomizeMathJax{\let\smrbrace\}}
+\CustomizeMathJax{\newcommand{\Perp}{\mathrel{\unicode{x02AEB}}}}
+\CustomizeMathJax{\newcommand{\nPerp}{\mathrel{\not{\!\unicode{x02AEB}}}}}
+\CustomizeMathJax{\newcommand{\Zbar}{\mathord{\unicode{x01B5}}}}
+\CustomizeMathJax{\newcommand{\Angstrom}{\mathord{\unicode{x212B}}}}
+\CustomizeMathJax{\newcommand{\Euler}{\mathord{\unicode{x2107}}}}
+\CustomizeMathJax{\newcommand{\transp}{\mathord{\unicode{xFF34}}}}
+\CustomizeMathJax{\newcommand{\hermtransp}{\mathord{\unicode{xFF28}}}}
+\CustomizeMathJax{\let\htransp=\hermtransp}
+\CustomizeMathJax{\newcommand{\circledplus}{\mathbin{\unicode{x2295}}}}
+\CustomizeMathJax{\newcommand{\circledminus}{\mathbin{\unicode{x2296}}}}
+\CustomizeMathJax{\newcommand{\circledtimes}{\mathbin{\unicode{x2297}}}}
+%    \end{macrocode}
+% \changes{v0.891}{2020/09/19}{\pkg{lwarp-common-mathjax-newpxtxmath}: Expanded for \pkg{kpfonts}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\circledslash}{\mathbin{\unicode{x2298}}}}
+%
+\CustomizeMathJax{\newcommand{\circleddot}{\mathbin{\unicode{x2299}}}}
+\CustomizeMathJax{\let\overgroup\overparen}
+\CustomizeMathJax{\let\overgroupra\overrightarrow}
+\CustomizeMathJax{\let\undergroup\underparen}
+\CustomizeMathJax{\let\undergroupla\underleftarrow}
+\CustomizeMathJax{\newcommand{\widering}[1]{\stackrel{\unicode{x2218}}{\overgroup{#1}}}}
+\CustomizeMathJax{\let\widearc\overparen}
+\CustomizeMathJax{\let\wideOarc\overrightarrow}
+\CustomizeMathJax{\newcommand{\LWRvvstar}[2]{{\overrightarrow{#1}_{#2}}}}
+\CustomizeMathJax{\newcommand{\vv}{\ifstar\LWRvvstar\overrightarrow}}
+%
+\CustomizeMathJax{\let\smallintsl\smallint}
+\CustomizeMathJax{\newcommand{\smalliintsl}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiintsl}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiiintsl}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\newcommand{\smallointsl}{\mathop{\unicode{x222E}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiintsl}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiiintsl}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\newcommand{\smallvarointclockwisesl}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\smallointctrclockwisesl}{\mathop{\unicode{x2233}}\limits}}
+\CustomizeMathJax{\newcommand{\smallsumintsl}{\mathop{\unicode{x2A0B}}\limits}}
+\CustomizeMathJax{\newcommand{\smallfintsl}{\mathop{\unicode{x2A0F}}\limits}}
+\CustomizeMathJax{\newcommand{\smallsqintsl}{\mathop{\unicode{x2A16}}\limits}}
+%
+\CustomizeMathJax{\let\smallintup\smallint}
+\CustomizeMathJax{\newcommand{\smalliintup}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiintup}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiiintup}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\newcommand{\smallointup}{\mathop{\unicode{x222E}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiintup}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiiintup}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\newcommand{\smallvarointclockwiseup}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\smallointctrclockwiseup}{\mathop{\unicode{x2233}}\limits}}
+\CustomizeMathJax{\newcommand{\smallsumintup}{\mathop{\unicode{x2A0B}}\limits}}
+\CustomizeMathJax{\newcommand{\smallfintup}{\mathop{\unicode{x2A0F}}\limits}}
+\CustomizeMathJax{\newcommand{\smallsqintup}{\mathop{\unicode{x2A16}}\limits}}
+%
+\CustomizeMathJax{\newcommand{\iint}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiint}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\iiiint}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\newcommand{\oiint}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiint}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\newcommand{\varointclockwise}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\ointctrclockwise}{\mathop{\unicode{x2233}}\limits}}
+\CustomizeMathJax{\newcommand{\sumint}{\mathop{\unicode{x2A0B}}\limits}}
+\CustomizeMathJax{\newcommand{\fint}{\mathop{\unicode{x2A0F}}\limits}}
+\CustomizeMathJax{\newcommand{\sqint}{\mathop{\unicode{x2A16}}\limits}}
+%
+\CustomizeMathJax{\let\intsl\int}
+\CustomizeMathJax{\newcommand{\iintsl}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintsl}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\iiiintsl}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\let\ointsl\oint}
+\CustomizeMathJax{\newcommand{\oiintsl}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiintsl}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\newcommand{\varointclockwisesl}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\ointctrclockwisesl}{\mathop{\unicode{x2233}}\limits}}
+\CustomizeMathJax{\newcommand{\sumintsl}{\mathop{\unicode{x2A0B}}\limits}}
+\CustomizeMathJax{\newcommand{\fintsl}{\mathop{\unicode{x2A0F}}\limits}}
+\CustomizeMathJax{\newcommand{\sqintsl}{\mathop{\unicode{x2A16}}\limits}}
+%
+\CustomizeMathJax{\let\intup\int}
+\CustomizeMathJax{\newcommand{\iintup}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintup}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\iiiintup}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\let\ointup\oint}
+\CustomizeMathJax{\newcommand{\oiintup}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiintup}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\newcommand{\varointclockwiseup}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\ointctrclockwiseup}{\mathop{\unicode{x2233}}\limits}}
+\CustomizeMathJax{\newcommand{\sumintup}{\mathop{\unicode{x2A0B}}\limits}}
+\CustomizeMathJax{\newcommand{\fintup}{\mathop{\unicode{x2A0F}}\limits}}
+\CustomizeMathJax{\newcommand{\sqintup}{\mathop{\unicode{x2A16}}\limits}}
+%
+\CustomizeMathJax{\newcommand{\bigcupdot}{\mathop{\unicode{x2A03}}}}
+\CustomizeMathJax{\newcommand{\bigcupplus}{\mathop{\unicode{x2A04}}}}
+\CustomizeMathJax{\newcommand{\bigsqcap}{\mathop{\unicode{x2A05}}}}
+%
+%    \end{macrocode}
+% \changes{v0.891}{2020/09/20}{\pkg{lwarp-common-mathjax-newpxtxmath}: Factored non-\brand{Unicode}.}
+%    \begin{macrocode}
+%
+\CustomizeMathJax{\newcommand{\bigtimes}{\mathop{\unicode{x2A09}}}}
+\CustomizeMathJax{\let\varprod\bigtimes}
+%
+%    \end{macrocode}
+% \changes{v0.891}{2020/09/19}{\pkg{lwarp-common-mathjax-newpxtxmath}: Expanded for \pkg{kpfonts}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\mappedfrom}{\mathrel{\unicode{x021A4}}}}
+\CustomizeMathJax{\let\mappedfromchar\mappedfrom}
+\CustomizeMathJax{\newcommand{\mapsfrom}{\mathrel{\unicode{x021A4}}}}
+\CustomizeMathJax{\newcommand{\longmappedfrom}{\mathrel{\unicode{x027FB}}}}
+%
+\CustomizeMathJax{\newcommand{\Mapsto}{\mathrel{\unicode{x02907}}}}
+\CustomizeMathJax{\let\Mapstochar\Mapsto}
+\CustomizeMathJax{\newcommand{\Longmapsto}{\mathrel{\unicode{x027FE}}}}
+\CustomizeMathJax{\newcommand{\Mappedfrom}{\mathrel{\unicode{x02906}}}}
+\CustomizeMathJax{\let\Mappedfromchar\Mappedfrom}
+\CustomizeMathJax{\newcommand{\Mapsfrom}{\mathrel{\unicode{x02906}}}}
+\CustomizeMathJax{\newcommand{\Longmappedfrom}{\mathrel{\unicode{x27FD}}}}
+%
+%    \end{macrocode}
+% \changes{v0.891}{2020/09/20}{\pkg{lwarp-common-mathjax-newpxtxmath}: Factored non-\brand{Unicode}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\medcirc}{\mathbin{\unicode{x025CB}}}}
+\CustomizeMathJax{\newcommand{\medbullet}{\mathbin{\unicode{x025CF}}}}
+\CustomizeMathJax{\newcommand{\varparallel}{\mathrel{\unicode{x02AFD}}}}
+\CustomizeMathJax{\newcommand{\varparallelinv}{\mathrel{\unicode{x244A}}}}
+\CustomizeMathJax{\newcommand{\nvarparallel}{\mathrel{\LWRoverlaysymbols{-}{\unicode{x02AFD}}}}}
+\CustomizeMathJax{\newcommand{\nvarparallelinv}{\mathrel{\LWRoverlaysymbols{-}{\unicode{x244A}}}}}
+%
+%    \end{macrocode}
+% \changes{v0.891}{2020/09/19}{\pkg{lwarp-common-mathjax-newpxtxmath}: Expanded for \pkg{kpfonts}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\coloneq}{\mathrel{\unicode{x02254}}}}
+\CustomizeMathJax{\newcommand{\eqcolon}{\mathrel{\unicode{x02255}}}}
+%
+\CustomizeMathJax{\newcommand{\VDash}{\mathrel{\unicode{x22AB}}}}
+%    \end{macrocode}
+% \changes{v0.891}{2020/09/20}{\pkg{lwarp-common-mathjax-newpxtxmath}: Factored non-\brand{Unicode}.}
+%    \begin{macrocode}
+%
+\CustomizeMathJax{\newcommand{\preceqq}{\mathrel{\unicode{x02AB3}}}}
+\CustomizeMathJax{\newcommand{\succeqq}{\mathrel{\unicode{x02AB4}}}}
+%
+
+\CustomizeMathJax{\newcommand{\nprecsim}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0227E}}}}}
+\CustomizeMathJax{\newcommand{\nsuccsim}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0227F}}}}}
+\CustomizeMathJax{\newcommand{\nlesssim}{\mathrel{\unicode{x02274}}}}
+\CustomizeMathJax{\newcommand{\ngtrsim}{\mathrel{\unicode{x02275}}}}
+%
+%    \end{macrocode}
+% \changes{v0.891}{2020/09/19}{\pkg{lwarp-common-mathjax-newpxtxmath}: Expanded for \pkg{kpfonts}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\nsubset}{\mathrel{\unicode{x02284}}}}
+\CustomizeMathJax{\newcommand{\nsupset}{\mathrel{\unicode{x02285}}}}
+\CustomizeMathJax{\newcommand{\notni}{\mathrel{\unicode{x220C}}}}
+\CustomizeMathJax{\let\notowns\notni}
+%
+\CustomizeMathJax{\newcommand{\nlessapprox}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x02A85}}}}}
+\CustomizeMathJax{\newcommand{\ngtrapprox}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x02A86}}}}}
+%
+\CustomizeMathJax{\newcommand{\npreccurlyeq}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0227C}}}}}
+\CustomizeMathJax{\newcommand{\nsucccurlyeq}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0227D}}}}}
+\CustomizeMathJax{\newcommand{\ngtrless}{\mathrel{\unicode{x02279}}}}
+\CustomizeMathJax{\newcommand{\nlessgtr}{\mathrel{\unicode{x2278}}}}
+\CustomizeMathJax{\newcommand{\nbumpeq}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0224F}}}}}
+\CustomizeMathJax{\newcommand{\nBumpeq}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0224E}}}}}
+%
+\CustomizeMathJax{\newcommand{\nbacksim}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0223D}}}}}
+\CustomizeMathJax{\newcommand{\nbacksimeq}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x022CD}}}}}
+\CustomizeMathJax{\newcommand{\nasymp}{\mathrel{\unicode{x226D}}}}
+\CustomizeMathJax{\newcommand{\nequiv}{\mathrel{\unicode{x2262}}}}
+\CustomizeMathJax{\newcommand{\napprox}{\mathrel{\unicode{x2249}}}}
+%
+\CustomizeMathJax{\newcommand{\nll}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0226A}}}}}
+\CustomizeMathJax{\newcommand{\ngg}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0226B}}}}}
+\CustomizeMathJax{\newcommand{\nthickapprox}{%
+    \mathrel{\LWRoverlaysymbols{/}{{\mathbf{\unicode{x02248}}}}}%
+}}
+\CustomizeMathJax{\newcommand{\napproxeq}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0224A}}}}}
+\CustomizeMathJax{\newcommand{\nprecapprox}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x02AB7}}}}}
+\CustomizeMathJax{\newcommand{\nsuccapprox}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x02AB8}}}}}
+\CustomizeMathJax{\newcommand{\npreceqq}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x02AB3}}}}}
+\CustomizeMathJax{\newcommand{\nsucceqq}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x02AB4}}}}}
+\CustomizeMathJax{\newcommand{\nsimeq}{\mathrel{\unicode{x02244}}}}
+%
+\CustomizeMathJax{\newcommand{\nSubset}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x022D0}}}}}
+\CustomizeMathJax{\newcommand{\nSupset}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x022D1}}}}}
+\CustomizeMathJax{\newcommand{\nsqsubseteq}{\mathrel{\unicode{x022E2}}}}
+\CustomizeMathJax{\newcommand{\nsqsupseteq}{\mathrel{\unicode{x022E3}}}}
+%
+\CustomizeMathJax{\newcommand{\coloneqq}{\mathrel{\unicode{x02254}}}}
+\CustomizeMathJax{\newcommand{\eqqcolon}{\mathrel{\unicode{x02255}}}}
+\CustomizeMathJax{\newcommand{\Coloneqq}{\mathrel{\unicode{x02A74}}}}
+\CustomizeMathJax{\newcommand{\Coloneq}{\mathrel{\unicode{x2237}-}}}
+\CustomizeMathJax{\newcommand{\Eqcolon}{\mathrel{-\unicode{x2237}}}}
+%
+\CustomizeMathJax{\newcommand{\lvec}[1]{\mathord{\overset{\unicode{x02190}}{#1}}}}
+\CustomizeMathJax{\newcommand{\lrvec}[1]{\mathord{\overset{\unicode{x2194}}{#1}}}}
+\CustomizeMathJax{\newcommand{\harpoonacc}[1]{\mathord{\overset{\unicode{x021C0}}{#1}}}}
+\CustomizeMathJax{\newcommand{\lharpoonacc}[1]{\mathord{\overset{\unicode{x021BC}}{#1}}}}
+\CustomizeMathJax{\newcommand{\lrharpoonacc}[1]{\mathord{\overset{\unicode{x0294E}}{#1}}}}
+\CustomizeMathJax{\newcommand{\barbar}[1]{\mathord{\overset{=}{#1}}}}
+\CustomizeMathJax{\newcommand{\bartilde}[1]{\mathord{\overset{\simeq}{#1}}}}
+\CustomizeMathJax{\newcommand{\barhat}[1]{\mathord{\hat{\bar{#1}}}}}
+\CustomizeMathJax{\newcommand{\tildebar}[1]{\mathord{\overset{\eqsim}{#1}}}}
+\CustomizeMathJax{\newcommand{\tildetilde}[1]{\mathord{\overset{\approx}{#1}}}}
+\CustomizeMathJax{\newcommand{\tildehat}[1]{\mathord{\hat{\tilde{#1}}}}}
+\CustomizeMathJax{\newcommand{\hatbar}[1]{\mathord{\bar{\hat{#1}}}}}
+\CustomizeMathJax{\newcommand{\hattilde}[1]{\mathord{\tilde{\hat{#1}}}}}
+\CustomizeMathJax{\newcommand{\hathat}[1]{\mathord{\hat{\hat{#1}}}}}
+
+\CustomizeMathJax{\newcommand{\cdotB}{\mathord{\boldsymbol{\cdot}}}}
+\CustomizeMathJax{\newcommand{\cdotBB}{\mathord{\unicode{x2022}}}}
+\CustomizeMathJax{\newcommand{\circS}{\boldsymbol{\circ}}}
+\CustomizeMathJax{\newcommand{\bulletSSS}{\bullet}}
+\CustomizeMathJax{\newcommand{\bulletSS}{\mathord{\unicode{x025CF}}}}
+\CustomizeMathJax{\newcommand{\bulletS}{\mathord{\unicode{x02B24}}}}
+\CustomizeMathJax{\newcommand{\primeS}{\prime}}
+
+\CustomizeMathJax{\newcommand{\invamp}{\mathbin{\unicode{x0214B}}}}
+%    \end{macrocode}
+%
+% \filenm{lwarp_mathjax.txt} adds \cs{left} \Slash \cs{right} support for
+% delimiters.
+% \changes{v0.892}{2020/09/26}{\pkg{lwarp-common-mathjax-newpxtxmath}: Added \cs{left} \Slash \cs{right} support in \filenm{lwarp_mathjax.txt}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\Lbag}{\mathopen{\large\unicode{x027C5}}}}
+\CustomizeMathJax{\newcommand{\Rbag}{\mathclose{\large\unicode{x027C6}}}}
+\CustomizeMathJax{\newcommand{\circledless}{\mathrel{\unicode{x029C0}}}}
+\CustomizeMathJax{\newcommand{\circledgtr}{\mathrel{\unicode{x029C1}}}}
+\CustomizeMathJax{\newcommand{\circledbslash}{\mathbin{\unicode{x029B8}}}}
+%    \end{macrocode}
+% \changes{v0.891}{2020/09/20}{\pkg{lwarp-common-mathjax-newpxtxmath}: Factored non-\brand{Unicode}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\lJoin}{\mathrel{\unicode{x22C9}}}}
+\CustomizeMathJax{\newcommand{\rJoin}{\mathrel{\unicode{x22CA}}}}
+\CustomizeMathJax{\newcommand{\lrJoin}{\mathrel{\unicode{x2A1D}}}}
+
+\CustomizeMathJax{\newcommand{\lrtimes}{\mathrel{\unicode{x2A1D}}}}
+\CustomizeMathJax{\newcommand{\Diamondblack}{\mathord{\unicode{x025C6}}}}
+\CustomizeMathJax{\newcommand{\nplus}{\mathrel{\LWRoverlaysymbols{+}{\unicode{x02229}}}}}
+\CustomizeMathJax{\newcommand{\nsqsubset}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0228F}}}}}
+\CustomizeMathJax{\newcommand{\nsqsupset}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x02290}}}}}
+\CustomizeMathJax{\newcommand{\dasharrow}{\mathrel{\unicode{x021E2}}}}
+\CustomizeMathJax{\newcommand{\leftsquigarrow}{\mathrel{\unicode{x021DC}}}}
+\CustomizeMathJax{\newcommand{\ntwoheadrightarrow}{\mathrel{\unicode{x02900}}}}
+\CustomizeMathJax{\newcommand{\ntwoheadleftarrow}{\mathrel{\unicode{x02B34}}}}
+\CustomizeMathJax{\newcommand{\boxast}{\mathbin{\unicode{x029C6}}}}
+\CustomizeMathJax{\newcommand{\boxbslash}{\mathbin{\unicode{x29C5}}}}
+\CustomizeMathJax{\newcommand{\boxbar}{\mathbin{\unicode{x025EB}}}}
+\CustomizeMathJax{\newcommand{\boxslash}{\mathbin{\unicode{x029C4}}}}
+
+\CustomizeMathJax{\newcommand{\varclubsuit}{\mathord{\unicode{x02667}}}}
+\CustomizeMathJax{\newcommand{\vardiamondsuit}{\mathord{\unicode{x02666}}}}
+\CustomizeMathJax{\newcommand{\varheartsuit}{\mathord{\unicode{x02665}}}}
+\CustomizeMathJax{\newcommand{\varspadesuit}{\mathord{\unicode{x02664}}}}
+
+\CustomizeMathJax{\newcommand{\Nearrow}{\mathrel{\unicode{x021D7}}}}
+\CustomizeMathJax{\newcommand{\Searrow}{\mathrel{\unicode{x021D8}}}}
+\CustomizeMathJax{\newcommand{\Nwarrow}{\mathrel{\unicode{x021D6}}}}
+\CustomizeMathJax{\newcommand{\Swarrow}{\mathrel{\unicode{x021D9}}}}
+\CustomizeMathJax{\newcommand{\Top}{\mathord{\unicode{x02AEA}}}}
+\CustomizeMathJax{\newcommand{\Bot}{\mathord{\unicode{x02AEB}}}}
+
+\CustomizeMathJax{\newcommand{\leadstoext}{\mathrel{\unicode{xFF5E}}}}
+
+\CustomizeMathJax{\newcommand{\sqcupplus}{\mathbin{\LWRoverlaysymbols{+}{\unicode{x02294}}}}}
+\CustomizeMathJax{\newcommand{\sqcapplus}{\mathbin{\LWRoverlaysymbols{+}{\unicode{x02293}}}}}
+
+\CustomizeMathJax{\newcommand{\dlb}{\mathopen{\unicode{x027E6}}}}
+\CustomizeMathJax{\newcommand{\drb}{\mathopen{\unicode{x027E7}}}}
+
+\CustomizeMathJax{\newcommand{\varg}{g}}
+\CustomizeMathJax{\newcommand{\vary}{y}}
+\CustomizeMathJax{\newcommand{\varv}{v}}
+\CustomizeMathJax{\newcommand{\varw}{w}}
+
+\CustomizeMathJax{\newcommand{\nexistsAlt}{\mathord{\unicode{x02204}}}}
+\CustomizeMathJax{\newcommand{\existsAlt}{\mathord{\unicode{x02203}}}}
+\CustomizeMathJax{\newcommand{\forallAlt}{\mathord{\unicode{x02200}}}}
+\CustomizeMathJax{\newcommand{\emptysetAlt}{\mathord{\unicode{x02205}}}}
+
+\CustomizeMathJax{\newcommand{\uppartial}{\mathord{\unicode{x02202}}}}% not upright
+
+\CustomizeMathJax{\let\varmathbb\mathbb}
+\CustomizeMathJax{\let\vmathbb\mathbb}
+\CustomizeMathJax{\let\vvmathbb\mathbb}
+
+\CustomizeMathJax{\let\smallprod\prod}
+\CustomizeMathJax{\let\smallsum\sum}
+\CustomizeMathJax{\let\smallcoprod\coprod}
+
+\CustomizeMathJax{\newcommand{\openbox}{\mathord{\unicode{x25FD}}}}
+\CustomizeMathJax{\let\textsquare\openbox}
+%    \end{macrocode}
+% \changes{v0.891}{2020/09/19}{\pkg{lwarp-common-mathjax-newpxtxmath}: Expanded for \pkg{kpfonts}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\let\varemptyset\emptyset}
+%
+% for newpxmath:
+\CustomizeMathJax{\newcommand{\mathsterling}{\mathord{\unicode{x000A3}}}}
+\CustomizeMathJax{\newcommand{\mathcent}{\mathord{\unicode{x000A2}}}}
+
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</common-mathjax-newpxtxmath>
+% \fi
+%
+%
+%
+%
+% ^^A *common-mathjax-nonunicode
+% ^^A *nonunicode
+%
+% \iffalse
+%<*common-mathjax-nonunicode>
+% \fi
+%
+% \part{lwarp-common-mathjax-nonunicode.sty}
+%
+% \section{common-mathjax-nonunicode}
+%
+% \credits{Daniel Flipo, Michael Sharpe}
+%
+% \DescribePackage{lwarp-common-mathjax-nonunicode}
+% Common code used by \pkg{newpxmath}, \pkg{newtxmath}, \pkg{newtxsf},
+% \pkg{kpfonts-otf}
+% for \brand{MathJax}.
+% These are symbols not found in \brand{Unicode}.
+%
+% Factored from \pkg{lwarp-common-mathjax-newpxtxmath}.
+%
+% \changes{v0.891}{2020/09/20}{\pkg{lwarp-common-mathjax-nonunicode}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\ProvidesPackage{lwarp-common-mathjax-nonunicode}[2020/09/20]
+%    \end{macrocode}
+%
+% For \brand{MathJax}:
+%    \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-overlaysymbols}
+
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\mmapsto}{\mathrel{\unicode{x021A6}}}}
+\CustomizeMathJax{\let\mmapstochar\mmapsto}
+\CustomizeMathJax{\newcommand{\longmmapsto}{\mathrel{\unicode{x021A6}}}}
+\CustomizeMathJax{\newcommand{\mmappedfrom}{\mathrel{\unicode{x021A4}}}}
+\CustomizeMathJax{\let\mmappedfromchar\mmappedfrom}
+\CustomizeMathJax{\newcommand{\longmmappedfrom}{\mathrel{\unicode{x021A4}}}}
+\CustomizeMathJax{\let\mmapsfrom\mmappedfrom}% from kpfonts-otf
+\CustomizeMathJax{\let\longmmapsfrom\longmmappedfrom}% from kpfonts-otf
+
+\CustomizeMathJax{\newcommand{\Mmapsto}{\mathrel{\unicode{x02907}}}}
+\CustomizeMathJax{\let\Mmapstochar\Mmapsto}
+\CustomizeMathJax{\newcommand{\Longmmapsto}{\mathrel{\unicode{x027FE}}}}
+\CustomizeMathJax{\newcommand{\Mmappedfrom}{\mathrel{\unicode{x02906}}}}
+\CustomizeMathJax{\let\Mmappedfromchar\Mmappedfrom}
+\CustomizeMathJax{\newcommand{\Longmmappedfrom}{\mathrel{\unicode{x027FD}}}}
+\CustomizeMathJax{\let\Mmapsfrom\Mmappedfrom}% from kpfonts-otf
+\CustomizeMathJax{\let\Longmmapsfrom\Longmmappedfrom}% from kpfonts-otf
+%
+\CustomizeMathJax{\newcommand{\boxright}{\mathrel{\unicode{x025A1}\!\unicode{x02192}}}}
+\CustomizeMathJax{\newcommand{\boxleft}{\mathrel{\unicode{x02190}\!\unicode{x025A1}}}}
+\CustomizeMathJax{\newcommand{\boxdotright}{\mathrel{\unicode{x022A1}\!\unicode{x02192}}}}
+\CustomizeMathJax{\newcommand{\boxdotleft}{\mathrel{\unicode{x02190}\!\unicode{x022A1}}}}
+
+\CustomizeMathJax{\newcommand{\Diamondright}{\mathrel{\unicode{x025C7}\!\unicode{x02192}}}}
+\CustomizeMathJax{\newcommand{\Diamondleft}{\mathrel{\unicode{x02190}\!\unicode{x025C7}}}}
+\CustomizeMathJax{\newcommand{\Diamonddotright}{\mathrel{\unicode{x027D0}\!\unicode{x02192}}}}
+\CustomizeMathJax{\newcommand{\Diamonddotleft}{\mathrel{\unicode{x02190}\!\unicode{x027D0}}}}
+
+\CustomizeMathJax{\newcommand{\boxRight}{\mathrel{\unicode{x025A1}\!\unicode{x021D2}}}}
+\CustomizeMathJax{\newcommand{\boxLeft}{\mathrel{\unicode{x021D0}\!\unicode{x025A1}}}}
+\CustomizeMathJax{\newcommand{\boxdotRight}{\mathrel{\unicode{x022A1}\!\unicode{x021D2}}}}
+\CustomizeMathJax{\newcommand{\boxdotLeft}{\mathrel{\unicode{x021D0}\!\unicode{x022A1}}}}
+
+\CustomizeMathJax{\newcommand{\DiamondRight}{\mathrel{\unicode{x025C7}\!\unicode{x021D2}}}}
+\CustomizeMathJax{\newcommand{\DiamondLeft}{\mathrel{\unicode{x021D0}\!\unicode{x025C7}}}}
+\CustomizeMathJax{\newcommand{\DiamonddotRight}{\mathrel{\unicode{x027D0}\!\unicode{x021D2}}}}
+\CustomizeMathJax{\newcommand{\DiamonddotLeft}{\mathrel{\unicode{x021D0}\!\unicode{x027D0}}}}
+\CustomizeMathJax{\newcommand{\Diamonddot}{\mathrel{\unicode{x027D0}}}}
+
+\CustomizeMathJax{\newcommand{\circleright}{\mathrel{\unicode{x025CB}\!\unicode{x02192}}}}
+\CustomizeMathJax{\newcommand{\circleleft}{\mathrel{\unicode{x02190}\!\unicode{x025CB}}}}
+\CustomizeMathJax{\newcommand{\circledotright}{\mathrel{\unicode{x02299}\!\unicode{x02192}}}}
+\CustomizeMathJax{\newcommand{\circledotleft}{\mathrel{\unicode{x02190}\!\unicode{x02299}}}}
+\CustomizeMathJax{\let\circleddotright\circledotright}
+\CustomizeMathJax{\let\circleddotleft\circledotleft}
+
+\CustomizeMathJax{\newcommand{\multimapinv}{\mathrel{\unicode{x027DC}}}}
+\CustomizeMathJax{\newcommand{\multimapboth}{\mathrel{\unicode{x029DF}}}}
+\CustomizeMathJax{\newcommand{\multimapdot}{{\mathrel{-\!\bullet}}}}
+\CustomizeMathJax{\newcommand{\multimapdotinv}{\mathrel{\bullet\!-}}}
+\CustomizeMathJax{\newcommand{\multimapdotboth}{\mathrel{{\bullet\!\!-\!\!\bullet}}}}
+\CustomizeMathJax{\newcommand{\multimapdotbothA}{\mathrel{\unicode{x022B6}}}}
+\CustomizeMathJax{\newcommand{\multimapdotbothB}{\mathrel{\unicode{x22B7}}}}
+
+\CustomizeMathJax{\newcommand{\multimapbothvert}{%
+    \mathrel{\overset{\unicode{x025CB}}{\underset{\unicode{x025CB}}{|}}}%
+}}
+\CustomizeMathJax{\newcommand{\multimapdotbothvert}{%
+    \mathrel{\overset{\unicode{x025CF}}{\underset{\unicode{x025CF}}{|}}}%
+}}
+\CustomizeMathJax{\newcommand{\multimapdotbothBvert}{% bug in kpfonts-otf
+    \mathrel{\overset{\unicode{x025CF}}{\underset{\unicode{x025CB}}{|}}}%
+}}
+\CustomizeMathJax{\newcommand{\multimapdotbothAvert}{% bug in kpfonts-otf
+    \mathrel{\overset{\unicode{x025CB}}{\underset{\unicode{x025CF}}{|}}}%
+}}
+
+\CustomizeMathJax{\newcommand{\bignplus}{%
+    \mathop{\LWRoverlaysymbols{\unicode{xFF0B}}{\unicode{x22C2}}}%
+}}
+\CustomizeMathJax{\let\bigcapplus\bignplus}
+\CustomizeMathJax{\let\capplus\bignplus}% from kpfonts-otf
+
+\CustomizeMathJax{\newcommand{\bigsqcapplus}{%
+    \mathop{\LWRoverlaysymbols{\unicode{xFF0B}}{\unicode{x2A05}}}
+}}
+\CustomizeMathJax{\let\sqcapplus\bigsqcapplus}% from kpfonts-otf
+
+\CustomizeMathJax{\newcommand{\bigsqcupplus}{%
+    \mathop{\LWRoverlaysymbols{\unicode{xFF0B}}{\unicode{x2A06}}}
+}}
+\CustomizeMathJax{\let\sqcupplus\bigsqcupplus}% from kpfonts-otf
+
+\CustomizeMathJax{\newcommand{\parallelslant}{\mathrel{\unicode{x02AFD}}}}
+\CustomizeMathJax{\newcommand{\parallelbackslant}{%
+    \mathrel{\unicode{x0005C}\!\!\unicode{x0005C}}%
+}}
+
+\CustomizeMathJax{\newcommand{\Eqqcolon}{\mathrel{=\!\unicode{x2237}}}}
+\CustomizeMathJax{\let\eqqColon\Eqqcolon}% for kpfonts-otf
+\CustomizeMathJax{\newcommand{\dashColon}{\mathrel{-\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand{\Colondash}{\mathrel{\unicode{x2237}-}}}
+
+\CustomizeMathJax{\newcommand{\colonapprox}{\mathrel{:\approx}}}
+\CustomizeMathJax{\newcommand{\colonsim}{\mathrel{:\sim}}}
+\CustomizeMathJax{\newcommand{\Colonapprox}{\mathrel{\unicode{x2237}\!\approx}}}
+\CustomizeMathJax{\newcommand{\Colonsim}{\mathrel{\unicode{x2237}\!\sim}}}
+
+\CustomizeMathJax{\newcommand{\strictif}{\mathrel{\unicode{x0297D}}}}% right fish tail
+\CustomizeMathJax{\newcommand{\strictfi}{\mathrel{\unicode{x0297C}}}}% left fish tail
+\CustomizeMathJax{\newcommand{\strictiff}{%
+    \mathrel{\unicode{x0297C}\!\!\unicode{x0297D}}%
+}}% left/right fish tails
+
+\CustomizeMathJax{\newcommand{\circledwedge}{%
+    \mathbin{\LWRoverlaysymbols{\unicode{x025EF}}{\unicode{x02227}}}%
+}}
+\CustomizeMathJax{\newcommand{\circledvee}{%
+    \mathbin{\LWRoverlaysymbols{\unicode{x025EF}}{\unicode{0x02228}}}%
+}}
+\CustomizeMathJax{\newcommand{\circledbar}{\mathbin{\unicode{x029B6}}}}
+
+\CustomizeMathJax{\newcommand{\openJoin}{\mathrel{\unicode{x2AA4}}}}% overlapping ><
+\CustomizeMathJax{\newcommand{\opentimes}{\mathrel{\unicode{x2AA4}}}}% overlapping ><
+
+\CustomizeMathJax{\newcommand{\VvDash}{\mathrel{\unicode{x22AA}}}}
+
+\CustomizeMathJax{\newcommand{\lambdabar}{%
+    \mathord{\LWRoverlaysymbols{\raise{.5ex}{-}}{\lambda}}%
+}}
+
+\CustomizeMathJax{\newcommand{\lambdaslash}{\mathord{\unicode{x019B}}}}
+
+\CustomizeMathJax{\newcommand{\Wr}{\mathbin{\unicode{x02240}\!\unicode{x02240}}}}
+
+\CustomizeMathJax{\newcommand{\dashleftrightarrow}{%
+    \mathrel{\unicode{x021E0}\!\unicode{x021E2}}%
+}}
+\CustomizeMathJax{\let\leftrightdasharrow\dashleftrightarrow}% for kpfonts-otf
+
+\end{warpMathJax}
+%    \end{macrocode}
+%
+% \iffalse
+%</common-mathjax-nonunicode>
+% \fi
+%
+%
+%
+% ^^A *common-mathjax-overlaysymbols
+%
+% \iffalse
+%<*common-mathjax-overlaysymbols>
+% \fi
+%
+% \part{lwarp-common-mathjax-overlaysymbols.sty}
+%
+% \section{common-mathjax-overlaysymbols}
+%
+% \DescribePackage{lwarp-common-mathjax-overlaysymbols}
+% Common code used by a number of packages to overlay two symbols
+% for \brand{MathJax}.
+%
+% \changes{v0.89}{2020/08/17}{\pkg{lwarp-common-mathjax-overlaysymbols}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\ProvidesPackage{lwarp-common-mathjax-overlaysymbols}[2020/08/17]
+%    \end{macrocode}
+%
+% \noindmacro{\LWRoverlaysymbols} \marg{symbol} \marg{symbol}
+%
+% Overlays one symbol over another.
+%    \begin{macrocode}
+\begin{warpMathJax}
+
+\CustomizeMathJax{\newcommand{\LWRoverlaysymbols}[2]{%
+    \mathord{%
+        \smash{%
+            \mathop{#2\strut}%
+            \limits^{\smash{\lower3ex{#1}}}%
+        }%
+        \strut%
+    }%
+}}
+
+\end{warpMathJax}
+%    \end{macrocode}
+%
+%
+% \iffalse
+%</common-mathjax-overlaysymbols>
+% \fi
+%
+%
+%
+%
 % \addtocontents{toc}{\protect\setcounter{tocdepth}{4}}
 %
 %

Modified: branches/branch2020/Master/texmf-dist/source/latex/lwarp/lwarp.ins
===================================================================
--- branches/branch2020/Master/texmf-dist/source/latex/lwarp/lwarp.ins	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/source/latex/lwarp/lwarp.ins	2021-02-18 22:20:50 UTC (rev 57791)
@@ -40,6 +40,7 @@
 \file{lwarp-a5comb.sty}{\from{lwarp.dtx}{a5comb}}
 \file{lwarp-abstract.sty}{\from{lwarp.dtx}{abstract}}
 \file{lwarp-academicons.sty}{\from{lwarp.dtx}{academicons}}
+\file{lwarp-accents.sty}{\from{lwarp.dtx}{accents}}
 \file{lwarp-accessibility.sty}{\from{lwarp.dtx}{accessibility}}
 \file{lwarp-accsupp.sty}{\from{lwarp.dtx}{accsupp}}
 \file{lwarp-acro.sty}{\from{lwarp.dtx}{acro}}
@@ -50,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}}
@@ -86,16 +88,19 @@
 \file{lwarp-booktabs.sty}{\from{lwarp.dtx}{booktabs}}
 \file{lwarp-bophook.sty}{\from{lwarp.dtx}{bophook}}
 \file{lwarp-bounddvi.sty}{\from{lwarp.dtx}{bounddvi}}
+\file{lwarp-boxedminipage.sty}{\from{lwarp.dtx}{boxedminipage}}
 \file{lwarp-boxedminipage2e.sty}{\from{lwarp.dtx}{boxedminipage2e}}
 \file{lwarp-braket.sty}{\from{lwarp.dtx}{braket}}
 \file{lwarp-breakurl.sty}{\from{lwarp.dtx}{breakurl}}
 \file{lwarp-breqn.sty}{\from{lwarp.dtx}{breqn}}
 \file{lwarp-bsheaders.sty}{\from{lwarp.dtx}{bsheaders}}
+\file{lwarp-bussproofs.sty}{\from{lwarp.dtx}{bussproofs}}
 \file{lwarp-bxpapersize.sty}{\from{lwarp.dtx}{bxpapersize}}
 \file{lwarp-bytefield.sty}{\from{lwarp.dtx}{bytefield}}
 \file{lwarp-cancel.sty}{\from{lwarp.dtx}{cancel}}
 \file{lwarp-canoniclayout.sty}{\from{lwarp.dtx}{canoniclayout}}
 \file{lwarp-caption.sty}{\from{lwarp.dtx}{caption}}
+\file{lwarp-caption3.sty}{\from{lwarp.dtx}{caption3}}
 \file{lwarp-cases.sty}{\from{lwarp.dtx}{cases}}
 \file{lwarp-centernot.sty}{\from{lwarp.dtx}{centernot}}
 \file{lwarp-changebar.sty}{\from{lwarp.dtx}{changebar}}
@@ -112,9 +117,12 @@
 \file{lwarp-chkfloat.sty}{\from{lwarp.dtx}{chkfloat}}
 \file{lwarp-chngpage.sty}{\from{lwarp.dtx}{chngpage}}
 \file{lwarp-cite.sty}{\from{lwarp.dtx}{cite}}
+\file{lwarp-citeref.sty}{\from{lwarp.dtx}{citeref}}
 \file{lwarp-CJK.sty}{\from{lwarp.dtx}{CJK}}
 \file{lwarp-CJKutf8.sty}{\from{lwarp.dtx}{CJKutf8}}
+\file{lwarp-cleveref.sty}{\from{lwarp.dtx}{cleveref}}
 \file{lwarp-clrdblpg.sty}{\from{lwarp.dtx}{clrdblpg}}
+\file{lwarp-cmbright.sty}{\from{lwarp.dtx}{cmbright}}
 \file{lwarp-cmdtrack.sty}{\from{lwarp.dtx}{cmdtrack}}
 \file{lwarp-colonequals.sty}{\from{lwarp.dtx}{colonequals}}
 \file{lwarp-color.sty}{\from{lwarp.dtx}{color}}
@@ -137,6 +145,7 @@
 \file{lwarp-draftcopy.sty}{\from{lwarp.dtx}{draftcopy}}
 \file{lwarp-draftfigure.sty}{\from{lwarp.dtx}{draftfigure}}
 \file{lwarp-draftwatermark.sty}{\from{lwarp.dtx}{draftwatermark}}
+\file{lwarp-drftcite.sty}{\from{lwarp.dtx}{drftcite}}
 \file{lwarp-easy-todo.sty}{\from{lwarp.dtx}{easy-todo}}
 \file{lwarp-ebook.sty}{\from{lwarp.dtx}{ebook}}
 \file{lwarp-econometrics.sty}{\from{lwarp.dtx}{econometrics}}
@@ -151,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}}
@@ -158,6 +168,7 @@
 \file{lwarp-eqparbox.sty}{\from{lwarp.dtx}{eqparbox}}
 \file{lwarp-errata.sty}{\from{lwarp.dtx}{errata}}
 \file{lwarp-eso-pic.sty}{\from{lwarp.dtx}{eso-pic}}
+\file{lwarp-esvect.sty}{\from{lwarp.dtx}{esvect}}
 \file{lwarp-etoc.sty}{\from{lwarp.dtx}{etoc}}
 \file{lwarp-eurosym.sty}{\from{lwarp.dtx}{eurosym}}
 \file{lwarp-everypage.sty}{\from{lwarp.dtx}{everypage}}
@@ -169,11 +180,13 @@
 \file{lwarp-fancyref.sty}{\from{lwarp.dtx}{fancyref}}
 \file{lwarp-fancytabs.sty}{\from{lwarp.dtx}{fancytabs}}
 \file{lwarp-fancyvrb.sty}{\from{lwarp.dtx}{fancyvrb}}
+\file{lwarp-fbox.sty}{\from{lwarp.dtx}{fbox}}
 \file{lwarp-fewerfloatpages.sty}{\from{lwarp.dtx}{fewerfloatpages}}
 \file{lwarp-figcaps.sty}{\from{lwarp.dtx}{figcaps}}
 \file{lwarp-figsize.sty}{\from{lwarp.dtx}{figsize}}
 \file{lwarp-fitbox.sty}{\from{lwarp.dtx}{fitbox}}
 \file{lwarp-fix2col.sty}{\from{lwarp.dtx}{fix2col}}
+\file{lwarp-fixmath.sty}{\from{lwarp.dtx}{fixmath}}
 \file{lwarp-fixme.sty}{\from{lwarp.dtx}{fixme}}
 \file{lwarp-fixmetodonotes.sty}{\from{lwarp.dtx}{fixmetodonotes}}
 \file{lwarp-flafter.sty}{\from{lwarp.dtx}{flafter}}
@@ -187,6 +200,7 @@
 \file{lwarp-fnbreak.sty}{\from{lwarp.dtx}{fnbreak}}
 \file{lwarp-fncychap.sty}{\from{lwarp.dtx}{fncychap}}
 \file{lwarp-fnlineno.sty}{\from{lwarp.dtx}{fnlineno}}
+\file{lwarp-fnpara.sty}{\from{lwarp.dtx}{fnpara}}
 \file{lwarp-fnpos.sty}{\from{lwarp.dtx}{fnpos}}
 \file{lwarp-fontawesome.sty}{\from{lwarp.dtx}{fontawesome}}
 \file{lwarp-fontawesome5.sty}{\from{lwarp.dtx}{fontawesome5}}
@@ -201,6 +215,7 @@
 \file{lwarp-foreign.sty}{\from{lwarp.dtx}{foreign}}
 \file{lwarp-forest.sty}{\from{lwarp.dtx}{forest}}
 \file{lwarp-fouridx.sty}{\from{lwarp.dtx}{fouridx}}
+\file{lwarp-fourier.sty}{\from{lwarp.dtx}{fourier}}
 \file{lwarp-framed.sty}{\from{lwarp.dtx}{framed}}
 \file{lwarp-ftcap.sty}{\from{lwarp.dtx}{ftcap}}
 \file{lwarp-ftnright.sty}{\from{lwarp.dtx}{ftnright}}
@@ -207,11 +222,13 @@
 \file{lwarp-fullminipage.sty}{\from{lwarp.dtx}{fullminipage}}
 \file{lwarp-fullpage.sty}{\from{lwarp.dtx}{fullpage}}
 \file{lwarp-fullwidth.sty}{\from{lwarp.dtx}{fullwidth}}
+\file{lwarp-fvextra.sty}{\from{lwarp.dtx}{fvextra}}
 \file{lwarp-fwlw.sty}{\from{lwarp.dtx}{fwlw}}
 \file{lwarp-gensymb.sty}{\from{lwarp.dtx}{gensymb}}
 \file{lwarp-gentombow.sty}{\from{lwarp.dtx}{gentombow}}
 \file{lwarp-geometry.sty}{\from{lwarp.dtx}{geometry}}
 \file{lwarp-ghsystem.sty}{\from{lwarp.dtx}{ghsystem}}
+\file{lwarp-gindex.sty}{\from{lwarp.dtx}{gindex}}
 \file{lwarp-gloss.sty}{\from{lwarp.dtx}{gloss}}
 \file{lwarp-glossaries.sty}{\from{lwarp.dtx}{glossaries}}
 \file{lwarp-gmeometric.sty}{\from{lwarp.dtx}{gmeometric}}
@@ -223,7 +240,9 @@
 \file{lwarp-gridset.sty}{\from{lwarp.dtx}{gridset}}
 \file{lwarp-hang.sty}{\from{lwarp.dtx}{hang}}
 \file{lwarp-hanging.sty}{\from{lwarp.dtx}{hanging}}
+\file{lwarp-hepunits.sty}{\from{lwarp.dtx}{hepunits}}
 \file{lwarp-hhline.sty}{\from{lwarp.dtx}{hhline}}
+\file{lwarp-hhtensor.sty}{\from{lwarp.dtx}{hhtensor}}
 \file{lwarp-hypbmsec.sty}{\from{lwarp.dtx}{hypbmsec}}
 \file{lwarp-hypcap.sty}{\from{lwarp.dtx}{hypcap}}
 \file{lwarp-hypdestopt.sty}{\from{lwarp.dtx}{hypdestopt}}
@@ -237,8 +256,14 @@
 \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}}
+\file{lwarp-keystroke.sty}{\from{lwarp.dtx}{keystroke}}
+\file{lwarp-kpfonts.sty}{\from{lwarp.dtx}{kpfonts}}
+\file{lwarp-kpfonts-otf.sty}{\from{lwarp.dtx}{kpfonts-otf}}
 \file{lwarp-layaureo.sty}{\from{lwarp.dtx}{layaureo}}
 \file{lwarp-layout.sty}{\from{lwarp.dtx}{layout}}
 \file{lwarp-layouts.sty}{\from{lwarp.dtx}{layouts}}
@@ -246,6 +271,7 @@
 \file{lwarp-leftidx.sty}{\from{lwarp.dtx}{leftidx}}
 \file{lwarp-letterspace.sty}{\from{lwarp.dtx}{letterspace}}
 \file{lwarp-lettrine.sty}{\from{lwarp.dtx}{lettrine}}
+\file{lwarp-libertinust1math.sty}{\from{lwarp.dtx}{libertinust1math}}
 \file{lwarp-lineno.sty}{\from{lwarp.dtx}{lineno}}
 \file{lwarp-lips.sty}{\from{lwarp.dtx}{lips}}
 \file{lwarp-listings.sty}{\from{lwarp.dtx}{listings}}
@@ -252,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}}
@@ -263,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}}
@@ -272,14 +300,24 @@
 \file{lwarp-marginfix.sty}{\from{lwarp.dtx}{marginfix}}
 \file{lwarp-marginnote.sty}{\from{lwarp.dtx}{marginnote}}
 \file{lwarp-marvosym.sty}{\from{lwarp.dtx}{marvosym}}
+\file{lwarp-mathalpha.sty}{\from{lwarp.dtx}{mathalpha}}
+\file{lwarp-mathastext.sty}{\from{lwarp.dtx}{mathastext}}
 \file{lwarp-mathcomp.sty}{\from{lwarp.dtx}{mathcomp}}
+\file{lwarp-mathdesign.sty}{\from{lwarp.dtx}{mathdesign}}
 \file{lwarp-mathdots.sty}{\from{lwarp.dtx}{mathdots}}
 \file{lwarp-mathfixs.sty}{\from{lwarp.dtx}{mathfixs}}
+\file{lwarp-mathpazo.sty}{\from{lwarp.dtx}{mathpazo}}
+\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}}
 \file{lwarp-metalogo.sty}{\from{lwarp.dtx}{metalogo}}
 \file{lwarp-metalogox.sty}{\from{lwarp.dtx}{metalogox}}
 \file{lwarp-mhchem.sty}{\from{lwarp.dtx}{mhchem}}
@@ -288,11 +326,14 @@
 \file{lwarp-midpage.sty}{\from{lwarp.dtx}{midpage}}
 \file{lwarp-minibox.sty}{\from{lwarp.dtx}{minibox}}
 \file{lwarp-minitoc.sty}{\from{lwarp.dtx}{minitoc}}
+\file{lwarp-minted.sty}{\from{lwarp.dtx}{minted}}
 \file{lwarp-mismath.sty}{\from{lwarp.dtx}{mismath}}
+\file{lwarp-mleftright.sty}{\from{lwarp.dtx}{mleftright}}
 \file{lwarp-morefloats.sty}{\from{lwarp.dtx}{morefloats}}
 \file{lwarp-moreverb.sty}{\from{lwarp.dtx}{moreverb}}
 \file{lwarp-movie15.sty}{\from{lwarp.dtx}{movie15}}
 \file{lwarp-mparhack.sty}{\from{lwarp.dtx}{mparhack}}
+\file{lwarp-multibib.sty}{\from{lwarp.dtx}{multibib}}
 \file{lwarp-multicap.sty}{\from{lwarp.dtx}{multicap}}
 \file{lwarp-multicol.sty}{\from{lwarp.dtx}{multicol}}
 \file{lwarp-multicolrule.sty}{\from{lwarp.dtx}{multicolrule}}
@@ -308,10 +349,14 @@
 \file{lwarp-nccfoots.sty}{\from{lwarp.dtx}{nccfoots}}
 \file{lwarp-nccmath.sty}{\from{lwarp.dtx}{nccmath}}
 \file{lwarp-needspace.sty}{\from{lwarp.dtx}{needspace}}
+\file{lwarp-newpxmath.sty}{\from{lwarp.dtx}{newpxmath}}
+\file{lwarp-newtxmath.sty}{\from{lwarp.dtx}{newtxmath}}
+\file{lwarp-newtxsf.sty}{\from{lwarp.dtx}{newtxsf}}
 \file{lwarp-nextpage.sty}{\from{lwarp.dtx}{nextpage}}
 \file{lwarp-nfssext-cfr.sty}{\from{lwarp.dtx}{nfssext-cfr}}
 \file{lwarp-nicefrac.sty}{\from{lwarp.dtx}{nicefrac}}
 \file{lwarp-niceframe.sty}{\from{lwarp.dtx}{niceframe}}
+\file{lwarp-nicematrix.sty}{\from{lwarp.dtx}{nicematrix}}
 \file{lwarp-noitcrul.sty}{\from{lwarp.dtx}{noitcrul}}
 \file{lwarp-nolbreaks.sty}{\from{lwarp.dtx}{nolbreaks}}
 \file{lwarp-nomencl.sty}{\from{lwarp.dtx}{nomencl}}
@@ -353,12 +398,15 @@
 \file{lwarp-phfqit.sty}{\from{lwarp.dtx}{phfqit}}
 \file{lwarp-physics.sty}{\from{lwarp.dtx}{physics}}
 \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}}
 \file{lwarp-plextarydshln.sty}{\from{lwarp.dtx}{plextarydshln}}
 \file{lwarp-plextcolorbl.sty}{\from{lwarp.dtx}{plextcolortbl}}
+\file{lwarp-plimsoll.sty}{\from{lwarp.dtx}{plimsoll}}
 \file{lwarp-prelim2e.sty}{\from{lwarp.dtx}{prelim2e}}
 \file{lwarp-prettyref.sty}{\from{lwarp.dtx}{prettyref}}
 \file{lwarp-preview.sty}{\from{lwarp.dtx}{preview}}
@@ -369,6 +417,7 @@
 \file{lwarp-pstricks.sty}{\from{lwarp.dtx}{pstricks}}
 \file{lwarp-pxatbegshi.sty}{\from{lwarp.dtx}{pxatbegshi}}
 \file{lwarp-pxeveryshi.sty}{\from{lwarp.dtx}{pxeveryshi}}
+\file{lwarp-pxfonts.sty}{\from{lwarp.dtx}{pxfonts}}
 \file{lwarp-pxftnright.sty}{\from{lwarp.dtx}{pxftnright}}
 \file{lwarp-pxjahyper.sty}{\from{lwarp.dtx}{pxjahyper}}
 \file{lwarp-quotchap.sty}{\from{lwarp.dtx}{quotchap}}
@@ -379,8 +428,10 @@
 \file{lwarp-register.sty}{\from{lwarp.dtx}{register}}
 \file{lwarp-relsize.sty}{\from{lwarp.dtx}{relsize}}
 \file{lwarp-repeatindex.sty}{\from{lwarp.dtx}{repeatindex}}
+\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}}
@@ -390,6 +441,7 @@
 \file{lwarp-rviewport.sty}{\from{lwarp.dtx}{rviewport}}
 \file{lwarp-savetrees.sty}{\from{lwarp.dtx}{savetrees}}
 \file{lwarp-scalefnt.sty}{\from{lwarp.dtx}{scalefnt}}
+\file{lwarp-scalerel.sty}{\from{lwarp.dtx}{scalerel}}
 \file{lwarp-schemata.sty}{\from{lwarp.dtx}{schemata}}
 \file{lwarp-scrextend.sty}{\from{lwarp.dtx}{scrextend}}
 \file{lwarp-scrhack.sty}{\from{lwarp.dtx}{scrhack}}
@@ -400,22 +452,29 @@
 \file{lwarp-section.sty}{\from{lwarp.dtx}{section}}
 \file{lwarp-sectionbreak.sty}{\from{lwarp.dtx}{sectionbreak}}
 \file{lwarp-sectsty.sty}{\from{lwarp.dtx}{sectsty}}
+\file{lwarp-selectp.sty}{\from{lwarp.dtx}{selectp}}
 \file{lwarp-semantic-markup.sty}{\from{lwarp.dtx}{semantic-markup}}
+\file{lwarp-seqsplit.sty}{\from{lwarp.dtx}{seqsplit}}
 \file{lwarp-setspace.sty}{\from{lwarp.dtx}{setspace}}
+\file{lwarp-shadethm.sty}{\from{lwarp.dtx}{shadethm}}
 \file{lwarp-shadow.sty}{\from{lwarp.dtx}{shadow}}
 \file{lwarp-shapepar.sty}{\from{lwarp.dtx}{shapepar}}
 \file{lwarp-showidx.sty}{\from{lwarp.dtx}{idx}}
 \file{lwarp-showkeys.sty}{\from{lwarp.dtx}{showkeys}}
 \file{lwarp-showtags.sty}{\from{lwarp.dtx}{showtags}}
+\file{lwarp-shuffle.sty}{\from{lwarp.dtx}{shuffle}}
 \file{lwarp-sidecap.sty}{\from{lwarp.dtx}{sidecap}}
 \file{lwarp-sidenotes.sty}{\from{lwarp.dtx}{sidenotes}}
+\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}}
 \file{lwarp-soulpos.sty}{\from{lwarp.dtx}{soulpos}}
 \file{lwarp-soulutf8.sty}{\from{lwarp.dtx}{soulutf8}}
+\file{lwarp-splitbib.sty}{\from{lwarp.dtx}{splitbib}}
 \file{lwarp-splitidx.sty}{\from{lwarp.dtx}{splitidx}}
 \file{lwarp-srcltx.sty}{\from{lwarp.dtx}{srcltx}}
 \file{lwarp-srctex.sty}{\from{lwarp.dtx}{srctex}}
@@ -423,6 +482,7 @@
 \file{lwarp-stackengine.sty}{\from{lwarp.dtx}{stackengine}}
 \file{lwarp-stackrel.sty}{\from{lwarp.dtx}{stackrel}}
 \file{lwarp-statex2.sty}{\from{lwarp.dtx}{statex2}}
+\file{lwarp-statistics.sty}{\from{lwarp.dtx}{statistics}}
 \file{lwarp-statmath.sty}{\from{lwarp.dtx}{statmath}}
 \file{lwarp-steinmetz.sty}{\from{lwarp.dtx}{steinmetz}}
 \file{lwarp-stfloats.sty}{\from{lwarp.dtx}{stfloats}}
@@ -433,6 +493,7 @@
 \file{lwarp-subsupscripts.sty}{\from{lwarp.dtx}{subsupscripts}}
 \file{lwarp-supertabular.sty}{\from{lwarp.dtx}{supertabular}}
 \file{lwarp-svg.sty}{\from{lwarp.dtx}{svg}}
+\file{lwarp-swfigure.sty}{\from{lwarp.dtx}{swfigure}}
 \file{lwarp-syntonly.sty}{\from{lwarp.dtx}{syntonly}}
 \file{lwarp-tabfigures.sty}{\from{lwarp.dtx}{tabfigures}}
 \file{lwarp-tablefootnote.sty}{\from{lwarp.dtx}{tablefootnote}}
@@ -441,6 +502,9 @@
 \file{lwarp-tabulary.sty}{\from{lwarp.dtx}{tabulary}}
 \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}}
 \file{lwarp-textfit.sty}{\from{lwarp.dtx}{textfit}}
@@ -447,6 +511,10 @@
 \file{lwarp-textpos.sty}{\from{lwarp.dtx}{textpos}}
 \file{lwarp-theorem.sty}{\from{lwarp.dtx}{theorem}}
 \file{lwarp-thinsp.sty}{\from{lwarp.dtx}{thinsp}}
+\file{lwarp-thm-listof.sty}{\from{lwarp.dtx}{thm-listof}}
+\file{lwarp-thm-restate.sty}{\from{lwarp.dtx}{thm-restate}}
+\file{lwarp-thmbox.sty}{\from{lwarp.dtx}{thmbox}}
+\file{lwarp-thmtools.sty}{\from{lwarp.dtx}{thmtools}}
 \file{lwarp-threadcol.sty}{\from{lwarp.dtx}{threadcol}}
 \file{lwarp-threeparttable.sty}{\from{lwarp.dtx}{threeparttable}}
 \file{lwarp-threeparttablex.sty}{\from{lwarp.dtx}{threeparttablex}}
@@ -453,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}}
@@ -474,6 +543,8 @@
 \file{lwarp-truncate.sty}{\from{lwarp.dtx}{truncate}}
 \file{lwarp-turnthepage.sty}{\from{lwarp.dtx}{turnthepage}}
 \file{lwarp-twoup.sty}{\from{lwarp.dtx}{twoup}}
+\file{lwarp-txfonts.sty}{\from{lwarp.dtx}{txfonts}}
+\file{lwarp-txgreeks.sty}{\from{lwarp.dtx}{txgreeks}}
 \file{lwarp-typearea.sty}{\from{lwarp.dtx}{typearea}}
 \file{lwarp-typicons.sty}{\from{lwarp.dtx}{typicons}}
 \file{lwarp-ulem.sty}{\from{lwarp.dtx}{ulem}}
@@ -482,9 +553,12 @@
 \file{lwarp-unicode-math.sty}{\from{lwarp.dtx}{unicode-math}}
 \file{lwarp-units.sty}{\from{lwarp.dtx}{units}}
 \file{lwarp-unitsdef.sty}{\from{lwarp.dtx}{unitsdef}}
+\file{lwarp-upgreek.sty}{\from{lwarp.dtx}{upgreek}}
 \file{lwarp-upref.sty}{\from{lwarp.dtx}{upref}}
 \file{lwarp-url.sty}{\from{lwarp.dtx}{url}}
+\file{lwarp-ushort.sty}{\from{lwarp.dtx}{ushort}}
 \file{lwarp-uspace.sty}{\from{lwarp.dtx}{uspace}}
+\file{lwarp-varioref.sty}{\from{lwarp.dtx}{varioref}}
 \file{lwarp-verse.sty}{\from{lwarp.dtx}{verse}}
 \file{lwarp-versonotes.sty}{\from{lwarp.dtx}{versonotes}}
 \file{lwarp-vertbars.sty}{\from{lwarp.dtx}{vertbars}}
@@ -503,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}}
@@ -521,6 +596,10 @@
 \file{lwarp-patch-komascript.sty}{\from{lwarp.dtx}{patch-komascript}}
 \file{lwarp-patch-memoir.sty}{\from{lwarp.dtx}{patch-memoir}}
 \file{lwarp-common-multimedia.sty}{\from{lwarp.dtx}{common-multimedia}}
+\file{lwarp-common-mathjax-letters.sty}{\from{lwarp.dtx}{common-mathjax-letters}}
+\file{lwarp-common-mathjax-newpxtxmath.sty}{\from{lwarp.dtx}{common-mathjax-newpxtxmath}}
+\file{lwarp-common-mathjax-nonunicode.sty}{\from{lwarp.dtx}{common-mathjax-nonunicode}}
+\file{lwarp-common-mathjax-overlaysymbols.sty}{\from{lwarp.dtx}{common-mathjax-overlaysymbols}}
 }
 \Msg{*********************************************************}
 \Msg{*}

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-SIunits.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-SIunits.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-SIunits.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -276,7 +276,7 @@
 \CustomizeMathJax{\newcommand{\barn}{\mathrm{b}}}
 \CustomizeMathJax{\newcommand{\bbar}{\mathrm{bar}}}
 \CustomizeMathJax{\newcommand{\gal}{\mathrm{Gal}}}
-\CustomizeMathJax{\newcommand{\angstrom}{\mathrm{\unicode{x00C5}}}}
+\CustomizeMathJax{\newcommand{\angstrom}{\mathrm{\unicode{x212B}}}}
 \CustomizeMathJax{\newcommand{\rperminute}{\mathrm{r}\per\minute}}
 \CustomizeMathJax{\newcommand{\rpersecond}{\mathrm{r}\per\second}}
 \CustomizeMathJax{\newcommand{\squaremetre}{\power{\metre}{2}}}
@@ -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: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-abstract.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-abstract.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-abstract.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -32,32 +32,24 @@
 \InlineClass{abstractrunintitle}{\abstractname}%
 \@bslabeldelim}%
 }
-
 \@ifclassloaded{memoir}
 {
   \renewenvironment{abstract}{%
-    \null\vfil
-    \@beginparpenalty\@lowpenalty
+  \setup at bstract
     \if at bsrunin
     \else
-      \if at bsstyle
-        \abstitlestyle{\BlockClassSingle{abstracttitle}{\abstractname}}
-      \else
         \ifnumber at bs
           \num at bs
         \else
           \begin{\absnamepos}%
   \abstractnamefont \BlockClassSingle{abstracttitle}{\abstractname}
-            \@endparpenalty\@M
           \end\absnamepos%
-%%        \vspace{\abstitleskip}%
+       \vspace{\abstitleskip}%
         \fi
-      \fi
-      \vspace{\abstitleskip}%
     \fi
     \put at bsintoc%
     \begin{@bstr at ctlist}\if at bsrunin\@bsrunintitle\fi\abstracttextfont}%
-    {\par\end{@bstr at ctlist}\vfil\null%\endtitlepage
+    {\par\end{@bstr at ctlist}%\vfil\null%\endtitlepage
     }
 }{% not memoir
 \if at titlepage

Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-accents.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-accents.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-accents.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,70 @@
+%%
+%% This is file `lwarp-accents.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `accents')
+%% 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{accents}[2006/05/12]
+\begin{warpMathJax}
+\LWR at infoprocessingmathjax{accents}
+
+\CustomizeMathJax{\newcommand{\ring}[1]{\mathring{#1}}}
+\CustomizeMathJax{\newcommand{\accentset}[2]{\overset{#1{}}{#2}}}
+\CustomizeMathJax{\let\LWRgrave\grave}
+\CustomizeMathJax{\let\LWRacute\acute}
+\CustomizeMathJax{\let\LWRcheck\check}
+\CustomizeMathJax{\let\LWRbreve\breve}
+\CustomizeMathJax{\let\LWRbar\bar}
+\CustomizeMathJax{\let\LWRhat\hat}
+\CustomizeMathJax{\let\LWRdot\dot}
+\CustomizeMathJax{\let\LWRtilde\tilde}
+\CustomizeMathJax{\let\LWRddot\ddot}
+\CustomizeMathJax{\let\LWRvec\vec}
+\CustomizeMathJax{\let\LWRwidetilde\widetilde}
+
+\CustomizeMathJax{\newcommand{\underaccent}[2]{%
+    {%
+    \renewcommand{\grave}[1]{{\LARGE\LWRgrave{##1}}}%
+    \renewcommand{\acute}[1]{{\LARGE\LWRacute{##1}}}%
+    \renewcommand{\check}[1]{{\LARGE\LWRcheck{##1}}}%
+    \renewcommand{\breve}[1]{{\LARGE\LWRbreve{##1}}}%
+    \renewcommand{\bar}[1]{{\LARGE\LWRbar{##1}}}%
+    \renewcommand{\hat}[1]{{\LARGE\LWRhat{##1}}}%
+    \renewcommand{\dot}[1]{{\LARGE\LWRdot{##1}}}%
+    \renewcommand{\tilde}[1]{{\LARGE\LWRtilde{##1}}}%
+    \renewcommand{\ddot}[1]{{\LARGE\LWRddot{##1}}}%
+    \renewcommand{\vec}[1]{{\LARGE\LWRvec{##1}}}%
+    \renewcommand{\widetilde}[1]{{\LARGE\LWRwidetilde{\hphantom{#2}}}}%
+    \underset{\raise 2pt {#1{}}}{#2}%
+    \let\grave\LWRgrave%
+    \let\acute\LWRacute%
+    \let\check\LWRcheck%
+    \let\breve\LWRbreve%
+    \let\bar\LWRbar%
+    \let\hat\LWRhat%
+    \let\dot\LWRdot%
+    \let\tilde\LWRtilde%
+    \let\ddot\LWRddot%
+    \let\vec\LWRvec%
+    \let\widetilde\LWRwidetilde%
+    }%
+}}
+
+\CustomizeMathJax{\newcommand{\undertilde}[1]{%
+    \underset{\raise 3pt {\widetilde{\hphantom{#1}}}}{#1}%
+}}
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-accents.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-accents.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-accessibility.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-accessibility.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-accessibility.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -17,7 +17,7 @@
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackageDrop{accessibility}[2019/10/14]
 \newcommand{\alt}[1]{\ThisAltText{#1}}
-\newcommand{\newhref}[3]{\ThisAltText{#2}\href{#1}{#3}}%
+\newcommand{\newhref}[3]{\ThisAltText{#2}\LWR at href{#1}{#3}}%
 \providecommand{\thead}[1]{\textbf{#1}}
 \begin{warpMathJax}
 \CustomizeMathJax{\newcommand{\alt}[1]{}}

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-acro.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-acro.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-acro.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -30,8 +30,14 @@
     \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
 \@ifpackagelater{acro}{2019/09/23}%
 {% v2.10 or later
 \cs_gset_protected:Npn \__acro_typeset:nn #1#2
@@ -128,6 +134,7 @@
     \group_end:
   }
 }% before v2.10
+}% before v3
 \ExplSyntaxOff
 
 \endinput

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-adjmulticol.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-adjmulticol.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-adjmulticol.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -28,8 +28,8 @@
 \ifnumcomp{#2}{=}{1}{\renewcommand*{\LWR at mcolstype}{singlecolumn}}{}%
 \LWR at forcenewpage%
 \BlockClass[%
-\LWR at print@mbox{margin-left:\LWR at printlength{\LWR at templengthone}} ; %
-\LWR at print@mbox{margin-right:\LWR at printlength{\LWR at templengthtwo}}%
+    \LWR at print@mbox{margin-left:\LWR at printlength{\LWR at templengthone}} ; %
+    \LWR at print@mbox{margin-right:\LWR at printlength{\LWR at templengthtwo}}%
 ]{\LWR at mcolstype}%
 }
 {\endBlockClass}

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-afterpage.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-afterpage.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-afterpage.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -17,8 +17,6 @@
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackageDrop{afterpage}[2014/10/28]
 \newcommand{\afterpage}[1]{#1}
-\LWR at ProvidesPackageDrop{afterpage}[2014/10/28]
-\newcommand{\afterpage}[1]{#1}
 \endinput
 %%
 %% End of file `lwarp-afterpage.sty'.

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithm2e.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithm2e.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithm2e.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -127,31 +127,31 @@
 
 \renewcommand{\ResetInOut}[1]{}%
 \renewcommand{\algocf at Vline}[1]{%
-\boolfalse{LWR at algocf@dopars}%
-\begin{BlockClass}{alg2evline}
-\booltrue{LWR at algocf@dopars}%
-#1
-\boolfalse{LWR at algocf@dopars}%
-\end{BlockClass}
-\booltrue{LWR at algocf@dopars}%
+    \boolfalse{LWR at algocf@dopars}%
+    \begin{BlockClass}{alg2evline}
+    \booltrue{LWR at algocf@dopars}%
+    #1
+    \boolfalse{LWR at algocf@dopars}%
+    \end{BlockClass}
+    \booltrue{LWR at algocf@dopars}%
 }
 \renewcommand{\algocf at Vsline}[1]{%
-\boolfalse{LWR at algocf@dopars}%
-\begin{BlockClass}{alg2evsline}
-\booltrue{LWR at algocf@dopars}%
-#1
-\boolfalse{LWR at algocf@dopars}%
-\end{BlockClass}
-\booltrue{LWR at algocf@dopars}%
+    \boolfalse{LWR at algocf@dopars}%
+    \begin{BlockClass}{alg2evsline}
+    \booltrue{LWR at algocf@dopars}%
+    #1
+    \boolfalse{LWR at algocf@dopars}%
+    \end{BlockClass}
+    \booltrue{LWR at algocf@dopars}%
 }
 \renewcommand{\algocf at Noline}[1]{%
-\boolfalse{LWR at algocf@dopars}%
-\begin{BlockClass}{alg2enoline}
-\booltrue{LWR at algocf@dopars}%
-#1
-\boolfalse{LWR at algocf@dopars}%
-\end{BlockClass}
-\booltrue{LWR at algocf@dopars}%
+    \boolfalse{LWR at algocf@dopars}%
+    \begin{BlockClass}{alg2enoline}
+    \booltrue{LWR at algocf@dopars}%
+    #1
+    \boolfalse{LWR at algocf@dopars}%
+    \end{BlockClass}
+    \booltrue{LWR at algocf@dopars}%
 }
 \LetLtxMacro\algocf at Here\algocf
 \LetLtxMacro\endalgocf at Here\endalgocf

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithmicx.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithmicx.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithmicx.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -16,14 +16,14 @@
 %% and version 1.3 or later is part of all distributions of LaTeX
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackagePass{algorithmicx}[2005/04/27]
-\begin{warpHTML}
-
 \AtBeginEnvironment{algorithmic}{%
 \let\origALG at doentity\ALG at doentity%
 \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}%
@@ -46,8 +46,6 @@
 \hfill\HTMLunicode{25B7} #1% white right triangle
 }%
 
-\end{warpHTML}
-
 \endinput
 %%
 %% End of file `lwarp-algorithmicx.sty'.

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-alltt.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-alltt.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-alltt.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -18,13 +18,24 @@
 \LWR at ProvidesPackagePass{alltt}[1997/06/16]
 \AfterEndPreamble{
 \LWR at traceinfo{Patching alltt.}
+
 \AtBeginEnvironment{alltt}{%
-\LWR at forcenewpage
-\LWR at atbeginverbatim{3}{alltt}%
+    \ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}%
+        {}%
+        {%
+            \LWR at forcenewpage
+            \LWR at atbeginverbatim{alltt}%
+        }%
 }
+
 \AfterEndEnvironment{alltt}{%
-    \LWR at afterendverbatim{2}%
+    \ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}%
+        {}%
+        {%
+            \LWR at afterendverbatim%
+        }%
 }
+
 }
 \endinput
 %%

Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-amscdx.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-amscdx.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-amscdx.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -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: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-amscdx.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-amsmath.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-amsmath.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-amsmath.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -16,6 +16,8 @@
 %% and version 1.3 or later is part of all distributions of LaTeX
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackagePass{amsmath}[2017/09/02]
+\newcommand*{\LWR at HTML@dotso}{\textellipsis\ }
+\LWR at formatted{dotso}
 \def\maketag@@@#1{\text{#1}}
 \def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip)}}
 
@@ -45,7 +47,7 @@
     }
     \LWR at newautoidanchor%
     \booltrue{LWR at indisplaymathimage}%
-    \begin{lateximage}[\LWR at amsmathbodynumbered{#1}]*
+    \begin{lateximage}[\LWR at amsmathbodynumbered{#2}]*%
     \LWR at applyxfakebold%
 }
 \NewDocumentCommand{\LWR at amsmathenv@before}{s m}{%
@@ -125,8 +127,23 @@
 \BeforeBeginEnvironment{alignat*}{\LWR at amsmathenv@before*{alignat*}}
 
 \AfterEndEnvironment{alignat*}{\LWR at amsmathenv@after*{alignat*}}
+\AtBeginEnvironment{subequations}{
+    \renewcommand*{\theMathJaxsubequations}{1}
+    \renewcommand*{\theMathJaxsection}{\theparentequation}
+    \renewcommand*{\theMathJaxequation}{\arabic{equation}}
+}
 \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: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-amsthm.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-amsthm.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-amsthm.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -19,17 +19,20 @@
 
 \@ifpackageloaded{mdframed}{
     \PackageError{lwarp}
-    {Package mdframed must be loaded after package amsthm}
     {%
-        Move \detokenize{\usepackage}{amsthm} before
-        \detokenize{\usepackage}{mdframed}.\MessageBreak
+        Package mdframed must be loaded after package amsthm.\MessageBreak
+        Enter 'H' for solutions%
+    }
+    {%
+        Move ``\protect\usepackage{amsthm}'' before
+        ``\protect\usepackage{mdframed}''.\MessageBreak
         Package amsthm may be loaded by something else,\MessageBreak
         which must also be moved before mdframed.%
     }
 }
-{}
+{\relax}
+\RequirePackage{amsmath}
 \LWR at ProvidesPackagePass{amsthm}[2017/10/31]
-
 \newcommand{\LWR at newtheoremstyle}{plain}
 
 \renewcommand{\theoremstyle}[1]{%
@@ -56,21 +59,29 @@
     \else % numbered theorem, need to check for optional arg
       \def\@tempa{\@oparg{\@ynthm{#2}}[]}%
     \fi
-    \AtBeginEnvironment{#2}{\edef\LWR at thisthmstyle{\@nameuse{LWR at thmstyle#2}}}% lwarp
+    \AtBeginEnvironment{#2}{%
+        \edef\LWR at thisthmstyle{\@nameuse{LWR at thmstyle#2}}%
+    }%          lwarp
   }%
   \@tempa
 }
 
 \newcommand{\LWR at haveamsthmname}{
-\renewcommand{\thmname}[1]{\InlineClass{amsthmname\LWR at thisthmstyle}{##1}}
+    \renewcommand{\thmname}[1]{%
+        \InlineClass{amsthmname\LWR at thisthmstyle}{##1}%
+    }
 }
 
 \newcommand{\LWR at haveamsthmnumber}{
-\renewcommand{\thmnumber}[1]{\InlineClass{amsthmnumber\LWR at thisthmstyle}{##1}}
+    \renewcommand{\thmnumber}[1]{%
+        \InlineClass{amsthmnumber\LWR at thisthmstyle}{##1}%
+    }
 }
 
 \newcommand{\LWR at haveamsthmnote}{
-\renewcommand{\thmnote}[1]{\InlineClass{amsthmnote\LWR at thisthmstyle}{##1}}
+    \renewcommand{\thmnote}[1]{%
+        \InlineClass{amsthmnote\LWR at thisthmstyle}{##1}%
+    }
 }
 
 \LWR at haveamsthmname
@@ -77,10 +88,12 @@
 \LWR at haveamsthmnumber
 \LWR at haveamsthmnote
 \def\@begintheorem#1#2[#3]{%
+    \GetTitleString{#3}%                                lwarp
+    \let\@currentlabelname\GetTitleStringResult%        lwarp
     \item[
-    \@ifempty{#1}{\let\thmname\@gobble}{\LWR at haveamsthmname}% lwarp
-    \@ifempty{#2}{\let\thmnumber\@gobble}{\LWR at haveamsthmnumber}% lwarp
-    \@ifempty{#3}{\let\thmnote\@gobble}{\LWR at haveamsthmnote}% lwarp
+    \@ifempty{#1}{\let\thmname\@gobble}{\LWR at haveamsthmname}%       lwarp
+    \@ifempty{#2}{\let\thmnumber\@gobble}{\LWR at haveamsthmnumber}%   lwarp
+    \@ifempty{#3}{\let\thmnote\@gobble}{\LWR at haveamsthmnote}%       lwarp
     \thm at swap\swappedhead\thmhead{#1}{#2}{#3}%
     \the\thm at headpunct~
     \thmheadnl % possibly a newline.
@@ -90,8 +103,8 @@
 \def\@thm#1#2#3{%
   \ifhmode\unskip\unskip\par\fi
   \normalfont
-  \LWR at forcenewpage% lwarp
-  \BlockClass{amsthmbody\LWR at thisthmstyle}% lwarp
+  \LWR at forcenewpage%                            lwarp
+  \BlockClass{amsthmbody\LWR at thisthmstyle}%     lwarp
   \trivlist
   \let\thmheadnl\relax
   \let\thm at swap\@gobble
@@ -114,8 +127,8 @@
 \def\cref at thmoptarg[#1]#2#3#4{%
     \ifhmode\unskip\unskip\par\fi%
     \normalfont%
-    \LWR at forcenewpage% lwarp
-    \BlockClass{amsthmbody\LWR at thisthmstyle}% lwarp
+    \LWR at forcenewpage%                          lwarp
+    \BlockClass{amsthmbody\LWR at thisthmstyle}%   lwarp
     \trivlist%
     \let\thmheadnl\relax%
     \let\thm at swap\@gobble%
@@ -148,9 +161,9 @@
 \def\Box{\text{\HTMLunicode{25A1}}}% UTF-8 white box
 
 \appto\LWR at restoreorigformatting{%
-\LetLtxMacro\openbox\LWR at orig@openbox%
-\LetLtxMacro\blacksquare\LWR at orig@blacksquare%
-\LetLtxMacro\Box\LWR at orig@Box%
+    \LetLtxMacro\openbox\LWR at orig@openbox%
+    \LetLtxMacro\blacksquare\LWR at orig@blacksquare%
+    \LetLtxMacro\Box\LWR at orig@Box%
 }% appto
 }{}% @ifundefined
 }% AtBeginDocument

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-atbegshi.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-atbegshi.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-atbegshi.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -16,6 +16,17 @@
 %% and version 1.3 or later is part of all distributions of LaTeX
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackageDrop{atbegshi}[2011/10/05]
+\let\AtBeginShipout\relax
+\let\AtBeginShipoutNext\relax
+\let\AtBeginShipoutFirst\relax
+\let\AtBeginShipoutDiscard\relax
+\let\AtBeginShipoutInit\relax
+\let\AtBeginShipoutAddToBox\relax
+\let\AtBeginShipoutAddToBoxForeground\relax
+\let\AtBeginShipoutUpperLeft\relax
+\let\AtBeginShipoutUpperLeftForeground\relax
+\let\AtBeginShipoutOriginalShipout\relax
+
 \newcommand*{\AtBeginShipout}[1]{}
 \newbox\AtBeginShipoutBox
 \newcommand*{\AtBeginShipoutNext}[1]{}
@@ -30,7 +41,6 @@
 \def\AtBeginShipoutBoxWidth{0pt}
 \def\AtBeginShipoutBoxHeight{0pt}
 \def\AtBeginShipoutBoxDepth{0pt}
-
 \endinput
 %%
 %% End of file `lwarp-atbegshi.sty'.

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-attachfile.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-attachfile.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-attachfile.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -47,7 +47,7 @@
     \def\LWR at attachfile@appearance{#1}%
 }
 \DeclareRobustCommand{\atfi at insert@file at annot}[1]{%
-    \href{#1}{\LWR at attachfile@appearance}%
+    \LWR at href{#1}{\LWR at attachfile@appearance}%
 }
 
 \endinput

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-attachfile2.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-attachfile2.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-attachfile2.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -59,7 +59,7 @@
     \def\LWR at attachfile@appearance{#1}%
 }
 \DeclareRobustCommand{\atfi at insert@file at annot}[1]{%
-    \href{#1}{\LWR at attachfile@appearance}%
+    \LWR at href{#1}{\LWR at attachfile@appearance}%
 }
 \DeclareRobustCommand{\notextattachfile}[2][]{%
   \begingroup

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-authblk.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-authblk.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-authblk.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -16,11 +16,14 @@
 %% and version 1.3 or later is part of all distributions of LaTeX
 %% version 2005/12/01 or later.
 \@ifpackageloaded{titling}{
-\PackageError{lwarp-authblk}
-{Package authblk must be loaded before titling}
-{Titling appends authblk's author macro, so authblk must be loaded first.}
+    \PackageError{lwarp-authblk}
+        {Package authblk must be loaded before titling}
+        {%
+            Titling appends authblk's author macro,
+            so authblk must be loaded first.%
+        }
 }
-{}
+{\relax}
 \LWR at ProvidesPackagePass{authblk}[2001/02/27]
 \LetLtxMacro\LWRAB at affil\affil
 

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-backnaur.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-backnaur.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-backnaur.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -18,6 +18,38 @@
 \LWR at ProvidesPackagePass{backnaur}[2019/06/18]
 \renewenvironment{bnf}{\eqnarray}{\endeqnarray}
 \renewenvironment{bnf*}{\csuse{eqnarray*}}{\csuse{endeqnarray*}}
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\bnfpn}[1]{\langle \text{\textrm{#1}} \rangle}}
+\CustomizeMathJax{\newcommand{\bnfor}{\; \mid \;}}
+\CustomizeMathJax{\newcommand{\bnfsp}{\;}}
+\@ifpackagewith{backnaur}{perp}{
+    \CustomizeMathJax{\newcommand{\bnfes}{\perp}}
+}{
+    \@ifpackagewith{backnaur}{epsilon}{
+        \CustomizeMathJax{\newcommand{\bnfes}{\epsilon}}
+    }{
+        \CustomizeMathJax{\newcommand{\bnfes}{\lambda}}
+    }
+}
+\@ifpackagewith{backnaur}{tsrm}{
+    \CustomizeMathJax{\newcommand{\bnfts}[1]{\text{#1}}}
+}{
+    \CustomizeMathJax{\newcommand{\bnfts}[1]{\text{\texttt{#1}}}}
+}
+\CustomizeMathJax{\newcommand{\bnftd}[1]{\text{\textit{#1}}}}
+\CustomizeMathJax{\newcommand{\bnfsk}{\dots}}
+\@ifpackagewith{backnaur}{altpo}{
+    \CustomizeMathJax{\newcommand{\bnfpo}{::=}}
+}{
+    \CustomizeMathJax{\newcommand{\bnfpo}{\models}}
+}
+\CustomizeMathJax{\newcommand{\bnfprod}{\ifstar{\LWRbnfprodnn}{\LWRbnfprodyn}}}
+\CustomizeMathJax{\newcommand{\LWRbnfprodyn}[2]{\bnfpn{#1} & \bnfpo & #2}}
+\CustomizeMathJax{\newcommand{\LWRbnfprodnn}[2]{\nonumber \bnfpn{#1} & \bnfpo & #2}}
+\CustomizeMathJax{\newcommand{\bnfmore}{\ifstar{\LWRbnfmorenn}{\LWRbnfmoreyn}}}
+\CustomizeMathJax{\newcommand{\LWRbnfmoreyn}[1]{ &  & #1}}
+\CustomizeMathJax{\newcommand{\LWRbnfmorenn}[1]{\nonumber &  & #1}}
+\end{warpMathJax}
 \endinput
 %%
 %% End of file `lwarp-backnaur.sty'.

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-backref.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-backref.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-backref.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -18,8 +18,14 @@
 
 \LWR at ProvidesPackagePass{backref}[2016/05/21]
 
-\def\backref{}\let\backrefxxx\hyper at section@backref
+\def\backref{}
 
+\long\def\hyper at section@backref#1#2#3{%
+    \ref{#3}%
+}
+
+\let\backrefxxx\hyper at section@backref
+
 \endinput
 %%
 %% End of file `lwarp-backref.sty'.

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -18,6 +18,8 @@
 \ifdef{\newfloat at addtocontents@ORI}{
     \let\addtocontents\newfloat at addtocontents@ORI
 }{}
+\AtBeginDocument{\RequirePackage{hyperref}}
+
 \LWR at ProvidesPackagePass{biblatex}[2018/03/04]
 \AfterPreamble{
 
@@ -27,6 +29,7 @@
         {}
         {\listxadd\blx at anchors{\the\c at refsection @\abx at field@entrykey}%
         \hypertarget{cite.\the\c at refsection @\abx at field@entrykey}{}}}
+
 \protected\def\blx at imc@bibhyperref{%
     \@ifnextchar[%]
       {\blx at bibhyperref}
@@ -51,7 +54,115 @@
 }
 
 \let\blx at imc@ifhyperref\@firstoftwo
-}
+\DeclareListFormat{pageref}{%
+  \ifnumless{\abx at pagerefstyle}{0}
+    {\usebibmacro{list:plain}%
+     \ifhyperref
+       {%
+            \ref{\BaseJobname-autopage-#1}%  lwarp
+       }
+       {#1}}
+    {\ifnumequal{\value{listcount}}{1}
+       {\usebibmacro{pageref:init}}
+       {}%
+     \usebibmacro{pageref:comp}{#1}%
+     \ifnumequal{\value{listcount}}{\value{liststop}}
+       {\usebibmacro{pageref:dump}}
+       {}}}
+
+\renewbibmacro*{pageref:comp}[1]{%
+  \numdef\abx at range@prev{\abx at range@prev+1}%
+  \ifinteger{#1}
+    {\def\abx at range@num{#1}%
+     \def\abx at range@this{1}%
+     \ifnumequal{\abx at range@this}{\abx at range@last}
+       {}
+       {\def\abx at range@prev{-1}}}
+    {\ifrmnum{#1}
+       {\numdef\abx at range@num{\rmntonum{#1}}%
+        \def\abx at range@this{2}%
+        \ifnumequal{\abx at range@this}{\abx at range@last}
+          {}
+          {\def\abx at range@prev{-1}}}
+       {\undef\abx at range@num
+        \def\abx at range@this{0}%
+        \def\abx at range@prev{-1}}}%
+  \ifdef\abx at range@num
+    {\ifnumequal{\abx at range@num}{\abx at range@prev}
+       {\def\abx at range@hold{#1}%
+        \numdef\abx at range@diff{\abx at range@diff+1}}
+       {\usebibmacro{pageref:dump}%
+        \ifnumgreater{\abx at range@last}{-1}
+          {\printdelim{multilistdelim}}
+          {}%
+        \ifhyperref
+          {\ref{\BaseJobname-autopage-#1}}%  lwarp
+          {#1}}%
+     \edef\abx at range@prev{\abx at range@num}}
+    {\usebibmacro{pageref:dump}%
+     \ifnumgreater{\abx at range@last}{-1}
+       {\printdelim{multilistdelim}}
+       {}%
+     \ifhyperref
+       {\ref{\BaseJobname-autopage-#1}}%  lwarp
+       {#1}%
+     \def\abx at range@prev{-1}}%
+  \edef\abx at range@last{\abx at range@this}}
+
+\renewbibmacro*{pageref:dump}{%
+  \ifnumgreater{\abx at range@diff}{0}
+    {\ifcase\abx at pagerefstyle\relax % two
+       \bibrangedash
+       \ifhyperref
+         {\ref{\BaseJobname-autopage-\abx at range@hold}}%  lwarp
+         {\abx at range@hold}%
+     \or % three
+       \ifnumless{\abx at range@diff}{2}
+         {\printdelim{multilistdelim}}
+         {\bibrangedash}%
+       \ifhyperref
+         {\ref{\BaseJobname-autopage-\abx at range@hold}}%  lwarp
+         {\abx at range@hold}%
+     \or % two+
+       \ifnumless{\abx at range@diff}{2}
+         {\sqspace
+          \ifhyperref
+            {\ref{\BaseJobname-autopage-\abx at range@hold}}%  lwarp
+            {\bibstring{sequens}}}
+         {\bibrangedash
+          \ifhyperref
+            {\ref{\BaseJobname-autopage-\abx at range@hold}}%  lwarp
+            {\abx at range@hold}}%
+     \or % three+
+       \ifnumless{\abx at range@diff}{2}
+         {\sqspace
+          \ifhyperref
+            {\ref{\BaseJobname-autopage-\abx at range@hold}}%  lwarp
+            {\bibstring{sequens}}}
+         {\ifnumless{\abx at range@diff}{3}
+            {\sqspace
+             \ifhyperref
+               {\ref{\BaseJobname-autopage-\abx at range@hold}}%  lwarp
+               {\bibstring{sequentes}}}
+            {\bibrangedash
+             \ifhyperref
+               {\ref{\BaseJobname-autopage-\abx at range@hold}}%  lwarp
+               {\abx at range@hold}}}%
+     \else % all+
+       \ifnumless{\abx at range@diff}{2}
+         {\sqspace
+          \ifhyperref
+            {\ref{\BaseJobname-autopage-\abx at range@hold}}%  lwarp
+            {\bibstring{sequens}}}
+         {\sqspace
+          \ifhyperref
+            {\ref{\BaseJobname-autopage-\abx at range@hold}}%  lwarp
+            {\bibstring{sequentes}}}%
+     \fi
+     \def\abx at range@diff{0}}
+    {}}
+
+}% \AfterPreamble
 \endinput
 %%
 %% End of file `lwarp-biblatex.sty'.

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-booktabs.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-booktabs.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-booktabs.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -88,7 +88,11 @@
 \CustomizeMathJax{\newcommand{\toprule}[1][]{\hline}}
 \CustomizeMathJax{\let\midrule\toprule}
 \CustomizeMathJax{\let\bottomrule\toprule}
-\CustomizeMathJax{\newcommand{\cmidrule}[2][]{}}% avoid (trim)
+\CustomizeMathJax{\def\LWRbooktabscmidruleparen(#1)#2{}}
+\CustomizeMathJax{\newcommand{\LWRbooktabscmidrulenoparen}[1]{}}
+\CustomizeMathJax{\newcommand{\cmidrule}[1][]{%
+    \ifnextchar(\LWRbooktabscmidruleparen\LWRbooktabscmidrulenoparen%
+}}
 \CustomizeMathJax{\newcommand{\morecmidrules}{}}
 \CustomizeMathJax{\newcommand{\specialrule}[3]{\hline}}
 \CustomizeMathJax{\newcommand{\addlinespace}[1][]{}}

Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,36 @@
+%%
+%% This is file `lwarp-boxedminipage.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `boxedminipage')
+%% 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{boxedminipage}[2020/04/19]
+
+\newenvironment{LWR at HTML@boxedminipage}{%
+    \LWR at stoppars%
+    \begin{BlockClass}{framebox}%
+    \minipage%
+}
+{%
+    \endminipage%
+    \end{BlockClass}%
+    \LWR at startpars%
+}
+\LWR at formattedenv{boxedminipage}
+
+\endinput
+%%
+%% End of file `lwarp-boxedminipage.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage2e.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage2e.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage2e.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -17,20 +17,8 @@
 %% version 2005/12/01 or later.
 
 
-\LWR at ProvidesPackagePass{boxedminipage2e}[2015/03/09]
+\LWR at ProvidesPackagePass{boxedminipage2e}
 
-\newenvironment{LWR at HTML@boxedminipage}{%
-    \LWR at stoppars%
-    \begin{BlockClass}{framebox}%
-    \minipage%
-}
-{%
-    \endminipage%
-    \end{BlockClass}%
-    \LWR at startpars%
-}
-\LWR at formattedenv{boxedminipage}
-
 \endinput
 %%
 %% End of file `lwarp-boxedminipage2e.sty'.

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-braket.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-braket.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-braket.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -17,14 +17,7 @@
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackagePass{braket}% No date is provided by the file.
 \begin{warpMathJax}
-\CustomizeMathJax{\newcommand{\bra}[1]{\langle#1\vert}}
-\CustomizeMathJax{\newcommand{\Bra}[1]{\left\langle#1\right\vert}}
-\CustomizeMathJax{\newcommand{\ket}[1]{\vert#1\rangle}}
-\CustomizeMathJax{\newcommand{\Ket}[1]{\left\vert#1\right\rangle}}
-\CustomizeMathJax{\newcommand{\braket}[1]{\langle#1\rangle}}
-\CustomizeMathJax{\newcommand{\Braket}[1]{\left\langle#1\right\rangle}}
-\CustomizeMathJax{\newcommand{\set}[1]{\{#1\}}}
-\CustomizeMathJax{\newcommand{\Set}[1]{\left\{#1\right\}}}
+    \CustomizeMathJax{\require{braket}}
 \end{warpMathJax}
 \endinput
 %%

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-breakurl.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-breakurl.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-breakurl.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -16,7 +16,7 @@
 %% and version 1.3 or later is part of all distributions of LaTeX
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackageDrop{breakurl}[2013/04/10]
-\LetLtxMacro\burl\url
+\LetLtxMacro\burl\LWR at url
 
 \NewDocumentCommand{\LWR at burlaltb}{O{} +m m}{%
     \LWR at ensuredoingapar%

Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-bussproofs.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-bussproofs.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-bussproofs.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,34 @@
+%%
+%% This is file `lwarp-bussproofs.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `bussproofs')
+%% 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{bussproofs}% no date in file
+\ifbool{mathjax}{
+    \CustomizeMathJax{\require{bussproofs}}
+
+    \NewEnviron{LWR at HTML@prooftree}%
+        {\LWR at doequation{\BODY}{prooftree}}%
+        [\LWR at doendequation{prooftree}]
+    \LWR at formattedenv{prooftree}
+}{% SVG HTML
+    \BeforeBeginEnvironment{prooftree}{%
+        \begin{lateximage}[-bussproofs-~\PackageDiagramAltText]%
+    }
+    \AfterEndEnvironment{prooftree}{\end{lateximage}}
+}
+\endinput
+%%
+%% End of file `lwarp-bussproofs.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-bussproofs.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-cancel.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-cancel.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-cancel.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -45,6 +45,11 @@
 
 \LetLtxMacro\bcancel\cancel
 \LetLtxMacro\xcancel\cancel
+\begin{warpMathJax}
+\PackageWarningNoLine{lwarp, cancel}{The MathJax v3 extension will be used}
+\CustomizeMathJax{\require{cancel}}
+\end{warpMathJax}
+
 \endinput
 %%
 %% End of file `lwarp-cancel.sty'.

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-caption.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-caption.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-caption.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -19,117 +19,70 @@
 \typeout{---}
 \typeout{Packages lwarp and caption:}
 \typeout{If a ``Missing \protect\begin\protect{document\protect}'' error occurs here,}
-\typeout{try using: \space \protect\usepackage\protect{caption\protect}\space\protect\captionsetup{options}}
+\typeout{try using: \space \protect\usepackage\protect{caption\protect}\space%
+    \protect\captionsetup{options}}
 \typeout{instead of: \protect\usepackage[options]\protect{caption\protect}.}
 \typeout{---}
 
-\LWR at ProvidesPackagePass{caption}[2019/09/01]
-
-\renewcommand\caption at ibox[3]{%
-  \@testopt{\caption at iibox{#1}{#2}{#3}}{%
-        \linewidth% lwarp
-  }%
+\LWR at ProvidesPackagePass{caption}[2020/10/26]
+\long\def\caption at iibox@#1#2#3#4{%
+  \caption at iiibox{#1}{#2}{#3}%
+        []%                             lwarp
+        [\captionbox at hj@default]%
+        {{#4}}%                         lwarp
 }
-\long\def\caption at iibox#1#2#3[#4]{%
-  \@testopt{\caption at iiibox{#1}{#2}{#3}{#4}}\captionbox at hj@default
-}
-\long\def\caption at iiibox#1#2#3#4[#5]#6{%
+\long\def\caption at iiiibox#1#2#3#4#5[#6][#7]#8{%
   \begingroup
   #1*% set \caption at position
   \caption at iftop{%
-    \LWR at traceinfo{caption at iiibox top}%
     \endgroup
-    \parbox[t]{#4}{%
+    \minipagefullwidth%                 lwarp
+    \parbox[t]{\linewidth}{%
       #1\relax
       \caption at setposition t%
-      {\caption#2{#3}}% lwarp
-       #6% lwarp
+            {\caption#4{#5}}%
+      #8%
     }%
   }{%
-    \LWR at traceinfo{caption at iiibox bottom}%
     \endgroup
-    \parbox[b]{#4}{%
+    \minipagefullwidth%                 lwarp
+    \parbox[b]{\linewidth}{%            lwarp
       #1\relax
       \caption at setposition b%
-         #6% lwarp
-      {\caption#2{#3}}% lwarp
-     }%
+      #8%
+            {\caption#4{#5}}%
+    }%
   }%
-\LWR at traceinfo{caption at iiibox: done}%
 }
 
-
-\long\def\caption@@caption#1[#2]#3{%
-  \ifcaption at star
-    \else
-    \caption at prepareanchor{#1}{#2}%
-    \memcaptioninfo{#1}{\csname the#1\endcsname}{#2}{#3}%
-    \@nameuse{nag at hascaptiontrue}%
-  \fi
-  \par
-  \caption at beginex{#1}{#2}{#3}%
-    \caption at setfloatcapt{%
-      \caption at boxrestore
-      \if at minipage
-        \@setminipage
-      \fi
-      \caption at normalsize
-      \ifcaption at star
-        \let\caption at makeanchor\@firstofone
-        #3%                 lwarp
-        \else%              lwarp
-      \@makecaption{\csname fnum@#1\endcsname}%
-                   {\ignorespaces\caption at makeanchor{#3}}%
-        \fi%                lwarp
-      \caption at if@minipage\@minipagetrue\@minipagefalse}%
-  \caption at end%
+\long\def\caption at makecaption#1#2{%
+  \caption@@make{#1}{#2}%
 }
 
-\renewcommand\caption@@@make[2]{%
-\LWR at traceinfo{caption@@@make}%
-  \caption at ifempty{#2}{%
-    \let\caption at lsep\@empty
-    \let\caption at tfmt\@firstofone
-  }%
-  \caption at applyfont
-    {\ifcaption at star\else
-       \begingroup
-        \captionlabelfont
-         #1%
-       \endgroup
-     \fi}%
-    {\ifcaption at star\else
-       \begingroup
-         \caption at iflf\captionlabelfont
-         \relax
-        \caption at lsep
-       \endgroup
-     \fi}%
-    {{%
-        \captiontextfont
-        \caption at tfmt{#2}%
-      }}%
-\LWR at traceinfo{caption@@@make done}%
+\AtBeginDocument{
+    \let\@makecaption\caption at makecaption
 }
 
-\renewcommand{\caption@@make@}[2]{%
-  \caption at stepthecounter
-  \caption at beginhook
-      \caption@@@make{#1}{#2}%
-  \caption at endhook
-}
+\AtBeginDocument{
+\xapptocmd{\@xfloat}
+    {\LWR at futurenonspacelet\LWR at mynexttoken\LWR at floatalignment}
+    {}
+    {\LWR at patcherror{caption}{@xfloat}}
 
-\long\def\caption at makecaption#1#2{%
-  \caption@@make{#1}{#2}%
+\xapptocmd{\@xdblfloat}
+    {\LWR at futurenonspacelet\LWR at mynexttoken\LWR at floatalignment}
+    {}
+    {\LWR at patcherror{caption}{@xdblfloat}}
 }
 
-\DeclareCaptionBox{parbox}{%
-#2%
+\caption at AtBeginDocument{
+\@ifpackageloaded{lwarp-scrextend}{
+    \LetLtxMacro\captionbelow\caption
+    \LetLtxMacro\captionabove\caption
+    \LetLtxMacro\captionofbelow\captionof
+    \LetLtxMacro\captionofabove\captionof
+}{}
 }
-\DeclareCaptionBox{colorbox}{%
-#2%
-}
-
 \endinput
 %%
 %% End of file `lwarp-caption.sty'.

Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-caption3.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-caption3.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-caption3.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,97 @@
+%%
+%% This is file `lwarp-caption3.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `caption3')
+%% 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{caption3}[2020/10/21]
+\@ifpackagelater{caption3}{2020/08/23}{
+\renewcommand\caption@@@make[2]{%
+\LWR at traceinfo{caption@@@make}%
+    \LWR at stoppars%                              lwarp
+  \caption at ifempty{#2}{%
+    \caption at set{labelseparator}{none}%
+    \caption at set{textformat}{simple}%
+  }%
+  \caption at labelseparator % defines \caption at iflabelfont,
+  \caption at applyfont
+    {\ifcaption at star\else
+       \begingroup
+         \captionlabelfont
+         \LWR at isolate{#1}%                      lwarp
+       \endgroup
+     \fi}%
+    {\ifcaption at star\else
+       \begingroup
+         \caption at iflabelfont\captionlabelfont
+         \relax\caption at labelsep
+       \endgroup
+     \fi}%
+    {{\captiontextfont
+        \let\\\newline%                         lwarp
+      \caption at textstart
+      \LWR at isolate{\caption at textformat{#2}}%    lwarp
+      \caption at textend}}%
+    \LWR at startpars%                              lwarp
+\LWR at traceinfo{caption@@@make done}%
+}
+}% later than 2020/08/23
+{% earlier than 2020/08/23
+\renewcommand\caption@@@make[2]{%
+\LWR at traceinfo{caption@@@make}%
+    \LWR at stoppars%                              lwarp
+  \caption at ifempty{#2}{%
+    \let\caption at lsep\@empty
+    \let\caption at tfmt\@firstofone
+  }%
+  \caption at applyfont
+    {\ifcaption at star\else
+       \begingroup
+        \captionlabelfont
+         \LWR at isolate{#1}%                      lwarp
+       \endgroup
+     \fi}%
+    {\ifcaption at star\else
+       \begingroup
+         \caption at iflf\captionlabelfont
+         \relax
+        \caption at lsep
+       \endgroup
+     \fi}%
+    {{%
+        \captiontextfont
+        \let\\\newline%                         lwarp
+        \LWR at isolate{\caption at tfmt{#2}}%        lwarp
+      }}%
+    \LWR at startpars%                              lwarp
+\LWR at traceinfo{caption@@@make done}%
+}
+}% earlier than 2020/08/23
+\renewcommand{\caption@@make@}[2]{%
+  \caption at stepthecounter%
+  \caption at beginhook%
+      \caption@@@make{#1}{#2}%
+  \caption at endhook%
+}
+\DeclareCaptionBox{none}{#2}
+\DeclareCaptionBox{parbox}{%
+    #2%
+}
+\DeclareCaptionBox{colorbox}{%
+    #2%
+}
+\endinput
+%%
+%% End of file `lwarp-caption3.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-caption3.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-centernot.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-centernot.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-centernot.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -16,8 +16,12 @@
 %% and version 1.3 or later is part of all distributions of LaTeX
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackagePass{centernot}[2016/05/16]
+\LWR at origRequirePackage{lwarp-common-mathjax-overlaysymbols}
+
 \begin{warpMathJax}
-\CustomizeMathJax{\newcommand{\centernot}[1]{\not{\!#1\,}}}
+\CustomizeMathJax{\newcommand{\centernot}[1]{%
+    \LWRoverlaysymbols{\unicode{x2215}}{#1}
+}}
 \end{warpMathJax}
 \endinput
 %%

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-changes.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-changes.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-changes.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -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'.

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-chemgreek.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-chemgreek.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-chemgreek.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -16,7 +16,7 @@
 %% and version 1.3 or later is part of all distributions of LaTeX
 %% version 2005/12/01 or later.
 
-\LWR at ProvidesPackagePass{chemgreek}[2016/02/10]
+\LWR at ProvidesPackagePass{chemgreek}[2020/01/16]
 
 \ExplSyntaxOn
 

Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-citeref.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-citeref.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-citeref.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,35 @@
+%%
+%% This is file `lwarp-citeref.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `citeref')
+%% 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{citeref}[1999/27/05]
+\def\@cprwrite#1={\write\@auxout{\string\citepageref{#1}{\theLWR at currentautosec}}}
+
+\def\citepageref#1#2{%
+    \xdef\cpr at testa{\@nameuse{cpr at last@#1}}%letzte Zitatstelle
+    \xdef\cpr at testb{#2}% Seite dieser Zitatstelle
+    \ifx\cpr at testa\cpr at testb%
+        \relax% Konsekutive identische Seitenangaben weglassen
+    \else%
+        \@namexdef{cpr at last@#1}{#2}%
+        \@ifundefined{cpr@#1}%
+            {\@namexdef{cpr@#1}{\ref{\BaseJobname-autopage-#2}}}%   lwarp
+            {\@namexdef{cpr@#1}{\@nameuse{cpr@#1}, \ref{\BaseJobname-autopage-#2}}}%    lwarp
+    \fi
+    }
+\endinput
+%%
+%% End of file `lwarp-citeref.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-citeref.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-cleveref.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-cleveref.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-cleveref.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,132 @@
+%%
+%% This is file `lwarp-cleveref.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `cleveref')
+%% 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{cleveref}[2018/03/27]
+\def\LWR at orig@@@setcref#1#2{\cref at getlabel{#2}{\@templabel}#1{\@templabel}{}{}}%
+
+\ifdefequal{\@@setcref}{\LWR at orig@@@setcref}{% before v0.21
+    \renewcommand*{\@@setcref}[2]{#1{\ref{#2}}{}{}}
+}{
+    \ifdefequal{\@@@setcref}{\LWR at orig@@@setcref}{% as of v0.21
+        \renewcommand*{\@@@setcref}[2]{%
+            #1{\ref{#2}}{}{}}
+    }{
+        \PackageWarningNoLine{lwarp-cleveref}{
+            Unknown version of cleveref.
+            \protect\cref\space will fail.
+        }%
+    }
+}
+
+\def\LWR at orig@@@setcrefrange#1#2#3{%
+  \cref at getlabel{#2}{\@labela}%
+  \cref at getlabel{#3}{\@labelb}%
+  #1{\@labela}{\@labelb}{}{}{}{}}%
+
+\ifdefequal{\@@setcrefrange}{\LWR at orig@@@setcrefrange}{
+    \renewcommand{\@@setcrefrange}[3]{%
+        #1{\ref{#2}}{\ref{#3}}{}{}{}{}%
+    }
+}{
+    \ifdefequal{\@@@setcrefrange}{\LWR at orig@@@setcrefrange}{
+        \renewcommand{\@@@setcrefrange}[3]{%
+            #1{\ref{#2}}{\ref{#3}}{}{}{}{}%
+        }
+    }{
+        \PackageWarningNoLine{lwarp-cleveref}{
+            Unknown version of cleveref.
+            \protect\crefrange\space will fail.
+        }
+    }
+}
+
+
+\newcommand*{\cpagerefFor}{for}
+
+\def\LWR at orig@@setcpageref#1#2{% before v0.21
+  \cref at getpageref{#2}{\@temppage}#1{\@temppage}{}{}}%
+
+\def\LWR at orig@@@setcpageref#1#2{% as of v0.21
+  \cpageref at getlabel{#2}{\@temppage}#1{\@temppage}{}{}}%
+
+\ifdefequal{\@@setcpageref}{\LWR at orig@@setcpageref}{
+    \renewcommand*{\@@setcpageref}[2]{%
+        #1{\cpagerefFor\ \cref{#2}}{}{}%
+    }
+}{
+    \ifdefequal{\@@@setcpageref}{\LWR at orig@@@setcpageref}{
+        \renewcommand*{\@@@setcpageref}[2]{%
+            #1{\cpagerefFor\ \cref{#2}}{}{}%
+        }
+    }
+    {
+        \PackageWarningNoLine{lwarp-cleveref}{
+            Unknown version of cleveref.
+            \protect\cpageref\space will fail.
+        }
+    }
+}
+
+
+\def\LWR at orig@@setcpagerefrange#1#2#3{% before v0.21
+  \cref at getpageref{#2}{\@pagea}%
+  \cref at getpageref{#3}{\@pageb}%
+  #1{\@pagea}{\@pageb}{}{}{}{}}%
+
+\def\LWR at orig@@@setcpagerefrange#1#2#3{% as of v0.21
+  \cpageref at getlabel{#2}{\@pagea}%
+  \cpageref at getlabel{#3}{\@pageb}%
+  #1{\@pagea}{\@pageb}{}{}{}{}}%
+
+\ifdefequal{\@@setcpagerefrange}{\LWR at orig@@setcpagerefrange}{
+    \renewcommand*{\@@setcpagerefrange}[3]{%
+        #1{\cpagerefFor\ \cref{#2}}{\cref{#3}}{}{}{}{}%
+    }
+}{
+    \ifdefequal{\@@@setcpagerefrange}{\LWR at orig@@@setcpagerefrange}{
+        \renewcommand*{\@@@setcpagerefrange}[3]{%
+            #1{\cpagerefFor\ \cref{#2}}{\cref{#3}}{}{}{}{}%
+        }
+    }
+    {
+        \PackageWarningNoLine{lwarp-cleveref}{
+            Unknown version of cleveref.
+            \protect\cpagerefrange\space will fail.
+        }
+    }
+}
+\LWR at absorbstar{cref}
+\LWR at absorbstar{Cref}
+\LWR at absorbstar{crefrange}
+\LWR at absorbstar{Crefrange}
+\LWR at absorbstar{cpageref}
+\LWR at absorbstar{Cpageref}
+\LWR at absorbstar{cpagerefrange}
+\LWR at absorbstar{Cpagerefrange}
+\LWR at absorbstar{labelcref}
+\LWR at absorbstar{labelcpageref}
+\@ifpackageloaded{varioref}{
+    \LWR at absorbstar{vref}
+    \LWR at absorbstar{Vref}
+    \LWR at absorbstar{vrefrange}
+    \LWR at absorbstar{Vrefrange}
+    \LWR at absorbstar{fullref}
+    \LWR at absorbstar{Fullref}
+}{}% varioref
+\endinput
+%%
+%% End of file `lwarp-cleveref.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-cleveref.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-cmbright.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-cmbright.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-cmbright.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,38 @@
+%%
+%% This is file `lwarp-cmbright.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `cmbright')
+%% 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{cmbright}[2005/04/13]
+
+\LWR at infoprocessingmathjax{cmbright}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+\@ifpackagewith{cmbright}{slantedGreek}
+{
+    \LWR at mathjax@addgreek at u@it*{}{}
+}
+{}
+
+\LWR at mathjax@addgreek at u@up*{up}{}
+
+\CustomizeMathJax{\newcommand{\mathbold}[1]{\boldsymbol{#1}}}
+
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-cmbright.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-cmbright.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-colonequals.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-colonequals.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-colonequals.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -19,24 +19,24 @@
 \begin{warpMathJax}
 \LWR at infoprocessingmathjax{colonequals}
 
-\CustomizeMathJax{\newcommand{\ratio}{\unicode{x2236}}}
-\CustomizeMathJax{\newcommand{\coloncolon}{\unicode{x2237}}}
-\CustomizeMathJax{\newcommand{\colonequals}{\coloncolon=}}
-\CustomizeMathJax{\newcommand{\coloncolonequals}{\coloncolon=}}
-\CustomizeMathJax{\newcommand{\equalscolon}{=\!\ratio}}
-\CustomizeMathJax{\newcommand{\equalscoloncolon}{=\!\coloncolon}}
-\CustomizeMathJax{\newcommand{\colonminus}{\ratio-}}
-\CustomizeMathJax{\newcommand{\coloncolonminus}{\coloncolon-}}
-\CustomizeMathJax{\newcommand{\minuscolon}{-\ratio}}
-\CustomizeMathJax{\newcommand{\minuscoloncolon}{-\coloncolon}}
-\CustomizeMathJax{\newcommand{\colonapprox}{\ratio\approx}}
-\CustomizeMathJax{\newcommand{\coloncolonapprox}{\coloncolon\approx}}
-\CustomizeMathJax{\newcommand{\approxcolon}{\approx\!\ratio}}
-\CustomizeMathJax{\newcommand{\approxcoloncolon}{\approx\!\coloncolon}}
-\CustomizeMathJax{\newcommand{\colonsim}{\ratio\sim}}
-\CustomizeMathJax{\newcommand{\coloncolonsim}{\coloncolon\sim}}
-\CustomizeMathJax{\newcommand{\simcolon}{\sim\!\ratio}}
-\CustomizeMathJax{\newcommand{\simcoloncolon}{\sim\!\coloncolon}}
+\CustomizeMathJax{\newcommand{\ratio}{\mathrel{\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand{\coloncolon}{\mathrel{\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand{\colonequals}{\mathrel{\unicode{x2236}\!=}}}
+\CustomizeMathJax{\newcommand{\coloncolonequals}{\mathrel{\unicode{x2237}\!=}}}
+\CustomizeMathJax{\newcommand{\equalscolon}{\mathrel{=\!\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand{\equalscoloncolon}{\mathrel{=\!\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand{\colonminus}{\mathrel{\unicode{x2236}-}}}
+\CustomizeMathJax{\newcommand{\coloncolonminus}{\mathrel{\unicode{x2237}-}}}
+\CustomizeMathJax{\newcommand{\minuscolon}{\mathrel{-\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand{\minuscoloncolon}{\mathrel{-\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand{\colonapprox}{\mathrel{\unicode{x2236}\!\approx}}}
+\CustomizeMathJax{\newcommand{\coloncolonapprox}{\mathrel{\unicode{x2237}\!\approx}}}
+\CustomizeMathJax{\newcommand{\approxcolon}{\mathrel{\approx\!\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand{\approxcoloncolon}{\mathrel{\approx\!\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand{\colonsim}{\mathrel{\unicode{x2236}\!\sim}}}
+\CustomizeMathJax{\newcommand{\coloncolonsim}{\mathrel{\unicode{x2237}\!\sim}}}
+\CustomizeMathJax{\newcommand{\simcolon}{\mathrel{\sim\!\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand{\simcoloncolon}{\mathrel{\sim\!\unicode{x2237}}}}
 \end{warpMathJax}
 \endinput
 %%

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-colortbl.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-colortbl.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-colortbl.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -58,6 +58,12 @@
 
 \AtBeginDocument{\LWR at expandableformatted{doublerulesepcolornexttoken}}
 
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\columncolor}[2][]{\LWRabsorbtwooptions}}
+\CustomizeMathJax{\let\rowcolor\columncolor}
+\CustomizeMathJax{\let\cellcolor\columncolor}
+\end{warpMathJax}
+
 \endinput
 %%
 %% End of file `lwarp-colortbl.sty'.

Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-letters.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-letters.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-letters.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,330 @@
+%%
+%% This is file `lwarp-common-mathjax-letters.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `common-mathjax-letters')
+%% 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.
+\ProvidesPackage{lwarp-common-mathjax-letters}[2020/08/10]
+\begin{warpMathJax}
+
+\NewDocumentCommand{\LWR at mathjax@addletter}{s m m m m m}{
+    \IfBooleanTF{#2}%
+        {\edef\LWR at tempone{\LWRtexttitlecase{#5}}}%
+        {\edef\LWR at tempone{#5}}%
+    \xdef\LWR at customizedMathJax{%
+        \LWR at customizedMathJax%
+        \LWRbackslash(%
+        \LWRbackslash def\LWRbackslash%
+        #3% prefix
+        \LWR at tempone%name
+        #4% postfix
+        \LWRleftbrace%
+    }%
+    \IfBooleanTF{#1}{%
+        \xdef\LWR at customizedMathJax{%
+            \LWR at customizedMathJax%
+            \LWRbackslash mathit\LWRleftbrace%
+            \LWRbackslash unicode\LWRleftbrace x#6\LWRrightbrace%
+            \LWRrightbrace%
+        }%
+    }{%
+        \xdef\LWR at customizedMathJax{%
+            \LWR at customizedMathJax%
+            \LWRbackslash unicode\LWRleftbrace x#6\LWRrightbrace%
+        }%
+    }%
+    \xdef\LWR at customizedMathJax{%
+        \LWR at customizedMathJax%
+        \LWRrightbrace\LWRbackslash)\par%
+    }%
+}
+\NewDocumentCommand{\LWR at mathjax@addgreek at l@up}{s m m}{
+    \LWR at mathjax@addletter{#1}{#2}{#3}{alpha}{03B1}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{beta}{03B2}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varbeta}{03D0}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{gamma}{03B3}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{digamma}{03DD}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{delta}{03B4}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{epsilon}{03F5}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varepsilon}{03B5}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{zeta}{03B6}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{eta}{03B7}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{theta}{03B8}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{vartheta}{03D1}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{iota}{03B9}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{kappa}{03BA}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varkappa}{03F0}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{lambda}{03BB}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{mu}{03BC}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{nu}{03BD}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{xi}{03BE}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omicron}{03BF}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{pi}{03C0}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varpi}{03D6}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{rho}{03C1}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varrho}{03F1}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{sigma}{03C3}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varsigma}{03C2}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{tau}{03C4}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{upsilon}{03C5}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{phi}{03D5}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varphi}{03C6}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{chi}{03C7}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{psi}{03C8}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omega}{03C9}
+}
+\NewDocumentCommand{\LWR at mathjax@addgreek at u@up}{s m m}{
+    \LWR at mathjax@addletter{#1}{#2}{#3}{alpha}{0391}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{beta}{0392}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{gamma}{0393}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{digamma}{03DC}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{delta}{0394}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{epsilon}{0395}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{zeta}{0396}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{eta}{0397}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{theta}{0398}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{vartheta}{03F4}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{iota}{0399}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{kappa}{039A}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{lambda}{039B}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{mu}{039C}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{nu}{039D}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{xi}{039E}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omicron}{039F}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{pi}{03A0}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varpi}{03D6}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{rho}{03A1}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{sigma}{03A3}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{tau}{03A4}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{upsilon}{03A5}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{phi}{03A6}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{chi}{03A7}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{psi}{03A8}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omega}{03A9}
+}
+\NewDocumentCommand{\LWR at mathjax@addgreek at l@it}{s m m}{
+    \LWR at mathjax@addletter{#1}{#2}{#3}{alpha}{1D6FC}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{beta}{1D6FD}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varbeta}{03D0}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{gamma}{1D6FE}
+    \LWR at mathjax@addletter*{#1}{#2}{#3}{digamma}{03DD}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{delta}{1D6FF}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{epsilon}{1D716}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varepsilon}{1D700}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{zeta}{1D701}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{eta}{1D702}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{theta}{1D703}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{vartheta}{1D717}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{iota}{1D704}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{kappa}{1D705}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varkappa}{1D718}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{lambda}{1D706}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{mu}{1D707}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{nu}{1D708}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{xi}{1D709}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omicron}{1D70A}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{pi}{1D70B}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varpi}{1D71B}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{rho}{1D70C}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varrho}{1D71A}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{sigma}{1D70E}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varsigma}{1D70D}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{tau}{1D70F}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{upsilon}{1D710}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{phi}{1D719}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varphi}{1D711}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{chi}{1D712}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{psi}{1D713}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omega}{1D714}
+}
+\NewDocumentCommand{\LWR at mathjax@addgreek at u@it}{s m m}{
+    \LWR at mathjax@addletter{#1}{#2}{#3}{alpha}{1D6E2}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{beta}{1D6E3}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{gamma}{1D6E4}
+    \LWR at mathjax@addletter*{#1}{#2}{#3}{digamma}{03DC}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{delta}{1D6E5}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{epsilon}{1D6E6}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{zeta}{1D6E7}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{eta}{1D6E8}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{theta}{1D6E9}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{vartheta}{1D6F3}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{iota}{1D6EA}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{kappa}{1D6EB}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{lambda}{1D6EC}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{mu}{1D6ED}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{nu}{1D6EE}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{xi}{1D6EF}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omicron}{1D6F0}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{pi}{1D6F1}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{rho}{1D6F2}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{sigma}{1D6F4}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{tau}{1D6F5}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{upsilon}{1D6F6}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{phi}{1D6F7}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{chi}{1D6F8}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{psi}{1D6F9}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omega}{1D6FA}
+}
+\NewDocumentCommand{\LWR at mathjax@addgreek at l@bfit}{s m m}{
+    \LWR at mathjax@addletter{#1}{#2}{#3}{alpha}{1D736}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{beta}{1D737}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varbeta}{03D0}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{gamma}{1D738}
+    \LWR at mathjax@addletter*{#1}{#2}{#3}{digamma}{03DD}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{delta}{1D739}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{epsilon}{1D750}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varepsilon}{1D73A}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{zeta}{1D73B}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{eta}{1D73C}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{theta}{1D73D}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{vartheta}{1D751}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{iota}{1D73E}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{kappa}{1D73F}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varkappa}{1D752}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{lambda}{1D740}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{mu}{1D741}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{nu}{1D742}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{xi}{1D743}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omicron}{1D744}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{pi}{1D745}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varpi}{1D755}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{rho}{1D746}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varrho}{1D754}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{sigma}{1D748}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varsigma}{1D747}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{tau}{1D749}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{upsilon}{1D74A}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{phi}{1D753}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{varphi}{1D74B}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{chi}{1D74C}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{psi}{1D74D}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omega}{1D74E}
+}
+\NewDocumentCommand{\LWR at mathjax@addgreek at u@bfit}{s m m}{
+    \LWR at mathjax@addletter{#1}{#2}{#3}{alpha}{1D71C}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{beta}{1D71D}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{gamma}{1D71E}
+    \LWR at mathjax@addletter*{#1}{#2}{#3}{digamma}{03DC}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{delta}{1D71F}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{epsilon}{1D720}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{zeta}{1D721}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{eta}{1D722}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{theta}{1D723}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{vartheta}{1D72D}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{iota}{1D724}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{kappa}{1D725}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{lambda}{1D726}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{mu}{1D727}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{nu}{1D728}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{xi}{1D729}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omicron}{1D72A}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{pi}{1D72B}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{rho}{1D72C}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{sigma}{1D72E}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{tau}{1D72F}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{upsilon}{1D730}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{phi}{1D731}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{chi}{1D732}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{psi}{1D733}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omega}{1D734}
+}
+\NewDocumentCommand{\LWR at mathjax@addgreek at u@bfup}{s m m}{
+    \LWR at mathjax@addletter{#1}{#2}{#3}{alpha}{1D6A8}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{beta}{1D6A9}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{gamma}{1D6AA}
+    \LWR at mathjax@addletter*{#1}{#2}{#3}{digamma}{03DC}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{delta}{1D6AB}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{epsilon}{1D6AC}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{zeta}{1D6AD}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{eta}{1D6AE}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{theta}{1D6AF}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{vartheta}{1D6B9}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{iota}{1D6B0}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{kappa}{1D6B1}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{lambda}{1D6B2}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{mu}{1D6B3}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{nu}{1D6B4}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{xi}{1D6B5}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omicron}{1D6B6}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{pi}{1D6B7}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{rho}{1D6B8}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{sigma}{1D6BA}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{tau}{1D6BB}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{upsilon}{1D6BC}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{phi}{1D6BD}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{chi}{1D6BE}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{psi}{1D6BF}
+    \LWR at mathjax@addletter{#1}{#2}{#3}{omega}{1D6C0}
+}
+\NewDocumentCommand{\LWR at mathjax@addlatin at u@bfit}{m}{
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{A}{1D468}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{B}{1D469}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{C}{1D46A}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{D}{1D46B}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{E}{1D46C}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{F}{1D46D}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{G}{1D46E}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{H}{1D46F}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{I}{1D470}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{J}{1D471}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{K}{1D472}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{L}{1D473}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{M}{1D474}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{N}{1D475}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{O}{1D476}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{P}{1D477}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{Q}{1D478}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{R}{1D479}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{S}{1D47A}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{T}{1D47B}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{U}{1D47C}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{V}{1D47D}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{W}{1D47E}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{X}{1D47F}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{Y}{1D480}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{Z}{1D481}
+}
+\NewDocumentCommand{\LWR at mathjax@addlatin at l@bfit}{m}{
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{a}{1D482}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{b}{1D483}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{c}{1D484}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{d}{1D485}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{e}{1D486}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{f}{1D487}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{g}{1D488}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{h}{1D489}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{i}{1D48A}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{j}{1D48B}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{k}{1D48C}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{l}{1D48D}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{m}{1D48E}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{n}{1D48F}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{o}{1D490}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{p}{1D491}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{q}{1D492}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{r}{1D493}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{s}{1D494}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{t}{1D495}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{u}{1D496}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{v}{1D497}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{w}{1D498}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{x}{1D499}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{y}{1D49A}
+    \LWR at mathjax@addletter{\BooleanFalse}{#1}{}{z}{1D49B}
+}
+\end{warpMathJax}
+
+\endinput
+%%
+%% End of file `lwarp-common-mathjax-letters.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-letters.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-newpxtxmath.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-newpxtxmath.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-newpxtxmath.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,278 @@
+%%
+%% This is file `lwarp-common-mathjax-newpxtxmath.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `common-mathjax-newpxtxmath')
+%% 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.
+\ProvidesPackage{lwarp-common-mathjax-newpxtxmath}[2020/09/20]
+\LWR at origRequirePackage{lwarp-common-mathjax-nonunicode}
+\LWR at origRequirePackage{lwarp-common-mathjax-overlaysymbols}
+
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\fAlt}{f}}
+\CustomizeMathJax{\newcommand{\rhoAlt}{\rho}}
+
+\CustomizeMathJax{\newcommand{\imathscr}{\mathord{\mathscr{i}}}}
+\CustomizeMathJax{\newcommand{\jmathscr}{\mathord{\mathscr{j}}}}
+\CustomizeMathJax{\let\llbracket\lBrack}
+\CustomizeMathJax{\let\rrbracket\rBrack}
+
+\CustomizeMathJax{\let\smlbrace\{}
+\CustomizeMathJax{\let\smrbrace\}}
+\CustomizeMathJax{\newcommand{\Perp}{\mathrel{\unicode{x02AEB}}}}
+\CustomizeMathJax{\newcommand{\nPerp}{\mathrel{\not{\!\unicode{x02AEB}}}}}
+\CustomizeMathJax{\newcommand{\Zbar}{\mathord{\unicode{x01B5}}}}
+\CustomizeMathJax{\newcommand{\Angstrom}{\mathord{\unicode{x212B}}}}
+\CustomizeMathJax{\newcommand{\Euler}{\mathord{\unicode{x2107}}}}
+\CustomizeMathJax{\newcommand{\transp}{\mathord{\unicode{xFF34}}}}
+\CustomizeMathJax{\newcommand{\hermtransp}{\mathord{\unicode{xFF28}}}}
+\CustomizeMathJax{\let\htransp=\hermtransp}
+\CustomizeMathJax{\newcommand{\circledplus}{\mathbin{\unicode{x2295}}}}
+\CustomizeMathJax{\newcommand{\circledminus}{\mathbin{\unicode{x2296}}}}
+\CustomizeMathJax{\newcommand{\circledtimes}{\mathbin{\unicode{x2297}}}}
+\CustomizeMathJax{\newcommand{\circledslash}{\mathbin{\unicode{x2298}}}}
+\CustomizeMathJax{\newcommand{\circleddot}{\mathbin{\unicode{x2299}}}}
+\CustomizeMathJax{\let\overgroup\overparen}
+\CustomizeMathJax{\let\overgroupra\overrightarrow}
+\CustomizeMathJax{\let\undergroup\underparen}
+\CustomizeMathJax{\let\undergroupla\underleftarrow}
+\CustomizeMathJax{\newcommand{\widering}[1]{\stackrel{\unicode{x2218}}{\overgroup{#1}}}}
+\CustomizeMathJax{\let\widearc\overparen}
+\CustomizeMathJax{\let\wideOarc\overrightarrow}
+\CustomizeMathJax{\newcommand{\LWRvvstar}[2]{{\overrightarrow{#1}_{#2}}}}
+\CustomizeMathJax{\newcommand{\vv}{\ifstar\LWRvvstar\overrightarrow}}
+\CustomizeMathJax{\let\smallintsl\smallint}
+\CustomizeMathJax{\newcommand{\smalliintsl}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiintsl}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiiintsl}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\newcommand{\smallointsl}{\mathop{\unicode{x222E}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiintsl}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiiintsl}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\newcommand{\smallvarointclockwisesl}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\smallointctrclockwisesl}{\mathop{\unicode{x2233}}\limits}}
+\CustomizeMathJax{\newcommand{\smallsumintsl}{\mathop{\unicode{x2A0B}}\limits}}
+\CustomizeMathJax{\newcommand{\smallfintsl}{\mathop{\unicode{x2A0F}}\limits}}
+\CustomizeMathJax{\newcommand{\smallsqintsl}{\mathop{\unicode{x2A16}}\limits}}
+\CustomizeMathJax{\let\smallintup\smallint}
+\CustomizeMathJax{\newcommand{\smalliintup}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiintup}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiiintup}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\newcommand{\smallointup}{\mathop{\unicode{x222E}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiintup}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiiintup}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\newcommand{\smallvarointclockwiseup}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\smallointctrclockwiseup}{\mathop{\unicode{x2233}}\limits}}
+\CustomizeMathJax{\newcommand{\smallsumintup}{\mathop{\unicode{x2A0B}}\limits}}
+\CustomizeMathJax{\newcommand{\smallfintup}{\mathop{\unicode{x2A0F}}\limits}}
+\CustomizeMathJax{\newcommand{\smallsqintup}{\mathop{\unicode{x2A16}}\limits}}
+\CustomizeMathJax{\newcommand{\iint}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiint}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\iiiint}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\newcommand{\oiint}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiint}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\newcommand{\varointclockwise}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\ointctrclockwise}{\mathop{\unicode{x2233}}\limits}}
+\CustomizeMathJax{\newcommand{\sumint}{\mathop{\unicode{x2A0B}}\limits}}
+\CustomizeMathJax{\newcommand{\fint}{\mathop{\unicode{x2A0F}}\limits}}
+\CustomizeMathJax{\newcommand{\sqint}{\mathop{\unicode{x2A16}}\limits}}
+\CustomizeMathJax{\let\intsl\int}
+\CustomizeMathJax{\newcommand{\iintsl}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintsl}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\iiiintsl}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\let\ointsl\oint}
+\CustomizeMathJax{\newcommand{\oiintsl}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiintsl}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\newcommand{\varointclockwisesl}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\ointctrclockwisesl}{\mathop{\unicode{x2233}}\limits}}
+\CustomizeMathJax{\newcommand{\sumintsl}{\mathop{\unicode{x2A0B}}\limits}}
+\CustomizeMathJax{\newcommand{\fintsl}{\mathop{\unicode{x2A0F}}\limits}}
+\CustomizeMathJax{\newcommand{\sqintsl}{\mathop{\unicode{x2A16}}\limits}}
+\CustomizeMathJax{\let\intup\int}
+\CustomizeMathJax{\newcommand{\iintup}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintup}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\iiiintup}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\let\ointup\oint}
+\CustomizeMathJax{\newcommand{\oiintup}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiintup}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\newcommand{\varointclockwiseup}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\ointctrclockwiseup}{\mathop{\unicode{x2233}}\limits}}
+\CustomizeMathJax{\newcommand{\sumintup}{\mathop{\unicode{x2A0B}}\limits}}
+\CustomizeMathJax{\newcommand{\fintup}{\mathop{\unicode{x2A0F}}\limits}}
+\CustomizeMathJax{\newcommand{\sqintup}{\mathop{\unicode{x2A16}}\limits}}
+\CustomizeMathJax{\newcommand{\bigcupdot}{\mathop{\unicode{x2A03}}}}
+\CustomizeMathJax{\newcommand{\bigcupplus}{\mathop{\unicode{x2A04}}}}
+\CustomizeMathJax{\newcommand{\bigsqcap}{\mathop{\unicode{x2A05}}}}
+\CustomizeMathJax{\newcommand{\bigtimes}{\mathop{\unicode{x2A09}}}}
+\CustomizeMathJax{\let\varprod\bigtimes}
+\CustomizeMathJax{\newcommand{\mappedfrom}{\mathrel{\unicode{x021A4}}}}
+\CustomizeMathJax{\let\mappedfromchar\mappedfrom}
+\CustomizeMathJax{\newcommand{\mapsfrom}{\mathrel{\unicode{x021A4}}}}
+\CustomizeMathJax{\newcommand{\longmappedfrom}{\mathrel{\unicode{x027FB}}}}
+\CustomizeMathJax{\newcommand{\Mapsto}{\mathrel{\unicode{x02907}}}}
+\CustomizeMathJax{\let\Mapstochar\Mapsto}
+\CustomizeMathJax{\newcommand{\Longmapsto}{\mathrel{\unicode{x027FE}}}}
+\CustomizeMathJax{\newcommand{\Mappedfrom}{\mathrel{\unicode{x02906}}}}
+\CustomizeMathJax{\let\Mappedfromchar\Mappedfrom}
+\CustomizeMathJax{\newcommand{\Mapsfrom}{\mathrel{\unicode{x02906}}}}
+\CustomizeMathJax{\newcommand{\Longmappedfrom}{\mathrel{\unicode{x27FD}}}}
+\CustomizeMathJax{\newcommand{\medcirc}{\mathbin{\unicode{x025CB}}}}
+\CustomizeMathJax{\newcommand{\medbullet}{\mathbin{\unicode{x025CF}}}}
+\CustomizeMathJax{\newcommand{\varparallel}{\mathrel{\unicode{x02AFD}}}}
+\CustomizeMathJax{\newcommand{\varparallelinv}{\mathrel{\unicode{x244A}}}}
+\CustomizeMathJax{\newcommand{\nvarparallel}{\mathrel{\LWRoverlaysymbols{-}{\unicode{x02AFD}}}}}
+\CustomizeMathJax{\newcommand{\nvarparallelinv}{\mathrel{\LWRoverlaysymbols{-}{\unicode{x244A}}}}}
+\CustomizeMathJax{\newcommand{\coloneq}{\mathrel{\unicode{x02254}}}}
+\CustomizeMathJax{\newcommand{\eqcolon}{\mathrel{\unicode{x02255}}}}
+\CustomizeMathJax{\newcommand{\VDash}{\mathrel{\unicode{x22AB}}}}
+\CustomizeMathJax{\newcommand{\preceqq}{\mathrel{\unicode{x02AB3}}}}
+\CustomizeMathJax{\newcommand{\succeqq}{\mathrel{\unicode{x02AB4}}}}
+
+\CustomizeMathJax{\newcommand{\nprecsim}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0227E}}}}}
+\CustomizeMathJax{\newcommand{\nsuccsim}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0227F}}}}}
+\CustomizeMathJax{\newcommand{\nlesssim}{\mathrel{\unicode{x02274}}}}
+\CustomizeMathJax{\newcommand{\ngtrsim}{\mathrel{\unicode{x02275}}}}
+\CustomizeMathJax{\newcommand{\nsubset}{\mathrel{\unicode{x02284}}}}
+\CustomizeMathJax{\newcommand{\nsupset}{\mathrel{\unicode{x02285}}}}
+\CustomizeMathJax{\newcommand{\notni}{\mathrel{\unicode{x220C}}}}
+\CustomizeMathJax{\let\notowns\notni}
+\CustomizeMathJax{\newcommand{\nlessapprox}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x02A85}}}}}
+\CustomizeMathJax{\newcommand{\ngtrapprox}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x02A86}}}}}
+\CustomizeMathJax{\newcommand{\npreccurlyeq}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0227C}}}}}
+\CustomizeMathJax{\newcommand{\nsucccurlyeq}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0227D}}}}}
+\CustomizeMathJax{\newcommand{\ngtrless}{\mathrel{\unicode{x02279}}}}
+\CustomizeMathJax{\newcommand{\nlessgtr}{\mathrel{\unicode{x2278}}}}
+\CustomizeMathJax{\newcommand{\nbumpeq}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0224F}}}}}
+\CustomizeMathJax{\newcommand{\nBumpeq}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0224E}}}}}
+\CustomizeMathJax{\newcommand{\nbacksim}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0223D}}}}}
+\CustomizeMathJax{\newcommand{\nbacksimeq}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x022CD}}}}}
+\CustomizeMathJax{\newcommand{\nasymp}{\mathrel{\unicode{x226D}}}}
+\CustomizeMathJax{\newcommand{\nequiv}{\mathrel{\unicode{x2262}}}}
+\CustomizeMathJax{\newcommand{\napprox}{\mathrel{\unicode{x2249}}}}
+\CustomizeMathJax{\newcommand{\nll}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0226A}}}}}
+\CustomizeMathJax{\newcommand{\ngg}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0226B}}}}}
+\CustomizeMathJax{\newcommand{\nthickapprox}{%
+    \mathrel{\LWRoverlaysymbols{/}{{\mathbf{\unicode{x02248}}}}}%
+}}
+\CustomizeMathJax{\newcommand{\napproxeq}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0224A}}}}}
+\CustomizeMathJax{\newcommand{\nprecapprox}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x02AB7}}}}}
+\CustomizeMathJax{\newcommand{\nsuccapprox}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x02AB8}}}}}
+\CustomizeMathJax{\newcommand{\npreceqq}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x02AB3}}}}}
+\CustomizeMathJax{\newcommand{\nsucceqq}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x02AB4}}}}}
+\CustomizeMathJax{\newcommand{\nsimeq}{\mathrel{\unicode{x02244}}}}
+\CustomizeMathJax{\newcommand{\nSubset}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x022D0}}}}}
+\CustomizeMathJax{\newcommand{\nSupset}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x022D1}}}}}
+\CustomizeMathJax{\newcommand{\nsqsubseteq}{\mathrel{\unicode{x022E2}}}}
+\CustomizeMathJax{\newcommand{\nsqsupseteq}{\mathrel{\unicode{x022E3}}}}
+\CustomizeMathJax{\newcommand{\coloneqq}{\mathrel{\unicode{x02254}}}}
+\CustomizeMathJax{\newcommand{\eqqcolon}{\mathrel{\unicode{x02255}}}}
+\CustomizeMathJax{\newcommand{\Coloneqq}{\mathrel{\unicode{x02A74}}}}
+\CustomizeMathJax{\newcommand{\Coloneq}{\mathrel{\unicode{x2237}-}}}
+\CustomizeMathJax{\newcommand{\Eqcolon}{\mathrel{-\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand{\lvec}[1]{\mathord{\overset{\unicode{x02190}}{#1}}}}
+\CustomizeMathJax{\newcommand{\lrvec}[1]{\mathord{\overset{\unicode{x2194}}{#1}}}}
+\CustomizeMathJax{\newcommand{\harpoonacc}[1]{\mathord{\overset{\unicode{x021C0}}{#1}}}}
+\CustomizeMathJax{\newcommand{\lharpoonacc}[1]{\mathord{\overset{\unicode{x021BC}}{#1}}}}
+\CustomizeMathJax{\newcommand{\lrharpoonacc}[1]{\mathord{\overset{\unicode{x0294E}}{#1}}}}
+\CustomizeMathJax{\newcommand{\barbar}[1]{\mathord{\overset{=}{#1}}}}
+\CustomizeMathJax{\newcommand{\bartilde}[1]{\mathord{\overset{\simeq}{#1}}}}
+\CustomizeMathJax{\newcommand{\barhat}[1]{\mathord{\hat{\bar{#1}}}}}
+\CustomizeMathJax{\newcommand{\tildebar}[1]{\mathord{\overset{\eqsim}{#1}}}}
+\CustomizeMathJax{\newcommand{\tildetilde}[1]{\mathord{\overset{\approx}{#1}}}}
+\CustomizeMathJax{\newcommand{\tildehat}[1]{\mathord{\hat{\tilde{#1}}}}}
+\CustomizeMathJax{\newcommand{\hatbar}[1]{\mathord{\bar{\hat{#1}}}}}
+\CustomizeMathJax{\newcommand{\hattilde}[1]{\mathord{\tilde{\hat{#1}}}}}
+\CustomizeMathJax{\newcommand{\hathat}[1]{\mathord{\hat{\hat{#1}}}}}
+
+\CustomizeMathJax{\newcommand{\cdotB}{\mathord{\boldsymbol{\cdot}}}}
+\CustomizeMathJax{\newcommand{\cdotBB}{\mathord{\unicode{x2022}}}}
+\CustomizeMathJax{\newcommand{\circS}{\boldsymbol{\circ}}}
+\CustomizeMathJax{\newcommand{\bulletSSS}{\bullet}}
+\CustomizeMathJax{\newcommand{\bulletSS}{\mathord{\unicode{x025CF}}}}
+\CustomizeMathJax{\newcommand{\bulletS}{\mathord{\unicode{x02B24}}}}
+\CustomizeMathJax{\newcommand{\primeS}{\prime}}
+
+\CustomizeMathJax{\newcommand{\invamp}{\mathbin{\unicode{x0214B}}}}
+\CustomizeMathJax{\newcommand{\Lbag}{\mathopen{\large\unicode{x027C5}}}}
+\CustomizeMathJax{\newcommand{\Rbag}{\mathclose{\large\unicode{x027C6}}}}
+\CustomizeMathJax{\newcommand{\circledless}{\mathrel{\unicode{x029C0}}}}
+\CustomizeMathJax{\newcommand{\circledgtr}{\mathrel{\unicode{x029C1}}}}
+\CustomizeMathJax{\newcommand{\circledbslash}{\mathbin{\unicode{x029B8}}}}
+\CustomizeMathJax{\newcommand{\lJoin}{\mathrel{\unicode{x22C9}}}}
+\CustomizeMathJax{\newcommand{\rJoin}{\mathrel{\unicode{x22CA}}}}
+\CustomizeMathJax{\newcommand{\lrJoin}{\mathrel{\unicode{x2A1D}}}}
+
+\CustomizeMathJax{\newcommand{\lrtimes}{\mathrel{\unicode{x2A1D}}}}
+\CustomizeMathJax{\newcommand{\Diamondblack}{\mathord{\unicode{x025C6}}}}
+\CustomizeMathJax{\newcommand{\nplus}{\mathrel{\LWRoverlaysymbols{+}{\unicode{x02229}}}}}
+\CustomizeMathJax{\newcommand{\nsqsubset}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x0228F}}}}}
+\CustomizeMathJax{\newcommand{\nsqsupset}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x02290}}}}}
+\CustomizeMathJax{\newcommand{\dasharrow}{\mathrel{\unicode{x021E2}}}}
+\CustomizeMathJax{\newcommand{\leftsquigarrow}{\mathrel{\unicode{x021DC}}}}
+\CustomizeMathJax{\newcommand{\ntwoheadrightarrow}{\mathrel{\unicode{x02900}}}}
+\CustomizeMathJax{\newcommand{\ntwoheadleftarrow}{\mathrel{\unicode{x02B34}}}}
+\CustomizeMathJax{\newcommand{\boxast}{\mathbin{\unicode{x029C6}}}}
+\CustomizeMathJax{\newcommand{\boxbslash}{\mathbin{\unicode{x29C5}}}}
+\CustomizeMathJax{\newcommand{\boxbar}{\mathbin{\unicode{x025EB}}}}
+\CustomizeMathJax{\newcommand{\boxslash}{\mathbin{\unicode{x029C4}}}}
+
+\CustomizeMathJax{\newcommand{\varclubsuit}{\mathord{\unicode{x02667}}}}
+\CustomizeMathJax{\newcommand{\vardiamondsuit}{\mathord{\unicode{x02666}}}}
+\CustomizeMathJax{\newcommand{\varheartsuit}{\mathord{\unicode{x02665}}}}
+\CustomizeMathJax{\newcommand{\varspadesuit}{\mathord{\unicode{x02664}}}}
+
+\CustomizeMathJax{\newcommand{\Nearrow}{\mathrel{\unicode{x021D7}}}}
+\CustomizeMathJax{\newcommand{\Searrow}{\mathrel{\unicode{x021D8}}}}
+\CustomizeMathJax{\newcommand{\Nwarrow}{\mathrel{\unicode{x021D6}}}}
+\CustomizeMathJax{\newcommand{\Swarrow}{\mathrel{\unicode{x021D9}}}}
+\CustomizeMathJax{\newcommand{\Top}{\mathord{\unicode{x02AEA}}}}
+\CustomizeMathJax{\newcommand{\Bot}{\mathord{\unicode{x02AEB}}}}
+
+\CustomizeMathJax{\newcommand{\leadstoext}{\mathrel{\unicode{xFF5E}}}}
+
+\CustomizeMathJax{\newcommand{\sqcupplus}{\mathbin{\LWRoverlaysymbols{+}{\unicode{x02294}}}}}
+\CustomizeMathJax{\newcommand{\sqcapplus}{\mathbin{\LWRoverlaysymbols{+}{\unicode{x02293}}}}}
+
+\CustomizeMathJax{\newcommand{\dlb}{\mathopen{\unicode{x027E6}}}}
+\CustomizeMathJax{\newcommand{\drb}{\mathopen{\unicode{x027E7}}}}
+
+\CustomizeMathJax{\newcommand{\varg}{g}}
+\CustomizeMathJax{\newcommand{\vary}{y}}
+\CustomizeMathJax{\newcommand{\varv}{v}}
+\CustomizeMathJax{\newcommand{\varw}{w}}
+
+\CustomizeMathJax{\newcommand{\nexistsAlt}{\mathord{\unicode{x02204}}}}
+\CustomizeMathJax{\newcommand{\existsAlt}{\mathord{\unicode{x02203}}}}
+\CustomizeMathJax{\newcommand{\forallAlt}{\mathord{\unicode{x02200}}}}
+\CustomizeMathJax{\newcommand{\emptysetAlt}{\mathord{\unicode{x02205}}}}
+
+\CustomizeMathJax{\newcommand{\uppartial}{\mathord{\unicode{x02202}}}}% not upright
+
+\CustomizeMathJax{\let\varmathbb\mathbb}
+\CustomizeMathJax{\let\vmathbb\mathbb}
+\CustomizeMathJax{\let\vvmathbb\mathbb}
+
+\CustomizeMathJax{\let\smallprod\prod}
+\CustomizeMathJax{\let\smallsum\sum}
+\CustomizeMathJax{\let\smallcoprod\coprod}
+
+\CustomizeMathJax{\newcommand{\openbox}{\mathord{\unicode{x25FD}}}}
+\CustomizeMathJax{\let\textsquare\openbox}
+\CustomizeMathJax{\let\varemptyset\emptyset}
+\CustomizeMathJax{\newcommand{\mathsterling}{\mathord{\unicode{x000A3}}}}
+\CustomizeMathJax{\newcommand{\mathcent}{\mathord{\unicode{x000A2}}}}
+
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-common-mathjax-newpxtxmath.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-newpxtxmath.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-nonunicode.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-nonunicode.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-nonunicode.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,154 @@
+%%
+%% This is file `lwarp-common-mathjax-nonunicode.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `common-mathjax-nonunicode')
+%% 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.
+\ProvidesPackage{lwarp-common-mathjax-nonunicode}[2020/09/20]
+\LWR at origRequirePackage{lwarp-common-mathjax-overlaysymbols}
+
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\mmapsto}{\mathrel{\unicode{x021A6}}}}
+\CustomizeMathJax{\let\mmapstochar\mmapsto}
+\CustomizeMathJax{\newcommand{\longmmapsto}{\mathrel{\unicode{x021A6}}}}
+\CustomizeMathJax{\newcommand{\mmappedfrom}{\mathrel{\unicode{x021A4}}}}
+\CustomizeMathJax{\let\mmappedfromchar\mmappedfrom}
+\CustomizeMathJax{\newcommand{\longmmappedfrom}{\mathrel{\unicode{x021A4}}}}
+\CustomizeMathJax{\let\mmapsfrom\mmappedfrom}% from kpfonts-otf
+\CustomizeMathJax{\let\longmmapsfrom\longmmappedfrom}% from kpfonts-otf
+
+\CustomizeMathJax{\newcommand{\Mmapsto}{\mathrel{\unicode{x02907}}}}
+\CustomizeMathJax{\let\Mmapstochar\Mmapsto}
+\CustomizeMathJax{\newcommand{\Longmmapsto}{\mathrel{\unicode{x027FE}}}}
+\CustomizeMathJax{\newcommand{\Mmappedfrom}{\mathrel{\unicode{x02906}}}}
+\CustomizeMathJax{\let\Mmappedfromchar\Mmappedfrom}
+\CustomizeMathJax{\newcommand{\Longmmappedfrom}{\mathrel{\unicode{x027FD}}}}
+\CustomizeMathJax{\let\Mmapsfrom\Mmappedfrom}% from kpfonts-otf
+\CustomizeMathJax{\let\Longmmapsfrom\Longmmappedfrom}% from kpfonts-otf
+\CustomizeMathJax{\newcommand{\boxright}{\mathrel{\unicode{x025A1}\!\unicode{x02192}}}}
+\CustomizeMathJax{\newcommand{\boxleft}{\mathrel{\unicode{x02190}\!\unicode{x025A1}}}}
+\CustomizeMathJax{\newcommand{\boxdotright}{\mathrel{\unicode{x022A1}\!\unicode{x02192}}}}
+\CustomizeMathJax{\newcommand{\boxdotleft}{\mathrel{\unicode{x02190}\!\unicode{x022A1}}}}
+
+\CustomizeMathJax{\newcommand{\Diamondright}{\mathrel{\unicode{x025C7}\!\unicode{x02192}}}}
+\CustomizeMathJax{\newcommand{\Diamondleft}{\mathrel{\unicode{x02190}\!\unicode{x025C7}}}}
+\CustomizeMathJax{\newcommand{\Diamonddotright}{\mathrel{\unicode{x027D0}\!\unicode{x02192}}}}
+\CustomizeMathJax{\newcommand{\Diamonddotleft}{\mathrel{\unicode{x02190}\!\unicode{x027D0}}}}
+
+\CustomizeMathJax{\newcommand{\boxRight}{\mathrel{\unicode{x025A1}\!\unicode{x021D2}}}}
+\CustomizeMathJax{\newcommand{\boxLeft}{\mathrel{\unicode{x021D0}\!\unicode{x025A1}}}}
+\CustomizeMathJax{\newcommand{\boxdotRight}{\mathrel{\unicode{x022A1}\!\unicode{x021D2}}}}
+\CustomizeMathJax{\newcommand{\boxdotLeft}{\mathrel{\unicode{x021D0}\!\unicode{x022A1}}}}
+
+\CustomizeMathJax{\newcommand{\DiamondRight}{\mathrel{\unicode{x025C7}\!\unicode{x021D2}}}}
+\CustomizeMathJax{\newcommand{\DiamondLeft}{\mathrel{\unicode{x021D0}\!\unicode{x025C7}}}}
+\CustomizeMathJax{\newcommand{\DiamonddotRight}{\mathrel{\unicode{x027D0}\!\unicode{x021D2}}}}
+\CustomizeMathJax{\newcommand{\DiamonddotLeft}{\mathrel{\unicode{x021D0}\!\unicode{x027D0}}}}
+\CustomizeMathJax{\newcommand{\Diamonddot}{\mathrel{\unicode{x027D0}}}}
+
+\CustomizeMathJax{\newcommand{\circleright}{\mathrel{\unicode{x025CB}\!\unicode{x02192}}}}
+\CustomizeMathJax{\newcommand{\circleleft}{\mathrel{\unicode{x02190}\!\unicode{x025CB}}}}
+\CustomizeMathJax{\newcommand{\circledotright}{\mathrel{\unicode{x02299}\!\unicode{x02192}}}}
+\CustomizeMathJax{\newcommand{\circledotleft}{\mathrel{\unicode{x02190}\!\unicode{x02299}}}}
+\CustomizeMathJax{\let\circleddotright\circledotright}
+\CustomizeMathJax{\let\circleddotleft\circledotleft}
+
+\CustomizeMathJax{\newcommand{\multimapinv}{\mathrel{\unicode{x027DC}}}}
+\CustomizeMathJax{\newcommand{\multimapboth}{\mathrel{\unicode{x029DF}}}}
+\CustomizeMathJax{\newcommand{\multimapdot}{{\mathrel{-\!\bullet}}}}
+\CustomizeMathJax{\newcommand{\multimapdotinv}{\mathrel{\bullet\!-}}}
+\CustomizeMathJax{\newcommand{\multimapdotboth}{\mathrel{{\bullet\!\!-\!\!\bullet}}}}
+\CustomizeMathJax{\newcommand{\multimapdotbothA}{\mathrel{\unicode{x022B6}}}}
+\CustomizeMathJax{\newcommand{\multimapdotbothB}{\mathrel{\unicode{x22B7}}}}
+
+\CustomizeMathJax{\newcommand{\multimapbothvert}{%
+    \mathrel{\overset{\unicode{x025CB}}{\underset{\unicode{x025CB}}{|}}}%
+}}
+\CustomizeMathJax{\newcommand{\multimapdotbothvert}{%
+    \mathrel{\overset{\unicode{x025CF}}{\underset{\unicode{x025CF}}{|}}}%
+}}
+\CustomizeMathJax{\newcommand{\multimapdotbothBvert}{% bug in kpfonts-otf
+    \mathrel{\overset{\unicode{x025CF}}{\underset{\unicode{x025CB}}{|}}}%
+}}
+\CustomizeMathJax{\newcommand{\multimapdotbothAvert}{% bug in kpfonts-otf
+    \mathrel{\overset{\unicode{x025CB}}{\underset{\unicode{x025CF}}{|}}}%
+}}
+
+\CustomizeMathJax{\newcommand{\bignplus}{%
+    \mathop{\LWRoverlaysymbols{\unicode{xFF0B}}{\unicode{x22C2}}}%
+}}
+\CustomizeMathJax{\let\bigcapplus\bignplus}
+\CustomizeMathJax{\let\capplus\bignplus}% from kpfonts-otf
+
+\CustomizeMathJax{\newcommand{\bigsqcapplus}{%
+    \mathop{\LWRoverlaysymbols{\unicode{xFF0B}}{\unicode{x2A05}}}
+}}
+\CustomizeMathJax{\let\sqcapplus\bigsqcapplus}% from kpfonts-otf
+
+\CustomizeMathJax{\newcommand{\bigsqcupplus}{%
+    \mathop{\LWRoverlaysymbols{\unicode{xFF0B}}{\unicode{x2A06}}}
+}}
+\CustomizeMathJax{\let\sqcupplus\bigsqcupplus}% from kpfonts-otf
+
+\CustomizeMathJax{\newcommand{\parallelslant}{\mathrel{\unicode{x02AFD}}}}
+\CustomizeMathJax{\newcommand{\parallelbackslant}{%
+    \mathrel{\unicode{x0005C}\!\!\unicode{x0005C}}%
+}}
+
+\CustomizeMathJax{\newcommand{\Eqqcolon}{\mathrel{=\!\unicode{x2237}}}}
+\CustomizeMathJax{\let\eqqColon\Eqqcolon}% for kpfonts-otf
+\CustomizeMathJax{\newcommand{\dashColon}{\mathrel{-\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand{\Colondash}{\mathrel{\unicode{x2237}-}}}
+
+\CustomizeMathJax{\newcommand{\colonapprox}{\mathrel{:\approx}}}
+\CustomizeMathJax{\newcommand{\colonsim}{\mathrel{:\sim}}}
+\CustomizeMathJax{\newcommand{\Colonapprox}{\mathrel{\unicode{x2237}\!\approx}}}
+\CustomizeMathJax{\newcommand{\Colonsim}{\mathrel{\unicode{x2237}\!\sim}}}
+
+\CustomizeMathJax{\newcommand{\strictif}{\mathrel{\unicode{x0297D}}}}% right fish tail
+\CustomizeMathJax{\newcommand{\strictfi}{\mathrel{\unicode{x0297C}}}}% left fish tail
+\CustomizeMathJax{\newcommand{\strictiff}{%
+    \mathrel{\unicode{x0297C}\!\!\unicode{x0297D}}%
+}}% left/right fish tails
+
+\CustomizeMathJax{\newcommand{\circledwedge}{%
+    \mathbin{\LWRoverlaysymbols{\unicode{x025EF}}{\unicode{x02227}}}%
+}}
+\CustomizeMathJax{\newcommand{\circledvee}{%
+    \mathbin{\LWRoverlaysymbols{\unicode{x025EF}}{\unicode{0x02228}}}%
+}}
+\CustomizeMathJax{\newcommand{\circledbar}{\mathbin{\unicode{x029B6}}}}
+
+\CustomizeMathJax{\newcommand{\openJoin}{\mathrel{\unicode{x2AA4}}}}% overlapping ><
+\CustomizeMathJax{\newcommand{\opentimes}{\mathrel{\unicode{x2AA4}}}}% overlapping ><
+
+\CustomizeMathJax{\newcommand{\VvDash}{\mathrel{\unicode{x22AA}}}}
+
+\CustomizeMathJax{\newcommand{\lambdabar}{%
+    \mathord{\LWRoverlaysymbols{\raise{.5ex}{-}}{\lambda}}%
+}}
+
+\CustomizeMathJax{\newcommand{\lambdaslash}{\mathord{\unicode{x019B}}}}
+
+\CustomizeMathJax{\newcommand{\Wr}{\mathbin{\unicode{x02240}\!\unicode{x02240}}}}
+
+\CustomizeMathJax{\newcommand{\dashleftrightarrow}{%
+    \mathrel{\unicode{x021E0}\!\unicode{x021E2}}%
+}}
+\CustomizeMathJax{\let\leftrightdasharrow\dashleftrightarrow}% for kpfonts-otf
+
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-common-mathjax-nonunicode.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-nonunicode.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-overlaysymbols.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-overlaysymbols.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-overlaysymbols.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,34 @@
+%%
+%% This is file `lwarp-common-mathjax-overlaysymbols.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `common-mathjax-overlaysymbols')
+%% 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.
+\ProvidesPackage{lwarp-common-mathjax-overlaysymbols}[2020/08/17]
+\begin{warpMathJax}
+
+\CustomizeMathJax{\newcommand{\LWRoverlaysymbols}[2]{%
+    \mathord{%
+        \smash{%
+            \mathop{#2\strut}%
+            \limits^{\smash{\lower3ex{#1}}}%
+        }%
+        \strut%
+    }%
+}}
+
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-common-mathjax-overlaysymbols.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-overlaysymbols.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-multimedia.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-multimedia.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-multimedia.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -67,14 +67,14 @@
         \LWR at parsedfilename\unskip\textquotedbl\ % space
         type=\textquotedbl{}#4\textquotedbl}
     \LWR at startpars
-    \href{\LWR at parsedfilename}{#1}
+    \LWR at href{\LWR at parsedfilename}{#1}
     \LWR at stoppars
     \LWR at htmltag{/#3}\LWR at orignewline
     \end{BlockClass}
 }{%
     \PackageError{lwarp-common-multimedia}
-    {File '#2' not found}
-    {Perhaps an incorrect path?}
+        {File '#2' not found}
+        {Perhaps an incorrect path?}
 }%
 }
 \newcommand*{\LWR at multimedia@httpAV}[4]{%
@@ -96,7 +96,7 @@
         src=\textquotedbl#2\textquotedbl\ % space
         type=\textquotedbl#4\textquotedbl}
     \LWR at startpars
-    \href{#2}{#1}
+    \LWR at href{#2}{#1}
     \LWR at stoppars
     \LWR at htmltag{/#3}\LWR at orignewline
     \end{BlockClass}
@@ -125,11 +125,13 @@
 \newcommand*{\LWR at multimedia@percenterror}{%
     \PackageError{lwarp-media9}
     {%
-        Do not use a percent comment
-        between\MessageBreak
+        Do not use a percent comment between\MessageBreak
         \protect\includemedia\space arguments%
     }
-    {Percent is changed to a regular character to allow its use inside a URL.}
+    {%
+        Percent is changed to a regular character\MessageBreak
+        to allow its use inside a URL.%
+    }
 }
 \newcommand*{\LWR at multimediab}[3][]{%
     \if#1\@percentchar\LWR at multimedia@percenterror\fi%
@@ -147,7 +149,7 @@
     \IfBeginWith{#3}{HTTP}{\LWR at multimedia@embed{#2}{#3}{}}{%
     \IfBeginWith{#3}{ftp}{\LWR at multimedia@embed{#2}{#3}{}}{%
     \IfBeginWith{#3}{FTP}{\LWR at multimedia@embed{#2}{#3}{}}{%
-        \href{#3}{#2}% unknown format
+        \LWR at href{#3}{#2}% unknown format
     }}}}}}}}%
     \LWR at startpars%
     \endgroup%

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-ctable.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-ctable.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-ctable.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -57,6 +57,7 @@
          \PackageError{lwarp-ctable}{\MessageBreak
             You can, currently, use the sidecap option only with\MessageBreak
             memoir documents. Use topcap or botcap only}
+            {}
       \fi
    \fi
    \ifdim\@CTwidth=0pt\else
@@ -64,6 +65,7 @@
          \PackageError{lwarp-ctable}{\MessageBreak
             You may not use the width and maxwidth options together\MessageBreak
             Use either width or maxwidth}
+            {}
       \fi
    \fi
    \ifx\@CTpos\empty
@@ -71,6 +73,7 @@
       \PackageError{lwarp-ctable}{\MessageBreak
          You may not use the pos and sideways options together\MessageBreak
          Rotated tables and figures are always typeset on a separate page}
+        {}
       \fi
    \fi
    \ifx\@CTcaption\empty
@@ -78,6 +81,7 @@
          \PackageError{lwarp-ctable}{\MessageBreak
             You may not label a captionless table\MessageBreak
             Such a label can't be referenced}
+            {}
       \fi
    \fi
    \@CTbegin

Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-drftcite.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-drftcite.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-drftcite.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,28 @@
+%%
+%% This is file `lwarp-drftcite.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `drftcite')
+%% 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{drftcite}[1995/01/23]
+\def\@lbibitem[#1]#2{\global\@HighCite\z@
+  \item[
+    \textsuperscript{\@nameuse{DCN@#2\@extra at b@citeb}}~%     lwarp
+    \@biblabel{\@ifundefined{DCN@#2\@extra at b@citeb}{\@warning
+    {Reference `#2' on page \thepage\space was never cited}}{}%
+   \@citeverb{#2}}\hfil]\if at filesw{\def\protect##1{\string ##1\space}%
+   \immediate\write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces}
+\endinput
+%%
+%% End of file `lwarp-drftcite.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-drftcite.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-easy-todo.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-easy-todo.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-easy-todo.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -18,12 +18,12 @@
 
 \LWR at ProvidesPackagePass{easy-todo}[2014/01/01]
 
-\let\LWR at origlistoftodos\listoftodos
+\let\LWR at easytodo@origlistoftodos\listoftodos
 
 \renewcommand{\listoftodos}{%
 \begingroup
 \renewcommand{\flushright}{}
-\LWR at origlistoftodos
+\LWR at easytodo@origlistoftodos
 \endgroup
 }
 

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-econometrics.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-econometrics.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-econometrics.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -16,6 +16,8 @@
 %% and version 1.3 or later is part of all distributions of LaTeX
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackagePass{econometrics}% no date specified in the original
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
 \begin{warpMathJax}
 \LWR at infoprocessingmathjax{econometrics}
 
@@ -52,96 +54,12 @@
 \CustomizeMathJax{\newcommand{\calY}{\mathcal{Y}}}
 \CustomizeMathJax{\newcommand{\calZ}{\mathcal{Z}}}
 
-\CustomizeMathJax{\newcommand{\mA}{\bm A}}
-\CustomizeMathJax{\newcommand{\va}{\bm a}}
-\CustomizeMathJax{\newcommand{\mB}{\bm B}}
-\CustomizeMathJax{\newcommand{\vb}{\bm b}}
-\CustomizeMathJax{\newcommand{\mC}{\bm C}}
-\CustomizeMathJax{\newcommand{\vc}{\bm c}}
-\CustomizeMathJax{\newcommand{\mD}{\bm D}}
-\CustomizeMathJax{\newcommand{\vd}{\bm d}}
-\CustomizeMathJax{\newcommand{\mE}{\bm E}}
-\CustomizeMathJax{\newcommand{\ve}{\bm e}}
-\CustomizeMathJax{\newcommand{\mF}{\bm F}}
-\CustomizeMathJax{\newcommand{\vf}{\bm f}}
-\CustomizeMathJax{\newcommand{\mG}{\bm G}}
-\CustomizeMathJax{\newcommand{\vg}{\bm g}}
-\CustomizeMathJax{\newcommand{\mH}{\bm H}}
-\CustomizeMathJax{\newcommand{\vh}{\bm h}}
-\CustomizeMathJax{\newcommand{\mI}{\bm I}}
-\CustomizeMathJax{\newcommand{\vi}{\bm i}}
-\CustomizeMathJax{\newcommand{\mJ}{\bm J}}
-\CustomizeMathJax{\newcommand{\vj}{\bm j}}
-\CustomizeMathJax{\newcommand{\mK}{\bm K}}
-\CustomizeMathJax{\newcommand{\vk}{\bm k}}
-\CustomizeMathJax{\newcommand{\mL}{\bm L}}
-\CustomizeMathJax{\newcommand{\vl}{\bm l}}
-\CustomizeMathJax{\newcommand{\mM}{\bm M}}
-\CustomizeMathJax{\newcommand{\vm}{\bm m}}
-\CustomizeMathJax{\newcommand{\mN}{\bm N}}
-\CustomizeMathJax{\newcommand{\vn}{\bm n}}
-\CustomizeMathJax{\newcommand{\mO}{\bm O}}
-\CustomizeMathJax{\newcommand{\vo}{\bm o}}
-\CustomizeMathJax{\newcommand{\mP}{\bm P}}
-\CustomizeMathJax{\newcommand{\vp}{\bm p}}
-\CustomizeMathJax{\newcommand{\mQ}{\bm Q}}
-\CustomizeMathJax{\newcommand{\vq}{\bm q}}
-\CustomizeMathJax{\newcommand{\mR}{\bm R}}
-\CustomizeMathJax{\newcommand{\vr}{\bm r}}
-\CustomizeMathJax{\newcommand{\mS}{\bm S}}
-\CustomizeMathJax{\newcommand{\vs}{\bm s}}
-\CustomizeMathJax{\newcommand{\mT}{\bm T}}
-\CustomizeMathJax{\newcommand{\vt}{\bm t}}
-\CustomizeMathJax{\newcommand{\mU}{\bm U}}
-\CustomizeMathJax{\newcommand{\vu}{\bm u}}
-\CustomizeMathJax{\newcommand{\mV}{\bm V}}
-\CustomizeMathJax{\newcommand{\vv}{\bm v}}
-\CustomizeMathJax{\newcommand{\mW}{\bm W}}
-\CustomizeMathJax{\newcommand{\vw}{\bm w}}
-\CustomizeMathJax{\newcommand{\mX}{\bm X}}
-\CustomizeMathJax{\newcommand{\vx}{\bm x}}
-\CustomizeMathJax{\newcommand{\mY}{\bm Y}}
-\CustomizeMathJax{\newcommand{\vy}{\bm y}}
-\CustomizeMathJax{\newcommand{\mZ}{\bm Z}}
-\CustomizeMathJax{\newcommand{\vz}{\bm z}}
+\LWR at mathjax@addlatin at u@bfit{m}% uppercase Latin, bold italic
+\LWR at mathjax@addlatin at l@bfit{v}% lowercase Latin, bold italic
 
-\CustomizeMathJax{\newcommand{\valpha}{\bm \alpha}}
-\CustomizeMathJax{\newcommand{\vbeta}{\bm \beta}}
-\CustomizeMathJax{\newcommand{\vgamma}{\bm \gamma}}
-\CustomizeMathJax{\newcommand{\vdelta}{\bm \delta}}
-\CustomizeMathJax{\newcommand{\vepsi}{\bm \epsi}}
-\CustomizeMathJax{\newcommand{\vvarepsilon}{\bm \varepsilon}}
-\CustomizeMathJax{\newcommand{\vzeta}{\bm \zeta}}
-\CustomizeMathJax{\newcommand{\veta}{\bm \eta}}
-\CustomizeMathJax{\newcommand{\vtheta}{\bm \theta}}
-\CustomizeMathJax{\newcommand{\viota}{\bm \iota}}
-\CustomizeMathJax{\newcommand{\vkappa}{\bm \kappa}}
-\CustomizeMathJax{\newcommand{\vlambda}{\bm \lambda}}
-\CustomizeMathJax{\newcommand{\vmu}{\bm \mu}}
-\CustomizeMathJax{\newcommand{\vnu}{\bm \nu}}
-\CustomizeMathJax{\newcommand{\vxi}{\bm \xi}}
-\CustomizeMathJax{\newcommand{\vpi}{\bm \pi}}
-\CustomizeMathJax{\newcommand{\vrho}{\bm \rho}}
-\CustomizeMathJax{\newcommand{\vsigma}{\bm \sigma}}
-\CustomizeMathJax{\newcommand{\vtau}{\bm \tau}}
-\CustomizeMathJax{\newcommand{\vupsilon}{\bm \upsilon}}
-\CustomizeMathJax{\newcommand{\vphi}{\bm \phi}}
-\CustomizeMathJax{\newcommand{\vchi}{\bm \chi}}
-\CustomizeMathJax{\newcommand{\vpsi}{\bm \psi}}
-\CustomizeMathJax{\newcommand{\vomega}{\bm \omega}}
+\LWR at mathjax@addgreek at l@bfit{v}{}% lowercase Greek bold italic
+\LWR at mathjax@addgreek at u@bfit*{m}{}% uppercase Greek bold italic, capitalized macro names
 
-\CustomizeMathJax{\newcommand{\mGamma}{\bm \varGamma}}
-\CustomizeMathJax{\newcommand{\mDelta}{\bm \varDelta}}
-\CustomizeMathJax{\newcommand{\mTheta}{\bm \varTheta}}
-\CustomizeMathJax{\newcommand{\mLambda}{\bm \varLambda}}
-\CustomizeMathJax{\newcommand{\mXi}{\bm \varXi}}
-\CustomizeMathJax{\newcommand{\mPi}{\bm \varPi}}
-\CustomizeMathJax{\newcommand{\mSigma}{\bm \varSigma}}
-\CustomizeMathJax{\newcommand{\mUpsilon}{\bm \varUpsilon}}
-\CustomizeMathJax{\newcommand{\mPhi}{\bm \varPhi}}
-\CustomizeMathJax{\newcommand{\mPsi}{\bm \varPsi}}
-\CustomizeMathJax{\newcommand{\mOmega}{\bm \varOmega}}
-
 \CustomizeMathJax{\newcommand{\rb}{\mathrm{b}}}
 \CustomizeMathJax{\newcommand{\rB}{\mathrm{B}}}
 \CustomizeMathJax{\newcommand{\rC}{\mathrm{C}}}

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-ed.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-ed.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-ed.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -26,7 +26,7 @@
         \textcolor{red}{%
             #1 is only a provisional stub\\\Large
             the Office document
-            \ifx\ed at stubURI\@empty{#2}\else\href{\ed at stubURI}{#2}\fi\
+            \ifx\ed at stubURI\@empty{#2}\else\LWR at href{\ed at stubURI}{#2}\fi\
             contains more text\\which will be merged for the final document%
         }%
     \end{center}%

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-embrac.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-embrac.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-embrac.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -16,6 +16,9 @@
 %% and version 1.3 or later is part of all distributions of LaTeX
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackagePass{embrac}[2017/07/04]
+\ExplSyntaxOn
+\RenewDocumentCommand{\embrac_kern:n}{m}{}
+\ExplSyntaxOff
 \LetLtxMacro\LWR at orig@HTML at emph\LWR at HTML@emph
 \RenewDocumentCommand{\LWR at HTML@emph}{s m}{\LWR at orig@HTML at emph{#2}}
 

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-enumitem.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-enumitem.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-enumitem.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -16,7 +16,6 @@
 %% and version 1.3 or later is part of all distributions of LaTeX
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackagePass{enumitem}[2018/11/30]
-\begin{warpHTML}
 
 \let\LWR at enumitem@orignewlist\newlist
 
@@ -28,8 +27,6 @@
 
 \def\DrawEnumitemLabel{}
 
-\end{warpHTML}
-
 \endinput
 %%
 %% End of file `lwarp-enumitem.sty'.

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epigraph.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epigraph.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epigraph.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -18,57 +18,37 @@
 
 
 
-\LWR at ProvidesPackageDrop{epigraph}[2009/09/02]
+\LWR at ProvidesPackagePass{epigraph}[2020/01/02]
 
-\DeclareDocumentCommand{\qitem}{m m}
-{
-\begin{BlockClass}{qitem}
-#1
-\LWR at stoppars%
-\ifbool{FormatWP}
-{\begin{BlockClass}[border-top:1px solid gray]{epigraphsource}}
-{\begin{BlockClass}{epigraphsource}}
-#2
-\end{BlockClass}
-\end{BlockClass}
+\DeclareDocumentCommand{\LWR at HTML@qitem}{m m}
+{%
+    \begin{BlockClass}{qitem}%
+    #1%
+    \LWR at stoppars%
+    \ifbool{FormatWP}%
+        {\begin{BlockClass}[border-top:1px solid gray]{epigraphsource}}%
+        {\begin{BlockClass}{epigraphsource}}%
+    #2%
+    \end{BlockClass}%
+    \end{BlockClass}%
 }
+\LWR at formatted{qitem}
 
-\DeclareDocumentCommand{\epigraph}{m m}
-{
-\begin{LWR at BlockClassWP}{\LWR at print@mbox{text-align:right}}{}{epigraph}
-\qitem{#1}{#2}
-\end{LWR at BlockClassWP}
+\DeclareDocumentCommand{\LWR at HTML@epigraph}{m m}
+{%
+    \begin{LWR at BlockClassWP}{\LWR at print@mbox{text-align:right}}{}{epigraph}%
+    \qitem{#1}{#2}%
+    \end{LWR at BlockClassWP}%
 }
+\LWR at formatted{epigraph}
 
-\DeclareDocumentEnvironment{epigraphs}{}
-{\LWR at BlockClassWP{\LWR at print@mbox{text-align:right}}{}{epigraph}}
-{\endLWR at BlockClassWP}
-\newenvironment*{flushepinormal}{}{}
-\@ifclassloaded{memoir}{
-\setlength{\epigraphwidth}{.5\linewidth}
-\renewcommand{\textflush}{flushepinormal}
+\DeclareDocumentEnvironment{LWR at HTML@epigraphs}{}
+    {\LWR at BlockClassWP{\LWR at print@mbox{text-align:right}}{}{epigraph}}
+    {\endLWR at BlockClassWP}
+\LWR at formattedenv{epigraphs}
 \renewcommand{\epigraphhead}[2][0]{#2}
 \renewcommand{\dropchapter}[1]{}
 \renewcommand*{\undodrop}{}
-}{% not memoir
-\newlength{\epigraphwidth}
-\setlength{\epigraphwidth}{.5\linewidth}
-\newcommand{\textflush}{flushepinormal}
-\newcommand{\epigraphflush}{flushright}
-\newcommand{\sourceflush}{flushright}
-\newcommand*{\epigraphsize}{\small}
-\newlength{\epigraphrule}
-\newlength{\beforeepigraphskip}
-\newlength{\afterepigraphskip}
-\newcommand{\epigraphhead}[2][0]{#2}
-\newcommand{\dropchapter}[1]{}
-\newcommand*{\undodrop}{}
-}% not memoir
-
-\let\cleartoevenpage\relax% also in nextpage
-\newcommand{\cleartoevenpage}[1][]{}
-\newif\ifepigraphnoindent
-\newcommand\epigraphnoindent{\epigraphnoindenttrue}
 \endinput
 %%
 %% End of file `lwarp-epigraph.sty'.

Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epsf.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epsf.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epsf.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -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: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epsf.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epsfig.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epsfig.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epsfig.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -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: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epstopdf-base.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epstopdf-base.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epstopdf-base.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -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 ProvidesPackagePass{epstopdf-base}[2016/05/15]
+\LWR at ProvidesPackagePass{epstopdf-base}[2020-01-24]
 \newcommand*{\LWR at HTML@ETE at OrgGin@setfile}[3]{%
     \edef\LWR at tempone{#3}%
     \StrSubstitute{\LWR at tempone}{.pdf}{.svg}[\LWR at tempone]%

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epstopdf.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epstopdf.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epstopdf.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -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 ProvidesPackagePass{epstopdf}[2016/05/15]
+\LWR at ProvidesPackagePass{epstopdf}[2020-01-24]
 \endinput
 %%
 %% End of file `lwarp-epstopdf.sty'.

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-errata.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-errata.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-errata.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -56,7 +56,7 @@
     {}
     {\LWR at patcherror{erratum}{eReplace}}
 
-\preto\PrintErrata{\LWR at orignewpage}
+\preto\PrintErrata{\LWR at maybe@orignewpage}
 
 \StopDefiningMath
 

Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-esvect.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-esvect.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-esvect.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,26 @@
+%%
+%% This is file `lwarp-esvect.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `esvect')
+%% 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{esvect}% no date given
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\LWResvectvv}[1]{\overrightarrow{#1}}}
+\CustomizeMathJax{\newcommand{\LWResvectvvstar}[2]{\overrightarrow{#1}\!_{#2}}}
+\CustomizeMathJax{\newcommand{\vv}{\ifstar\LWResvectvvstar\LWResvectvv}}
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-esvect.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-esvect.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-everyshi.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-everyshi.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-everyshi.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -16,7 +16,10 @@
 %% and version 1.3 or later is part of all distributions of LaTeX
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackageDrop{everyshi}[2001/05/15]
+\let\EveryShipout\relax
 \newcommand*{\EveryShipout}[1]{}
+
+\let\AtNextShipout\relax
 \newcommand*{\AtNextShipout}[1]{}
 \endinput
 %%

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fancybox.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fancybox.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fancybox.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -133,24 +133,24 @@
 \def\endLandscape{}
 \let\LWRFB at UseVerbatim\UseVerbatim
 \renewcommand*{\UseVerbatim}[1]{%
-\LWR at atbeginverbatim{3}{Verbatim}%
+\LWR at atbeginverbatim{Verbatim}%
 \LWRFB at UseVerbatim{#1}%
-\LWR at afterendverbatim{.5}%
+\LWR at afterendverbatim%
 }
 
 \let\LWRFB at LUseVerbatim\LUseVerbatim
 
 \renewcommand*{\LUseVerbatim}[1]{%
-\LWR at atbeginverbatim{3}{LVerbatim}%
+\LWR at atbeginverbatim{LVerbatim}%
 \noindent%
 \LWRFB at LUseVerbatim{#1}%
-\LWR at afterendverbatim{.5}%
+\LWR at afterendverbatim%
 }
 
 \def\@BUseVerbatim[#1]#2{%
-\LWR at atbeginverbatim{3}{BVerbatim}%
+\LWR at atbeginverbatim{BVerbatim}%
 \LWRFB at UseVerbatim{#2}%
-\LWR at afterendverbatim{.5}%
+\LWR at afterendverbatim%
 }
 \endinput
 %%

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyhdr.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyhdr.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyhdr.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -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: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyref.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyref.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyref.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -22,31 +22,6 @@
 {}{
     \renewcommand*{\fancyrefhook}[1]{#1}%
 }
-
-\renewcommand*{\@f at ref}[4]{%
-  \@ifundefined{#1r@#2@#3}{%
-    \PackageError{lwarp-fancyref}{%
-      \backslashchar#1ref\space format ``#2''
-      undefined\MessageBreak
-      for label type ``#3''%
-    }{%
-      The format ``#2'' was not defined for the label type
-      ``#3''\MessageBreak
-      and the \backslashchar#1ref\space command.  Perhaps
-      you have only misspelled its name.\MessageBreak
-      Otherwise you will have to define it with
-      \protect\new#1refformat\MessageBreak
-      prior to using it.%
-    }%
-  }{%
-    \fancyrefhook{%
-      \@nameuse{#1r@#2@#3}%
-        {\ref{#3\fancyrefargdelim#4}}%
-        {}% lwarp
-        {}% lwarp
-    }%
-  }%
-}%
 \endinput
 %%
 %% End of file `lwarp-fancyref.sty'.

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyvrb.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyvrb.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyvrb.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -65,9 +65,7 @@
 
 \renewcommand*{\FV at SingleFrameSep}{}
 \def\FV at BUseVerbatim#1{%
-    \LWR at atbeginverbatim{0}{verbatim}%
     \FV at BVerbatimBegin#1\FV at BVerbatimEnd%
-    \LWR at afterendverbatim{0}%
 }
 
 \newcommand*{\LWR at FVstyle}{}
@@ -79,26 +77,26 @@
     \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%
     \fi
 \fi
-\LWR at atbeginverbatim{0}{verbatim}%
+\LWR at atbeginverbatim{verbatim}%
 }
 
 \newcommand*{\LWR at fvendnone}{%
 \LWR at traceinfo{fvendnone}%
-\LWR at afterendverbatim{0}%
+\LWR at afterendverbatim%
 \LWR at stoppars%
 \ifx\FV at LabelPositionBottomLine\relax\else
     \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%
@@ -193,7 +191,7 @@
 \let\FV at LeftListFrame\relax%
 \let\FV at RightListFrame\relax%
 \let\FV at EndListFrame\LWR at fvendline}
-
+\def\FV at FrameFillLine{}%
 \def\FV at Frame@leftline{%
 \renewcommand*{\LWR at FVstyle}{%
     \LWR at currenttextcolorstyle\LWR at indentHTMLtwo%
@@ -244,17 +242,31 @@
 }
 }
 
-\AtBeginEnvironment{BVerbatim}
-{%
-\LWR at forcenewpage% instead of \preto
-\LWR at atbeginverbatim{0}{bverbatim}%
+\def\FV at ListProcessLine@i#1{%
+    \ifvoid\@labels\else
+      \hbox to \z@{\kern\@totalleftmargin\box\@labels\hss}%
+    \fi
+    \FV at ListProcessLine{#1}%
 }
 
-\AfterEndEnvironment{BVerbatim}
-{%
-\LWR at afterendverbatim{0}%
-}
+\def\FV at ListProcessLastLine{}
 
+
+\xpretocmd{\FV at BeginVBox}
+    {%
+        \LWR at forcenewpage% instead of \preto
+        \LWR at atbeginverbatim{bverbatim}%
+    }
+    {}
+    {\LWR at patcherror{fancyvrb}{FV at BeginVBox}}
+
+\xapptocmd{\FV at EndVBox}
+    {%
+        \LWR at afterendverbatim%
+    }
+    {}
+    {\LWR at patcherror{fancyvrb}{FV at EndVBox}}
+
 } % \AfterEndPreamble
 
 \endinput

Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fbox.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fbox.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fbox.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,102 @@
+%%
+%% This is file `lwarp-fbox.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `fbox')
+%% 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{fbox}[2020/06/22]
+\LetLtxMacro\LWR at HTML@fbox\fbox
+\renewcommand*{\orig at fbox}{\FBox at i[tblr]}
+\newcommand*{\LWR at fboxpkg@border}[2]{%
+    \appto\LWR at tempone{%
+        border-#1: % space
+        \LWR at printlength{\LWR at atleastonept} % space
+        solid \LWR at origpound\LWR at tempcolor ;\LWR at indentHTML
+    }%
+    \ifblank{#2}{}{%
+        \appto\LWR at tempone{%
+            padding-#1: \LWR at printlength{#2} ;\LWR at indentHTML
+        }%
+    }%
+}
+\newbool{LWR at fboxpkg@ispar}
+\boolfalse{LWR at fboxpkg@ispar}
+\newcommand{\LWR at fboxpkg@lrpadding}[1]{%
+    \csuse{if at fbox@space@#1}%
+        \appto\LWR at tempone{%
+            padding-#1: \LWR at printlength{\fbox@@sep};\LWR at indentHTML
+        }
+    \else%
+        \appto\LWR at tempone{%
+            padding-#1: 0pt;\LWR at indentHTML
+        }
+    \fi%
+}
+\newcommand{\LWR at HTML@FBox at iii}[1]{%
+    \LWR at forceminwidth{\fbox@@rule}%
+    \LWR at findcurrenttextcolor%
+    \def\LWR at tempone{%
+        color: \LWR at origpound\LWR at tempcolor ; \LWR at indentHTML
+        margin: 1ex ; \LWR at indentHTML
+    }%
+    \LWR at fboxpkg@lrpadding{left}%
+    \LWR at fboxpkg@lrpadding{right}%
+    \ifnum\the\@tempcntb>8\relax
+        \advance\@tempcntb by -8
+        \LWR at fboxpkg@border{top}{\fbox@@sep}%
+    \fi
+    \ifnum\@tempcntb>3
+        \advance\@tempcntb by -4
+        \LWR at fboxpkg@border{left}{}%
+    \fi
+    \ifnum\@tempcntb>1
+        \LWR at fboxpkg@border{right}{}%
+    \fi
+    \ifodd\@tempcntb
+        \LWR at fboxpkg@border{bottom}{\fbox@@sep}%
+    \fi
+    \color at begingroup
+    \ifbool{LWR at fboxpkg@ispar}%
+        {%
+            \begin{BlockClass}[\LWR at tempone]{fboxpkg}%
+                #1%
+            \end{BlockClass}%
+        }%
+        {%
+            \InlineClass[\LWR at tempone]{fboxpkg}{%
+                #1%
+            }%
+        }%
+    \color at endgroup
+    \boolfalse{LWR at fboxpkg@ispar}% globally
+}
+\LWR at formatted{FBox at iii}
+\long\def\LWR at HTML@FParBox at i[#1]#2{%
+    \booltrue{LWR at fboxpkg@ispar}%
+    \FBox at i[#1]{#2}
+}
+\LWR at formatted{FParBox at i}
+
+\long\def\LWR at HTML@FParBox at ii#1{%
+    \booltrue{LWR at fboxpkg@ispar}%
+    \FBox at i[tblr]{#1}%
+}
+\LWR at formatted{FParBox at ii}
+\CustomizeMathJax{\let\LWRorigfbox\fbox}
+\CustomizeMathJax{\newcommand{\LWRfboxpkgtwo}[2][]{\LWRorigfbox{#2}}}
+\CustomizeMathJax{\renewcommand{\fbox}{\ifstar\LWRfboxpkgtwo\LWRfboxpkgtwo}}
+\CustomizeMathJax{\newcommand{\fparbox}{\fbox}}
+\endinput
+%%
+%% End of file `lwarp-fbox.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fbox.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fixmath.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fixmath.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fixmath.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,29 @@
+%%
+%% This is file `lwarp-fixmath.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `fixmath')
+%% 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{fixmath}[2000/04/11]
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+\LWR at mathjax@addgreek at u@it*{}{}
+\LWR at mathjax@addletter{\BooleanTrue}{up}{}{delta}{0394}
+\LWR at mathjax@addletter{\BooleanTrue}{up}{}{omega}{03A9}
+\CustomizeMathJax{\newcommand{\mathbold}[1]{\boldsymbol{#1}}}
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-fixmath.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fixmath.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fixme.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fixme.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fixme.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -20,7 +20,11 @@
 \let\@wrindex\LWR at wrindex
 \newcommand{\ext at fixme}{lox}
 
-\renewcommand{\l at fixme}[2]{\hypertocfloat{1}{fixme}{lox}{#1}{#2}}
+\renewcommand{\l at fixme}[2]{%
+    \hypertocfloat{1}{fixme}{lox}%
+        {\LWR at nameref{\BaseJobname-autopage-\arabic{LWR at nextautopage}} --- #1}
+        {#2}
+}
 \def\FXFaceInlineHTMLStyle{font-weight:bold}
 
 \renewcommand*\FXLayoutInline[3]{ %

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-float.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-float.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-float.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -19,21 +19,24 @@
 
 \LWR at ProvidesPackageDrop{float}[2001/11/08]
 
-
 \newcommand*{\LWR at floatstyle}{plain}
 
 \NewDocumentCommand{\newfloat}{m m m o}{%
-\IfValueTF{#4}%
-{\DeclareFloatingEnvironment[fileext=#3,within=#4]{#1}}%
-{\DeclareFloatingEnvironment[fileext=#3]{#1}}%
-\csedef{LWR at floatstyle@#1}{\LWR at floatstyle}%
-\cslet{listof#1s}\relax%
-\cslet{listof#1es}\relax%
-\cslet{l@#1}\relax%
+    \IfValueTF{#4}%
+        {\DeclareFloatingEnvironment[fileext=#3,within=#4]{#1}}%
+        {\DeclareFloatingEnvironment[fileext=#3]{#1}}%
+    \csedef{LWR at floatstyle@#1}{\LWR at floatstyle}%
+    \cslet{listof#1s}\relax%
+    \cslet{listof#1es}\relax%
+    \cslet{l@#1}\relax%
 }
 
 \NewDocumentCommand{\floatname}{m +m}{%
-    \SetupFloatingEnvironment{#1}{name=#2}%
+    \def\LWR at tempone{#2}%
+    \def\LWR at temptwo{\@nameuse{#1name}}%
+    \ifdefequal{\LWR at tempone}{\LWR at temptwo}{}{%
+        \SetupFloatingEnvironment{#1}{name=#2}%
+    }%
 }
 
 \newcommand*{\floatplacement}[2]{%
@@ -48,6 +51,7 @@
     \csedef{LWR at floatstyle@#2}{\LWR at floatstyle}%
 }
 
+
 \endinput
 %%
 %% End of file `lwarp-float.sty'.

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-floatflt.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-floatflt.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-floatflt.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -37,7 +37,7 @@
         }%
         {marginblock}%
     }%
-    \captionsetup{type=#2}%
+    \renewcommand*{\@captype}{#2}%
 }
 {%
     \endLWR at BlockClassWP%

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-floatrow.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-floatrow.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-floatrow.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -26,8 +26,8 @@
 
 \AtBeginDocument{
 \@ifpackageloaded{subcaption}
-{\booltrue{LWR at subcaptionloaded}}
-{\boolfalse{LWR at subcaptionloaded}}
+    {\booltrue{LWR at subcaptionloaded}}
+    {\boolfalse{LWR at subcaptionloaded}}
 }
 
 \NewDocumentCommand{\floatbox}{o m o o o +m +m}{%
@@ -160,9 +160,9 @@
 \newcommand{\RawCaption}[1]{#1}
 
 \NewDocumentCommand{\floatfoot}{s +m}{%
-\begin{BlockClass}{floatfoot}
-#2
-\end{BlockClass}
+    \begin{BlockClass}{floatfoot}
+    #2
+    \end{BlockClass}
 }
 
 \newbool{LWR at insubfloatrow}
@@ -170,15 +170,15 @@
 
 \newenvironment*{subfloatrow}[1][2]
 {
-\LWR at forcenewpage
-\BlockClass{floatrow}
-\begingroup
-\booltrue{LWR at insubfloatrow}
+    \LWR at forcenewpage
+    \BlockClass{floatrow}
+    \begingroup%
+    \booltrue{LWR at insubfloatrow}%
 }
-{
-\endgroup
-\endBlockClass
-\boolfalse{LWR at insubfloatrow}
+{%
+    \endgroup%
+    \endBlockClass%
+    \boolfalse{LWR at insubfloatrow}%
 }
 
 \endinput

Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fnpara.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fnpara.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fnpara.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,21 @@
+%%
+%% This is file `lwarp-fnpara.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `fnpara')
+%% 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 ProvidesPackageDrop{fnpara}
+\endinput
+%%
+%% End of file `lwarp-fnpara.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fnpara.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fontaxes.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fontaxes.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fontaxes.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -16,29 +16,17 @@
 %% and version 1.3 or later is part of all distributions of LaTeX
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackagePass{fontaxes}[2014/03/23]
-\newrobustcmd{\LWR at HTML@sscshape}{\LWR at HTML@scshape}
-\LWR at formatted{sscshape}
-\newcommand*{\LWR at null@sscshape}{}
-
-\newrobustcmd{\LWR at HTML@textssc}[1]{\textsc{#1}}
-\LWR at formatted{textssc}
-\newcommand*{\LWR at null@textssc}[1]{#1}
-
 \ifdef{\LWR at HTML@swshape}{}{% duplicated by nfssext-cfr
     \newcommand{\LWR at HTML@swshape}{}
     \LWR at formatted{swshape}
-    \newcommand*{\LWR at null@swshape}{}
 
-    \newcommand{\LWR at HTML@textsw}[1]{#1}
+    \newrobustcmd{\LWR at HTML@textsw}[1]{#1}
     \LWR at formatted{textsw}
-    \newcommand*{\LWR at null@textsw}[1]{#1}
-}
 
-\appto{\LWR at nullfonts}{%
-\LetLtxMacro\sscshape\LWR at null@sscshape%
-\LetLtxMacro\textssc\LWR at null@textssc%
-\LetLtxMacro\swshape\LWR at null@swshape%
-\LetLtxMacro\textsw\LWR at null@textsw%
+    \FilenameNullify{%
+        \LetLtxMacro\swshape\@empty%
+        \LetLtxMacro\textsw\firstofone%
+    }
 }
 \endinput
 %%

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-forest.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-forest.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-forest.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -18,7 +18,9 @@
 
 \LWR at ProvidesPackagePass{forest}[2017/07/14]
 
-\BeforeBeginEnvironment{forest}{\begin{lateximage}[forest]}
+\BeforeBeginEnvironment{forest}{%
+    \begin{lateximage}[-forest-~\PackageDiagramAltText]%
+}
 
 \AfterEndEnvironment{forest}{\end{lateximage}}
 
@@ -26,8 +28,9 @@
   \forest at config{#2}%
   \IfBooleanTF{#1}{%
         \PackageError{lwarp-forest}%
-        {Starred \Forest is not supported}%
-        {Lwarp uses an environment for images, but \Forest* cannot work in an environment.}%
+        {\protect\Forest* is not supported}%
+        {Lwarp uses an environment for images,\MessageBreak
+            but \protect\Forest* cannot work in an environment.}%
         \let\forest at next\forest at env%
     }{\let\forest at next\forest at group@env}%
     \begin{lateximage}[-forest-~\PackageDiagramAltText]%     lwarp

Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fourier.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fourier.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fourier.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,86 @@
+%%
+%% This is file `lwarp-fourier.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `fourier')
+%% 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{fourier}[2020/03/03]
+
+\LWR at infoprocessingmathjax{fourier}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-overlaysymbols}
+
+\begin{warpMathJax}
+
+\@ifpackagewith{fourier}{sloped}
+    {
+        \LWR at mathjax@addgreek at l@up{other}{}
+        \LWR at mathjax@addgreek at u@it*{other}{}
+    }% sloped
+    {% not sloped
+        \@ifpackagewith{fourier}{upright}
+            {% upright option
+                \LWR at mathjax@addgreek at l@up{}{}
+                \LWR at mathjax@addgreek at u@up*{}{}
+                \LWR at mathjax@addgreek at l@it{other}{}
+                \LWR at mathjax@addgreek at u@it*{other}{}
+            }
+            {% neither sloped nor upright
+                \LWR at mathjax@addgreek at l@up{other}{}
+                \LWR at mathjax@addgreek at u@it*{other}{}
+            }
+    }
+
+\CustomizeMathJax{\newcommand{\othergreek}[1]{#1}}
+\CustomizeMathJax{\let\varvarrho\varrho}
+\CustomizeMathJax{\let\varvarpi\varpi}
+\CustomizeMathJax{\let\othervarvarpi\othervarpi}
+\CustomizeMathJax{\let\othervarvarrho\othervarrho}
+\CustomizeMathJax{\let\varpartialdiff\partial}
+\CustomizeMathJax{\let\llbracket\lBrack}
+\CustomizeMathJax{\let\rrbracket\rBrack}
+\CustomizeMathJax{\let\dblbrackleft\lBrack}
+\CustomizeMathJax{\let\dblbrackright\rBrack}
+
+\CustomizeMathJax{\let\VERT|}
+
+\CustomizeMathJax{\newcommand{\parallelslant}{\mathrel{\unicode{x02AFD}}}}
+\CustomizeMathJax{\newcommand{\thething}{\mathord{\unicode{x1F60E}}}}
+\CustomizeMathJax{\newcommand{\nparallelslant}{%
+    \mathrel{\LWRoverlaysymbols{-}{\unicode{x02AFD}}}%
+}}
+\CustomizeMathJax{\newcommand{\xswordsup}{\mathord{\unicode{x2694}}}}
+\CustomizeMathJax{\newcommand{\xswordsdown}{\mathord{\unicode{x2694}}}}% up
+\CustomizeMathJax{\newcommand{\notowns}{\mathrel{\unicode{x220C}}}}
+
+\CustomizeMathJax{\newcommand{\iintop}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintop}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\oiint}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\let\oiintop\oiint}
+\CustomizeMathJax{\newcommand{\oiiint}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\let\oiiintop\oiiint}
+\CustomizeMathJax{\newcommand{\slashint}{\mathop{\unicode{x2A0D}}\limits}}
+\CustomizeMathJax{\let\slashintop\slashint}
+
+\CustomizeMathJax{\let\overgroup\overparen}
+\CustomizeMathJax{\let\wideparen\overparen}
+\CustomizeMathJax{\let\widearc\overparen}
+\CustomizeMathJax{\let\wideOarc\overrightarrow}
+\CustomizeMathJax{\newcommand{\widering}[1]{\stackrel{\unicode{x2218}}{\overgroup{#1}}}}
+
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-fourier.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fourier.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fvextra.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fvextra.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fvextra.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,166 @@
+%%
+%% This is file `lwarp-fvextra.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `fvextra')
+%% 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{fvextra}[2019/02/04]
+
+\define at booleankey{FV}{obeytabs}%
+  {\let\FV at ObeyTabsInit\relax}
+  {\let\FV at ObeyTabsInit\relax}
+
+\define at key{FV}{tabcolor}%
+ {}
+
+\define at key{FV}{tab}{}
+
+\define at booleankey{FV}{showtabs}%
+ {\let\FV at TabChar\relax}
+ {\let\FV at TabChar\relax}
+
+\newbool{LWR at FV@breaklines}
+
+\define at booleankey{FV}{breaklines}%
+  {\FV at BreakLinesfalse
+    \booltrue{LWR at FV@breaklines}
+    \let\FV at ListProcessLine\FV at ListProcessLine@NoBreak}
+  {\FV at BreakLinesfalse
+    \boolfalse{LWR at FV@breaklines}
+    \let\FV at ListProcessLine\FV at ListProcessLine@NoBreak}
+
+\define at key{FV}{breakanywheresymbolpre}{\def\FancyVerbBreakAnywhereSymbolPre{}}
+\fvset{breakanywheresymbolpre={}}
+
+\define at key{FV}{breakanywheresymbolpost}{\def\FancyVerbBreakAnywhereSymbolPost{}}
+\fvset{breakanywheresymbolpost={}}
+
+\define at key{FV}{breakbeforesymbolpre}{\def\FancyVerbBreakBeforeSymbolPre{}}
+\fvset{breakbeforesymbolpre={}}
+
+\define at key{FV}{breakbeforesymbolpost}{\def\FancyVerbBreakBeforeSymbolPost{}}
+\fvset{breakbeforesymbolpost={}}
+
+\define at key{FV}{breakaftersymbolpre}{\def\FancyVerbBreakAfterSymbolPre{}}
+\fvset{breakaftersymbolpre={}}
+
+\define at key{FV}{breakaftersymbolpost}{\def\FancyVerbBreakAfterSymbolPost{}}
+\fvset{breakaftersymbolpost={}}
+
+\define at key{FV}{breaksymbolleft}{\def\FancyVerbBreakSymbolLeft{}}
+
+\define at key{FV}{breaksymbol}{\fvset{breaksymbolleft={}}}
+
+\fvset{breaksymbolleft={}}
+
+\define at key{FV}{breaksymbolright}{\def\FancyVerbBreakSymbolRight{}}
+\fvset{breaksymbolright={}}
+
+\def\FV at ListProcessLine@NoBreak#1{%
+      \FV at LeftListNumber%
+      \FV at LeftListFrame%
+      \FancyVerbFormatLine{%
+        \FancyVerbHighlightLine{%
+          \FV at ObeyTabs{\FancyVerbFormatText{#1}}}}%\hss
+      \FV at RightListFrame%
+      \FV at RightListNumber%
+\null\par%                   lwarp
+}
+
+\newcommand*{\LWR at FV@linethensep}{%
+    \ifbool{LWR at FV@breaklines}%
+        {\theFancyVerbLine\kern\FV at NumberSep}%
+        {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}%
+}
+
+\newcommand*{\LWR at FV@septhenline}{%
+    \ifbool{LWR at FV@breaklines}%
+        {\kern\FV at NumberSep\theFancyVerbLine}%
+        {\hbox to\z@{\kern\FV at NumberSep\theFancyVerbLine\hss}}%
+}
+
+\xpatchcmd{\FV at Numbers@left}
+    {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+    {\LWR at FV@linethensep}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@left A}}
+
+\xpatchcmd{\FV at Numbers@left}
+    {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+    {\LWR at FV@linethensep}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@left B}}
+
+\xpatchcmd{\FV at Numbers@left}
+    {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+    {\LWR at FV@linethensep}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@left C}}
+
+\xpatchcmd{\FV at Numbers@right}
+    {\hbox to\z@{\kern\FV at NumberSep\theFancyVerbLine\hss}}
+    {\LWR at FV@septhenline}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@right A}}
+
+\xpatchcmd{\FV at Numbers@right}
+    {\hbox to\z@{\kern\FV at NumberSep\theFancyVerbLine\hss}}
+    {\LWR at FV@septhenline}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@right B}}
+
+\xpatchcmd{\FV at Numbers@right}
+    {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+    {\LWR at FV@linethensep}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@right C}}
+
+\xpatchcmd{\FV at Numbers@both}
+    {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+    {\LWR at FV@linethensep}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@both A}}
+
+\xpatchcmd{\FV at Numbers@both}
+    {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+    {\LWR at FV@linethensep}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@both B}}
+
+\xpatchcmd{\FV at Numbers@both}
+    {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+    {\LWR at FV@linethensep}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@both C}}
+
+\xpatchcmd{\FV at Numbers@both}
+    {\hbox to\z@{\kern\FV at NumberSep\theFancyVerbLine\hss}}
+    {\LWR at FV@septhenline}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@both D}}
+
+\xpatchcmd{\FV at Numbers@both}
+    {\hbox to\z@{\kern\FV at NumberSep\theFancyVerbLine\hss}}
+    {\LWR at FV@septhenline}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@both E}}
+
+\xpatchcmd{\FV at Numbers@both}
+    {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+    {\LWR at FV@linethensep}
+    {}
+    {\LWR at patcherror{fvextra}{FV at Numbers@both F}}
+\endinput
+%%
+%% End of file `lwarp-fvextra.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fvextra.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-gindex.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-gindex.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-gindex.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,42 @@
+%%
+%% This is file `lwarp-gindex.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `gindex')
+%% 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{gindex}[2019/10/07]
+\AtBeginDocument{
+    \robustify{\indexpagessep}
+    \robustify{\indexrangesep}
+    \renewcommand*{\IndexPageSeparator}{\indexpagessep}
+    \renewcommand*{\IndexRangeSeparator}{\indexrangesep}
+}
+\def\addindexitem#1#2{%
+  \indexflushitem
+  \gix at getspecial#1\indexspecial\indexspecial\@@\indexitem{\hyperindexref{#2}}}
+
+\def\addindexsubitem#1#2{%
+  \stepcounter{indexsubitems}%
+  \gix at getspecial#1\indexspecial\indexspecial\@@\indexsubitem{\hyperindexref{#2}}}
+
+\def\addindexsubsubitem#1#2{%
+  \gix at getspecial#1\indexspecial\indexspecial\@@\indexsubsubitem{\hyperindexref{#2}}}
+\renewcommand\indexheading[1]{%
+    \begin{BlockClass}{indexheading}
+    \MakeUppercase{#1}%
+    \end{BlockClass}
+}
+\endinput
+%%
+%% End of file `lwarp-gindex.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-gindex.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-glossaries.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-glossaries.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-glossaries.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -24,7 +24,7 @@
 \setglossarystyle{index}
 \renewcommand*{\@p at glossarysection}[2]{%
   \glsclearpage
-  \phantomsection
+  \LWR at phantomsection
   \ifdefempty\@@glossarysecstar
   {%
     \csname\@@glossarysec\endcsname{#2}%

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-graphics.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-graphics.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-graphics.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -17,7 +17,7 @@
 %% version 2005/12/01 or later.
 
 
-\LWR at ProvidesPackagePass{graphics}[2017/06/25]
+\LWR at ProvidesPackagePass{graphics}[2020/08/30]
 
 
 \AtBeginDocument{
@@ -102,9 +102,8 @@
 \define at key{igraph}{scale}{%
     \ifthenelse{\equal{#1}{1}}{}{%  must expand #1
         \PackageWarning{lwarp}{%
-            It is recommended to use\MessageBreak
-            [width=xx\protect\linewidth]\MessageBreak
-            instead of [scale=yy],%
+            It is recommended to use ``[width=xx\protect\linewidth]''\MessageBreak
+            instead of ``[scale=yy]'',%
         }%
     }%
     \renewcommand*{\LWR at igxscale}{#1}%
@@ -252,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
@@ -264,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}{}}%
@@ -296,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}
@@ -336,10 +335,11 @@
     \Ginclude at graphics{\detokenize\expandafter{\LWR at tempone}}%
     \endgroup%
     \filename at parse{\LWR at parsedfilename}%
+    \StrSubstitute{\LWR at parsedfilename}{//}{/}[\LWR at parsedfilename]%
     \LWR at traceinfo{LWR at parsedfilename is \LWR at parsedfilename}%
     \LWR at ig@wpimagesizes{#1}{#2}{#3}{#4}%
     \LWR at traceinfo{LWR at includegraphicsb: about to create href}%
-    \href{\LWR at parsedfilename}%
+    \LWR at href{\LWR at parsedfilename}%
     {% start of href
         \LWR at traceinfo{LWR at includegraphicsb: about to LWR at htmltag}%
         \LWR at htmltag{\LWR at ig@htmltag}%
@@ -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%
@@ -434,7 +434,7 @@
 \AtBeginDocument{
 
 \newcommand{\LWR at HTML@reflectbox}[1]{%
-\scalebox{-1}[1]{#1}%
+    \scalebox{-1}[1]{#1}%
 }% \reflectbox
 
 \LWR at formatted{reflectbox}
@@ -444,7 +444,7 @@
 \AtBeginDocument{
 
 \NewDocumentCommand{\LWR at HTML@resizebox}{s m m m}{%
-#4%
+    #4%
 }
 
 \LWR at formatted{resizebox}

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-graphicx.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-graphicx.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-graphicx.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -17,7 +17,7 @@
 %% version 2005/12/01 or later.
 
 
-\LWR at ProvidesPackagePass{graphicx}[2017/06/01]
+\LWR at ProvidesPackagePass{graphicx}[2020/09/09]
 
 \endinput
 %%

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hang.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hang.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hang.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -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{}{}%

Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hepunits.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hepunits.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hepunits.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,84 @@
+%%
+%% This is file `lwarp-hepunits.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `hepunits')
+%% 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{hepunits}[2020/04/10]
+\begin{warpMathJax}
+\LWR at infoprocessingmathjax{hepunits}
+
+\ifx\@HEPopt at sicmds\@yes
+\CustomizeMathJax{\newcommand{\micron}{\micro\metre}}
+\CustomizeMathJax{\newcommand{\mrad}{\milli\radian}}
+\fi
+
+\CustomizeMathJax{\newcommand{\gauss}{\mathrm{G}}}
+
+\CustomizeMathJax{\newcommand{\invcmsq}{\centi\metre\tothe{-2}}}
+\CustomizeMathJax{\newcommand{\invcmsqpersecond}{\invcmsq\second\tothe{-1}}}
+\CustomizeMathJax{\newcommand{\invcmsqpersec}{\invcmsqpersecond}}
+
+%% (Inverse) cross-sections
+\CustomizeMathJax{\newcommand{\invbarn}{\barn\tothe{-1}}}
+
+\ifx\@HEPopt at noprefixcmds\@empty
+\CustomizeMathJax{\newcommand{\millibarn}{\milli\barn}}
+\CustomizeMathJax{\newcommand{\microbarn}{\micro\barn}}
+\CustomizeMathJax{\newcommand{\nanobarn}{\nano\barn}}
+\CustomizeMathJax{\newcommand{\picobarn}{\pico\barn}}
+\CustomizeMathJax{\newcommand{\femtobarn}{\femto\barn}}
+\CustomizeMathJax{\newcommand{\attobarn}{\atto\barn}}
+\CustomizeMathJax{\newcommand{\zeptobarn}{\zepto\barn}}
+\CustomizeMathJax{\newcommand{\yoctobarn}{\yocto\barn}}
+\CustomizeMathJax{\newcommand{\invnanobarn}{\nano\invbarn}}
+\CustomizeMathJax{\newcommand{\invpicobarn}{\pico\invbarn}}
+\CustomizeMathJax{\newcommand{\invfemtobarn}{\femto\invbarn}}
+\CustomizeMathJax{\newcommand{\invattobarn}{\atto\invbarn}}
+\CustomizeMathJax{\newcommand{\invzeptobarn}{\zepto\invbarn}}
+\CustomizeMathJax{\newcommand{\invyoctobarn}{\yocto\invbarn}}
+\CustomizeMathJax{\newcommand{\invnb}{\invnanobarn}}
+\CustomizeMathJax{\newcommand{\invpb}{\invpicobarn}}
+\CustomizeMathJax{\newcommand{\invfb}{\invfemtobarn}}
+\CustomizeMathJax{\newcommand{\invab}{\invattobarn}}
+\CustomizeMathJax{\newcommand{\invzb}{\invzeptobarn}}
+\CustomizeMathJax{\newcommand{\invyb}{\invyoctobarn}}
+\fi
+
+\CustomizeMathJax{\newcommand{\electronvoltc}{\electronvolt\per\mathit{c}}}
+\CustomizeMathJax{\newcommand{\electronvoltcsq}{\electronvolt\per\mathit{c}\squared}}
+\CustomizeMathJax{\let\eVc\electronvoltc}
+\CustomizeMathJax{\let\eVcsq\electronvoltcsq}
+
+\ifx\@HEPopt at noprefixcmds\@empty
+\CustomizeMathJax{\newcommand{\meV}{\milli\eV}}
+\CustomizeMathJax{\newcommand{\keV}{\kilo\eV}}
+\CustomizeMathJax{\newcommand{\MeV}{\mega\eV}}
+\CustomizeMathJax{\newcommand{\GeV}{\giga\eV}}
+\CustomizeMathJax{\newcommand{\TeV}{\tera\eV}}
+\CustomizeMathJax{\newcommand{\meVc}{\milli\eVc}}
+\CustomizeMathJax{\newcommand{\keVc}{\kilo\eVc}}
+\CustomizeMathJax{\newcommand{\MeVc}{\mega\eVc}}
+\CustomizeMathJax{\newcommand{\GeVc}{\giga\eVc}}
+\CustomizeMathJax{\newcommand{\TeVc}{\tera\eVc}}
+\CustomizeMathJax{\newcommand{\meVcsq}{\milli\eVcsq}}
+\CustomizeMathJax{\newcommand{\keVcsq}{\kilo\eVcsq}}
+\CustomizeMathJax{\newcommand{\MeVcsq}{\mega\eVcsq}}
+\CustomizeMathJax{\newcommand{\GeVcsq}{\giga\eVcsq}}
+\CustomizeMathJax{\newcommand{\TeVcsq}{\tera\eVcsq}}
+\fi
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-hepunits.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hepunits.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hhtensor.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hhtensor.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hhtensor.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,47 @@
+%%
+%% This is file `lwarp-hhtensor.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `hhtensor')
+%% 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{hhtensor}[2011/12/29]
+\begin{warpMathJax}
+\iftensor at bold
+  \CustomizeMathJax{\newcommand{\vec}[1]{\boldsymbol{#1}}}
+  \CustomizeMathJax{\newcommand{\matr}[1]{\boldsymbol{#1}}}
+  \CustomizeMathJax{\newcommand{\tens}[2]{\boldsymbol{#1}}}
+\else
+  \iftensor at uline
+    \CustomizeMathJax{\newcommand{\vec}[1]{\ushort{#1}}}
+    \CustomizeMathJax{\newcommand{\matr}[1]{\ushortd{#1}}}
+    \CustomizeMathJax{\newcommand{\tens}[2]{
+        \underset{
+            \raise{.5ex}{\underset{#2}{\sim}}
+        }{#1}
+    }}
+  \else
+    \CustomizeMathJax{\newcommand{\matr}[1]{\vec{\vec{#1}}}}
+    \CustomizeMathJax{\newcommand{\tens}[2]{
+        \underset{
+            \raise{.5ex}{\underset{#2}{\sim}}
+        }{#1}
+    }}
+  \fi
+\fi
+\CustomizeMathJax{\newcommand{\dcdot}{\mathrel{\cdot\mkern 0.0mu \cdot}}}
+\CustomizeMathJax{\newcommand{\trans}{{}^{\mathrm{T}}}}
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-hhtensor.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hhtensor.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -20,16 +20,260 @@
 
 \PackageInfo{lwarp}{%
 Using the lwarp HTML version of package `hyperref',\MessageBreak
-and discarding options.\MessageBreak
+and discarding options except backref, pagebackref.\MessageBreak
 (Not using \protect\ProvidesPackage, so that other packages\MessageBreak
 do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
+\SetupKeyvalOptions{family=LWR at hyperref,prefix=LWR at hyperref@}
 
-\DeclareOption*{}
-\let\ds@\@empty%         from the original \ProcessOptions
-\edef\@curroptions{}%    lwarp modification to \ProcessOptions
-\@process at ptions\relax%  from the original \ProcessOptions
+\newcommand{\hypersetup}[1]{\setkeys{LWR at hyperref}{#1}}
 
-\newcommand*{\hypersetup}[1]{}
+\define at key{LWR at hyperref}{a4paper}[]{}
+\define at key{LWR at hyperref}{a5paper}[]{}
+\define at key{LWR at hyperref}{b5paper}[]{}
+\define at key{LWR at hyperref}{letterpaper}[]{}
+\define at key{LWR at hyperref}{legalpaper}[]{}
+\define at key{LWR at hyperref}{executivepaper}[]{}
+\define at key{LWR at hyperref}{implicit}[]{}
+\define at key{LWR at hyperref}{draft}[]{}
+\define at key{LWR at hyperref}{final}[]{}
+\define at key{LWR at hyperref}{setpagesize}[]{}
+\define at key{LWR at hyperref}{debug}[]{}
+\define at key{LWR at hyperref}{linktocpage}[]{}
+\define at key{LWR at hyperref}{linktoc}[]{}
+\define at key{LWR at hyperref}{extension}[]{}
+\define at key{LWR at hyperref}{verbose}[]{}
+\define at key{LWR at hyperref}{typexml}[]{}
+\define at key{LWR at hyperref}{raiselinks}[]{}
+\define at key{LWR at hyperref}{breaklinks}[]{}
+\define at key{LWR at hyperref}{localanchorname}[]{}
+\define at key{LWR at hyperref}{pageanchor}[]{}
+\define at key{LWR at hyperref}{plainpages}[]{}
+\define at key{LWR at hyperref}{naturalnames}[]{}
+\define at key{LWR at hyperref}{hypertexnames}[]{}
+\define at key{LWR at hyperref}{nesting}[]{}
+\define at key{LWR at hyperref}{destlabel}[]{}
+\define at key{LWR at hyperref}{unicode}[]{}
+\define at key{LWR at hyperref}{pdfencoding}[]{}
+\define at key{LWR at hyperref}{psdextra}[]{}
+\define at key{LWR at hyperref}{pdfversion}[]{}
+\define at key{LWR at hyperref}{dvipdfmx-outline-open}[]{}
+\define at key{LWR at hyperref}{driverfallback}[]{}
+\define at key{LWR at hyperref}{customdriver}[]{}
+\define at key{LWR at hyperref}{hyperfigures}[]{}
+\define at key{LWR at hyperref}{hyperfootnotes}[]{}
+\define at key{LWR at hyperref}{hyperindex}[]{}
+\define at key{LWR at hyperref}{encap}[]{}
+\define at key{LWR at hyperref}{colorlinks}[]{}
+\define at key{LWR at hyperref}{ocgcolorlinks}[]{}
+\define at key{LWR at hyperref}{frenchlinks}[]{}
+\define at key{LWR at hyperref}{bookmarks}[]{}
+\define at key{LWR at hyperref}{bookmarksopen}[]{}
+\define at key{LWR at hyperref}{bookmarksdepth}[]{}
+\define at key{LWR at hyperref}{bookmarksopenlevel}[]{}
+\define at key{LWR at hyperref}{bookmarkstype}[]{}
+\define at key{LWR at hyperref}{bookmarksnumbered}[]{}
+\define at key{LWR at hyperref}{CJKbookmarks}[]{}
+\define at key{LWR at hyperref}{link}[]{}
+\define at key{LWR at hyperref}{anchor}[]{}
+\define at key{LWR at hyperref}{cite}[]{}
+\define at key{LWR at hyperref}{file}[]{}
+\define at key{LWR at hyperref}{url}[]{}
+\define at key{LWR at hyperref}{menu}[]{}
+\define at key{LWR at hyperref}{run}[]{}
+\define at key{LWR at hyperref}{linkbordercolor}[]{}
+\define at key{LWR at hyperref}{anchorbordercolor}[]{}
+\define at key{LWR at hyperref}{citebordercolor}[]{}
+\define at key{LWR at hyperref}{filebordercolor}[]{}
+\define at key{LWR at hyperref}{urlbordercolor}[]{}
+\define at key{LWR at hyperref}{menubordercolor}[]{}
+\define at key{LWR at hyperref}{runbordercolor}[]{}
+\define at key{LWR at hyperref}{pagecolor}[]{}
+\define at key{LWR at hyperref}{baseurl}[]{}
+\define at key{LWR at hyperref}{linkfileprefix}[]{}
+\define at key{LWR at hyperref}{pdfpagetransition}[]{}
+\define at key{LWR at hyperref}{pdfpageduration}[]{}
+\define at key{LWR at hyperref}{pdfpagehidden}[]{}
+\define at key{LWR at hyperref}{pagebordercolor}[]{}
+\define at key{LWR at hyperref}{allbordercolors}[]{}
+\define at key{LWR at hyperref}{pdfhighlight}[]{}
+\define at key{LWR at hyperref}{pdfborder}[]{}
+\define at key{LWR at hyperref}{pdfborderstyle}[]{}
+\define at key{LWR at hyperref}{pdfprintpagerange}[]{}
+\define at key{LWR at hyperref}{pdfusetitle}[]{}
+\define at key{LWR at hyperref}{pdftitle}[]{}
+\define at key{LWR at hyperref}{pdfauthor}[]{}
+\define at key{LWR at hyperref}{pdfproducer}[]{}
+\define at key{LWR at hyperref}{pdfcreator}[]{}
+\define at key{LWR at hyperref}{addtopdfcreator}[]{}
+\define at key{LWR at hyperref}{pdfcreationdate}[]{}
+\define at key{LWR at hyperref}{pdfmoddate}[]{}
+\define at key{LWR at hyperref}{pdfsubject}[]{}
+\define at key{LWR at hyperref}{pdfkeywords}[]{}
+\define at key{LWR at hyperref}{pdftrapped}[]{}
+\define at key{LWR at hyperref}{pdfinfo}[]{}
+\define at key{LWR at hyperref}{pdfview}[]{}
+\define at key{LWR at hyperref}{pdflinkmargin}[]{}
+\define at key{LWR at hyperref}{pdfstartpage}[]{}
+\define at key{LWR at hyperref}{pdfstartview}[]{}
+\define at key{LWR at hyperref}{pdfremotestartview}[]{}
+\define at key{LWR at hyperref}{pdfpagescrop}[]{}
+\define at key{LWR at hyperref}{pdftoolbar}[]{}
+\define at key{LWR at hyperref}{pdfmenubar}[]{}
+\define at key{LWR at hyperref}{pdfwindowui}[]{}
+\define at key{LWR at hyperref}{pdffitwindow}[]{}
+\define at key{LWR at hyperref}{pdfcenterwindow}[]{}
+\define at key{LWR at hyperref}{pdfdisplaydoctitle}[]{}
+\define at key{LWR at hyperref}{pdfa}[]{}
+\define at key{LWR at hyperref}{pdfnewwindow}[]{}
+\define at key{LWR at hyperref}{pdflang}[]{}
+\define at key{LWR at hyperref}{pdfpagelabels}[]{}
+\define at key{LWR at hyperref}{pdfescapeform}[]{}
+\define at key{LWR at hyperref}{english}[]{}
+\define at key{LWR at hyperref}{UKenglish}[]{}
+\define at key{LWR at hyperref}{british}[]{}
+\define at key{LWR at hyperref}{USenglish}[]{}
+\define at key{LWR at hyperref}{american}[]{}
+\define at key{LWR at hyperref}{german}[]{}
+\define at key{LWR at hyperref}{austrian}[]{}
+\define at key{LWR at hyperref}{ngerman}[]{}
+\define at key{LWR at hyperref}{naustrian}[]{}
+\define at key{LWR at hyperref}{russian}[]{}
+\define at key{LWR at hyperref}{brazil}[]{}
+\define at key{LWR at hyperref}{brazilian}[]{}
+\define at key{LWR at hyperref}{portuguese}[]{}
+\define at key{LWR at hyperref}{spanish}[]{}
+\define at key{LWR at hyperref}{catalan}[]{}
+\define at key{LWR at hyperref}{afrikaans}[]{}
+\define at key{LWR at hyperref}{french}[]{}
+\define at key{LWR at hyperref}{frenchb}[]{}
+\define at key{LWR at hyperref}{francais}[]{}
+\define at key{LWR at hyperref}{acadian}[]{}
+\define at key{LWR at hyperref}{canadien}[]{}
+\define at key{LWR at hyperref}{italian}[]{}
+\define at key{LWR at hyperref}{magyar}[]{}
+\define at key{LWR at hyperref}{hungarian}[]{}
+\define at key{LWR at hyperref}{greek}[]{}
+\define at key{LWR at hyperref}{dutch}[]{}
+\define at key{LWR at hyperref}{tex4ht}[]{}
+\define at key{LWR at hyperref}{pdftex}[]{}
+\define at key{LWR at hyperref}{luatex}[]{}
+\define at key{LWR at hyperref}{nativepdf}[]{}
+\define at key{LWR at hyperref}{dvipdfm}[]{}
+\define at key{LWR at hyperref}{dvipdfmx}[]{}
+\define at key{LWR at hyperref}{xetex}[]{}
+\define at key{LWR at hyperref}{pdfmark}[]{}
+\define at key{LWR at hyperref}{dvips}[]{}
+\define at key{LWR at hyperref}{hypertex}[]{}
+\define at key{LWR at hyperref}{vtex}[]{}
+\define at key{LWR at hyperref}{vtexpdfmark}[]{}
+\define at key{LWR at hyperref}{dviwindo}[]{}
+\define at key{LWR at hyperref}{dvipsone}[]{}
+\define at key{LWR at hyperref}{textures}[]{}
+\define at key{LWR at hyperref}{latex2html}[]{}
+\define at key{LWR at hyperref}{ps2pdf}[]{}
+\define at key{LWR at hyperref}{vietnamese}[]{}
+\define at key{LWR at hyperref}{vietnam}[]{}
+\define at key{LWR at hyperref}{arabic}[]{}
+\define at key{LWR at hyperref}{hidelinks}[]{}
+\define at key{LWR at hyperref}{draft}[]{}
+\define at key{LWR at hyperref}{nolinks}[]{}
+\define at key{LWR at hyperref}{final}[]{}
+\define at key{LWR at hyperref}{pdfa}[]{}
+\define at key{LWR at hyperref}{pdfversion}[]{}
+\define at key{LWR at hyperref}{typexml}[]{}
+\define at key{LWR at hyperref}{tex4ht}[]{}
+\define at key{LWR at hyperref}{pdftex}[]{}
+\define at key{LWR at hyperref}{nativepdf}[]{}
+\define at key{LWR at hyperref}{dvipdfm}[]{}
+\define at key{LWR at hyperref}{dvipdfmx}[]{}
+\define at key{LWR at hyperref}{dvipdfmx-outline-open}[]{}
+\define at key{LWR at hyperref}{pdfmark}[]{}
+\define at key{LWR at hyperref}{dvips}[]{}
+\define at key{LWR at hyperref}{hypertex}[]{}
+\define at key{LWR at hyperref}{vtex}[]{}
+\define at key{LWR at hyperref}{vtexpdfmark}[]{}
+\define at key{LWR at hyperref}{dviwindo}[]{}
+\define at key{LWR at hyperref}{dvipsone}[]{}
+\define at key{LWR at hyperref}{textures}[]{}
+\define at key{LWR at hyperref}{latex2html}[]{}
+\define at key{LWR at hyperref}{ps2pdf}[]{}
+\define at key{LWR at hyperref}{xetex}[]{}
+\define at key{LWR at hyperref}{driverfallback}[]{}
+\define at key{LWR at hyperref}{customdriver}[]{}
+\define at key{LWR at hyperref}{pdfversion}[]{}
+\define at key{LWR at hyperref}{bookmarks}[]{}
+\define at key{LWR at hyperref}{ocgcolorlinks}[]{}
+\define at key{LWR at hyperref}{colorlinks}[]{}
+\define at key{LWR at hyperref}{frenchlinks}[]{}
+\define at key{LWR at hyperref}{backref}[]{}
+\define at key{LWR at hyperref}{pagebackref}[]{}
+\define at key{LWR at hyperref}{destlabel}[]{}
+\define at key{LWR at hyperref}{pdfpagescrop}[]{}
+\define at key{LWR at hyperref}{pdfpagemode}[]{}
+\define at key{LWR at hyperref}{pdfnonfullscreenpagemode}[]{}
+\define at key{LWR at hyperref}{pdfdirection}[]{}
+\define at key{LWR at hyperref}{pdfviewarea}[]{}
+\define at key{LWR at hyperref}{pdfviewclip}[]{}
+\define at key{LWR at hyperref}{pdfprintarea}[]{}
+\define at key{LWR at hyperref}{pdfprintclip}[]{}
+\define at key{LWR at hyperref}{pdfprintscaling}[]{}
+\define at key{LWR at hyperref}{pdfduplex}[]{}
+\define at key{LWR at hyperref}{pdfpicktraybypdfsize}[]{}
+\define at key{LWR at hyperref}{pdfprintpagerange}[]{}
+\define at key{LWR at hyperref}{pdfnumcopies}[]{}
+\define at key{LWR at hyperref}{pdfstartview}[]{}
+\define at key{LWR at hyperref}{pdfstartpage}[]{}
+\define at key{LWR at hyperref}{pdftoolbar}[]{}
+\define at key{LWR at hyperref}{pdfmenubar}[]{}
+\define at key{LWR at hyperref}{pdfwindowui}[]{}
+\define at key{LWR at hyperref}{pdffitwindow}[]{}
+\define at key{LWR at hyperref}{pdfcenterwindow}[]{}
+\define at key{LWR at hyperref}{pdfdisplaydoctitle}[]{}
+\define at key{LWR at hyperref}{pdfpagelayout}[]{}
+\define at key{LWR at hyperref}{pdflang}[]{}
+\define at key{LWR at hyperref}{baseurl}[]{}
+\define at key{LWR at hyperref}{pdfusetitle}[]{}
+\define at key{LWR at hyperref}{pdfpagelabels}[]{}
+\define at key{LWR at hyperref}{hyperfootnotes}[]{}
+\define at key{LWR at hyperref}{hyperfigures}[]{}
+\define at key{LWR at hyperref}{hyperindex}[]{}
+\define at key{LWR at hyperref}{encap}[]{}
+\define at key{LWR at hyperref}{linkcolor}[]{}
+\define at key{LWR at hyperref}{anchorcolor}[]{}
+\define at key{LWR at hyperref}{citecolor}[]{}
+\define at key{LWR at hyperref}{filecolor}[]{}
+\define at key{LWR at hyperref}{urlcolor}[]{}
+\define at key{LWR at hyperref}{menucolor}[]{}
+\define at key{LWR at hyperref}{runcolor}[]{}
+\define at key{LWR at hyperref}{allcolors}[]{}
+
+\DeclareStringOption[false]{backref}[section]
+
+\DeclareBoolOption{pagebackref}
+
+\DeclareDefaultOption{}
+
+\ProcessKeyvalOptions*\relax
+\ifdefstring{\LWR at hyperref@backref}{section}
+    {\RequirePackage{backref}}
+    {}
+
+\ifdefstring{\LWR at hyperref@backref}{slide}
+    {\RequirePackage{backref}}
+    {}
+
+\ifdefstring{\LWR at hyperref@backref}{page}
+    {\RequirePackage{backref}}
+    {}
+
+\ifLWR at hyperref@pagebackref
+    \RequirePackage{backref}
+\fi
+\LetLtxMacro\href\LWR at href
+\LetLtxMacro\nolinkurl\LWR at nolinkurl
+\LetLtxMacro\url\LWR at url
+\LetLtxMacro\phantomsection\LWR at phantomsection
+
 \newcommand*{\hyperbaseurl}[1]{}
 
 \NewDocumentCommand{\LWR at hyperimageb}{m +m}{%
@@ -36,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%
 }
@@ -49,7 +297,7 @@
 
 \NewDocumentCommand{\LWR at hyperdefb}{m m +m}{%
     \LWR at ensuredoingapar%
-    \LWR at sublabel{#1.#2}%
+    \LWR at label@createtag{#1.#2}%
     #3%
     \endgroup%
 }
@@ -62,8 +310,8 @@
 
 \newcommand{\LWR at hyperreffinish}[1]{%
     \begingroup%
-    \RenewDocumentCommand{\ref}{}{\LWR at ref@ignorestar}%
-    #1%
+    \RenewDocumentCommand{\ref}{s m}{\LWR at print@ref{##2}}%
+   #1%
     \endgroup%
     \LWR at htmltag{/a}%
 }
@@ -70,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%
@@ -144,6 +392,7 @@
 
 \newcommand{\belowpdfbookmark}[2]{}
 
+\let\texorpdfstring\relax
 \newcommand{\texorpdfstring}[2]{#1}
 
 \newcommand{\pdfstringdefDisableCommands}[1]{}

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-idxlayout.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-idxlayout.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-idxlayout.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -17,16 +17,16 @@
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackageDrop{idxlayout}[2012/03/30]
 \newcommand{\LWR at indexprenote}{}
+\AtBeginDocument{
+    \preto\printindex{
 
-\preto\printindex{
+    \LWR at maybe@orignewpage
+    \LWR at startpars
 
-\LWR at orignewpage
-\LWR at startpars
+    \LWR at indexprenote
 
-\LWR at indexprenote
-
+    }
 }
-
 \newcommand{\setindexprenote}[1]{\renewcommand{\LWR at indexprenote}{#1}}
 \newcommand*{\noindexprenote}{\renewcommand{\LWR at indexprenote}{}}
 

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-imakeidx.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-imakeidx.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-imakeidx.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -22,7 +22,7 @@
 \catcode`\_=12%
 
 \renewcommand*{\printindex}[1][\imki at jobname]{%
-\LWR at orignewpage%
+\LWR at maybe@orignewpage%
 \LWR at startpars%
 \ifstrequal{#1}{\imki at jobname}{%
   \@ifundefined{#1 at idxfile}{%
@@ -80,7 +80,7 @@
 }
 \renewcommand\imki at wrindexentrysplit[3]{%
 \addtocounter{LWR at autoindex}{1}%
-\LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%
+\label{LWRindex-\arabic{LWR at autoindex}}%
   \expandafter\protected at write\csname#1 at idxfile\endcsname{}%
     {\string\indexentry{#2}{\arabic{LWR at autoindex}}}%
 }
@@ -87,7 +87,7 @@
 
 \renewcommand\imki at wrindexentryunique[3]{%
 \addtocounter{LWR at autoindex}{1}%
-\LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%
+\label{LWRindex-\arabic{LWR at autoindex}}%
   \protected at write\@indexfile{}%
     {\string\indexentry[#1]{#2}{\arabic{LWR at autoindex}}}%
 }

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-index.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-index.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-index.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -37,7 +37,7 @@
     {\begingroup}
     {%
         \addtocounter{LWR at autoindex}{1}%                    lwarp
-        \LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%    lwarp
+        \label{LWRindex-\arabic{LWR at autoindex}}%    lwarp
         \begingroup%
     }
     {}

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-intopdf.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-intopdf.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-intopdf.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -17,7 +17,7 @@
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackageDrop{intopdf}[2019/05/28]
 \NewDocumentCommand{\attachandlink}{o m o m m}{%
-    \href{#2}{#5}%
+    \LWR at href{#2}{#5}%
 }
 \endinput
 %%

Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-isomath.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-isomath.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-isomath.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -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: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-isomath.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-isotope.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-isotope.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-isotope.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -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: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-isotope.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-jurabib.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-jurabib.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-jurabib.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,76 @@
+%%
+%% This is file `lwarp-jurabib.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `jurabib')
+%% 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{jurabib}[2004/01/25]
+\renewrobustcmd{\jblangle}{\textless}
+
+\renewrobustcmd{\jbrangle}{\textgreater}
+
+\renewcommand*{\jb at biblaw@item}{%
+    \hspace{0.5em}%
+    \HTMLunicode{25B7}%     lwarp
+    \hspace{0.5em}%
+}
+
+\renewrobustcmd{\jbarchsig}[2]{%
+     \ifjbweareinbib
+        \settowidth{\jb at subarchitemwidth}{\jbsamesubarchindent+#1}%
+        \setlength{\jb at subarchentrywidth}{\textwidth-\jb at subarchitemwidth-4em}%
+           #1\ifjb at dot\unskip\unskip\unskip.\fi
+            \quad%      lwarp
+            \ifthenelse{\equal{#2}{}}{}{\jbarchnameformat{#2}}%
+     \fi
+}%
+
+\xpatchcmd{\jb at do@post at item}
+    {\begin{tabular}{p{\jb at biblaw@item at width}j{\jb at biblaw@entry at width}}}
+    {}
+    {}
+    {\LWR at patcherror{jurabib}{jb at do@post at item 1}}
+
+\xpatchcmd{\jb at do@post at item}
+    {\multicolumn{2}{p{\columnwidth}}{\jb@@name}}
+    {\jb@@name}
+    {}
+    {\LWR at patcherror{jurabib}{jb at do@post at item 2}}
+
+\xpatchcmd{\jb at do@post at item}
+    {\jb at biblaw@item & \jb@@fulltitle}
+    {\jb at biblaw@item \quad \jb@@fulltitle}
+    {}
+    {\LWR at patcherror{jurabib}{jb at do@post at item 3}}
+
+\xpatchcmd{\jb at do@post at item}
+    {\end{tabular}}
+    {}
+    {}
+    {\LWR at patcherror{jurabib}{jb at do@post at item 4}}
+
+\xpatchcmd{\jb at do@post at item}
+    {\begin{minipage}[t]{\bibnumberwidth}}
+    {}
+    {}
+    {\LWR at patcherror{jurabib}{jb at do@post at item 5}}
+
+\xpatchcmd{\jb at do@post at item}
+    {\end{minipage}}
+    {\quad}
+    {}
+    {\LWR at patcherror{jurabib}{jb at do@post at item 6}}
+\endinput
+%%
+%% End of file `lwarp-jurabib.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-jurabib.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-karnaugh-map.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-karnaugh-map.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-karnaugh-map.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -105,11 +105,14 @@
     \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.
       }%
-    }{}%    lwarp
+    }{\relax}%    lwarp
     \begin{tikzpicture}
       % grid
       % for all dimensions

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-keyfloat.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-keyfloat.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-keyfloat.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -19,7 +19,7 @@
 
 \LWR at ProvidesPackagePass{keyfloat}[2019/09/23]
 
-\@ifpackagelater{keyfloat}{2019/09/23}{}{
+\@ifpackagelater{keyfloat}{2019/09/23}{\relax}{
     \PackageError{lwarp-keyfloat}
     {%
         The keyfloat package is out of date.\MessageBreak
@@ -211,7 +211,7 @@
         {float:right; width:2in; margin:10pt}%
         {}%
         {marginblock}%
-    \captionsetup{type=#2}%
+    \renewcommand*{\@captype}{#2}%
     \minipage{\LWR at usersmarginparwidth}%
     \setlength{\marginparwidth}{.95\LWR at usersmarginparwidth}%
 }

Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-keystroke.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-keystroke.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-keystroke.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,70 @@
+%%
+%% This is file `lwarp-keystroke.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `keystroke')
+%% 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{keystroke}[2010/04/23]
+\newcommand*{\LWR at HTML@keystroke}[1]{
+    \InlineClass{keystroke}{#1}
+}
+\LWR at formatted{keystroke}
+
+\newcommand*{\LWR at HTML@Return}{\keystroke{\HTMLunicode{021A9}}}
+\LWR at formatted{Return}
+
+\newcommand*{\LWR at HTML@BSpace}{\keystroke{\HTMLunicode{027FB}}}
+\LWR at formatted{BSpace}
+
+\newcommand*{\LWR at HTML@Tab}{\keystroke{|\HTMLunicode{021C6}|}}
+\LWR at formatted{Tab}
+
+\newcommand*{\LWR at HTML@UArrow}{\keystroke{\HTMLunicode{02191}}}
+\LWR at formatted{UArrow}
+
+\newcommand*{\LWR at HTML@DArrow}{\keystroke{\HTMLunicode{02193}}}
+\LWR at formatted{DArrow}
+
+\newcommand*{\LWR at HTML@LArrow}{\keystroke{\HTMLunicode{02190}}}
+\LWR at formatted{LArrow}
+
+\newcommand*{\LWR at HTML@RArrow}{\keystroke{\HTMLunicode{02192}}}
+\LWR at formatted{RArrow}
+
+\LetLtxMacro\LWR at HTML@Shift\Shift
+\xpatchcmd{\LWR at HTML@Shift}
+    {$\Uparrow$}
+    {\HTMLunicode{21D1}}
+    {}
+    {}
+\LWR at formatted{Shift}
+
+\LetLtxMacro\LWR at HTML@PgUp\PgUp
+\xpatchcmd{\LWR at HTML@PgUp}
+    {$\uparrow$}
+    {\HTMLunicode{2191}}
+    {}
+    {}
+\LWR at formatted{PgUp}
+
+\LetLtxMacro\LWR at HTML@PgDown\PgDown
+\xpatchcmd{\LWR at HTML@PgDown}
+    {$\downarrow$}
+    {\HTMLunicode{2193}}
+    {}
+    {}
+\LWR at formatted{PgDown}
+\endinput
+%%
+%% End of file `lwarp-keystroke.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-keystroke.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts-otf.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts-otf.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts-otf.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,76 @@
+%%
+%% This is file `lwarp-kpfonts-otf.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `kpfonts-otf')
+%% 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{kpfonts-otf}[2020/06/20]
+
+\LWR at infoprocessingmathjax{kpfonts-otf}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-nonunicode}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+\ifkp at calasscr
+    \CustomizeMathJax{\let\mathscr\mathcal}
+\else
+    \CustomizeMathJax{\let\mathcal\mathscr}
+\fi
+
+\ifkp at frenchstyle
+    \LWR at mathjax@addgreek at l@up{}{}
+    \LWR at mathjax@addgreek at u@up*{}{}
+\fi
+
+\ifkp at oldReIm
+    \CustomizeMathJax{\renewcommand{\Re}{\mathfrak{Re}}}
+    \CustomizeMathJax{\renewcommand{\Im}{\mathfrak{Im}}}
+\else
+\fi
+
+\ifkp at Dcommand
+    \CustomizeMathJax{
+        \def\D#1{\mathclose{\,\mathrm{d}}#1}
+    }
+\fi
+
+\CustomizeMathJax{\let\varint\int}
+\CustomizeMathJax{\let\variint\iint}
+\CustomizeMathJax{\let\variiint\iiint}
+\CustomizeMathJax{\let\variiiint\iiiint}
+\CustomizeMathJax{\let\varidotsint\idotsint}
+
+\CustomizeMathJax{\newcommand{\varointctrclockwise}{\mathop{\unicode{x2939}\!\!\unicode{x0222E}}}}
+\CustomizeMathJax{\newcommand{\oiintclockwise}{\mathop{\unicode{x0222F}\!\!\unicode{x2938}}}}
+\CustomizeMathJax{\newcommand{\oiintctrclockwise}{\mathop{\unicode{x2939}\!\!\unicode{x0222F}}}}
+\CustomizeMathJax{\newcommand{\varoiintclockwise}{\mathop{\unicode{x0222F}\!\!\unicode{x2938}}}}
+\CustomizeMathJax{\newcommand{\varoiintctrclockwise}{\mathop{\unicode{x2939}\!\!\unicode{x0222F}}}}
+\CustomizeMathJax{\newcommand{\oiiintclockwise}{\mathop{\unicode{x02230}\!\!\unicode{x2938}}}}
+\CustomizeMathJax{\newcommand{\oiiintctrclockwise}{\mathop{\unicode{x2939}\!\!\unicode{x02230}}}}
+\CustomizeMathJax{\newcommand{\varoiiintclockwise}{\mathop{\unicode{x02230}\!\!\unicode{x2938}}}}
+\CustomizeMathJax{\newcommand{\varoiiintctrclockwise}{\mathop{\unicode{x2939}\!\!\unicode{x02230}}}}
+\CustomizeMathJax{\newcommand{\sqiint}{\mathop{\unicode{x2A16}\!\!\unicode{x2A16}}}}
+\CustomizeMathJax{\newcommand{\sqiiint}{\mathop{\unicode{x2A16}\!\!\unicode{x2A16}\!\!\unicode{x2A16}}}}
+
+\CustomizeMathJax{\let\widearc\overparen}
+\CustomizeMathJax{\let\widearcarrow\overrightarrow}
+\CustomizeMathJax{\let\overrightarc\overrightarrow}
+
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-kpfonts-otf.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts-otf.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,87 @@
+%%
+%% This is file `lwarp-kpfonts.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `kpfonts')
+%% 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{kpfonts}[2010/08/20]
+
+\LWR at infoprocessingmathjax{kpfonts}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-newpxtxmath}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+\ifkp at calasscr
+    \CustomizeMathJax{\let\LWRorigmathscr\mathscr}
+    \CustomizeMathJax{\let\LWRorigmathcal\mathcal}
+    \CustomizeMathJax{\let\mathscr\LWRorigmathcal}
+    \CustomizeMathJax{\let\mathcal\LWRorigmathscr}
+\fi
+
+\ifkp at upgrk % lowercase
+    \LWR at mathjax@addgreek at l@up{}{}
+    \LWR at mathjax@addgreek at l@it{other}{}
+\else
+    \LWR at mathjax@addgreek at l@up{other}{}
+\fi
+
+\ifkp at slGrk
+    \LWR at mathjax@addgreek at u@it*{}{}
+    \LWR at mathjax@addgreek at u@up*{other}{}
+    \LWR at mathjax@addgreek at u@up*{var}{}
+\else
+    \LWR at mathjax@addgreek at u@it*{other}{}
+    \LWR at mathjax@addgreek at u@it*{var}{}
+\fi
+
+\LWR at mathjax@addgreek at u@up*{}{up}
+\LWR at mathjax@addgreek at l@up{}{up}
+
+\LWR at mathjax@addgreek at u@it*{}{sl}
+\LWR at mathjax@addgreek at l@it{}{sl}
+
+\CustomizeMathJax{\newcommand{\partialsl}{\mathord{\unicode{x1D715}}}}
+\CustomizeMathJax{\let\partialup\uppartial}% not upright
+
+\ifkp at oldReIm
+\else
+    \CustomizeMathJax{\renewcommand{\Re}{\mathfrak{Re}}}
+    \CustomizeMathJax{\renewcommand{\Im}{\mathfrak{Im}}}
+\fi
+
+\ifkp at Dcommand
+    \ifkp at upRm%
+        \CustomizeMathJax{
+            \def\D#1{\mathclose{\,\mathrm{d}}#1}
+        }
+    \else
+        \CustomizeMathJax{
+            \def\D#1{\mathclose{\,\mathit{d}}#1}
+        }
+    \fi
+\fi
+
+\CustomizeMathJax{\let\pounds\mathsterling}
+\CustomizeMathJax{\let\kppounds\mathsterling}
+
+\CustomizeMathJax{\newcommand{\mathup}[1]{\mathrm{#1}}}% never sans
+\CustomizeMathJax{\let\mathupright\mathup}
+
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-kpfonts.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-lettrine.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-lettrine.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-lettrine.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -17,7 +17,7 @@
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackageDrop{lettrine}[2018-08-28]
 \DeclareDocumentCommand{\lettrine}{o m m}{%
-\InlineClass{lettrine}{#2}\InlineClass{lettrinetext}{#3} % extra space
+    \InlineClass{lettrine}{#2}\InlineClass{lettrinetext}{#3} % extra space
 }
 
 \newcounter{DefaultLines}

Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-libertinust1math.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-libertinust1math.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-libertinust1math.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,334 @@
+%%
+%% This is file `lwarp-libertinust1math.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `libertinust1math')
+%% 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{libertinust1math}[2020/06/10]
+
+\LWR at infoprocessingmathjax{libertinust1math}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+\iflibus at slantedG
+    \LWR at mathjax@addgreek at u@it*{}{}
+\else
+    \LWR at mathjax@addgreek at u@up*{}{}
+\fi
+
+\LWR at mathjax@addgreek at u@it*{}{it}
+\LWR at mathjax@addgreek at u@up*{up}{}
+\LWR at mathjax@addgreek at u@up*{}{up}
+
+\iflibus at frenchm
+    \LWR at mathjax@addgreek at l@up{}{}
+\else
+    \LWR at mathjax@addgreek at l@it{}{}
+\fi
+
+\LWR at mathjax@addgreek at l@it{}{it}
+\LWR at mathjax@addgreek at l@up{}{up}
+\LWR at mathjax@addgreek at l@up{up}{}
+
+\CustomizeMathJax{\let\uppartial\partial}% not upright
+\CustomizeMathJax{\let\mathsfbf\mathbf}% not sans
+
+\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\dlb\lBrack}
+\CustomizeMathJax{\let\drb\rBrack}
+
+\CustomizeMathJax{\let\sqrtsign\sqrt}
+
+\CustomizeMathJax{\let\smallintsl\smallint}
+\CustomizeMathJax{\newcommand{\smalliintsl}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiintsl}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiiintsl}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\newcommand{\smallointsl}{\mathop{\unicode{x222E}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiintsl}{\mathop{\unicode{x222F}}\limits}}
+
+\CustomizeMathJax{\let\smallintup\smallint}
+\CustomizeMathJax{\newcommand{\smalliintup}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiintup}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiiintup}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\newcommand{\smallointup}{\mathop{\unicode{x222E}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiintup}{\mathop{\unicode{x222F}}\limits}}
+
+\CustomizeMathJax{\let\intslop\int}
+\CustomizeMathJax{\newcommand{\iintslop}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintslop}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\iiiintslop}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\let\ointslop\oint}
+\CustomizeMathJax{\newcommand{\oiintslop}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiintslop}{\mathop{\unicode{x2230}}\limits}}
+
+\CustomizeMathJax{\let\intupop\int}
+\CustomizeMathJax{\newcommand{\iintupop}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintupop}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\iiiintupop}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\let\ointupop\oint}
+\CustomizeMathJax{\newcommand{\oiintupop}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiintupop}{\mathop{\unicode{x2230}}\limits}}
+
+\CustomizeMathJax{\newcommand{\smalliint}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiint}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiiint}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloint}{\mathop{\unicode{x222E}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiint}{\mathop{\unicode{x222F}}\limits}}
+
+\CustomizeMathJax{\let\intop\int}
+\CustomizeMathJax{\newcommand{\iintop}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintop}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\iiiintop}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\let\ointop\oint}
+\CustomizeMathJax{\newcommand{\oiintop}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiintop}{\mathop{\unicode{x2230}}\limits}}
+
+\CustomizeMathJax{\newcommand{\oiint}{\mathop{\unicode{x222F}}\limits}}
+
+\CustomizeMathJax{\newcommand{\bigcupdot}{\mathop{\unicode{x2A03}}}}
+\CustomizeMathJax{\newcommand{\bigsqcap}{\mathop{\unicode{x2A05}}}}
+\CustomizeMathJax{\newcommand{\xsol}{\mathop{\unicode{x29F8}}}}
+\CustomizeMathJax{\newcommand{\xbsol}{\mathop{\unicode{x29F9}}}}
+\CustomizeMathJax{\let\prodop\prod}
+\CustomizeMathJax{\let\coprodop\coprod}
+\CustomizeMathJax{\let\sumop\sum}
+\CustomizeMathJax{\let\bigwedgeop\bigwedge}
+\CustomizeMathJax{\let\bigveeop\bigvee}
+\CustomizeMathJax{\let\bigcapop\bigcap}
+\CustomizeMathJax{\let\bigcupop\bigcup}
+\CustomizeMathJax{\let\xsolop\xsol}
+\CustomizeMathJax{\let\xbsolop\xbsol}
+\CustomizeMathJax{\let\bigodotop\bigodot}
+\CustomizeMathJax{\let\bigoplusop\bigoplus}
+\CustomizeMathJax{\let\bigotimesop\bigotimes}
+\CustomizeMathJax{\let\bigcupdotop\bigcupdot}
+\CustomizeMathJax{\let\biguplusop\biguplus}
+\CustomizeMathJax{\let\bigsqcapop\bigsqcap}
+\CustomizeMathJax{\let\bigsqcupop\bigsqcup}
+
+\CustomizeMathJax{\newcommand{\ovhook}[1]{\mathord{#1\unicode{x00309}}}}
+\CustomizeMathJax{\newcommand{\candra}[1]{\mathord{#1\unicode{x00310}}}}
+\CustomizeMathJax{\newcommand{\oturnedcomma}[1]{\mathord{#1\unicode{x00312}}}}
+\CustomizeMathJax{\newcommand{\ocommatopright}[1]{\mathord{#1\unicode{x00315}}}}
+\CustomizeMathJax{\newcommand{\droang}[1]{\mathord{#1\unicode{x0031A}}}}
+\CustomizeMathJax{\newcommand{\leftharpoonaccent}[1]{\mathord{#1\unicode{x020D0}}}}
+\CustomizeMathJax{\newcommand{\rightharpoonaccent}[1]{\mathord{#1\unicode{x020D1}}}}
+\CustomizeMathJax{\newcommand{\leftarrowaccent}[1]{\mathord{#1\unicode{x020D0}}}}
+\CustomizeMathJax{\let\rightarrowaccent\vec}
+
+\CustomizeMathJax{\newcommand{\leftrightarrowaccent}[1]{\mathord{#1\unicode{x020E1}}}}
+\CustomizeMathJax{\newcommand{\annuity}[1]{\mathord{#1\unicode{x020E7}}}}
+\CustomizeMathJax{\newcommand{\widebridgeabove}[1]{\mathord{#1\unicode{x020E9}}}}
+\CustomizeMathJax{\newcommand{\asteraccent}[1]{\mathord{#1\unicode{x020F0}}}}
+
+\CustomizeMathJax{\newcommand{\braceld}{}}
+\CustomizeMathJax{\newcommand{\bracerd}{}}
+\CustomizeMathJax{\newcommand{\bracelu}{}}
+\CustomizeMathJax{\newcommand{\braceru}{}}
+\CustomizeMathJax{\newcommand{\braceex}{}}
+\CustomizeMathJax{\newcommand{\bracemu}{}}
+\CustomizeMathJax{\newcommand{\bracemd}{}}
+\CustomizeMathJax{\newcommand{\parenld}{}}
+\CustomizeMathJax{\newcommand{\parenrd}{}}
+\CustomizeMathJax{\newcommand{\parenlu}{}}
+\CustomizeMathJax{\newcommand{\parenru}{}}
+\CustomizeMathJax{\newcommand{\bracketld}{}}
+\CustomizeMathJax{\newcommand{\bracketrd}{}}
+\CustomizeMathJax{\newcommand{\bracketlu}{}}
+\CustomizeMathJax{\newcommand{\bracketru}{}}
+\CustomizeMathJax{\newcommand{\bracketex}{}}
+\CustomizeMathJax{\newcommand{\parenex}{}}
+
+\CustomizeMathJax{\newcommand{lhook}{~}}
+\CustomizeMathJax{\newcommand{rhook}{~}}
+\CustomizeMathJax{\newcommand{relbar}{-}}
+\CustomizeMathJax{\newcommand{Relbar}{=}}
+
+\CustomizeMathJax{\newcommand{\mapstochar}{\mathrel{\unicode{x21A6}}}}
+
+\CustomizeMathJax{\newcommand{\Zbar}{\mathord{\unicode{x0001B5}}}}
+\CustomizeMathJax{\newcommand{\notchar}{\mathrel{\unicode{x000AC}}}}
+\CustomizeMathJax{\newcommand{\upbackepsilon}{\mathord{\unicode{x03F6}}}}
+\CustomizeMathJax{\newcommand{\smblkcircle}{\mathbin{\unicode{x02022}}}}
+\CustomizeMathJax{\newcommand{\enleadertwodots}{\mathord{\unicode{x02025}}}}
+\CustomizeMathJax{\newcommand{\unicodeellipsis}{\mathord{\unicode{x02026}}}}
+\CustomizeMathJax{\newcommand{\mathellipsis}{\mathinner{\unicode{x02026}}}}
+\CustomizeMathJax{\newcommand{\dprime}{\mathord{\unicode{x02033}}}}
+\CustomizeMathJax{\newcommand{\trprime}{\mathord{\unicode{x02034}}}}
+\CustomizeMathJax{\newcommand{\backdprime}{\mathord{\unicode{x02036}}}}
+\CustomizeMathJax{\newcommand{\backtrprime}{\mathord{\unicode{x02037}}}}
+\CustomizeMathJax{\newcommand{\caretinsert}{\mathord{\unicode{x02038}}}}
+\CustomizeMathJax{\newcommand{\Exclam}{\mathord{\unicode{x0203C}}}}
+
+\CustomizeMathJax{\newcommand{\hyphenbullet}{\mathord{\unicode{x02043}}}}
+\CustomizeMathJax{\newcommand{\fracslash}{\mathbin{\unicode{x02044}}}}
+\CustomizeMathJax{\newcommand{\Question}{\mathord{\unicode{x02047}}}}
+\CustomizeMathJax{\newcommand{\closure}{\mathrel{\unicode{x02050}}}}
+\CustomizeMathJax{\newcommand{\qprime}{\mathord{\unicode{x02057}}}}
+\CustomizeMathJax{\newcommand{\vertoverlay}{\mathrel{\unicode{x020D2}}}}
+\CustomizeMathJax{\newcommand{\enclosecircle}{\mathord{\unicode{x020DD}}}}
+\CustomizeMathJax{\newcommand{\enclosesquare}{\mathord{\unicode{x020DE}}}}
+\CustomizeMathJax{\newcommand{\enclosetriangle}{\mathord{\unicode{x020E4}}}}
+\CustomizeMathJax{\newcommand{\Eulerconst}{\mathord{\unicode{x02107}}}}
+\CustomizeMathJax{\newcommand{\turnediota}{\mathord{\unicode{x02129}}}}
+\CustomizeMathJax{\newcommand{\Angstrom}{\mathord{\unicode{x0212B}}}}
+
+\CustomizeMathJax{\newcommand{\sansLturned}{\mathord{\unicode{x02142}}}}
+\CustomizeMathJax{\newcommand{\sansLmirrored}{\mathord{\unicode{x02143}}}}
+\CustomizeMathJax{\newcommand{\Yup}{\mathord{\unicode{x02144}}}}
+\CustomizeMathJax{\newcommand{\upand}{\mathbin{\unicode{x0214B}}}}
+\CustomizeMathJax{\newcommand{\increment}{\mathord{\unicode{x02206}}}}
+\CustomizeMathJax{\newcommand{\smallin}{\mathrel{\unicode{x0220A}}}}
+\CustomizeMathJax{\newcommand{\nni}{\mathrel{\unicode{x0220C}}}}
+
+\CustomizeMathJax{\newcommand{\smallni}{\mathrel{\unicode{x0220D}}}}
+\CustomizeMathJax{\newcommand{\QED}{\mathord{\unicode{x0220E}}}}
+\CustomizeMathJax{\newcommand{\vysmwhtcircle}{\mathbin{\unicode{x02218}}}}
+\CustomizeMathJax{\newcommand{\vysmblkcircle}{\mathbin{\unicode{x02219}}}}
+\CustomizeMathJax{\newcommand{\rightangle}{\mathord{\unicode{x0221F}}}}
+
+\CustomizeMathJax{\newcommand{\Colon}{\mathrel{\unicode{x02237}}}}
+\CustomizeMathJax{\newcommand{\dotminus}{\mathbin{\unicode{x02238}}}}
+\CustomizeMathJax{\newcommand{\dashcolon}{\mathrel{\unicode{x02239}}}}
+\CustomizeMathJax{\newcommand{\dotsminusdots}{\mathrel{\unicode{x0223A}}}}
+\CustomizeMathJax{\newcommand{\kernelcontraction}{\mathrel{\unicode{x0223B}}}}
+\CustomizeMathJax{\newcommand{\invlazys}{\mathbin{\unicode{x0223E}}}}
+
+\CustomizeMathJax{\newcommand{\sinewave}{\mathord{\unicode{x0223F}}}}
+\CustomizeMathJax{\newcommand{\nsime}{\mathrel{\unicode{x02244}}}}
+\CustomizeMathJax{\newcommand{\simneqq}{\mathrel{\unicode{x02246}}}}
+\CustomizeMathJax{\newcommand{\napprox}{\mathrel{\unicode{x02249}}}}
+\CustomizeMathJax{\newcommand{\approxident}{\mathrel{\unicode{x0224B}}}}
+\CustomizeMathJax{\newcommand{\backcong}{\mathrel{\unicode{x0224C}}}}
+
+\CustomizeMathJax{\newcommand{\nasymp}{\mathrel{\unicode{x0226D}}}}
+\CustomizeMathJax{\newcommand{\nlesssim}{\mathrel{\unicode{x02274}}}}
+\CustomizeMathJax{\newcommand{\ngtrsim}{\mathrel{\unicode{x02275}}}}
+\CustomizeMathJax{\newcommand{\nlessgtr}{\mathrel{\unicode{x02278}}}}
+\CustomizeMathJax{\newcommand{\ngtrless}{\mathrel{\unicode{x02279}}}}
+
+\CustomizeMathJax{\newcommand{\nsubset}{\mathrel{\unicode{x02284}}}}
+\CustomizeMathJax{\newcommand{\nsupset}{\mathrel{\unicode{x02285}}}}
+
+\CustomizeMathJax{\newcommand{\cupleftarrow}{\mathbin{\unicode{x0228C}}}}
+\CustomizeMathJax{\newcommand{\cupdot}{\mathbin{\unicode{x0228D}}}}
+\CustomizeMathJax{\newcommand{\circledequal}{\mathbin{\unicode{x0229C}}}}
+
+\CustomizeMathJax{\newcommand{\assert}{\mathrel{\unicode{x022A6}}}}
+\CustomizeMathJax{\newcommand{\VDash}{\mathrel{\unicode{x022AB}}}}
+\CustomizeMathJax{\newcommand{\prurel}{\mathrel{\unicode{x022B0}}}}
+
+\CustomizeMathJax{\newcommand{\origof}{\mathrel{\unicode{x022B6}}}}
+\CustomizeMathJax{\newcommand{\smallprod}{\mathop{\unicode{x0220F}}}}% not small
+\CustomizeMathJax{\newcommand{\smallcoprod}{\mathop{\unicode{x02210}}}}% not small
+\CustomizeMathJax{\newcommand{\smallsum}{\mathop{\unicode{x02211}}}}% not small
+\CustomizeMathJax{\newcommand{\Hfraktur}{\mathord{\unicode{x1D525}}}}
+\CustomizeMathJax{\newcommand{\dsol}{\mathbin{\unicode{x029F6}}}}
+\CustomizeMathJax{\newcommand{\rsolbar}{\mathbin{\unicode{x029F7}}}}
+
+\CustomizeMathJax{\newcommand{\eqless}{\mathrel{\unicode{x022DC}}}}
+\CustomizeMathJax{\newcommand{\eqgtr}{\mathrel{\unicode{x022DD}}}}
+\CustomizeMathJax{\newcommand{\npreccurlyeq}{\mathrel{\unicode{x022E0}}}}
+\CustomizeMathJax{\newcommand{\nsucccurlyeq}{\mathrel{\unicode{x022E1}}}}
+\CustomizeMathJax{\newcommand{\nsqsubseteq}{\mathrel{\unicode{x022E2}}}}
+\CustomizeMathJax{\newcommand{\nsqsupseteq}{\mathrel{\unicode{x022E3}}}}
+\CustomizeMathJax{\newcommand{\sqsubsetneq}{\mathrel{\unicode{x022E4}}}}
+\CustomizeMathJax{\newcommand{\sqsupsetneq}{\mathrel{\unicode{x022E5}}}}
+\CustomizeMathJax{\newcommand{\nvartriangleleft}{\mathrel{\unicode{x022EA}}}}
+\CustomizeMathJax{\newcommand{\nvartriangleright}{\mathrel{\unicode{x022EB}}}}
+
+\CustomizeMathJax{\newcommand{\vdotsmath}{\mathrel{\unicode{x022EE}}}}
+\CustomizeMathJax{\newcommand{\unicodecdots}{\mathord{\unicode{x022EF}}}}
+\CustomizeMathJax{\newcommand{\adots}{\mathrel{\unicode{x022F0}}}}
+\CustomizeMathJax{\newcommand{\succneq}{\mathrel{\unicode{x02AB2}}}}
+\CustomizeMathJax{\newcommand{\preceqq}{\mathrel{\unicode{x02AB3}}}}
+\CustomizeMathJax{\newcommand{\succeqq}{\mathrel{\unicode{x02AB4}}}}
+\CustomizeMathJax{\newcommand{\precneq}{\mathrel{\unicode{x02AB1}}}}
+
+\CustomizeMathJax{\newcommand{\mapsfrom}{\mathrel{\unicode{x021A4}}}}
+
+\CustomizeMathJax{\newcommand{\longmapsfrom}{\mathrel{\unicode{x027FB}}}}
+
+\CustomizeMathJax{\newcommand{\diameter}{\mathord{\unicode{x02300}}}}
+\CustomizeMathJax{\newcommand{\coloneq}{\mathrel{\unicode{x02254}}}}
+\CustomizeMathJax{\newcommand{\eqcolon}{\mathrel{\unicode{x02255}}}}
+\CustomizeMathJax{\newcommand{\arceq}{\mathrel{\unicode{x02258}}}}
+\CustomizeMathJax{\newcommand{\wedgeq}{\mathrel{\unicode{x02259}}}}
+\CustomizeMathJax{\newcommand{\veeeq}{\mathrel{\unicode{x0225A}}}}
+
+\CustomizeMathJax{\newcommand{\stareq}{\mathrel{\unicode{x0225B}}}}
+\CustomizeMathJax{\newcommand{\eqdef}{\mathrel{\unicode{x0225D}}}}
+\CustomizeMathJax{\newcommand{\measeq}{\mathrel{\unicode{x0225E}}}}
+\CustomizeMathJax{\newcommand{\questeq}{\mathrel{\unicode{x0225F}}}}
+\CustomizeMathJax{\newcommand{\nequiv}{\mathrel{\unicode{x02262}}}}
+\CustomizeMathJax{\newcommand{\Equiv}{\mathrel{\unicode{x02263}}}}
+
+\CustomizeMathJax{\newcommand{\house}{\mathord{\unicode{x02302}}}}
+
+\CustomizeMathJax{\newcommand{\musicalnote}{\mathord{\unicode{x0266A}}}}
+\CustomizeMathJax{\newcommand{\degree}{\mathord{\unicode{x000B0}}}}
+\CustomizeMathJax{\newcommand{\mathsection}{\mathord{\unicode{x000A7}}}}
+\CustomizeMathJax{\newcommand{\mathparagraph}{\mathord{\unicode{x000B6}}}}
+\CustomizeMathJax{\newcommand{\checkmarkmath}{\mathord{\unicode{x02713}}}}
+\CustomizeMathJax{\newcommand{\invnot}{\mathord{\unicode{x02310}}}}
+
+\CustomizeMathJax{\newcommand{\mathvisiblespace}{\mathord{\unicode{x02423}}}}
+\CustomizeMathJax{\newcommand{\mdlgblksquare}{\mathord{\unicode{x025A0}}}}
+\CustomizeMathJax{\newcommand{\mdlgwhtsquare}{\mathord{\unicode{x025A1}}}}
+
+\CustomizeMathJax{\newcommand{\bigblacktriangleup}{\mathord{\unicode{x025B2}}}}
+\CustomizeMathJax{\newcommand{\varbigtriangleup}{\mathord{\unicode{x025B3}}}}
+
+\CustomizeMathJax{\newcommand{\bigblacktriangledown}{\mathord{\unicode{x025BC}}}}
+\CustomizeMathJax{\newcommand{\varbigtriangledown}{\mathord{\unicode{x025BD}}}}
+\CustomizeMathJax{\newcommand{\Longmapsfrom}{\mathrel{\unicode{x027FD}}}}
+
+\CustomizeMathJax{\newcommand{\mdlgblkdiamond}{\mathord{\unicode{x025C6}}}}
+
+\CustomizeMathJax{\newcommand{\mdlgwhtdiamond}{\mathord{\unicode{x025C7}}}}
+\CustomizeMathJax{\newcommand{\Longmapsto}{\mathrel{\unicode{x027FE}}}}
+\CustomizeMathJax{\newcommand{\fisheye}{\mathord{\unicode{x025C9}}}}
+\CustomizeMathJax{\newcommand{\mdlgwhtlozenge}{\mathord{\unicode{x025CA}}}}
+\CustomizeMathJax{\newcommand{\mdlgwhtcircle}{\mathbin{\unicode{x025CB}}}}
+\CustomizeMathJax{\newcommand{\bullseye}{\mathord{\unicode{x025CE}}}}
+\CustomizeMathJax{\newcommand{\mdlgblkcircle}{\mathord{\unicode{x025CF}}}}
+
+\CustomizeMathJax{\newcommand{\Nwarrow}{\mathrel{\unicode{x021D6}}}}
+\CustomizeMathJax{\newcommand{\Nearrow}{\mathrel{\unicode{x021D7}}}}
+\CustomizeMathJax{\newcommand{\Searrow}{\mathrel{\unicode{x021D8}}}}
+\CustomizeMathJax{\newcommand{\Swarrow}{\mathrel{\unicode{x021D9}}}}
+
+\CustomizeMathJax{\newcommand{\Mapsfrom}{\mathord{\unicode{x02906}}}}
+\CustomizeMathJax{\newcommand{\smwhtcircle}{\mathord{\unicode{x025E6}}}}
+\CustomizeMathJax{\newcommand{\smwhtdiamond}{\mathbin{\unicode{x022C4}}}}
+\CustomizeMathJax{\newcommand{\Mapsto}{\mathord{\unicode{x02907}}}}
+
+\CustomizeMathJax{\let\ngets\nleftarrow}
+\CustomizeMathJax{\let\nsimeq\nsime}
+\CustomizeMathJax{\let\nle\nleq}
+\CustomizeMathJax{\let\nge\ngeq}
+
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-libertinust1math.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-libertinust1math.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-lineno.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-lineno.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-lineno.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -72,7 +72,7 @@
 
 \newcommand\internallinenumbers{}
 \let\endinternallinenumbers\endlinenumbers
-\@namedef{internallinenumbers*}{\internallinenumbers*}
+\@namedef{internallinenumbers*}{\internallinenumbers}
 \expandafter\let\csname endinternallinenumbers*\endcsname\endlinenumbers
 
 \newcommand*{\linenoplaceholder}[1]{% redefine per language

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -17,7 +17,6 @@
 %% version 2005/12/01 or later.
 
 
-\begin{warpHTML}
 \LWR at ProvidesPackagePass{listings}[2018/09/02]
 
 \lst at column@flexible
@@ -33,11 +32,15 @@
             ,literate=%
             {<}{\HTMLentity{lt}}{4}%
             {>}{\HTMLentity{gt}}{4}%
-            {\&}{\HTMLentity{amp}}{5}%
+            {'}{\HTMLentity{apos}}{6}%
+            {`}{\HTMLentity{grave}}{7}%
         }%
 }
 \renewcommand{\lst at Init}[1]{%
 \LWR at traceinfo{lst at Init}%
+\lst at ifdisplaystyle%
+    \LWR at forcenewpage%
+\fi%
 \renewcommand*{\@captype}{lstlisting}%
 \let\lst at aboveskip\z@\let\lst at belowskip\z@%
 \gdef\lst at boxpos{t}%
@@ -52,27 +55,30 @@
 \def\lst at framelr{}%
 \LWR at traceinfo{finished origlst at Init}%
 \lst at ifdisplaystyle%
-\LWR at traceinfo{About to create verbatim.}%
-\let\lsthk at EveryPar\relax%
-\LWR at forcenewpage
-\LWR at atbeginverbatim{2}{programlisting}%
+    \LWR at traceinfo{About to create verbatim.}%
+    \let\lsthk at EveryPar\relax%
+    \LWR at atbeginverbatim{programlisting}%
 
-\let\lsthk at EveryPar\LWR at origlsthkEveryPar%
+    \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}%
 }
 
 \renewcommand*{\lst at DeInit}{%
 \lst at ifdisplaystyle%
-\let\lsthk at EveryPar\relax%
-\LWR at afterendverbatim{0}%
-\let\lsthk at EveryPar\LWR at origlsthkEveryPar%
+    \let\lsthk at EveryPar\relax%
+    \LWR at afterendverbatim%
+    \let\lsthk at EveryPar\LWR at origlsthkEveryPar%
 \else%
-\ifbool{LWR at verbtags}{\noindent\LWR at htmltag{/span}}{}%
+    \ifbool{LWR at verbtags}{\noindent\LWR at htmltag{/span}}{}%
 \fi%
 \LWR at origlst@DeInit%
 }
+
 \def\lst at MakeCaption#1{%
 \LWR at traceinfo{MAKING CAPTION at #1}%
   \lst at ifdisplaystyle
@@ -88,10 +94,13 @@
         \lst at ifnolol\else
             \ifx\lst@@caption\@empty
                 \ifx\lst at caption\@empty
-                    \ifx\lst at intname\@empty \else \def\lst at temp{ }%
-                    \ifx\lst at intname\lst at temp \else
+                    \ifx\lst at intname\@empty
+                    \else
+                        \def\lst at temp{ }%
+                        \ifx\lst at intname\lst at temp \else
 \LWR at traceinfo{addcontents lst at name: -\lst at name-}%
-                    \fi\fi
+                        \fi
+                    \fi
                 \fi
             \else
 \LWR at traceinfo{addcontents lst@@caption: -\lst@@caption-}%
@@ -111,9 +120,9 @@
                   \lst at makecaption\fnum at lstlisting{\ignorespaces \lst at caption}
              \else
 \LWR at traceinfo{Making title: \lst at title}%
-\begin{BlockClass}{lstlistingtitle}% lwarp
-\lst at maketitle\lst at title% lwarp
-\end{BlockClass}% lwarp
+\begin{BlockClass}{lstlistingtitle}%    lwarp
+\lst at maketitle\lst at title%               lwarp
+\end{BlockClass}%                       lwarp
              \fi
 \LWR at traceinfo{About to assign label: !\lst at label!}%
         \ifx\lst at label\@empty\else
@@ -131,6 +140,11 @@
   \fi
 \LWR at traceinfo{DONE WITH CAPTION at #1}%
 }
+
+\renewcommand{\lst at maketitle}[1]{%
+    \LWR at isolate{#1}%
+}%
+
 \lst at Key{numbers}{none}{%
     \let\lst at PlaceNumber\@empty
     \lstKV at SwitchCases{#1}%
@@ -143,8 +157,6 @@
                 \kern 6in \kern\lst at numbersep
                 \lst at numberstyle{\thelstnumber}}}%
     }{\PackageError{lwarp-listings}{Numbers #1 unknown}\@ehc}}
-\end{warpHTML}
-
 \endinput
 %%
 %% End of file `lwarp-listings.sty'.

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-longtable.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-longtable.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-longtable.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -23,10 +23,14 @@
 \boolfalse{LWR at longtable@havehead}
 \newenvironment{longtable*}[2][]{%
     \LWR at floatbegin{table}%
-    \setcaptiontype{\LTcaptype}%
-    \caption at setoptions{longtable}%
-    \caption at setoptions{@longtable}%
-    \caption at LT@setup%
+    \ifdef{\setcaptiontype}{% caption package:
+        \setcaptiontype{\LTcaptype}%
+        \caption at setoptions{longtable}%
+        \caption at setoptions{@longtable}%
+        \caption at LT@setup%
+    }{% w/o caption package:
+        \renewcommand*{\@captype}{\LTcaptype}%
+    }%
     \booltrue{LWR at starredlongtable}%
     \boolfalse{LWR at longtable@havehead}%
     \let\captionlistentry\LWR at LTcaptionlistentry%
@@ -36,10 +40,14 @@
 
 \newenvironment{longtable}[2][]{%
     \LWR at floatbegin{table}%
-    \setcaptiontype{\LTcaptype}%
-    \caption at setoptions{longtable}%
-    \caption at setoptions{@longtable}%
-    \caption at LT@setup%
+    \ifdef{\setcaptiontype}{% caption package:
+        \setcaptiontype{\LTcaptype}%
+        \caption at setoptions{longtable}%
+        \caption at setoptions{@longtable}%
+        \caption at LT@setup%
+    }{% w/o caption package:
+        \renewcommand*{\@captype}{\LTcaptype}%
+    }%
     \refstepcounter{\LTcaptype}%
     \boolfalse{LWR at longtable@havehead}%
     \let\captionlistentry\LWR at LTcaptionlistentry%
@@ -49,7 +57,7 @@
 
 \newcounter{LTchunksize}
 \newcommand*{\LWR at longtable@headerror}{%
-    \PackageError{lwarp}
+    \PackageError{lwarp-longtable}
     {For longtable:\MessageBreak
     1: Keep either one of an \protect\endhead\space or
         \protect\endfirsthead\space\MessageBreak

Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-lpic.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-lpic.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-lpic.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -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: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-lpic.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-luatodonotes.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-luatodonotes.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-luatodonotes.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -26,7 +26,7 @@
 \let\LWRTODONOTES at orig@todototoc\todototoc
 
 \renewcommand*{\todototoc}{%
-\phantomsection%
+\LWR at phantomsection%
 \LWRTODONOTES at orig@todototoc%
 }
 

Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-luavlna.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-luavlna.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-luavlna.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -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: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-luavlna.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-lyluatex.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-lyluatex.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-lyluatex.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -23,7 +23,7 @@
 
 \renewcommand*{\ly at compilescore}[1]{%
     \begingroup%
-    \LWR at orignewpage%
+    \LWR at maybe@orignewpage%
     \LWR at origloadgeometry{LWR at usergeometry}%
     \LWR at print@normalsize%
     \renewcommand{\includegraphics}[2][]{%
@@ -53,7 +53,7 @@
             tex.print{[[\string\end{BlockClass}]]}
         end
     }%
-    \LWR at orignewpage%
+    \LWR at maybe@orignewpage%
     \LWR at origrestoregeometry%
     \endgroup%
 }

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-makeidx.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-makeidx.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-makeidx.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -17,7 +17,7 @@
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackagePass{makeidx}[2014/09/29]
 \preto\printindex{%
-    \LWR at orignewpage%
+    \LWR at maybe@orignewpage%
     \LWR at startpars%
 }
 \endinput

Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathalpha.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathalpha.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathalpha.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,28 @@
+%%
+%% This is file `lwarp-mathalpha.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `mathalpha')
+%% 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{mathalpha}[2019/10/05]
+
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\mathbbb}[1]{\boldsymbol{\mathbb{#1}}}}% not bold
+\CustomizeMathJax{\newcommand{\mathbcal}[1]{\boldsymbol{\mathcal{#1}}}}
+\CustomizeMathJax{\newcommand{\mathbfrak}[1]{\boldsymbol{\mathfrak{#1}}}}
+\CustomizeMathJax{\newcommand{\mathbscr}[1]{\boldsymbol{\mathscr{#1}}}}% not bold
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-mathalpha.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathalpha.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathastext.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathastext.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathastext.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,62 @@
+%%
+%% This is file `lwarp-mathastext.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `mathastext')
+%% 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{mathastext}[2019/11/16]
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+\ifmst at itgreek
+\else
+    \ifmst at upgreek
+        \LWR at mathjax@addgreek at l@up{}{}
+    \else
+        \ifmst at frenchmath
+            \LWR at mathjax@addgreek at l@up{}{}
+        \else
+            \ifmst at italic
+            \else
+                \LWR at mathjax@addgreek at l@up{}{}
+            \fi
+        \fi
+    \fi
+\fi
+
+\ifcase\mst at greek@select
+    \or{\LWR at mathjax@addgreek at u@it*{}{}}
+\fi
+
+\CustomizeMathJax{\newcommand{\mathnormalbold}[1]{\boldsymbol{#1}}}
+\CustomizeMathJax{\newcommand{\MathEulerBold}[1]{\boldsymbol{#1}}}
+\CustomizeMathJax{\newcommand{\MathEuler}[1]{{#1}}}
+\CustomizeMathJax{\newcommand{\MathPSymbol}[1]{{#1}}}
+\CustomizeMathJax{\let\fouriervec\vec}
+\CustomizeMathJax{\let\pmvec\vec}
+\CustomizeMathJax{\let\inodot\imath}
+\CustomizeMathJax{\let\jnodot\jmath}
+\CustomizeMathJax{\let\shortiff\iff}
+\CustomizeMathJax{\let\longto\longrightarrow}
+\CustomizeMathJax{\newcommand{\inftypsy}{\mathord{\unicode{x221E}}}}
+\CustomizeMathJax{\newcommand{\proptopsy}{\mathrel{\unicode{x221D}}}}
+\CustomizeMathJax{\let\prodpsy\prod}
+\CustomizeMathJax{\let\sumpsy\sum}
+\CustomizeMathJax{\let\MToriginalprod\prod}
+\CustomizeMathJax{\let\MToriginalsum\sum}
+\CustomizeMathJax{\newcommand{\DotTriangle}{\mathord{\unicode{x2234}}}}
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-mathastext.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathastext.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathdesign.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathdesign.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathdesign.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,65 @@
+%%
+%% This is file `lwarp-mathdesign.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `mathdesign')
+%% 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{mathdesign}[2013/08/29]
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-overlaysymbols}
+
+\begin{warpMathJax}
+\LWR at infoprocessingmathjax{mathdesign}
+
+\if at MD@grupright
+\LWR at mathjax@addgreek at l@up{}{}
+\fi
+
+\if at MD@GRupright
+\else
+\LWR at mathjax@addgreek at u@it*{}{}
+\fi
+\LWR at mathjax@addgreek at l@up{}{up}
+\LWR at mathjax@addgreek at u@up*{}{up}
+\LWR at mathjax@addgreek at l@it{}{it}
+\LWR at mathjax@addgreek at u@it*{}{it}
+\CustomizeMathJax{\let\digammaup\Digammaup}
+\CustomizeMathJax{\renewcommand{\digammait}{\mathit{\digammaup}}}
+\CustomizeMathJax{\newcommand{\smallin}{\mathrel{\unicode{x220A}}}}
+\CustomizeMathJax{\newcommand{\smallowns}{\mathrel{\unicode{x220D}}}}
+\CustomizeMathJax{\newcommand{\notsmallin}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x220A}}}}}
+\CustomizeMathJax{\newcommand{\notsmallowns}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x220D}}}}}
+\CustomizeMathJax{\newcommand{\rightangle}{\mathord{\unicode{x221F}}}}
+\CustomizeMathJax{\newcommand{\intclockwise}{\mathop{\unicode{x2231}}\limits}}
+\CustomizeMathJax{\newcommand{\ointclockwise}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\ointctrclockwise}{\mathop{\unicode{x2233}}\limits}}
+\CustomizeMathJax{\newcommand{\oiint}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiint}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\newcommand{\ddag}{\unicode{x2021}}}
+\CustomizeMathJax{\newcommand{\P}{\unicode{x00B6}}}
+\CustomizeMathJax{\newcommand{\copyright}{\unicode{x00A9}}}
+\CustomizeMathJax{\newcommand{\dag}{\unicode{x2020}}}
+\CustomizeMathJax{\newcommand{\pounds}{\unicode{x00A3}}}
+\CustomizeMathJax{\newcommand{\iddots}{\mathinner{\unicode{x22F0}}}}
+\CustomizeMathJax{\newcommand{\utimes}{\mathbin{\overline{\times}}}}
+\CustomizeMathJax{\newcommand{\dtimes}{\mathbin{\underline{\times}}}}
+\CustomizeMathJax{\newcommand{\udtimes}{\mathbin{\overline{\underline{\times}}}}}
+\CustomizeMathJax{\newcommand{\leftwave}{\left\{}}
+\CustomizeMathJax{\newcommand{\rightwave}{\right\}}}
+
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-mathdesign.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathdesign.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathdots.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathdots.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathdots.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -17,7 +17,15 @@
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackagePass{mathdots}[2014/06/11]
 \begin{warpMathJax}
-\CustomizeMathJax{\newcommand{\iddots}{\unicode{x22F0}}}
+\CustomizeMathJax{\newcommand{\iddots}{\mathinner{\unicode{x22F0}}}}
+\CustomizeMathJax{\let\fixedddots\ddots}
+\CustomizeMathJax{\let\fixedvdots\vdots}
+\CustomizeMathJax{\let\fixediddots\iddots}
+\CustomizeMathJax{\let\originalddots\ddots}
+\CustomizeMathJax{\let\originalvdots\vdots}
+\CustomizeMathJax{\let\originaliddots\iddots}
+\CustomizeMathJax{\let\originaldddot\dddot}
+\CustomizeMathJax{\let\originalddddot\ddddot}
 \end{warpMathJax}
 \endinput
 %%

Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathfixs.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathfixs.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathfixs.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -18,7 +18,7 @@
 \LWR at ProvidesPackagePass{mathfixs}[2018/12/30]
 \begin{warpMathJax}
 \CustomizeMathJax{\newcommand{\rfrac}[2]{\tfrac{#1}{#2}}}
-\CustomizeMathJax{\newcommand{\vfrac}[2]{{}^{#1}\!/{}_{#2}}}
+\CustomizeMathJax{\newcommand{\vfrac}[2]{\mathinner{{}^{#1}\!/{}_{#2}}}}
 \CustomizeMathJax{\newcommand{\ProvideMathFix}[1]{}}
 \CustomizeMathJax{\newcommand{\mathbold}[1]{\boldsymbol{#1}}}
 \CustomizeMathJax{\newcommand{\.}{\,}}

Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathpazo.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathpazo.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathpazo.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,34 @@
+%%
+%% This is file `lwarp-mathpazo.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `mathpazo')
+%% 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{mathpazo}[2020/03/25]
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+\LWR at infoprocessingmathjax{mathpazo}
+
+\ifpazo at slGreek
+\LWR at mathjax@addgreek at u@it*{}{}
+\fi
+
+\LWR at mathjax@addgreek at u@up*{up}{}
+
+\CustomizeMathJax{\newcommand{\mathbold}[1]{\boldsymbol{#1}}}
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-mathpazo.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathpazo.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathptmx.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathptmx.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathptmx.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,32 @@
+%%
+%% This is file `lwarp-mathptmx.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `mathptmx')
+%% 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{mathptmx}[2020/03/25]
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+\LWR at infoprocessingmathjax{mathptmx}
+
+\@ifpackagewith{mathptmx}{slantedGreek}
+    {\LWR at mathjax@addgreek at u@it*{}{}}
+    {}
+
+\LWR at mathjax@addgreek at u@up*{up}{}
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-mathptmx.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathptmx.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathspec.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathspec.sty	                        (rev 0)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathspec.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -0,0 +1,93 @@
+%%
+%% This is file `lwarp-mathspec.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `mathspec')
+%% 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{mathspec}[2016/12/22]
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+\booltrue{LWR at MathJax@silentquotes}
+\AtBeginDocument{
+\ifcase\eu at GreekUppercase@@value %% If Greek Uppercase Regular
+    \LWR at mathjax@addgreek at u@up*{}{}
+\or %% If Greek Uppercase Italic
+    \LWR at mathjax@addgreek at u@it*{}{}
+\or %% If Greek Uppercase Plain
+    \LWR at mathjax@addgreek at u@up*{}{}
+\fi
+\ifcase\eu at GreekLowercase@@value %% If Greek Lowercase Regular
+    \LWR at mathjax@addgreek at l@up{}{}
+\or %% If Greek Lowercase Italic
+    \LWR at mathjax@addgreek at l@it{}{}
+\or %% If Greek Lowercase Plain
+    \LWR at mathjax@addgreek at l@it{}{}
+\fi
+}
+\newcommand*{\LWR at mathspec@varforms}{%
+\eu at ifbooltrue{GreekLowercase}{
+    \eu at ifbooltrue{exchangebetaforms}{
+        \CustomizeMathJax{\let\LWRorigbeta\beta}
+        \CustomizeMathJax{\let\beta\varbeta}
+        \CustomizeMathJax{\let\varbeta\LWRorigbeta}
+    }
+    \eu at ifbooltrue{exchangeepsilonforms}{
+        \CustomizeMathJax{\let\LWRorigepsilon\epsilon}
+        \CustomizeMathJax{\let\epsilon\varepsilon}
+        \CustomizeMathJax{\let\varepsilon\LWRorigepsilon}
+    }
+    \eu at ifbooltrue{exchangethetaforms}{
+        \CustomizeMathJax{\let\LWRorigtheta\theta}
+        \CustomizeMathJax{\let\theta\vartheta}
+        \CustomizeMathJax{\let\vartheta\LWRorigtheta}
+    }
+    \eu at ifbooltrue{exchangekappaforms}{
+        \CustomizeMathJax{\let\LWRorigkappa\kappa}
+        \CustomizeMathJax{\let\kappa\varkappa}
+        \CustomizeMathJax{\let\varkappa\LWRorigkappa}
+    }
+    \eu at ifbooltrue{exchangepiforms}{
+        \CustomizeMathJax{\let\LWRorigpi\pi}
+        \CustomizeMathJax{\let\pi\varpi}
+        \CustomizeMathJax{\let\varpi\LWRorigpi}
+    }
+    \eu at ifbooltrue{exchangerhoforms}{
+        \CustomizeMathJax{\let\LWRorigrho\rho}
+        \CustomizeMathJax{\let\rho\varrho}
+        \CustomizeMathJax{\let\varrho\LWRorigrho}
+    }
+    \eu at ifbooltrue{exchangephiforms}{
+        \CustomizeMathJax{\let\LWRorigphi\phi}
+        \CustomizeMathJax{\let\phi\varphi}
+        \CustomizeMathJax{\let\varphi\LWRorigphi}
+    }
+}
+\eu at ifbooltrue{GreekUppercase}{
+    \eu at ifbooltrue{exhangeThetaforms}{
+        \CustomizeMathJax{\let\LWRorigTheta\Theta}
+        \CustomizeMathJax{\let\Theta\varTheta}
+        \CustomizeMathJax{\let\varTheta\LWRorigTheta}
+    }
+}
+}
+\xapptocmd{\exchangeforms}
+    {\AtBeginDocument{\LWR at mathspec@varforms}}
+    {}
+    {\LWR at patcherror{mathspec}{exchangeforms}}
+
+\end{warpMathJax}
+\endinput
+%%
+%% End of file `lwarp-mathspec.sty'.


Property changes on: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathspec.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathtools.sty
===================================================================
--- branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathtools.sty	2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathtools.sty	2021-02-18 22:20:50 UTC (rev 57791)
@@ -50,7 +50,8 @@
 \CustomizeMathJax{\newcommand{\crampedclap}[2][]{{#1#2}}}
 \CustomizeMathJax{\newenvironment{crampedsubarray}[1]{}{}}
 \CustomizeMathJax{\newcommand{\crampedsubstack}{}}
-\CustomizeMathJax{\newcommand{\smashoperator}[2][]{#2}}
+\CustomizeMathJax{\newcommand{\smashoperator}[2][]{#2\limits}}
+\CustomizeMathJax{\newcommand{\adjustlimits}{}}
 \CustomizeMathJax{\newcommand{\SwapAboveDisplaySkip}{}}
 
 \CustomizeMathJax{\require{extpfeil}}
@@ -68,10 +69,14 @@
 \CustomizeMathJax{\Newextarrow\xleftharpoonup{10,10}{0x21bc}}
 \CustomizeMathJax{\Newextarrow\xleftrightharpoons{10,10}{0x21cb}}
 
-\CustomizeMathJax{\newcommand{\LWRdounderbracket}[1]{\underline{#1}}}
+\CustomizeMathJax{\newcommand{\LWRdounderbracket}[3]{%
+    \mathinner{\underset{#3}{\underline{\llcorner{#1}\lrcorner}}}%
+}}
 \CustomizeMathJax{\newcommand{\LWRunderbracket}[2][]{\LWRdounderbracket{#2}}}
 \CustomizeMathJax{\newcommand{\underbracket}[1][]{\LWRunderbracket}}
-\CustomizeMathJax{\newcommand{\LWRdooverbracket}[1]{\overline{#1}}}
+\CustomizeMathJax{\newcommand{\LWRdooverbracket}[3]{%
+    \mathinner{\overset{#3}{\overline{\ulcorner{#1}\urcorner}}}%
+}}
 \CustomizeMathJax{\newcommand{\LWRoverbracket}[2][]{\LWRdooverbracket{#2}}}
 \CustomizeMathJax{\newcommand{\overbracket}[1][]{\LWRoverbracket}}
 
@@ -118,15 +123,20 @@
     \def\LWRAboxed#1&#2&#3!|!{\fbox{\(#1\)}&\fbox{\(#2\)}}
     \newcommand{\Aboxed}[1]{\LWRAboxed#1&&!|!}
 }
-
 \CustomizeMathJax{
-    \newcommand{\ArrowBetweenLines}[1][\Updownarrow]{#1}%   no starred
+    \newcommand{\LWRABLines}[1][\Updownarrow]{#1 \notag \\}% star/nostar the same
+    \newcommand{\ArrowBetweenLines}{\ifstar\LWRABLines\LWRABLines}
 }
+\CustomizeMathJax{\newcommand{\shortintertext}[1]{\text{#1}\notag \\}}
 
-\CustomizeMathJax{\newcommand{\shortintertext}[1]{\\ \text{#1}\notag \\}}
+\CustomizeMathJax{\newcommand{\vdotswithin}[1]{\hspace{.5em}\vdots}}
+\CustomizeMathJax{\newcommand{\LWRshortvdotswithinstar}[1]{\vdots \hspace{.5em} & \\}}
+\CustomizeMathJax{\newcommand{\LWRshortvdotswithinnostar}[1]{& \hspace{.5em}\vdots \\}}
+\CustomizeMathJax{%
+    \newcommand{\shortvdotswithin}%
+        {\ifstar\LWRshortvdotswithinstar\LWRshortvdotswithinnostar}%
+}
 
-\CustomizeMathJax{\newcommand{\vdotswithin}[1]{\hspace{.5em}\vdots}}
-\CustomizeMathJax{\newcommand{\shortvdotswithin}[1]{ & \hspace{.5em}\vdots \\}}
 \CustomizeMathJax{\newcommand{\MTFlushSpaceAbove}{}}
 \CustomizeMathJax{\newcommand{\MTFlushSpaceBelow}{\\}}
 
@@ -133,7 +143,33 @@
 \LetLtxMacro\LWR at mathtools@orig at DeclarePairedDelimiter\DeclarePairedDelimiter
 \renewcommand{\DeclarePairedDelimiter}[3]{
     \LWR at mathtools@orig at DeclarePairedDelimiter{#1}{#2}{#3}
-    \CustomizeMathJax{\newcommand{#1}[2][]{{##1#2##2##1#3}}}
+    \appto\LWR at customizedMathJax{\LWRbackslash(}
+    \appto\LWR at customizedMathJax{%
+        \LWRbackslash{}newcommand\{\LWRbackslash\macrotocsname{#1}LWRsubstar\}%
+    }%
+    \appto\LWR at customizedMathJax{[2][]}%
+    \appto\LWR at customizedMathJax{\{\{}%
+    \LWR at subcustomizedmathjax{##1\left#2##2##1\right#3}%
+    \appto\LWR at customizedMathJax{\}\}}%
+    \appto\LWR at customizedMathJax{\LWRbackslash)\par}%
+    \appto\LWR at customizedMathJax{\LWRbackslash(}
+    \appto\LWR at customizedMathJax{%
+        \LWRbackslash{}newcommand\{\LWRbackslash\macrotocsname{#1}LWRsubnostar\}%
+    }%
+    \appto\LWR at customizedMathJax{[2][]}%
+    \appto\LWR at customizedMathJax{\{\{}%
+    \LWR at subcustomizedmathjax{##1#2##2##1#3}%
+    \appto\LWR at customizedMathJax{\}\}}%
+    \appto\LWR at customizedMathJax{\LWRbackslash)\par}%
+    \appto\LWR at customizedMathJax{\LWRbackslash(}
+    \appto\LWR at customizedMathJax{%
+        \LWRbackslash{}newcommand\{\LWRbackslash{}\macrotocsname{#1}\}%
+        \{\LWRbackslash{}ifstar%
+            \LWRbackslash{}\macrotocsname{#1}LWRsubstar%
+            \LWRbackslash{}\macrotocsname{#1}LWRsubnostar%
+        \}%
+    }%
+    \appto\LWR at customizedMathJax{\LWRbackslash)\par}%
 }
 \@onlypreamble\DeclareParedDelimiter
 
@@ -143,9 +179,31 @@
     \LWR at mathtools@orig at DeclarePairedDelimiterXPP{#1}[#2]{#3}{#4}{#5}{#6}{#7}
     \appto\LWR at customizedMathJax{\LWRbackslash(}%
     \appto\LWR at customizedMathJax{%

@@ Diff output truncated at 1234567 characters. @@


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