texlive[54877] trunk: lwarp (25apr20)

commits+karl at tug.org commits+karl at tug.org
Sat Apr 25 22:51:39 CEST 2020


Revision: 54877
          http://tug.org/svn/texlive?view=revision&revision=54877
Author:   karl
Date:     2020-04-25 22:51:39 +0200 (Sat, 25 Apr 2020)
Log Message:
-----------
lwarp (25apr20)

Modified Paths:
--------------
    trunk/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua
    trunk/Build/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl
    trunk/Master/texmf-dist/doc/latex/lwarp/README.txt
    trunk/Master/texmf-dist/doc/latex/lwarp/lwarp.pdf
    trunk/Master/texmf-dist/scripts/lwarp/lwarpmk.lua
    trunk/Master/texmf-dist/source/latex/lwarp/lwarp.dtx
    trunk/Master/texmf-dist/source/latex/lwarp/lwarp.ins
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-abstract.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-adjmulticol.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithm2e.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-alltt.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-amsthm.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-authblk.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-backref.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage2e.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-caption.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-common-multimedia.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-ctable.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-easy-todo.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-epigraph.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fixme.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-float.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-floatflt.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-floatrow.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fontaxes.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-forest.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-graphics.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-keyfloat.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-lettrine.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-longtable.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-mdframed.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-multirow.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-nfssext-cfr.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-nowidow.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-ntheorem.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-parcolumns.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-parnotes.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-komascript.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-memoir.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-quoting.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-realscripts.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-rotfloat.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-scrextend.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-sidenotes.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-slantsc.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-subcaption.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-subfig.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-textcomp.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-titling.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-tocloft.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-wrapfig.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-xcolor.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-xpinyin.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp.sty
    trunk/Master/tlpkg/bin/tlpkginfo

Added Paths:
-----------
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage.sty

Modified: trunk/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua	2020-04-25 20:51:39 UTC (rev 54877)
@@ -2,7 +2,7 @@
 
 -- Copyright 2016-2020 Brian Dunn
 
-printversion = "v0.83"
+printversion = "v0.84"
 requiredconfversion = "2" -- also at *lwarpmk.conf
 
 function printhelp ()
@@ -379,7 +379,7 @@
 -- 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 " ..
@@ -393,7 +393,8 @@
     sourcename .. "_html.pdf " ..
     sourcename .. "_html.html " ..
     sourcename .. "_html.sidetoc " ..
-    " *_html_inc.* "
+    " *_html_inc.* " ..
+    " comment_*.cut"
     )
 end
 

Modified: trunk/Build/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Build/source/texk/texlive/linked_scripts/tlshell/tlshell.tcl	2020-04-25 20:51:39 UTC (rev 54877)
@@ -2010,6 +2010,11 @@
   }
 }
 
+proc zoom {n} {
+  if {$n <= 0} {set n 1}
+  set_fontscale [expr {$n*$::tkfontscale}]
+}
+
 ##### running external commands #####
 
 # For capturing an external command, we need a separate output channel,
@@ -2179,17 +2184,25 @@
   .mn.opt add cascade -label [__ "GUI font scaling"] \
       -menu .mn.opt.fscale
   menu .mn.opt.fscale
-  foreach s {0.5 0.7 1 1.25 1.5 2 3 4 6 8} {
-    if {$s eq $::tkfontscale} {
-      set mlabel "$s *"
-    } else {
-      set mlabel $s
-    }
-    .mn.opt.fscale add command -label $mlabel \
-        -command "set_fontscale $s"
+  foreach s {0.6 0.8 1 1.2 1.6 2 2.5 3 3.8 5 6 7.5 9} {
+    .mn.opt.fscale add command -label $s -command "set_fontscale $s"
   }
 
+  # browser-style keyboard shortcuts for scaling
+  bind . <Control-KeyRelease-minus> {zoom 0.8}
+  bind . <Control-KeyRelease-equal> {zoom 1.25}
+  bind . <Control-Shift-KeyRelease-equal> {zoom 1.25}
+  bind . <Control-KeyRelease-plus> {zoom 1.25}
+  bind . <Control-KeyRelease-0> {set_fontscale 1}
+  if {$::tcl_platform(os) eq "Darwin"} {
+    bind . <Command-KeyRelease-minus> {zoom 0.8}
+    bind . <Command-KeyRelease-equal> {zoom 1.25}
+    bind . <Command-Shift-KeyRelease-equal> {zoom 1.25}
+    bind . <Command-KeyRelease-plus> {zoom 1.25}
+    bind . <Command-KeyRelease-0> {set_fontscale 1}
+  }
 
+
   if {$::tcl_platform(platform) ne "windows"} {
     incr inx
     set ::inx_platforms $inx

Modified: trunk/Master/texmf-dist/doc/latex/lwarp/README.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/lwarp/README.txt	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/doc/latex/lwarp/README.txt	2020-04-25 20:51:39 UTC (rev 54877)
@@ -1,5 +1,5 @@
 
-LaTeX lwarp package v0.83   README.txt
+LaTeX lwarp package v0.84   README.txt
 
 Files included are:
 

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

Modified: trunk/Master/texmf-dist/scripts/lwarp/lwarpmk.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/lwarp/lwarpmk.lua	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/scripts/lwarp/lwarpmk.lua	2020-04-25 20:51:39 UTC (rev 54877)
@@ -2,7 +2,7 @@
 
 -- Copyright 2016-2020 Brian Dunn
 
-printversion = "v0.83"
+printversion = "v0.84"
 requiredconfversion = "2" -- also at *lwarpmk.conf
 
 function printhelp ()
@@ -379,7 +379,7 @@
 -- 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 " ..
@@ -393,7 +393,8 @@
     sourcename .. "_html.pdf " ..
     sourcename .. "_html.html " ..
     sourcename .. "_html.sidetoc " ..
-    " *_html_inc.* "
+    " *_html_inc.* " ..
+    " comment_*.cut"
     )
 end
 

Modified: trunk/Master/texmf-dist/source/latex/lwarp/lwarp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/lwarp/lwarp.dtx	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/source/latex/lwarp/lwarp.dtx	2020-04-25 20:51:39 UTC (rev 54877)
@@ -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>    [2020/04/24 v0.84  Allows LaTeX to directly produce HTML5 output.]
 %
 %<*driver>
 \documentclass{ltxdoc}
@@ -565,8 +565,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 +760,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}{%
@@ -848,6 +852,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 +1034,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 +1043,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 +1074,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 +1161,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.
 }
 
 
@@ -1553,11 +1602,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}
@@ -1777,9 +1849,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}{%
@@ -2432,11 +2504,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}
@@ -2743,7 +2816,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}
@@ -2925,7 +2999,7 @@
 %<*package>
 % \fi
 %
-% \CheckSum{43597}
+% \CheckSum{44148}
 %
 % \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 +3125,7 @@
 % \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}
 
 
 
@@ -3273,11 +3348,57 @@
 %
 % \begin{description}
 % \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 +3568,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
@@ -5197,7 +5318,7 @@
 % 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},
+%   \mpkg{chapterbib}, \mpkg{cite}, \ipkg{hypernat}, \spkg{mcite}, \mpkg{natbib},
 %   \spkg{notes2bib}, \ipkg{showtags}.
 %
 %   \\
@@ -5339,7 +5460,8 @@
 % Verbatim: &
 %   \mpkg{fancyvrb}, \mpkg{moreverb}, \spkg{shortvrb}, \mpkg{verbatim}. \\
 %
-% Frames: & \mpkg{boxedminipage2e}, \mpkg{fancybox}, \mpkg{framed}, \mpkg{mdframed},
+% Frames: & \mpkg{boxedminipage}, \mpkg{boxedminipage2e},
+%   \mpkg{fancybox}, \mpkg{framed}, \mpkg{mdframed},
 %   \epkg{niceframe}, \epkg{shadow}, \epkg{vertbars}. \\
 %
 % Multi-columns: & \epkg{adjmulticol}, \epkg{multicol},
@@ -5359,7 +5481,7 @@
 %   \ipkg{lua-check-hyphen}, \ipkg{luacolor}, \epkg{magaz}, \epkg{nolbreaks},
 %   \ipkg{normalcolor},
 %   \ipkg{pdfcol}, \ipkg{pdfcolmk},
-%   \ipkg{pdfrender}, \epkg{realscripts}, \mpkg{relsize}\ejax,
+%   \ipkg{pdfrender}, \mpkg{realscripts}, \mpkg{relsize}\ejax,
 %   \ipkg{scalefnt}, \epkg{soul}, \epkg{soulpos}, \epkg{soulutf8}, \mpkg{stackengine},
 %   \epkg{textfit}, \epkg{thinsp}, \ipkg{trimclip}, \ipkg{truncate},
 %   \mpkg{ulem}, \mpkg{umoline}, \ipkg{underscore}, \ipkg{uspace},
@@ -6213,8 +6335,8 @@
 %	\brand{MathJax} is used to display math.
 %	This file should not be modified by the user.
 %
-% \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 +6708,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 +6905,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 +6917,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 +6942,7 @@
 %       \item [\optn{pdftotextEnc}:] To adjust the encoding of \prog{pdftotext}.
 %   \end{description}
 % \end{description}
+% \end{table}
 %
 %
 % \subsection{Accessibility}
@@ -6838,8 +6966,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 +7028,7 @@
 %   This may be changed by redefining \cs{AltTextOpen} and \cs{AltTextClose}.
 %   Set with \cs{renewcommand}.
 % \end{description}
+% \end{table}
 %
 %
 %
@@ -7077,6 +7209,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}
 %
@@ -7109,7 +7258,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}}
@@ -7478,10 +7627,13 @@
 % \begin{table}[p]
 % \caption{\HTML\ settings}
 % \label{tab:htmlsettings}
+% \renewcommand{\arraystretch}{1.1}
 % \begin{tabular}{>{\ttfamily}lp{3in}}
 % \toprule
 % Macro \Slash Cntr \Slash Bool & Description \\ \midrule
 % \cs{linkhomename} & Name of the link to the homepage. \\
+% \cs{linkpreviousname} & Name of the link to the previous page. \\
+% \cs{linknextname} & Name of the link to the next page. \\
 % \midrule
 % SideTOCDepth & Sectioning depth of the side\TOC. \\
 % \cs{sidetocname} & Name of the side\TOC. \\
@@ -7515,8 +7667,9 @@
 % \cs{HTMLDescription} & The \HTML\ \attribute{description} meta tag. \\
 % \midrule
 % \cs{HTMLFirstPageTop} & Heading for the home page. \\
+% \cs{HTMLFirstPageTop} & Footer for the home page. \\
 % \cs{HTMLPageTop} & Heading for the other pages. \\
-% \cs{HTMLPageBottom} & Footing for all pages. \\
+% \cs{HTMLPageBottom} & Footer for the other pages. \\
 % \midrule
 % HTMLDebugComments & Boolean to generate \HTML\ comments. \\
 % \bottomrule
@@ -7591,6 +7744,7 @@
 %
 %   \end{description} \bigskip
 %
+% \needspace{3\baselineskip}
 % \item[Placed in the preamble before \texttt{\cs{begin}\{document\}}:] \
 %
 %   \begin{description}
@@ -7600,6 +7754,16 @@
 %   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.
 %
@@ -7729,7 +7893,7 @@
 %
 % \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:] \
 %
@@ -7806,28 +7970,49 @@
 % \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.
 %
+% \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.
+%
 % \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.
+%   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 +8068,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 +8198,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 +8247,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 +8275,7 @@
 % 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]
 %
 % \DescribeEnv{warpprint}
 % Anything which is to be done only for print output
@@ -8061,6 +8287,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 +8298,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 +8316,9 @@
 % 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]
 %
 %
 % \subsection{Commands to be placed into the \env{warpprint} environment}
@@ -8474,7 +8706,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
@@ -8601,6 +8833,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}
@@ -9751,7 +9991,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}
 %
@@ -10920,10 +11195,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
@@ -10985,10 +11263,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\}.'':]
@@ -11051,7 +11340,7 @@
 %           inside a group first.
 %
 %           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
@@ -11080,6 +11369,19 @@
 %           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[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.
@@ -11610,12 +11912,13 @@
         {%
             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
+        {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.}
+        which must also be moved after Lwarp.}
 }
 {}
 }
@@ -11671,8 +11974,11 @@
 {}
 {
     \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}
@@ -11808,7 +12114,6 @@
 \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}
@@ -11915,6 +12220,7 @@
 \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}
@@ -12368,9 +12674,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}
 %
@@ -12499,7 +12808,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
@@ -12537,6 +12847,16 @@
 % \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}}
@@ -12595,9 +12915,12 @@
 % Prints an error if could not patch a macro.
 %    \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, macro #2.\MessageBreak
+            Lwarp may need to be updated%
+        }%
+        {Please contact the maintainer of the Lwarp package.}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -12728,7 +13051,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}
@@ -13474,28 +13798,37 @@
 %    \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.}
 %    \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}
+    \csarg\def{#1}{\endgroup \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 +13838,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 +13848,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 +13859,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}
 %
@@ -14254,7 +14587,6 @@
 \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}
@@ -14455,8 +14787,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 +14898,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.
@@ -14847,9 +15158,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 +15168,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 +15184,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 +15203,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 +15211,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 +15222,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 +15234,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 +15252,7 @@
 % \LWR at formatted{name}%    -or-
 % \LWR at formattedenv{name}
 % \end{warpHTML}
-% \end{Verbatim}
+% \end{sourceverb}
 %
 % \end{description}
 %
@@ -15353,14 +15667,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}
 %
@@ -15415,6 +15722,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 +15738,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 +15787,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 +15839,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 +15857,7 @@
     }
     {
         \PackageInfo{lwarp}{Generating lwarp configuration files,}%
-        \includecomment{LWRwriteconf}
+        \LWR at includecomment{LWRwriteconf}{writeconf}
     }
 \end{warpprint}
 %    \end{macrocode}
@@ -15626,9 +15952,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}
@@ -16041,6 +16370,11 @@
 % \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.}
 %
 % ^^A *lwarp.css
 %
@@ -16126,10 +16460,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 +16488,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 {
@@ -16202,16 +16578,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 {
@@ -16693,6 +17069,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;
@@ -17188,6 +17565,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 +17679,7 @@
 }
 
 
+/* for \LinkHome, \LinkPrevious, and \LinkNext: */
 a.linkhome { font-weight:bold ; font-size: 1em ;}
 
 
@@ -17620,6 +18018,7 @@
         box-shadow: none ;
     }
     span.sidetocthetitle { display: inline }
+    nav.topnavigation { display:block }
     nav.botnavigation { display:block }
     div.bodycontainer { width: 100% }
     .marginpar {
@@ -18599,11 +18998,12 @@
 % \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}}%
 %
 % 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
@@ -18614,7 +19014,7 @@
 -- Copyright 2016-2020 Brian Dunn
 
 
-printversion = "v0.83"
+printversion = "v0.84"
 requiredconfversion = "2" -- also at *lwarpmk.conf
 
 function printhelp ()
@@ -19008,7 +19408,7 @@
 -- 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 " ..
@@ -19022,7 +19422,8 @@
     sourcename .. "_html.pdf " ..
     sourcename .. "_html.html " ..
     sourcename .. "_html.sidetoc " ..
