texlive[55880] trunk: lwarp (19jul20)

commits+karl at tug.org commits+karl at tug.org
Sun Jul 19 23:27:08 CEST 2020


Revision: 55880
          http://tug.org/svn/texlive?view=revision&revision=55880
Author:   karl
Date:     2020-07-19 23:27:08 +0200 (Sun, 19 Jul 2020)
Log Message:
-----------
lwarp (19jul20)

Modified Paths:
--------------
    trunk/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua
    trunk/Master/texmf-dist/doc/latex/lwarp/README.txt
    trunk/Master/texmf-dist/doc/latex/lwarp/lwarp.pdf
    trunk/Master/texmf-dist/scripts/lwarp/lwarpmk.lua
    trunk/Master/texmf-dist/source/latex/lwarp/lwarp.dtx
    trunk/Master/texmf-dist/source/latex/lwarp/lwarp.ins
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-amsmath.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-amsthm.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-caption.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-errata.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyref.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-idxlayout.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-imakeidx.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-index.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-lyluatex.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-makeidx.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-pdfrender.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-splitidx.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-xfakebold.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp.sty

Added Paths:
-----------
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-cleveref.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fbox.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-gindex.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-shadethm.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-tcolorbox.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-termcal.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-listof.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-restate.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-thmbox.sty
    trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-varioref.sty

Modified: trunk/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua	2020-07-19 21:27:08 UTC (rev 55880)
@@ -2,7 +2,7 @@
 
 -- Copyright 2016-2020 Brian Dunn
 
-printversion = "v0.87"
+printversion = "v0.88"
 requiredconfversion = "2" -- also at *lwarpmk.conf
 
 function printhelp ()
@@ -36,6 +36,7 @@
     *_html.pdf, *_html.html, *_html.sidetoc
 lwarpmk cleanall [-p project]: Remove auxiliary files, project.pdf, *.html
 lwarpmk cleanlimages: Removes all images from the "lateximages" directory.
+lwarpmk -v: Print the version number.
 lwarpmk -h: Print this help message.
 lwarpmk --help: Print this help message.
 
@@ -891,6 +892,12 @@
 elseif (arg[1] == nil) then
 printhelp ()
 
+-- lwarpmk -v:
+
+elseif (arg[1] == "-v" ) then
+-- The version number has already been printed
+-- by the lwarpmk intro.
+
 -- lwarpmk -h or lwarpmk --help :
 
 elseif (arg[1] == "-h" ) or (arg[1] == "--help") then

Modified: trunk/Master/texmf-dist/doc/latex/lwarp/README.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/lwarp/README.txt	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/doc/latex/lwarp/README.txt	2020-07-19 21:27:08 UTC (rev 55880)
@@ -1,5 +1,5 @@
 
-LaTeX lwarp package v0.87   README.txt
+LaTeX lwarp package v0.88   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-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/scripts/lwarp/lwarpmk.lua	2020-07-19 21:27:08 UTC (rev 55880)
@@ -2,7 +2,7 @@
 
 -- Copyright 2016-2020 Brian Dunn
 
-printversion = "v0.87"
+printversion = "v0.88"
 requiredconfversion = "2" -- also at *lwarpmk.conf
 
 function printhelp ()
@@ -36,6 +36,7 @@
     *_html.pdf, *_html.html, *_html.sidetoc
 lwarpmk cleanall [-p project]: Remove auxiliary files, project.pdf, *.html
 lwarpmk cleanlimages: Removes all images from the "lateximages" directory.
+lwarpmk -v: Print the version number.
 lwarpmk -h: Print this help message.
 lwarpmk --help: Print this help message.
 
@@ -891,6 +892,12 @@
 elseif (arg[1] == nil) then
 printhelp ()
 
+-- lwarpmk -v:
+
+elseif (arg[1] == "-v" ) then
+-- The version number has already been printed
+-- by the lwarpmk intro.
+
 -- lwarpmk -h or lwarpmk --help :
 
 elseif (arg[1] == "-h" ) or (arg[1] == "--help") then

Modified: trunk/Master/texmf-dist/source/latex/lwarp/lwarp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/lwarp/lwarp.dtx	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/source/latex/lwarp/lwarp.dtx	2020-07-19 21:27:08 UTC (rev 55880)
@@ -16,7 +16,7 @@
 % \iffalse
 %<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
 %<package>\ProvidesPackage{lwarp}
-%<package>    [2020/06/03 v0.87  Allows LaTeX to directly produce HTML5 output.]
+%<package>    [2020/07/19 v0.88  Allows LaTeX to directly produce HTML5 output.]
 %
 %<*driver>
 \documentclass{ltxdoc}
@@ -164,6 +164,7 @@
 
 
 \usepackage{enumitem}
+\newlist{inlinedesc}{description*}{1}
 
 \usepackage{array}
 \usepackage{longtable}
@@ -819,27 +820,6 @@
 these environments.  Adding a space on either side may be sufficient.
 }
 