-    " *_html_inc.* "
+    " *_html_inc.* " ..
+    " comment_*.cut"
     )
 end
 
@@ -19568,7 +19969,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\end{LWR at createlwarpmk}
+\end{LWRcreatelwarpmk}
 %    \end{macrocode}
 %
 
@@ -20082,7 +20483,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 +20509,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 +20560,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 +20581,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 +20596,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:
@@ -20192,15 +20631,15 @@
 % \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 +20682,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 +20741,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 +20752,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 +20763,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:
@@ -20689,7 +21232,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 +21278,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 +21297,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%
@@ -21043,12 +21627,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 +21657,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 +22081,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 +22138,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 +22227,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 +22248,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 +22270,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}.}
@@ -22198,7 +22803,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 +23045,7 @@
 \begin{warpHTML}
 %    \end{macrocode}
 
+
 % \begin{macro}{\LWR at thisfilename}
 % The currently-active filename or number.
 % At first, this is the homepage.
@@ -22513,7 +23119,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 +23166,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 +23183,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}
@@ -22631,28 +23284,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{-}}{%
@@ -22899,7 +23555,7 @@
     \ifbool{LWR at warnedcustomizemathjax}{}{%
         \StrLen{\detokenize{#1}}[\LWR at tempone]%
         \ifnumgreater{\LWR at tempone}{200}{%
-            \AtBeginDocument{%
+            \AtEndDocument{%
                 \PackageWarningNoLine{lwarp}{%
                     To ensure faster MathJax compilation, place each\MessageBreak
                     custom macro in its own \protect\CustomizeMathJax.\MessageBreak
@@ -23122,6 +23778,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 +23835,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
@@ -23183,8 +23854,11 @@
 \LWR at htmltag{/html}\LWR at orignewline
 \LWR at traceinfo{LWR at newhtmlfile: about to LWR at orignewpage}
 \LWR at 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 +23895,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}
@@ -23278,7 +23954,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 +24008,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 +24079,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 +24086,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 +24230,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}
@@ -23689,6 +24382,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}%
@@ -23913,7 +24613,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 +24627,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 +24641,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 +24906,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 +24919,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 +24997,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,20 +25008,41 @@
 \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:
 %    \begin{macrocode}
 \LWR at htmltag{%
@@ -24311,10 +25049,12 @@
     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 +25095,7 @@
     }\LWR at orignewline
 }%
 %    \end{macrocode}
+%
 % Mobile-friendly viewport:
 % \gindex{HTML>meta tag>viewport}
 % \gindex{viewport>HTML meta tag}
@@ -24366,6 +25107,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 +25121,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 +25137,7 @@
         \LWR at htmltag{/title}\LWR at orignewline%
     }%
 %    \end{macrocode}
+%
 % The page's stylesheet:
 %    \begin{macrocode}
 \LWR at htmltag{%
@@ -24404,6 +25148,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
@@ -24429,10 +25174,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
@@ -24591,6 +25338,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}.
@@ -24691,7 +25445,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 +25457,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,
@@ -24744,7 +25493,7 @@
 
 % \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.
 % \changes{v0.70}{2019/03/26}{If labels changed, require recompile before making limages.}
 %    \begin{macrocode}
@@ -24767,13 +25516,15 @@
     }
     {}
     {
-        \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%
+        \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%
+            }
         }
     }
 %    \end{macrocode}
@@ -25010,24 +25761,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 +26004,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 +26214,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 +26263,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 +26293,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 +26318,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 +26331,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 +26378,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 +26389,8 @@
                         \advance\leftmargin 1.5em}%
                 \item\relax}
                {\endlist}
+
+\LWR at formattedenv{verse}
 %    \end{macrocode}
 % \end{environment}
 %
@@ -25786,15 +26568,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{2.5}{Verbatim}%
+    \LWR at print@verbatim at input{#1}{#2}%
+    \LWR at afterendverbatim{1.5}%
+}
 
-\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 +26586,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{2.5}{verbatim}%
+        }%
 }
 \AfterEndEnvironment{verbatim}{%
-    \LWR at afterendverbatim{1}%
+    \ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}%
+        {}%
+        {%
+            \LWR at afterendverbatim{1}%
+        }%
 }
 }
 %    \end{macrocode}
@@ -25826,11 +26618,19 @@
 % \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{3}{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}{%
@@ -26325,22 +27125,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 +27526,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}
@@ -28385,15 +29185,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}
@@ -29147,21 +29938,12 @@
 % 
 %    \begin{macrocode}
         \IfValueT{#2}{ % rows?
-        rowspan="#2" %
+            rowspan="#2" %
+        }%
 %    \end{macrocode}
 % 
-% \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.84}{2020/04/16}{Fix: Multicolumn style.}
 %    \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?
-%    \end{macrocode}
-% 
-%    \begin{macrocode}
         class="td%
 %    \end{macrocode}
 % Print the column type and vertical bars:
@@ -29213,10 +29995,30 @@
 %    \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%
@@ -30073,16 +30875,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:
@@ -30431,6 +31224,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 +31292,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 +31410,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 +31443,16 @@
 % \label{sec:labels}
 
 
-% \begin{macro}{\LWR at sublabel} \marg{label} \quad
+% \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:
@@ -30692,30 +31490,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 +31528,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}%
 }
@@ -30957,14 +31755,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}
 
@@ -31225,12 +32020,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 +32038,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}
@@ -31281,7 +32082,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 +32092,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 +32117,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 +32177,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 +32217,14 @@
 % \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.}
 %    \begin{macrocode}
 \newcommand*{\LWR at forcenewautoidanchor}{%
     \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 startpars%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -31479,7 +32297,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 +32306,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 +32391,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 +32431,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 +32484,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 +32505,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 +32583,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}
@@ -32010,7 +32879,7 @@
 \newcounter{SideTOCDepth}
 \setcounter{SideTOCDepth}{1}
 
-\AtBeginDocument{%
+\AtEndDocument{%
     \ifnumcomp{\value{SideTOCDepth}}{<}{\value{FileDepth}}{
         \PackageWarningNoLine{lwarp}
         {%
@@ -32123,7 +32992,8 @@
 %    \end{macrocode}
 % Respond to |tocdepth|:
 %    \begin{macrocode}
-    \ifthenelse{\cnttest{#1}{<=}{\value{tocdepth}}}%
+    \ifnumcomp{#1}{>}{\value{tocdepth}}%
+        {}%
         {%
             \LWR at startpars%
 %    \end{macrocode}
@@ -32148,7 +33018,6 @@
 %    \begin{macrocode}
             \LWR at stoppars%
         }%
-        {}%
     \LWR at traceinfo{hypertoc done}%
 }
 %    \end{macrocode}
@@ -32186,7 +33055,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:
@@ -32718,10 +33586,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%
@@ -32768,12 +33632,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}.
@@ -33605,8 +34687,8 @@
 % 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
@@ -33906,10 +34988,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}
 %
@@ -33956,7 +35038,7 @@
 % 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 +35167,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 +35182,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 +35196,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 +35212,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}
 
@@ -35128,7 +36206,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 +36237,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 +36247,8 @@
         {\BlockClass{center}}
 }
 {\endBlockClass}
+
+\LWR at formattedenv{center}
 %    \end{macrocode}
 % \end{environment}
 
@@ -35174,8 +36255,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 +36265,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 +36282,8 @@
         {\BlockClass{flushleft}}
 }
 {\endBlockClass}
+
+\LWR at formattedenv{flushleft}
 %    \end{macrocode}
 % \end{environment}
 
@@ -35796,7 +36883,8 @@
     \renewcommand*{\@@setcref}[2]{#1{\ref{#2}}{}{}}
 }{
     \ifdefequal{\@@@setcref}{\LWR at orig@@@setcref}{% as of v0.21
-        \renewcommand*{\@@@setcref}[2]{#1{\ref{#2}}{}{}}
+        \renewcommand*{\@@@setcref}[2]{%
+            #1{\ref{#2}}{}{}}
     }{
         \PackageWarning{lwarp-cleveref}{
             Unknown version of cleveref.
@@ -35831,7 +36919,6 @@
         }
     }
 }
-
 %    \end{macrocode}
 % \end{macro}
 
@@ -35929,11 +37016,11 @@
 % print or \HTML\ output, and thus do not use the \cs{LWR at formatted} system.
 %
 %    \begin{macrocode}
-\LetLtxMacro\LWR at orig@label\label
-\RenewDocumentCommand{\label}{}{\LWR at new@label}
+\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}
 
@@ -36721,6 +37808,7 @@
 
 
 
+
 % \section{Direct formatting}
 % \label{sec:directformatting}
 %
@@ -36753,8 +37841,6 @@
 }
 
 \LWR at formatted{emph}
-
-\newcommand{\LWR at null@emph}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36769,8 +37855,6 @@
 }
 
 \LWR at formatted{textmd}
-
-\newcommand{\LWR at null@textmd}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36785,8 +37869,6 @@
 }
 
 \LWR at formatted{textbf}
-
-\newcommand{\LWR at null@textbf}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36802,8 +37884,6 @@
 }
 
 \LWR at formatted{texteb}
-
-\newcommand{\LWR at null@texteb}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36819,8 +37899,6 @@
 }
 
 \LWR at formatted{textlg}
-
-\newcommand{\LWR at null@textlg}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36835,8 +37913,6 @@
 }
 
 \LWR at formatted{textrm}
-
-\newcommand{\LWR at null@textrm}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36851,8 +37927,6 @@
 }
 
 \LWR at formatted{textsf}
-
-\newcommand{\LWR at null@textsf}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36866,8 +37940,6 @@
 }
 
 \LWR at formatted{texttt}
-
-\newcommand{\LWR at null@texttt}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36883,8 +37955,6 @@
 }
 
 \LWR at formatted{textup}
-
-\newcommand{\LWR at null@textup}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36898,8 +37968,6 @@
 }
 
 \LWR at formatted{textit}
-
-\newcommand{\LWR at null@textit}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36914,8 +37982,6 @@
 }
 
 \LWR at formatted{textsc}
-
-\newcommand{\LWR at null@textsc}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36931,8 +37997,6 @@
 }
 
 \LWR at formatted{textulc}
-
-\newcommand{\LWR at null@textulc}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36957,8 +38021,6 @@
 }
 
 \LWR at formatted{textsi}
-
-\newcommand{\LWR at null@textsi}[1]{#1}
 %    \end{macrocode}
 % \end{macro}
 
@@ -36972,8 +38034,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 +38052,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.}
 
@@ -37346,7 +38206,7 @@
 % \begin{macro}{\upshape}
 %    \begin{macrocode}
 \newrobustcmd*{\LWR at HTML@upshape}{\renewcommand*{\LWR at f@shape}{up}}
-\LWR at formatted{upshape}
+\AtBeginDocument{\LWR at formatted{upshape}}
 %    \end{macrocode}
 % \end{macro}
 
@@ -37353,7 +38213,7 @@
 % \begin{macro}{\itshape}
 %    \begin{macrocode}
 \newrobustcmd*{\LWR at HTML@itshape}{\renewcommand*{\LWR at f@shape}{it}}
-\LWR at formatted{itshape}
+\AtBeginDocument{\LWR at formatted{itshape}}
 %    \end{macrocode}
 % \end{macro}
 
@@ -37360,7 +38220,7 @@
 % \begin{macro}{\scshape}
 %    \begin{macrocode}
 \newrobustcmd*{\LWR at HTML@scshape}{\renewcommand*{\LWR at f@shapecaps}{sc}}
-\LWR at formatted{scshape}
+\AtBeginDocument{\LWR at formatted{scshape}}
 %    \end{macrocode}
 % \end{macro}
 
@@ -37371,7 +38231,7 @@
     \LetLtxMacro\ulcshape\upshape
 }{}
 \newrobustcmd*{\LWR at HTML@ulcshape}{\renewcommand*{\LWR at f@shapecaps}{ulc}}
-\LWR at formatted{ulcshape}
+\AtBeginDocument{\LWR at formatted{ulcshape}}
 %    \end{macrocode}
 % \end{macro}
 
@@ -37385,7 +38245,7 @@
     \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}
 
@@ -37393,10 +38253,18 @@
 % \changes{v0.62}{2018/11/11}{Added.}
 %    \begin{macrocode}
 \newrobustcmd*{\LWR at HTML@slshape}{\renewcommand*{\LWR at f@shape}{sl}}
-\LWR at formatted{slshape}
+\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 +38275,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 +38315,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}
 
@@ -37777,7 +38670,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 +38679,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 +38692,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 +38713,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}
@@ -38164,11 +39057,12 @@
 % Ignores \cs{ForceHTMLTOC}.
 % \changes{v0.55}{2018/04/26}{Fix: \cs{ForceHTMLTOC} with \cs{phantomsection}.}
 %    \begin{macrocode}
+\newcounter{LWR at phantomsection}
 \DeclareDocumentCommand{\phantomsection}{}{%
-\begingroup%
-\boolfalse{LWR at forcinghtmltoc}%
-\section*{}%
-\endgroup%
+    \begingroup%
+    \boolfalse{LWR at forcinghtmltoc}%
+    \section*{}%
+    \endgroup%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -38202,23 +39096,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}}
@@ -38446,8 +39351,20 @@
 %    \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 \brand{Koma-script} class patches}
 %
 % Load patches to \pkg{koma-script}.
@@ -38473,22 +39390,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.
@@ -39050,33 +39970,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
@@ -39601,8 +40525,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 +40809,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}
 %
@@ -40024,6 +40948,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
 %
@@ -40035,11 +40960,19 @@
 \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{3}{alltt}%
+        }%
 }
 \AfterEndEnvironment{alltt}{%
-    \LWR at afterendverbatim{2}%
+    \ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}%
+        {}%
+        {%
+            \LWR at afterendverbatim{2}%
+        }%
 }
 }
 %    \end{macrocode}
@@ -40374,10 +41307,13 @@
 %    \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.%
     }
@@ -40423,7 +41359,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 +41370,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 +41392,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 +41423,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 +41452,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 +41494,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
@@ -41382,9 +42333,12 @@
 % 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.%
+        }
 }
 {}
 %    \end{macrocode}
@@ -41815,6 +42769,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 +42779,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 +43152,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}
 %
@@ -42861,27 +43827,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 +43865,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
 %
@@ -43317,126 +44311,76 @@
 % \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.}
 %
 % \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/01/03]
 %    \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}%