-\newcommand{\limitshspace}{%
-\DescribeMacro{\hspace}%
-\gindex{space>horizontal}%
-\gindex{horizontal space}%
-\cs{hspace} is converted to an inline \HTML\ span of the given width,
-except that \texttt{0} width is ignored,
-a width of \texttt{.16667em} is converted to
-an \HTML\ thin breakable space (\texttt{U+2009}),
-and a \cs{fill} is converted to a \cs{qquad}.
-
-\gindex{\texttt{\textasciitilde}}%
-\gindex{\cs{,}}%
-\DescribeMacro{\,}%
-\texttt{\~} and \cs{,} are converted to \HTML\ entities.
-
-\DescribeMacro{\kern}%
-\DescribeMacro{\hskip}%
-\cs{kern} and \cs{hskip} are entered into the \HTML\ \PDF\ output as-is,
-then interpreted by \prog{pdftotext}, and thus usually appear as a single space.
-}
-
 \newcommand{\limitstextcomp}{%
 Some \pkg{textcomp} symbols do not have Unicode equivalents, and thus
 are not supported.
@@ -3038,7 +3018,7 @@
 %<*package>
 % \fi
 %
-% \CheckSum{43783}
+% \CheckSum{44695}
 %
 % \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
@@ -3168,6 +3148,7 @@
 % \changes{v0.85}{2020/05/01}{\ 2020/05/01}
 % \changes{v0.86}{2020/05/12}{\ 2020/05/12}
 % \changes{v0.87}{2020/06/03}{\ 2020/06/03}
+% \changes{v0.88}{2020/07/19}{\ 2020/07/19}
 
 
 
@@ -3390,6 +3371,34 @@
 %
 % \begin{description}
 % \needspace{2\baselineskip}
+% \item[v0.88:] Indexing, boxing, theorems.
+%   \begin{itemize}
+%   \item \textgreen{Now has programmed support for more than 500 packages and classes,
+%       of which more than 60 also support \brand{MathJax}.}
+%   \item Fixed: \cs{ref*}, and also added \brand{MathJax} emulation.
+%       \margintag{core}
+%   \item If starting a new paragraph, \cs{hrulefill} creates a
+%       \element{div} with a thin horizontal line across the page.
+%       Use instead of \cs{hrule}.
+%   \item Fixed: Use \cs{chaptername} where appropriate.
+%   \item Fixed: Inline links causing extraneous paragraphs.
+%   \item Added \cmds{lwarpmk -v} to print the version number.
+%       \margintag{\prog{lwarpmk}}
+%   \item Added the \optn{IndexRef} option to control the display of index entries.
+%       \margintag{indexing}
+%       See \cref{sec:optionindexref}.
+%   \item Added \cs{IndexPageSeparator} and \cs{IndexRangeSeparator} for custom index styles.
+%   \item Added support for \pkg{gindex}, \prog{xindex}.
+%   \item Verified to work as-is with \pkg{varindex}.
+%   \item \pkg{cleveref}, \pkg{varioref}: Fix for starred macros.
+%       \margintag{packages}
+%   \item \pkg{varioref}: Removed page-related text from \HTML\ output.
+%   \item \pkg{xfakebold}: Updated to v0.08, using \pkg{pdfrender}.
+%   \item \pkg{caption}, \pkg{scrextend}: Fixed \cs{caption*}.
+%   \item Added \pkg{fbox}, \pkg{shadethm}, \pkg{tcolorbox}, \pkg{termcal},
+%           \pkg{thmbox}, \pkg{thmtools}.
+%   \end{itemize}
+% \needspace{2\baselineskip}
 % \item[v0.87:] \brand{MathJax}, bibliography packages.
 %   \begin{itemize}
 %   \item Added boolean \bool{FixSmallCaps} for fonts which render small caps as
@@ -5293,7 +5302,7 @@
 % Package names are colored according to their support level:
 % \begin{description}
 %   \item[\spkg{name}:] Supported as-is.
-%   \item[\mpkg{name}:] Modifed to work with \HTML\ output, and also
+%   \item[\mpkg{name}:] Modifed to work with \HTML\ output, and perhaps also
 %       as print output in \SVG\ math or \env{lateximage} environments.
 %   \item[\epkg{name}:] Emulated for \HTML\ output.
 %   \item[\ipkg{name}:] Ignored for \HTML\ output, but provides source-level compatibility.
@@ -5407,10 +5416,12 @@
 %
 % Front \&\ back matter: & \mpkg{abstract}, \mpkg{appendix}. \\
 %
-% Indexing: & \prog{makeindex} and \prog{xindy} are supported, with hyperlinks.
+% Indexing: & \prog{makeindex}, \prog{xindy}, and \prog{xindex} are supported,
+%   with hyperlinks.
 %
-%   \spkg{hvindex}, \epkg{idxlayout}, \mpkg{imakeidx}, \epkg{index}, \mpkg{makeidx},
-%   \epkg{repeatindex}, \mpkg{splitidx}.
+%   \mpkg{gindex}, \spkg{hvindex}, \epkg{idxlayout}, \mpkg{imakeidx},
+%   \epkg{index}, \mpkg{makeidx},
+%   \epkg{repeatindex}, \mpkg{splitidx}, \spkg{varindex}, \spkg{xindex}.
 %   \\
 %
 % Glossary: & \mpkg{gloss}, \mpkg{glossaries} and \prog{xindy}, \mpkg{nomencl}.\\
@@ -5426,9 +5437,9 @@
 % \midrule
 %
 % Cross-references: & 
-%   \ipkg{bookmark}, \epkg{breakurl}, \spkg{cleveref}, \epkg{fancyref},
+%   \ipkg{bookmark}, \epkg{breakurl}, \spkg{cleveref}, \mpkg{fancyref},
 %   \ipkg{hypdestopt}, \epkg{hyperref}, \epkg{perpage}, \mpkg{prettyref},
-%   \epkg{titleref}, \mpkg{url}, \spkg{varioref}, \spkg{xcite},
+%   \epkg{titleref}, \mpkg{url}, \mpkg{varioref}, \spkg{xcite},
 %   \mpkg{xr}, \mpkg{xr-hyper}, \ipkg{xurl}. \\
 %
 % \midrule
@@ -5458,7 +5469,8 @@
 % 	due to native \LaTeX\ processing.\\
 %
 % Theorems: & Native \LaTeX\ theorems,
-%	\mpkg{amsthm}, \mpkg{ntheorem}, \mpkg{theorem}. \\
+%	\mpkg{amsthm}, \mpkg{ntheorem}, \mpkg{shadethm},
+%   \mpkg{theorem}, \mpkg{thmbox}, \mpkg{thmtools}. \\
 %
 % Additional math: & Math fonts via \SVG\ images,
 %   \spkg{amscd}, \spkg{autobreak}\ejax, \ipkg{autonum},
@@ -5527,7 +5539,7 @@
 %   \spkg{eepic}, \epkg{epsfig}, \spkg{epstopdf},
 %   \epkg{figsize}, \ipkg{fitbox},
 %   \spkg{grffile}, \mpkg{luamplib}, \epkg{media9},
-%   \epkg{movie15}, \epkg{multimedia}, \mpkg{overpic},
+%   \epkg{movie15}, \epkg{multimedia}, \mpkg{overpic}, \spkg{pict2e},
 %   \mpkg{psfrag}, \mpkg{psfragx}, \mpkg{pst-eps}, \mpkg{pstool}, \mpkg{pstricks},
 %   \spkg{rviewport}, \mpkg{svg}, \spkg{svg-extract}, \spkg{tikz-3dplot}. \\
 %
@@ -5561,8 +5573,8 @@
 %   \mpkg{fancyvrb}, \mpkg{moreverb}, \spkg{shortvrb}, \mpkg{verbatim}. \\
 %
 % Frames: & \mpkg{boxedminipage}, \mpkg{boxedminipage2e},
-%   \mpkg{fancybox}, \mpkg{framed}, \mpkg{mdframed},
-%   \epkg{niceframe}, \epkg{shadow}, \epkg{vertbars}. \\
+%   \mpkg{fancybox}, \mpkg{fbox}\ejax, \mpkg{framed}, \mpkg{mdframed},
+%   \epkg{niceframe}, \epkg{shadow}, \mpkg{tcolorbox}\ejax, \epkg{vertbars}. \\
 %
 % Multi-columns: & \epkg{adjmulticol}, \epkg{multicol},
 %   \ipkg{multicolrule}, \mpkg{vwcol}. \\
@@ -5642,7 +5654,7 @@
 %   \spkg{circuitikz}, \spkg{econometrics}\ejax, \spkg{elements},
 %   \mpkg{engtlc}\ejax, \spkg{fast-diagram}, \mpkg{ghsystem},
 %   \spkg{hepnicenames}, \spkg{heppennames}, \spkg{karnaughmap}, \mpkg{karnaugh-map},
-%   \mpkg{listings}, \spkg{linop}, \mpkg{mhchem}\sjax, \spkg{pgfgantt},
+%   \mpkg{listings}, \spkg{listingsutf8}, \spkg{linop}, \mpkg{mhchem}\sjax, \spkg{pgfgantt},
 %   \mpkg{phfqit}, \spkg{physics}\sjax, \spkg{physunits}\ejax, \spkg{qcircuit},
 %   \mpkg{register}, \spkg{simpler-wick},
 %   \spkg{slashed}\ejax, \mpkg{steinmetz}\ejax, \spkg{structmech}, \mpkg{struktex}.
@@ -5658,6 +5670,10 @@
 %
 % \midrule
 %
+% Calendars: & \mpkg{termcal} \\
+%
+% \midrule
+%
 % Admonitions: & \epkg{awesomebox}, \epkg{notes}. \\
 %
 % Editorial: & \ipkg{changebar}, \spkg{changelog}, \mpkg{changes},
@@ -7340,19 +7356,14 @@
 % \gindex{UTF-8>index}
 % \gindex{index>UTF-8}
 %
-% \pkg{lwarp} uses the \prog{xindy} program to processes indexes.
-% \prog{xelatex} and \prog{lualatex} use \prog{xindy} and
-% \prog{pdflatex} uses \prog{texindy}.
+% \pkg{lwarp} supports \prog{makeindex}, \prog{xindy}, \prog{xindex},
+% and \pkg{glossaries}, \pkg{gloss}, and \pkg{nomencl}.
 %
-% The \pkg{lwarp} option \optn{xindyLanguage} may be used to set the language option
-% for \pkg{xindy}, and the \optn{xindyCodepage} option may be used to set the codepage
-% option for \pkg{xindy}.  These are used for
-% ^^A both
-% index
-% ^^A and glossary
-% generation.
+% See \cref{sec:indexingoverview} for indexing, and
+% \cref{sec:glossaries} for the \pkg{glossaries} package.
 %
 %
+%
 % \clearpage
 %
 % \subsection{\pkg{lwarp} package loading and options}
@@ -7380,8 +7391,8 @@
 % \midrule
 % \multicolumn{2}{l}{\small For indexing (\cref{sec:indexsetup}) and glossaries (\cref{sec:glossaries}):} \\
 % makeindex & Use \prog{makeindex} to generate indices. \\
+% makeindexStyle & Set a custom style for \prog{makeindex}. \\
 % xindy & Use \prog{xindy} to generate indices. \\
-% makeindexStyle & Set a custom style for \prog{makeindex}. \\
 % xindyStyle & Set a custom style for \prog{xindy}. \\
 % xindyLanguage & The \prog{xindy} language option used for index
 % ^^A and glossary
@@ -7389,9 +7400,12 @@
 % xindyCodepage & The \prog{xindy} codepage option used for index
 % ^^A and glossary
 % generation. \\
+% xindex & Use \prog{xindex} to generate indices. \\
+% xindexConfig & Set a custom configuration file for \prog{xindex}. \\
 % PrintIndexCmd & Shell commands executed by \cmds{lwarpmk printindex}. \\
 % HTMLIndexCmd & Shell commands executed by \cmds{lwarpmk htmlindex}. \\
 % LatexmkIndexCmd & Shell commands executed by \prog{latexmk}. \\
+% IndexRef & How to format index links. \\
 % GlossaryCmd & Shell command executed by \cmds{lwarpmk printglossary} and \cmds{lwarpmk htmlglossary}. \\
 % \midrule
 % \multicolumn{2}{l}{\small Seldom necessary:} \\
@@ -7429,60 +7443,70 @@
 %
 % \begin{description}[itemsep=1\baselineskip]
 %
-% \item[\optn{mathsvg}, \optn{mathjax}:]
+% \item[\optn{mathsvg} \textmd{and} \optn{mathjax}:]
 % \DescribeOption{mathsvg}
 % \DescribeOption{mathjax}
+% \DescribeDefault{mathsvg}
+%   Selects \SVG\ images or \brand{MathJax} for math display.
+%   See \cref{sec:limitsmath}.
 % ^^A \DescribeOption{mathKaTeX}
 % ^^A For math display, select \optn{mathsvg} (default), \optn{mathjax},
 % ^^A or \optn{mathKaTeX}.
-% For math display, select \optn{mathsvg} (default) or \optn{mathjax}.
-% For more information about the math options, see \cref{sec:limitsmath}.
-%
 % 
-% \item[\optn{latexmk}:]
-% \DescribeOption{latexmk}
+% \ItemDescribeOption{latexmk}
 % \DescribeDefault{false} Tells \prog{lwarpmk} to use \prog{latexmk} to recompile the
 %   document several times if necessary.
 %   Otherwise, \prog{lwarpmk} attempts to determing for itself whether to recompile.
 %   See \cref{sec:htmlsettings}.
 %
-% \item[\optn{dvips}:]
-% \DescribeOption{dvips}
+% \ItemDescribeOption{dvips}
 % \DescribeDefault{false} Tells \prog{lwarpmk} to use \prog{dvips} and \prog{ps2pdf} to convert
 %   \DVI\ output to \PDF.
 %
-% \item[\optn{dvipdfm}:]
-% \DescribeOption{dvipdfm}
+% \ItemDescribeOption{dvipdfm}
 % \DescribeDefault{false} Tells \prog{lwarpmk} to use \prog{dvipdfm} to convert
 %   \DVI\ output to \PDF.
 %
-% \item[\optn{dvipdfmx}:]
-% \DescribeOption{dvipdfmx}
+% \ItemDescribeOption{dvipdfmx}
 % \DescribeDefault{false} Tells \prog{lwarpmk} to use \prog{dvipdfmx} to convert
 %   \DVI\ output to \PDF.
 %
 %
-% \item[\optn{HomeHTMLFilename}:]
-% \DescribeOption{HomeHTMLFilename}
-% \DescribeDefault{\{\}}
-% See \cref{sec:htmlsettings}.
+% \ItemDescribeOption{HomeHTMLFilename}
+% \DescribeDefault{\cs{BaseJobname}}
 %
+%   Filename of the homepage, without
+%   the ``\filenm{.html}'' suffix.
+%   Defaults to the \cs{BaseJobname}.  A common setting is:
+%   \begin{sourcedisplay}
+%   |HomeHTMLFilename=index|
+%   \end{sourcedisplay}
+%   causing the
+%   homepage to be the file |index.html|.  Underscores are allowed in
+%   \margintag{filename underscores}
+%   \optn{HomeHTMLFilename} and \optn{HTMLFilename} options, but may need to be escaped
+%   elsewhere, such as when appearing in a list:
+%   \gindex{underscore>filename}\gindex{filename>underscore in}
+%   \changes{v0.24}{2017/03/13}{Docs: Filename underscore.}
+%   \begin{sourcedisplay}
+%        \cs{item} [\cs{href}\{file\textred{\textbackslash\_}name.pdf\}\{text\}] \textbackslash
+%   \end{sourcedisplay}
+%   See \cref{sec:filenameexamples} for examples of naming and numbering \HTML\ files.
 %
-% \item[\optn{HTMLFilename}:]
-% \DescribeOption{HTMLFilename}
-% \DescribeDefault{\{\}}
-% See \cref{sec:htmlsettings}.
+% \ItemDescribeOption{HTMLFilename}
+% \DescribeDefault{<empty>}
+%   A filename prefix for the rest of the \HTML\ web pages.
+%   Useful for numbered web pages with a common prefix.  May be empty.
+%   See \cref{sec:filenameexamples} for examples of naming and numbering \HTML\ files.
 %
 %
-% \item[\optn{ImagesName}:]
-% \DescribeOption{ImagesName}
+% \ItemDescribeOption{ImagesName}
 % \DescribeDefault{image-}
 % The prefix for the images automatically generated by \pkg{lwarp}
 % for objects such as \SVG\ math and \env{lateximage}s.
 %
 %
-% \item[\optn{ImagesDirectory}:]
-% \DescribeOption{ImagesDirectory}
+% \ItemDescribeOption{ImagesDirectory}
 % \DescribeDefault{\cs{jobname}-images}
 % The directory for the images automatically generated by \pkg{lwarp}
 % for objects such as \SVG\ math and \env{lateximage}s.
@@ -7491,22 +7515,19 @@
 % \filenm{image-<nn>}.
 %
 %
-% \item[\optn{PrintLatexCmd}:]
-% \DescribeOption{PrintLatexCmd}
+% \ItemDescribeOption{PrintLatexCmd}
 % \DescribeDefault{<automatic>} Sets the shell commands executed by \cmds{lwarpmk print}.
 %   If not specified, will automatically be set according to the detected \LaTeX\ engine
 %   and the use of \optn{-\/-shell-escape}.
 %
 %
-% \item[\optn{HTMLLatexCmd}:]
-% \DescribeOption{HTMLLatexCmd}
+% \ItemDescribeOption{HTMLLatexCmd}
 % \DescribeDefault{<automatic>} Sets the shell commands executed by \cmds{lwarpmk html}.
 %   If not specified, will automatically be set according to the detected \LaTeX\ engine
 %   and the use of \optn{-\/-shell-escape}.
 %
 %
-% \item[\optn{makeindex}:]
-% \DescribeOption{makeindex}
+% \ItemDescribeOption{makeindex}
 % \DescribeDefault{makeindex} Sets \optn{PrintIndexCmd}, \optn{HTMLIndexCmd},
 %   and \optn{LatexmkImageCmd}
 %   to use \prog{makeindex} when generating indexes with
@@ -7514,8 +7535,13 @@
 %   If neither \optn{makeindex} nor \optn{xindy} is used, \optn{makeindex} is assumed.
 %
 %
-% \item[\optn{xindy}:]
-% \DescribeOption{xindy}
+% \ItemDescribeOption{makeindexStyle}
+% \DescribeDefault{lwarp.ist}
+%   If you wish to use a custom |.ist| file for
+%   index generation, see \cref{sec:modifymakeindex}.
+%
+%
+% \ItemDescribeOption{xindy}
 % \DescribeDefault{makeindex} Sets \optn{PrintIndexCmd}, \optn{HTMLIndexCmd},
 %   and \optn{LatexmkImageCmd}
 %   to use \prog{xindy} when generating indexes with
@@ -7522,35 +7548,37 @@
 %   \cmds{lwarpmk printindex}, \cmds{lwarpmk htmlindex}, or \prog{latexmk}.
 %
 %
-% \item[\optn{makeindexStyle}:]
-% \DescribeOption{makeindexStyle}
-% \DescribeDefault{lwarp.ist}
-%   If you wish to use a custom |.ist| file for
-%   index generation, see \cref{sec:packageoptions}.
-%
-%
-% \item[\optn{xindyStyle}:]
-% \DescribeOption{xindyStyle}
+% \ItemDescribeOption{xindyStyle}
 % \DescribeDefault{lwarp.xdy}
 %   If you wish to use a custom |.xdy| file for
-%   index generation, see \cref{sec:packageoptions}.
+%   index generation, see \cref{sec:modifyxindy}.
 %
 %
-% \item[\optn{xindyLanguage}:]
-% \DescribeOption{xindyLanguage}
+% \ItemDescribeOption{xindyLanguage}
 % \DescribeDefault{english} If using an index or glossary,
 %   see \cref{sec:packageoptions}.
 %
 %
-% \item[\optn{xindyCodepage}:]
-% \DescribeOption{xindyCodepage}
+% \ItemDescribeOption{xindyCodepage}
 % \DescribeDefault{utf8} If using an index,
 % ^^A or glossary,
 %   see \cref{sec:packageoptions}.
 %
 %
-% \item[\optn{PrintIndexCmd}:]
-% \DescribeOption{PrintIndexCmd}
+% \ItemDescribeOption{xindex}
+% \DescribeDefault{makeindex} Sets \optn{PrintIndexCmd}, \optn{HTMLIndexCmd},
+%   and \optn{LatexmkImageCmd}
+%   to use \prog{xindex} when generating indexes with
+%   \cmds{lwarpmk printindex}, \cmds{lwarpmk htmlindex}, or \prog{latexmk}.
+%
+%
+% \ItemDescribeOption{xindexConfig}
+% \DescribeDefault{<empty>}
+%   If you wish to use a custom |xindex-*.lua| file for
+%   index generation, see \cref{sec:modifyxindex}.
+%
+%
+% \ItemDescribeOption{PrintIndexCmd}
 % \DescribeDefault{<automatic>} Sets the shell commands executed by \cmds{lwarpmk printindex}.
 %   If not specified, will be set by the selection of \optn{makeindex} or
 %   \optn{xindy}.  May be used to specify the creation of multiple indexes.
@@ -7572,7 +7600,7 @@
 %
 % If specifying \optn{PrintIndexCmd} manually,
 % \trouble{PrintIndexCmd}
-% \trouble[xindy]{xindy=\pkg{xindy}>options>PrintIndexCmd=\optn{PrintIndexCmd}}
+% \trouble[xindy]{xindy=\prog{xindy}>options>PrintIndexCmd=\optn{PrintIndexCmd}}
 % be sure to assign an \prog{xindy}
 % language and codepage with the |-L| and |-C| \prog{xindy} options, as the
 % \pkg{lwarp} \optn{xindyLanguage} and \optn{xindyCodepage} options are not
@@ -7588,8 +7616,7 @@
 % with the \pkg{lwarp} \optn{PrintIndexCmd} option.
 %
 %
-% \item[\optn{HTMLIndexCmd}:]
-% \DescribeOption{HTMLIndexCmd}
+% \ItemDescribeOption{HTMLIndexCmd}
 % \DescribeDefault{<automatic>} Sets the shell commands executed by \cmds{lwarpmk htmlindex}.
 %   If not specified, will be set by the selection of \optn{makeindex} or
 %   \optn{xindy}.  May be used to specify the creation of multiple indexes.
@@ -7612,7 +7639,7 @@
 % \optn{xindyLanuage}, and \optn{xindyCodepage} options will be used if specified.
 %
 % If specifying \optn{HTMLIndexCmd} manually,
-% \trouble[xindy]{xindy=\pkg{xindy}>options>HTMLIndexCmd=\optn{HTMLIndexCmd}}
+% \trouble[xindy]{xindy=\prog{xindy}>options>HTMLIndexCmd=\optn{HTMLIndexCmd}}
 % be sure to assign an \prog{xindy}
 % language and codepage with the |-L| and |-C| \prog{xindy} options, as the
 % \pkg{lwarp} \optn{xindyLanguage} and \optn{xindyCodepage} options are not
@@ -7622,8 +7649,7 @@
 % worthwhile to use a shell script, then refer to that script with \optn{HTMLIndexCmd}.
 %
 %
-% \item[\optn{LatexmkIndexCmd}:]
-% \DescribeOption{LatexmkIndexCmd}
+% \ItemDescribeOption{LatexmkIndexCmd}
 % \DescribeDefault{<automatic>} Sets the shell commands executed by \prog{latexmk}.
 %   Unlike \optn{PrintIndexCmd} and \optn{HTMLIndexCmd}, \optn{LatexmkIndexCmd}
 %   does not include any filenames, which will be provided instead by \prog{latexmk}.
@@ -7647,7 +7673,7 @@
 % shown above to compile each of multiple indexes if necessary.
 %
 % If specifying \optn{LatexmkIndexCmd} manually,
-% \trouble[xindy]{xindy=\pkg{xindy}>options>LatexmkIndexCmd=\optn{LatexmkIndexCmd}}
+% \trouble[xindy]{xindy=\prog{xindy}>options>LatexmkIndexCmd=\optn{LatexmkIndexCmd}}
 % be sure to assign an \prog{xindy}
 % language and codepage with the |-L| and |-C| \prog{xindy} options, as the
 % \pkg{lwarp} \optn{xindyLanguage} and \optn{xindyCodepage} options are not
@@ -7654,8 +7680,35 @@
 % used for the \optn{LatexmkIndexCmd} option when it is set manually.
 %
 %
-% \item[\optn{GlossaryCmd}:]
-% \DescribeOption{GlossaryCmd}
+% \ItemDescribeOption{IndexRef}
+%   \DescribeDefault{cref}
+%   \label{sec:optionindexref}
+%   Describes how to display the index entries for \HTML\ output.
+%   Possible values are \optn{ref}, \optn{nameref}, \optn{refnameref},
+%   \optn{cref}, \optn{crefnameref}, \optn{autoref}, or a text string
+%   such as \optn{(link)} or \optn{(*)} for each index entry reference.
+%   (Adding parentheses around a single character makes the link
+%   larger and easier to click on.)
+%   The default is \optn{cref}, which is available even if the print document
+%   does not use \pkg{cleveref}, as the \pkg{lwarp} package relies on \pkg{cleveref}
+%   during \HTML\ output.
+%   Option \optn{autoref} gives the same results as \optn{cref}.
+%
+%   \cs{ref} and \cs{cref} to starred or otherwise unknown links will display as
+%   |(*)| instead of |??|.
+%
+%   If using \optn{cref} (the default),
+%   \trouble[??]{index>?? and non-functional link}
+%   \trouble{index>formatting}
+%   and if a reference appears as |??| with a non-functional link,
+%   use \pkg{cleveref}'s \cs{crefname} to give a name to that type of label.
+%
+%   In general, \optn{crefnameref} gives the most information,
+%   but the index can become quite verbose.
+%   Using \optn{(*)} or similar yields a very compact index.
+%
+%
+% \ItemDescribeOption{GlossaryCmd}
 % \DescribeDefault{\cmds{makeglossaries}} Sets the shell command
 %   executed by \cmds{lwarpmk printglossary} and \cmds{lwarpmk htmlglossary}.
 %   The print or \HTML\ glossary filename is appended to this command.
@@ -7662,21 +7715,21 @@
 %   See \cref{sec:glossaries}.
 %
 %
-% \item[\optn{OSWindows}:]
-% \DescribeOption{OSWindows} \pkg{lwarp} attempts to automatically sense \brand{Windows},
+% \ItemDescribeOption{OSWindows}
+% \pkg{lwarp} attempts to automatically sense \brand{Windows},
 %   but it may be forced with this option.
 %   See \cref{sec:OSportabilityusage}.
 %
 %
-% \item[\optn{pdftotextEnc}:]
-% \DescribeOption{pdftotextEnc}
-% \DescribeDefault{UTF-8} Used to specify
+% \ItemDescribeOption{pdftotextEnc}
+% \DescribeDefault{UTF-8}
+%   Used to specify
 %   the encoding used by \prog{pdftotext} during the \PDF-\HTML\ conversion.
 %   In most situations, the default is the correct choice.
 %
 %
-% \item[\optn{lwarpmk}:]
-% \DescribeOption{lwarpmk}  If you wish to have \pkg{lwarp} generate a local
+% \ItemDescribeOption{lwarpmk}
+%   If you wish to have \pkg{lwarp} generate a local
 %   copy of \filenm{lwarpmk.lua} for archival or local-installation purposes,
 %   compile the print version with the \optn{lwarpmk} option set.
 %   See \cref{sec:packageoptions}.
@@ -7690,7 +7743,7 @@
 % \end{quote}
 %
 %
-% \item[\optn{warpprint} and \optn{warpHTML}:]
+% \item[\optn{warpprint} \textmd{and} \optn{warpHTML}:]
 % \DescribeOption{warpprint}
 % \DescribeOption{warpHTML}
 % Usually controlled by \prog{lwarpmk}, and not set in the document.
@@ -7705,8 +7758,7 @@
 % while |<project>_html.tex| will create an \HTML\ version.
 %
 %
-% \item[\optn{BaseJobname}:]
-% \DescribeOption{BaseJobname}
+% \ItemDescribeOption{BaseJobname}
 % \DescribeDefault{\cs{jobname}} Not intended for the user.
 %   Used internally by \pkg{lwarp} when
 %   creating the |*_html.tex| file used to compile the \HTML\ version.
@@ -7730,53 +7782,66 @@
 % \caption{\HTML\ settings}
 % \label{tab:htmlsettings}
 % \renewcommand{\arraystretch}{1.1}
-% \begin{tabular}{>{\ttfamily}lp{3in}}
+% \begin{threeparttable}
+% \begin{tabular}{>{\ttfamily}lcp{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. \\
+% Macro \Slash Cntr \Slash Bool & Loc\tnote{*} & Description \\ \midrule
+% \cs{linkhomename} & P & Name of the link to the homepage. \\
+% \cs{linkpreviousname} & P & Name of the link to the previous page. \\
+% \cs{linknextname} & P & Name of the link to the next page. \\
 % \midrule
-% SideTOCDepth & Sectioning depth of the side\TOC. \\
-% \cs{sidetocname} & Name of the side\TOC. \\
+% SideTOCDepth & P & Sectioning depth of the side\TOC. \\
+% \cs{sidetocname} & P & Name of the side\TOC. \\
 % \midrule
-% FileDepth & Sectioning depth of the file splits. \\
-% CombineHigherDepths & Combine higher section levels. \\
-% FileSectionNames & Use section names for file names, else use numbers. \\
-% \cs{FilenameLimit} & Maximum length of the generated filenames. \\
+% FileDepth & P & Sectioning depth of the file splits. \\
+% CombineHigherDepths & P & Combine higher section levels. \\
+% FileSectionNames & P & Use section names for file names, else use numbers. \\
+% \cs{FilenameLimit} & P & Maximum length of the generated filenames. \\
 % \midrule
-% FootnoteDepth & Sectioning depth of footnotes. \\
+% FootnoteDepth & P & Sectioning depth of footnotes. \\
 % \midrule
-% \cs{abstractname} & The name of the abstract. \\
-% \cs{ImageAltText} & \cs{includegraphics} and other images' \attribute{alt} tag. \\
-% \cs{ThisAltText} \marg{text} & Assigns an \attribute{alt} \Slash \attribute{title}
+% \cs{abstractname} & P & The name of the abstract. \\
+% \cs{ImageAltText} & PD & \cs{includegraphics} and other images' \attribute{alt} tag. \\
+% \cs{ThisAltText} \marg{text} & PD & Assigns an \attribute{alt} \Slash \attribute{title}
 %   tag for the next image or link. \\
-% \cs{MathImageAltText} & The \SVG\ math image \env{lateximage} \attribute{alt} tag. \\
-% \cs{PackageDiagramAltText} & The suffix for a package's \env{lateximage} \attribute{alt} tags. \\
-% \cs{AltTextOpen} & Start an \HTML\ \attribute{alt} tag. \\
-% \cs{AltTextClose} & End an \HTML\ \attribute{alt} tag. \\
+% \cs{MathImageAltText} & PD & The \SVG\ math image \env{lateximage} \attribute{alt} tag. \\
+% \cs{PackageDiagramAltText} & PD & The suffix for a package's \env{lateximage} \attribute{alt} tags. \\
+% \cs{AltTextOpen} & PD & Start an \HTML\ \attribute{alt} tag. \\
+% \cs{AltTextClose} & PD & End an \HTML\ \attribute{alt} tag. \\
 % \midrule
-% \cs{CSSFilename} & The \CSS\ for the following files. \\
-% \cs{MathJaxFilename} & The MathJax script for the following files. \\
+% \cs{CSSFilename} & PS & The \CSS\ for the following files. \\
+% \cs{MathJaxFilename} & PS & The MathJax script for the following files. \\
 % \midrule
-% \cs{HTMLLanguage} & The \HTML\ \attribute{lang} tag. \\
-% \cs{HTMLTitle} & The homepage's \element{title}, overriding \cs{title}. \\
-% \cs{HTMLTitleBeforeSection} & Set subpage \element{title}s to \newline
+% \cs{HTMLLanguage} & PS & The \HTML\ \attribute{lang} tag. \\
+% \cs{HTMLTitle} & PS & The homepage's \element{title}, overriding \cs{title}. \\
+% \cs{HTMLTitleBeforeSection} & PS & Set subpage \element{title}s to \newline
 %   \fqquad \attribute{\cs{HTMLTitle} - sectionname} \\
-% \cs{HTMLTitleAfterSection} & Set subpage \element{title}s to \newline
+% \cs{HTMLTitleAfterSection} & PS & Set subpage \element{title}s to \newline
 %   \fqquad \attribute{sectioname - \cs{HTMLTitle}}\\
-% \cs{HTMLAuthor} & The \HTML\ \attribute{author} meta tag, overriding \cs{author}. \\
-% \cs{HTMLDescription} & The \HTML\ \attribute{description} meta tag. \\
+% \cs{HTMLAuthor} & PS & The \HTML\ \attribute{author} meta tag, overriding \cs{author}. \\
+% \cs{HTMLDescription} & PS & The \HTML\ \attribute{description} meta tag. \\
 % \midrule
-% \cs{HTMLFirstPageTop} & Heading for the home page. \\
-% \cs{HTMLFirstPageTop} & Footer for the home page. \\
-% \cs{HTMLPageTop} & Heading for the other pages. \\
-% \cs{HTMLPageBottom} & Footer for the other pages. \\
+% \cs{HTMLFirstPageTop} & P & Heading for the home page. \\
+% \cs{HTMLFirstPageBottom} & P & Footer for the home page. \\
+% \cs{HTMLPageTop} & PS & Heading for the other pages. \\
+% \cs{HTMLPageBottom} & PS & Footer for the other pages. \\
 % \midrule
-% FixSmallCaps & Set \optn{true} if small caps rendered as all caps. \\
-% HTMLDebugComments & Boolean to generate \HTML\ comments. \\
+% \cs{IndexPageSeparator} & P & Index page list separator. \\
+% \cs{IndexRangeSeparator} & P & Index page range separator. \\
+% \midrule
+% FixSmallCaps & P & Set \optn{true} if small caps rendered as all caps. \\
+% HTMLDebugComments & P & Boolean to generate \HTML\ comments. \\
 % \bottomrule
 % \end{tabular}
+% \begin{tablenotes}
+% \item [*]
+%   \begin{inlinedesc}
+%   \item [P:] Preamble,
+%   \item [D:] Anywhere in the document.
+%   \item [S:] Before a section.
+%   \end{inlinedesc} \hspace*{\fill}
+% \end{tablenotes}
+% \end{threeparttable}
 % \end{table}
 %
 % \Cref{tab:htmlsettings} shows several settings may be used
@@ -7796,62 +7861,25 @@
 %
 % \begin{description}[style=unboxed]
 %
-% \item[Options for the \pkg{lwarp} package:] \ \newline
-%   Use the following as options for |\usepackage[<options>]{lwarp}|:
+% \needspace{3\baselineskip}
+% \item[Placed in the preamble before \texttt{\cs{begin}\{document\}}:] \
 %
 %   \begin{description}
 %
-% \ItemDescribeOption{HomeHTMLFilename} \DescribeDefault{\cs{BaseJobname}}
-%   Filename of the homepage, without
-%   the ``\filenm{.html}'' suffix.
-%   Defaults to the \cs{BaseJobname}.  A common setting is:
-%   \begin{sourcedisplay}
-%   |HomeHTMLFilename=index|
-%   \end{sourcedisplay}
-%   causing the
-%   homepage to be the file |index.html|.  Underscores are allowed in
-%   \margintag{filename underscores}
-%   \optn{HomeHTMLFilename} and \optn{HTMLFilename} options, but may need to be escaped
-%   elsewhere, such as when appearing in a list:
-%   \gindex{underscore>filename}\gindex{filename>underscore in}
-%   \changes{v0.24}{2017/03/13}{Docs: Filename underscore.}
-%   \begin{sourcedisplay}
-%        \cs{item} [\cs{href}\{file\textred{\textbackslash\_}name.pdf\}\{text\}] \textbackslash
-%   \end{sourcedisplay}
-%   See \cref{sec:filenameexamples} for examples of naming and numbering \HTML\ files.
+% \ItemDescribeMacro{\HTMLFirstPageTop} \marg{contents}  \DescribeDefault{<empty>} \quad
+%   A user-definable custom action applied
+%   to the top of the home page.  Useful for logos, etc.
+%   \cs{LinkNext} may be used to link to the next web page.
+%   Defaults empty.
+%   Ignored in print output.
 %
-% \ItemDescribeOption{HTMLFilename} \DescribeDefault{<empty>}
-%   A filename prefix for the rest of the \HTML\ web pages.
-%   Useful for numbered web pages with a common prefix.  May be empty.
-%   See \cref{sec:filenameexamples} for examples of naming and numbering \HTML\ files.
+% \ItemDescribeMacro{\HTMLFirstPageBottom} \marg{contents}  \DescribeDefault{<empty>} \quad
+%   A user-definable custom action applied
+%   to the bottom of the home page.  Useful for logos, etc.
+%   \cs{LinkNext} may be used to link to the next web page.
+%   Defaults empty.
+%   Ignored in print output.
 %
-% \ItemDescribeOption{latexmk} \DescribeDefault{false}
-%   Controls whether \pkg{lwarp} uses \prog{latexmk} to
-%   compile the document.  This setting is written to \prog{lwarpmk}'s configuration
-%   files.
-%
-% \ItemDescribeOption{mathsvg} \DescribeDefault{true}
-%   Selects \SVG\ display for math output.  (The default.)
-%
-% \ItemDescribeOption{mathjax} \DescribeDefault{false}
-%   Selects \brand{MathJax} for math output.
-%
-% ^^A \ItemDescribeOption{mathKaTeX} \DescribeDefault{false}
-% ^^A  Selects Ka\TeX\ for math output.
-%
-% \ItemDescribeOption{makeindex} \DescribeDefault{makeindex}
-%   Selects \prog{makeindex} for index generation by \prog{lwarpmk}.
-%
-% \ItemDescribeOption{xindy} \DescribeDefault{makeindex}
-%   Selects \prog{xindy} for index generation by \prog{lwarpmk}.
-%
-%   \end{description} \bigskip
-%
-% \needspace{3\baselineskip}
-% \item[Placed in the preamble before \texttt{\cs{begin}\{document\}}:] \
-%
-%   \begin{description}
-%
 % \ItemDescribeMacro{\linkhomename} \DescribeDefault{Home}
 %   Name of the link to the home page.  Paragraphs are allowed.
 %   Redefine with \cs{renewcommand}.
@@ -7999,6 +8027,14 @@
 %   by the \pkg{babel} package.  Defaults to ``|Abstract|''.
 %   Redefine with \cs{renewcommand}.
 %
+% \ItemDescribeMacro{\IndexPageSeparator} \DescribeDefault{``, ''}
+%   Index page list separator.  Adjust to match index style file.
+%   If using \pkg{gindex}, this is set automatically to \pkg{gindex}'s \cs{indexpagessep}.
+%
+% \ItemDescribeMacro{\IndexRangeSeparator}  \DescribeDefault{``-\/-''}
+%   Index page range separator.  Adjust to match index style file.
+%   If using \pkg{gindex}, this is set automatically to \pkg{gindex}'s \cs{indexrangesep}.
+%
 % \end{description}
 %
 % \needspace{3\baselineskip}
@@ -8075,20 +8111,6 @@
 %   the following files.  May be changed before each each sectioning command which would
 %   cause a file split.
 %
-% \ItemDescribeMacro{\HTMLFirstPageTop} \marg{contents}  \DescribeDefault{<empty>} \quad
-%   A user-definable custom action applied
-%   to the top of the home page.  Useful for logos, etc.
-%   \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.
@@ -8107,6 +8129,8 @@
 %   Ignored in print output.
 %
 % \ItemDescribeMacro{\LinkHome} Creates a link to the home page.
+%   \gindex{link>home \Slash previous \Slash next page}
+%   \gindex{navigation>link to home \Slash previous \Slash next page}
 %   Usually used in \cs{HTMLPageTop} and related.
 %
 % \ItemDescribeMacro{\LinkPrevious} Creates a link to the previous \HTML\ page,
@@ -8691,11 +8715,52 @@
 % \trouble{Korean>font}
 %
 %
-% \subsubsection{Horizontal space}
+% \subsubsection{Horizontal and vertical space and rules}
 %
-% \limitshspace
+% \DescribeMacro{\hspace}
+% \gindex{space>horizontal and vertical}
+% \gindex{horizontal and vertical space}
+% \gindex{vertical space}
+% \cs{hspace} is converted to an inline \HTML\ span of the given width,
+% except that \texttt{0} width is ignored,
+% a width of \texttt{.16667em} is converted to
+% an \HTML\ thin breakable space (\texttt{U+2009}),
+% and a \cs{fill} is converted to a \cs{qquad}.
 %
+% \DescribeMacro{\vspace}
+% \cs{vspace} is ignored for \HTML.
 %
+% \gindex{\texttt{\textasciitilde}}
+% \gindex{\cs{,}}
+% \marginpar{\hspace*{\fill}\texttt{\~}}
+% \DescribeMacro{\,}
+% \texttt{\~} and \cs{,} are converted to \HTML\ entities.
+% 
+% \DescribeMacro{\kern}
+% \DescribeMacro{\hskip}
+% \cs{kern} and \cs{hskip} are entered into the \HTML\ \PDF\ output as-is,
+% then interpreted by \prog{pdftotext}, and thus usually appear as a single space.
+%
+% \DescribeMacro{\rule}
+% \cs{rule} is converted to an \HTML\ rule of the same dimensions,
+% of the currently selected text color.
+%
+% \DescribeMacro{\hrule}
+% \DescribeMacro{\vrule}
+% \trouble{hrule=\cs{hrule}}
+% \gindex{hrule=\cs{hrule}}
+% Both \cs{hrule} and \cs{vrule} are ignored for \HTML.
+% To create a horizontal dividing rule across the page,
+% use \cs{hrulefill} in its own paragraph.
+%
+% \DescribeMacro{\hrulefill}
+% \gindex{rule>horizontal}
+% \gindex{horizontal rule}
+% \cs{hrulefill} usually creates a one-inch rule, similar to a ``fill in the blank''.
+% If it is used at the start of a new paragraph, it creates a \element{div}
+% with a thin horizontal border across the page, as would often be done with \cs{hrule}.
+%
+%
 % \subsubsection{Text alignment}
 %
 % Use the environments \env{center}, \env{flushright}, \env{flushleft} instead
@@ -8865,7 +8930,45 @@
 % \DescribePackage{mdframed}
 % \limitsmdframed
 %
+
+% \subsubsection{\pkg{tcolorbox} package}
+% \label{sec:limitstcolorbox}
 %
+% \DescribePackage{tcolorbox}
+% \trouble{tcolorbox=\pkg{tcolorbox}}
+% \pkg{tcolorbox} is emulated for \HTML\ and \brand{MathJax}, and
+% supported as-is inside a \env{lateximage} or \SVG\ math.
+%
+% What has been tested to work (at least partly) includes:
+% \begin{itemize}[nosep]
+% \item \env{tcolorbox}, \cs{tcbox}.
+% \item Title, subtitle.
+% \item Upper, lower parts.
+% \item Colors and title fonts.
+% \item Floating objects.
+% \item Some layered box features.
+% \item Counters, labels, references.
+% \item \pkg{listings}, \pkg{listingsutf8}.
+% \item \optn{theorems}:
+%           Theorems are supported.
+%           \optn{math}, \optn{ams equation}, etc.\ are not supported. \watchout[math]
+%           Use a \env{tcolorbox} with regular math inside it.
+%           \cs{tcboxmath} and \cs{tcbhighmath} are suppored in \SVG\ math, and
+%           emulated in \brand{MathJax}.
+% \item Fitting features: \cs{tcboxfit} becomes \cs{tcbox} in \HTML.
+% \item Footnote numbering does not match the printed output.\watchout[footnotes]
+% \item MathJax emulation is provided for common macros.
+% \end{itemize}
+%
+% If using \pkg{cleveref},
+% \trouble[undefined references]{reference>undefined>tcolorbox=\pkg{tcolorbox}}
+% it may be necessary to name theorems such as:
+% \begin{sourceverb}
+% \crefname{tcb at cnt@mytheo}{my theorem}{my theorems}
+% \end{sourceverb}
+%
+%
+%
 % \subsection{Section names}
 % \label{sec:limitssectionnames}
 %
@@ -9194,8 +9297,13 @@
 %
 % If using a custom indexing style file,
 % \margintag{custom index style}
-% see \cref{sec:modifymakeindex,sec:modifyxindy}.
+% see \cref{sec:modifymakeindex,sec:modifyxindy,sec:modifyxindex}.
 %
+% To control how the index links appear in the \HTML\ output,
+% \margintag{link appearance}
+% see the \optn{IndexRef} option in \cref{sec:optionindexref},
+% \cpageref{sec:optionindexref}.
+%
 % See \cref{sec:index} for \pkg{lwarp}'s core index and glossary code,
 % \margintag{source code}
 % \gindex{index>source code}
@@ -9206,15 +9314,16 @@
 % and \cref{sec:memoirbackmatter} for \pkg{memoir}'s indexing patches.
 %
 %
-% \subsubsection{Indexing with basic \LaTeX\ and \pkg{makeidx}}
+% \subsubsection{Indexing with \pkg{makeidx}, \prog{makeindex},
+%       \prog{xindy}, \prog{xindex}, \pkg{gindex}}
 % \label{sec:indexsetup}
 %
 % \changes{v0.38}{2017/08/24}{Docs: Index, \pkg{tocbibind}.}
 % \changes{v0.58}{2018/06/14}{Docs: Index, \prog{makeindex}, \pkg{imakeidx}.}
 %
-% \gindex{xindy=\pkg{xindy}>and \pkg{hyperref}}
-% \gindex{hyperref=\pkg{hyperref}>and \pkg{xindy}}
-% \gindex{index>xindy=\pkg{xindy} and \pkg{hyperref}}
+% \gindex{xindy=\prog{xindy}>and \pkg{hyperref}}
+% \gindex{hyperref=\pkg{hyperref}>and \prog{xindy}}
+% \gindex{index>xindy=\prog{xindy}>hyperref=and \pkg{hyperref}}
 % \trouble{index>missing entries}
 % \gindex{index>see, seealso, ranges}
 % \gindex{index>processing}
@@ -9229,6 +9338,9 @@
 % 
 % \needspace{2\baselineskip}
 % \item [For a single index using \prog{makeindex}:]
+% \DescribeProgram{makeindex}
+% \gindex{makeindex=\prog{makeindex}}
+% \gindex{index>makeindex=\prog{makeindex}>setup}
 %     \begin{sourcedisplay}
 %     \cs{usepackage}\textred{[makeindex\textgreen{,latexmk}]}
 %           \{\textblue{lwarp}\}
@@ -9243,8 +9355,13 @@
 %     Otherwise, use \userentry{lwarpmk printindex} \userentry{lwarpmk htmlindex}
 %     to compile the indexes.
 %
+%     To use a custom configuration file, see \cref{sec:modifymakeindex}.
+%
 % \needspace{8\baselineskip}
 % \item [For a single index using \prog{xindy}:]
+% \DescribeProgram{xindy}
+% \gindex{xindy=\prog{xindy}}
+% \gindex{index>xindy=\prog{xindy}>setup}
 %     \begin{sourcedisplay}
 %     \cs{usepackage}[ \\
 %       \fqquad \textred{xindy,} \\
@@ -9260,11 +9377,63 @@
 %     \prog{latexmk} will create the index automatically.
 %     Otherwise, use \userentry{lwarpmk printindex} \userentry{lwarpmk htmlindex}
 %     to compile the indexes.
+%
+%     To use a custom configuration file, see \cref{sec:modifyxindy}.
+%
+% \needspace{8\baselineskip}
+% \item [For a single index using \prog{xindex}:]
+% \DescribeProgram{xindex}
+% \gindex{xindex=\prog{xindex}}
+% \gindex{index>xindex=\prog{xindex}>setup}
+%     \begin{sourcedisplay}
+%     \cs{usepackage}[ \\
+%       \fqquad \textred{xindex,} \\
+%       \fqquad \textgreen{latexmk} \hfill \textrm{<optional>}\\
+%     ]\{\textblue{lwarp}\}
+%     \end{sourcedisplay}
+%     The usual \filenm{.idx} and \filenm{.ind} files will be used.
+%
+%     \prog{lwarpmk} will use \prog{latexmk} if specified, in which case
+%     \prog{latexmk} will create the index automatically.
+%     Otherwise, use \userentry{lwarpmk printindex} \userentry{lwarpmk htmlindex}
+%     to compile the indexes.
+%
+%     To use a custom configuration file, see \cref{sec:modifyxindex}.
+%
+%
+% \needspace{8\baselineskip}
+% \item [For a single index using \pkg{gindex}:]
+% \DescribePackage{gindex}
+% \gindex{gindex=\pkg{gindex}}
+% \gindex{index>gindex=\pkg{gindex}>setup}
+%     \begin{sourcedisplay}
+%     \cs{usepackage}[ \\
+%       \fqquad \textred{makeindex,} \\
+%       \fqquad \textred{makeindexStyle=gindex.ist,} \\
+%       \fqquad \dots or \dots \\
+%       \fqquad \textred{makeindexStyle=gindexh.ist,} \\
+%       \fqquad \textgreen{latexmk} \hfill \textrm{<optional>}\\
+%     ]\{\textblue{lwarp}\}
+%     \end{sourcedisplay}
+%     The usual \filenm{.idx} and \filenm{.ind} files will be used.
+%
+%     \prog{lwarpmk} will use \prog{latexmk} if specified, in which case
+%     \prog{latexmk} will create the index automatically.
+%     Otherwise, use \userentry{lwarpmk printindex} \userentry{lwarpmk htmlindex}
+%     to compile the indexes.
+%
+%     To use a custom configuration file, copy \filenm{gindex.ist} to a new
+%     file, modify, then specify it with \optn{MakeindexStyle} as above.
+%     \pkg{lwarp} will automatically adapt to \pkg{gindex}'s \cs{indexpagessep}
+%     and \cs{indexrangesep} settings.
 % \end{description}
 %
 %
 % \subsubsection{Indexing with \pkg{index}}
 %
+% \DescribeProgram{index}
+% \gindex{index>index=\prog{index}>setup}
+%
 % \pkg{lwarp} is told how to use \prog{makeindex} using the
 % \optn{PrintIndexCmd} and \optn{HTMLIndexCmd} options.
 % The file \filenm{lwarp.ist} is specified, which generates index letter heads for
@@ -9314,6 +9483,9 @@
 %
 % \subsubsection{Indexing with \pkg{splitidx}}
 %
+% \DescribeProgram{splitidx}
+% \gindex{index>splitidx=\prog{splitidx}>setup}
+%
 % \pkg{lwarp} is told how to use \prog{splitindex} using the
 % \optn{PrintIndexCmd} and \optn{HTMLIndexCmd} options.
 % The file \filenm{lwarp.ist} is specified, which generates index letter heads for
@@ -9374,11 +9546,12 @@
 % \end{description}
 %
 %
-%
-%
 % \subsubsection{Indexing with \pkg{imakeidx}}
 % \label{sec:indexingimakeidx}
 %
+% \DescribeProgram{imakeidx}
+% \gindex{index>imakeidx=\prog{imakeidx}>setup}
+%
 % Due to the number of methods which may be used to process multiple indexes,
 % the options for style file and \prog{xindy} language and codepage must be
 % specified in one of several different ways.  These are described in detail later in
@@ -9390,7 +9563,9 @@
 % \optn{options=} option, which must include
 % \pkg{lwarp}'s special \filenm{lwarp.ist} or \filenm{lwarp.xdy} file,
 % or a file based on them.
-% If using a custom indexing style file, see \cref{sec:modifymakeindex,sec:modifyxindy}.
+% If using a custom indexing style file,
+% see \cref{sec:modifymakeindex,sec:modifyxindy,sec:modifyxindex}.
+%
 % The \optn{splitindex} option is also available of shell escape is used,
 % in which case the \pkg{splitidx} package and \prog{splitindex} program will also be used.
 %
@@ -9546,14 +9721,51 @@
 %
 %     Use \userentry{lwarpmk printindex} \userentry{lwarpmk htmlindex}
 %     to compile the indexes.
+%
+% \needspace{2\baselineskip}
+% \item [For multiple indexes using \prog{xindex} and \pkg{imakeidx}, using shell escape:] \
+%
+%       \prog{xindex}, \prog{makeindex}, \prog{imakeidx}, and \prog{splitindex} can
+%       all work together:
+%     \begin{sourcedisplay}
+%     \cs{usepackage}\textred{[\% \\
+%           \fquad xindex, \\
+%           \fquad xindexConfig=-imakeidx, \\
+%           \fquad \textgreen{latexmk} \\
+%       ]}
+%       \{\textblue{lwarp}\} \\
+%     \cs{usepackage}\textred{[makeindex\textgreen{,splitindex}]}\{\textblue{imakeidx}\} \\
+%     \dots \\
+%     \cs{makeindex}[\% \\
+%       \fquad \textgreen{options=\{ -s lwarp.ist\} \}} \\
+%     ] \\
+%     \cs{makeindex}[ \\
+%       \fquad name=secondname, \\
+%       \fquad \textgreen{options=\{ -s lwarp.ist\} \}} \\
+%     ] \\
+%     \end{sourcedisplay}
+%     For the first compile, use:
+%       \watchout[enable shell escape]
+%     \userentry{pdflatex \textred{-\/-shell-escape} projectname.tex}
+%     \userentry{pdflatex \textred{-\/-enable-write18} projectname.tex \quad \textrm{(MiKTeX)}}
+%     or similar with \prog{xelatex} or \prog{lualatex}.
+%     \pkg{lwarp} will remember if shell escape was used.
+%
+%     \prog{xindex} will use \prog{imakeidx},
+%       and \prog{imakeidx} will automatically execute \prog{splitindex} if selected.
+%
+%     If selected, \prog{latexmk} will automatically recompile the entire document
+%       as necessary.
 % \end{description}
 %
 %
 % \subsubsection{Indexes with \pkg{memoir}}
 %
+% \gindex{index>memoir=\pkg{memoir}>setup}
+%
 % \begin{description}
 % \needspace{7\baselineskip}
-% \item [For a single index with \pkg{memoir} and \pkg{makeindex}:]
+% \item [For a single index with \pkg{memoir} and \prog{makeindex}:]
 %   \begin{sourcedisplay}
 %       \cs{documentclass}\{\textblue{memoir}\} \\
 %       \cs{usepackage}\textred{[makeindex\textgreen{,latexmk}]}\{\textblue{lwarp}\} \\
@@ -9569,7 +9781,7 @@
 %     to compile the indexes.
 %
 % \needspace{9\baselineskip}
-% \item [For multiple indexes with \pkg{memoir} and \pkg{makeindex},
+% \item [For multiple indexes with \pkg{memoir} and \prog{makeindex},
 %   using \prog{latexmk}:] \
 %
 % \pkg{lwarp}'s options are used, and are passed to \prog{latexmk}.
@@ -9584,7 +9796,7 @@
 %     when the user executes \cmds{lwarpmk print} and \cmds{lwarpmk html}.
 %
 % \needspace{19\baselineskip}
-% \item [For multiple indexes with \pkg{memoir} and \pkg{makeindex},
+% \item [For multiple indexes with \pkg{memoir} and \prog{makeindex},
 %   \emph{without} \pkg{latexmk}:] \
 %
 %   \prog{lwarpmk} must be told how to create the indexes:
@@ -9615,7 +9827,7 @@
 %     to compile the indexes.
 %
 % \needspace{13\baselineskip}
-% \item [For a single index with \pkg{memoir} and \pkg{xindy}:]
+% \item [For a single index with \pkg{memoir} and \prog{xindy}:]
 %       \begin{sourcedisplay}
 %       \cs{documentclass}\{\textblue{memoir}\} \\
 %       \cs{usepackage}[ \\
@@ -9637,7 +9849,7 @@
 %       to compile the indexes.
 %
 % \needspace{17\baselineskip}
-% \item [For multiple indexes with \pkg{memoir} and \pkg{xindy},
+% \item [For multiple indexes with \pkg{memoir} and \prog{xindy},
 %   using \pkg{latexmk}:] \
 %
 % \pkg{lwarp}'s options are used, and are passed to \prog{latexmk}.
@@ -9657,7 +9869,7 @@
 %       \prog{lwarpmk} will use \prog{latexmk} to create the indexes automatically.
 %
 % \needspace{24\baselineskip}
-% \item [For multiple indexes with \pkg{memoir} and \pkg{xindy},
+% \item [For multiple indexes with \pkg{memoir} and \prog{xindy},
 %   \emph{without} \pkg{latexmk}:] \
 %
 %   \prog{lwarpmk} must be told how to create the indexes:
@@ -9701,8 +9913,8 @@
 % \DescribeFile{lwarp.ist}
 % When using \prog{makeindex}, \prog{lwarpmk} uses the file |lwarp.ist| to process the index.
 % \gindex{lwarp.ist=\filenm{lwarp.ist}>customizing}
-% \gindex{makeindex>customizing}
-% \gindex{index>custom \pkg{makeindex} style file}
+% \gindex{makeindex=\prog{makeindex}>customizing}
+% \gindex{index>makeindex=\prog{makeindex}>custom style file}
 % This file is over-written by \pkg{lwarp} whenever a print version of
 % the document is processed.
 %
@@ -9713,14 +9925,24 @@
 %   Keep the lines which refer to \cs{hyperindexref}.
 %   These lines creates the hyperlinks for the \HTML\ index.  During print output
 %   \cs{hyperindexref} becomes a null function.
+% \item If changing
+%   \begin{sourceverb}
+%   delim_n -and- delim_r
+%   \end{sourceverb}
+%   in \filenm{projectname.ist}, then in the document preamble redefine
+%   \begin{sourceverb}
+%   \IndexPageSeparator -and- \IndexRangeSeparator
+%   \end{sourceverb}
+%   to match.
 % \item In the document source use the \optn{makeindexStyle} option for \pkg{lwarp}:
 % \DescribeOption{makeindexStyle}
-%   \begin{Verbatim}[gobble=2,tabsize=4]
-%       \usepackage[
-%           ... other options ...
-%           \textred{makeindexStyle=projectname.ist},
-%       ]{lwarp}
-%   \end{Verbatim}
+%   \begin{sourcedisplay}
+% \cs{usepackage}[ \\
+%     \fquad \dots other options \dots \\
+%     \fquad \textred{makeindex}, \\
+%     \fquad \textred{makeindexStyle=projectname.ist}, \\
+% ]\{lwarp\}
+%   \end{sourcedisplay}
 %   Likewise, refer to the custom style file if using \cs{PrintIndexCmd},
 %   \cs{HTMLIndexCmd}, or \cs{LatexmkIndexCmd}.
 % \item Recompile the print version, which causes
@@ -9737,8 +9959,8 @@
 % \DescribeFile{lwarp.xdy}
 % When using \prog{xindy}, \prog{lwarpmk} uses the file |lwarp.xdy| to process the index.
 % \gindex{lwarp.xdy=\filenm{lwarp.xdy}>customizing}
-% \gindex{xindy=\pkg{xindy}>customizing}
-% \gindex{index>custom \pkg{xindy} style file}
+% \gindex{xindy=\prog{xindy}>customizing}
+% \gindex{index>xindy=\prog{xindy}>custom style file}
 % This file is over-written by \pkg{lwarp} whenever a print version of
 % the document is processed.
 %
@@ -9758,14 +9980,28 @@
 %   \cs{hyperindexref} becomes a null function.
 %
 %   To create custom styles, refer to the lines for \cs{textbf} and \cs{textit}.
+% \item If changing any of
+%   \begin{sourceverb}
+%   markup-locref-list :sep
+%   markup-locclass-list :open
+%   markup-locclass-list :sep
+%   markup-crossref-layer-list :sep
+%   markup-range :sep
+%   \end{sourceverb}
+%   in \filenm{projectname.xdy}, then in the document preamble redefine
+%   \begin{sourceverb}
+%   \IndexPageSeparator -and- \IndexRangeSeparator
+%   \end{sourceverb}
+%   to match.
 % \item In the document source use the \optn{xindyStyle} option for \pkg{lwarp}:
 % \DescribeOption{xindyStyle}
-%   \begin{Verbatim}[gobble=2,tabsize=4]
-%       \usepackage[
-%           ... other options ...
-%           \textred{xindyStyle=projectname.xdy},
-%       ]{lwarp}
-%   \end{Verbatim}
+%   \begin{sourcedisplay}
+% \cs{usepackage}[ \\
+%   \fquad \dots other options \dots \\
+%   \fquad \textred{xindy}, \\
+%   \fquad \textred{xindyStyle=projectname.xdy}, \\
+% ]\{lwarp\}
+%   \end{sourcedisplay}
 %   Likewise, refer to the custom style file if using \cs{PrintIndexCmd},
 %   \cs{HTMLIndexCmd}, or \cs{LatexmkIndexCmd}.
 % \item Recompile the print version, which causes
@@ -9772,12 +10008,50 @@
 %   \pkg{lwarp} to rewrite the |lwarpmk.conf| configuration file.
 %   This tells \prog{lwarpmk} to use the custom |projectname.xdy| file instead of |lwarp.xdy|.
 % \end{enumerate}
+%
+%
+% \subsubsection{Using a custom \prog{xindex} style file}
+% \label{sec:modifyxindex}
+%
+% \DescribeProgram{xindex}
+% \gindex{xindex=\prog{xindex}>customizing}
+% \gindex{index>xindex=\prog{xindex}>custom configuration file}
+% To use a custom \prog{xindex} style file:
+% \begin{enumerate}
+% \item Copy |xindex-cfg.lua| to a new filename such as \filenm{xindex-projectname.lua}.
+%   The filename must start with \filenm{xindex-} and end with \filenm{.lua}.\watchout[filename]
+% \item Make changes to \filenm{xindex-projectname.lua}.
+% \item If changing
+%   \begin{sourceverb}
+%   itemPageDelimiter -and- rangeSymbol
+%   \end{sourceverb}
+%   in \filenm{xindex-projectname.lua}, then in the document preamble redefine
+%   \begin{sourceverb}
+%   \IndexPageSeparator -and- \IndexRangeSeparator
+%   \end{sourceverb}
+%   to match.
+% \item In the document source use the \optn{xindexConfig} option for \pkg{lwarp}:
+% \DescribeOption{xindexConfig}
+%   \begin{sourcedisplay}
+% \cs{usepackage}[ \\
+%     \fquad \dots other options \dots \\
+%     \fquad \textred{xindex}, \\
+%     \fquad \textred{xindexConfig=projectname}, \quad \% \textgreen{(without xindex- or .lua)} \\
+% ]\{lwarp\}
+%   \end{sourcedisplay}
+%   Likewise, refer to the custom style file if using \cs{PrintIndexCmd},
+%   \cs{HTMLIndexCmd}, or \cs{LatexmkIndexCmd}.
+% \item Recompile the print version, which causes
+%   \pkg{lwarp} to rewrite the |lwarpmk.conf| configuration file.
+%   This tells \prog{lwarpmk} to use the custom
+%   \filenm{xindex-projectname.lua} file instead of the default |xindex-cfg.lua|.
+% \end{enumerate}
 % 
 % 
 % \subsubsection{Additional indexing limitations}
 % \prog{xindy} and \pkg{hyperref} may not work well together for print output
-% \trouble[\pkg{xindy} with \pkg{hyperref}]{xindy=\pkg{xindy}>hyperref=\pkg{hyperref}}
-% \trouble{index>xindy=\pkg{xindy} and \pkg{hyperref}}
+% \trouble[\prog{xindy} with \pkg{hyperref}]{xindy=\prog{xindy}>hyperref=and \pkg{hyperref}}
+% \trouble{index>xindy=\prog{xindy}>hyperref=and \pkg{hyperref}}
 % \trouble{index>see and seealso}
 % \trouble{index>reference ranges}
 % \trouble{index>styling references}
@@ -9821,6 +10095,9 @@
 %
 % 
 % \subsubsection{Index positions, \TOC, \pkg{tocbibind}}
+% \gindex{index>placement}
+% \gindex{index>tocbibind=\pkg{tocbibind}}
+%
 % \limitstocbibind
 %
 % \limitstocloft
@@ -10285,7 +10562,7 @@
 % are used to set customized commands to be executed by
 % \cmds{lwarpmk print} and \cmds{lwarpmk html}.
 % \begin{description}
-% \item [\optn{PrintLatexCmd}] should be set to shell commands which take \filenm{project.tex}
+% \item[\optn{PrintLatexCmd}] should be set to shell commands which take \filenm{project.tex}
 %     and generate \filenm{project.pdf}.
 % \item[\optn{HTMLLatexCmd}] should be set to take \filenm{project_html.tex} and
 %     generate \filenm{project_html.pdf}.
@@ -11501,6 +11778,14 @@
 %           \end{sourcedisplay}
 %           inside a group first.
 %
+%           As a stop-gap measure, you may wish to try incrementing
+%           \label{sec:troubletexboxes}
+%           \margintag{\ctr{LWR at texboxdepth}}
+%           the counter \ctr{LWR at texboxdepth} before the problematic
+%           macro, and then decrementing it after.
+%           Doing so tells \pkg{lwarp} to avoid using a \cs{newpage} inside
+%           the macro, which may avoid this error.
+%
 %           Also, custom macros which appear inside a section,
 %           \trouble[macros in section, table, figure names]{sectioning>macro in name}
 %           \trouble{table>macro in name}
@@ -11544,6 +11829,14 @@
 %           to declare what to use for the \TeX\ text, v.s. the \PDF\ bookmark.
 %           See the \pkg{hyperref} manual.
 %
+%       \item[``\texttt{Command \cs{textquoteright} invalid in math mode}'':] This
+%           \trouble[quote character]{Command \cs{textquoteright} invalid in math mode}
+%           \trouble{math>Command \cs{textquoteright} invalid in math mode}
+%           \trouble{textquoteright=\cs{textquoteright} invalid in math mode}
+%           can occur when the document source has math containing
+%           the slanted quote |’| character, instead of using
+%           the upright quote |'| character.
+%
 %       \item[Complicated objects inside math:] Some objects, such as \tikz,
 %           \trouble[``impure'' math objects]{math>non-math contents}
 %           may not compile in \pkg{lwarp}'s normal math emulation.
@@ -12181,7 +12474,9 @@
 {%
     Package #1 is not supported\MessageBreak
     by lwarp's HTML conversion.\MessageBreak
-    Package(s) #2 may be useful instead%
+    Package(s)\MessageBreak
+    \space\space#2\MessageBreak
+    may be useful instead%
 }
 {%
     Package #1 might conflict with lwarp in some way,\MessageBreak
@@ -12267,6 +12562,7 @@
 % \changes{v0.80}{2020/02/15}{Prevented \pkg{formula}, \pkg{shadethm}, \pkg{slashbox}.}
 % \changes{v0.81}{2020/02/15}{Prevented \pkg{statex}.}
 % \changes{v0.87}{2020/05/14}{Prevented \pkg{csvtools}.}
+% \changes{v0.88}{2020/07/07}{Added \pkg{shadethm}.}
 %
 %  ^^A *earlyloadnever *loadnever
 %    \begin{macrocode}
@@ -12298,7 +12594,6 @@
 \LWR at earlyloadnever{picinpar}{floatflt, wrapfig}
 \LWR at earlyloadnever{picins}{floatflt, wrapfig}
 \LWR at earlyloadnever{rplain}{fancyhdr}
-\LWR at earlyloadnever{shadethm}{mdframed}
 \LWR at earlyloadnever{si}{siunitx}
 \LWR at earlyloadnever{sistyle}{siunitx}
 \LWR at earlyloadnever{slashbox}{diagbox}
@@ -12420,6 +12715,7 @@
 \LWR at notmemoirloadafter{chngpage}
 \LWR at loadafter{cite}
 \LWR at loadafter{citeref}
+\LWR at loadafter{cleveref}
 \LWR at loadafter{cmdtrack}
 \LWR at loadafter{colonequals}
 \LWR at loadafter{color}
@@ -12476,6 +12772,7 @@
 \LWR at loadafter{fancyref}
 \LWR at loadafter{fancytabs}
 \LWR at loadafter{fancyvrb}
+\LWR at loadafter{fbox}
 \LWR at loadafter{fewerfloatpages}
 \LWR at loadafter{figcaps}
 \LWR at loadafter{figsize}
@@ -12520,6 +12817,7 @@
 \LWR at loadafter{gentombow}
 % geometry is always loaded by lwarp, and lwarp-geometry is AtBeginDocument
 \LWR at loadafter{ghsystem}
+\LWR at loadafter{gindex}
 \LWR at loadafter{glossaries}
 \LWR at loadafter{gmeometric}
 % \LWR at loadafter{graphics}% pre-loaded by xunicode
@@ -12756,8 +13054,10 @@
 \LWR at loadafter{tablefootnote}
 \LWR at notmemoirloadafter{tabularx}
 \LWR at loadafter{tabulary}
+\LWR at loadafter{tagpdf}
 \LWR at loadafter{tascmac}
-\LWR at loadafter{tagpdf}
+\LWR at loadafter{tcolorbox}
+\LWR at loadafter{termcal}
 \LWR at loadafter{textarea}
 % \LWR at loadafter{textcomp}% maybe before lwarp with font packages
 \LWR at loadafter{textfit}
@@ -12764,6 +13064,9 @@
 \LWR at loadafter{textpos}
 \LWR at loadafter{theorem}
 \LWR at loadafter{thinsp}
+\LWR at loadafter{thm-listof}
+\LWR at loadafter{thm-restate}
+\LWR at loadafter{thmbox}
 \LWR at loadafter{threadcol}
 \LWR at loadafter{threeparttable}
 \LWR at loadafter{threeparttablex}
@@ -12804,7 +13107,7 @@
 \LWR at loadafter{upref}
 \LWR at loadafter{url}
 \LWR at loadafter{uspace}
-\LWR at loadafter{varioref}% no lwarp package provided
+\LWR at loadafter{varioref}
 \LWR at notmemoirloadafter{verse}
 \LWR at loadafter{versonotes}
 \LWR at loadafter{vertbars}
@@ -13171,7 +13474,28 @@
 % \end{macro}
 %
 %
+% \subsection{Inside boxes}
 %
+% Greater than zero if currently inside a \TeX\ box,
+% thus should not use \cs{LWR at orignewpage}.
+% See \cref{sec:troubletexboxes}.
+% \changes{v0.88}{2020/06/06}{Added \ctr{LWR at texboxdepth}.}
+%    \begin{macrocode}
+\newcounter{LWR at texboxdepth}
+\setcounter{LWR at texboxdepth}{0}
+%    \end{macrocode}
+%
+% \begin{macro}{\LWR at maybe@orignewpage}
+% Only do \cs{LWR at orignewpage} if not inside a \TeX\ box.
+% \changes{v0.88}{2020/06/06}{Added.}
+%    \begin{macrocode}
+\newcommand*{\LWR at maybe@orignewpage}{%
+    \ifnumgreater{\value{LWR at texboxdepth}}{0}{}{\LWR at orignewpage}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+%
 % \subsection{Global boxes}
 %
 % \begin{macro}{\LWR at gsavebox} \marg{macroname} \marg{contents}
@@ -13240,7 +13564,42 @@
 % \end{macro}
 %
 %
+% \subsection{LetLtxMacrocs}
 %
+% \begin{macro}{\LWR at LetLtxMacrocs} \marg{newcsname} \marg{oldcsname}
+%
+% \cs{LetLtxMacro} with cs names.
+%
+% \changes{v0.88}{2020/07/05}{Added.}
+%    \begin{macrocode}
+\newcommand*{\LWR at LetLtxMacrocs}[2]{%
+    \expandafter\LetLtxMacro\csname #1\expandafter\endcsname%
+    \csname#2\endcsname%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Absorbing a star}
+%
+% \begin{macro}{\LWR at absorbstar} \marg{csname}
+%
+% Modifies a macro to aborb a star.
+% Used for \pkg{cleveref}, since \pkg{hyperref} is emulated, so the
+% starred macros are not created by \pkg{cleveref}.
+%
+% \changes{v0.88}{2020/07/05}{Added.}
+%    \begin{macrocode}
+\newcommand*{\LWR at absorbstar}[1]{%
+    \LWR at LetLtxMacrocs{LWR at origns@#1}{#1}%
+    \csdef{#1}{\@ifstar{\csuse{LWR at origns@#1}}{\csuse{LWR at origns@#1}}}
+    \expandafter\robustify\csname #1\endcsname
+}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+%
 % \section{Operating-System portability}
 % \label{sec:OSportability}
 % \changes{v0.11}{2016/03/11}{Added section: Operating-System portability.}
@@ -13459,9 +13818,9 @@
 %
 %    \begin{macrocode}
 \DeclareVoidOption{warpprint}{%
-\PackageInfo{lwarp}{Using option 'warpprint'}
-\booltrue{warpingprint}%
-\boolfalse{warpingHTML}%
+    \PackageInfo{lwarp}{Using option 'warpprint'}
+    \booltrue{warpingprint}%
+    \boolfalse{warpingHTML}%
 }
 %    \end{macrocode}
 
@@ -13475,9 +13834,9 @@
 %
 %    \begin{macrocode}
 \DeclareVoidOption{warpHTML}{%
-\PackageInfo{lwarp}{Using option 'warpHTML'}%
-\booltrue{warpingHTML}%
-\boolfalse{warpingprint}%
+    \PackageInfo{lwarp}{Using option 'warpHTML'}%
+    \booltrue{warpingHTML}%
+    \boolfalse{warpingprint}%
 }
 %    \end{macrocode}
 %
@@ -13495,9 +13854,9 @@
 % and may be used for \cs{ifbool} tests.
 %    \begin{macrocode}
 \DeclareVoidOption{mathsvg}{%
-\PackageInfo{lwarp}{Using option 'mathsvg'}
-\boolfalse{mathjax}%
-\boolfalse{LWR at origmathjax}%
+    \PackageInfo{lwarp}{Using option 'mathsvg'}
+    \boolfalse{mathjax}%
+    \boolfalse{LWR at origmathjax}%
 %    \end{macrocode}
 % ^^A %    \begin{macrocode}
 % ^^A \boolfalse{mathKaTeX}%
@@ -13513,9 +13872,9 @@
 % If the \optn{mathjax} option is given, boolean |mathjax| is true, may be used for \cs{ifbool} tests.
 %    \begin{macrocode}
 \DeclareVoidOption{mathjax}{%
-\PackageInfo{lwarp}{Using option 'mathjax'}
-\booltrue{mathjax}%
-\booltrue{LWR at origmathjax}%
+    \PackageInfo{lwarp}{Using option 'mathjax'}
+    \booltrue{mathjax}%
+    \booltrue{LWR at origmathjax}%
 %    \end{macrocode}
 % ^^A %    \begin{macrocode}
 % ^^A \boolfalse{mathKaTeX}%
@@ -13580,8 +13939,8 @@
 
 % \DescribeOption{makeindexStyle} Selects a custom |.ist| file.
 % \DescribeDefault{lwarp.ist}
-% A customized file should be based on |lwarp.ist|, and must retain
-% the lines related to \cs{hyperindexref}.
+% A customized file should be based on |lwarp.ist|.
+% See \cref{sec:modifymakeindex}.
 %
 % \changes{v0.58}{2018/06/21}{Added option \optn{makeindexStyle.}}
 %
@@ -13592,11 +13951,8 @@
 
 % \DescribeOption{xindyStyle} Selects a custom |.xdy| file.
 % \DescribeDefault{lwarp.xdy}
-% A customized file should be based on |lwarp.xdy|, and must retain
-% the line
-% \begin{Verbatim}[gobble=2]
-% (markup-locref :open "\hyperindexref{" :close "}")
-% \end{Verbatim}
+% A customized file should be based on |lwarp.xdy|.
+% See \cref{sec:modifyxindy}.
 %
 % \changes{v0.30}{2017/04/28}{Option \optn{xdyFilename} added.}
 % \changes{v0.54}{2018/04/06}{Option \optn{xdyFilename} changed to \optn{xindyStyle.}}
@@ -13606,7 +13962,7 @@
 %    \end{macrocode}
 
 
-% \DescribeOption{xindyLanguage} Sets the \pkg{xindy} language to be assigned
+% \DescribeOption{xindyLanguage} Sets the \prog{xindy} language to be assigned
 % \DescribeDefault{english}
 %	in \prog{lwarpmk}'s configuration files.  This is then used by \prog{lwarpmk} while
 %	processing the index and glossary.
@@ -13620,7 +13976,7 @@
 %    \end{macrocode}
 
 
-% \DescribeOption{xindyCodepage} Sets the \pkg{xindy} codepage to be assigned
+% \DescribeOption{xindyCodepage} Sets the \prog{xindy} codepage to be assigned
 % \DescribeDefault{utf8}
 %   in \prog{lwarpmk}'s configuration files.  This is then used by \prog{lwarpmk} while
 %   processing the index.
@@ -13634,6 +13990,18 @@
 
 
 
+% \DescribeOption{xindexConfig} Selects a custom |xindex-*.lua| file.
+% \DescribeDefault{<empty>}
+% A customized file should be based on |xindex-cfg.lua|.
+% See \cref{sec:modifyxindex}.
+
+% \changes{v0.88}{2020/07/08}{Option \optn{xindexConfig} added.}
+%    \begin{macrocode}
+\DeclareStringOption[]{xindexConfig}
+%    \end{macrocode}
+
+
+
 % \limitspdftotextenc
 %
 % \changes{v0.54}{2018/04/06}{Add: \optn{pdftotextEnc}.}
@@ -13655,8 +14023,8 @@
 \boolfalse{LWR at creatinglwarpmk}
 
 \DeclareVoidOption{lwarpmk}{
-\PackageInfo{lwarp}{Using option 'lwarpmk'}
-\booltrue{LWR at creatinglwarpmk}
+    \PackageInfo{lwarp}{Using option 'lwarpmk'}
+    \booltrue{LWR at creatinglwarpmk}
 }
 %    \end{macrocode}
 
@@ -13672,8 +14040,8 @@
 %
 %    \begin{macrocode}
 \DeclareVoidOption{OSWindows}{
-\PackageInfo{lwarp}{Using option 'OSWindows'}
-\LWR at setOSWindows
+    \PackageInfo{lwarp}{Using option 'OSWindows'}
+    \LWR at setOSWindows
 }
 %    \end{macrocode}
 
@@ -13745,7 +14113,7 @@
 %    \end{macrocode}
 
 % \DescribeOption{makeindex} Tells \pkg{lwarp} to
-%   use \pkg{makeindex} for index generation.
+%   use \prog{makeindex} for index generation.
 %   When \filenm{lwarpmk.conf} and \filenm{*.lwarpmkconf} are generated,
 %   \optn{PrintIndexCmd} and \optn{HTMLIndexCmd} will be set for \prog{makeindex}
 %   with a single index file.
@@ -13756,7 +14124,7 @@
 
 
 % \DescribeOption{xindy} Tells \pkg{lwarp} to
-%   use \pkg{xindy} for index generation.
+%   use \prog{xindy} for index generation.
 %   When \filenm{lwarpmk.conf} and \filenm{*.lwarpmkconf} are generated,
 %   \optn{PrintIndexCmd} and \optn{HTMLIndexCmd} will be set for \prog{xindy}
 %   with a single index file.
@@ -13766,6 +14134,28 @@
 %    \end{macrocode}
 
 
+% \DescribeOption{xindex} Tells \pkg{lwarp} to
+%   use \prog{xindex} for index generation.
+%   When \filenm{lwarpmk.conf} and \filenm{*.lwarpmkconf} are generated,
+%   \optn{PrintIndexCmd} and \optn{HTMLIndexCmd} will be set for \prog{xindex}
+%   with a single index file.
+% \changes{v0.88}{2020/07/08}{Added \optn{xindex} option.}
+%    \begin{macrocode}
+\DeclareBoolOption[false]{xindex}
+%    \end{macrocode}
+
+
+% \DescribeOption{IndexRef}
+%   \DescribeDefault{cref}
+%   Tells \pkg{lwarp} how to
+%   display the index entries in \HTML output.
+%   See \cref{sec:optionindexref}.
+% \changes{v0.88}{2020/07/18}{Added \optn{IndexRef} option.}
+%    \begin{macrocode}
+\DeclareStringOption[cref]{IndexRef}
+%    \end{macrocode}
+
+
 % \DescribeOption{GlossaryCmd} \DescribeDefault{makeglossaries}
 % The shell command to use to compile the glossary.
 % The print or \HTML\ version of the glossary filename will be appended to this command.
@@ -13891,7 +14281,8 @@
 % \cs{LWR at PrintIndexCmd} and \cs{LWR at HTMLIndexCmd} are tested to see if they are empty.
 % If so, they are set to a reasonable defaults for a single index using \prog{makeindex},
 % then possibly set to defaults for \prog{xindy}
-% if the \pkg{lwarp} \optn{xindy} option was selected.
+% if the \pkg{lwarp} \optn{xindy} option was selected,
+% then likewise for \prog{xindex} if the \optn{xindex} option was selected.
 %
 %    \begin{macrocode}
 \ifdefempty{\LWR at PrintIndexCmd}{
@@ -13907,6 +14298,20 @@
             \jobname.idx%
         }
     }{}
+    \ifbool{LWR at xindex}{
+        \ifdefvoid{\LWR at xindexConfig}{
+            \renewcommand{\LWR at PrintIndexCmd}{%
+                xindex
+                \jobname.idx%
+            }
+        }{
+            \renewcommand{\LWR at PrintIndexCmd}{%
+                xindex
+                -c \LWR at xindexConfig \space
+                \jobname.idx%
+            }
+        }
+    }{}
 }{}
 
 \ifdefempty{\LWR at HTMLIndexCmd}{
@@ -13922,6 +14327,20 @@
             \jobname_html.idx%
         }
     }{}
+    \ifbool{LWR at xindex}{
+        \ifdefvoid{\LWR at xindexConfig}{
+            \renewcommand{\LWR at HTMLIndexCmd}{%
+                xindex
+                \jobname_html.idx%
+            }
+        }{
+            \renewcommand{\LWR at HTMLIndexCmd}{%
+                xindex
+                -c \LWR at xindexConfig \space
+                \jobname_html.idx%
+            }
+        }
+    }{}
 }{}
 
 \ifdefempty{\LWR at LatexmkIndexCmd}{
@@ -13936,11 +14355,22 @@
             -C \LWR at xindyCodepage%
         }
     }{}
+    \ifbool{LWR at xindex}{
+        \ifdefvoid{\LWR at xindexConfig}{
+            \renewcommand{\LWR at LatexmkIndexCmd}{%
+                xindex
+            }
+        }{
+            \renewcommand{\LWR at LatexmkIndexCmd}{%
+                xindex
+                -c \LWR at xindexConfig
+            }
+        }
+    }{}
 }{}
 %    \end{macrocode}
 %
 %
-%
 % \subsection{Conditional compilation}
 %
 % \begin{macro}{\warpprintonly} \marg{contents}
@@ -14753,6 +15183,7 @@
 % \changes{v0.80}{2020/02/15}{Prevented \pkg{formula}, \pkg{shadethm}, \pkg{slashbox}.}
 % \changes{v0.81}{2020/02/28}{Prevented \pkg{statex}.}
 % \changes{v0.87}{2020/05/14}{Prevented \pkg{csvtools}.}
+% \changes{v0.88}{2020/07/07}{Added \pkg{shadethm}.}
 %
 % The following should never be loaded:
 %
@@ -14781,7 +15212,6 @@
 \LWR at checkloadnever{#1}{picinpar}{floatflt, wrapfig}
 \LWR at checkloadnever{#1}{picins}{floatflt, wrapfig}
 \LWR at checkloadnever{#1}{rplain}{fancyhdr}
-\LWR at checkloadnever{#1}{shadethm}{mdframed}
 \LWR at checkloadnever{#1}{si}{siunitx}
 \LWR at checkloadnever{#1}{sistyle}{siunitx}
 \LWR at checkloadnever{#1}{slashbox}{diagbox}
@@ -15147,7 +15577,7 @@
 \immediate\openout\LWR at quickfile #1_html_inc.tex% lwarp
 \immediate\write\LWR at quickfile{\string\input{#1.tex}}% lwarp
 \immediate\closeout\LWR at quickfile% lwarp
-\LWR at orignewpage% changed from clearpage
+\LWR at maybe@orignewpage% changed from clearpage
 \if at filesw
     \immediate\write\@mainaux{\string\@input{#1_html_inc.aux}}% changed
 \fi
@@ -15165,7 +15595,7 @@
         \immediate\write\@partaux{\relax}%
     \fi
     \@input@{#1_html_inc.tex}% changed
-    \LWR at orignewpage% changed from clearpage
+    \LWR at maybe@orignewpage% changed from clearpage
     \@writeckpt{#1}%
     \if at filesw
         \immediate\closeout\@partaux
@@ -15834,6 +16264,12 @@
 \let\LWR at origbigskip\bigskip
 
 \let\LWR at origtextellipsis\textellipsis
+%    \end{macrocode}
+% \changes{v0.88}{2020/07/03}{Added \cs{vdots}.}
+%    \begin{macrocode}
+\let\LWR at origvdots\vdots
+%    \end{macrocode}
+%    \begin{macrocode}
 \let\LWR at orig@textquotedbl\textquotedbl
 
 \LetLtxMacro\LWR at origttfamily\ttfamily
@@ -15859,7 +16295,6 @@
 
 \let\LWR at orignewline\newline
 
-
 \AtBeginDocument{% in case packages change definition
 \let\LWR at orig@trivlist\@trivlist
 \let\LWR at origtrivlist\trivlist
@@ -16164,7 +16599,7 @@
 \newcommand*{\LWR at latexmkcmd}[1]{%
     latexmk  \space \LWR at shellescapecmd \space  #1 \space
     -recorder \space
-    \LWR at latexmkvar{makeindex}{\LWR at LatexmkIndexCmd}
+    \LWR at latexmkvar{makeindex}{\LWR at LatexmkIndexCmd}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -16466,7 +16901,6 @@
 % \changes{v0.58}{2018/06/20}{\filenm{lwarpmk.conf}: Generated \cs{AtBeginDocument}.}
 % \changes{v0.58}{2018/06/20}{\filenm{lwarpmk.conf}: Added options \optn{makeindex} and \optn{xindy}.}
 % \changes{v0.58}{2018/06/21}{\filenm{lwarpmk.conf}: Added option \optn{makeindexstyle}.}
-%
 % \codeconfig
 %    \begin{macrocode}
 \begin{LWRwriteconf}
@@ -16492,7 +16926,6 @@
 % \changes{v0.58}{2018/06/20}{\filenm{*.lwarpmkconf}: Generated \cs{AtBeginDocument}.}
 % \changes{v0.58}{2018/06/20}{\filenm{*.lwarpmkconf}: Added options \optn{makeindex} and \optn{xindy}.}
 % \changes{v0.58}{2018/06/21}{\filenm{*.lwarpmkconf}: Added option \optn{makeindexstyle}.}
-%
 % The \optn{makeindex} and \optn{xindy} options have already been handled
 %   for \filenm{lwarp.conf}.
 %
@@ -16554,6 +16987,8 @@
 % \changes{v0.84}{2020/04/13}{\filenm{lwarp.css}: Improved \pkg{nfssext-cfr}.}
 % \changes{v0.84}{2020/04/18}{\filenm{lwarp.css}: Fix: Minipage tex align.}
 % \changes{v0.84}{2020/04/24}{\filenm{lwarp.css}: Fix: Top nav if narrow window.}
+% \changes{v0.88}{2020/07/04}{\filenm{lwarp.css}: Added \pkg{tcolorbox}, \pkg{thmbox}.}
+% \changes{v0.88}{2020/07/14}{\filenm{lwarp.css}: Added \optn{indexheading} for \pkg{gindex}.}
 %
 % ^^A *lwarp.css
 %
@@ -16621,6 +17056,7 @@
 span.indexitem {margin-left: 0em}
 span.indexsubitem {margin-left: 2em}
 span.indexsubsubitem {margin-left: 4em}
+div.indexheading {margin-top: 2ex ; font-weight: bold}
 
 div.hidden, span.hidden { display: none ; }
 
@@ -16725,7 +17161,9 @@
     text-decoration-skip: auto ;
 }
 
+div.hrule { border-top: 1px solid silver }
 
+
 /* for vertical text: */
 div.verticalrl { writing-mode: vertical-rl }
 div.horizontaltb { writing-mode: horizontal-tb }
@@ -17056,7 +17494,7 @@
 }
 
 section.textbody div.footnotes{
-    margin: 3ex 2em 0ex 2em ;
+    margin: 3ex 2em .5ex 2em ;
     border-bottom: 2px solid silver ;
 }
 
@@ -17311,22 +17749,35 @@
 }
 
 
-.mdframed {
+/* mdframed, tcolorbox packages */
+.mdframed, .tcolorbox {
     padding: 0ex ;
     margin: 2ex 0em 2ex 0em ;
+    border: 1px solid black ;
 }
 
-.mdframed p { padding: 0ex .5em 0ex .5em ; }
+.tcolorbox {
+    border-radius: 10pt ;
+    margin: 2ex 1em 2ex 1em ;
+}
 
-.mdframed dl { padding: 1ex .5em 0ex .5em ; }
+.mdframed p, .tcolorbox p { padding: 0ex .5em 0ex .5em ; }
 
-.mdframedtitle {
+.mdframed dl, .tcolorbox dl { padding: 1ex .5em 0ex .5em ; }
+
+.mdframedtitle, .tcolorboxtitle {
     padding: .5ex 0pt 0pt 0pt ;
     border-radius: 10pt 10pt 0pt 0pt ;
     display: block ;
     margin-bottom: 1ex ;
+    border-bottom: 1px solid silver ;
 }
 
+.tcolorboxsubtitle .tcolorbox {
+    margin: 2ex 0em 2ex 0em ;
+    border-radius: 0pt ;
+}
+
 .mdframedsubtitle {
     display: block ;
 }
@@ -17982,10 +18433,16 @@
 
 /* Native LaTeX theorems: */
 
-.theoremcontents { font-style: italic; margin-top: 3ex ; margin-bottom: 3ex ; }
-.theoremlabel { font-style: normal; font-weight: bold ; margin-right: .5em ; }
+.theoremcontents {
+    font-style: italic; margin-top: 3ex ; margin-bottom: 3ex ;
+}
 
+.theoremlabel {
+    font-style: normal; font-weight: bold ; margin-right: .5em ;
+}
 
+
+
 /* theorem, amsthm, and ntheorem packages */
 
 span.theoremheader, 
@@ -18057,6 +18514,35 @@
 span.amsthmnoteremark {}
 
 
+/* thmbox */
+
+.thmbox {
+    font-style: italic; margin-top: 3ex ; margin-bottom: 3ex ;
+    border: 1px solid gray ;
+    padding: 1ex ;
+}
+
+.thmboxtitle {
+    font-style: normal; font-weight: bold ; margin-right: .5em ;
+    border-bottom: 1px solid gray ;
+}
+
+span.thmboxproofname, span.thmboxexamplename {
+    font-weight: bold ;
+}
+
+div.thmboxproof, div.thmboxexample {
+    font-size: 0.85em ;
+    margin: 2ex ;
+}
+
+div.thmboxleftbar {
+    border-left: 2px solid black ;
+    padding-left: 1em ;
+}
+
+
+
 /* For the backnaur package: */
 div.backnaur {
     display: block ;
@@ -18861,6 +19347,9 @@
 %    \end{macrocode}
 
 
+
+
+
 % \subsection{\filenm{lwarp_one_limage.cmd}}
 %
 % \DescribeFile{lwarp_one_limage.cmd}
@@ -19219,7 +19708,7 @@
 -- Copyright 2016-2020 Brian Dunn
 
 
-printversion = "v0.87"
+printversion = "v0.88"
 requiredconfversion = "2" -- also at *lwarpmk.conf
 
 function printhelp ()
@@ -19254,6 +19743,7 @@
     *_html.pdf, *_html.html, *_html.sidetoc
 lwarpmk cleanall [-p project]: Remove auxiliary files, project.pdf, *.html
 lwarpmk cleanlimages: Removes all images from the "lateximages" directory.
+lwarpmk -v: Print the version number.
 lwarpmk -h: Print this help message.
 lwarpmk --help: Print this help message.
 
@@ -20155,6 +20645,12 @@
 printhelp ()
 
 
+-- lwarpmk -v:
+
+elseif (arg[1] == "-v" ) then
+-- The version number has already been printed
+-- by the lwarpmk intro.
+
 -- lwarpmk -h or lwarpmk --help :
 
 elseif (arg[1] == "-h" ) or (arg[1] == "--help") then
@@ -21201,7 +21697,7 @@
 \newcommand{\LWR at forcenewpage}{%
 \LWR at traceinfo{LWR at forcenewpage}%
 \ifinner\else%
-\LWR at stoppars\LWR at orignewpage\LWR at startpars%
+\LWR at stoppars\LWR at maybe@orignewpage\LWR at startpars%
 \fi%
 }
 %    \end{macrocode}
@@ -24066,7 +24562,7 @@
 \LWR at htmltag{/body}\LWR at orignewline
 \LWR at htmltag{/html}\LWR at orignewline
 \LWR at traceinfo{LWR at newhtmlfile: about to LWR at orignewpage}
-\LWR at orignewpage
+\LWR at maybe@orignewpage
 %    \end{macrocode}
 % \changes{v0.84}{2020/04/24}{Added prev/next links.}
 %    \begin{macrocode}
@@ -24569,6 +25065,18 @@
 %
 %
 %
+% \begin{macro}{\LWR at printchaptername}
+% Print \cs{chaptername} in most cases,
+% but this is nullified for \pkg{ctexbook}, \pkg{komascript}, \pkg{ujt*} classes.
+% \changes{v0.88}{2020/06/20}{Conditionally print \cs{chaptername}.}
+%    \begin{macrocode}
+\newcommand*{\LWR at printchaptername}{%
+    \ifdefvoid{\chaptername}{}{\chaptername~}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+%
 % \DescribeCounter{LWR at currentautosec} Records the page number when the section
 %   was created.  (If a math expression is included in the section name,
 %   and SVG math is used, the corresponding \env{lateximage} will cause the
@@ -24671,10 +25179,11 @@
 % Generate a new \LaTeX\ page so that \TOC\ and index page number points to the section:
 %    \begin{macrocode}
     \LWR at traceinfo{LWR at section: not a new HTML file, about to LWR at orignewpage}%
-    \LWR at orignewpage%
+    \LWR at maybe@orignewpage%
 }% not new file
 
 %    \end{macrocode}
+%
 % Remember this section's name for \cs{nameref}:
 %    \begin{macrocode}
 \IfValueT{#3}{%
@@ -24682,6 +25191,7 @@
     \IfValueTF{#2}{\LWR at setlatestname{#2}}{\LWR at setlatestname{#3}}%
 }%
 %    \end{macrocode}
+%
 % Print an opening comment with the level and the name;
 % ex: ``section'' ``Introduction''
 % Footnotes may be used in section names, which would also appear in the
@@ -24705,6 +25215,7 @@
     \endgroup%
 }{}
 %    \end{macrocode}
+%
 % For inline sections paragraph and subparagraph, start a new paragraph now:
 %    \begin{macrocode}
 \ifthenelse{%
@@ -24713,6 +25224,7 @@
     {\LWR at startpars}%
     {}%
 %    \end{macrocode}
+%
 % Create the opening tag with an autosec:
 %    \begin{macrocode}
 \LWR at traceinfo{LWR at section: about to LWR at createautosec}%
@@ -24722,6 +25234,7 @@
 %    \begin{macrocode}
 \setcounter{LWR at currentautosec}{\value{page}}%
 %    \end{macrocode}
+%
 % Check if starred:
 %    \begin{macrocode}
 \IfBooleanTF{#1}%
@@ -24728,6 +25241,7 @@
 {%
     \LWR at traceinfo{LWR at section: starred}%
 %    \end{macrocode}
+%
 % Starred, but also forcing a \TOC\ entry, so
 % add unnumbered \TOC\ name or regular name:
 %    \begin{macrocode}
@@ -24740,10 +25254,12 @@
     {}%
 }% starred
 %    \end{macrocode}
+%
 % Not starred, so step counter and add to \TOC:
 %    \begin{macrocode}
 {% not starred
 %    \end{macrocode}
+%
 % Only add a numbered \TOC\ entry if section number is not too deep:
 %    \begin{macrocode}
     \ifthenelse{%
@@ -24751,6 +25267,7 @@
     }%
     {% if secnumdepth
 %    \end{macrocode}
+%
 % If in the main matter, step the counter and add the \TOC\ entry.
 % For |article| class, \pkg{lwarp} assumes that all is mainmatter.
 %    \begin{macrocode}
@@ -24760,6 +25277,7 @@
             \LWR at traceinfo{LWR at section: yes mainmatter}%
             \refstepcounter{#4}%
 %    \end{macrocode}
+%
 % Add main matter numbered \TOC\ entry with the \TOC\ name or the regular name:
 % \changes{v0.64}{2018/12/07}{Support for \pkg{ujarticle and related.}}
 %    \begin{macrocode}
@@ -24779,6 +25297,7 @@
             \LWR at traceinfo{LWR at section: finished addcontentsline}%
         }% end of if main matter
 %    \end{macrocode}
+%
 % If not main matter, add unnumbered \TOC\ name or regular name:
 %    \begin{macrocode}
         {% not main matter
@@ -24789,6 +25308,7 @@
         }% end of not main matter
     }% end of secnumdepth
 %    \end{macrocode}
+%
 % Deeper than secnumdepth, so add an unnumbered \TOC\ entry:
 %    \begin{macrocode}
     {%
@@ -24797,6 +25317,7 @@
         }%
     }%
 %    \end{macrocode}
+%
 % For part, print ``Part'':
 %    \begin{macrocode}
     \ifbool{LWR at mainmatter}%
@@ -24809,6 +25330,7 @@
             {\@partnameformat}%
             {}%
 %    \end{macrocode}
+%
 % Print the section number:
 %    \begin{macrocode}
         \LWR at traceinfo{LWR at section: about to print section number}%
@@ -24820,7 +25342,13 @@
                 {\protect\LWR at sectionnumber{\@partcntformat{#4}}}%
                 {%
                     \ifstrequal{#4}{chapter}%
-                        {\protect\LWR at sectionnumber{\@chapcntformat{#4}}}%
+                        {%
+%    \end{macrocode}
+% \changes{v0.88}{2020/06/20}{Conditionally print \cs{chaptername}.}
+%    \begin{macrocode}
+                            \LWR at printchaptername%
+                            \protect\LWR at sectionnumber{\@chapcntformat{#4}}%
+                        }%
                         {\protect\LWR at sectionnumber{\@seccntformat{#4}}}%
                 }%
             }%
@@ -25699,7 +26227,7 @@
 %    \end{macrocode}
 % Seems to be required sometimes:
 %    \begin{macrocode}
-\LWR at orignewpage
+\LWR at maybe@orignewpage
 }
 %    \end{macrocode}
 % \end{macro}
@@ -26687,6 +27215,7 @@
 %    \end{macrocode}
 
 
+
 % \begin{macro}{\LWR at atbeginverbatim}
 %       \oarg{1: style}
 %       \marg{2: negative \cs{baselineskip} \cs{vspace}}
@@ -31920,6 +32449,16 @@
 %   Create an internal document reference link,
 %   or without a link if starred per \pkg{hyperref}.
 %
+% \pkg{hyperref} defines a starred version.
+% Since \pkg{hyperref} is only emulated, the starred version is
+% defined here for print mode, in case \cs{ref} is used inside
+% \SVG\ math:
+% \changes{v0.88}{2020/07/05}{Fixed: Starred.}
+%    \begin{macrocode}
+\LWR at absorbstar{ref}%
+%    \end{macrocode}
+%
+% The \HTML\ version:
 % \changes{v0.58}{2018/06/07}{Improved print/\HTML\ output selection.}
 %    \begin{macrocode}
 \NewDocumentCommand{\LWR at HTML@ref}{s m}{%
@@ -31931,22 +32470,18 @@
 
 \LWR at formatted{ref}
 %    \end{macrocode}
+%
+% For \brand{MathJax}:
+% \changes{v0.88}{2020/07/05}{Added \brand{MathJax}.}
+%    \begin{macrocode}
+\CustomizeMathJax{\let\LWRref\ref}
+\CustomizeMathJax{\renewcommand{\ref}{\ifstar\LWRref\LWRref}}
+%    \end{macrocode}
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\LWR at ref@ignorestar} * \marg{label} \quad
-%   For use inside \cs{hyperref}.  Ignores the star, then uses the original \cs{ref}.
 %
-% \changes{v0.57}{2018/06/05}{\pkg{subcaption}: Fix: \cs{subref}.}
-%    \begin{macrocode}
-\NewDocumentCommand{\LWR at ref@ignorestar}{s m}{%
-    \LWR at print@ref{#2}%
-}
-%    \end{macrocode}
-% \end{macro}
-
-
-
+%
 % \label{sec:pagerefpagefor}
 % \begin{macro}{\pagerefPageFor} Text for page references.
 %
@@ -32491,13 +33026,21 @@
 % Adds a new \element{autoid} anchor.
 % \changes{v0.79}{2019/12/09}{Factored.}
 % \changes{v0.84}{2020/04/16}{\element{par} handling.}
+% \changes{v0.88}{2020/07/04}{Inline handling.}
 %    \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%
+    \ifbool{LWR at doingapar}%
+    {%
+        \LWR at htmltag{a id="\LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}" }%
+            \LWR at htmltag{/a }%
+    }%
+    {%
+        \LWR at stoppars%
+        \LWR at htmltag{a id="\LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}" }%
+            \LWR at htmltag{/a }%
+        \LWR at startpars%
+    }%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -33484,7 +34027,18 @@
 %    \end{macrocode}
 
 
+% \begin{macro}{\IndexPageSeparator}
+% \begin{macro}{\IndexRangeSeparator}
+% User-adjustable delimiters for page and range separators in the \filenm{*.ind} files.
+% \changes{v0.88}{2020/07/16}{Added.}
+%    \begin{macrocode}
+\newcommand*{\IndexPageSeparator}{, }
+\newcommand*{\IndexRangeSeparator}{--}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
 
+
 % \begin{environment}{theindex}
 %    \begin{macrocode}
 \@ifundefined{chapter}
@@ -33540,15 +34094,76 @@
 % \end{macro}
 
 
-% \begin{macro}{\@wrindex} \marg{term} \qquad
+% \begin{macro}{\LWR at xindex@modifyentry} \marg{indexing term}
+%
+% If using \prog{xindex}, modifies the pipe character to become \cs{hyperindexformat}.
+% The indexing term is split into two argument at the pipe, then fed to
+% \cs{LWR at xindex@modifyentrysub}.
+%
+% \changes{v0.88}{2020/07/12}{Added support for \prog{xindex}.}
+%    \begin{macrocode}
+\NewDocumentCommand{\LWR at xindex@modifyentry}{>{\SplitArgument{1}{|}}m}
+    {\LWR at xindex@modifyentrysub#1}
+%    \end{macrocode}
+%
+% Handle left and right parenthesis range argument,
+% or add a |hyperindexformat| clause.
+%    \begin{macrocode}
+\newcommand*{\LWR at xindex@modifyentrysub}[2]{%
+    \edef\LWR at tempone{#1}%
+    \edef\LWR at temptwo{#2}%
+    \IfValueTF{#2}{%
+        \ifx#2(%
+            \appto\LWR at tempone{|(}%
+        \else%
+            \ifx#2)%
+                \appto\LWR at tempone{|)}%
+            \else%
+                \appto\LWR at tempone{%
+                    |hyperindexformat\LWRleftbrace%
+                    \LWRbackslash#2%
+                    \LWRrightbrace%
+                }%
+            \fi%
+        \fi%
+    }%
+    {}%
+}
+%    \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\@wrindex} \marg{indexing term} \qquad
 % Redefined to write the |LWR at autoindex| counter instead of |page|.
+%
+% If using \prog{xindex}, the first line is a comment
+% including a special phrase which tricks \prog{xindex} into
+% thinking that \pkg{hyperref} was used.
+%
 % \changes{v0.28}{2017/04/13}{Improved indexing.}
+% \changes{v0.88}{2020/07/12}{Added support for \prog{xindex}.}
 %    \begin{macrocode}
+\newbool{LWR at xindex@tricked}
+\boolfalse{LWR at xindex@tricked}
+
 \def\LWR at wrindex#1{%
+    \ifbool{LWR at xindex}{%
+        \ifbool{LWR at xindex@tricked}{}{%
+            \protected at write\@indexfile{}%
+            {%
+                \LWRpercent\space hyperpage\LWRrightbrace%
+                \LWRpercent\space trick xindex to assume hyperref%
+            }%
+            \global\booltrue{LWR at xindex@tricked}%
+        }%
+        \LWR at xindex@modifyentry{#1}%
+    }{%
+        \def\LWR at tempone{#1}%
+    }%
     \addtocounter{LWR at autoindex}{1}%
-    \LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%
+    \label{LWRindex-\arabic{LWR at autoindex}}%
     \protected at write\@indexfile{}%
-    {\string\indexentry{#1}{\arabic{LWR at autoindex}}}%
+    {\string\indexentry{\LWR at tempone}{\arabic{LWR at autoindex}}}%
     \endgroup%
     \@esphack%
 }
@@ -33575,29 +34190,200 @@
 % \end{macro}
 
 
+% \begin{macro}{\LWR at indexnameref@anonref} \marg{LWR at autoindex}
+%
+% Displays a reference link where there no \cs{ref} available.
+%    \begin{macrocode}
+\newcommand*{\LWR at indexnameref@anonref}[1]{%
+    \LWR at startref{LWRindex-#1}%
+    (*)%
+    \LWR at htmltag{/a}%
+}
+%    \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\LWR at indexnameref@ref} \marg{LWR at autoindex}
+%
+% Creates \cs{ref}-style index references.
+% To avoid an unwanted space if there is nothing to reference,
+% the reference is checked first.
+%    \begin{macrocode}
+\newcommand*{\LWR at indexnameref@ref}[1]{%
+    \edef\LWR at thisref{\csuse{r at LWRindex-#1}}%
+    \ifdefvoid{\LWR at thisref}{}{%
+        \edef\LWR at thisref{\expandafter\@firstoftwo\LWR at thisref}%
+        \ifdefvoid{\LWR at thisref}%
+            {\LWR at indexnameref@anonref{#1}}%
+            {\ref{LWRindex-#1}}%
+    }%
+}
+%    \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\LWR at indexnameref@refnameref} \marg{LWR at autoindex}
+%
+% Creates \cs{ref}-style index references.
+% To avoid an unwanted space if there is nothing to reference,
+% the reference is checked first.
+% For links to starred or |??| objects, only the name is used.
+%    \begin{macrocode}
+\newcommand*{\LWR at indexnameref@refnameref}[1]{%
+    \edef\LWR at thisref{\csuse{r at LWRindex-#1}}%
+    \ifdefvoid{\LWR at thisref}{}{%
+        \edef\LWR at thisref{\expandafter\@firstoftwo\LWR at thisref}%
+        \ifdefvoid{\LWR at thisref}{}{%
+            \ifdefstring{\LWR at thisref}{(*)}%
+                {}%
+                {\ref{LWRindex-#1} }% space
+        }%
+    }%
+    \nameref{LWRindex-#1}%
+}
+%    \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\LWR at indexnameref@cref} \marg{LWR at autoindex}
+%
+% Creates \cs{cref}-style index references.
+% If no numbered reference is available, a \cs{nameref} is used instead.
+% If the reference is |??|, which will be changed by \cs{LWR at indexnameref}
+% to become |(*)|, then the link is changed to show |(*)|.
+%    \begin{macrocode}
+\newcommand*{\LWR at indexnameref@cref}[1]{%
+    \edef\LWR at thisref{\csuse{r at LWRindex-#1}}%
+    \ifdefvoid{\LWR at thisref}{%
+        \nameref{LWRindex-#1}%
+    }{%
+        \edef\LWR at thisref{\expandafter\@firstoftwo\LWR at thisref}%
+        \ifdefvoid{\LWR at thisref}{%
+            \nameref{LWRindex-#1}%
+        }{%
+            \ifdefstring{\LWR at thisref}{(*)}{%
+                \LWR at indexnameref@anonref{#1}%
+            }{%
+                \cref{LWRindex-#1}%
+            }%
+        }%
+    }%
+}
+%    \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\LWR at indexnameref@crefnameref} \marg{LWR at autoindex}
+%
+% Creates \cs{cref}-style index references.
+% If no numbered reference is available, a \cs{nameref} is used instead.
+% If the reference is |??|, which will be changed by \cs{LWR at indexnameref}
+% to become |(*)|, then the link is changed to show only the name.
+%    \begin{macrocode}
+\newcommand*{\LWR at indexnameref@crefnameref}[1]{%
+    \edef\LWR at thisref{\csuse{r at LWRindex-#1}}%
+    \ifdefvoid{\LWR at thisref}%
+        {}%
+        {%
+            \edef\LWR at thisref{\expandafter\@firstoftwo\LWR at thisref}%
+            \ifdefvoid{\LWR at thisref}%
+                {}%
+                {%
+                    \ifdefstring{\LWR at thisref}{(*)}%
+                        {}%
+                        {\cref{LWRindex-#1}} % space
+                }%
+        }%
+    \nameref{LWRindex-#1}%
+}
+%    \end{macrocode}
+% \end{macro}
+
+
 % \begin{macro}{\LWR at indexnameref} \marg{LWR at autoindex}
 %
 % Creates a hyperlink based on the given entry's autoindex.
+% \changes{v0.88}{2020/07/19}{Added \optn{IndexRef} option, refactored.}
 %    \begin{macrocode}
-\newcommand*{\LWR at indexnameref}[1]{\nameref{LWRindex-#1}}
+\newcommand*{\LWR at indexnameref}[1]{%
+    {% group
 %    \end{macrocode}
+% Temporarily redefine \pkg{caption}'s \cs{caption at xref} because it was printing |??|
+% in the indexes, and also causing error on expansion:
+%    \begin{macrocode}
+        \ifdef{\caption at xref}{%
+            \renewcommand*{\caption at xref}[2]{(*)}%
+        }{}%
+%    \end{macrocode}
+%    \begin{macrocode}
+        \ifdefstring{\LWR at IndexRef}{ref}{%
+            \LWR at indexnameref@ref{#1}%
+        }{%
+        \ifdefstring{\LWR at IndexRef}{nameref}{%
+            \nameref{LWRindex-#1}%
+        }{%
+        \ifdefstring{\LWR at IndexRef}{refnameref}{%
+            \LWR at indexnameref@refnameref{#1}%
+        }{%
+        \ifdefstring{\LWR at IndexRef}{cref}{%
+            \LWR at indexnameref@cref{#1}%
+        }{%
+        \ifdefstring{\LWR at IndexRef}{crefnameref}{%
+            \LWR at indexnameref@crefnameref{#1}%
+        }{%
+        \ifdefstring{\LWR at IndexRef}{autoref}{%
+            \LWR at indexnameref@cref{#1}%
+        }{% text string
+            \LWR at startref{LWRindex-#1}%
+            \LWR at IndexRef%
+            \LWR at htmltag{/a}%
+        }}}}}}%
+    }% group
+}
+%    \end{macrocode}
 % \end{macro}
 
-% \begin{macro}{\LWR at doindexentry} \marg{LWR at autoindex, or macros.}
+% \begin{macro}{\LWR at doindexentrysubsub} \marg{range start: LWR at autoindex, or macros.} \marg{range end or blank}
 %
 % Creates a hyperlink, or handles \cs{see}, \cs{textbf}, etc.
 %
 % \changes{v0.58}{2018/06/17}{Adds support for \cs{see}, \cs{seealso}, \cs{emph}, \cs{textbf}, etc.}
+% \changes{v0.88}{2020/07/11}{Handles a range, for \prog{xindex}.}
 %    \begin{macrocode}
-\newrobustcmd{\LWR at doindexentry}[1]{%
+\newrobustcmd{\LWR at doindexentrysubsub}[2]{%
     \IfInteger{#1}%
         {\LWR at indexnameref{#1}}%
         {#1}%
+    \IfValueT{#2}{%
+        \IndexRangeSeparator%
+        \IfInteger{#2}%
+            {\LWR at indexnameref{#2}}%
+            {#2}%
+    }%
 }
 %    \end{macrocode}
 % \end{macro}
+%
+% \begin{macro}{\LWR at doindexentrysub}
+%       \marg{range delimiter} \marg{LWR at autoindex or macros, possible a range}
+% \changes{v0.88}{2020/07/15}{Adapts to \pkg{gindex}.}
+%    \begin{macrocode}
+\NewDocumentCommand{\LWR at doindexentrysub}{m >{\SplitArgument{1}{#1}}m}
+    {\LWR at doindexentrysubsub#2}
+%    \end{macrocode}
+% \end{macro}
 
+% \begin{macro}{\LWR at doindexentry} \marg{LWR at autoindex or macros, possible a range}
+% \changes{v0.88}{2020/07/15}{Adapts to \pkg{gindex}.}
+%    \begin{macrocode}
+\newcommand*{\LWR at doindexentry}[1]{%
+    \relax% required
+    \expandafter\LWR at doindexentrysub\expandafter{\IndexRangeSeparator}{#1}%
+}
+%    \end{macrocode}
+% \end{macro}
 
+
+
 % \begin{macro}{\LWR at hyperindexrefnullified}
 % Handles macros commonly seen inside an \cs{index} entry.
 % Each macro is redefined to create and format a link to its entry.
@@ -33632,18 +34418,94 @@
 % \end{macro}
 
 
-% \begin{macro}{\hyperindexref} \marg{LWR at autoindex}
+% \begin{macro}{\hyperindexref} \marg{list of LWR at autoindex, commas, and ranges}
 %
 % |\hyperindexref{LWR at autoindex}| is inserted into |*.ind| by
-% the \pkg{makeindex} style file \filenm{lwarp.ist} or
-% the \pkg{xindy} style file \filenm{lwarp.xdy}.
+% the \prog{makeindex} style file \filenm{lwarp.ist} or
+% the \prog{xindy} style file \filenm{lwarp.xdy}.
+% For \prog{xindex}, \cs{hyperpage} is inserted, which is \cs{let} to \cs{hyperindexref}.
+% For \prog{gindex}, \cs{addindexitem} and related are inserted, which
+% are defined to use \cs{hyperindexref}.
 %
+% The argument is split at commas, and also for ranges,
+% then passed to \cs{LWR at hyperindexrefsub}.
+%
+% \changes{v0.88}{2020/07/14}{Rewritten to parse commas and ranges.}
+%    \begin{macrocode}
+\newcommand*{\hyperindexref}[1]{%
+    \relax% required
+    \expandafter\LWR at hyperindexref@comma\expandafter{\IndexPageSeparator}{#1}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\LWR at hyperindexref@comma} \marg{separator} \marg{list of args}
+%
+% The list is split at commas, and passed to \cs{LWR at hyperindexref@@comma}.
+%    \begin{macrocode}
+\NewDocumentCommand{\LWR at hyperindexref@comma}
+    {m >{\SplitList{#1}} m}
+    {%
+%    \end{macrocode}
+% Used to place the separtor between each entry, but not before the first.
+%    \begin{macrocode}
+        \def\LWR at hyperindexref@thiscomma{}%
+        \def\LWR at hyperindexref@nextcomma{#1}%
+%    \end{macrocode}
+% Each comma-delimited entry is now passed individually to \cs{LWR at hyperindexref@@comma}.
+%    \begin{macrocode}
+        \ProcessList{#2}\LWR at hyperindexref@@comma%
+    }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\LWR at hyperindexref@@comma} \marg{arg, perhaps with a range}
+%
+% A comma separator is placed if not the first item,
+% then the range is parsed.
+%    \begin{macrocode}
+\newcommand*{\LWR at hyperindexref@@comma}[1]{%
+    \LWR at hyperindexref@thiscomma%
+    \renewcommand{\LWR at hyperindexref@thiscomma}{\LWR at hyperindexref@nextcomma}%
+    \expandafter\LWR at hyperindexref@range\expandafter{\IndexRangeSeparator}{#1}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\LWR at hyperindexref@range} \marg{range delimiter} \marg{arg}
+%    \begin{macrocode}
+\NewDocumentCommand{\LWR at hyperindexref@range}
+    {m >{\SplitArgument{1}{#1}} m}
+    {\LWR at hyperindexrefsub#2}
+%    \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\LWR at hyperindexrefsub}
+%   \marg{range start: LWR at autoindex}
+%   \marg{range end, or |-NoValue-|}
+%
+% Handles the start and end of a range, if applicable.
+%    \begin{macrocode}
+\newcommand*{\LWR at hyperindexrefsub}[2]{%
+    \LWR at hyperindexrefsubtwo{#1}%
+    \IfValueT{#2}{%
+        \IndexRangeSeparator%
+        \LWR at hyperindexrefsubtwo{#2}%
+    }%
+}
+%    \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\LWR at hyperindexrefsubtwo} \marg{LWR at autoindex}
+%
 % \changes{v0.20}{2016/12/19}{Print mode provided in case \pkg{hyperref} not used.}
 % \changes{v0.28}{2017/04/13}{Improved indexing.}
 % \changes{v0.58}{2018/06/17}{Adds support for \cs{see}, \cs{seealso}, \cs{emph}, \cs{textbf}, etc.}
 % \changes{v0.66}{2019/02/05}{Fix: Long index entries.}
+% \changes{v0.88}{2020/07/11}{Adds support for a range, for \prog{xindex}.}
 %    \begin{macrocode}
-\newcommand{\hyperindexref}[1]{%
+\newcommand*{\LWR at hyperindexrefsubtwo}[1]{%
 %    \end{macrocode}
 % In long index lines with numerous entries,
 % \prog{makeindex} can insert a newline before the page number,
@@ -33651,7 +34513,7 @@
 % If the first character is a space, remove it first.
 % ^^A Or use the trimspaces package.
 %    \begin{macrocode}
-    \def\LWR at tempone{#1}%
+    \edef\LWR at tempone{#1}%
     \IfBeginWith{\LWR at tempone}{ }{%
         \StrGobbleLeft{\LWR at tempone}{1}[\LWR at tempone]%
     }{}%
@@ -33673,7 +34535,32 @@
 %    \end{macrocode}
 % \end{macro}
 
+
+% \begin{macro}{\hyperpage} Emulate \pkg{hyperref}.
+% \changes{v0.88}{2020/07/12}{Added.}
 %    \begin{macrocode}
+\LetLtxMacro\hyperpage\hyperindexref
+%    \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\nohyperpage} Emulate \pkg{hyperref}.
+% \changes{v0.88}{2020/07/12}{Added.}
+%    \begin{macrocode}
+\def\nohyperpage#1{}
+%    \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\hyperindexformat} Emulate \pkg{hyperref}.
+% \changes{v0.88}{2020/07/12}{Added.}
+%    \begin{macrocode}
+\def\hyperindexformat#1#2{%
+    #1{\hyperpage{#2}}%
+}%
+%    \end{macrocode}
+% \end{macro}
+
+
+%    \begin{macrocode}
 \end{warpHTML}
 %    \end{macrocode}
 
@@ -33779,6 +34666,24 @@
 
 % \section{Restoring original formatting}
 %
+% \codehtml
+%    \begin{macrocode}
+\begin{warpHTML}
+%    \end{macrocode}
+%
+%
+% \begin{macro}{\LWR at restoreMathJaxformatting}
+% A few macros (ref: \pkg{tcolorbox}) must be treated
+% separately while printing the \HTML\
+% comment for a \brand{MathJax} expression.
+% These are set here, to which other functions may be appended.
+% \changes{v0.88}{2020/06/25}{Added.}
+%    \begin{macrocode}
+\newcommand*{\LWR at restoreMathJaxformatting}{}
+%    \end{macrocode}
+% \end{macro}
+%
+%
 % \begin{macro}{\LWR at restoreorigformatting}
 % Used to temporarily restore
 % the print-mode meaning of a number of formatting, graphics, and symbols-related
@@ -33802,12 +34707,7 @@
 % \changes{v0.40}{2017/09/09}{Improved \protect\LaTeX\ logos inside a \env{lateximage}.}
 % \changes{v0.40}{2017/09/09}{Nullified \cs{InlineClass}, etc. inside a \env{lateximage}.}
 
-% \codehtml
 %    \begin{macrocode}
-\begin{warpHTML}
-%    \end{macrocode}
-
-%    \begin{macrocode}
 \newcommand*{\LWR at restoreorigformatting}{%
     \LWR at traceinfo{LWR at restoreorigformatting}%
 %    \end{macrocode}
@@ -33838,6 +34738,12 @@
     \let\thinspace\LWR at origthinspace% disable HTML short unbreakable space
     \let\negthinspace\LWR at orignegthinspace% disable HTML negative short unbreakable space
     \let\textellipsis\LWR at origtextellipsis%
+%    \end{macrocode}
+% \changes{v0.88}{2020/07/03}{Added \cs{vdots}.}
+%    \begin{macrocode}
+    \let\vdots\LWR at origvdots%
+%    \end{macrocode}
+%    \begin{macrocode}
     \let\textless\LWR at origtextless%
     \let\textgreater\LWR at origtextgreater%
 %    \end{macrocode}
@@ -33888,6 +34794,14 @@
     \LWR at restoreoriglists%
 %
     \LWR at FBcancel%
+%    \end{macrocode}
+%
+% To enable \brand{MathJax}-specific nullification, used for \pkg{tcolorbox}:
+% \changes{v0.88}{2020/06/25}{Support for \brand{MathJax}.}
+%    \begin{macrocode}
+    \ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
+        {\LWR at restoreMathJaxformatting}%
+        {}%
 }
 %    \end{macrocode}
 % \end{macro}
@@ -36316,7 +37230,7 @@
 % Start the new \PDF\ page:
 %    \begin{macrocode}
     \LWR at traceinfo{lateximage: about to create a new page}%
-    \LWR at orignewpage%
+    \LWR at maybe@orignewpage%
 %    \end{macrocode}
 % If the current page is larger,
 % typeset the image in a ``standard'' width page and font size:
@@ -36389,6 +37303,9 @@
 }% end of \begin{lateximage}
 %    \end{macrocode}
 %
+%
+%
+%
 % When the environment closes:
 % \margintag{\cs{endlateximage}}
 %
@@ -36418,7 +37335,7 @@
 %    \begin{macrocode}
 \LWR at traceinfo{lateximage: ending outer-most lateximage}%
     \endLWR at print@minipage%
-    \LWR at orignewpage%
+    \LWR at maybe@orignewpage%
 %    \end{macrocode}
 % Close the \HTML\ comment which encapsulated any traces of the lateximage picked up by \prog{pdftotext}:
 %    \begin{macrocode}
@@ -37081,16 +37998,9 @@
 
 
 
-
 % \section{\pkg{cleveref}}
-% \label{sec:cleveref}
-
-% \DescribePackage{cleveref}
-% \pkg{cleveref} package is used as-is with minor patches.
 %
-% \limitscpageref
-%
-% \pkg{cleveref} and the following associated macro patches are
+% \pkg{cleveref} and \pkg{lwarp-cleveref} with its associated macro patches are
 % \margintag{loading order}
 % automatically preloaded at the end of the preamble via \cs{AtEndPreamble}
 % and \cs{AfterEndPreamble}.
@@ -37101,182 +38011,26 @@
 % \cs{crefname}, then \pkg{cleveref} may be loaded in the user's preamble near the
 % end, and \pkg{lwarp}'s additional loading of \pkg{cleveref} will have no effect.
 %
-% \Cref{tab:crossrefdata} on page \pageref{tab:crossrefdata}
-% shows the data structure of the label/reference system
-% as revised by \pkg{lwarp} and \pkg{cleveref}.
-
-
-% A few patches allow \pkg{cleveref} to work as-is:
-
-% \codehtml
-%    \begin{macrocode}
-\begin{warpHTML}
-%    \end{macrocode}
+% \cs{AtEndPreable} forces \pkg{cleveref} to be loaded last,
+% if it has not yet been loaded by the user.
 %
-% \cs{AtEndPreable} forces \pkg{cleveref} to be loaded last:
-%
 % \changes{v0.19}{2016/06/06}{cleveref: Loaded \cs{AtEndPreamble}.}
 % \changes{v0.33}{2017/06/18}{cleveref: Fix: Loaded \cs{AtEndPreamble}.}
 %
+% \codehtml
 %    \begin{macrocode}
+\begin{warpHTML}
+
 \AtEndPreamble{
     \RequirePackage{cleveref}
 }
-%    \end{macrocode}
-%
-%
-% \changes{v0.20}{2017/01/05}{\pkg{cleveref} and referencing patches:
-%   Applied \cs{AfterEndPreamble}.}
-%
-% \begin{flushleft}
-% The following patches are applied after \pkg{cleveref} has loaded,
-% and after \cs{AtBeginDocument}.  Print-mode versions are not required
-% since they all come down to \cs{ref} eventually, and \cs{ref} has a print-mode
-% version.
-% \end{flushleft}
-%    \begin{macrocode}
-\AfterEndPreamble{
-\LWR at traceinfo{Patching cleveref.}
-%    \end{macrocode}
 
-% \begin{macro}{\@@@setcref} \marg{kindofref} \marg{label}
-%
-% \cs{@templabel} becomes the section number.
-%
-% \changes{v0.48}{2018/02/10}{Fix for new v0.21 of \pkg{cleveref}.}
-%    \begin{macrocode}
-\def\LWR at orig@@@setcref#1#2{\cref at getlabel{#2}{\@templabel}#1{\@templabel}{}{}}%
-
-\ifdefequal{\@@setcref}{\LWR at orig@@@setcref}{% before v0.21
-    \renewcommand*{\@@setcref}[2]{#1{\ref{#2}}{}{}}
-}{
-    \ifdefequal{\@@@setcref}{\LWR at orig@@@setcref}{% as of v0.21
-        \renewcommand*{\@@@setcref}[2]{%
-            #1{\ref{#2}}{}{}}
-    }{
-        \PackageWarning{lwarp-cleveref}{
-            Unknown version of cleveref.
-            \protect\cref\space will fail.
-        }%
-    }
-}
+\end{warpHTML}
 %    \end{macrocode}
-% \end{macro}
-
-%\begin{macro}{\@@@setcrefrange} \marg{text} \marg{label} \marg{label}
-% \changes{v0.48}{2018/02/10}{Fix for new v0.21 of \pkg{cleveref}.}
-%    \begin{macrocode}
-\def\LWR at orig@@@setcrefrange#1#2#3{%
-  \cref at getlabel{#2}{\@labela}%
-  \cref at getlabel{#3}{\@labelb}%
-  #1{\@labela}{\@labelb}{}{}{}{}}%
-
-\ifdefequal{\@@setcrefrange}{\LWR at orig@@@setcrefrange}{
-    \renewcommand{\@@setcrefrange}[3]{%
-        #1{\ref{#2}}{\ref{#3}}{}{}{}{}%
-    }
-}{
-    \ifdefequal{\@@@setcrefrange}{\LWR at orig@@@setcrefrange}{
-        \renewcommand{\@@@setcrefrange}[3]{%
-            #1{\ref{#2}}{\ref{#3}}{}{}{}{}%
-        }
-    }{
-        \PackageWarning{lwarp-cleveref}{
-            Unknown version of cleveref.
-            \protect\crefrange\space will fail.
-        }
-    }
-}
-%    \end{macrocode}
-% \end{macro}
-
-% ^^A  orig:
-% ^^A  \def\@@setcpageref#1#2{%
-% ^^A    \cref at getpageref{#2}{\@temppage}#1{\@temppage}{}{}}
-
-
-% \label{sec:cpagereffor}
-% \begin{macro}{\cpagerefFor} Redefinable word between ``page(s)'' and the page numbers.
 %
-% \changes{v0.20}{2017/01/03}{User-redefinable word for page references.}
 %
-%    \begin{macrocode}
-\newcommand*{\cpagerefFor}{for}
-%    \end{macrocode}
-% \end{macro}
-
-% \begin{macro}{\@@@setcpageref} \marg{typeofref} \marg{label},
-% where typeofref is ``page'' or ``pages''
+% \section{Preexisting label and reference definitions}
 %
-% \changes{v0.48}{2018/02/10}{Fix for new v0.21 of \pkg{cleveref}.}
-%    \begin{macrocode}
-\def\LWR at orig@@setcpageref#1#2{% before v0.21
-  \cref at getpageref{#2}{\@temppage}#1{\@temppage}{}{}}%
-
-\def\LWR at orig@@@setcpageref#1#2{% as of v0.21
-  \cpageref at getlabel{#2}{\@temppage}#1{\@temppage}{}{}}%
-
-\ifdefequal{\@@setcpageref}{\LWR at orig@@setcpageref}{
-    \renewcommand*{\@@setcpageref}[2]{%
-        #1{\cpagerefFor\ \cref{#2}}{}{}%
-    }
-}{
-    \ifdefequal{\@@@setcpageref}{\LWR at orig@@@setcpageref}{
-        \renewcommand*{\@@@setcpageref}[2]{%
-            #1{\cpagerefFor\ \cref{#2}}{}{}%
-        }
-    }
-    {
-        \PackageWarning{lwarp-cleveref}{
-            Unknown version of cleveref.
-            \protect\cpageref\space will fail.
-        }
-    }
-}
-%    \end{macrocode}
-% \end{macro}
-
-
-% ^^A  orig:
-% ^^A  \def\@@setcpagerefrange#1#2#3{%
-% ^^A    \cref at getpageref{#2}{\@pagea}%
-% ^^A    \cref at getpageref{#3}{\@pageb}%
-% ^^A    #1{\@pagea}{\@pageb}{}{}{}{}}
-
-%    \begin{macrocode}
-\def\LWR at orig@@setcpagerefrange#1#2#3{% before v0.21
-  \cref at getpageref{#2}{\@pagea}%
-  \cref at getpageref{#3}{\@pageb}%
-  #1{\@pagea}{\@pageb}{}{}{}{}}%
-
-\def\LWR at orig@@@setcpagerefrange#1#2#3{% as of v0.21
-  \cpageref at getlabel{#2}{\@pagea}%
-  \cpageref at getlabel{#3}{\@pageb}%
-  #1{\@pagea}{\@pageb}{}{}{}{}}%
-
-\ifdefequal{\@@setcpagerefrange}{\LWR at orig@@setcpagerefrange}{
-    \renewcommand*{\@@setcpagerefrange}[3]{%
-        #1{\cpagerefFor\ \cref{#2}}{\cref{#3}}{}{}{}{}%
-    }
-}{
-    \ifdefequal{\@@@setcpagerefrange}{\LWR at orig@@@setcpagerefrange}{
-        \renewcommand*{\@@@setcpagerefrange}[3]{%
-            #1{\cpagerefFor\ \cref{#2}}{\cref{#3}}{}{}{}{}%
-        }
-    }
-    {
-        \PackageWarning{lwarp-cleveref}{
-            Unknown version of cleveref.
-            \protect\cpagerefrange\space will fail.
-        }
-    }
-}
-
-}% AfterEndPreamble
-%    \end{macrocode}
-
-
-%
 % Remember and patch some label-related defintions.
 % These will be further encased and patched by other packages later.
 %
@@ -37283,12 +38037,16 @@
 % \cs{label} and \cs{pageref} do NOT change their behavior according to
 % print or \HTML\ output, and thus do not use the \cs{LWR at formatted} system.
 %
+% \codehtml
 %    \begin{macrocode}
+\begin{warpHTML}
+
 \LetLtxMacro\LWR at orig@label\label% includes memoir, before cleveref
 \LetLtxMacro\label\LWR at new@label
 
 \LetLtxMacro\LWR at orig@pageref\pageref
 \LetLtxMacro\pageref\LWR at new@pageref
+
 \end{warpHTML}
 %    \end{macrocode}
 
@@ -37381,7 +38139,7 @@
 %    \begin{macrocode}
 \NewDocumentEnvironment{LWR at setvirtualpage}{s O{1}}{%
     \ifnumequal{\value{LWR at virtualpagedepth}}{0}{%
-        \IfBooleanT{#1}{\LWR at orignewpage}%
+        \IfBooleanT{#1}{\LWR at maybe@orignewpage}%
         \setlength{\linewidth}{6in/#2}%
         \setlength{\textwidth}{6in}%
         \setlength{\textheight}{9in}%
@@ -38847,6 +39605,7 @@
 % \changes{v0.45}{2017/12/29}{Improved: Robust \cs{,}, \cs{~}, and \cs{textellipsis} commands.}
 % \changes{v0.56}{2018/05/09}{Added \cs{thinspace}.}
 % \changes{v0.61}{2018/09/23}{Spaces redefined \cs{AtBeginDocument}.}
+% \changes{v0.88}{2020/07/03}{Added \cs{vdots}.}
 %    \begin{macrocode}
 \AtBeginDocument{
 \renewrobustcmd*{\,}{\HTMLunicode{202f}}	% HTML thin non-breakable space
@@ -38854,6 +39613,7 @@
 \renewrobustcmd*{\negthinspace}{\HTMLunicode{202f}}    % HTML thin non-breakable space
 \renewrobustcmd*{~}{\HTMLentity{nbsp}}
 \renewrobustcmd*{\textellipsis}{\HTMLunicode{2026}}
+\renewrobustcmd*{\vdots}{\HTMLunicode{22EE}}
 }
 %    \end{macrocode}
 %
@@ -38919,8 +39679,26 @@
 % \begin{macro}{\hrulefill}
 % \changes{v0.20}{2017/01/19}{Inserts a short rule.}
 % \changes{v0.58}{2018/06/07}{Improved print/\HTML\ output selection.}
+% \changes{v0.88}{2020/06/28}{Full line \element{div} if not started paragraph.}
 %    \begin{macrocode}
-\newcommand*{\LWR at HTML@hrulefill}{\rule{1in}{1pt}}
+\newcommand*{\LWR at HTML@hrulefill}{%
+    \ifbool{LWR at doingapar}%
+        {\rule{1in}{1pt}}%
+        {%
+            \LWR at findcurrenttextcolor%
+            \ifdefstring{\LWR at tempcolor}{000000}%
+            {%
+                \begin{BlockClass}{hrule}%
+                \end{BlockClass}%
+            }%
+            {%
+                \begin{BlockClass}[%
+                    border-top: 1px solid \LWR at origpound\LWR at tempcolor % space
+                ]{hrule}%
+                \end{BlockClass}%
+            }%
+        }%
+}%
 \LWR at formatted{hrulefill}
 %    \end{macrocode}
 % \end{macro}
@@ -39382,6 +40160,33 @@
 %    \end{macrocode}
 % \end{macro}
 %
+%
+% ^^A This doesn't work because \hrule is used in many places at a low level.
+% ^^A % \begin{macro}{\hrule}
+% ^^A % Generates a <div>, then uses the original to consume any arguments.
+% ^^A % The print-mode rule is not seen by \prog{pdftotext}.
+% ^^A %
+% ^^A % \changes{v0.88}{2020/06/22}{Added.}
+% ^^A %    \begin{macrocode}
+% ^^A \renewcommand*{\hrule}{%
+% ^^A     \ifbool{LWR at doingstartpars}%
+% ^^A     {%
+% ^^A         \begin{BlockClass}[border-top:1px solid silver]{hrule}%
+% ^^A         \end{BlockClass}%
+% ^^A     }{}%
+% ^^A     \LWR at orig@hrule%
+% ^^A }
+% ^^A %    \end{macrocode}
+% ^^A %
+% ^^A % Not needed, since print-mode \env{BlockClass} does nothing:
+% ^^A % \begin{sourceverb}
+% ^^A % \appto\LWR at restoreorigformatting{
+% ^^A %     \let\hrule\LWR at orig@hrule%
+% ^^A % }
+% ^^A % \end{sourceverb}
+% ^^A % \end{macro}
+%
+%
 %    \begin{macrocode}
 \end{warpHTML}
 %    \end{macrocode}
@@ -39790,6 +40595,7 @@
             \quad%
         }
     }
+    \renewcommand*{\LWR at printchaptername}{}
 %    \end{macrocode}
 % Use decimal points instead of centered dots:
 %    \begin{macrocode}
@@ -39875,6 +40681,8 @@
             \LWR at isolate{\CTEX at chaptername}~%
             \CTEX at chapter@aftername%
         }%
+
+        \renewcommand*{\LWR at printchaptername}{}
     }{}
 }
 %    \end{macrocode}
@@ -41322,6 +42130,15 @@
 \LWR at ProvidesPackagePass{amsmath}[2017/09/02]
 %    \end{macrocode}
 %
+% \begin{noindmacro}{\dotso} An \HTML\ text-mode version.
+% \changes{v0.88}{2020/07/03}{\pkg{amsmath}: Added \cs{dotso} text mode.}
+%    \begin{macrocode}
+\newcommand*{\LWR at HTML@dotso}{\textellipsis\ }
+\LWR at formatted{dotso}
+%    \end{macrocode}
+% \end{noindmacro}
+%
+%
 % Patches to allow \cs{eqref} inside a caption:
 %
 % \changes{v0.49}{2018/02/18}{\pkg{amsmath}: Fix: Patches for \cs{eqref}.}
@@ -41646,10 +42463,19 @@
 {}
 %    \end{macrocode}
 %
+%
+% Necessary for \cs{text}, used by \cs{openbox}, etc., below:
+% \changes{v0.88}{2020/07/01}{\pkg{amsthm}: Requires \pkg{amsmath}.}
 %    \begin{macrocode}
+\RequirePackage{amsmath}
+%    \end{macrocode}
+%
+%
+%    \begin{macrocode}
 \LWR at ProvidesPackagePass{amsthm}[2017/10/31]
 %    \end{macrocode}
-
+%
+%
 % Storage for the style being used for new theorems:
 %    \begin{macrocode}
 \newcommand{\LWR at newtheoremstyle}{plain}
@@ -44830,6 +45656,22 @@
 }
 %    \end{macrocode}
 
+
+% Updates for late patches for \pkg{scrextend}:
+% \changes{v0.88}{2020/07/15}{\pkg{caption}, \pkg{scrextend}: Fixed \cs{caption*}.}
+%    \begin{macrocode}
+\caption at AtBeginDocument{
+\@ifpackageloaded{lwarp-scrextend}{
+    \LetLtxMacro\captionbelow\caption
+    \LetLtxMacro\captionabove\caption
+    \LetLtxMacro\captionofbelow\captionof
+    \LetLtxMacro\captionofabove\captionof
+}{}
+}
+%    \end{macrocode}
+
+
+
 % \iffalse
 %</caption>
 % \fi
@@ -47148,6 +47990,258 @@
 %
 %
 % \iffalse
+%<*cleveref>
+% \fi
+%
+% \part{lwarp-cleveref.sty}
+%
+% \section{cleveref}
+% \label{sec:cleveref}
+%
+% \credits{Toby Cubitt}
+%
+% \DescribePackage{cleveref}
+% \pkg{cleveref} is patched for \HTML, and
+% limited \brand{MathJax} emulation is added.
+%
+% \limitscpageref
+%
+% \Cref{tab:crossrefdata} on page \pageref{tab:crossrefdata}
+% shows the data structure of the label/reference system
+% as revised by \pkg{lwarp} and \pkg{cleveref}.
+%
+% For \brand{MathJax},
+% each references is printed as an \cs{eqref}, without \pkg{cleveref}'s
+% description text.  Page references are also printed as simple \cs{eqref}s.
+% Multiple labels in a single \cs{cref} will print as \texttt{(???)} in \brand{MathJax}.
+% \watchout[multiple labels]
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{cleveref}[2018/03/27]
+%    \end{macrocode}
+%
+%
+% \changes{v0.20}{2017/01/05}{\pkg{cleveref} and referencing patches:
+%   Applied \cs{AfterEndPreamble}.}
+%
+% The following patches are applied.
+% Print-mode versions are not required since they all come down to \cs{ref} eventually,
+% and \cs{ref} has a print-mode version.
+%
+% \begin{macro}{\@@@setcref} \marg{kindofref} \marg{label}
+%
+% \cs{@templabel} becomes the section number.
+%
+% \changes{v0.48}{2018/02/10}{Fix for new v0.21 of \pkg{cleveref}.}
+%    \begin{macrocode}
+\def\LWR at orig@@@setcref#1#2{\cref at getlabel{#2}{\@templabel}#1{\@templabel}{}{}}%
+
+\ifdefequal{\@@setcref}{\LWR at orig@@@setcref}{% before v0.21
+    \renewcommand*{\@@setcref}[2]{#1{\ref{#2}}{}{}}
+}{
+    \ifdefequal{\@@@setcref}{\LWR at orig@@@setcref}{% as of v0.21
+        \renewcommand*{\@@@setcref}[2]{%
+            #1{\ref{#2}}{}{}}
+    }{
+        \PackageWarningNoLine{lwarp-cleveref}{
+            Unknown version of cleveref.
+            \protect\cref\space will fail.
+        }%
+    }
+}
+%    \end{macrocode}
+% \end{macro}
+
+%\begin{macro}{\@@@setcrefrange} \marg{text} \marg{label} \marg{label}
+% \changes{v0.48}{2018/02/10}{Fix for new v0.21 of \pkg{cleveref}.}
+%    \begin{macrocode}
+\def\LWR at orig@@@setcrefrange#1#2#3{%
+  \cref at getlabel{#2}{\@labela}%
+  \cref at getlabel{#3}{\@labelb}%
+  #1{\@labela}{\@labelb}{}{}{}{}}%
+
+\ifdefequal{\@@setcrefrange}{\LWR at orig@@@setcrefrange}{
+    \renewcommand{\@@setcrefrange}[3]{%
+        #1{\ref{#2}}{\ref{#3}}{}{}{}{}%
+    }
+}{
+    \ifdefequal{\@@@setcrefrange}{\LWR at orig@@@setcrefrange}{
+        \renewcommand{\@@@setcrefrange}[3]{%
+            #1{\ref{#2}}{\ref{#3}}{}{}{}{}%
+        }
+    }{
+        \PackageWarningNoLine{lwarp-cleveref}{
+            Unknown version of cleveref.
+            \protect\crefrange\space will fail.
+        }
+    }
+}
+%    \end{macrocode}
+% \end{macro}
+
+% ^^A  orig:
+% ^^A  \def\@@setcpageref#1#2{%
+% ^^A    \cref at getpageref{#2}{\@temppage}#1{\@temppage}{}{}}
+
+
+% \label{sec:cpagereffor}
+% \begin{macro}{\cpagerefFor} Redefinable word between ``page(s)'' and the page numbers.
+%
+% \changes{v0.20}{2017/01/03}{User-redefinable word for page references.}
+%
+%    \begin{macrocode}
+\newcommand*{\cpagerefFor}{for}
+%    \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\@@@setcpageref} \marg{typeofref} \marg{label},
+% where typeofref is ``page'' or ``pages''
+%
+% \changes{v0.48}{2018/02/10}{Fix for new v0.21 of \pkg{cleveref}.}
+%    \begin{macrocode}
+\def\LWR at orig@@setcpageref#1#2{% before v0.21
+  \cref at getpageref{#2}{\@temppage}#1{\@temppage}{}{}}%
+
+\def\LWR at orig@@@setcpageref#1#2{% as of v0.21
+  \cpageref at getlabel{#2}{\@temppage}#1{\@temppage}{}{}}%
+
+\ifdefequal{\@@setcpageref}{\LWR at orig@@setcpageref}{
+    \renewcommand*{\@@setcpageref}[2]{%
+        #1{\cpagerefFor\ \cref{#2}}{}{}%
+    }
+}{
+    \ifdefequal{\@@@setcpageref}{\LWR at orig@@@setcpageref}{
+        \renewcommand*{\@@@setcpageref}[2]{%
+            #1{\cpagerefFor\ \cref{#2}}{}{}%
+        }
+    }
+    {
+        \PackageWarningNoLine{lwarp-cleveref}{
+            Unknown version of cleveref.
+            \protect\cpageref\space will fail.
+        }
+    }
+}
+%    \end{macrocode}
+% \end{macro}
+
+
+% ^^A  orig:
+% ^^A  \def\@@setcpagerefrange#1#2#3{%
+% ^^A    \cref at getpageref{#2}{\@pagea}%
+% ^^A    \cref at getpageref{#3}{\@pageb}%
+% ^^A    #1{\@pagea}{\@pageb}{}{}{}{}}
+
+%    \begin{macrocode}
+\def\LWR at orig@@setcpagerefrange#1#2#3{% before v0.21
+  \cref at getpageref{#2}{\@pagea}%
+  \cref at getpageref{#3}{\@pageb}%
+  #1{\@pagea}{\@pageb}{}{}{}{}}%
+
+\def\LWR at orig@@@setcpagerefrange#1#2#3{% as of v0.21
+  \cpageref at getlabel{#2}{\@pagea}%
+  \cpageref at getlabel{#3}{\@pageb}%
+  #1{\@pagea}{\@pageb}{}{}{}{}}%
+
+\ifdefequal{\@@setcpagerefrange}{\LWR at orig@@setcpagerefrange}{
+    \renewcommand*{\@@setcpagerefrange}[3]{%
+        #1{\cpagerefFor\ \cref{#2}}{\cref{#3}}{}{}{}{}%
+    }
+}{
+    \ifdefequal{\@@@setcpagerefrange}{\LWR at orig@@@setcpagerefrange}{
+        \renewcommand*{\@@@setcpagerefrange}[3]{%
+            #1{\cpagerefFor\ \cref{#2}}{\cref{#3}}{}{}{}{}%
+        }
+    }
+    {
+        \PackageWarningNoLine{lwarp-cleveref}{
+            Unknown version of cleveref.
+            \protect\cpagerefrange\space will fail.
+        }
+    }
+}
+%    \end{macrocode}
+%
+% If \pkg{hyperref} is loaded, \pkg{cleveref} defines starred versions of the following,
+% but since \pkg{hyperref} is only emulated, starred versions are defined here:
+% \changes{v0.88}{2020/07/05}{\pkg{cleveref}, \pkg{varioref}: Fix for starred macros.}
+%    \begin{macrocode}
+\LWR at absorbstar{cref}
+\LWR at absorbstar{Cref}
+\LWR at absorbstar{crefrange}
+\LWR at absorbstar{Crefrange}
+\LWR at absorbstar{cpageref}
+\LWR at absorbstar{Cpageref}
+\LWR at absorbstar{cpagerefrange}
+\LWR at absorbstar{Cpagerefrange}
+\LWR at absorbstar{labelcref}
+\LWR at absorbstar{labelcpageref}
+%    \end{macrocode}
+%
+% ^^A *varioref
+% If \pkg{hyperref} is loaded, \pkg{cleveref} also defines starred versions
+% of \pkg{varioref} macros, so they are defined here.
+%    \begin{macrocode}
+\@ifpackageloaded{varioref}{
+    \LWR at absorbstar{vref}
+    \LWR at absorbstar{Vref}
+    \LWR at absorbstar{vrefrange}
+    \LWR at absorbstar{Vrefrange}
+    \LWR at absorbstar{fullref}
+    \LWR at absorbstar{Fullref}
+}{}% varioref
+%    \end{macrocode}
+%
+%
+% ^^A % For \brand{MathJax} and \pkg{cleveref},
+% ^^A % but not \pkg{varioref} since \pkg{varioref} macros would only
+% ^^A % be useful in math inside a \cs{text} macro, where they do not
+% ^^A % work in \brand{MathJax}.
+% ^^A %
+% ^^A % \changes{v0.88}{2020/07/05}{\pkg{cleveref}: Added \brand{MathJax} emulation.}
+% ^^A %    \begin{macrocode}
+% ^^A \CustomizeMathJax{\newcommand{\cref}{\ifstar\eqref\eqref}}
+% ^^A \CustomizeMathJax{\let\Cref\cref}
+% ^^A \CustomizeMathJax{\newcommand{\LWRcrefrange}[2]{%
+% ^^A     \eqref{#1}--\eqref{#2}%
+% ^^A }}
+% ^^A \CustomizeMathJax{\newcommand{\crefrange}{%
+% ^^A     \ifstar\LWRcrefrange\LWRcrefrange%
+% ^^A }}
+% ^^A \CustomizeMathJax{\let\Crefrange\crefrange}
+% ^^A \CustomizeMathJax{\let\cpageref\cref}
+% ^^A \CustomizeMathJax{\let\Cpageref\cref}
+% ^^A \CustomizeMathJax{\let\cpagerefrange\crefrange}
+% ^^A \CustomizeMathJax{\let\Cpagerefrange\crefrange}
+% ^^A \CustomizeMathJax{\let\labelcref\cref}
+% ^^A \CustomizeMathJax{\let\labelcpageref\cpageref}
+% ^^A %    \end{macrocode}
+% ^^A %
+% ^^A % For \pkg{varioref}, which is modified by \pkg{cleveref},
+% ^^A % so must be patched here:
+% ^^A %    \begin{macrocode}
+% ^^A \CustomizeMathJax{\let\vref\cref}
+% ^^A \CustomizeMathJax{\let\Vref\cref}
+% ^^A \CustomizeMathJax{\let\vpageref\cref}
+% ^^A \CustomizeMathJax{\let\Vpageref\cref}
+% ^^A \CustomizeMathJax{\let\vrefrange\crefrange}
+% ^^A \CustomizeMathJax{\let\Vrefrange\crefrange}
+% ^^A \CustomizeMathJax{\let\vpagerefrange\crefrange}
+% ^^A \CustomizeMathJax{\let\Vpagerefrange\crefrange}
+% ^^A \CustomizeMathJax{\let\fullref\cref}
+% ^^A \CustomizeMathJax{\let\Fullref\cref}
+% ^^A %    \end{macrocode}
+%
+% \iffalse
+%</cleveref>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*clrdblpg>
 % \fi
 %
@@ -49883,7 +50977,7 @@
 
 % Finish the current page's errata before closing and reloading the list:
 %    \begin{macrocode}
-\preto\PrintErrata{\LWR at orignewpage}
+\preto\PrintErrata{\LWR at maybe@orignewpage}
 %    \end{macrocode}
 
 % No longer defining math macros with the \HTML\ |$|:
@@ -50649,11 +51743,14 @@
 %
 % \section{fancyref}
 %
+% \credits{Axel Reichert}
+%
 % \DescribePackage{fancyref}
-% \pkg{fancyref} is emulated.
+% \pkg{fancyref} is modifed for \HTML\ output.
 %
 % \changes{v0.44}{2017/11/22}{\pkg{fancyref}: Added.}
 % \changes{v0.48}{2018/02/04}{\pkg{fancyref}: Now directly supported.}
+% \changes{v0.88}{2020/07/20}{\pkg{fancyref}: Now uses \pkg{varioref} which ignores page-related output.}
 %
 % \codehtml
 %
@@ -50673,36 +51770,6 @@
     \renewcommand*{\fancyrefhook}[1]{#1}%
 }
 %    \end{macrocode}
-
-% Modified to ignore the page number and \pkg{varioref}.
-%    \begin{macrocode}
-\renewcommand*{\@f at ref}[4]{%
-  \@ifundefined{#1r@#2@#3}{%
-    \PackageError{lwarp-fancyref}{%
-      \backslashchar#1ref\space format ``#2''
-      undefined\MessageBreak
-      for label type ``#3''%
-    }{%
-      The format ``#2'' was not defined for the label type
-      ``#3''\MessageBreak
-      and the \backslashchar#1ref\space command.  Perhaps
-      you have only misspelled its name.\MessageBreak
-      Otherwise you will have to define it with
-      \protect\new#1refformat\MessageBreak
-      prior to using it.%
-    }%
-  }{%
-    \fancyrefhook{%
-      \@nameuse{#1r@#2@#3}%
-        {\ref{#3\fancyrefargdelim#4}}%
-%         {\pageref{#3\fancyrefargdelim#4}}% original
-%         {\@fancyref at page@ref{#3\fancyrefargdelim#4}}% original
-        {}% lwarp
-        {}% lwarp
-    }%
-  }%
-}%
-%    \end{macrocode}
 %
 % \iffalse
 %</fancyref>
@@ -51146,6 +52213,169 @@
 %
 %
 % \iffalse
+%<*fbox>
+% \fi
+%
+% \part{lwarp-fbox.sty}
+%
+% \section{fbox}
+%
+% \credits{Herbert Voß}
+%
+% \DescribePackage{fbox}
+% \pkg{fbox} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.88}{2020/06/30}{\pkg{fbox}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{fbox}[2020/06/22]
+%    \end{macrocode}
+%
+% This will be \cs{LWR at formatted} when  \cs{AtBeginDocument}:
+%    \begin{macrocode}
+\LetLtxMacro\LWR at HTML@fbox\fbox
+%    \end{macrocode}
+%
+% Instead of using the original, the new version is used with all borders:
+%    \begin{macrocode}
+\renewcommand*{\orig at fbox}{\FBox at i[tblr]}
+%    \end{macrocode}
+%
+% \begin{noindmacro}{LWR at fboxpkg@border}
+% \marg{1: top \Slash bottom \Slash left \Slash right} \marg{2: padding, or empty}
+%
+% Accumulates \HTML\ styles for border, and padding if given:
+%    \begin{macrocode}
+\newcommand*{\LWR at fboxpkg@border}[2]{%
+    \appto\LWR at tempone{%
+        border-#1: % space
+        \LWR at printlength{\LWR at atleastonept} % space
+        solid \LWR at origpound\LWR at tempcolor ;\LWR at indentHTML
+    }%
+    \ifblank{#2}{}{%
+        \appto\LWR at tempone{%
+            padding-#1: \LWR at printlength{#2} ;\LWR at indentHTML
+        }%
+    }%
+}
+%    \end{macrocode}
+% \end{noindmacro}
+%
+% A hack to reuse the same code for inline and blocks:
+%    \begin{macrocode}
+\newbool{LWR at fboxpkg@ispar}
+\boolfalse{LWR at fboxpkg@ispar}
+%    \end{macrocode}
+%
+% Acculumate \HTML\ styles for left and right padding,
+% depending on \cs{if at fbox@space at left}, \cs{if at fbox@space at right}:
+%    \begin{macrocode}
+\newcommand{\LWR at fboxpkg@lrpadding}[1]{%
+    \csuse{if at fbox@space@#1}%
+        \appto\LWR at tempone{%
+            padding-#1: \LWR at printlength{\fbox@@sep};\LWR at indentHTML
+        }
+    \else%
+        \appto\LWR at tempone{%
+            padding-#1: 0pt;\LWR at indentHTML
+        }
+    \fi%
+}
+%    \end{macrocode}
+%
+% The \HTML\ version, modified to use \HTML\ styles and either
+% an \cs{InlineClass} or \env{BlockClass}:
+%    \begin{macrocode}
+\newcommand{\LWR at HTML@FBox at iii}[1]{%
+%    \end{macrocode}
+%
+% Find and set the text color, rule width, margin:
+%    \begin{macrocode}
+    \LWR at forceminwidth{\fbox@@rule}%
+    \LWR at findcurrenttextcolor%
+    \def\LWR at tempone{%
+        color: \LWR at origpound\LWR at tempcolor ; \LWR at indentHTML
+        margin: 1ex ; \LWR at indentHTML
+    }%
+%    \end{macrocode}
+%
+% Add left/right padding:
+%    \begin{macrocode}
+    \LWR at fboxpkg@lrpadding{left}%
+    \LWR at fboxpkg@lrpadding{right}%
+%    \end{macrocode}
+%
+% Per the original to decode the borders, in a new way:
+%    \begin{macrocode}
+    \ifnum\the\@tempcntb>8\relax
+        \advance\@tempcntb by -8
+        \LWR at fboxpkg@border{top}{\fbox@@sep}%
+    \fi
+    \ifnum\@tempcntb>3
+        \advance\@tempcntb by -4
+        \LWR at fboxpkg@border{left}{}%
+    \fi
+    \ifnum\@tempcntb>1
+        \LWR at fboxpkg@border{right}{}%
+    \fi
+    \ifodd\@tempcntb
+        \LWR at fboxpkg@border{bottom}{\fbox@@sep}%
+    \fi
+%    \end{macrocode}
+%
+% Generate a \env{BlockClass} or \cs{InlineClass} with the contents:
+%    \begin{macrocode}
+    \color at begingroup
+    \ifbool{LWR at fboxpkg@ispar}%
+        {%
+            \begin{BlockClass}[\LWR at tempone]{fboxpkg}%
+                #1%
+            \end{BlockClass}%
+        }%
+        {%
+            \InlineClass[\LWR at tempone]{fboxpkg}{%
+                #1%
+            }%
+        }%
+    \color at endgroup
+    \boolfalse{LWR at fboxpkg@ispar}% globally
+}
+\LWR at formatted{FBox at iii}
+%    \end{macrocode}
+%
+% For \cs{fparbox}, set the use of \env{BlockClass}, then reuse the above:
+%    \begin{macrocode}
+\long\def\LWR at HTML@FParBox at i[#1]#2{%
+    \booltrue{LWR at fboxpkg@ispar}%
+    \FBox at i[#1]{#2}
+}
+\LWR at formatted{FParBox at i}
+
+\long\def\LWR at HTML@FParBox at ii#1{%
+    \booltrue{LWR at fboxpkg@ispar}%
+    \FBox at i[tblr]{#1}%
+}
+\LWR at formatted{FParBox at ii}
+%    \end{macrocode}
+%
+% For \brand{MathJax}, absorb and ignore star and optional arguments:
+%    \begin{macrocode}
+\CustomizeMathJax{\let\LWRorigfbox\fbox}
+\CustomizeMathJax{\newcommand{\LWRfboxpkgtwo}[2][]{\LWRorigfbox{#2}}}
+\CustomizeMathJax{\renewcommand{\fbox}{\ifstar\LWRfboxpkgtwo\LWRfboxpkgtwo}}
+\CustomizeMathJax{\newcommand{\fparbox}{\fbox}}
+%    \end{macrocode}
+%
+% \iffalse
+%</fbox>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*fewerfloatpages>
 % \fi
 %
@@ -53517,6 +54747,75 @@
 %
 %
 % \iffalse
+%<*gindex>
+% \fi
+%
+% \part{lwarp-gindex.sty}
+%
+% \section{gindex}
+%
+% \credits{Javier Bezos}
+%
+% \DescribePackage{gindex}
+% \pkg{gindex} is patched for use by \pkg{lwarp}.
+%
+% See \cref{sec:indexsetup}.
+%
+% \changes{v0.88}{2020/07/16}{\pkg{gindex}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{gindex}[2019/10/07]
+%    \end{macrocode}
+%
+% Set the index page and range separators.
+% These are set \cs{AtBeginDocument} to allow the user to change them.
+% They are then protected so that the \pkg{lwarp} core looks for the
+% tokens instead of their expanded contents, since the \filenm{*.ind}
+% files will contain \cs{indexpagessep} and \cs{indexrangesep} instead of
+% their literal contents.
+% Finally, \pkg{lwarp} is told of the \pkg{gindex} macros.
+%    \begin{macrocode}
+\AtBeginDocument{
+    \robustify{\indexpagessep}
+    \robustify{\indexrangesep}
+    \renewcommand*{\IndexPageSeparator}{\indexpagessep}
+    \renewcommand*{\IndexRangeSeparator}{\indexrangesep}
+}
+%    \end{macrocode}
+%
+% \cs{hyperindexref} is added:
+%    \begin{macrocode}
+\def\addindexitem#1#2{%
+  \indexflushitem
+  \gix at getspecial#1\indexspecial\indexspecial\@@\indexitem{\hyperindexref{#2}}}
+
+\def\addindexsubitem#1#2{%
+  \stepcounter{indexsubitems}%
+  \gix at getspecial#1\indexspecial\indexspecial\@@\indexsubitem{\hyperindexref{#2}}}
+
+\def\addindexsubsubitem#1#2{%
+  \gix at getspecial#1\indexspecial\indexspecial\@@\indexsubsubitem{\hyperindexref{#2}}}
+%    \end{macrocode}
+%
+% Uses a \element{div} of class \attribute{indexheading}:
+%    \begin{macrocode}
+\renewcommand\indexheading[1]{%
+    \begin{BlockClass}{indexheading}
+    \MakeUppercase{#1}%
+    \end{BlockClass}
+}
+%    \end{macrocode}
+%
+% \iffalse
+%</gindex>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*gloss>
 % \fi
 %
@@ -55170,11 +56469,13 @@
 % \changes{v0.57}{2018/06/05}{\pkg{subcaption}: Fix: \cs{subref}.}
 %
 % Creates an \HTML\ link to |URL#category.name| with the given text.
+%
+% To avoid nested links, \cs{ref} is temporarily redefined to the print version.
 %    \begin{macrocode}
 \newcommand{\LWR at hyperreffinish}[1]{%
     \begingroup%
-    \RenewDocumentCommand{\ref}{}{\LWR at ref@ignorestar}%
-    #1%
+    \RenewDocumentCommand{\ref}{s m}{\LWR at print@ref{##2}}%
+   #1%
     \endgroup%
     \LWR at htmltag{/a}%
 }
@@ -55631,7 +56932,7 @@
 \AtBeginDocument{
     \preto\printindex{
 
-    \LWR at orignewpage
+    \LWR at maybe@orignewpage
     \LWR at startpars
 
     \LWR at indexprenote
@@ -55742,7 +57043,7 @@
 \catcode`\_=12%
 
 \renewcommand*{\printindex}[1][\imki at jobname]{%
-\LWR at orignewpage%
+\LWR at maybe@orignewpage%
 \LWR at startpars%
 \ifstrequal{#1}{\imki at jobname}{%
   \@ifundefined{#1 at idxfile}{%
@@ -55825,7 +57126,7 @@
 %    \begin{macrocode}
 \renewcommand\imki at wrindexentrysplit[3]{%
 \addtocounter{LWR at autoindex}{1}%
-\LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%
+\label{LWRindex-\arabic{LWR at autoindex}}%
   \expandafter\protected at write\csname#1 at idxfile\endcsname{}%
     {\string\indexentry{#2}{\arabic{LWR at autoindex}}}%
 }
@@ -55832,7 +57133,7 @@
 
 \renewcommand\imki at wrindexentryunique[3]{%
 \addtocounter{LWR at autoindex}{1}%
-\LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%
+\label{LWRindex-\arabic{LWR at autoindex}}%
   \protected at write\@indexfile{}%
     {\string\indexentry[#1]{#2}{\arabic{LWR at autoindex}}}%
 }
@@ -55855,7 +57156,7 @@
 %
 % \begin{noindmacro}{\LWR at imki@setxdydefopts}
 %
-% Sets the \pkg{xindy} \HTML\ options, ignoring the user's settings.
+% Sets the \prog{xindy} \HTML\ options, ignoring the user's settings.
 %    \begin{macrocode}
 \newcommand*{\LWR at imki@setxdydefopts}{%
     \edef\imki at options{ \space %
@@ -55870,7 +57171,7 @@
 % \begin{noindmacro}{\LWR at imki@setdefopts} \marg{user options}
 %
 % Sets the \HTML\ options, added to the user's settings,
-% depending on whether \pkg{makeindex} or \pkg{xindy} are used.
+% depending on whether \prog{makeindex} or \prog{xindy} are used.
 %
 % For \prog{makeindex}, the user's choice is ignored, and only the \pkg{lwarp}
 % version is used.  (Only one style at a time is possible.)
@@ -56023,7 +57324,7 @@
     {\begingroup}
     {%
         \addtocounter{LWR at autoindex}{1}%                    lwarp
-        \LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%    lwarp
+        \label{LWRindex-\arabic{LWR at autoindex}}%    lwarp
         \begingroup%
     }
     {}
@@ -57475,7 +58776,7 @@
     \LWR at traceinfo{About to create verbatim.}%
     \let\lsthk at EveryPar\relax%
     \LWR at forcenewpage%
-    \LWR at atbeginverbatim{2}{programlisting}%
+    \LWR at atbeginverbatim{1.5}{programlisting}%
 
     \let\lsthk at EveryPar\LWR at origlsthkEveryPar%
 \else%
@@ -58617,7 +59918,7 @@
 % This allows for correct spacing in the musical score.
 % \changes{v0.74}{2019/08/13}{\pkg{lyluatex}: Adapts to user's geometry.}
 %    \begin{macrocode}
-    \LWR at orignewpage%
+    \LWR at maybe@orignewpage%
     \LWR at origloadgeometry{LWR at usergeometry}%
     \LWR at print@normalsize%
 %    \end{macrocode}
@@ -58674,7 +59975,7 @@
 %    \end{macrocode}
 % Move to a new page and renew the regular page geometry:
 %    \begin{macrocode}
-    \LWR at orignewpage%
+    \LWR at maybe@orignewpage%
     \LWR at origrestoregeometry%
 %    \end{macrocode}
 % End of the local group.
@@ -58770,7 +60071,7 @@
 % \changes{v0.58}{2018/06/13}{Fix: Extra \cs{newpage} to flush pending \cs{index} writes.}
 %    \begin{macrocode}
 \preto\printindex{%
-    \LWR at orignewpage%
+    \LWR at maybe@orignewpage%
     \LWR at startpars%
 }
 %    \end{macrocode}
@@ -65295,20 +66596,27 @@
 % \section{pdfrender}
 %
 % \DescribePackage{pdfrender}
-% \pkg{pdfrender} is ignored.
+% \pkg{pdfrender} is allowed during \HTML, but it has no effect on
+% \HTML\ text output.
+% \pkg{pdfrender} is enabled for use with \pkg{xfakebold}, and
+% it is enabled during \HTML\ so that it may be in use when
+% an \SVG\ math image is started.
+% I.e. \pkg{xfakebold}'s \cs{setBold} may be used outside of a
+% math expression and still be detected when the math begins.
 %
+% The \pkg{lwarp-pdfrender} package is present because it used to
+% disable \pkg{pdfrender}, so this newer version is to overwrite
+% older versions.
+%
 % \changes{v0.49}{2018/02/15}{\pkg{pdfrender}: Added.}
+% \changes{v0.88}{2020/06/29}{\pkg{pdfrender}: Restored for \pkg{xfakebold}.}
 %
 % \codehtml
 %
 %    \begin{macrocode}
-\LWR at ProvidesPackageDrop{pdfrender}[2016/05/17]
+\LWR at ProvidesPackagePass{pdfrender}[2019/12/29]
 %    \end{macrocode}
 %
-%    \begin{macrocode}
-\newcommand*{\pdfrender}[1]{}
-\newcommand{\textpdfrender}[2]{#2}
-%    \end{macrocode}
 %
 % \iffalse
 %</pdfrender>
@@ -68373,7 +69681,51 @@
 %
 %
 %
+%
+%
 % \iffalse
+%<*shadethm>
+% \fi
+%
+% \part{lwarp-shadethm.sty}
+%
+% \section{shadethm}
+%
+% \credits{Jim Hefferon}
+%
+% \DescribePackage{shadethm}
+% \pkg{shadethm} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.88}{2020/07/07}{\pkg{shadethm}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{shadethm}[1999/11/23]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\newenvironment{LWR at HTML@shadebox}
+{%
+    \convertcolorspec{named}{shadethmcolor}{HTML}\LWR at tempcolor%
+    \convertcolorspec{named}{shaderulecolor}{HTML}\LWR at tempcolortwo%
+    \begin{BlockClass}[%
+        background: \LWR at origpound\LWR at tempcolor ;
+        border: 1px solid \LWR at origpound\LWR at tempcolortwo ;
+    ]{shadebox}
+}%
+{\end{BlockClass}}
+\LWR at formattedenv{shadebox}
+%    \end{macrocode}
+%
+% \iffalse
+%</shadethm>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*shadow>
 % \fi
 
@@ -70160,7 +71512,7 @@
     \csname index@#1 at hook\endcsname
 %     \expandafter\ifx\csname @@wrsindex\endcsname\relax
     \addtocounter{LWR at autoindex}{1}%                    lwarp
-    \LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%    lwarp
+    \label{LWRindex-\arabic{LWR at autoindex}}%    lwarp
 %       \@@@wrsindex{#1}{{\@tempa}{\thepage}}%
       \@@@wrsindex{#1}{{\@tempa}{\arabic{LWR at autoindex}}}%
 %     \else
@@ -72130,6 +73482,414 @@
 %
 %
 % \iffalse
+%<*tcolorbox>
+% \fi
+%
+% \part{lwarp-tcolorbox.sty}
+%
+% \section{tcolorbox}
+%
+% \credits{Thomas F. Sturm}
+%
+% \DescribePackage{tcolorbox}
+% \pkg{tcolorbox} is patched for use by \pkg{lwarp}.
+%
+% See \cref{sec:limitstcolorbox} for limitations.
+%
+% \changes{v0.88}{2020/06/25}{\pkg{tcolorbox}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{tcolorbox}[2020/04/28]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\newbool{LWR at havetcblower}
+\boolfalse{LWR at havetcblower}
+%    \end{macrocode}
+%
+% Colors are supported via \HTML\ styles:
+%    \begin{macrocode}
+\newcommand{\LWR at tcolorbox@findcolors}{%
+    \convertcolorspec{named}{tcbcolback}{HTML}\LWR at tcbcolback
+    \convertcolorspec{named}{tcbcolframe}{HTML}\LWR at tcbcolframe
+    \iftcb at titlefilled%
+        \convertcolorspec{named}{tcbcolbacktitle}{HTML}\LWR at tcbcolbacktitle
+    \else
+        \convertcolorspec{named}{tcbcolframe}{HTML}\LWR at tcbcolbacktitle
+    \fi
+    \convertcolorspec{named}{tcbcoltitle}{HTML}\LWR at tcbcoltitle
+    \convertcolorspec{named}{tcbcolupper}{HTML}\LWR at tcbcolupper
+    \convertcolorspec{named}{tcbcollower}{HTML}\LWR at tcbcollower
+}
+
+\newcommand*{\LWR at tcolorbox@titlecolorstyles}{%
+    border-top: 1px solid \LWR at origpound\LWR at tcbcolframe ;
+    border-bottom: 1px solid \LWR at origpound\LWR at tcbcolframe ;
+    background: \LWR at origpound\LWR at tcbcolbacktitle ;
+    color: \LWR at origpound\LWR at tcbcoltitle ;
+}
+%    \end{macrocode}
+%
+% The title is placed inside its own \element{div} of class \optn{tcolorboxtitle}.
+%    \begin{macrocode}
+\newcommand*{\LWR at showtitle@}[1]{%
+    \begin{BlockClass}[
+        \LWR at tcolorbox@titlecolorstyles
+    ]{tcolorboxtitle}
+%                     \cmdKV at LWRtcolorbox@title\par
+    \kvtcb at before@title#1\kvtcb at after@title
+    \end{BlockClass}
+}
+%    \end{macrocode}
+%
+% If no title, a non-breakable space is used to take some vertical space.
+%    \begin{macrocode}
+\newcommand*{\LWR at showtitle}[1]{%
+    \iftcb at titlevisible
+    \LWR at showtitle@{#1}
+    \else
+    \LWR at showtitle@{~}
+    \fi
+}
+
+\newcommand*{\LWR at tcolorbox@dophantom}{%
+%     \sbox\tcb at phantombox{\kvtcb at phantom}%
+%     \iftcb at hasPhantom%
+%         \box\tcb at phantombox%
+%         \tcb at hasPhantomfalse%
+%     \fi%
+    \kvtcb at phantom
+    \let\kvtcb at phantom\@empty%
+}
+%    \end{macrocode}
+%
+% The \env{tcolorbox} is placed inside
+% an external \element{div} of class \optn{\#1}, which
+% is \optn{tcolorbox} or \optn{tcolorbox inlineminipage}.
+% The upper and lower parts are placed into their own internal
+% \element{div}s of class \optn{tcolorboxupper} and \optn{tcolorboxlower}.
+%    \begin{macrocode}
+\newcommand*{\LWR at tcolorboxstart}[1]{
+    \LWR at tcolorbox@findcolors
+    \begin{BlockClass}[
+        border: 1px solid \LWR at origpound\LWR at tcbcolframe ;
+        background: \LWR at origpound\LWR at tcbcolback ;
+    ]{#1}
+    \LWR at tcolorbox@dophantom%
+    \ifdefvoid{\kvtcb at title}
+        {}
+        {
+            \LWR at showtitle{\kvtcb at title}
+        }
+    \begin{BlockClass}[
+        color: \LWR at origpound\LWR at tcbcolupper ;
+    ]{tcolorboxupper}
+}
+%    \end{macrocode}
+%
+% Floats enclose the \env{tcolorbox}.
+%    \begin{macrocode}
+\newcommand*{\LWR at tcolorbox@dostartfloat}{%
+    \ifx\kvtcb at float\@empty%
+%         \tcb at set@normal at unbroken@beforeafter%
+    \else%
+%         \edef\tcb at before@unbroken{%
+%             \noexpand\tcb at float@env at begin{tcbfloat}[\kvtcb at float]%
+%             \noexpand\kvtcb at everyfloat%
+%         }%
+%         \let\tcb at after@unbroken=\tcb at float@env at end%
+        \tcb at float@env at begin{tcbfloat}[\kvtcb at float]
+        \noexpand\kvtcb at everyfloat
+    \fi%
+}
+
+\newcommand*{\LWR at tcolorbox@doendfloat}{%
+    \ifx\kvtcb at float\@empty%
+    \else%
+        \tcb at float@env at end%
+    \fi%
+}
+%    \end{macrocode}
+%
+% Footnotes are handled via the main footnote mechanism, and
+% pending notes are printed before and after each \env{tcolorbox}.
+% Footnote numbering will not match the print output.
+%    \begin{macrocode}
+\renewenvironment{tcolorbox}[1][]
+    {
+        \ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}%
+        {
+            \PackageError{lwarp}
+                {%
+                    Lwarp cannot process a tcolorbox inside a lateximage\MessageBreak
+                    or SVG math.\MessageBreak
+                    Enter 'H' for possible solutions%
+                }
+                {%
+                    Use \protect\tcbox, \protect\tcboxmath, or
+                    \protect\tcbhighmath\space instead.\MessageBreak%
+                    (Inside math, you probably want to use these anyhow.)%
+                }
+        }{}
+        \LWR at printpendingfootnotes
+        \tcb at layer@inc
+        \tcb at apply@box at options{#1}
+        \LWR at tcolorbox@dostartfloat%
+%         \tcbset{title=,#1}
+        \boolfalse{LWR at havetcblower}
+        \LWR at tcolorboxstart{tcolorbox}
+        \tcb at insert@before at upper%
+    }
+    {
+        \ifbool{LWR at havetcblower}{%
+            \tcb at insert@after at lower%
+        }{%
+            \tcb at insert@after at upper%
+        }%
+        \end{BlockClass}
+        \LWR at printpendingfootnotes
+        \tcb at layer@dec
+        \end{BlockClass}
+        \LWR at tcolorbox@doendfloat%
+    }
+%    \end{macrocode}
+%
+% For the lower part, the upper part is finished then the lower is started.
+% \cs{tcblower} is only temporarily defined where appropriate, so the \HTML\ version is
+% defined globally via \cs{newcommand} instead of \cs{renewcommand}.
+%    \begin{macrocode}
+\newcommand{\tcblower}{
+    \tcb at insert@after at upper%
+    \end{BlockClass}
+    \begin{BlockClass}[%
+        border-top: 1px dashed \LWR at origpound\LWR at tcbcolframe ;
+        color: \LWR at origpound\LWR at tcbcollower ;
+    ]{tcolorboxlower}
+    \tcb at insert@before at lower%
+}
+%    \end{macrocode}
+%
+% Starred and unstarred \cs{tcbline} are simple \cs{hrule}s.
+%    \begin{macrocode}
+\AtBeginDocument{
+\ifdef{\tcbline}{
+    \newcommand*{\LWR at sub@tcbline}{%
+        \begin{BlockClass}{hrule}
+        \end{BlockClass}
+    }
+    \newcommand{\LWR at HTML@tcbline}{\@ifstar\LWR at sub@tcbline\LWR at sub@tcbline}
+    \LWR at formatted{tcbline}
+}{}
+}
+
+\newcommand{\LWR at HTML@tcbox}[2][]{
+    \LWR at printpendingfootnotes
+    \LWR at tcolorbox@dostartfloat%
+    \begingroup
+    \tcb at layer@inc
+    \tcb at apply@box at options{#1}
+%     \tcbset{title=,#1}
+    \boolfalse{LWR at havetcblower}
+    \LWR at tcolorboxstart{tcolorbox inlineminipage}
+    \tcb at insert@before at upper%
+    #2
+    \ifbool{LWR at havetcblower}{%
+        \tcb at insert@after at lower%
+    }{%
+        \tcb at insert@after at upper%
+    }%
+    \end{BlockClass}
+    \LWR at printpendingfootnotes
+    \end{BlockClass}
+    \tcb at layer@dec%
+    \endgroup%
+    \LWR at tcolorbox@dostartfloat%
+    \global\booltrue{LWR at minipagethispar}%
+}
+\LWR at formatted{tcbox}
+
+\appto\LWR at restoreMathJaxformatting{%
+    \renewcommand{\tcbox}[2][]{#2}%
+}
+%    \end{macrocode}
+%
+% Patches for the subtitle, which is placed inside a \element{div}
+% of class \optn{tcolorboxsubtitle}.
+%    \begin{macrocode}
+\xpatchcmd{\tcbsubtitle}
+    {\begingroup}
+    {\begingroup\let\kvtcb at title\relax\begin{BlockClass}{tcolorboxsubtitle}}
+    {}
+    {\LWR at patcherror{tcolorbox}{tcbsubtitle}}
+
+\xpatchcmd{\tcbsubtitle}
+    {\endgroup}
+    {\end{BlockClass}\endgroup}
+    {}
+    {\LWR at patcherror{tcolorbox}{tcbsubtitleB}}
+%    \end{macrocode}
+%
+% \cs{tcboxfit} is the same as \cs{tcbox}.
+%    \begin{macrocode}
+\AtBeginDocument{
+    \ifdef{\tcboxfit}{%
+        \let\LWR at HTML@tcboxfit\tcbox%
+        \LWR at formatted{tcboxfit}
+    }{}
+}
+%    \end{macrocode}
+%
+% \cs{tcbtitle} is patched to support the text font.
+%    \begin{macrocode}
+\LetLtxMacro\LWR at HTML@tcbtitle\tcbtitle
+\xpatchcmd{\LWR at HTML@tcbtitle}
+    {\kvtcb at before@title\tcbtitletext}
+    {\kvtcb at before@title\LWR at textcurrentfont{\LWR at textcurrentcolor{\tcbtitletext}}}
+    {}
+    {\LWR at patcherror{tcolorbox}{LWR at HTML@tcbtitle}}
+\LWR at formatted{tcbtitle}
+%    \end{macrocode}
+%
+% List-of:
+%    \begin{macrocode}
+\renewcommand*\l at tcolorbox[2]{\hypertocfloat{1}{tcolorbox}{lof}{#1}{#2}}
+%    \end{macrocode}
+%
+% Theorem limitations.
+% An error is printed if the document uses \optn{math}, \optn{ams equation}, etc.
+% \cs{tcboxmath} and \cs{tcbhighmath} are ignored for \HTML.
+%    \begin{macrocode}
+\AtBeginDocument{
+\pgfkeysifdefined{/tcb/libload/theorems}{
+
+    \def\LWR at HTML@tcb at hack@amsmath{%
+        \PackageError{lwarp}
+            {%
+                tcolorbox ``math'', ``ams equation'', and related\MessageBreak
+                are not supported.\MessageBreak
+                \protect\tcboxmath\space and
+                \protect\tcbhighmath\space are emulated.\MessageBreak
+                Enter 'H' for possible solutions%
+            }
+            {%
+                Remove tcolorbox math-related options, and instead\MessageBreak
+                use the usual math environments inside each tcolorbox.%
+            }
+    }
+    \LWR at formatted{tcb at hack@amsmath}
+
+    % Cause an error if using math:
+    \tcbset{%
+        math upper/.style={before upper*=\tcb at hack@amsmath,after upper*=$},%
+        math lower/.style={before lower*=\tcb at hack@amsmath,after lower*=$},%
+    }
+
+    \appto\LWR at restoreorigformatting{%
+    \tcbset{%
+        math upper/.style={before upper*=$\displaystyle,after upper*=$},%
+        math lower/.style={before lower*=$\displaystyle,after lower*=$},%
+    }%
+    }
+
+    \newcommand{\LWR at HTML@tcboxmath}[2][]{#2}
+    \LWR at formatted{tcboxmath}
+    \newcommand{\LWR at HTML@tcbhighmath}[2][]{#2}
+    \LWR at formatted{tcbhighmath}
+    \appto\LWR at restoreMathJaxformatting{%
+        \renewcommand{\tcboxmath}[2][]{#2}%
+        \renewcommand{\tcbhighmath}[2][]{#2}%
+    }
+}{}% theorems loaded
+}% AtBeginDocument
+%    \end{macrocode}
+%
+% For \brand{MathJax}:
+%    \begin{macrocode}
+\CustomizeMathJax{\newcommand{\tcbset}[1]{}}
+\CustomizeMathJax{\newcommand{\tcbsetforeverylayer}[1]{}}
+\CustomizeMathJax{\newcommand{\tcbox}[2][]{\boxed{\text{#2}}}}
+\CustomizeMathJax{\newcommand{\tcboxfit}[2][]{\boxed{#2}}}
+\CustomizeMathJax{\newcommand{\tcblower}{}}
+\CustomizeMathJax{\newcommand{\tcbline}{}}
+\CustomizeMathJax{\newcommand{\tcbtitle}{}}
+\CustomizeMathJax{\newcommand{\tcbsubtitle[2][]{\mathrm{#2}}}}
+\CustomizeMathJax{\newcommand{\tcboxmath}[2][]{\boxed{#2}}}
+\CustomizeMathJax{\newcommand{\tcbhighmath}[2][]{\boxed{#2}}}
+%    \end{macrocode}
+%
+% \iffalse
+%</tcolorbox>
+% \fi
+%
+%
+%
+%
+% \iffalse
+%<*termcal>
+% \fi
+%
+% \part{lwarp-termcal.sty}
+%
+% \section{termcal}
+%
+% \credits{Bill Mitchell}
+%
+% \DescribePackage{termcal}
+% \pkg{termcal} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.88}{2020/06/19}{\pkg{termcal}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{termcal}% questionable date in the .sty file
+%    \end{macrocode}
+%
+% Nullify the @{} because everything is being done in a token  list.
+%    \begin{macrocode}
+\xpatchcmd{\endcalendar}
+    {@{}}
+    {}
+    {}
+    {\LWR at patcherror{termcal}{endcalendar}}
+%    \end{macrocode}
+%
+% Remove the hbox:
+%    \begin{macrocode}
+\xpatchcmd{\ca at doaday}
+    {\hbox to \hsize{\calprintdate\hfill\ifclassday\calprintclass\fi}}
+    {%
+        \calprintdate\hfill\ifclassday\calprintclass\fi%
+    }
+    {}
+    {\LWR at patcherror{termcal}{ca at doaday}}
+%    \end{macrocode}
+%
+% Change each of two ampersands to call the lwarp tabular version:
+%    \begin{macrocode}
+\xpatchcmd{\calday}
+    {&}
+    {\LWR at tabularampersand}
+    {}
+    {\LWR at patcherror{termcal}{calday}}
+
+\xpatchcmd{\calday}
+    {&}
+    {\LWR at tabularampersand}
+    {}
+    {\LWR at patcherror{termcal}{calday B}}
+%    \end{macrocode}
+%
+% \iffalse
+%</termcal>
+% \fi
+%
+%
+%
+%
+% \iffalse
 %<*textarea>
 % \fi
 %
@@ -72761,7 +74521,163 @@
 %
 %
 %
+%
+%
+% ^^A *thmtools: See thm-listof and thm-restate, following:
+%
 % \iffalse
+%<*thm-listof>
+% \fi
+%
+% \part{lwarp-thm-listof.sty}
+%
+% \section{thm-listof}
+%
+% \credits{Ulrich M. Schwarz}
+%
+% \DescribePackage{thm-listof}
+% \pkg{thm-listof} is part of \pkg{thmtools}, and is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.88}{2020/07/03}{\pkg{thm-listof}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{thm-listof}[2019/12/22]
+%    \end{macrocode}
+%
+% For font control, see the generated \HTML\ and
+% use \CSS\ per \pkg{amsthm} or \pkg{ntheorem}.
+%
+% Other \pkg{thm-*} package may be loaded by \pkg{thm-listof}.
+%    \begin{macrocode}
+\xpatchcmd{\listoftheorems}
+    {%
+        \@xa\protected at edef\csname l@\thmt at envname\endcsname{%
+            \@nx\@dottedtocline{1}{1.5em}{\@nx\thmt at listnumwidth}%
+        }%
+    }
+    {%
+        \csdef{l@\thmt at envname}##1##2{\hypertocfloat{1}{figure}{lof}{##1}{##2}}%
+    }
+    {}
+    {\LWR at patcherror{thm-listof}{listoftheorems}}
+
+\xpatchcmd{\thmt at mklistcmd}
+    {%
+        \@xa\protected at edef\csname l@\thmt at envname\endcsname{%
+            \@nx\@dottedtocline{1}{1.5em}{\@nx\thmt at listnumwidth}%
+        }%
+    }
+    {%
+        \csdef{l@\thmt at envname}##1##2{\hypertocfloat{1}{figure}{lof}{##1}{##2}}%
+    }
+    {}
+    {\LWR at patcherror{thm-listof}{thmt at mklistcmd}}
+%    \end{macrocode}
+%
+% \iffalse
+%</thm-listof>
+% \fi
+%
+%
+%
+% \iffalse
+%<*thm-restate>
+% \fi
+%
+% \part{lwarp-thm-restate.sty}
+%
+% \section{thm-restate}
+%
+% \credits{Ulrich M. Schwarz}
+%
+% \DescribePackage{thm-restate}
+% \pkg{thm-restate} is part of \pkg{thmtools}, and is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.88}{2020/07/03}{\pkg{thm-restate}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{thm-restate}[2019/12/22]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\xpatchcmd{\thmt at restatable}
+    {\@ifstar}
+    {\edef\LWR at thisthmstyle{#2}\@ifstar}
+    {}
+    {\LWR at patcherror{thm-restate}{thmt at restatable}}
+%    \end{macrocode}
+%
+% \iffalse
+%</thm-restate>
+% \fi
+%
+%
+%
+%
+% \iffalse
+%<*thmbox>
+% \fi
+%
+% \part{lwarp-thmbox.sty}
+%
+% \section{thmbox}
+%
+% \credits{Emmanuel Beffara}
+%
+% \DescribePackage{thmbox}
+% \pkg{thmbox} is emulated for use by \pkg{lwarp}.
+%
+% \changes{v0.88}{2020/07/04}{\pkg{thmbox}: Added.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{thmbox}[2005/04/24]
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\renewenvironment{thmbox}[2][]%
+    {%
+        \begin{BlockClass}{thmbox}
+        \begin{BlockClass}{thmboxtitle}
+        #2
+        \end{BlockClass}
+    }
+    {\end{BlockClass}}
+
+\renewenvironment{proof}[1][]
+    {%
+        \begin{BlockClass}{thmboxproof}%
+        \InlineClass{thmboxproofname}{\proofname\ #1\unskip\,:}
+    }
+    {%
+        \qquad\HTMLunicode{220E}% end of proof symbol
+        \end{BlockClass}
+    }
+
+\renewenvironment{example}[1][\examplename]%
+    {%
+        \begin{BlockClass}{thmboxexample}%
+        \InlineClass{thmboxexamplename}{#1\,:}
+    }
+    {\end{BlockClass}}
+
+\renewenvironment{leftbar}[1][]%
+    {\begin{BlockClass}{thmboxleftbar}}
+    {\end{BlockClass}}
+%    \end{macrocode}
+%
+% \iffalse
+%</thmbox>
+% \fi
+%
+%
+%
+% \iffalse
 %<*threadcol>
 % \fi
 %
@@ -75928,6 +77844,44 @@
 %
 %
 % \iffalse
+%<*varioref>
+% \fi
+%
+% \part{lwarp-varioref.sty}
+%
+% \section{varioref}
+%
+% \credits{Frank Mittelbach}
+%
+% \DescribePackage{varioref}
+% \pkg{varioref} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.88}{2020/07/05}{\pkg{varioref}: Removed page-related text.}
+%
+% \codehtml
+%
+%    \begin{macrocode}
+\LWR at ProvidesPackagePass{varioref}[2020/01/23]
+%    \end{macrocode}
+%
+% Page-related output is not used for \HTML\ output.
+%    \begin{macrocode}
+\def\reftextfaceafter {\unskip}%
+\def\reftextfacebefore{\unskip}%
+\def\reftextafter     {\unskip}%
+\def\reftextbefore    {\unskip}%
+\def\reftextcurrent   {\unskip}%
+\def\reftextfaraway#1{\unskip}%
+\def\reftextpagerange#1#2{\unskip}%
+%    \end{macrocode}
+%
+% \iffalse
+%</varioref>
+% \fi
+%
+%
+%
+% \iffalse
 %<*verse>
 % \fi
 %
@@ -76990,7 +78944,7 @@
 % \end{macro}
 %
 %
-% \begin{noindmacro}{\LWR at colorstyle} \marg{2: model} \marg{3: color}
+% \begin{noindmacro}{\LWR at colorstyle} \marg{1: model} \marg{2: color}
 %
 % \changes{v0.19}{2016/06/01}{\pkg{xcolor}: Supports colored \cs{rule}.}
 % \changes{v0.36}{2017/08/11}{\pkg{xcolor}: Refactored \cs{LWR at colorstyle}.}
@@ -77609,26 +79563,29 @@
 % \pkg{xfakebold} is patched for use by \pkg{lwarp},
 % and additional underlying support is found in the \pkg{lwarp} core.
 %
-% Note that the print version resets to unbold at each page break,
-% \trouble[page breaks]{xfakebold=\pkg{xfakebold}}
-% whereas the \HTML\ version maintains the bold state until it is undone.
+% \pkg{xfakebold} is only used in \SVG\ math and \env{lateximage}s.
+% \trouble[text mode]{xfakebold=\pkg{xfakebold}}
+% Text mode is not set bold, but \cs{setBold} in text will be applied
+% to any following \SVG\ math.
 %
 % \changes{v0.67}{2019/02/17}{\pkg{xfakebold}: Added.}
+% \changes{v0.88}{2020/06/29}{\pkg{xfakebold}: Now works with \pkg{pdfrender}.}
 %
 % \codehtml
 %
 %    \begin{macrocode}
-\LWR at ProvidesPackagePass{xfakebold}[2018/07/25]
+\LWR at ProvidesPackagePass{xfakebold}[2020/06/24]
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\let\LWR at orig@setBold\setBold
-\let\LWR at orig@unsetBold\unsetBold
-\renewcommand*{\setBold}{\booltrue{LWR at xfakebold}}
-\renewcommand*{\unsetBold}{\boolfalse{LWR at xfakebold}}
+\newcommand*{\LWR at HTML@setBold}{\booltrue{LWR at xfakebold}}
+\LWR at formatted{setBold}
 
+\newcommand*{\LWR at HTML@unsetBold}{\boolfalse{LWR at xfakebold}}
+\LWR at formatted{unsetBold}
+
 \renewcommand*{\LWR at applyxfakebold}{%
-    \ifbool{LWR at xfakebold}{\LWR at orig@setBold}{\LWR at orig@unsetBold}%
+    \ifbool{LWR at xfakebold}{\LWR at print@setBold}{\LWR at print@unsetBold}%
 }
 %    \end{macrocode}
 %
@@ -78719,6 +80676,11 @@
 }
 %    \end{macrocode}
 %
+% Do not use \cs{chaptername}:
+%    \begin{macrocode}
+\renewcommand*{\LWR at printchaptername}{}
+%    \end{macrocode}
+%
 % Simple captions are used in all cases.
 % \changes{v0.73}{2019/07/10}{\pkg{lwarp-patch-komascript}: Fix for captions.}
 %    \begin{macrocode}
@@ -78841,7 +80803,7 @@
 % \changes{v0.83}{2020/03/27}{\pkg{lwarp-patch-memoir}: No longer requires \pkg{subfigure}.}
 % \changes{v0.84}{2020/04/05}{\pkg{lwarp-patch-memoir}: No longer requires \pkg{subcaption}.}
 
-% ^^A Not sure why this is here:
+% ^^A Forgot why this is here:
 %    \begin{macrocode}
 \makeindex
 %    \end{macrocode}
@@ -80154,7 +82116,7 @@
 
 \def\@@wrindexhyp#1||\\{%
     \addtocounter{LWR at autoindex}{1}%
-    \LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%
+    \label{LWRindex-\arabic{LWR at autoindex}}%
 %     \ifshowindexmark\@showidx{#1}\fi
     \protected at write\@auxout{}%
 %         {\string\@@wrindexm at m{\@idxfile}{#1}{\thepage}}%
@@ -80174,7 +82136,7 @@
 %    \begin{macrocode}
 \def\@@wrspindexhyp#1||\\{%
     \addtocounter{LWR at autoindex}{1}%
-    \LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%
+    \label{LWRindex-\arabic{LWR at autoindex}}%
 %     \ifshowindexmark\@showidx{#1}\fi
     \protected at write\@auxout{}%
 %         {\string\@@wrindexm at m{\@idxfile}{#1}{\@nameuse{the\@sptheidx}}}%

Modified: trunk/Master/texmf-dist/source/latex/lwarp/lwarp.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/lwarp/lwarp.ins	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/source/latex/lwarp/lwarp.ins	2020-07-19 21:27:08 UTC (rev 55880)
@@ -116,6 +116,7 @@
 \file{lwarp-citeref.sty}{\from{lwarp.dtx}{citeref}}
 \file{lwarp-CJK.sty}{\from{lwarp.dtx}{CJK}}
 \file{lwarp-CJKutf8.sty}{\from{lwarp.dtx}{CJKutf8}}
+\file{lwarp-cleveref.sty}{\from{lwarp.dtx}{cleveref}}
 \file{lwarp-clrdblpg.sty}{\from{lwarp.dtx}{clrdblpg}}
 \file{lwarp-cmdtrack.sty}{\from{lwarp.dtx}{cmdtrack}}
 \file{lwarp-colonequals.sty}{\from{lwarp.dtx}{colonequals}}
@@ -172,6 +173,7 @@
 \file{lwarp-fancyref.sty}{\from{lwarp.dtx}{fancyref}}
 \file{lwarp-fancytabs.sty}{\from{lwarp.dtx}{fancytabs}}
 \file{lwarp-fancyvrb.sty}{\from{lwarp.dtx}{fancyvrb}}
+\file{lwarp-fbox.sty}{\from{lwarp.dtx}{fbox}}
 \file{lwarp-fewerfloatpages.sty}{\from{lwarp.dtx}{fewerfloatpages}}
 \file{lwarp-figcaps.sty}{\from{lwarp.dtx}{figcaps}}
 \file{lwarp-figsize.sty}{\from{lwarp.dtx}{figsize}}
@@ -216,6 +218,7 @@
 \file{lwarp-gentombow.sty}{\from{lwarp.dtx}{gentombow}}
 \file{lwarp-geometry.sty}{\from{lwarp.dtx}{geometry}}
 \file{lwarp-ghsystem.sty}{\from{lwarp.dtx}{ghsystem}}
+\file{lwarp-gindex.sty}{\from{lwarp.dtx}{gindex}}
 \file{lwarp-gloss.sty}{\from{lwarp.dtx}{gloss}}
 \file{lwarp-glossaries.sty}{\from{lwarp.dtx}{glossaries}}
 \file{lwarp-gmeometric.sty}{\from{lwarp.dtx}{gmeometric}}
@@ -408,6 +411,7 @@
 \file{lwarp-sectsty.sty}{\from{lwarp.dtx}{sectsty}}
 \file{lwarp-semantic-markup.sty}{\from{lwarp.dtx}{semantic-markup}}
 \file{lwarp-setspace.sty}{\from{lwarp.dtx}{setspace}}
+\file{lwarp-shadethm.sty}{\from{lwarp.dtx}{shadethm}}
 \file{lwarp-shadow.sty}{\from{lwarp.dtx}{shadow}}
 \file{lwarp-shapepar.sty}{\from{lwarp.dtx}{shapepar}}
 \file{lwarp-showidx.sty}{\from{lwarp.dtx}{idx}}
@@ -448,6 +452,8 @@
 \file{lwarp-tabulary.sty}{\from{lwarp.dtx}{tabulary}}
 \file{lwarp-tagpdf.sty}{\from{lwarp.dtx}{tagpdf}}
 \file{lwarp-tascmac.sty}{\from{lwarp.dtx}{tascmac}}
+\file{lwarp-tcolorbox.sty}{\from{lwarp.dtx}{tcolorbox}}
+\file{lwarp-termcal.sty}{\from{lwarp.dtx}{termcal}}
 \file{lwarp-textarea.sty}{\from{lwarp.dtx}{textarea}}
 \file{lwarp-textcomp.sty}{\from{lwarp.dtx}{textcomp}}
 \file{lwarp-textfit.sty}{\from{lwarp.dtx}{textfit}}
@@ -454,6 +460,9 @@
 \file{lwarp-textpos.sty}{\from{lwarp.dtx}{textpos}}
 \file{lwarp-theorem.sty}{\from{lwarp.dtx}{theorem}}
 \file{lwarp-thinsp.sty}{\from{lwarp.dtx}{thinsp}}
+\file{lwarp-thm-listof.sty}{\from{lwarp.dtx}{thm-listof}}
+\file{lwarp-thm-restate.sty}{\from{lwarp.dtx}{thm-restate}}
+\file{lwarp-thmbox.sty}{\from{lwarp.dtx}{thmbox}}
 \file{lwarp-threadcol.sty}{\from{lwarp.dtx}{threadcol}}
 \file{lwarp-threeparttable.sty}{\from{lwarp.dtx}{threeparttable}}
 \file{lwarp-threeparttablex.sty}{\from{lwarp.dtx}{threeparttablex}}
@@ -492,6 +501,7 @@
 \file{lwarp-upref.sty}{\from{lwarp.dtx}{upref}}
 \file{lwarp-url.sty}{\from{lwarp.dtx}{url}}
 \file{lwarp-uspace.sty}{\from{lwarp.dtx}{uspace}}
+\file{lwarp-varioref.sty}{\from{lwarp.dtx}{varioref}}
 \file{lwarp-verse.sty}{\from{lwarp.dtx}{verse}}
 \file{lwarp-versonotes.sty}{\from{lwarp.dtx}{versonotes}}
 \file{lwarp-vertbars.sty}{\from{lwarp.dtx}{vertbars}}

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-amsmath.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-amsmath.sty	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-amsmath.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -16,6 +16,8 @@
 %% and version 1.3 or later is part of all distributions of LaTeX
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackagePass{amsmath}[2017/09/02]
+\newcommand*{\LWR at HTML@dotso}{\textellipsis\ }
+\LWR at formatted{dotso}
 \def\maketag@@@#1{\text{#1}}
 \def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip)}}
 

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-amsthm.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-amsthm.sty	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-amsthm.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -31,8 +31,8 @@
     }
 }
 {}
+\RequirePackage{amsmath}
 \LWR at ProvidesPackagePass{amsthm}[2017/10/31]
-
 \newcommand{\LWR at newtheoremstyle}{plain}
 
 \renewcommand{\theoremstyle}[1]{%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-caption.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-caption.sty	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-caption.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -130,6 +130,15 @@
     #2%
 }
 
+\caption at AtBeginDocument{
+\@ifpackageloaded{lwarp-scrextend}{
+    \LetLtxMacro\captionbelow\caption
+    \LetLtxMacro\captionabove\caption
+    \LetLtxMacro\captionofbelow\captionof
+    \LetLtxMacro\captionofabove\captionof
+}{}
+}
+
 \endinput
 %%
 %% End of file `lwarp-caption.sty'.

Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-cleveref.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-cleveref.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-cleveref.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -0,0 +1,132 @@
+%%
+%% This is file `lwarp-cleveref.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `cleveref')
+%% This is a generated file.
+%% Copyright 2016-2020 Brian Dunn
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+\LWR at ProvidesPackagePass{cleveref}[2018/03/27]
+\def\LWR at orig@@@setcref#1#2{\cref at getlabel{#2}{\@templabel}#1{\@templabel}{}{}}%
+
+\ifdefequal{\@@setcref}{\LWR at orig@@@setcref}{% before v0.21
+    \renewcommand*{\@@setcref}[2]{#1{\ref{#2}}{}{}}
+}{
+    \ifdefequal{\@@@setcref}{\LWR at orig@@@setcref}{% as of v0.21
+        \renewcommand*{\@@@setcref}[2]{%
+            #1{\ref{#2}}{}{}}
+    }{
+        \PackageWarningNoLine{lwarp-cleveref}{
+            Unknown version of cleveref.
+            \protect\cref\space will fail.
+        }%
+    }
+}
+
+\def\LWR at orig@@@setcrefrange#1#2#3{%
+  \cref at getlabel{#2}{\@labela}%
+  \cref at getlabel{#3}{\@labelb}%
+  #1{\@labela}{\@labelb}{}{}{}{}}%
+
+\ifdefequal{\@@setcrefrange}{\LWR at orig@@@setcrefrange}{
+    \renewcommand{\@@setcrefrange}[3]{%
+        #1{\ref{#2}}{\ref{#3}}{}{}{}{}%
+    }
+}{
+    \ifdefequal{\@@@setcrefrange}{\LWR at orig@@@setcrefrange}{
+        \renewcommand{\@@@setcrefrange}[3]{%
+            #1{\ref{#2}}{\ref{#3}}{}{}{}{}%
+        }
+    }{
+        \PackageWarningNoLine{lwarp-cleveref}{
+            Unknown version of cleveref.
+            \protect\crefrange\space will fail.
+        }
+    }
+}
+
+
+\newcommand*{\cpagerefFor}{for}
+
+\def\LWR at orig@@setcpageref#1#2{% before v0.21
+  \cref at getpageref{#2}{\@temppage}#1{\@temppage}{}{}}%
+
+\def\LWR at orig@@@setcpageref#1#2{% as of v0.21
+  \cpageref at getlabel{#2}{\@temppage}#1{\@temppage}{}{}}%
+
+\ifdefequal{\@@setcpageref}{\LWR at orig@@setcpageref}{
+    \renewcommand*{\@@setcpageref}[2]{%
+        #1{\cpagerefFor\ \cref{#2}}{}{}%
+    }
+}{
+    \ifdefequal{\@@@setcpageref}{\LWR at orig@@@setcpageref}{
+        \renewcommand*{\@@@setcpageref}[2]{%
+            #1{\cpagerefFor\ \cref{#2}}{}{}%
+        }
+    }
+    {
+        \PackageWarningNoLine{lwarp-cleveref}{
+            Unknown version of cleveref.
+            \protect\cpageref\space will fail.
+        }
+    }
+}
+
+
+\def\LWR at orig@@setcpagerefrange#1#2#3{% before v0.21
+  \cref at getpageref{#2}{\@pagea}%
+  \cref at getpageref{#3}{\@pageb}%
+  #1{\@pagea}{\@pageb}{}{}{}{}}%
+
+\def\LWR at orig@@@setcpagerefrange#1#2#3{% as of v0.21
+  \cpageref at getlabel{#2}{\@pagea}%
+  \cpageref at getlabel{#3}{\@pageb}%
+  #1{\@pagea}{\@pageb}{}{}{}{}}%
+
+\ifdefequal{\@@setcpagerefrange}{\LWR at orig@@setcpagerefrange}{
+    \renewcommand*{\@@setcpagerefrange}[3]{%
+        #1{\cpagerefFor\ \cref{#2}}{\cref{#3}}{}{}{}{}%
+    }
+}{
+    \ifdefequal{\@@@setcpagerefrange}{\LWR at orig@@@setcpagerefrange}{
+        \renewcommand*{\@@@setcpagerefrange}[3]{%
+            #1{\cpagerefFor\ \cref{#2}}{\cref{#3}}{}{}{}{}%
+        }
+    }
+    {
+        \PackageWarningNoLine{lwarp-cleveref}{
+            Unknown version of cleveref.
+            \protect\cpagerefrange\space will fail.
+        }
+    }
+}
+\LWR at absorbstar{cref}
+\LWR at absorbstar{Cref}
+\LWR at absorbstar{crefrange}
+\LWR at absorbstar{Crefrange}
+\LWR at absorbstar{cpageref}
+\LWR at absorbstar{Cpageref}
+\LWR at absorbstar{cpagerefrange}
+\LWR at absorbstar{Cpagerefrange}
+\LWR at absorbstar{labelcref}
+\LWR at absorbstar{labelcpageref}
+\@ifpackageloaded{varioref}{
+    \LWR at absorbstar{vref}
+    \LWR at absorbstar{Vref}
+    \LWR at absorbstar{vrefrange}
+    \LWR at absorbstar{Vrefrange}
+    \LWR at absorbstar{fullref}
+    \LWR at absorbstar{Fullref}
+}{}% varioref
+\endinput
+%%
+%% End of file `lwarp-cleveref.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-cleveref.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-errata.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-errata.sty	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-errata.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -56,7 +56,7 @@
     {}
     {\LWR at patcherror{erratum}{eReplace}}
 
-\preto\PrintErrata{\LWR at orignewpage}
+\preto\PrintErrata{\LWR at maybe@orignewpage}
 
 \StopDefiningMath
 

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyref.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyref.sty	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyref.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -22,31 +22,6 @@
 {}{
     \renewcommand*{\fancyrefhook}[1]{#1}%
 }
-
-\renewcommand*{\@f at ref}[4]{%
-  \@ifundefined{#1r@#2@#3}{%
-    \PackageError{lwarp-fancyref}{%
-      \backslashchar#1ref\space format ``#2''
-      undefined\MessageBreak
-      for label type ``#3''%
-    }{%
-      The format ``#2'' was not defined for the label type
-      ``#3''\MessageBreak
-      and the \backslashchar#1ref\space command.  Perhaps
-      you have only misspelled its name.\MessageBreak
-      Otherwise you will have to define it with
-      \protect\new#1refformat\MessageBreak
-      prior to using it.%
-    }%
-  }{%
-    \fancyrefhook{%
-      \@nameuse{#1r@#2@#3}%
-        {\ref{#3\fancyrefargdelim#4}}%
-        {}% lwarp
-        {}% lwarp
-    }%
-  }%
-}%
 \endinput
 %%
 %% End of file `lwarp-fancyref.sty'.

Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fbox.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fbox.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fbox.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -0,0 +1,102 @@
+%%
+%% This is file `lwarp-fbox.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `fbox')
+%% This is a generated file.
+%% Copyright 2016-2020 Brian Dunn
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+\LWR at ProvidesPackagePass{fbox}[2020/06/22]
+\LetLtxMacro\LWR at HTML@fbox\fbox
+\renewcommand*{\orig at fbox}{\FBox at i[tblr]}
+\newcommand*{\LWR at fboxpkg@border}[2]{%
+    \appto\LWR at tempone{%
+        border-#1: % space
+        \LWR at printlength{\LWR at atleastonept} % space
+        solid \LWR at origpound\LWR at tempcolor ;\LWR at indentHTML
+    }%
+    \ifblank{#2}{}{%
+        \appto\LWR at tempone{%
+            padding-#1: \LWR at printlength{#2} ;\LWR at indentHTML
+        }%
+    }%
+}
+\newbool{LWR at fboxpkg@ispar}
+\boolfalse{LWR at fboxpkg@ispar}
+\newcommand{\LWR at fboxpkg@lrpadding}[1]{%
+    \csuse{if at fbox@space@#1}%
+        \appto\LWR at tempone{%
+            padding-#1: \LWR at printlength{\fbox@@sep};\LWR at indentHTML
+        }
+    \else%
+        \appto\LWR at tempone{%
+            padding-#1: 0pt;\LWR at indentHTML
+        }
+    \fi%
+}
+\newcommand{\LWR at HTML@FBox at iii}[1]{%
+    \LWR at forceminwidth{\fbox@@rule}%
+    \LWR at findcurrenttextcolor%
+    \def\LWR at tempone{%
+        color: \LWR at origpound\LWR at tempcolor ; \LWR at indentHTML
+        margin: 1ex ; \LWR at indentHTML
+    }%
+    \LWR at fboxpkg@lrpadding{left}%
+    \LWR at fboxpkg@lrpadding{right}%
+    \ifnum\the\@tempcntb>8\relax
+        \advance\@tempcntb by -8
+        \LWR at fboxpkg@border{top}{\fbox@@sep}%
+    \fi
+    \ifnum\@tempcntb>3
+        \advance\@tempcntb by -4
+        \LWR at fboxpkg@border{left}{}%
+    \fi
+    \ifnum\@tempcntb>1
+        \LWR at fboxpkg@border{right}{}%
+    \fi
+    \ifodd\@tempcntb
+        \LWR at fboxpkg@border{bottom}{\fbox@@sep}%
+    \fi
+    \color at begingroup
+    \ifbool{LWR at fboxpkg@ispar}%
+        {%
+            \begin{BlockClass}[\LWR at tempone]{fboxpkg}%
+                #1%
+            \end{BlockClass}%
+        }%
+        {%
+            \InlineClass[\LWR at tempone]{fboxpkg}{%
+                #1%
+            }%
+        }%
+    \color at endgroup
+    \boolfalse{LWR at fboxpkg@ispar}% globally
+}
+\LWR at formatted{FBox at iii}
+\long\def\LWR at HTML@FParBox at i[#1]#2{%
+    \booltrue{LWR at fboxpkg@ispar}%
+    \FBox at i[#1]{#2}
+}
+\LWR at formatted{FParBox at i}
+
+\long\def\LWR at HTML@FParBox at ii#1{%
+    \booltrue{LWR at fboxpkg@ispar}%
+    \FBox at i[tblr]{#1}%
+}
+\LWR at formatted{FParBox at ii}
+\CustomizeMathJax{\let\LWRorigfbox\fbox}
+\CustomizeMathJax{\newcommand{\LWRfboxpkgtwo}[2][]{\LWRorigfbox{#2}}}
+\CustomizeMathJax{\renewcommand{\fbox}{\ifstar\LWRfboxpkgtwo\LWRfboxpkgtwo}}
+\CustomizeMathJax{\newcommand{\fparbox}{\fbox}}
+\endinput
+%%
+%% End of file `lwarp-fbox.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-fbox.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-gindex.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-gindex.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-gindex.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -0,0 +1,42 @@
+%%
+%% This is file `lwarp-gindex.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `gindex')
+%% This is a generated file.
+%% Copyright 2016-2020 Brian Dunn
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%   http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+\LWR at ProvidesPackagePass{gindex}[2019/10/07]
+\AtBeginDocument{
+    \robustify{\indexpagessep}
+    \robustify{\indexrangesep}
+    \renewcommand*{\IndexPageSeparator}{\indexpagessep}
+    \renewcommand*{\IndexRangeSeparator}{\indexrangesep}
+}
+\def\addindexitem#1#2{%
+  \indexflushitem
+  \gix at getspecial#1\indexspecial\indexspecial\@@\indexitem{\hyperindexref{#2}}}
+
+\def\addindexsubitem#1#2{%
+  \stepcounter{indexsubitems}%
+  \gix at getspecial#1\indexspecial\indexspecial\@@\indexsubitem{\hyperindexref{#2}}}
+
+\def\addindexsubsubitem#1#2{%
+  \gix at getspecial#1\indexspecial\indexspecial\@@\indexsubsubitem{\hyperindexref{#2}}}
+\renewcommand\indexheading[1]{%
+    \begin{BlockClass}{indexheading}
+    \MakeUppercase{#1}%
+    \end{BlockClass}
+}
+\endinput
+%%
+%% End of file `lwarp-gindex.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-gindex.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -67,8 +67,8 @@
 
 \newcommand{\LWR at hyperreffinish}[1]{%
     \begingroup%
-    \RenewDocumentCommand{\ref}{}{\LWR at ref@ignorestar}%
-    #1%
+    \RenewDocumentCommand{\ref}{s m}{\LWR at print@ref{##2}}%
+   #1%
     \endgroup%
     \LWR at htmltag{/a}%
 }

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-idxlayout.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-idxlayout.sty	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-idxlayout.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -20,7 +20,7 @@
 \AtBeginDocument{
     \preto\printindex{
 
-    \LWR at orignewpage
+    \LWR at maybe@orignewpage
     \LWR at startpars
 
     \LWR at indexprenote

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-imakeidx.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-imakeidx.sty	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-imakeidx.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -22,7 +22,7 @@
 \catcode`\_=12%
 
 \renewcommand*{\printindex}[1][\imki at jobname]{%
-\LWR at orignewpage%
+\LWR at maybe@orignewpage%
 \LWR at startpars%
 \ifstrequal{#1}{\imki at jobname}{%
   \@ifundefined{#1 at idxfile}{%
@@ -80,7 +80,7 @@
 }
 \renewcommand\imki at wrindexentrysplit[3]{%
 \addtocounter{LWR at autoindex}{1}%
-\LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%
+\label{LWRindex-\arabic{LWR at autoindex}}%
   \expandafter\protected at write\csname#1 at idxfile\endcsname{}%
     {\string\indexentry{#2}{\arabic{LWR at autoindex}}}%
 }
@@ -87,7 +87,7 @@
 
 \renewcommand\imki at wrindexentryunique[3]{%
 \addtocounter{LWR at autoindex}{1}%
-\LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%
+\label{LWRindex-\arabic{LWR at autoindex}}%
   \protected at write\@indexfile{}%
     {\string\indexentry[#1]{#2}{\arabic{LWR at autoindex}}}%
 }

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-index.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-index.sty	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-index.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -37,7 +37,7 @@
     {\begingroup}
     {%
         \addtocounter{LWR at autoindex}{1}%                    lwarp
-        \LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%    lwarp
+        \label{LWRindex-\arabic{LWR at autoindex}}%    lwarp
         \begingroup%
     }
     {}

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -55,7 +55,7 @@
     \LWR at traceinfo{About to create verbatim.}%
     \let\lsthk at EveryPar\relax%
     \LWR at forcenewpage%
-    \LWR at atbeginverbatim{2}{programlisting}%
+    \LWR at atbeginverbatim{1.5}{programlisting}%
 
     \let\lsthk at EveryPar\LWR at origlsthkEveryPar%
 \else%

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-lyluatex.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-lyluatex.sty	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-lyluatex.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -23,7 +23,7 @@
 
 \renewcommand*{\ly at compilescore}[1]{%
     \begingroup%
-    \LWR at orignewpage%
+    \LWR at maybe@orignewpage%
     \LWR at origloadgeometry{LWR at usergeometry}%
     \LWR at print@normalsize%
     \renewcommand{\includegraphics}[2][]{%
@@ -53,7 +53,7 @@
             tex.print{[[\string\end{BlockClass}]]}
         end
     }%
-    \LWR at orignewpage%
+    \LWR at maybe@orignewpage%
     \LWR at origrestoregeometry%
     \endgroup%
 }

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-makeidx.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-makeidx.sty	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-makeidx.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -17,7 +17,7 @@
 %% version 2005/12/01 or later.
 \LWR at ProvidesPackagePass{makeidx}[2014/09/29]
 \preto\printindex{%
-    \LWR at orignewpage%
+    \LWR at maybe@orignewpage%
     \LWR at startpars%
 }
 \endinput

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-komascript.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-komascript.sty	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-komascript.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -53,6 +53,7 @@
     \renewcommand{\chapter at preamble}{#3}%
 }
 }
+\renewcommand*{\LWR at printchaptername}{}
 \AtBeginDocument{
 \AtBeginDocument{
     \LetLtxMacro\captionbelow\caption

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-memoir.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-memoir.sty	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-memoir.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -978,7 +978,7 @@
 
 \def\@@wrindexhyp#1||\\{%
     \addtocounter{LWR at autoindex}{1}%
-    \LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%
+    \label{LWRindex-\arabic{LWR at autoindex}}%
     \protected at write\@auxout{}%
         {\string\@@wrindexm at m{\@idxfile}{#1}{\arabic{LWR at autoindex}}}%
     \endgroup
@@ -985,7 +985,7 @@
     \@esphack}%
 \def\@@wrspindexhyp#1||\\{%
     \addtocounter{LWR at autoindex}{1}%
-    \LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%
+    \label{LWRindex-\arabic{LWR at autoindex}}%
     \protected at write\@auxout{}%
         {\string\@@wrindexm at m{\@idxfile}{#1}{\arabic{LWR at autoindex}}}%
     \endgroup

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfrender.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfrender.sty	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfrender.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -15,9 +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{pdfrender}[2016/05/17]
-\newcommand*{\pdfrender}[1]{}
-\newcommand{\textpdfrender}[2]{#2}
+\LWR at ProvidesPackagePass{pdfrender}[2019/12/29]
 \endinput
 %%
 %% End of file `lwarp-pdfrender.sty'.

Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-shadethm.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-shadethm.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-shadethm.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -0,0 +1,32 @@
+%%
+%% This is file `lwarp-shadethm.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `shadethm')
+%% 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{shadethm}[1999/11/23]
+\newenvironment{LWR at HTML@shadebox}
+{%
+    \convertcolorspec{named}{shadethmcolor}{HTML}\LWR at tempcolor%
+    \convertcolorspec{named}{shaderulecolor}{HTML}\LWR at tempcolortwo%
+    \begin{BlockClass}[%
+        background: \LWR at origpound\LWR at tempcolor ;
+        border: 1px solid \LWR at origpound\LWR at tempcolortwo ;
+    ]{shadebox}
+}%
+{\end{BlockClass}}
+\LWR at formattedenv{shadebox}
+\endinput
+%%
+%% End of file `lwarp-shadethm.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-shadethm.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-splitidx.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-splitidx.sty	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-splitidx.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -36,7 +36,7 @@
     \def\@tempa{#2}%
     \csname index@#1 at hook\endcsname
     \addtocounter{LWR at autoindex}{1}%                    lwarp
-    \LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%    lwarp
+    \label{LWRindex-\arabic{LWR at autoindex}}%    lwarp
       \@@@wrsindex{#1}{{\@tempa}{\arabic{LWR at autoindex}}}%
     \endgroup
     \@esphack

Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-tcolorbox.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-tcolorbox.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-tcolorbox.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -0,0 +1,252 @@
+%%
+%% This is file `lwarp-tcolorbox.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `tcolorbox')
+%% 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{tcolorbox}[2020/04/28]
+\newbool{LWR at havetcblower}
+\boolfalse{LWR at havetcblower}
+\newcommand{\LWR at tcolorbox@findcolors}{%
+    \convertcolorspec{named}{tcbcolback}{HTML}\LWR at tcbcolback
+    \convertcolorspec{named}{tcbcolframe}{HTML}\LWR at tcbcolframe
+    \iftcb at titlefilled%
+        \convertcolorspec{named}{tcbcolbacktitle}{HTML}\LWR at tcbcolbacktitle
+    \else
+        \convertcolorspec{named}{tcbcolframe}{HTML}\LWR at tcbcolbacktitle
+    \fi
+    \convertcolorspec{named}{tcbcoltitle}{HTML}\LWR at tcbcoltitle
+    \convertcolorspec{named}{tcbcolupper}{HTML}\LWR at tcbcolupper
+    \convertcolorspec{named}{tcbcollower}{HTML}\LWR at tcbcollower
+}
+
+\newcommand*{\LWR at tcolorbox@titlecolorstyles}{%
+    border-top: 1px solid \LWR at origpound\LWR at tcbcolframe ;
+    border-bottom: 1px solid \LWR at origpound\LWR at tcbcolframe ;
+    background: \LWR at origpound\LWR at tcbcolbacktitle ;
+    color: \LWR at origpound\LWR at tcbcoltitle ;
+}
+\newcommand*{\LWR at showtitle@}[1]{%
+    \begin{BlockClass}[
+        \LWR at tcolorbox@titlecolorstyles
+    ]{tcolorboxtitle}
+    \kvtcb at before@title#1\kvtcb at after@title
+    \end{BlockClass}
+}
+\newcommand*{\LWR at showtitle}[1]{%
+    \iftcb at titlevisible
+    \LWR at showtitle@{#1}
+    \else
+    \LWR at showtitle@{~}
+    \fi
+}
+
+\newcommand*{\LWR at tcolorbox@dophantom}{%
+    \kvtcb at phantom
+    \let\kvtcb at phantom\@empty%
+}
+\newcommand*{\LWR at tcolorboxstart}[1]{
+    \LWR at tcolorbox@findcolors
+    \begin{BlockClass}[
+        border: 1px solid \LWR at origpound\LWR at tcbcolframe ;
+        background: \LWR at origpound\LWR at tcbcolback ;
+    ]{#1}
+    \LWR at tcolorbox@dophantom%
+    \ifdefvoid{\kvtcb at title}
+        {}
+        {
+            \LWR at showtitle{\kvtcb at title}
+        }
+    \begin{BlockClass}[
+        color: \LWR at origpound\LWR at tcbcolupper ;
+    ]{tcolorboxupper}
+}
+\newcommand*{\LWR at tcolorbox@dostartfloat}{%
+    \ifx\kvtcb at float\@empty%
+    \else%
+        \tcb at float@env at begin{tcbfloat}[\kvtcb at float]
+        \noexpand\kvtcb at everyfloat
+    \fi%
+}
+
+\newcommand*{\LWR at tcolorbox@doendfloat}{%
+    \ifx\kvtcb at float\@empty%
+    \else%
+        \tcb at float@env at end%
+    \fi%
+}
+\renewenvironment{tcolorbox}[1][]
+    {
+        \ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}%
+        {
+            \PackageError{lwarp}
+                {%
+                    Lwarp cannot process a tcolorbox inside a lateximage\MessageBreak
+                    or SVG math.\MessageBreak
+                    Enter 'H' for possible solutions%
+                }
+                {%
+                    Use \protect\tcbox, \protect\tcboxmath, or
+                    \protect\tcbhighmath\space instead.\MessageBreak%
+                    (Inside math, you probably want to use these anyhow.)%
+                }
+        }{}
+        \LWR at printpendingfootnotes
+        \tcb at layer@inc
+        \tcb at apply@box at options{#1}
+        \LWR at tcolorbox@dostartfloat%
+        \boolfalse{LWR at havetcblower}
+        \LWR at tcolorboxstart{tcolorbox}
+        \tcb at insert@before at upper%
+    }
+    {
+        \ifbool{LWR at havetcblower}{%
+            \tcb at insert@after at lower%
+        }{%
+            \tcb at insert@after at upper%
+        }%
+        \end{BlockClass}
+        \LWR at printpendingfootnotes
+        \tcb at layer@dec
+        \end{BlockClass}
+        \LWR at tcolorbox@doendfloat%
+    }
+\newcommand{\tcblower}{
+    \tcb at insert@after at upper%
+    \end{BlockClass}
+    \begin{BlockClass}[%
+        border-top: 1px dashed \LWR at origpound\LWR at tcbcolframe ;
+        color: \LWR at origpound\LWR at tcbcollower ;
+    ]{tcolorboxlower}
+    \tcb at insert@before at lower%
+}
+\AtBeginDocument{
+\ifdef{\tcbline}{
+    \newcommand*{\LWR at sub@tcbline}{%
+        \begin{BlockClass}{hrule}
+        \end{BlockClass}
+    }
+    \newcommand{\LWR at HTML@tcbline}{\@ifstar\LWR at sub@tcbline\LWR at sub@tcbline}
+    \LWR at formatted{tcbline}
+}{}
+}
+
+\newcommand{\LWR at HTML@tcbox}[2][]{
+    \LWR at printpendingfootnotes
+    \LWR at tcolorbox@dostartfloat%
+    \begingroup
+    \tcb at layer@inc
+    \tcb at apply@box at options{#1}
+    \boolfalse{LWR at havetcblower}
+    \LWR at tcolorboxstart{tcolorbox inlineminipage}
+    \tcb at insert@before at upper%
+    #2
+    \ifbool{LWR at havetcblower}{%
+        \tcb at insert@after at lower%
+    }{%
+        \tcb at insert@after at upper%
+    }%
+    \end{BlockClass}
+    \LWR at printpendingfootnotes
+    \end{BlockClass}
+    \tcb at layer@dec%
+    \endgroup%
+    \LWR at tcolorbox@dostartfloat%
+    \global\booltrue{LWR at minipagethispar}%
+}
+\LWR at formatted{tcbox}
+
+\appto\LWR at restoreMathJaxformatting{%
+    \renewcommand{\tcbox}[2][]{#2}%
+}
+\xpatchcmd{\tcbsubtitle}
+    {\begingroup}
+    {\begingroup\let\kvtcb at title\relax\begin{BlockClass}{tcolorboxsubtitle}}
+    {}
+    {\LWR at patcherror{tcolorbox}{tcbsubtitle}}
+
+\xpatchcmd{\tcbsubtitle}
+    {\endgroup}
+    {\end{BlockClass}\endgroup}
+    {}
+    {\LWR at patcherror{tcolorbox}{tcbsubtitleB}}
+\AtBeginDocument{
+    \ifdef{\tcboxfit}{%
+        \let\LWR at HTML@tcboxfit\tcbox%
+        \LWR at formatted{tcboxfit}
+    }{}
+}
+\LetLtxMacro\LWR at HTML@tcbtitle\tcbtitle
+\xpatchcmd{\LWR at HTML@tcbtitle}
+    {\kvtcb at before@title\tcbtitletext}
+    {\kvtcb at before@title\LWR at textcurrentfont{\LWR at textcurrentcolor{\tcbtitletext}}}
+    {}
+    {\LWR at patcherror{tcolorbox}{LWR at HTML@tcbtitle}}
+\LWR at formatted{tcbtitle}
+\renewcommand*\l at tcolorbox[2]{\hypertocfloat{1}{tcolorbox}{lof}{#1}{#2}}
+\AtBeginDocument{
+\pgfkeysifdefined{/tcb/libload/theorems}{
+
+    \def\LWR at HTML@tcb at hack@amsmath{%
+        \PackageError{lwarp}
+            {%
+                tcolorbox ``math'', ``ams equation'', and related\MessageBreak
+                are not supported.\MessageBreak
+                \protect\tcboxmath\space and
+                \protect\tcbhighmath\space are emulated.\MessageBreak
+                Enter 'H' for possible solutions%
+            }
+            {%
+                Remove tcolorbox math-related options, and instead\MessageBreak
+                use the usual math environments inside each tcolorbox.%
+            }
+    }
+    \LWR at formatted{tcb at hack@amsmath}
+
+    % Cause an error if using math:
+    \tcbset{%
+        math upper/.style={before upper*=\tcb at hack@amsmath,after upper*=$},%
+        math lower/.style={before lower*=\tcb at hack@amsmath,after lower*=$},%
+    }
+
+    \appto\LWR at restoreorigformatting{%
+    \tcbset{%
+        math upper/.style={before upper*=$\displaystyle,after upper*=$},%
+        math lower/.style={before lower*=$\displaystyle,after lower*=$},%
+    }%
+    }
+
+    \newcommand{\LWR at HTML@tcboxmath}[2][]{#2}
+    \LWR at formatted{tcboxmath}
+    \newcommand{\LWR at HTML@tcbhighmath}[2][]{#2}
+    \LWR at formatted{tcbhighmath}
+    \appto\LWR at restoreMathJaxformatting{%
+        \renewcommand{\tcboxmath}[2][]{#2}%
+        \renewcommand{\tcbhighmath}[2][]{#2}%
+    }
+}{}% theorems loaded
+}% AtBeginDocument
+\CustomizeMathJax{\newcommand{\tcbset}[1]{}}
+\CustomizeMathJax{\newcommand{\tcbsetforeverylayer}[1]{}}
+\CustomizeMathJax{\newcommand{\tcbox}[2][]{\boxed{\text{#2}}}}
+\CustomizeMathJax{\newcommand{\tcboxfit}[2][]{\boxed{#2}}}
+\CustomizeMathJax{\newcommand{\tcblower}{}}
+\CustomizeMathJax{\newcommand{\tcbline}{}}
+\CustomizeMathJax{\newcommand{\tcbtitle}{}}
+\CustomizeMathJax{\newcommand{\tcbsubtitle[2][]{\mathrm{#2}}}}
+\CustomizeMathJax{\newcommand{\tcboxmath}[2][]{\boxed{#2}}}
+\CustomizeMathJax{\newcommand{\tcbhighmath}[2][]{\boxed{#2}}}
+\endinput
+%%
+%% End of file `lwarp-tcolorbox.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-tcolorbox.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-termcal.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-termcal.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-termcal.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -0,0 +1,44 @@
+%%
+%% This is file `lwarp-termcal.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `termcal')
+%% 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{termcal}% questionable date in the .sty file
+\xpatchcmd{\endcalendar}
+    {@{}}
+    {}
+    {}
+    {\LWR at patcherror{termcal}{endcalendar}}
+\xpatchcmd{\ca at doaday}
+    {\hbox to \hsize{\calprintdate\hfill\ifclassday\calprintclass\fi}}
+    {%
+        \calprintdate\hfill\ifclassday\calprintclass\fi%
+    }
+    {}
+    {\LWR at patcherror{termcal}{ca at doaday}}
+\xpatchcmd{\calday}
+    {&}
+    {\LWR at tabularampersand}
+    {}
+    {\LWR at patcherror{termcal}{calday}}
+
+\xpatchcmd{\calday}
+    {&}
+    {\LWR at tabularampersand}
+    {}
+    {\LWR at patcherror{termcal}{calday B}}
+\endinput
+%%
+%% End of file `lwarp-termcal.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-termcal.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-listof.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-listof.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-listof.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -0,0 +1,44 @@
+%%
+%% This is file `lwarp-thm-listof.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `thm-listof')
+%% 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{thm-listof}[2019/12/22]
+\xpatchcmd{\listoftheorems}
+    {%
+        \@xa\protected at edef\csname l@\thmt at envname\endcsname{%
+            \@nx\@dottedtocline{1}{1.5em}{\@nx\thmt at listnumwidth}%
+        }%
+    }
+    {%
+        \csdef{l@\thmt at envname}##1##2{\hypertocfloat{1}{figure}{lof}{##1}{##2}}%
+    }
+    {}
+    {\LWR at patcherror{thm-listof}{listoftheorems}}
+
+\xpatchcmd{\thmt at mklistcmd}
+    {%
+        \@xa\protected at edef\csname l@\thmt at envname\endcsname{%
+            \@nx\@dottedtocline{1}{1.5em}{\@nx\thmt at listnumwidth}%
+        }%
+    }
+    {%
+        \csdef{l@\thmt at envname}##1##2{\hypertocfloat{1}{figure}{lof}{##1}{##2}}%
+    }
+    {}
+    {\LWR at patcherror{thm-listof}{thmt at mklistcmd}}
+\endinput
+%%
+%% End of file `lwarp-thm-listof.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-listof.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-restate.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-restate.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-restate.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -0,0 +1,26 @@
+%%
+%% This is file `lwarp-thm-restate.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `thm-restate')
+%% 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{thm-restate}[2019/12/22]
+\xpatchcmd{\thmt at restatable}
+    {\@ifstar}
+    {\edef\LWR at thisthmstyle{#2}\@ifstar}
+    {}
+    {\LWR at patcherror{thm-restate}{thmt at restatable}}
+\endinput
+%%
+%% End of file `lwarp-thm-restate.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-restate.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-thmbox.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-thmbox.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-thmbox.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -0,0 +1,50 @@
+%%
+%% This is file `lwarp-thmbox.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `thmbox')
+%% 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{thmbox}[2005/04/24]
+\renewenvironment{thmbox}[2][]%
+    {%
+        \begin{BlockClass}{thmbox}
+        \begin{BlockClass}{thmboxtitle}
+        #2
+        \end{BlockClass}
+    }
+    {\end{BlockClass}}
+
+\renewenvironment{proof}[1][]
+    {%
+        \begin{BlockClass}{thmboxproof}%
+        \InlineClass{thmboxproofname}{\proofname\ #1\unskip\,:}
+    }
+    {%
+        \qquad\HTMLunicode{220E}% end of proof symbol
+        \end{BlockClass}
+    }
+
+\renewenvironment{example}[1][\examplename]%
+    {%
+        \begin{BlockClass}{thmboxexample}%
+        \InlineClass{thmboxexamplename}{#1\,:}
+    }
+    {\end{BlockClass}}
+
+\renewenvironment{leftbar}[1][]%
+    {\begin{BlockClass}{thmboxleftbar}}
+    {\end{BlockClass}}
+\endinput
+%%
+%% End of file `lwarp-thmbox.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-thmbox.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-varioref.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-varioref.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-varioref.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -0,0 +1,28 @@
+%%
+%% This is file `lwarp-varioref.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% lwarp.dtx  (with options: `varioref')
+%% 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{varioref}[2020/01/23]
+\def\reftextfaceafter {\unskip}%
+\def\reftextfacebefore{\unskip}%
+\def\reftextafter     {\unskip}%
+\def\reftextbefore    {\unskip}%
+\def\reftextcurrent   {\unskip}%
+\def\reftextfaraway#1{\unskip}%
+\def\reftextpagerange#1#2{\unskip}%
+\endinput
+%%
+%% End of file `lwarp-varioref.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-varioref.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-xfakebold.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-xfakebold.sty	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp-xfakebold.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -15,14 +15,15 @@
 %%   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{xfakebold}[2018/07/25]
-\let\LWR at orig@setBold\setBold
-\let\LWR at orig@unsetBold\unsetBold
-\renewcommand*{\setBold}{\booltrue{LWR at xfakebold}}
-\renewcommand*{\unsetBold}{\boolfalse{LWR at xfakebold}}
+\LWR at ProvidesPackagePass{xfakebold}[2020/06/24]
+\newcommand*{\LWR at HTML@setBold}{\booltrue{LWR at xfakebold}}
+\LWR at formatted{setBold}
 
+\newcommand*{\LWR at HTML@unsetBold}{\boolfalse{LWR at xfakebold}}
+\LWR at formatted{unsetBold}
+
 \renewcommand*{\LWR at applyxfakebold}{%
-    \ifbool{LWR at xfakebold}{\LWR at orig@setBold}{\LWR at orig@unsetBold}%
+    \ifbool{LWR at xfakebold}{\LWR at print@setBold}{\LWR at print@unsetBold}%
 }
 \begin{warpMathJax}
 \CustomizeMathJax{\newcommand{\setBold}[1][]{}}

Modified: trunk/Master/texmf-dist/tex/latex/lwarp/lwarp.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lwarp/lwarp.sty	2020-07-19 21:26:09 UTC (rev 55879)
+++ trunk/Master/texmf-dist/tex/latex/lwarp/lwarp.sty	2020-07-19 21:27:08 UTC (rev 55880)
@@ -17,7 +17,7 @@
 %% version 2005/12/01 or later.
 \NeedsTeXFormat{LaTeX2e}[1999/12/01]
 \ProvidesPackage{lwarp}
-    [2020/06/03 v0.87  Allows LaTeX to directly produce HTML5 output.]
+    [2020/07/19 v0.88  Allows LaTeX to directly produce HTML5 output.]
 
 
 
@@ -25,6 +25,7 @@
 
 
 
+
 \RequirePackage{iftex}[2019/11/07]
 \RequirePackage{ifpdf}
 \RequirePackage{ifptex}
@@ -106,7 +107,9 @@
 {%
     Package #1 is not supported\MessageBreak
     by lwarp's HTML conversion.\MessageBreak
-    Package(s) #2 may be useful instead%
+    Package(s)\MessageBreak
+    \space\space#2\MessageBreak
+    may be useful instead%
 }
 {%
     Package #1 might conflict with lwarp in some way,\MessageBreak
@@ -167,7 +170,6 @@
 \LWR at earlyloadnever{picinpar}{floatflt, wrapfig}
 \LWR at earlyloadnever{picins}{floatflt, wrapfig}
 \LWR at earlyloadnever{rplain}{fancyhdr}
-\LWR at earlyloadnever{shadethm}{mdframed}
 \LWR at earlyloadnever{si}{siunitx}
 \LWR at earlyloadnever{sistyle}{siunitx}
 \LWR at earlyloadnever{slashbox}{diagbox}
@@ -260,6 +262,7 @@
 \LWR at notmemoirloadafter{chngpage}
 \LWR at loadafter{cite}
 \LWR at loadafter{citeref}
+\LWR at loadafter{cleveref}
 \LWR at loadafter{cmdtrack}
 \LWR at loadafter{colonequals}
 \LWR at loadafter{color}
@@ -315,6 +318,7 @@
 \LWR at loadafter{fancyref}
 \LWR at loadafter{fancytabs}
 \LWR at loadafter{fancyvrb}
+\LWR at loadafter{fbox}
 \LWR at loadafter{fewerfloatpages}
 \LWR at loadafter{figcaps}
 \LWR at loadafter{figsize}
@@ -356,6 +360,7 @@
 \LWR at loadafter{gensymb}
 \LWR at loadafter{gentombow}
 \LWR at loadafter{ghsystem}
+\LWR at loadafter{gindex}
 \LWR at loadafter{glossaries}
 \LWR at loadafter{gmeometric}
 \LWR at loadafter{gloss}
@@ -580,13 +585,18 @@
 \LWR at loadafter{tablefootnote}
 \LWR at notmemoirloadafter{tabularx}
 \LWR at loadafter{tabulary}
+\LWR at loadafter{tagpdf}
 \LWR at loadafter{tascmac}
-\LWR at loadafter{tagpdf}
+\LWR at loadafter{tcolorbox}
+\LWR at loadafter{termcal}
 \LWR at loadafter{textarea}
 \LWR at loadafter{textfit}
 \LWR at loadafter{textpos}
 \LWR at loadafter{theorem}
 \LWR at loadafter{thinsp}
+\LWR at loadafter{thm-listof}
+\LWR at loadafter{thm-restate}
+\LWR at loadafter{thmbox}
 \LWR at loadafter{threadcol}
 \LWR at loadafter{threeparttable}
 \LWR at loadafter{threeparttablex}
@@ -621,7 +631,7 @@
 \LWR at loadafter{upref}
 \LWR at loadafter{url}
 \LWR at loadafter{uspace}
-\LWR at loadafter{varioref}% no lwarp package provided
+\LWR at loadafter{varioref}
 \LWR at notmemoirloadafter{verse}
 \LWR at loadafter{versonotes}
 \LWR at loadafter{vertbars}
@@ -784,6 +794,11 @@
 \long\def\LWR at secondoffour#1#2#3#4{#2}
 \long\def\LWR at thirdoffour#1#2#3#4{#3}
 \long\def\LWR at fourthoffour#1#2#3#4{#4}
+\newcounter{LWR at texboxdepth}
+\setcounter{LWR at texboxdepth}{0}
+\newcommand*{\LWR at maybe@orignewpage}{%
+    \ifnumgreater{\value{LWR at texboxdepth}}{0}{}{\LWR at orignewpage}%
+}
 \DeclareRobustCommand\LWR at gsavebox[1]{%
   \@ifnextchar(%)
     {\LWR@@gsavepicbox#1}{\@ifnextchar[{\LWR@@gsavebox#1}{\LWR at gsbox#1}}}%
@@ -817,6 +832,15 @@
   \fi
   #1%
 }
+\newcommand*{\LWR at LetLtxMacrocs}[2]{%
+    \expandafter\LetLtxMacro\csname #1\expandafter\endcsname%
+    \csname#2\endcsname%
+}
+\newcommand*{\LWR at absorbstar}[1]{%
+    \LWR at LetLtxMacrocs{LWR at origns@#1}{#1}%
+    \csdef{#1}{\@ifstar{\csuse{LWR at origns@#1}}{\csuse{LWR at origns@#1}}}
+    \expandafter\robustify\csname #1\endcsname
+}
 \let\LWRpercent\@percentchar
 \catcode`\$=12
 \def\LWRdollar{$}
@@ -876,26 +900,26 @@
 \boolfalse{warpingHTML}%
 \boolfalse{mathjax}%
 \DeclareVoidOption{warpprint}{%
-\PackageInfo{lwarp}{Using option 'warpprint'}
-\booltrue{warpingprint}%
-\boolfalse{warpingHTML}%
+    \PackageInfo{lwarp}{Using option 'warpprint'}
+    \booltrue{warpingprint}%
+    \boolfalse{warpingHTML}%
 }
 
 \DeclareVoidOption{warpHTML}{%
-\PackageInfo{lwarp}{Using option 'warpHTML'}%
-\booltrue{warpingHTML}%
-\boolfalse{warpingprint}%
+    \PackageInfo{lwarp}{Using option 'warpHTML'}%
+    \booltrue{warpingHTML}%
+    \boolfalse{warpingprint}%
 }
 
 \DeclareVoidOption{mathsvg}{%
-\PackageInfo{lwarp}{Using option 'mathsvg'}
-\boolfalse{mathjax}%
-\boolfalse{LWR at origmathjax}%
+    \PackageInfo{lwarp}{Using option 'mathsvg'}
+    \boolfalse{mathjax}%
+    \boolfalse{LWR at origmathjax}%
 }
 \DeclareVoidOption{mathjax}{%
-\PackageInfo{lwarp}{Using option 'mathjax'}
-\booltrue{mathjax}%
-\booltrue{LWR at origmathjax}%
+    \PackageInfo{lwarp}{Using option 'mathjax'}
+    \booltrue{mathjax}%
+    \booltrue{LWR at origmathjax}%
 }
 
 
@@ -913,6 +937,9 @@
 
 \DeclareStringOption[utf8]{xindyCodepage}
 
+
+\DeclareStringOption[]{xindexConfig}
+
 \DeclareStringOption[UTF-8]{pdftotextEnc}
 
 \newbool{LWR at creatinglwarpmk}
@@ -919,13 +946,13 @@
 \boolfalse{LWR at creatinglwarpmk}
 
 \DeclareVoidOption{lwarpmk}{
-\PackageInfo{lwarp}{Using option 'lwarpmk'}
-\booltrue{LWR at creatinglwarpmk}
+    \PackageInfo{lwarp}{Using option 'lwarpmk'}
+    \booltrue{LWR at creatinglwarpmk}
 }
 
 \DeclareVoidOption{OSWindows}{
-\PackageInfo{lwarp}{Using option 'OSWindows'}
-\LWR at setOSWindows
+    \PackageInfo{lwarp}{Using option 'OSWindows'}
+    \LWR at setOSWindows
 }
 
 \DeclareStringOption[]{HomeHTMLFilename}
@@ -946,6 +973,10 @@
 
 \DeclareBoolOption[false]{xindy}
 
+\DeclareBoolOption[false]{xindex}
+
+\DeclareStringOption[cref]{IndexRef}
+
 \DeclareStringOption[makeglossaries]{GlossaryCmd}
 
 \DeclareBoolOption[false]{latexmk}
@@ -996,6 +1027,20 @@
             \jobname.idx%
         }
     }{}
+    \ifbool{LWR at xindex}{
+        \ifdefvoid{\LWR at xindexConfig}{
+            \renewcommand{\LWR at PrintIndexCmd}{%
+                xindex
+                \jobname.idx%
+            }
+        }{
+            \renewcommand{\LWR at PrintIndexCmd}{%
+                xindex
+                -c \LWR at xindexConfig \space
+                \jobname.idx%
+            }
+        }
+    }{}
 }{}
 
 \ifdefempty{\LWR at HTMLIndexCmd}{
@@ -1011,6 +1056,20 @@
             \jobname_html.idx%
         }
     }{}
+    \ifbool{LWR at xindex}{
+        \ifdefvoid{\LWR at xindexConfig}{
+            \renewcommand{\LWR at HTMLIndexCmd}{%
+                xindex
+                \jobname_html.idx%
+            }
+        }{
+            \renewcommand{\LWR at HTMLIndexCmd}{%
+                xindex
+                -c \LWR at xindexConfig \space
+                \jobname_html.idx%
+            }
+        }
+    }{}
 }{}
 
 \ifdefempty{\LWR at LatexmkIndexCmd}{
@@ -1025,6 +1084,18 @@
             -C \LWR at xindyCodepage%
         }
     }{}
+    \ifbool{LWR at xindex}{
+        \ifdefvoid{\LWR at xindexConfig}{
+            \renewcommand{\LWR at LatexmkIndexCmd}{%
+                xindex
+            }
+        }{
+            \renewcommand{\LWR at LatexmkIndexCmd}{%
+                xindex
+                -c \LWR at xindexConfig
+            }
+        }
+    }{}
 }{}
 \newcommand{\warpprintonly}[1]{\ifbool{warpingprint}{#1}{}}
 \newcommand{\warpHTMLonly}[1]{\ifbool{warpingHTML}{#1}{}}
@@ -1292,7 +1363,6 @@
 \LWR at checkloadnever{#1}{picinpar}{floatflt, wrapfig}
 \LWR at checkloadnever{#1}{picins}{floatflt, wrapfig}
 \LWR at checkloadnever{#1}{rplain}{fancyhdr}
-\LWR at checkloadnever{#1}{shadethm}{mdframed}
 \LWR at checkloadnever{#1}{si}{siunitx}
 \LWR at checkloadnever{#1}{sistyle}{siunitx}
 \LWR at checkloadnever{#1}{slashbox}{diagbox}
@@ -1471,7 +1541,7 @@
 \immediate\openout\LWR at quickfile #1_html_inc.tex% lwarp
 \immediate\write\LWR at quickfile{\string\input{#1.tex}}% lwarp
 \immediate\closeout\LWR at quickfile% lwarp
-\LWR at orignewpage% changed from clearpage
+\LWR at maybe@orignewpage% changed from clearpage
 \if at filesw
     \immediate\write\@mainaux{\string\@input{#1_html_inc.aux}}% changed
 \fi
@@ -1489,7 +1559,7 @@
         \immediate\write\@partaux{\relax}%
     \fi
     \@input@{#1_html_inc.tex}% changed
-    \LWR at orignewpage% changed from clearpage
+    \LWR at maybe@orignewpage% changed from clearpage
     \@writeckpt{#1}%
     \if at filesw
         \immediate\closeout\@partaux
@@ -1733,6 +1803,7 @@
 \let\LWR at origbigskip\bigskip
 
 \let\LWR at origtextellipsis\textellipsis
+\let\LWR at origvdots\vdots
 \let\LWR at orig@textquotedbl\textquotedbl
 
 \LetLtxMacro\LWR at origttfamily\ttfamily
@@ -1907,7 +1978,7 @@
 \newcommand*{\LWR at latexmkcmd}[1]{%
     latexmk  \space \LWR at shellescapecmd \space  #1 \space
     -recorder \space
-    \LWR at latexmkvar{makeindex}{\LWR at LatexmkIndexCmd}
+    \LWR at latexmkvar{makeindex}{\LWR at LatexmkIndexCmd}%
 }
 \newcommand*{\LWR at latexmkdvipdfm}[1]{%
     -pdfdvi \space
@@ -2131,6 +2202,7 @@
 span.indexitem {margin-left: 0em}
 span.indexsubitem {margin-left: 2em}
 span.indexsubsubitem {margin-left: 4em}
+div.indexheading {margin-top: 2ex ; font-weight: bold}
 
 div.hidden, span.hidden { display: none ; }
 
@@ -2233,6 +2305,8 @@
     text-decoration-skip: auto ;
 }
 
+div.hrule { border-top: 1px solid silver }
+
 /* for vertical text: */
 div.verticalrl { writing-mode: vertical-rl }
 div.horizontaltb { writing-mode: horizontal-tb }
@@ -2552,7 +2626,7 @@
 }
 
 section.textbody div.footnotes{
-    margin: 3ex 2em 0ex 2em ;
+    margin: 3ex 2em .5ex 2em ;
     border-bottom: 2px solid silver ;
 }
 
@@ -2794,22 +2868,35 @@
   display: inline-block ;
 }
 
-.mdframed {
+/* mdframed, tcolorbox packages */
+.mdframed, .tcolorbox {
     padding: 0ex ;
     margin: 2ex 0em 2ex 0em ;
+    border: 1px solid black ;
 }
 
-.mdframed p { padding: 0ex .5em 0ex .5em ; }
+.tcolorbox {
+    border-radius: 10pt ;
+    margin: 2ex 1em 2ex 1em ;
+}
 
-.mdframed dl { padding: 1ex .5em 0ex .5em ; }
+.mdframed p, .tcolorbox p { padding: 0ex .5em 0ex .5em ; }
 
-.mdframedtitle {
+.mdframed dl, .tcolorbox dl { padding: 1ex .5em 0ex .5em ; }
+
+.mdframedtitle, .tcolorboxtitle {
     padding: .5ex 0pt 0pt 0pt ;
     border-radius: 10pt 10pt 0pt 0pt ;
     display: block ;
     margin-bottom: 1ex ;
+    border-bottom: 1px solid silver ;
 }
 
+.tcolorboxsubtitle .tcolorbox {
+    margin: 2ex 0em 2ex 0em ;
+    border-radius: 0pt ;
+}
+
 .mdframedsubtitle {
     display: block ;
 }
@@ -3426,9 +3513,14 @@
 
 /* Native LaTeX theorems: */
 
-.theoremcontents { font-style: italic; margin-top: 3ex ; margin-bottom: 3ex ; }
-.theoremlabel { font-style: normal; font-weight: bold ; margin-right: .5em ; }
+.theoremcontents {
+    font-style: italic; margin-top: 3ex ; margin-bottom: 3ex ;
+}
 
+.theoremlabel {
+    font-style: normal; font-weight: bold ; margin-right: .5em ;
+}
+
 /* theorem, amsthm, and ntheorem packages */
 
 span.theoremheader,
@@ -3496,6 +3588,33 @@
 
 span.amsthmnoteremark {}
 
+/* thmbox */
+
+.thmbox {
+    font-style: italic; margin-top: 3ex ; margin-bottom: 3ex ;
+    border: 1px solid gray ;
+    padding: 1ex ;
+}
+
+.thmboxtitle {
+    font-style: normal; font-weight: bold ; margin-right: .5em ;
+    border-bottom: 1px solid gray ;
+}
+
+span.thmboxproofname, span.thmboxexamplename {
+    font-weight: bold ;
+}
+
+div.thmboxproof, div.thmboxexample {
+    font-size: 0.85em ;
+    margin: 2ex ;
+}
+
+div.thmboxleftbar {
+    border-left: 2px solid black ;
+    padding-left: 1em ;
+}
+
 /* For the backnaur package: */
 div.backnaur {
     display: block ;
@@ -4333,7 +4452,7 @@
 
 -- Copyright 2016-2020 Brian Dunn
 
-printversion = "v0.87"
+printversion = "v0.88"
 requiredconfversion = "2" -- also at *lwarpmk.conf
 
 function printhelp ()
@@ -4367,6 +4486,7 @@
     *_html.pdf, *_html.html, *_html.sidetoc
 lwarpmk cleanall [-p project]: Remove auxiliary files, project.pdf, *.html
 lwarpmk cleanlimages: Removes all images from the "lateximages" directory.
+lwarpmk -v: Print the version number.
 lwarpmk -h: Print this help message.
 lwarpmk --help: Print this help message.
 
@@ -5222,6 +5342,12 @@
 elseif (arg[1] == nil) then
 printhelp ()
 
+-- lwarpmk -v:
+
+elseif (arg[1] == "-v" ) then
+-- The version number has already been printed
+-- by the lwarpmk intro.
+
 -- lwarpmk -h or lwarpmk --help :
 
 elseif (arg[1] == "-h" ) or (arg[1] == "--help") then
@@ -5661,7 +5787,7 @@
 \newcommand{\LWR at forcenewpage}{%
 \LWR at traceinfo{LWR at forcenewpage}%
 \ifinner\else%
-\LWR at stoppars\LWR at orignewpage\LWR at startpars%
+\LWR at stoppars\LWR at maybe@orignewpage\LWR at startpars%
 \fi%
 }
 \renewcommand*{\pagestyle}[1]{}
@@ -6877,7 +7003,7 @@
 \LWR at htmltag{/body}\LWR at orignewline
 \LWR at htmltag{/html}\LWR at orignewline
 \LWR at traceinfo{LWR at newhtmlfile: about to LWR at orignewpage}
-\LWR at orignewpage
+\LWR at maybe@orignewpage
 \addtocounter{LWR at htmlfilenumber}{1}%
 \addtocounter{LWR at htmlseqfilenumber}{1}%
 \ifbool{FileSectionNames}%
@@ -7019,6 +7145,9 @@
 \let\@chapcntformat\@seccntformat
 \let\@partcntformat\@seccntformat
 \newcommand*{\@partnameformat}{\LWR at isolate{\partname}~}%
+\newcommand*{\LWR at printchaptername}{%
+    \ifdefvoid{\chaptername}{}{\chaptername~}%
+}
 \newcounter{LWR at currentautosec}
 \setcounter{LWR at currentautosec}{1}
 \DeclareDocumentCommand{\LWR at section}{m m m m}{%
@@ -7061,7 +7190,7 @@
 }% new file
 {% not new file
     \LWR at traceinfo{LWR at section: not a new HTML file, about to LWR at orignewpage}%
-    \LWR at orignewpage%
+    \LWR at maybe@orignewpage%
 }% not new file
 
 \IfValueT{#3}{%
@@ -7154,7 +7283,10 @@
                 {\protect\LWR at sectionnumber{\@partcntformat{#4}}}%
                 {%
                     \ifstrequal{#4}{chapter}%
-                        {\protect\LWR at sectionnumber{\@chapcntformat{#4}}}%
+                        {%
+                            \LWR at printchaptername%
+                            \protect\LWR at sectionnumber{\@chapcntformat{#4}}%
+                        }%
                         {\protect\LWR at sectionnumber{\@seccntformat{#4}}}%
                 }%
             }%
@@ -7507,7 +7639,7 @@
 \LWR at stoppars% final stop of all paragraphs
 \LWR at htmltag{/body}\LWR at orignewline
 \LWR at htmltag{/html}\LWR at orignewline
-\LWR at orignewpage
+\LWR at maybe@orignewpage
 }
 
 \xpatchcmd{\enddocument}
@@ -10077,6 +10209,7 @@
     \LWR at htmltag{/a}%
 }
 
+\LWR at absorbstar{ref}%
 \NewDocumentCommand{\LWR at HTML@ref}{s m}{%
     \LWR at traceinfo{LWR at HTML@ref !#2!}%
     \IfBooleanTF{#1}%
@@ -10085,10 +10218,8 @@
 }
 
 \LWR at formatted{ref}
-\NewDocumentCommand{\LWR at ref@ignorestar}{s m}{%
-    \LWR at print@ref{#2}%
-}
-
+\CustomizeMathJax{\let\LWRref\ref}
+\CustomizeMathJax{\renewcommand{\ref}{\ifstar\LWRref\LWRref}}
 \newcommand*{\pagerefPageFor}{see }
 \NewDocumentCommand{\LWR at new@pageref}{s m}{%
     \IfBooleanTF{#1}%
@@ -10304,10 +10435,17 @@
 
 \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%
+    \ifbool{LWR at doingapar}%
+    {%
+        \LWR at htmltag{a id="\LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}" }%
+            \LWR at htmltag{/a }%
+    }%
+    {%
+        \LWR at stoppars%
+        \LWR at htmltag{a id="\LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}" }%
+            \LWR at htmltag{/a }%
+        \LWR at startpars%
+    }%
 }
 
 \newcommand*{\LWR at newautoidanchor}{%
@@ -10713,6 +10851,9 @@
 \newcounter{LWR at autoglossary}
 \setcounter{LWR at autoglossary}{0}
 
+\newcommand*{\IndexPageSeparator}{, }
+\newcommand*{\IndexRangeSeparator}{--}
+
 \@ifundefined{chapter}
     {\newcommand*{\LWR at indexsection}[1]{\section*{#1}}}
     {\newcommand*{\LWR at indexsection}[1]{\chapter*{#1}}}
@@ -10743,11 +10884,50 @@
     \InlineClass{indexsubsubitem}{\LWR at htmlcomment{}}%
 }
 
+\NewDocumentCommand{\LWR at xindex@modifyentry}{>{\SplitArgument{1}{|}}m}
+    {\LWR at xindex@modifyentrysub#1}
+\newcommand*{\LWR at xindex@modifyentrysub}[2]{%
+    \edef\LWR at tempone{#1}%
+    \edef\LWR at temptwo{#2}%
+    \IfValueTF{#2}{%
+        \ifx#2(%
+            \appto\LWR at tempone{|(}%
+        \else%
+            \ifx#2)%
+                \appto\LWR at tempone{|)}%
+            \else%
+                \appto\LWR at tempone{%
+                    |hyperindexformat\LWRleftbrace%
+                    \LWRbackslash#2%
+                    \LWRrightbrace%
+                }%
+            \fi%
+        \fi%
+    }%
+    {}%
+}
+
+\newbool{LWR at xindex@tricked}
+\boolfalse{LWR at xindex@tricked}
+
 \def\LWR at wrindex#1{%
+    \ifbool{LWR at xindex}{%
+        \ifbool{LWR at xindex@tricked}{}{%
+            \protected at write\@indexfile{}%
+            {%
+                \LWRpercent\space hyperpage\LWRrightbrace%
+                \LWRpercent\space trick xindex to assume hyperref%
+            }%
+            \global\booltrue{LWR at xindex@tricked}%
+        }%
+        \LWR at xindex@modifyentry{#1}%
+    }{%
+        \def\LWR at tempone{#1}%
+    }%
     \addtocounter{LWR at autoindex}{1}%
-    \LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%
+    \label{LWRindex-\arabic{LWR at autoindex}}%
     \protected at write\@indexfile{}%
-    {\string\indexentry{#1}{\arabic{LWR at autoindex}}}%
+    {\string\indexentry{\LWR at tempone}{\arabic{LWR at autoindex}}}%
     \endgroup%
     \@esphack%
 }
@@ -10765,14 +10945,119 @@
     \@esphack%
 }
 
-\newcommand*{\LWR at indexnameref}[1]{\nameref{LWRindex-#1}}
+\newcommand*{\LWR at indexnameref@anonref}[1]{%
+    \LWR at startref{LWRindex-#1}%
+    (*)%
+    \LWR at htmltag{/a}%
+}
 
-\newrobustcmd{\LWR at doindexentry}[1]{%
+\newcommand*{\LWR at indexnameref@ref}[1]{%
+    \edef\LWR at thisref{\csuse{r at LWRindex-#1}}%
+    \ifdefvoid{\LWR at thisref}{}{%
+        \edef\LWR at thisref{\expandafter\@firstoftwo\LWR at thisref}%
+        \ifdefvoid{\LWR at thisref}%
+            {\LWR at indexnameref@anonref{#1}}%
+            {\ref{LWRindex-#1}}%
+    }%
+}
+
+\newcommand*{\LWR at indexnameref@refnameref}[1]{%
+    \edef\LWR at thisref{\csuse{r at LWRindex-#1}}%
+    \ifdefvoid{\LWR at thisref}{}{%
+        \edef\LWR at thisref{\expandafter\@firstoftwo\LWR at thisref}%
+        \ifdefvoid{\LWR at thisref}{}{%
+            \ifdefstring{\LWR at thisref}{(*)}%
+                {}%
+                {\ref{LWRindex-#1} }% space
+        }%
+    }%
+    \nameref{LWRindex-#1}%
+}
+
+\newcommand*{\LWR at indexnameref@cref}[1]{%
+    \edef\LWR at thisref{\csuse{r at LWRindex-#1}}%
+    \ifdefvoid{\LWR at thisref}{%
+        \nameref{LWRindex-#1}%
+    }{%
+        \edef\LWR at thisref{\expandafter\@firstoftwo\LWR at thisref}%
+        \ifdefvoid{\LWR at thisref}{%
+            \nameref{LWRindex-#1}%
+        }{%
+            \ifdefstring{\LWR at thisref}{(*)}{%
+                \LWR at indexnameref@anonref{#1}%
+            }{%
+                \cref{LWRindex-#1}%
+            }%
+        }%
+    }%
+}
+
+\newcommand*{\LWR at indexnameref@crefnameref}[1]{%
+    \edef\LWR at thisref{\csuse{r at LWRindex-#1}}%
+    \ifdefvoid{\LWR at thisref}%
+        {}%
+        {%
+            \edef\LWR at thisref{\expandafter\@firstoftwo\LWR at thisref}%
+            \ifdefvoid{\LWR at thisref}%
+                {}%
+                {%
+                    \ifdefstring{\LWR at thisref}{(*)}%
+                        {}%
+                        {\cref{LWRindex-#1}} % space
+                }%
+        }%
+    \nameref{LWRindex-#1}%
+}
+
+\newcommand*{\LWR at indexnameref}[1]{%
+    {% group
+        \ifdef{\caption at xref}{%
+            \renewcommand*{\caption at xref}[2]{(*)}%
+        }{}%
+        \ifdefstring{\LWR at IndexRef}{ref}{%
+            \LWR at indexnameref@ref{#1}%
+        }{%
+        \ifdefstring{\LWR at IndexRef}{nameref}{%
+            \nameref{LWRindex-#1}%
+        }{%
+        \ifdefstring{\LWR at IndexRef}{refnameref}{%
+            \LWR at indexnameref@refnameref{#1}%
+        }{%
+        \ifdefstring{\LWR at IndexRef}{cref}{%
+            \LWR at indexnameref@cref{#1}%
+        }{%
+        \ifdefstring{\LWR at IndexRef}{crefnameref}{%
+            \LWR at indexnameref@crefnameref{#1}%
+        }{%
+        \ifdefstring{\LWR at IndexRef}{autoref}{%
+            \LWR at indexnameref@cref{#1}%
+        }{% text string
+            \LWR at startref{LWRindex-#1}%
+            \LWR at IndexRef%
+            \LWR at htmltag{/a}%
+        }}}}}}%
+    }% group
+}
+
+\newrobustcmd{\LWR at doindexentrysubsub}[2]{%
     \IfInteger{#1}%
         {\LWR at indexnameref{#1}}%
         {#1}%
+    \IfValueT{#2}{%
+        \IndexRangeSeparator%
+        \IfInteger{#2}%
+            {\LWR at indexnameref{#2}}%
+            {#2}%
+    }%
 }
+\NewDocumentCommand{\LWR at doindexentrysub}{m >{\SplitArgument{1}{#1}}m}
+    {\LWR at doindexentrysubsub#2}
 
+\newcommand*{\LWR at doindexentry}[1]{%
+    \relax% required
+    \expandafter\LWR at doindexentrysub\expandafter{\IndexRangeSeparator}{#1}%
+}
+
 \newcommand{\LWR at hyperindexrefnullified}{%
     \renewrobustcmd{\emph}[1]{\LWR at HTML@emph{\LWR at doindexentry{##1}}}%
     \renewrobustcmd{\textbf}[1]{\LWR at HTML@textbf{\LWR at doindexentry{##1}}}%
@@ -10789,8 +11074,36 @@
     \renewrobustcmd{\textsl}[1]{\LWR at HTML@textsl{\LWR at doindexentry{##1}}}%
 }
 
-\newcommand{\hyperindexref}[1]{%
-    \def\LWR at tempone{#1}%
+\newcommand*{\hyperindexref}[1]{%
+    \relax% required
+    \expandafter\LWR at hyperindexref@comma\expandafter{\IndexPageSeparator}{#1}%
+}
+\NewDocumentCommand{\LWR at hyperindexref@comma}
+    {m >{\SplitList{#1}} m}
+    {%
+        \def\LWR at hyperindexref@thiscomma{}%
+        \def\LWR at hyperindexref@nextcomma{#1}%
+        \ProcessList{#2}\LWR at hyperindexref@@comma%
+    }
+\newcommand*{\LWR at hyperindexref@@comma}[1]{%
+    \LWR at hyperindexref@thiscomma%
+    \renewcommand{\LWR at hyperindexref@thiscomma}{\LWR at hyperindexref@nextcomma}%
+    \expandafter\LWR at hyperindexref@range\expandafter{\IndexRangeSeparator}{#1}%
+}
+\NewDocumentCommand{\LWR at hyperindexref@range}
+    {m >{\SplitArgument{1}{#1}} m}
+    {\LWR at hyperindexrefsub#2}
+
+\newcommand*{\LWR at hyperindexrefsub}[2]{%
+    \LWR at hyperindexrefsubtwo{#1}%
+    \IfValueT{#2}{%
+        \IndexRangeSeparator%
+        \LWR at hyperindexrefsubtwo{#2}%
+    }%
+}
+
+\newcommand*{\LWR at hyperindexrefsubtwo}[1]{%
+    \edef\LWR at tempone{#1}%
     \IfBeginWith{\LWR at tempone}{ }{%
         \StrGobbleLeft{\LWR at tempone}{1}[\LWR at tempone]%
     }{}%
@@ -10804,6 +11117,14 @@
         }%
 }
 
+\LetLtxMacro\hyperpage\hyperindexref
+
+\def\nohyperpage#1{}
+
+\def\hyperindexformat#1#2{%
+    #1{\hyperpage{#2}}%
+}%
+
 \end{warpHTML}
 
 \begin{warpprint}
@@ -10840,8 +11161,8 @@
 
 \end{warpHTML}
 
-
 \begin{warpHTML}
+\newcommand*{\LWR at restoreMathJaxformatting}{}
 
 \newcommand*{\LWR at restoreorigformatting}{%
     \LWR at traceinfo{LWR at restoreorigformatting}%
@@ -10858,6 +11179,7 @@
     \let\thinspace\LWR at origthinspace% disable HTML short unbreakable space
     \let\negthinspace\LWR at orignegthinspace% disable HTML negative short unbreakable space
     \let\textellipsis\LWR at origtextellipsis%
+    \let\vdots\LWR at origvdots%
     \let\textless\LWR at origtextless%
     \let\textgreater\LWR at origtextgreater%
     \let\&\LWR at origampersand%
@@ -10884,6 +11206,9 @@
     \LWR at restoreorigaccents%
     \LWR at restoreoriglists%
     \LWR at FBcancel%
+    \ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
+        {\LWR at restoreMathJaxformatting}%
+        {}%
 }
 \end{warpHTML}
 \begin{warpHTML}
@@ -11925,7 +12250,7 @@
     \LWR at htmlopencomment%
      \addtocounter{LWR at lateximagedepth}{1}%
     \LWR at traceinfo{lateximage: about to create a new page}%
-    \LWR at orignewpage%
+    \LWR at maybe@orignewpage%
     \LWR at traceinfo{lateximage: about to create minipage}%
     \ifdimless{\linewidth}{6in}{%
         \LWR at print@minipage{\linewidth}%
@@ -11972,7 +12297,7 @@
 {% end of outer-most lateximage
 \LWR at traceinfo{lateximage: ending outer-most lateximage}%
     \endLWR at print@minipage%
-    \LWR at orignewpage%
+    \LWR at maybe@orignewpage%
     \LWR at print@vspace*{.5\baselineskip}%
     \LWR at htmlclosecomment%
     \LWR at traceinfo{lateximage: The page after the image is \arabic{page}}%
@@ -12261,117 +12586,21 @@
 
 \end{warpprint}
 
+\begin{warpHTML}
 
-
-
-\begin{warpHTML}
 \AtEndPreamble{
     \RequirePackage{cleveref}
 }
-\AfterEndPreamble{
-\LWR at traceinfo{Patching cleveref.}
 
-\def\LWR at orig@@@setcref#1#2{\cref at getlabel{#2}{\@templabel}#1{\@templabel}{}{}}%
+\end{warpHTML}
+\begin{warpHTML}
 
-\ifdefequal{\@@setcref}{\LWR at orig@@@setcref}{% before v0.21
-    \renewcommand*{\@@setcref}[2]{#1{\ref{#2}}{}{}}
-}{
-    \ifdefequal{\@@@setcref}{\LWR at orig@@@setcref}{% as of v0.21
-        \renewcommand*{\@@@setcref}[2]{%
-            #1{\ref{#2}}{}{}}
-    }{
-        \PackageWarning{lwarp-cleveref}{
-            Unknown version of cleveref.
-            \protect\cref\space will fail.
-        }%
-    }
-}
-
-\def\LWR at orig@@@setcrefrange#1#2#3{%
-  \cref at getlabel{#2}{\@labela}%
-  \cref at getlabel{#3}{\@labelb}%
-  #1{\@labela}{\@labelb}{}{}{}{}}%
-
-\ifdefequal{\@@setcrefrange}{\LWR at orig@@@setcrefrange}{
-    \renewcommand{\@@setcrefrange}[3]{%
-        #1{\ref{#2}}{\ref{#3}}{}{}{}{}%
-    }
-}{
-    \ifdefequal{\@@@setcrefrange}{\LWR at orig@@@setcrefrange}{
-        \renewcommand{\@@@setcrefrange}[3]{%
-            #1{\ref{#2}}{\ref{#3}}{}{}{}{}%
-        }
-    }{
-        \PackageWarning{lwarp-cleveref}{
-            Unknown version of cleveref.
-            \protect\crefrange\space will fail.
-        }
-    }
-}
-
-
-\newcommand*{\cpagerefFor}{for}
-
-\def\LWR at orig@@setcpageref#1#2{% before v0.21
-  \cref at getpageref{#2}{\@temppage}#1{\@temppage}{}{}}%
-
-\def\LWR at orig@@@setcpageref#1#2{% as of v0.21
-  \cpageref at getlabel{#2}{\@temppage}#1{\@temppage}{}{}}%
-
-\ifdefequal{\@@setcpageref}{\LWR at orig@@setcpageref}{
-    \renewcommand*{\@@setcpageref}[2]{%
-        #1{\cpagerefFor\ \cref{#2}}{}{}%
-    }
-}{
-    \ifdefequal{\@@@setcpageref}{\LWR at orig@@@setcpageref}{
-        \renewcommand*{\@@@setcpageref}[2]{%
-            #1{\cpagerefFor\ \cref{#2}}{}{}%
-        }
-    }
-    {
-        \PackageWarning{lwarp-cleveref}{
-            Unknown version of cleveref.
-            \protect\cpageref\space will fail.
-        }
-    }
-}
-
-
-\def\LWR at orig@@setcpagerefrange#1#2#3{% before v0.21
-  \cref at getpageref{#2}{\@pagea}%
-  \cref at getpageref{#3}{\@pageb}%
-  #1{\@pagea}{\@pageb}{}{}{}{}}%
-
-\def\LWR at orig@@@setcpagerefrange#1#2#3{% as of v0.21
-  \cpageref at getlabel{#2}{\@pagea}%
-  \cpageref at getlabel{#3}{\@pageb}%
-  #1{\@pagea}{\@pageb}{}{}{}{}}%
-
-\ifdefequal{\@@setcpagerefrange}{\LWR at orig@@setcpagerefrange}{
-    \renewcommand*{\@@setcpagerefrange}[3]{%
-        #1{\cpagerefFor\ \cref{#2}}{\cref{#3}}{}{}{}{}%
-    }
-}{
-    \ifdefequal{\@@@setcpagerefrange}{\LWR at orig@@@setcpagerefrange}{
-        \renewcommand*{\@@@setcpagerefrange}[3]{%
-            #1{\cpagerefFor\ \cref{#2}}{\cref{#3}}{}{}{}{}%
-        }
-    }
-    {
-        \PackageWarning{lwarp-cleveref}{
-            Unknown version of cleveref.
-            \protect\cpagerefrange\space will fail.
-        }
-    }
-}
-
-}% AfterEndPreamble
-
 \LetLtxMacro\LWR at orig@label\label% includes memoir, before cleveref
 \LetLtxMacro\label\LWR at new@label
 
 \LetLtxMacro\LWR at orig@pageref\pageref
 \LetLtxMacro\pageref\LWR at new@pageref
+
 \end{warpHTML}
 
 
@@ -12392,7 +12621,7 @@
 \setcounter{LWR at virtualpagedepth}{0}
 \NewDocumentEnvironment{LWR at setvirtualpage}{s O{1}}{%
     \ifnumequal{\value{LWR at virtualpagedepth}}{0}{%
-        \IfBooleanT{#1}{\LWR at orignewpage}%
+        \IfBooleanT{#1}{\LWR at maybe@orignewpage}%
         \setlength{\linewidth}{6in/#2}%
         \setlength{\textwidth}{6in}%
         \setlength{\textheight}{9in}%
@@ -13082,6 +13311,7 @@
 \renewrobustcmd*{\negthinspace}{\HTMLunicode{202f}}    % HTML thin non-breakable space
 \renewrobustcmd*{~}{\HTMLentity{nbsp}}
 \renewrobustcmd*{\textellipsis}{\HTMLunicode{2026}}
+\renewrobustcmd*{\vdots}{\HTMLunicode{22EE}}
 }
 \newcommand*{\LWR at font@size}{normalsize}
 
@@ -13125,7 +13355,24 @@
 \newcommand*{\LWR at HTML@hfill}{\qquad}
 \LWR at formatted{hfill}
 
-\newcommand*{\LWR at HTML@hrulefill}{\rule{1in}{1pt}}
+\newcommand*{\LWR at HTML@hrulefill}{%
+    \ifbool{LWR at doingapar}%
+        {\rule{1in}{1pt}}%
+        {%
+            \LWR at findcurrenttextcolor%
+            \ifdefstring{\LWR at tempcolor}{000000}%
+            {%
+                \begin{BlockClass}{hrule}%
+                \end{BlockClass}%
+            }%
+            {%
+                \begin{BlockClass}[%
+                    border-top: 1px solid \LWR at origpound\LWR at tempcolor % space
+                ]{hrule}%
+                \end{BlockClass}%
+            }%
+        }%
+}%
 \LWR at formatted{hrulefill}
 
 \newcommand*{\LWR at HTML@dotfill}{\dots}
@@ -13473,6 +13720,7 @@
             \quad%
         }
     }
+    \renewcommand*{\LWR at printchaptername}{}
     \renewcommand{\thepart}{\@Roman\c at part}
     \@ifundefined{chapter}{
         \renewcommand{\thesection}{\@arabic\c at section}
@@ -13531,6 +13779,8 @@
             \LWR at isolate{\CTEX at chaptername}~%
             \CTEX at chapter@aftername%
         }%
+
+        \renewcommand*{\LWR at printchaptername}{}
     }{}
 }
 \end{warpHTML}



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