+\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 iibox#1#2#3[#4]{%
-  \@testopt{\caption at iiibox{#1}{#2}{#3}{#4}}\captionbox at hj@default
-}
-%    \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}{%
+    \minipagefullwidth%
+    \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}{%
+%     \parbox[b]{#6}{%
+    \minipagefullwidth%
+    \parbox[b]{\linewidth}{%
       #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}%
-% }
 
-\long\def\caption@@caption#1[#2]#3{%
-%    \end{macrocode}
-%    \begin{macrocode}
-  \ifcaption at star
-    \else
-    \caption at prepareanchor{#1}{#2}%
-    \memcaptioninfo{#1}{\csname the#1\endcsname}{#2}{#3}%
-    \@nameuse{nag at hascaptiontrue}%
-  \fi
-%    \end{macrocode}
-%    \begin{macrocode}
-  \par
-  \caption at beginex{#1}{#2}{#3}%
-    \caption at setfloatcapt{%
-      \caption at boxrestore
-      \if at minipage
-        \@setminipage
-      \fi
-      \caption at normalsize
-%    \end{macrocode}
-% \changes{v0.73}{2019/07/11}{\pkg{caption}: Fix for starred captions.}
-%    \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
-%    \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}
 \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
@@ -43453,7 +44397,7 @@
     {\ifcaption at star\else
        \begingroup
         \captionlabelfont
-         #1%
+         \LWR at isolate{#1}%                      lwarp
        \endgroup
      \fi}%
     {\ifcaption at star\else
@@ -43465,15 +44409,17 @@
      \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}%
 }
 %    \end{macrocode}
@@ -43482,16 +44428,16 @@
 % \begin{noindmacro}{\caption@@make@} \marg{} \marg{}
 %    \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.}
+% \changes{v0.71}{2019/04/08}{\pkg{caption}: Reduced underfull \cs{hbox} warnings.}
 %    \begin{macrocode}
 \long\def\caption at makecaption#1#2{%
 %   \caption at iftop
@@ -43502,17 +44448,50 @@
 %     {\vskip\abovecaptionskip\caption at rule}%
 %     {\vskip\belowcaptionskip}%
 }
+
+\AtBeginDocument{
+    \let\@makecaption\caption at makecaption
+}
 %    \end{macrocode}
 % \end{noindmacro}
 
 
+% Redefined to look ahead for \cs{centering}, etc:
+% \changes{v0.84}{2020/04/20}{\pkg{caption}: Improved integration.}
 %    \begin{macrocode}
-% \DeclareCaptionBox{none}{#2}
+\AtBeginDocument{
+  \def\@xfloat#1[#2]{%
+    \caption at ORI@xfloat{#1}[#2]%
+    \caption at settype{#1}%
+    \LWR at futurenonspacelet\LWR at mynexttoken\LWR at floatalignment%
+  }%
+  \def\@xdblfloat#1[#2]{%
+    \caption at ORI@xfloat{#1}[#2]%
+    \caption at settype{#1}%
+    \LWR at futurenonspacelet\LWR at mynexttoken\LWR at floatalignment%
+  }%
+}
+%    \end{macrocode}
+
+
+% Add non-breakable spaces:
+%    \begin{macrocode}
+\long\def\caption at lsep@default{.~}
+\long\def\caption at lsep@colon{:~}
+\long\def\caption at lsep@period{.~}
+\long\def\caption at lsep@space{~}
+\long\def\caption at lsep@endash{~\textendash~}
+\long\def\caption at lsep@arabi{~:~}
+%    \end{macrocode}
+
+%    \begin{macrocode}
+\DeclareCaptionBox{none}{#2}
 \DeclareCaptionBox{parbox}{%
-#2%
+    #2%
 }
+
 \DeclareCaptionBox{colorbox}{%
-#2%
+    #2%
 }
 %    \end{macrocode}
 
@@ -45906,9 +46885,6 @@
 %
 %
 %
-%
-%
-%
 % \iffalse
 %<*color>
 % \fi
@@ -45938,7 +46914,6 @@
 %
 %
 %
-%
 % \iffalse
 %<*colortbl>
 % \fi
@@ -46262,6 +47237,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 +47245,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 +47253,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 +47261,7 @@
          \PackageError{lwarp-ctable}{\MessageBreak
             You may not label a captionless table\MessageBreak
             Such a label can't be referenced}
+            {}
       \fi
    \fi
 %    \end{macrocode}
@@ -47014,6 +47993,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 +48009,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}
@@ -47645,7 +48629,7 @@
 %
 % \credits{John Lavagnino}
 %
-% \DescribePackage{endnotes} Used as-is.
+% \DescribePackage{endnotes} Patched for \HTML.
 %
 % \limitsendnotes
 %
@@ -48074,85 +49058,60 @@
 % \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.}
-%    \begin{macrocode}
-\newif\ifepigraphnoindent
-\newcommand\epigraphnoindent{\epigraphnoindenttrue}
-%    \end{macrocode}
 %
 % \iffalse
 %</epigraph>
@@ -49977,10 +50936,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:
@@ -50189,27 +51153,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 +51181,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}
@@ -50310,7 +51280,7 @@
         }%
         {marginblock}%
     }%
-    \captionsetup{type=#2}%
+    \renewcommand*{\@captype}{#2}%
 }
 {%
     \endLWR at BlockClassWP%
@@ -50410,8 +51380,8 @@
 
 \AtBeginDocument{
 \@ifpackageloaded{subcaption}
-{\booltrue{LWR at subcaptionloaded}}
-{\boolfalse{LWR at subcaptionloaded}}
+    {\booltrue{LWR at subcaptionloaded}}
+    {\boolfalse{LWR at subcaptionloaded}}
 }
 %    \end{macrocode}
 
@@ -50672,9 +51642,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 +51665,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 +52111,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 +52120,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}
     \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}
 %
@@ -51538,7 +52497,9 @@
 %    \end{macrocode}
 
 %    \begin{macrocode}
-\BeforeBeginEnvironment{forest}{\begin{lateximage}[forest]}
+\BeforeBeginEnvironment{forest}{%
+    \begin{lateximage}[-forest-~\PackageDiagramAltText]%
+}
 
 \AfterEndEnvironment{forest}{\end{lateximage}}
 
@@ -51546,8 +52507,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
@@ -52489,9 +53451,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}%
@@ -53126,7 +54087,7 @@
 \AtBeginDocument{
 
 \newcommand{\LWR at HTML@reflectbox}[1]{%
-\scalebox{-1}[1]{#1}%
+    \scalebox{-1}[1]{#1}%
 }% \reflectbox
 
 \LWR at formatted{reflectbox}
@@ -53146,7 +54107,7 @@
 \AtBeginDocument{
 
 \NewDocumentCommand{\LWR at HTML@resizebox}{s m m m}{%
-#4%
+    #4%
 }
 
 \LWR at formatted{resizebox}
@@ -53754,7 +54715,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%
 }
@@ -54774,7 +55735,7 @@
 %    \end{macrocode}
 %
 % (It is hard to patch this macro, so the entire thing is redefined here,
-%   with the \pkg{lwarp} modificaitions identified in comments.)
+%   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$}} {%
@@ -55217,7 +56178,7 @@
         {float:right; width:2in; margin:10pt}%
         {}%
         {marginblock}%
-    \captionsetup{type=#2}%
+    \renewcommand*{\@captype}{#2}%
     \minipage{\LWR at usersmarginparwidth}%
     \setlength{\marginparwidth}{.95\LWR at usersmarginparwidth}%
 }
@@ -55634,7 +56595,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}
@@ -55976,17 +56937,17 @@
 % 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%
+    \LWR at forcenewpage%
+    \LWR at atbeginverbatim{2}{programlisting}%
 
-\let\lsthk at EveryPar\LWR at origlsthkEveryPar%
+    \let\lsthk at EveryPar\LWR at origlsthkEveryPar%
 \else%
 %    \end{macrocode}
 % Inline, so open a \element{span}:
 %    \begin{macrocode}
-\ifbool{LWR at verbtags}{\LWR at htmltag{span class="inlineprogramlisting"}}{}%
+    \ifbool{LWR at verbtags}{\LWR at htmltag{span class="inlineprogramlisting"}}{}%
 \fi%
 }
 
@@ -56030,6 +56991,7 @@
 %
 % Patched for \pkg{lwarp}.
 %    \begin{macrocode}
+
 \def\lst at MakeCaption#1{%
 \LWR at traceinfo{MAKING CAPTION at #1}%
   \lst at ifdisplaystyle
@@ -56094,9 +57056,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 +57080,11 @@
   \fi
 \LWR at traceinfo{DONE WITH CAPTION at #1}%
 }
+
+\renewcommand{\lst at maketitle}[1]{%
+    \LWR at isolate{#1}%
+}%
+
 %    \end{macrocode}
 % \end{noindmacro}
 %
@@ -56308,13 +57275,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 +57298,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 +57323,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
@@ -58138,6 +59116,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}
@@ -60047,20 +61030,6 @@
 %    \begin{macrocode}
 \LWR at htmltag{td rowspan="#2" %
 %    \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%
@@ -60082,6 +61051,27 @@
 % \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%
@@ -60871,9 +61861,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 +61881,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 +61905,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 +61972,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,127 +61982,69 @@
 }
 
 \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}
@@ -61131,15 +62064,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 +62089,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}
@@ -61215,112 +62148,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}
@@ -61756,7 +62639,6 @@
 %
 %
 % Discard all options for \pkg{lwarp-nowidow}:
-
 % \codehtml
 %    \begin{macrocode}
 \LWR at ProvidesPackageDrop{nowidow}[2011/09/20]
@@ -61844,8 +62726,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}
@@ -62946,7 +63842,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 +63972,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}
 %
@@ -65221,7 +66124,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 +66210,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 +66363,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}
 %
@@ -65874,6 +66903,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 +66910,7 @@
 \LWR at ProvidesPackageDrop{rotfloat}[2004/01/04]
 
 \RequirePackage{float}
+\RequirePackage{rotating}
 %    \end{macrocode}
 %
 %
@@ -66086,11 +67117,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 +67137,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 +67221,6 @@
 
 \DeclareDocumentCommand{\ifthispageodd}{m m}{#1}
 
-\DeclareDocumentCommand{\titlepagestyle}{}{}
-
 \DeclareDocumentCommand{\cleardoublepageusingstyle}{m}{}
 \DeclareDocumentCommand{\cleardoubleemptypage}{}{}
 \DeclareDocumentCommand{\cleardoubleplainpage}{}{}
@@ -67139,16 +68238,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 +68272,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}
@@ -68278,6 +69378,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 +69390,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}
 %
@@ -69482,23 +70581,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
@@ -69758,7 +70852,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}
@@ -70754,7 +71848,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 +71864,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:
@@ -72221,16 +73316,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 +73341,7 @@
 % Redefine the footnote mark:
 %
 %    \begin{macrocode}
-\def\@makefnmark{\textsuperscript{\@thefnmark}}
+    \def\@makefnmark{\textsuperscript{\@thefnmark}}%
 %    \end{macrocode}
 %
 % \begin{center}
@@ -72258,11 +73355,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 +73371,8 @@
 %
 % Print the text:
 %    \begin{macrocode}
-##1%
-}% \@makefntext
+        ##1%
+    }% \@makefntext
 }
 %    \end{macrocode}
 % \end{macro}
@@ -72306,32 +73403,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 +74170,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}
@@ -73438,7 +74535,6 @@
 %
 % \codehtml
 %
-% Discard all options for \pkg{lwarp-transparent}:
 %    \begin{macrocode}
 \LWR at ProvidesPackagePass{transparent}[2019/11/29]
 %    \end{macrocode}
@@ -74391,11 +75487,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}{%
@@ -75100,37 +76197,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}
@@ -75562,7 +76659,7 @@
 }
 
 \AtBeginDocument{
-\LWR at formatted{colorbox}
+    \LWR at formatted{colorbox}
 }
 %    \end{macrocode}
 % \end{macro}
@@ -75599,7 +76696,7 @@
 }
 
 \AtBeginDocument{
-\LWR at formatted{colorboxBlock}
+    \LWR at formatted{colorboxBlock}
 }
 %    \end{macrocode}
 % \end{macro}
@@ -75635,7 +76732,7 @@
 }
 
 \AtBeginDocument{
-\LWR at formatted{fcolorbox}
+    \LWR at formatted{fcolorbox}
 }
 %    \end{macrocode}
 % \end{macro}
@@ -75688,7 +76785,7 @@
 }
 
 \AtBeginDocument{
-\LWR at formatted{fcolorboxBlock}
+    \LWR at formatted{fcolorboxBlock}
 }
 %    \end{macrocode}
 % \end{macro}
@@ -76520,8 +77617,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
@@ -77136,6 +78237,7 @@
 % \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 +78244,7 @@
     \LetLtxMacro\captionofbelow\captionof
     \LetLtxMacro\captionofabove\captionof
 }
+}
 
 \RenewDocumentEnvironment{captionbeside}{o m o o o s}
 {}
@@ -77247,10 +78350,10 @@
 \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:
 %    \begin{macrocode}
@@ -77267,14 +78370,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 +78425,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 +78633,11 @@
 \renewcommand\titlingpageend[2]{}
 %    \end{macrocode}
 %
+%
 % \subsection{Abstracts}
 %    \begin{macrocode}
+% \newlength{\absindent}
+% \newlength{\absparsep}
 \renewcommand*{\abstractcol}{}
 \renewcommand*{\abstractintoc}{}
 \renewcommand*{\abstractnum}{}
@@ -77722,10 +78863,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 +79177,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 +79273,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%
@@ -78125,17 +79307,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 +79342,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 +79361,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 +79397,7 @@
 }
 %    \end{macrocode}
 %
-% \subsection{Page notes}
+% \subsection{Footnotes and page notes}
 %
 %    \begin{macrocode}
 \renewcommand*{\feetabovefloat}{}
@@ -78216,7 +79406,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 +79418,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 +79475,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 +79578,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 +79660,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}
@@ -78444,7 +79676,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.
@@ -78464,8 +79698,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 +79719,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 +79739,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 +79750,7 @@
 \renewcommand{\printindex}[1][\BaseJobname]{\@input@{#1_html.ind}}
 \catcode`\_=8%
 %    \end{macrocode}
+% \end{noindmacro}
 %
 %    \begin{macrocode}
 \DeclareDocumentCommand{\newblock}{}{}
@@ -78643,52 +79884,104 @@
     \endgroup%
 }
 %    \end{macrocode}
-% ^^A *8* todo:
+
 %    \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 +79995,8 @@
 % \fi
 %
 %
+%
+%
 % \addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
 %
 %
@@ -78831,8 +80126,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}
@@ -78938,11 +80233,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}

Modified: trunk/Master/texmf-dist/source/latex/lwarp/lwarp.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/lwarp/lwarp.ins	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/source/latex/lwarp/lwarp.ins	2020-04-25 20:51:39 UTC (rev 54877)
@@ -86,6 +86,7 @@
 \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}}

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-abstract.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-abstract.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-abstract.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -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

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-adjmulticol.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-adjmulticol.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-adjmulticol.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -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: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithm2e.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithm2e.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithm2e.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -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: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-alltt.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-alltt.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-alltt.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -19,11 +19,19 @@
 \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{3}{alltt}%
+        }%
 }
 \AfterEndEnvironment{alltt}{%
-    \LWR at afterendverbatim{2}%
+    \ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}%
+        {}%
+        {%
+            \LWR at afterendverbatim{2}%
+        }%
 }
 }
 \endinput

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-amsthm.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-amsthm.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-amsthm.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -19,10 +19,13 @@
 
 \@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.%
     }
@@ -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: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-authblk.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-authblk.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-authblk.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -16,9 +16,12 @@
 %% 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.%
+        }
 }
 {}
 \LWR at ProvidesPackagePass{authblk}[2001/02/27]

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-backref.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-backref.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-backref.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -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: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -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{
 

Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -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: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage2e.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage2e.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage2e.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -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: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-caption.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-caption.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-caption.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -19,74 +19,46 @@
 \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/01/03]
 
-\renewcommand\caption at ibox[3]{%
-  \@testopt{\caption at iibox{#1}{#2}{#3}}{%
-        \linewidth% lwarp
-  }%
+\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%
+    \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%
+    \parbox[b]{\linewidth}{%
       #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%
-}
-
 \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
@@ -95,7 +67,7 @@
     {\ifcaption at star\else
        \begingroup
         \captionlabelfont
-         #1%
+         \LWR at isolate{#1}%                      lwarp
        \endgroup
      \fi}%
     {\ifcaption at star\else
@@ -107,16 +79,18 @@
      \fi}%
     {{%
         \captiontextfont
-        \caption at tfmt{#2}%
+        \let\\\newline%                         lwarp
+        \LWR at isolate{\caption at tfmt{#2}}%        lwarp
       }}%
+    \LWR at startpars%                              lwarp
 \LWR at traceinfo{caption@@@make done}%
 }
 
 \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%
 }
 
 \long\def\caption at makecaption#1#2{%
@@ -123,11 +97,37 @@
   \caption@@make{#1}{#2}%
 }
 
+\AtBeginDocument{
+    \let\@makecaption\caption at makecaption
+}
+
+\AtBeginDocument{
+  \def\@xfloat#1[#2]{%
+    \caption at ORI@xfloat{#1}[#2]%
+    \caption at settype{#1}%
+    \LWR at futurenonspacelet\LWR at mynexttoken\LWR at floatalignment%
+  }%
+  \def\@xdblfloat#1[#2]{%
+    \caption at ORI@xfloat{#1}[#2]%
+    \caption at settype{#1}%
+    \LWR at futurenonspacelet\LWR at mynexttoken\LWR at floatalignment%
+  }%
+}
+
+\long\def\caption at lsep@default{.~}
+\long\def\caption at lsep@colon{:~}
+\long\def\caption at lsep@period{.~}
+\long\def\caption at lsep@space{~}
+\long\def\caption at lsep@endash{~\textendash~}
+\long\def\caption at lsep@arabi{~:~}
+
+\DeclareCaptionBox{none}{#2}
 \DeclareCaptionBox{parbox}{%
-#2%
+    #2%
 }
+
 \DeclareCaptionBox{colorbox}{%
-#2%
+    #2%
 }
 
 \endinput

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-common-multimedia.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-common-multimedia.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-common-multimedia.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -73,8 +73,8 @@
     \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]{%
@@ -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%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-ctable.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-ctable.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-ctable.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -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

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-easy-todo.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-easy-todo.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-easy-todo.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -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: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-epigraph.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-epigraph.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-epigraph.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -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'.

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fixme.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fixme.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fixme.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -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: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-float.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-float.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-float.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -23,17 +23,21 @@
 \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]{%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-floatflt.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-floatflt.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-floatflt.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -37,7 +37,7 @@
         }%
         {marginblock}%
     }%
-    \captionsetup{type=#2}%
+    \renewcommand*{\@captype}{#2}%
 }
 {%
     \endLWR at BlockClassWP%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-floatrow.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-floatrow.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-floatrow.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -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

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fontaxes.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fontaxes.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fontaxes.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -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}
     \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: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-forest.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-forest.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-forest.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -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

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-graphics.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-graphics.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-graphics.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -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}%
@@ -434,7 +433,7 @@
 \AtBeginDocument{
 
 \newcommand{\LWR at HTML@reflectbox}[1]{%
-\scalebox{-1}[1]{#1}%
+    \scalebox{-1}[1]{#1}%
 }% \reflectbox
 
 \LWR at formatted{reflectbox}
@@ -444,7 +443,7 @@
 \AtBeginDocument{
 
 \NewDocumentCommand{\LWR at HTML@resizebox}{s m m m}{%
-#4%
+    #4%
 }
 
 \LWR at formatted{resizebox}

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -49,7 +49,7 @@
 
 \NewDocumentCommand{\LWR at hyperdefb}{m m +m}{%
     \LWR at ensuredoingapar%
-    \LWR at sublabel{#1.#2}%
+    \LWR at label@createtag{#1.#2}%
     #3%
     \endgroup%
 }

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-keyfloat.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-keyfloat.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-keyfloat.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -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}%
 }

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-lettrine.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-lettrine.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-lettrine.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -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}

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -52,14 +52,14 @@
 \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 forcenewpage%
+    \LWR at atbeginverbatim{2}{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="inlineprogramlisting"}}{}%
 \fi%
 }
 
@@ -73,6 +73,7 @@
 \fi%
 \LWR at origlst@DeInit%
 }
+
 \def\lst at MakeCaption#1{%
 \LWR at traceinfo{MAKING CAPTION at #1}%
   \lst at ifdisplaystyle
@@ -111,9 +112,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 +132,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}%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-longtable.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-longtable.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-longtable.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -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

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-mdframed.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-mdframed.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-mdframed.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -51,6 +51,7 @@
 }
 \newcommand*{\LWR at mdframedstart}{%
 \LWR at traceinfo{LWR at mdframedstart start}%
+    \LWR at spanwarninvalid{mdframe}%
 \LWR at stoppars%
 \LWR at htmltagc{div class="%
 mdframed%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-multirow.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-multirow.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-multirow.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -27,13 +27,6 @@
 \LWR at maybenewtablerow%
 \LWR at tabularleftedge%
 \LWR at htmltag{td rowspan="#2" %
-\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}" }{}%
-\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" %
-}%
 class="td%
 \LWR at getexparray{LWR at tablecolspec}{\arabic{LWR at tableLaTeXcolindex}}%
 \LWR at addcmidruletrim%
@@ -41,6 +34,14 @@
 \LWR at printbartag{\arabic{LWR at tableLaTeXcolindex}}%
 "%
 \LWR at tdstartstyles%
+\ifstrequal{#1}{c}{\LWR at tdaddstyle\LWR at print@mbox{vertical-align:middle}}{}%
+\ifstrequal{#1}{b}{\LWR at tdaddstyle\LWR at print@mbox{vertical-align:bottom}}{}%
+\ifstrequal{#1}{t}{\LWR at tdaddstyle\LWR at print@mbox{vertical-align:top}}{}%
+\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%
+}%
 \LWR at addcmidrulewidth%
 \LWR at addcdashline%
 \LWR at addtabularrulecolors%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-nfssext-cfr.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-nfssext-cfr.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-nfssext-cfr.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -17,7 +17,7 @@
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackagePass{nfssext-cfr}[2017/03/28]
 \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}{}
@@ -34,7 +34,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}{}
@@ -57,11 +57,11 @@
 \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@ubweight}{\renewcommand*{\LWR at f@series}{eb}}
-\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@dbweight}{\renewcommand*{\LWR at f@series}{db}}
+\newrobustcmd{\LWR at HTML@sbweight}{\renewcommand*{\LWR at f@series}{sb}}
+\newrobustcmd{\LWR at HTML@ubweight}{\renewcommand*{\LWR at f@series}{ub}}
+\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@dfshape}{}
 
 \ifdef{\LWR at HTML@swshape}{}{% duplicated by fontaxes
@@ -116,6 +116,9 @@
 \LWR at formatted{ubweight}
 \LWR at formatted{elweight}
 \LWR at formatted{ulweight}
+\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
@@ -123,114 +126,59 @@
 }
 
 \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@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@ubweight}{}
-\newcommand{\LWR at null@elweight}{}
-\newcommand{\LWR at null@ulweight}{}
-\newcommand{\LWR at null@dfshape}{}
-
-\ifdef{\LWR at HTML@swshape}{}{% duplicated by fontaxes
-    \newcommand{\LWR at null@swshape}{}
+\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\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\ubweight\@empty%
+    \LetLtxMacro\elweight\@empty%
+    \LetLtxMacro\ulweight\@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\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\ubweight\LWR at null@ubweight%
-\LetLtxMacro\elweight\LWR at null@elweight%
-\LetLtxMacro\ulweight\LWR at null@ulweight%
-\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}
@@ -249,15 +197,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}
@@ -274,12 +222,12 @@
 \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@textub}[1]{\texteb{#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@textub}[1]{{\LWR at HTML@ubweight\InlineClass{textub}{#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}
@@ -328,106 +276,55 @@
 \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@textdf}[1]{#1}
-
-\ifdef{\LWR at HTML@swshape}{}{% duplicated by fontaxes
-    \newrobustcmd{\LWR at null@textsw}[1]{#1}
+\FilenameNullify{%
+    \LetLtxMacro\textln\@firstofone%
+    \LetLtxMacro\textos\@firstofone%
+    \LetLtxMacro\textin\@firstofone%
+    \LetLtxMacro\textsu\@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\textub\@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@textub}[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\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\textub\LWR at null@textub%
-\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}

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-nowidow.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-nowidow.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-nowidow.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -17,7 +17,6 @@
 %% version 2005/12/01 or later.
 
 
-
 \LWR at ProvidesPackageDrop{nowidow}[2011/09/20]
 
 \newcommand*{\nowidow}[1][]{}

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-ntheorem.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-ntheorem.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-ntheorem.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -16,7 +16,20 @@
 %% and version 1.3 or later is part of all distributions of LaTeX
 %% version 2005/12/01 or later.
 
-\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}
 \boolfalse{LWR at ntheoremmarks}

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-parcolumns.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-parcolumns.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-parcolumns.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -45,7 +45,10 @@
         }%
         \setkeys{LWRparcols}{#1}%
     }
-    {\end{LWR at setvirtualpage}}
+    {%
+        \colplacechunks%
+        \end{LWR at setvirtualpage}%
+    }
 
 \newcommand{\LWR at parcolumns@onecol}[1]{%
     \ifbool{LWR at parcolumns@started}%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-parnotes.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-parnotes.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-parnotes.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -55,8 +55,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}
 }
 \begin{warpMathJax}
 \providecommand{\parnotename}{parnote}

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-komascript.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-komascript.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-komascript.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -54,6 +54,7 @@
 }
 }
 \AtBeginDocument{
+\AtBeginDocument{
     \LetLtxMacro\captionbelow\caption
     \LetLtxMacro\captionabove\caption
 
@@ -60,6 +61,7 @@
     \LetLtxMacro\captionofbelow\captionof
     \LetLtxMacro\captionofabove\captionof
 }
+}
 
 \RenewDocumentEnvironment{captionbeside}{o m o o o s}
 {}

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-memoir.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-memoir.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-memoir.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -41,7 +41,6 @@
 \RequirePackage{lwarp-parskip}
 \RequirePackage{lwarp-setspace}% req'd
 \RequirePackage{lwarp-showidx}
-\RequirePackage{lwarp-subcaption}% req'd for \subfloat
 
 
 \makeindex
@@ -48,7 +47,22 @@
 \RequirePackage{lwarp-titling}% req'd
 \RequirePackage{lwarp-tocloft}% req'd
 \RequirePackage{lwarp-verse}% req'd
-\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
+\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
+    }
+}
 
 \setstocksize{190in}{20in}
 \setlrmarginsandblock{2in}{2in}{*}
@@ -406,10 +420,9 @@
 \renewcommand*{\makeheadposition}[5]{}
 \renewcommand{\makepsmarks}[2]{}
 \renewcommand*{\makeheadfootstrut}[3]{}
-
-\renewcommand{\createplainmark}[3]{}
+\renewcommand{\createmark}[5]{\csdef{#1mark}[1]{}}
+\renewcommand{\createplainmark}[3]{\csdef{#1mark}{}}
 \renewcommand{\memUChead}[1]{}
-\renewcommand{\createmark}[5]{}
 \renewcommand*{\clearplainmark}[1]{}
 \renewcommand*{\clearmark}[1]{}
 \renewcommand{\addtopsmarks}[3]{}
@@ -636,10 +649,32 @@
 \renewcommand{\settocpreprocessor}[2]{}
 \DeclareRobustCommand{\cftpagenumbersoff}[1]{}
 \DeclareRobustCommand{\cftpagenumberson}[1]{}
+\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%
+}
+}
 \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}}%
+    }%
     \cslet{listof#2s}\relax%
     \cslet{listof#2es}\relax%
 }
@@ -667,7 +702,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%
@@ -696,14 +731,13 @@
 \renewcommand{\flegfigure}{\figurename}
 \renewcommand{\flegtoctable}{}
 \renewcommand{\flegtocfigure}{}
-\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}{}
 
@@ -727,11 +761,12 @@
 \renewcommand*{\sidecapmargin}[1]{}
 \scapmargleftfalse
 \renewcommand*{\setsidecappos}[1]{}
-
 \RenewDocumentEnvironment{sidecontcaption}{m o}
 {}
 {%
-    \ContinuedFloat%
+    \ifdef{\ContinuedFloat}%
+        {\ContinuedFloat}%
+        {\addtocounter{\@captype}{-1}}%
     \caption{#1}%
     \IfValueT{#2}{\label[\@captype]{#2}}%
 }
@@ -769,7 +804,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.}%
 }
 
@@ -781,7 +816,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.}%
 }
 
@@ -825,16 +860,32 @@
 \renewcommand*{\sidefootmarkstyle}[1]{}
 \renewcommand*{\sidefoottextfont}{}
 \renewcommand*{\sidefootform}{}
-
 \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}{}
+\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}{%
+        \def\@currentlabel{\@firstoftwo#1}%                 lwarp
+        \def\cref at currentlabel{%                            lwarp
+            [pagenote][\@secondoftwo#1][]\@firstoftwo#1%    lwarp
+        }%                                                  lwarp
+  }{}%
+  \pagenoteanchor{#4}%
+  \pageinnotes{#3}%
+  \prenotetext%
+}
 \renewcommand*{\epigraphposition}[1]{}
 \renewcommand*{\epigraphtextposition}[1]{}
 \renewcommand*{\epigraphsourceposition}[1]{}
@@ -866,10 +917,6 @@
 \renewcommand*{\PoemTitlefont}{}
 \renewenvironment{qframe}{\framed}{\endframed}
 \renewenvironment{qshade}{\shaded}{\endshaded}
-\renewcommand*{\commentsoff}[1]{\includecomment{#1}}
-\renewcommand*{\commentson}[1]{\excludecomment{#1}}
-\LetLtxMacro\renewcomment\commentson
-
 \renewcommand*{\setverbatimfont}[1]{}
 \renewcommand*{\tabson}[1]{}
 \renewcommand*{\tabsoff}{}
@@ -1087,32 +1134,50 @@
     \endgroup%
 }
 
-\RenewDocumentCommand{\subtop}{O{} O{} m}{%
-    \subfloat[#1][#2]{#3}%
-}
+\renewcommand{\@memsubbody}{%
+  \bgroup
+  \let\label=\memsub at label
+  \ifdonemaincaption\else
+    \advance\csname c@\@captype\endcsname\@ne
+  \fi
+  % \refstepcounter{sub\@captype}\@contkeep%
+  \@ifnextchar [%
+    {\@memsubfig}%
+    {\@memsubfig[\@empty]}}
 
-\RenewDocumentCommand{\subbottom}{O{} O{} m}{%
-    \subfloat[#1][#2]{#3}%
-}
-\renewcommand{\contsubtop}{%
-    \ContinuedFloat
-    \subtop%
-}
+\renewcommand{\@memcontsubbody}{%
+  \bgroup
+  \let\label=\memsub at label
+  \@contset
+  % \refstepcounter{sub\@captype}\@contkeep%
+  \@ifnextchar [%
+    {\@memsubfig}%
+    {\@memsubfig[\@empty]}}
 
-\renewcommand{\contsubbottom}{%
-    \ContinuedFloat
-    \subbottom%
+\long\def\@memsubfloat#1[#2][#3]#4{%
+  \bgroup%
+    \mem at step@subcounter%
+    \LWR at stoppars%
+    \minipagefullwidth%                 lwarp
+    \begin{minipage}{\linewidth}%       lwarp
+    \bgroup
+    \if at contbotsub
+      #4% \box\@tempboxa
+      \egroup
+      \ifx \@empty#3\relax \else
+        \@memsubcaption{#1}{#2}{#3}%
+      \fi
+    \else
+      \ifx \@empty#3\relax \else
+        \@memsubcaption{#1}{#2}{#3}%
+      \fi\egroup
+      #4% \box\@tempboxa
+    \fi
+    \end{minipage}%                     lwarp
+    \LWR at startpars%                     lwarp
+  \egroup
+\egroup
 }
-\renewcommand{\subconcluded}{}
-
-\let\contsubtable\contsubtop
-\let\contsubfigure\contsubbottom
-\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]{}
 \newlistof{tableofcontents}{toc}{\contentsname}
 \newlistof{listoffigures}{lof}{\listfigurename}
 \newlistof{listoftables}{lot}{\listtablename}

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-quoting.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-quoting.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-quoting.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -26,7 +26,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}}
 
 \endinput
 %%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-realscripts.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-realscripts.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-realscripts.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -15,15 +15,126 @@
 %%   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{realscripts}[2016/02/13]
-\let\realsuperscript\textsuperscript
-\let\realsubscript\textsubscript
+\LWR at ProvidesPackagePass{realscripts}[2016/02/13]
+\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]{%
@@ -40,18 +151,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]{}%
 }
 \endinput
 %%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-rotfloat.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-rotfloat.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-rotfloat.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -20,6 +20,7 @@
 \LWR at ProvidesPackageDrop{rotfloat}[2004/01/04]
 
 \RequirePackage{float}
+\RequirePackage{rotating}
 \RenewDocumentCommand{\newfloat}{m m m o}{%
 \IfValueTF{#4}%
 {%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-scrextend.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-scrextend.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-scrextend.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -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{scrextend}[2018/03/30]
+\LWR at ProvidesPackageDrop{scrextend}[2020/01/24]
 \DeclareDocumentCommand{\setkomafont}{m m}{}
 \DeclareDocumentCommand{\addkomafont}{m m}{}
 \DeclareDocumentCommand{\usekomafont}{m}{}
@@ -27,15 +27,73 @@
 \DeclareDocumentCommand{\useseriesofkomafont}{m}{}
 \DeclareDocumentCommand{\useshapeofkomafont}{m}{}
 
+\providecommand*{\coverpagetopmargin}{}
+\providecommand*{\coverpagebottommargin}{}
+\providecommand*{\coverpageleftmargin}{}
+\providecommand*{\coverpagerightmargin}{}
+
 \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}%
+    \renewcommand*{\cr}{}%
+    \renewcommand*{\crcr}{}%
+    \renewcommand*{\noalign}{}%
+        \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}}%
+
+
 \DeclareDocumentCommand{\publishers}{m}{\published{#1}}
+
 \DeclareDocumentCommand{\uppertitleback}{m}{}
 \DeclareDocumentCommand{\lowertitleback}{m}{}
 \DeclareDocumentCommand{\dedication}{m}{}
@@ -42,8 +100,6 @@
 
 \DeclareDocumentCommand{\ifthispageodd}{m m}{#1}
 
-\DeclareDocumentCommand{\titlepagestyle}{}{}
-
 \DeclareDocumentCommand{\cleardoublepageusingstyle}{m}{}
 \DeclareDocumentCommand{\cleardoubleemptypage}{}{}
 \DeclareDocumentCommand{\cleardoubleplainpage}{}{}

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-sidenotes.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-sidenotes.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-sidenotes.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -16,15 +16,15 @@
 %% and version 1.3 or later is part of all distributions of LaTeX
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackagePass{sidenotes}
-\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
@@ -40,11 +40,11 @@
 }
 \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}

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-slantsc.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-slantsc.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-slantsc.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -19,10 +19,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%
 }
 \endinput
 %%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-subcaption.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-subcaption.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-subcaption.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -16,19 +16,14 @@
 %% and version 1.3 or later is part of all distributions of LaTeX
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackagePass{subcaption}[2018/05/01]
-\ifdef{\subcaption at minipage}{
-    \xpatchcmd{\subcaption at minipage}
-        {\minipage}
-        {\minipagefullwidth\minipage}
-        {}
-        {\LWR at patcherror{subcaption}{subcaption at minipage}}
-}{}
-\ifdef{\subcaptionbox}{
-    \xpretocmd{\subcaptionbox}
-        {\minipagefullwidth}
-        {}
-        {\LWR at patcherror{subcaption}{subcaptionbox}}
-}{}
+\xpretocmd{\subcaption at iiminipage}
+    {\minipagefullwidth}
+    {}
+    {\LWR at patcherror{subcaption}{subcaption at iiminipage}}
+\xpretocmd{\subcaptionbox}
+    {\minipagefullwidth}
+    {}
+    {\LWR at patcherror{subcaption}{subcaptionbox}}
 \endinput
 %%
 %% End of file `lwarp-subcaption.sty'.

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-subfig.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-subfig.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-subfig.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -153,7 +153,7 @@
                    \@nameuse{thesub\@captype}.)}}
 
 \renewcommand{\sf at subref}[1]{%
-\LWR at subnewref{#1}{sub@#1}%
+    \LWR at subnewref{#1}{sub@#1}%
 }
 \renewcommand{\sf@@subref}[1]{\LWR at orig@pageref{sub@#1}}
 \LetLtxMacro\LWR at orig@newsubfloat\@newsubfloat

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-textcomp.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-textcomp.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-textcomp.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -97,7 +97,7 @@
 \newcommand*{\LWR at HTML@capitalmacron}[1]{#1\HTMLunicode{304}}
 \newcommand*{\LWR at HTML@capitaldotaccent}[1]{#1\HTMLunicode{307}}
 \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}
@@ -113,6 +113,7 @@
 \LWR at formatted{capitalbreve}
 \LWR at formatted{capitalmacron}
 \LWR at formatted{capitaldotaccent}
+
 \LWR at formatted{textcircled}
 \FilenameNullify{%
     \renewcommand*{\textdegree}{}%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-titling.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-titling.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-titling.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -41,21 +41,22 @@
 {
 \end{titlepage}
 }
+\AtBeginDocument{
+    \pretitle{}
+    \posttitle{}
 
-\pretitle{}
-\posttitle{}
+    \preauthor{}
+    \postauthor{}
 
-\preauthor{}
-\postauthor{}
-
-\predate{}
-\postdate{}
+    \predate{}
+    \postdate{}
+}
 \renewcommand*{\LWR at maketitlesetup}{%
-\def\@makefnmark{\textsuperscript{\@thefnmark}}
-\long\def\@makefntext##1{%
-\makethanksmark~%
-##1%
-}% \@makefntext
+    \def\@makefnmark{\textsuperscript{\@thefnmark}}%
+    \long\def\@makefntext##1{%
+        \makethanksmark~%
+        ##1%
+    }% \@makefntext
 }
 \renewcommand{\thanksfootmark}{%
         \thanksscript{%
@@ -63,13 +64,13 @@
         }%
 }
 \renewcommand*{\maketitle}{%
-\begin{titlepage}
-\@bsmarkseries
-\LWR at maketitlesetup
-\@maketitle
-\LWR at stoppars\@thanks\LWR at startpars
-\end{titlepage}
-\@bscontmark
+    \begin{titlepage}
+    \@bsmarkseries
+    \LWR at maketitlesetup
+    \@maketitle
+    \LWR at stoppars\@thanks\LWR at startpars
+    \end{titlepage}
+    \@bscontmark
 }
 \DeclareDocumentCommand{\@maketitle}{}{%
     \maketitlehooka

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-tocloft.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-tocloft.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-tocloft.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -239,21 +239,21 @@
 
 \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}{}%
 }
 
 \newcommand{\cftchapterprecis}[1]{%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-wrapfig.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-wrapfig.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-wrapfig.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -43,35 +43,35 @@
 
 \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}

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-xcolor.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-xcolor.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-xcolor.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -109,7 +109,7 @@
 }
 
 \AtBeginDocument{
-\LWR at formatted{colorbox}
+    \LWR at formatted{colorbox}
 }
 
 \NewDocumentCommand{\LWR at HTML@colorboxBlock}{O{named} m +m}{%
@@ -127,7 +127,7 @@
 }
 
 \AtBeginDocument{
-\LWR at formatted{colorboxBlock}
+    \LWR at formatted{colorboxBlock}
 }
 
 \NewDocumentCommand{\LWR at HTML@fcolorbox}{O{named} m O{named} m +m}{%
@@ -151,7 +151,7 @@
 }
 
 \AtBeginDocument{
-\LWR at formatted{fcolorbox}
+    \LWR at formatted{fcolorbox}
 }
 
 \NewDocumentCommand{\LWR at HTML@fcolorboxBlock}{O{named} m O{named} m +m}{%
@@ -183,7 +183,7 @@
 }
 
 \AtBeginDocument{
-\LWR at formatted{fcolorboxBlock}
+    \LWR at formatted{fcolorboxBlock}
 }
 
 \NewDocumentCommand{\LWR at subfcolorminipage}{m m m m}{%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-xpinyin.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-xpinyin.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-xpinyin.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -68,6 +68,8 @@
 
 \ExplSyntaxOff
 \renewcommand*{\LWR at disablepinyin}{\disablepinyin}
+
+\FilenameNullify{\LWR at disablepinyin}
 \endinput
 %%
 %% End of file `lwarp-xpinyin.sty'.

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp.sty	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp.sty	2020-04-25 20:51:39 UTC (rev 54877)
@@ -17,7 +17,7 @@
 %% version 2005/12/01 or later.
 \NeedsTeXFormat{LaTeX2e}[1999/12/01]
 \ProvidesPackage{lwarp}
-    [2020/03/25 v0.83  Allows LaTeX to directly produce HTML5 output.]
+    [2020/04/24 v0.84  Allows LaTeX to directly produce HTML5 output.]
 
 
 
@@ -50,12 +50,13 @@
         {%
             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
+        {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.}
+        which must also be moved after Lwarp.}
 }
 {}
 }
@@ -83,8 +84,11 @@
 {}
 {
     \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}''.}
 }
 }
 
@@ -146,7 +150,6 @@
 \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{colortab}{colortbl}
 \LWR at earlyloadnever{doublespace}{setspace}
@@ -225,6 +228,7 @@
 \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}
@@ -641,9 +645,12 @@
 \LWR at loadafter{xy}
 \LWR at loadafter{zwpagelayout}
 \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.%
+        }
 }
 \let\LWR at mdfive\pdfmdfivesum
 \ifLuaTeX
@@ -703,7 +710,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
@@ -722,6 +730,10 @@
 \ifpTeX
     \RequirePackage{upquote}
 \fi
+\newlength{\LWR at templengthone}
+\newlength{\LWR at templengthtwo}
+\newlength{\LWR at templengththree}
+\newcounter{LWR at tempcountone}
 \newcommand*\LWR at providelength[1]{%
     \ifdeflength{#1}{}{\newlength{#1}}%
 }
@@ -739,9 +751,12 @@
 
 
 \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, macro #2.\MessageBreak
+            Lwarp may need to be updated%
+        }%
+        {Please contact the maintainer of the Lwarp package.}%
 }
 \newcommand{\LWR at isolate}[1]{#1}%
 
@@ -1007,37 +1022,45 @@
 \newcommand{\warpHTMLonly}[1]{\ifbool{warpingHTML}{#1}{}}
 \RequirePackage{comment}
 
-\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}
+    \csarg\def{#1}{\endgroup \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}}
 
-\includecomment{warpall}
+\LWR at includecomment{warpall}{all}
 
 \ifbool{warpingHTML}
-    {\includecomment{warpHTML}}
-    {\excludecomment{warpHTML}}%
+    {\LWR at includecomment{warpHTML}{html}}
+    {\LWR at excludecomment{warpHTML}{html}}
 
 \ifbool{warpingprint}
-    {\includecomment{warpprint}}
-    {\excludecomment{warpprint}}
+    {\LWR at includecomment{warpprint}{print}}
+    {\LWR at excludecomment{warpprint}{print}}
 
 \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}
 
 \ifbool{LWR at creatinglwarpmk}
-    {\includecomment{LWR at createlwarpmk}}
-    {\excludecomment{LWR at createlwarpmk}}
+    {\LWR at includecomment{LWRcreatelwarpmk}{lwarpmk}}
+    {\LWR at excludecomment{LWRcreatelwarpmk}{lwarpmk}}
 
 
 \begin{warpHTML}
@@ -1245,7 +1268,6 @@
 \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}
@@ -1367,8 +1389,9 @@
 
 \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}}%
@@ -1419,16 +1442,8 @@
 \end{warpHTML}
 
 
-\begin{warpHTML}
 
-\LWR at origRequirePackage{caption}
-\AtBeginDocument{\RequirePackage{lwarp-caption}}%
 
-\end{warpHTML}
-
-
-
-
 \begin{warpall}
 
 \newwrite\LWR at quickfile%
@@ -1721,14 +1736,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
 \let\LWR at orignewpage\newpage
 
@@ -1770,21 +1778,33 @@
 
 \begin{warpHTML}
 \AtBeginDocument{
-\LetLtxMacro\LWR at origt\t
+\LetLtxMacro\LWR at origtie\t
 \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
-\renewcommand*{\=}[1]{#1\HTMLunicode{0305}}
+\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
+\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
 \def\LWR at t#1#2{#1\HTMLunicode{0361}#2}
@@ -1791,18 +1811,24 @@
 \renewcommand*{\t}[1]{\LWR at t#1}
 \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
@@ -1811,7 +1837,7 @@
 
 
 
-\excludecomment{LWRwriteconf}
+\LWR at excludecomment{LWRwriteconf}{writeconf}
 \begin{warpprint}
 \fullexpandarg%
 \IfSubStr*{\jobname}{-pstool}
@@ -1823,7 +1849,7 @@
     }
     {
         \PackageInfo{lwarp}{Generating lwarp configuration files,}%
-        \includecomment{LWRwriteconf}
+        \LWR at includecomment{LWRwriteconf}{writeconf}
     }
 \end{warpprint}
 
@@ -1856,9 +1882,12 @@
     #1 \jobname#2%
 }
 \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.%
+        }%
 }
 \newcommand*{\LWR at latexmkvar}[2]{%
     -e
@@ -2111,10 +2140,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;
@@ -2143,6 +2168,50 @@
         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 {
@@ -2183,16 +2252,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 {
@@ -2654,6 +2723,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;
@@ -3125,6 +3195,26 @@
         "Courier New", monospace;
 }
 
+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 ;
@@ -3215,6 +3305,7 @@
     text-align:left ;
 }
 
+/* for \LinkHome, \LinkPrevious, and \LinkNext: */
 a.linkhome { font-weight:bold ; font-size: 1em ;}
 
 div.lateximagesource { padding: 0px ; margin: 0px ; display: none; }
@@ -3532,6 +3623,7 @@
         box-shadow: none ;
     }
     span.sidetocthetitle { display: inline }
+    nav.topnavigation { display:block }
     nav.botnavigation { display:block }
     div.bodycontainer { width: 100% }
     .marginpar {
@@ -4191,13 +4283,13 @@
 
 
 
-\begin{LWR at createlwarpmk}
+\begin{LWRcreatelwarpmk}
 \begin{filecontents*}[overwrite]{lwarpmk.lua}
 #!/usr/bin/env texlua
 
 -- Copyright 2016-2020 Brian Dunn
 
-printversion = "v0.83"
+printversion = "v0.84"
 requiredconfversion = "2" -- also at *lwarpmk.conf
 
 function printhelp ()
@@ -4574,7 +4666,7 @@
 -- 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 " ..
@@ -4588,7 +4680,8 @@
     sourcename .. "_html.pdf " ..
     sourcename .. "_html.html " ..
     sourcename .. "_html.sidetoc " ..
-    " *_html_inc.* "
+    " *_html_inc.* " ..
+    " comment_*.cut"
     )
 end
 
@@ -5099,7 +5192,7 @@
 
 end -- not --version
 \end{filecontents*}
-\end{LWR at createlwarpmk}
+\end{LWRcreatelwarpmk}
 
 
 \begin{warpHTML}
@@ -5293,7 +5386,7 @@
 \providecommand*{\HomeHTMLFilename}{\BaseJobname}
 
 \newcommand*{\SetHTMLFileNumber}[1]{%
-\setcounter{LWR at htmlfilenumber}{#1}%
+    \setcounter{LWR at htmlfilenumber}{#1}%
 }
 
 \newbool{FileSectionNames}
@@ -5303,6 +5396,15 @@
 
 \begin{warpHTML}
 
+\newcounter{LWR at HTMLpagenum}
+\setcounter{LWR at HTMLpagenum}{0}
+
+\newcounter{LWR at htmlseqfilenumber}
+\setcounter{LWR at htmlseqfilenumber}{0}
+
+\newbool{LWR at setseqfilelabel}
+\setbool{LWR at setseqfilelabel}{false}
+
 \newcounter{LWR at htmlfilenumber}
 \setcounter{LWR at htmlfilenumber}{0}
 
@@ -5312,15 +5414,15 @@
 \LWR at disablepinyin%
 \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%
@@ -5327,14 +5429,16 @@
 }%
 {%
     \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%
     }%
     {%
         \HTMLFilename\LWR at isolate{\LWR at sanitized}.html%
@@ -5345,12 +5449,12 @@
 }
 
 \newcommand*{\LWR at htmlrefsectionfilename}[1]{%
-\LWR at traceinfo{LWR at htmlrefsectionfilename: !\detokenize{#1}!}%
-\begingroup%
-\LWR at nullfonts%
-\LWR at htmlsectionfilename{\LWR at htmlfileref{#1}}%
-\endgroup%
-\LWR at traceinfo{LWR at htmlrefsectionfilename: done}%
+    \LWR at traceinfo{LWR at htmlrefsectionfilename: !\detokenize{#1}!}%
+    \begingroup%
+    \LWR at nullfonts%
+    \LWR at htmlsectionfilename{\LWR at htmlfileref{#1}}%
+    \endgroup%
+    \LWR at traceinfo{LWR at htmlrefsectionfilename: done}%
 }
 
 \end{warpHTML}
@@ -5365,7 +5469,7 @@
 \begin{warpHTML}
 
 \newcommand*{\LinkHome}{%
-\LWR at subhyperrefclass{\HomeHTMLFilename.html}{\linkhomename}{linkhome}%
+    \LWR at subhyperrefclass{\HomeHTMLFilename.html}{\linkhomename}{linkhome}%
 }
 
 \end{warpHTML}
@@ -5390,20 +5494,71 @@
 
 \begin{warpHTML}
 
-\newcommand*{\LWR at topnavigation}{
-\LWR at htmlelementclassline{nav}{topnavigation}{\LinkHome}
+\newcommand*{\LWR at topnavigation}{%
+    \LWR at htmlelementclassline{nav}{topnavigation}{\LinkHome}
 }
 
-\newcommand*{\LWR at botnavigation}{
-\LWR at htmlelementclassline{nav}{botnavigation}{\LinkHome}
+\newcommand*{\LWR at botnavigation}{%
+    \LWR at htmlelementclassline{nav}{botnavigation}{\LinkHome}
 }
 
 \end{warpHTML}
 
 
+\begin{warpall}
 
+\newcommand*{\linkpreviousname}{Previous}
+
+\newcommand*{\linknextname}{Next}
+
+\end{warpall}
+
+\begin{warpprint}
+
+\newcommand*{\LinkPrevious}{}
+
+\newcommand*{\LinkNext}{}
+
+\end{warpprint}
+
 \begin{warpHTML}
 
+\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}%
+    }%
+}
+
+\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{warpHTML}
+
+
+
+\begin{warpHTML}
+
 \newcommand*{\LWR at subprintstack}{
 \LWR at closedepthone\ \LWR at closedepthtwo\ \LWR at closedepththree\
 \LWR at closedepthfour\ \LWR at closedepthfive\ \LWR at closedepthsix\
@@ -5573,6 +5728,24 @@
 \endgroup%
 }
 
+\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,%
+        }%
+    }{}%
+}
+
+\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,%
+        }%
+    }{}%
+}
+
 \newcommand*{\LWR at nestspanitem}{%
 \if at newlist\else{\LWR at htmltagc{br /}}\fi%
 \LWR at origitem%
@@ -5589,10 +5762,15 @@
     \LWR at traceinfo{LWR at nestspan: NOT inside a lateximage}%
     \addtocounter{LWR at spandepth}{1}%
     \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%
@@ -5748,12 +5926,12 @@
 \NewDocumentEnvironment{BlockClass}{o m}{}{}%
 \end{warpprint}
 \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}
@@ -5762,7 +5940,7 @@
 \end{warpall}
 \begin{warpHTML}
 \newcommand{\LWR at HTML@BlockClassSingle}[2]{%
-\LWR at htmlelementclassline{div}{#1}{#2}%
+    \LWR at htmlelementclassline{div}{#1}{#2}%
 }
 
 \LWR at formatted{BlockClassSingle}
@@ -5947,7 +6125,10 @@
 
 \newcommand*{\LWR at startpars}%
 {%
-\ifnumcomp{\value{LWR at spandepth}}{>}{0}%
+\ifboolexpr{
+    test {\ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}} or
+    test {\ifnumcomp{\value{LWR at spandepth}}{>}{0}}
+}%
 {}%
 {%
     \ifbool{LWR at doingstartpars}%
@@ -5964,7 +6145,10 @@
 
 \newcommand*{\LWR at stoppars}%
 {%
-\ifnumcomp{\value{LWR at spandepth}}{>}{0}%
+\ifboolexpr{
+    test {\ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}} or
+    test {\ifnumcomp{\value{LWR at spandepth}}{>}{0}}
+}%
 {}%
 {%
     \ifbool{LWR at doingapar}%
@@ -5989,8 +6173,8 @@
 \begin{warpHTML}
 
 \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
 
@@ -6000,11 +6184,15 @@
 \begin{warpall}
 
 \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}{}
 \newcommand{\HTMLFirstPageTop}[1]{%
     \renewcommand{\LWR at firstpagetop}{#1}%
 }
+\newcommand{\HTMLFirstPageBottom}[1]{%
+    \renewcommand{\LWR at firstpagebottom}{#1}%
+}
 \newcommand{\HTMLPageTop}[1]{%
     \renewcommand{\LWR at pagetop}{#1}%
 }
@@ -6158,7 +6346,7 @@
 \LWR at traceinfo{@mpfootnotetext: done}%
 }
 \AtBeginDocument{
-\def\thempfootnote{\@alph\c at mpfootnote}
+    \def\thempfootnote{\@alph\c at mpfootnote}
 }
 \newcommand*{\LWR@@printpendingfootnotes}[1]{%
 \expandafter\ifvoid\csname LWR@#1box\endcsname\else
@@ -6286,6 +6474,20 @@
 }%
 }
 
+\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}
+}
+
 \newcommand*{\LWR at filenamenoblanks}[1]{%
 \begingroup
 \LWR at nullfonts%
@@ -6300,6 +6502,27 @@
 \LWR at simplifyname{\textless}
 \LWR at simplifyname{\textgreater}
 \edef\LWR at thisnewfilename{\detokenize\expandafter{\LWR at thisnewfilename}}%
+\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%
+        }
+    }{}%
+}{}
 \LWR at traceinfo{LWR at filenamenoblanks edef: !\LWR at thisnewfilename!}%
 \fullexpandarg%
 \LWR at simplifyname*{ }
@@ -6351,19 +6574,19 @@
 \LWR at simplifyname*{-the-}
 \LWR at simplifyname*{-THE-}
 \LWR at simplifycustom%
-\LWR at simplifyname*{-----}
-\LWR at simplifyname*{----}
-\LWR at simplifyname*{---}
-\LWR at simplifyname*{--}
 \ifPDFTeX% pdflatex or dvi latex
 \ifdefstring{\inputencodingname}{utf8}{%
-\LWR at simplifyname*{—}
-\LWR at simplifyname*{–}
+    \LWR at simplifyname*{—}
+    \LWR at simplifyname*{–}
 }{}%
 \else% not PDFTeX
-\LWR at simplifyname*{—}
-\LWR at simplifyname*{–}
+    \LWR at simplifyname*{—}
+    \LWR at simplifyname*{–}
 \fi%
+\LWR at simplifyname*{-----}
+\LWR at simplifyname*{----}
+\LWR at simplifyname*{---}
+\LWR at simplifyname*{--}
 \IfBeginWith{\LWR at thisnewfilename}{\detokenize{-}}{%
     \StrGobbleLeft{\LWR at thisnewfilename}{1}[\LWR at thisnewfilename]%
 }{}%
@@ -6470,7 +6693,7 @@
     \ifbool{LWR at warnedcustomizemathjax}{}{%
         \StrLen{\detokenize{#1}}[\LWR at tempone]%
         \ifnumgreater{\LWR at tempone}{200}{%
-            \AtBeginDocument{%
+            \AtEndDocument{%
                 \PackageWarningNoLine{lwarp}{%
                     To ensure faster MathJax compilation, place each\MessageBreak
                     custom macro in its own \protect\CustomizeMathJax.\MessageBreak
@@ -6568,6 +6791,26 @@
 
 \begin{warpHTML}
 
+\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}
+        }%
+    }%
+}
+
 \newcommand*{\LWR at newhtmlfile}[1]{
 \LWR at traceinfo{LWR at newhtmlfile}
 \LWR at htmlelementclassend{section}{textbody}
@@ -6576,17 +6819,7 @@
 
 \LWR at printpendingfootnotes
 
-\ifbool{FormatEPUB}
-{}
-{
-    \ifdefempty{\LWR at pagebottom}{}{%
-        \LWR at htmlelement{footer}
-
-        \LWR at pagebottom
-
-        \LWR at htmlelementend{footer}
-    }
-}
+\ifbool{FormatEPUB}{}{\LWR at createfooter}
 \ifthenelse{\boolean{FormatEPUB}\OR\boolean{FormatWP}}
     {}
     {\ifnumcomp{\value{LWR at htmlfilenumber}}{>}{0}{\LWR at botnavigation}{}}
@@ -6596,8 +6829,8 @@
 \LWR at htmltag{/html}\LWR at orignewline
 \LWR at traceinfo{LWR at newhtmlfile: about to LWR at orignewpage}
 \LWR at orignewpage
-
 \addtocounter{LWR at htmlfilenumber}{1}%
+\addtocounter{LWR at htmlseqfilenumber}{1}%
 \ifbool{FileSectionNames}%
 {%
     \LWR at filenamenoblanks{#1}%
@@ -6605,23 +6838,25 @@
     \ifcsundef{LWR at filename\LWR at hashedname}{%
         \csdef{LWR at filename\LWR at hashedname}{}%
     }{%
-        \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%
+            }%
+    }%
+}%
 {\renewcommand*{\LWR at thisfilename}{\arabic{LWR at htmlfilenumber}}}
 \LWR at traceinfo{LWR at newhtmlfile: about to print start file}%
 \begingroup%
@@ -6660,7 +6895,7 @@
 
 \LWR at htmlelementclass{div}{bodycontainer}
 \LWR at htmlelementclass{section}{textbody}
-
+\boolfalse{LWR at setseqfilelabel}
 \ifthenelse{\boolean{FormatEPUB}\OR\boolean{FormatWP}}%
     {}%
     {%
@@ -6741,6 +6976,7 @@
 \IfValueTF{#2}%
     {\LWR at traceinfo{LWR at section: starting #4 #2}}%
     {\LWR at traceinfo{LWR at section: starting #4 #3}}%
+    \LWR at spanwarninvalid{section}%
 \LWR at maybeprintpendingfootnotes{\csuse{LWR at depth#4}}%
 \LWR at stoppars%
 \LWR at startnewdepth{#4}%
@@ -6876,7 +7112,7 @@
             {}%
         \LWR at traceinfo{LWR at section: finished print section number}%
     }{}%
-}% end of not starred
+}% not starred
 \LWR at traceinfo{LWR at section: about to print the section name}%
 \LWR at isolate{#3}%
 \LWR at traceinfo{LWR at section: about to close the heading tag}%
@@ -6885,6 +7121,10 @@
 \LWR at traceinfo{LWR at section: about to create the LaTeX label}%
 \setcounter{LWR at latestautopage}{\value{page}}%
 \LWR at newautopagelabel{LWR at currentautosec}\LWR at orignewline%
+\ifbool{LWR at setseqfilelabel}{}{%
+    \label{\BaseJobname-autofile-\arabic{LWR at htmlseqfilenumber}}%
+    \booltrue{LWR at setseqfilelabel}%
+}%
 \ifthenelse{%
     \cnttest{\@nameuse{LWR at depth#4}}{<}{\LWR at depthparagraph}%
 }%
@@ -6987,20 +7227,20 @@
 \newcommand*{\LWR at currentHTMLLanguage}{en-US}
 
 \newcommand*{\HTMLLanguage}[1]{%
-\renewcommand*{\LWR at currentHTMLLanguage}{#1}%
+    \renewcommand*{\LWR at currentHTMLLanguage}{#1}%
 }
 
 \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%
 
@@ -7029,6 +7269,14 @@
 \begingroup%
 \LWR at nullfonts%
 \edef\theHTMLSection{#1}%
+\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]
+\IfBeginWith{\theHTMLSection}{\detokenize{-}}{%
+    \StrGobbleLeft{\theHTMLSection}{1}[\theHTMLSection]%
+}{}%
 \LWR at htmltag{!DOCTYPE html}\LWR at orignewline
 \LWR at htmltag{%
     html lang=\LWR at orig@textquotedbl\LWR at currentHTMLLanguage\LWR at orig@textquotedbl%
@@ -7154,6 +7402,8 @@
 \LWR at htmlelementclass{div}{bodycontainer}
 \LWR at traceinfo{LWR at lwarpStart: Generating textbody.}
 \LWR at htmlelementclass{section}{textbody}
+\booltrue{LWR at setseqfilelabel}%
+\label{\BaseJobname-autofile-\arabic{LWR at htmlseqfilenumber}}
 \LWR at patchlists
 \catcode`\$=\active
 \immediate\write\@mainaux{\catcode`\string$\active}%
@@ -7185,18 +7435,13 @@
 \LWR at stoppars
 \LWR at closeprevious{finished}
 
+\label{\BaseJobname-autofile-last}
 \LWR at htmlelementclassend{section}{textbody}
 \LWR at htmlelementclassend{div}{bodycontainer}
 \LWR at htmlelementclassend{div}{bodyandsidetoc}
 \LWR at printpendingfootnotes
-\ifdefempty{\LWR at pagebottom}{}{%
-    \LWR at htmlelement{footer}
+\ifbool{FormatEPUB}{}{\LWR at createfooter}
 
-    \LWR at pagebottom
-
-    \LWR at htmlelementend{footer}
-}
-
 \ifthenelse{\boolean{FormatEPUB}\OR\boolean{FormatWP}}
     {}
     {
@@ -7227,13 +7472,15 @@
     }
     {}
     {
-        \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%
+        \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%
+            }
         }
     }
 
@@ -7274,9 +7521,13 @@
 \LWR at printpendingfootnotes
 }
 \end{warpHTML}
-\begin{warpall}
+\begin{warpprint}
+\newcommand*{\printthanks}{\@thanks}
+\end{warpprint}
+
+\begin{warpHTML}
 \newcommand*{\printthanks}{\LWR at stoppars\@thanks\LWR at startpars}
-\end{warpall}
+\end{warpHTML}
 
 \begin{warpHTML}
 \newcommand*{\printtitle}
@@ -7352,10 +7603,19 @@
 }%
 }
 
-\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}
 \renewcommand*{\maketitle}{%
 \begin{titlepage}
 \LWR at maketitlesetup
@@ -7433,10 +7693,12 @@
     }%
 }% yes titling package
 {% no titling package
-    \newcommand{\published}[1]{}%
-    \newcommand*{\printpublished}{}%
-    \newcommand{\subtitle}{}%
-    \newcommand*{\printsubtitle}%
+    \def\@published{}%
+    \DeclareDocumentCommand{\published}{m}{\gdef\@published{##1}}%
+    \DeclareDocumentCommand{\printpublished}{}{}%
+    \def\@subtitle{}%
+    \DeclareDocumentCommand{\subtitle}{m}{\gdef\@subtitle{##1}}%
+    \DeclareDocumentCommand{\printsubtitle}{}{}%
 }% no titling package
 }% \AddSubtitlePublished
 
@@ -7447,12 +7709,12 @@
 \providecommand*{\abstractname}{Abstract}
 \DeclareDocumentEnvironment{abstract}{O{\abstractname}}
 {
-\LWR at forcenewpage
-\BlockClass{abstract}
-\BlockClassSingle{abstracttitle}{#1}
+    \LWR at forcenewpage
+    \BlockClass{abstract}
+    \BlockClassSingle{abstracttitle}{#1}
 }
 {
-\endBlockClass
+    \endBlockClass
 }
 
 \end{warpHTML}
@@ -7459,8 +7721,16 @@
 
 
 
+\begin{warpall}
+\newcommand{\attribution}[1]{
+    \begin{flushright}
+    \unskip
+    #1
+    \end{flushright}%
+}
+\end{warpall}
 \begin{warpHTML}
-\newcommand{\attribution}[1]{%
+\newcommand{\LWR at HTML@attribution}[1]{%
     \LWR at stoppars%
     \begin{BlockClass}{attribution}
     #1
@@ -7467,25 +7737,20 @@
     \end{BlockClass}
     \LWR at startpars%
 }
+\LWR at formatted{attribution}
 \end{warpHTML}
-\begin{warpprint}
-\newcommand{\attribution}[1]{
-    \begin{flushright}
-    \unskip
-    #1
-    \end{flushright}%
-}
-\end{warpprint}
 
 
 \begin{warpHTML}
-\renewenvironment*{quote}
+\newenvironment*{LWR at HTML@quote}
 {
     \LWR at forcenewpage
     \LWR at htmlblocktag{blockquote}
 }
 {\LWR at htmlblocktag{/blockquote}}
-\renewenvironment*{quotation}
+
+\LWR at formattedenv{quote}
+\newenvironment*{LWR at HTML@quotation}
 {
     \LWR at forcenewpage
     \LWR at htmlblocktag{blockquote}
@@ -7492,10 +7757,12 @@
 }
 {\LWR at htmlblocktag{/blockquote}}
 
+\LWR at formattedenv{quotation}
+
 \end{warpHTML}
 
 \begin{warpHTML}
-\renewenvironment{verse}
+\newenvironment{LWR at HTML@verse}
                {\let\\\newline% lwarp
                 \list{}{\itemsep      \z@
                         \itemindent   -1.5em%
@@ -7504,6 +7771,8 @@
                         \advance\leftmargin 1.5em}%
                 \item\relax}
                {\endlist}
+
+\LWR at formattedenv{verse}
 \end{warpHTML}
 \begin{warpall}
 
@@ -7556,30 +7825,45 @@
 \LWR at startpars%
 }
 
-\let\LWRV at origverbatim@input\verbatim at input
-
-\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}%
+\newcommand{\LWR at HTML@verbatim at input}[2]{%
+    \ifbool{LWR at verbtags}{\LWR at forcenewpage}{}%
+    \LWR at atbeginverbatim{2.5}{Verbatim}%
+    \LWR at print@verbatim at input{#1}{#2}%
+    \LWR at afterendverbatim{1.5}%
 }
 
+\LWR at formatted{verbatim at input}
+
 \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{2.5}{verbatim}%
+        }%
 }
 \AfterEndEnvironment{verbatim}{%
-    \LWR at afterendverbatim{1}%
+    \ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}%
+        {}%
+        {%
+            \LWR at afterendverbatim{1}%
+        }%
 }
 }
 
 \newcommand*{\LWR at HTML@tabbing}{%
-\LWR at forcenewpage%
-\LWR at atbeginverbatim{3}{tabbing}%
-\LWR at print@tabbing%
+    \LWR at forcenewpage%
+    \LWR at atbeginverbatim{3}{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}{%
@@ -7787,22 +8071,22 @@
 }
 
 \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{warpHTML}
@@ -8606,11 +8890,6 @@
         \LWR at subcdashline#1%
     }
 
-\newlength{\LWR at templengthone}
-\newlength{\LWR at templengthtwo}
-\newlength{\LWR at templengththree}
-\newcounter{LWR at tempcountone}
-
 \newcommand*{\LWR at tdstartstyles}{\boolfalse{LWR at tdhavecellstyle}}
 
 \newcommand*{\LWR at tdaddstyle}{%
@@ -9019,14 +9298,8 @@
     \LWR at htmltag{%
         td colspan="#4" %
         \IfValueT{#2}{ % rows?
-        rowspan="#2" %
-        \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?
+            rowspan="#2" %
+        }%
         class="td%
         \defcounter{LWR at mcolvertbarsl}{0}%
         \defcounter{LWR at mcolvertbarsr}{0}%
@@ -9055,6 +9328,18 @@
             { tvertbarrdoubledash}{}%
         "%
         \LWR at tdstartstyles%
+        \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?
         \LWR at addtabularrowcolor%
         \LWR at addcmidrulewidth%
         \LWR at addcdashline%
@@ -9412,16 +9697,7 @@
 \NewDocumentCommand{\LWR at HTML@@tabular}{d<> o m}
 {%
     \LWR at traceinfo{LWR at HTML@@tabular started}%
-    \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}%
     \boolfalse{LWR at startedrow}%
     \defcounter{LWR at hlines}{0}%
@@ -9577,7 +9853,7 @@
 \begin{warpHTML}
 
 
-\providecommand*{\@currentlabelname}{}
+\def\@currentlabelname{\linkhomename}%
 \def\LWR at stripperiod#1.\ltx at empty#2\@nil{#1}%
 \newcommand*{\LWR at setlatestname}[1]{%
     \GetTitleStringExpand{#1}%
@@ -9606,8 +9882,8 @@
 \newcommand*{\LWR at lateximagenumberref}[1]{%
     \expandafter\LWR at setref\csname r@#1 at lwarp\endcsname\LWR at fourthoffour{#1}%
 }
-\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{}%
@@ -9627,8 +9903,8 @@
 }
 
 
-\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!}%
     \ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}%
     {}%
     {% not lateximage
@@ -9653,10 +9929,10 @@
         }% pars not allowed
     }% not lateximage
 }
-\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 orig@label{#2}%
+    \LWR at traceinfo{LWR at new@label: !#1!}%
+    \LWR at orig@label{#1}%
     \LWR at traceinfo{%
         LWR at new@label: filesectionnames is %
         \ifbool{FileSectionNames}{true}{false}%
@@ -9667,8 +9943,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}%
 }
@@ -9755,13 +10031,9 @@
 
 
 \AtBeginDocument{
-
-\def\@currentHref{%
-    autopage-\theLWR at currentautosec%
+    \def\@currentHref{\BaseJobname-autopage-\theLWR at currentautosec}
 }
 
-}
-
 \newcommand*{\LWR at linkcatcodes}{%
     \catcode`\#=12%
     \catcode`\%=12%
@@ -9878,6 +10150,7 @@
 \begin{warpHTML}
 
 \NewDocumentCommand{\LWR at floatbegin}{m o}{%
+    \LWR at spanwarninvalid{float}%
     \ifbool{FormatWP}{\newline}{}%
     \LWR at stoppars%
     \addtocounter{LWR at thisautoid}{1}%
@@ -9893,7 +10166,6 @@
         \LWR at BlockClassWP{}{}{wp#1}%
     }{}%
     \renewcommand*{\@captype}{#1}%
-    \caption at settype{#1}%
     \LWR at startpars%
     \ifboolexpr{bool{FormatWP} and bool{WPMarkFloats}}{%
 
@@ -9900,7 +10172,6 @@
     === begin #1 ===
 
     }{}%
-    \LWR at futurenonspacelet\LWR at mynexttoken\LWR at floatalignment%
 }
 \AtBeginDocument{
 
@@ -9913,8 +10184,16 @@
 }{}% tocbasic
 
 }% AtBeginDocument
-\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%
+    }
+}
 \newcommand*{\LWR at floatend}{%
     \LWR at endfloatalignment%
     \ifboolexpr{bool{FormatWP} and bool{WPMarkFloats}}{%
@@ -9930,8 +10209,10 @@
     \LWR at startpars%
     \ifbool{FormatWP}{\newline}{}%
 }
-\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
+}
 
 \newcounter{LWR at thisautoid}
 
@@ -9942,8 +10223,10 @@
 
 \newcommand*{\LWR at forcenewautoidanchor}{%
     \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 startpars%
 }
 
 \newcommand*{\LWR at newautoidanchor}{%
@@ -9981,11 +10264,26 @@
 
 \AtBeginDocument{\providecommand*{\CaptionSeparator}{:~}}
 
-\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]{%
+            \LWR at spanwarnformat{caption}%
+            \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}%
+        }%
+    }
 }
 
 
@@ -10031,28 +10329,39 @@
 }
 
 \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}
 }
 
-\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%
+    }
+    \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}%
+    }%
+}% caption loaded
+{% caption not loaded
+    \newcommand{\captionlistentry}[2][]{}%
+    \newcommand{\LWR at LT@captionlistentry}[2][]{}%
 }
-\def\LWR at LTcaptionlistentry{%
-    \LWR at ensuredoingapar%
-    \LWR at forcenewautoidanchor%
-    \bgroup
-    \@ifstar{\egroup\LWR at LT@captionlistentry}% gobble *
-        {\egroup\LWR at LT@captionlistentry}%
-}%
+}% AtBeginDocument
 
-\def\LWR at LT@captionlistentry#1{%
-    \caption at listentry\@firstoftwo[\LTcaptype]{#1}%
-}%
-
 \let\LWR at origaddcontentsline\addcontentsline
 
 \renewcommand*{\addcontentsline}[3]{%
@@ -10069,15 +10378,15 @@
     }% not TOC
     \LWR at origaddcontentsline{#1}{#2}{#3}%
 }
+\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{warpHTML}
@@ -10191,7 +10500,7 @@
 \newcounter{SideTOCDepth}
 \setcounter{SideTOCDepth}{1}
 
-\AtBeginDocument{%
+\AtEndDocument{%
     \ifnumcomp{\value{SideTOCDepth}}{<}{\value{FileDepth}}{
         \PackageWarningNoLine{lwarp}
         {%
@@ -10240,7 +10549,8 @@
 
 \NewDocumentCommand{\hypertoc}{m m +m m}{%
     \LWR at traceinfo{hypertoc !#1!#2!#3!#4!}%
-    \ifthenelse{\cnttest{#1}{<=}{\value{tocdepth}}}%
+    \ifnumcomp{#1}{>}{\value{tocdepth}}%
+        {}%
         {%
             \LWR at startpars%
             \LWR at subhyperrefclass{%
@@ -10250,7 +10560,6 @@
             \LWR at maybetocdata%
             \LWR at stoppars%
         }%
-        {}%
     \LWR at traceinfo{hypertoc done}%
 }
 
@@ -10265,7 +10574,6 @@
 }
 
 \newcommand{\hypertocfloat}[5]{%
-    \LWR at startpars%
     \@ifundefined{c@#3depth}{%
         \newcounter{#3depth}%
         \setcounter{#3depth}{1}%
@@ -10484,10 +10792,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%
@@ -10509,6 +10813,140 @@
     \LWR at FBcancel%
 }
 \end{warpHTML}
+\begin{warpHTML}
+\newcommand*{\LWR at dash}{-}
+\catcode`\$=\active% redefining $ below
+\catcode`\_=12% redefining \_ below
+\newcommand*{\LWR at nullfonts}{%
+    \renewcommand*{\$}{-}%
+    \renewcommand*{\%}{-}%
+    \renewcommand*{\_}{-}%
+    \renewcommand*{\}}{-}%
+    \renewcommand*{\{}{-}%
+    \renewcommand*{\&}{-}% used to be 'and'
+    \renewcommand*{\#}{-}%
+    \renewcommand*{\,}{-}%
+    \renewcommand*{~}{-}%
+    \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%
+    \renewcommand*{\HTMLunicode}[1]{}%
+    \renewcommand*{\HTMLentity}[1]{}%
+    \renewcommand{\textsuperscript}[1]{##1}%
+    \renewcommand{\textsubscript}[1]{##1}%
+    \renewcommand{\underline}[1]{##1}%
+    \RenewDocumentCommand{\hspace}{s m}{}%
+    \RenewDocumentCommand{\LWR at htmlspanclass}{o m +m}{##3}%
+    \DeclareExpandableDocumentCommand{\InlineClass}{D{(}{)}{} o m +m}{##4}%
+    \def\(##1\){}%
+    \def\[##1\]{}%
+    \RenewDocumentCommand{\LWR at subsingledollar}{s m m m}{}%
+    \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}%
+    \def\texorpdfstring{\expandafter\@secondoftwo}%
+}
+\catcode`\$=3%
+\catcode`\_=8%
+\newcommand*{\FilenameNullify}[1]{%
+    \appto{\LWR at nullfonts}{#1}%
+}
+\end{warpHTML}
 \begin{warpall}
 
 \newcommand*{\AltTextOpen}{(}
@@ -10859,8 +11297,8 @@
 }
 
 \AtBeginDocument{
-\protected\gdef\(#1\){$#1$}
-\protected\gdef\[#1\]{$$#1$$}
+    \protected\gdef\(#1\){$#1$}
+    \protected\gdef\[#1\]{$$#1$$}
 }
 
 \endgroup
@@ -10992,10 +11430,10 @@
 }
 
 \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*}
 }
 \newcommand*{\LWR at doequation}[2]{%
 
@@ -11067,39 +11505,35 @@
 \newcommand*{\LWR at syncnotenames}{\LWR at synconenotename{LWRfootnote}{\footnotename}}
 
 \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}
 }
 
 \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
 
 \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
 
 \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*}
 }
 
 \newcommand*{\displaymathnormal}{%
@@ -11486,7 +11920,7 @@
 
 \begin{warpHTML}
 
-\renewenvironment*{center}
+\newenvironment*{LWR at HTML@center}
 {
     \LWR at forcenewpage
     \ifbool{FormatWP}
@@ -11495,7 +11929,9 @@
 }
 {\endBlockClass}
 
-\renewenvironment*{flushright}
+\LWR at formattedenv{center}
+
+\newenvironment*{LWR at HTML@flushright}
 {
     \LWR at forcenewpage
     \ifbool{FormatWP}
@@ -11504,7 +11940,9 @@
 }
 {\endBlockClass}
 
-\renewenvironment*{flushleft}
+\LWR at formattedenv{flushright}
+
+\newenvironment*{LWR at HTML@flushleft}
 {
     \LWR at forcenewpage
     \ifbool{FormatWP}
@@ -11513,7 +11951,9 @@
 }
 {\endBlockClass}
 
+\LWR at formattedenv{flushleft}
 
+
 \newcommand*{\LWR at HTML@centering}{%
     \ifbool{HTMLDebugComments}{%
         \LWR at htmlcomment{centering}%
@@ -11749,7 +12189,8 @@
     \renewcommand*{\@@setcref}[2]{#1{\ref{#2}}{}{}}
 }{
     \ifdefequal{\@@@setcref}{\LWR at orig@@@setcref}{% as of v0.21
-        \renewcommand*{\@@@setcref}[2]{#1{\ref{#2}}{}{}}
+        \renewcommand*{\@@@setcref}[2]{%
+            #1{\ref{#2}}{}{}}
     }{
         \PackageWarning{lwarp-cleveref}{
             Unknown version of cleveref.
@@ -11781,7 +12222,6 @@
 }
 
 
-
 \newcommand*{\cpagerefFor}{for}
 
 \def\LWR at orig@@setcpageref#1#2{% before v0.21
@@ -11839,11 +12279,11 @@
 
 }% AfterEndPreamble
 
-\LetLtxMacro\LWR at orig@label\label
-\RenewDocumentCommand{\label}{}{\LWR at new@label}
+\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}
 
 
@@ -12185,8 +12625,6 @@
 
 \LWR at formatted{emph}
 
-\newcommand{\LWR at null@emph}[1]{#1}
-
 \DeclareRobustCommand{\LWR at HTML@textmd}[1]{%
     {%
         \LWR at HTML@mdseries%
@@ -12196,8 +12634,6 @@
 
 \LWR at formatted{textmd}
 
-\newcommand{\LWR at null@textmd}[1]{#1}
-
 \DeclareRobustCommand{\LWR at HTML@textbf}[1]{%
     {%
         \LWR at HTML@bfseries%
@@ -12207,8 +12643,6 @@
 
 \LWR at formatted{textbf}
 
-\newcommand{\LWR at null@textbf}[1]{#1}
-
 \DeclareRobustCommand{\LWR at HTML@texteb}[1]{%
     {%
         \LWR at HTML@ebweight%
@@ -12218,8 +12652,6 @@
 
 \LWR at formatted{texteb}
 
-\newcommand{\LWR at null@texteb}[1]{#1}
-
 \DeclareRobustCommand{\LWR at HTML@textlg}[1]{%
     {%
         \LWR at HTML@lgweight%
@@ -12229,8 +12661,6 @@
 
 \LWR at formatted{textlg}
 
-\newcommand{\LWR at null@textlg}[1]{#1}
-
 \DeclareRobustCommand{\LWR at HTML@textrm}[1]{%
     {%
         \LWR at HTML@rmfamily%
@@ -12240,8 +12670,6 @@
 
 \LWR at formatted{textrm}
 
-\newcommand{\LWR at null@textrm}[1]{#1}
-
 \DeclareRobustCommand{\LWR at HTML@textsf}[1]{%
     {%
         \LWR at HTML@sffamily%
@@ -12251,8 +12679,6 @@
 
 \LWR at formatted{textsf}
 
-\newcommand{\LWR at null@textsf}[1]{#1}
-
 \DeclareRobustCommand{\LWR at HTML@texttt}[1]{%
     {%
         \LWR at HTML@ttfamily%
@@ -12262,8 +12688,6 @@
 
 \LWR at formatted{texttt}
 
-\newcommand{\LWR at null@texttt}[1]{#1}
-
 \DeclareRobustCommand{\LWR at HTML@textup}[1]{%
     {%
         \LWR at HTML@upshape%
@@ -12273,8 +12697,6 @@
 
 \LWR at formatted{textup}
 
-\newcommand{\LWR at null@textup}[1]{#1}
-
 \DeclareRobustCommand{\LWR at HTML@textit}[1]{%
     {%
         \LWR at HTML@itshape%
@@ -12284,8 +12706,6 @@
 
 \LWR at formatted{textit}
 
-\newcommand{\LWR at null@textit}[1]{#1}
-
 \DeclareRobustCommand{\LWR at HTML@textsc}[1]{%
     {%
         \LWR at HTML@scshape%
@@ -12295,8 +12715,6 @@
 
 \LWR at formatted{textsc}
 
-\newcommand{\LWR at null@textsc}[1]{#1}
-
 \DeclareRobustCommand{\LWR at HTML@textulc}[1]{%
     {%
         \LWR at HTML@ulcshape%
@@ -12306,8 +12724,6 @@
 
 \LWR at formatted{textulc}
 
-\newcommand{\LWR at null@textulc}[1]{#1}
-
 \@ifundefined{textsi}{
     \LetLtxMacro\LWR at print@textsi\LWR at print@textsc
 }{}
@@ -12321,8 +12737,6 @@
 
 \LWR at formatted{textsi}
 
-\newcommand{\LWR at null@textsi}[1]{#1}
-
 \DeclareRobustCommand{\LWR at HTML@textsl}[1]{%
     {%
         \slshape%
@@ -12332,175 +12746,31 @@
 
 \LWR at formatted{textsl}
 
-\newcommand{\LWR at null@textsl}[1]{#1}
+\newrobustcmd{\LWR at HTML@textssc}[1]{\textsc{#1}}
+\LWR at formatted{textssc}
 
 \DeclareRobustCommand{\LWR at HTML@textnormal}[1]{\textmd{\textrm{\textup{#1}}}}
 
 \LWR at formatted{textnormal}
 
-\newcommand{\LWR at null@textnormal}[1]{#1}
-
-\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}{}
-\newcommand{\LWR at null@em}{}
-
-\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%
-\LetLtxMacro\sishape\LWR at null@sishape%
-\LetLtxMacro\itshape\LWR at null@itshape%
-\LetLtxMacro\normalfont\LWR at null@normalfont%
-\LetLtxMacro\em\LWR at null@em%
-\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}{}%
-\renewcommand*{\HTMLunicode}[1]{}%
-\renewcommand*{\HTMLentity}[1]{}%
-\renewcommand{\textsuperscript}[1]{##1}%
-\renewcommand{\textsubscript}[1]{##1}%
-\renewcommand{\underline}[1]{##1}%
-\RenewDocumentCommand{\hspace}{s m}{}%
-\RenewDocumentCommand{\LWR at htmlspanclass}{o m +m}{##3}%
-\DeclareExpandableDocumentCommand{\InlineClass}{D{(}{)}{} o m +m}{##4}%
-\def\(##1\){}%
-\def\[##1\]{}%
-\RenewDocumentCommand{\LWR at subsingledollar}{s m m m}{}%
-\protected\def$##1${}%
-\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}%
-\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%
-\newcommand*{\FilenameNullify}[1]{%
-    \appto{\LWR at nullfonts}{#1}%
-}
 
 \newcommand*{\LWR at f@family}{rm}
 \newcommand*{\LWR at f@series}{md}
@@ -12562,19 +12832,19 @@
 \LWR at formatted{ttfamily}
 
 \newrobustcmd*{\LWR at HTML@upshape}{\renewcommand*{\LWR at f@shape}{up}}
-\LWR at formatted{upshape}
+\AtBeginDocument{\LWR at formatted{upshape}}
 
 \newrobustcmd*{\LWR at HTML@itshape}{\renewcommand*{\LWR at f@shape}{it}}
-\LWR at formatted{itshape}
+\AtBeginDocument{\LWR at formatted{itshape}}
 
 \newrobustcmd*{\LWR at HTML@scshape}{\renewcommand*{\LWR at f@shapecaps}{sc}}
-\LWR at formatted{scshape}
+\AtBeginDocument{\LWR at formatted{scshape}}
 
 \@ifundefined{ulcshape}{
     \LetLtxMacro\ulcshape\upshape
 }{}
 \newrobustcmd*{\LWR at HTML@ulcshape}{\renewcommand*{\LWR at f@shapecaps}{ulc}}
-\LWR at formatted{ulcshape}
+\AtBeginDocument{\LWR at formatted{ulcshape}}
 
 \@ifundefined{sishape}{
     \LetLtxMacro\sishape\scshape
@@ -12583,31 +12853,52 @@
     \renewcommand*{\LWR at f@shape}{it}
     \renewcommand*{\LWR at f@shapecaps}{sc}%
 }
-\LWR at formatted{sishape}
+\AtBeginDocument{\LWR at formatted{sishape}}
 
 \newrobustcmd*{\LWR at HTML@slshape}{\renewcommand*{\LWR at f@shape}{sl}}
-\LWR at formatted{slshape}
+\AtBeginDocument{\LWR at formatted{slshape}}
 
+\newrobustcmd{\LWR at HTML@sscshape}{\LWR at HTML@scshape}
+\AtBeginDocument{\LWR at formatted{sscshape}}
+
 \newrobustcmd*{\LWR at HTML@normalfont}{\rmfamily\mdseries\upshape\ulcshape}
 \LWR at formatted{normalfont}
 
+\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%
+}
 
+
 \renewcommand{\sp}[1]{\text{<sup>#1</sup>}{}}
 
 
 \renewcommand{\sb}[1]{\text{<sub>#1</sub>}{}}
 
-\renewrobustcmd{\textsuperscript}[1]{\LWR at htmlspan{sup}{#1}}
+\newrobustcmd{\LWR at HTML@textsuperscript}[1]{\LWR at htmlspan{sup}{#1}}
+\LWR at formatted{textsuperscript}
 
-\renewcommand{\@textsuperscript}[1]{\LWR at htmlspan{sup}{#1}}
+\newcommand{\LWR at HTML@@textsuperscript}[1]{\LWR at htmlspan{sup}{#1}}
+\LWR at formatted{@textsuperscript}
 
-\AtBeginDocument{
-\renewrobustcmd{\textsubscript}[1]{\LWR at htmlspan{sub}{#1}}
-}
+    \newrobustcmd{\LWR at HTML@textsubscript}[1]{\LWR at htmlspan{sub}{#1}}
+    \LWR at formatted{textsubscript}
 
-\AtBeginDocument{
-\renewcommand{\@textsubscript}[1]{\LWR at htmlspan{sub}{#1}}
-}
+    \newcommand{\LWR at HTML@@textsubscript}[1]{\LWR at htmlspan{sub}{#1}}
+    \LWR at formatted{@textsubscript}
 
 \AtBeginDocument{\let\up\textsuperscript}
 
@@ -12721,25 +13012,25 @@
 }
 
 \newcommand*{\LWR at minipagestartpars}{%
-\ifbool{LWR at minipagethispar}{\LWR at startpars}{}%
+    \ifbool{LWR at minipagethispar}{\LWR at startpars}{}%
 }
 
 \newcommand*{\LWR at minipagestoppars}{%
-\ifbool{LWR at minipagethispar}{\LWR at stoppars}{}%
+    \ifbool{LWR at minipagethispar}{\LWR at stoppars}{}%
 }
 
 \renewrobustcmd*{\quad}{%
-\LWR at minipagestoppars%
-\HTMLunicode{2003}%
-\LWR at minipagestartpars%
+    \LWR at minipagestoppars%
+    \HTMLunicode{2003}%
+    \LWR at minipagestartpars%
 }
 
 \renewrobustcmd*{\qquad}{\quad\quad}
 
 \renewrobustcmd*{\enskip}{%
-\LWR at minipagestoppars%
-\HTMLunicode{2002}%
-\LWR at minipagestartpars%
+    \LWR at minipagestoppars%
+    \HTMLunicode{2002}%
+    \LWR at minipagestartpars%
 }
 
 \newlength{\LWR at tempwidth}
@@ -12864,11 +13155,12 @@
 
 \begin{warpHTML}
 
+\newcounter{LWR at phantomsection}
 \DeclareDocumentCommand{\phantomsection}{}{%
-\begingroup%
-\boolfalse{LWR at forcinghtmltoc}%
-\section*{}%
-\endgroup%
+    \begingroup%
+    \boolfalse{LWR at forcinghtmltoc}%
+    \section*{}%
+    \endgroup%
 }
 
 \end{warpHTML}
@@ -12875,19 +13167,29 @@
 
 
 \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}}
@@ -13003,11 +13305,19 @@
 \end{warpHTML}
 
 \begin{warpHTML}
+\RequirePackage{lwarp-textcomp}
+\end{warpHTML}
+
+\begin{warpHTML}
 \@ifclassloaded{scrbook}{\RequirePackage{lwarp-patch-komascript}}{}
 \@ifclassloaded{scrartcl}{\RequirePackage{lwarp-patch-komascript}}{}
 \@ifclassloaded{scrreprt}{\RequirePackage{lwarp-patch-komascript}}{}
 \end{warpHTML}
 
+\begin{warpprint}
+\@ifclassloaded{memoir}{\LWR at origRequirePackage{xcolor}}{}
+\end{warpprint}
+
 \begin{warpHTML}
 \@ifclassloaded{memoir}{\RequirePackage{lwarp-patch-memoir}}{}
 \end{warpHTML}

Modified: trunk/Master/tlpkg/bin/tlpkginfo
===================================================================
--- trunk/Master/tlpkg/bin/tlpkginfo	2020-04-25 20:49:32 UTC (rev 54876)
+++ trunk/Master/tlpkg/bin/tlpkginfo	2020-04-25 20:51:39 UTC (rev 54877)
@@ -394,7 +394,7 @@
   if ($catfile) {
     # redirect to stderr because we want the only stdout to be the
     # directory name for ctan2tl to use.
-    system ("timeout 8s svn update $catfile >&2") if $catalogue_update;
+    system ("timeout 10s svn update $catfile >&2") if $catalogue_update;
     
     open (CATFILE, "<$catfile") || die "open($catfile) failed, fixme: $!";
     # looking for a line like <install path='...'/>



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