texlive[57791] branches/branch2020: lwarp (18feb21)
commits+karl at tug.org
commits+karl at tug.org
Thu Feb 18 23:20:50 CET 2021
Revision: 57791
http://tug.org/svn/texlive?view=revision&revision=57791
Author: karl
Date: 2021-02-18 23:20:50 +0100 (Thu, 18 Feb 2021)
Log Message:
-----------
lwarp (18feb21)
Modified Paths:
--------------
branches/branch2020/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua
branches/branch2020/Master/texmf-dist/doc/latex/lwarp/README.txt
branches/branch2020/Master/texmf-dist/doc/latex/lwarp/lwarp.pdf
branches/branch2020/Master/texmf-dist/scripts/lwarp/lwarpmk.lua
branches/branch2020/Master/texmf-dist/source/latex/lwarp/lwarp.dtx
branches/branch2020/Master/texmf-dist/source/latex/lwarp/lwarp.ins
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-SIunits.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-abstract.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-accessibility.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-acro.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-adjmulticol.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-afterpage.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithm2e.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-algorithmicx.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-alltt.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-amsmath.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-amsthm.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-atbegshi.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-attachfile.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-attachfile2.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-authblk.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-backnaur.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-backref.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-booktabs.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage2e.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-braket.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-breakurl.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-cancel.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-caption.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-centernot.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-changes.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-chemgreek.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-colonequals.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-colortbl.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-multimedia.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-ctable.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-easy-todo.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-econometrics.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-ed.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-embrac.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-enumitem.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epigraph.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epsfig.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epstopdf-base.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epstopdf.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-errata.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-everyshi.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fancybox.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyhdr.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyref.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fancyvrb.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fixme.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-float.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-floatflt.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-floatrow.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fontaxes.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-forest.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-glossaries.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-graphics.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-graphicx.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hang.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-idxlayout.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-imakeidx.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-index.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-intopdf.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-karnaugh-map.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-keyfloat.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-lettrine.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-lineno.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-listings.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-longtable.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-luatodonotes.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-lyluatex.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-makeidx.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathdots.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathfixs.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathtools.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mdframed.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mhchem.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mismath.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-moreverb.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-multicol.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-multiobjective.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-multirow.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-nccmath.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-nfssext-cfr.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-nicefrac.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-nowidow.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-ntheorem.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-parcolumns.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-parnotes.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-komascript.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-patch-memoir.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-pdfrender.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-physics.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-pstricks.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-quoting.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-realscripts.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-rmathbr.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-rotating.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-rotfloat.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-schemata.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-scrextend.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-sidenotes.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-siunitx.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-slantsc.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-splitidx.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-statex2.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-statmath.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-steinmetz.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-struktex.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-subcaption.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-subfig.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-svg.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-textcomp.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-textpos.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-tikz.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-titlesec.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-titling.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-tocloft.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-todonotes.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-trivfloat.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-unicode-math.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-units.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-url.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-verse.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-witharrows.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-wrapfig.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-xcolor.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-xfakebold.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-xfrac.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-xpinyin.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp.sty
Added Paths:
-----------
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-accents.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-amscdx.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-boxedminipage.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-bussproofs.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-caption3.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-citeref.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-cleveref.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-cmbright.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-letters.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-newpxtxmath.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-nonunicode.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-common-mathjax-overlaysymbols.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-drftcite.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-epsf.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-esvect.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fbox.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fixmath.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fnpara.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fourier.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-fvextra.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-gindex.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hepunits.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-hhtensor.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-isomath.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-isotope.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-jurabib.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-keystroke.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts-otf.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-kpfonts.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-libertinust1math.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-lpic.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-luavlna.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathalpha.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathastext.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathdesign.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathpazo.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathptmx.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mathspec.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mattens.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-maybemath.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mdwmath.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-menukeys.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-minted.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-mleftright.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-multibib.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-newpxmath.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-newtxmath.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-newtxsf.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-nicematrix.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-picinpar.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-pinlabel.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-plimsoll.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-pxfonts.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-repltext.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-rlepsf.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-scalerel.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-selectp.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-seqsplit.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-shadethm.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-shuffle.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-simplebnf.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-skmath.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-splitbib.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-statistics.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-swfigure.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-tcolorbox.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-tensor.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-termcal.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-listof.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-thm-restate.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-thmbox.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-thmtools.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-tikz-imagelabels.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-txfonts.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-txgreeks.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-upgreek.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-ushort.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-varioref.sty
branches/branch2020/Master/texmf-dist/tex/latex/lwarp/lwarp-xevlna.sty
Modified: branches/branch2020/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua
===================================================================
--- branches/branch2020/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua 2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Build/source/texk/texlive/linked_scripts/lwarp/lwarpmk.lua 2021-02-18 22:20:50 UTC (rev 57791)
@@ -1,8 +1,8 @@
#!/usr/bin/env texlua
--- Copyright 2016-2020 Brian Dunn
+-- Copyright 2016-2021 Brian Dunn
-printversion = "v0.83"
+printversion = "v0.895"
requiredconfversion = "2" -- also at *lwarpmk.conf
function printhelp ()
@@ -32,10 +32,11 @@
lwarpmk pdftosvg <list of file names>: Converts each PDF file to SVG.
lwarpmk epstopdf <list of file names>: Converts each EPS file to PDF.
lwarpmk clean [-p project]: Remove *.aux, *.toc, *.lof/t,
- *.idx, *.ind, *.log, *_html_inc.*, .gl*,
+ *.idx, *.ind, *.bbl, *.log, *_html_inc.*, .gl*,
*_html.pdf, *_html.html, *_html.sidetoc
lwarpmk cleanall [-p project]: Remove auxiliary files, project.pdf, *.html
lwarpmk cleanlimages: Removes all images from the "lateximages" directory.
+lwarpmk -v: Print the version number.
lwarpmk -h: Print this help message.
lwarpmk --help: Print this help message.
@@ -379,12 +380,13 @@
-- Remove auxiliary files:
-- All .aux files are removed since there may be many bbl*.aux files.
-- Also removes sourcename_html.pdf, sourcename_html.html,
--- and sourcename_html.sidetoc.
+-- and sourcename_html.sidetoc, plus comment_*.cut.
--
os.execute ( rmname .. " *.aux " ..
sourcename ..".toc " .. sourcename .. "_html.toc " ..
sourcename ..".lof " .. sourcename .. "_html.lof " ..
sourcename ..".lot " .. sourcename .. "_html.lot " ..
+ sourcename ..".bbl " .. sourcename .. "_html.bbl " ..
" *.idx " ..
" *.ind " ..
sourcename ..".ps " .. sourcename .."_html.ps " ..
@@ -393,7 +395,8 @@
sourcename .. "_html.pdf " ..
sourcename .. "_html.html " ..
sourcename .. "_html.sidetoc " ..
- " *_html_inc.* "
+ " *_html_inc.* " ..
+ " comment_*.cut"
)
end
@@ -890,6 +893,12 @@
elseif (arg[1] == nil) then
printhelp ()
+-- lwarpmk -v:
+
+elseif (arg[1] == "-v" ) then
+-- The version number has already been printed
+-- by the lwarpmk intro.
+
-- lwarpmk -h or lwarpmk --help :
elseif (arg[1] == "-h" ) or (arg[1] == "--help") then
Modified: branches/branch2020/Master/texmf-dist/doc/latex/lwarp/README.txt
===================================================================
--- branches/branch2020/Master/texmf-dist/doc/latex/lwarp/README.txt 2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/doc/latex/lwarp/README.txt 2021-02-18 22:20:50 UTC (rev 57791)
@@ -1,5 +1,5 @@
-LaTeX lwarp package v0.83 README.txt
+LaTeX lwarp package v0.895 README.txt
Files included are:
@@ -41,7 +41,7 @@
version 2005/12/01 or later.
-Copyright 2016-2020 Brian Dunn
+Copyright 2016-2021 Brian Dunn
Homepage: http://BDTechConcepts.com
Email: bd at BDTechConcepts.com
Modified: branches/branch2020/Master/texmf-dist/doc/latex/lwarp/lwarp.pdf
===================================================================
(Binary files differ)
Modified: branches/branch2020/Master/texmf-dist/scripts/lwarp/lwarpmk.lua
===================================================================
--- branches/branch2020/Master/texmf-dist/scripts/lwarp/lwarpmk.lua 2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/scripts/lwarp/lwarpmk.lua 2021-02-18 22:20:50 UTC (rev 57791)
@@ -1,8 +1,8 @@
#!/usr/bin/env texlua
--- Copyright 2016-2020 Brian Dunn
+-- Copyright 2016-2021 Brian Dunn
-printversion = "v0.83"
+printversion = "v0.895"
requiredconfversion = "2" -- also at *lwarpmk.conf
function printhelp ()
@@ -32,10 +32,11 @@
lwarpmk pdftosvg <list of file names>: Converts each PDF file to SVG.
lwarpmk epstopdf <list of file names>: Converts each EPS file to PDF.
lwarpmk clean [-p project]: Remove *.aux, *.toc, *.lof/t,
- *.idx, *.ind, *.log, *_html_inc.*, .gl*,
+ *.idx, *.ind, *.bbl, *.log, *_html_inc.*, .gl*,
*_html.pdf, *_html.html, *_html.sidetoc
lwarpmk cleanall [-p project]: Remove auxiliary files, project.pdf, *.html
lwarpmk cleanlimages: Removes all images from the "lateximages" directory.
+lwarpmk -v: Print the version number.
lwarpmk -h: Print this help message.
lwarpmk --help: Print this help message.
@@ -379,12 +380,13 @@
-- Remove auxiliary files:
-- All .aux files are removed since there may be many bbl*.aux files.
-- Also removes sourcename_html.pdf, sourcename_html.html,
--- and sourcename_html.sidetoc.
+-- and sourcename_html.sidetoc, plus comment_*.cut.
--
os.execute ( rmname .. " *.aux " ..
sourcename ..".toc " .. sourcename .. "_html.toc " ..
sourcename ..".lof " .. sourcename .. "_html.lof " ..
sourcename ..".lot " .. sourcename .. "_html.lot " ..
+ sourcename ..".bbl " .. sourcename .. "_html.bbl " ..
" *.idx " ..
" *.ind " ..
sourcename ..".ps " .. sourcename .."_html.ps " ..
@@ -393,7 +395,8 @@
sourcename .. "_html.pdf " ..
sourcename .. "_html.html " ..
sourcename .. "_html.sidetoc " ..
- " *_html_inc.* "
+ " *_html_inc.* " ..
+ " comment_*.cut"
)
end
@@ -890,6 +893,12 @@
elseif (arg[1] == nil) then
printhelp ()
+-- lwarpmk -v:
+
+elseif (arg[1] == "-v" ) then
+-- The version number has already been printed
+-- by the lwarpmk intro.
+
-- lwarpmk -h or lwarpmk --help :
elseif (arg[1] == "-h" ) or (arg[1] == "--help") then
Modified: branches/branch2020/Master/texmf-dist/source/latex/lwarp/lwarp.dtx
===================================================================
--- branches/branch2020/Master/texmf-dist/source/latex/lwarp/lwarp.dtx 2021-02-18 22:18:09 UTC (rev 57790)
+++ branches/branch2020/Master/texmf-dist/source/latex/lwarp/lwarp.dtx 2021-02-18 22:20:50 UTC (rev 57791)
@@ -1,7 +1,7 @@
%
% \iffalse meta-comment
%
-% Copyright 2016-2020 Brian Dunn
+% Copyright 2016-2021 Brian Dunn
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -16,7 +16,7 @@
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{lwarp}
-%<package> [2020/03/25 v0.83 Allows LaTeX to directly produce HTML5 output.]
+%<package> [2021/02/18 v0.895 Allows LaTeX to directly produce HTML5 output.]
%
%<*driver>
\documentclass{ltxdoc}
@@ -24,8 +24,8 @@
\PassOptionsToPackage{quiet}{textcomp}% Not all chars supported in TT font.
\usepackage{lmodern}
-% \usepackage{libertine}
-\usepackage[space]{erewhon}
+\usepackage{libertine}
+% *88* \usepackage[space]{erewhon}
\usepackage[varqu,varl]{inconsolata} % typewriter
% \usepackage{roboto}% conflicts with \textsc inside a float
% \usepackage{sourcecodepro}
@@ -85,8 +85,10 @@
\newunicodechar{฿}{\textbaht}
\newunicodechar{℠}{\textservicemark}
-\usepackage[log-declarations=false]{xparse}
+% \usepackage[log-declarations=false]{xparse}
+\usepackage{xparse}
+\usepackage{ifptex}% *8* remove later
\usepackage[lwarpmk]{lwarp}
@@ -163,6 +165,7 @@
\usepackage{enumitem}
+\newlist{inlinedesc}{description*}{1}
\usepackage{array}
\usepackage{longtable}
@@ -565,8 +568,8 @@
\DescribeOption{GlossaryCmd}\DescribeDefault{makeglossaries}
\DescribeOption[lwarpmk]{printglossary}
\DescribeOption[lwarpmk]{htmlglossary}
-\prog{lwarpmk} has the commands \texttt{lwarpmk printglossary} and
-\texttt{lwarpmk htmlglossary}, which process the glossaries created by the
+\prog{lwarpmk} has the commands \cmds{lwarpmk printglossary} and
+\cmds{lwarpmk htmlglossary}, which process the glossaries created by the
\pkg{glossaries} package using that package's \prog{makeglossaries} program.
The shell command to execute is set by the \pkg{lwarp} option \optn{GlossaryCmd},
@@ -760,6 +763,10 @@
\newcommand*{\limitspagenote}{%
\pkg{pagenote} works as-is, but the \optn{page} option is disabled.
+
+Note that labels in page notes do not appear as expected,
+\trouble[labels]{pagenote=\pkg{pagenote}}
+even in the print version.
}
\newcommand*{\limitsendnotes}{%
@@ -814,27 +821,6 @@
these environments. Adding a space on either side may be sufficient.
}
-\newcommand{\limitshspace}{%
-\DescribeMacro{\hspace}%
-\gindex{space>horizontal}%
-\gindex{horizontal space}%
-\cs{hspace} is converted to an inline \HTML\ span of the given width,
-except that \texttt{0} width is ignored,
-a width of \texttt{.16667em} is converted to
-an \HTML\ thin breakable space (\texttt{U+2009}),
-and a \cs{fill} is converted to a \cs{qquad}.
-
-\gindex{\texttt{\textasciitilde}}%
-\gindex{\cs{,}}%
-\DescribeMacro{\,}%
-\texttt{\~} and \cs{,} are converted to \HTML\ entities.
-
-\DescribeMacro{\kern}%
-\DescribeMacro{\hskip}%
-\cs{kern} and \cs{hskip} are entered into the \HTML\ \PDF\ output as-is,
-then interpreted by \prog{pdftotext}, and thus usually appear as a single space.
-}
-
\newcommand{\limitstextcomp}{%
Some \pkg{textcomp} symbols do not have Unicode equivalents, and thus
are not supported.
@@ -848,6 +834,11 @@
\newcommand{\limitsaccents}{%
Native \LaTeX\ accents such as \cs{"} will work, but many more kinds of
accents are available when using Unicode-aware \XeLaTeX\ and \LuaLaTeX.
+If using accents in section names which will become file names, it is recommended
+to use the \LaTeX\ accents such as \cs{"} and \cs{v} instead of Unicode accents.
+The \LaTeX\ accents will have the accents stripped when creating the filenames,
+whereas the Unicode accents will appear in the file names, which may cause
+issues with some operating systems.
}
\newcommand{\limitsrelsize}{%
@@ -1025,7 +1016,6 @@
Many features are ignored during the \HTML\ conversion.
The goal is source-level compatibility.
-\cs{titlehead}, \cs{subject},
\cs{captionformat}, \cs{figureformat}, and \cs{tableformat} are not yet emulated.
\testthis
@@ -1035,6 +1025,10 @@
}
\newcommand{\limitsmemoir}{
+\pkg{lwarp} uses \pkg{caption}, which causes a warning from \pkg{memoir}.
+\trouble[captions]{memoir=\pkg{memoir}>captions}
+This is normal. Adjust captions via \pkg{caption}, instead of \pkg{memoir}.
+
While emulating \pkg{memoir}, \pkg{lwarp} pre-loads
a number of packages (\cref{sec:patch-memoir-packages}).
This can cause an options clash when the user's document later loads the same
@@ -1062,19 +1056,52 @@
which are often newer than the date declared by \pkg{memoir}, it is hoped that
\pkg{memoir} will update and change its emulated version numbers to match.
-\cs{verbfootnote} is not supported.
+\cs{label} accepts an optional \optn{(bookmark)} argument, but this is
+\margintag{\texttt{\cs{label}(bookmark)\{tag\}}}
+ignored in \HTML.
-\cs{newfootnoteseries}, etc. are not supported.
+The \env{comment} environment is from the \pkg{comment} package, and thus
+\trouble[\env{comment}]{comment=\env{comment}}
+\trouble{memoir=\pkg{memoir}>comment=\env{comment}}
+requires that the \cs{begin} and \cs{end} each be on its own line:
+\begin{sourcedisplay}
+\cs{begin}\{comment\} \\
+This is a comment. \\
+\cs{end}\{comment\}
+\end{sourcedisplay}
+Comments defined with \cs{newcomment} use \pkg{memoir}'s defintions, and
+\margintag{\cs{newcomment}}
+behave as expected, where the \cs{begin} and \cs{end} do have to each be on its own line.
+\cs{verbfootnote} is not supported.\watchout[verbatim footnotes]
+
+\cs{newfootnoteseries}, etc. are not supported.\watchout[\cs{newfootnoteseries}]
+
\pkg{lwarp} loads \pkg{pagenote} to perform \pkg{memoir}'s pagenote functions,
+\watchout[page notes]
but there are minor differences in \cs{pagenotesubhead} and related macros.
-Poem numbering is not supported.
+To add support for pagenotes with \pkg{cleveref}, add:
+\margintag{page notes with cleveref}
+\trouble{memoir=\pkg{memoir}>page notes}
+\begin{sourcedisplay}
+\cs{crefname}\{pagenote\}\{page note\}\{page notes\} \\
+\cs{Crefname}\{pagenote\}\{Page note\}\{Page notes\}
+\end{sourcedisplay}
+Note that for print mode,
+\margintag{page note \cs{nameref}}
+\cs{nameref} print the section name where the page notes are
+declared in the text, but for \HTML\ it prints the name where the page notes are printed.
+
+Poem numbering is not supported.\watchout[poems]
+
The \env{verbatim} environment does not yet support the \pkg{memoir} enhancements.
+\watchout[\env{verbatim}]
It is currently recommended to load and use \pkg{fancyvrb} instead.
The \pkg{memoir} glossary system is not yet supported by \prog{lwarpmk}.
+\watchout[glossaries]
The \pkg{glossaries} package may be used instead,
but does require the glossary entries be
changed from the \pkg{memoir} syntax to the \pkg{glossaries} syntax.
@@ -1116,6 +1143,10 @@
text in the \HTML-tagged \PDF\ output. For some settings of
\cs{HTMLleftmargini} or \cs{HTMLleftskip} the horizontal alignment may not work out
exactly, in which case a label may be shifted by one space.
+\trouble[\env{verse} margin]{verse=\pkg{verse}>margin}
+\trouble{memoir=\pkg{memoir}>verse>margin}
+During translation to \HTML, the stanza numbers are kept out of the left margin,
+which would have caused \prog{pdftotext} to shift everything over.
}
@@ -1224,8 +1255,9 @@
\subsubsection{\brand{MathJax} option}
\label{sec:limitsmathjax}
-The popular \brand{MathJax} alternative (\url{mathjax.org}) may be used to display math.
+The \brand{MathJax} (\url{mathjax.org}) \LaTeX-math to \HTML\ converter
\margintag{\brand{MathJax} math option}
+may be used to display math.
\DescribeProgram{MathJax}
\gindex{math>mathjax=\brand{MathJax} summary}
\gindex{mathjax=\brand{MathJax}>summary}
@@ -1237,8 +1269,9 @@
\item As detokenized printed \LaTeX{} commands placed directly into the \HTML\ output
for interpretation by the \brand{MathJax} display scripts. An additional script is used to
pre-set the equation number format and value according to the current \LaTeX\ values,
-and the \brand{MathJax} cross-referencing system is ignored in favor of the \LaTeX\ internal system,
-seamlessly integrating with the rest of the \LaTeX\ code.
+and the \brand{MathJax} equation numbering system is ignored in favor of the \LaTeX\ internal system,
+seamlessly integrating with the rest of the \HTML\ output, including any math
+appearing in non-\brand{MathJax} \SVG\ output.
\end{enumerate}
\subsubsection{Customizing \brand{MathJax}}
@@ -1264,12 +1297,6 @@
\cs{multicolumn} only fills a single cell, resulting in a short row.
\cs{multirow} simply prints its text on the first line.
-\item \brand{MathJax} does not support subequations.
- \trouble[subequations]{mathjax=\brand{MathJax}>subequations}%
- \trouble{math>subequations}%
- This may be improved by parsing the \LaTeX{}
- math expression to manually insert tags, but this has not yet been done.
-
\item Footnotes are emulated when used inside a \brand{MathJax} expression.
\watchout[footnotes]
For an equation with a single footnote, the correct footnote number is used.
@@ -1289,7 +1316,7 @@
\item Math appearing inside a lateximage,
\margintag{lateximage}
and therefore also inside a \tikz\ or \env{picture}
- environment, is rendered as SVG math even if \brand{MathJax}
+ environment, is rendered as \SVG\ math even if \brand{MathJax}
is used in the rest of the document.
\item For \pkg{siunitx},
@@ -1305,19 +1332,23 @@
While \brand{MathJax} is enabled inside \env{tabbing}, the browser may not correctly
render the horizontal alignment of the math and text following after on the same line.
-\item Other math-related macros and packages are not directly supported by \brand{MathJax},
+\item \brand{MathJax} includes the \prog{textmacros} extension,
+ \margintag{\cs{text}}
+ which supports various macros which are commonly used inside \cs{text},
+ such as \cs{textbf} and text accents.
+ \pkg{Lwarp} supports this extension.
+
+\item Many other math-related macros and packages are
\trouble[other macros and packages]{mathjax=\brand{MathJax}>unsupported packages}
- including \cs{ensuremath} and \pkg{bigdelim},
- and occasionally-used macros such as \cs{relax}.
+ \trouble{package>mathjax=\brand{MathJax} support}
+ not directly supported by \brand{MathJax},
+ including \cs{ensuremath} and occasionally-used macros such as \cs{relax}.
While using \brand{MathJax}, \pkg{lwarp} provides emulation
- for footnotes, \pkg{bm}, \pkg{mathtools},
- \pkg{nicefrac}, \pkg{siunitx}, and \pkg{units}.
-
-\item Starred macros are generally not supported
- \trouble[starred macros]{starred macros>mathjax=\brand{MathJax}}
- \trouble{math>starred macros and mathjax=\brand{MathJax}}
- \trouble{mathjax=\brand{MathJax}>starred macros}
- by MathJax or the \pkg{lwarp} emulations.
+ for many of these macros, as well as for footnotes and emulation for
+ dozens of packages (see \cref{tab:supported}).
+ In many cases these emulations simply ignore the package in a source-compatible way.
+ Others produce a result which represents the meaning, even if they don't look exact.
+ Look up each package in this document for a description of the limitations of each.
\end{itemize}
}
@@ -1345,7 +1376,7 @@
\DescribeMacro{\inlinemathnormal}
\DescribeMacro{\inlinemathother}
An inline math expression is usually converted to a reusable hashed \SVG\ math
-image, or a MathJax expression. The hash or expression depends on the contents
+image, or a \brand{MathJax} expression. The hash or expression depends on the contents
of the math expression. In most cases this math expression is static, such as \texttt{\$x+1\$},
so the image can be reused for multiples instances of the same expression.
In some cases,
@@ -1355,9 +1386,13 @@
Another problem is complicated contents
\margintag{complicated \attribute{alt} tag}
which do not expand well in an \attribute{alt} tag.
-The macro \cs{inlinemathother} may be used before a dynamic
-math expression, and \cs{inlinemathnormal} after. Doing so tells \pkg{lwarp} to
-use an unhashed \SVG\ math image, even if MathJax is in use.
+Yet another problem is math packages which are only partially emulated
+\margintag{\brand{MathJax} limitations}
+in \brand{MathJax}.
+The macro \cs{inlinemathother} may be used before a sequence of dynamic or complicated
+math expressions, and \cs{inlinemathnormal} after. Doing so tells \pkg{lwarp} to
+use unhashed \SVG\ math images for those particular expressins, even if \brand{MathJax}
+is otherwise in use.
See \cref{sec:localizingdynamicmath}.
}
@@ -1365,7 +1400,7 @@
\DescribeMacro{\displaymathnormal}
By default, or when selecting \cs{displaymathnormal},
\brand{Mathjax} math display environments print their contents
-as text into \HTML,
+as text into \HTML\ for \brand{MathJax} to interpret,
and \SVG\ display math environments render their contents as \SVG\ images
and use their contents as the \attribute{alt} tag of \HTML\ output.
To do so, the contents are loaded into a macro for reuse.
@@ -1376,7 +1411,7 @@
it is assumed that the contents are more complicated than ``pure''
math.
An example is an elaborate \tikz\ picture,
-\margintag{MathJax unsupported}
+\margintag{\brand{MathJax} unsupported}
which will not render in \brand{MathJax} and
will not make sense as an \HTML\ \attribute{alt} tag.
\margintag{complicated \attribute{alt} tag}
@@ -1389,6 +1424,27 @@
\newcommand{\limitscustomizemathjax}{%
+\pkg{lwarp} detects and adjusts \brand{MathJax} equation numbering format for
+\margintag{equation numbering}
+\gindex{equation numbering>mathjax=\brand{MathJax}}
+\gindex{math>equation numbering, mathjax=\brand{MathJax}}
+\gindex{mathjax=\brand{MathJax}>equation numbering}
+\trouble{equation numbering>mathjax=\brand{MathJax}}
+\trouble{mathjax=\brand{MathJax}>equation numbering}
+\trouble{math>equation numbering>mathjax=\brand{MathJax}}
+\pkg{article} and \pkg{book} style equations as well as
+\pkg{amsmath} \cs{numberwithin} for chapters, sections, and subsections.
+Custom equation number formats may be set as follows, for example:
+\begin{sourcedisplay}
+\cs{renewcommand*}\{\cs{theequation}\}\{\cs{Alph}\{section\}.\cs{arabic}\{equation\}\} \\
+\textred{\cs{AtBeginDocument}\{} \\
+ \fquad\cs{renewcommand*}\{\cs{theMathJaxsection}\}\{\cs{Alph}\{section\}.\} \\
+\textred{\}}
+\end{sourcedisplay}
+The \pkg{amsmath} \env{subequations} environment is supported, but only
+\watchout[\env{subequation}]
+with \cs{alpha} subequation numbering.
+
\brand{MathJax} does not have preexisting support every possible math function.
\margintag{global customizations}
Additional \brand{MathJax} function definitions may be
@@ -1447,9 +1503,45 @@
To maintain compile speed, use the \env{warpMathJax} environment,
and use a separate math environment for each definition.
-Starred macros are generally not supported
- \watchout[starred macros]
- by MathJax or the \pkg{lwarp} emulations.
+\DescribeMacro{\ifstar}
+For \brand{MathJax}, use \cs{ifstar} instead of \cs{@ifstar}:
+\gindex{starred macros}
+\gindex{ifnextstar=\cs{@ifnextstar} with \brand{MathJax}}
+\gindex{@ifstar=\cs{@ifstar} with \brand{MathJax}}
+\gindex{mathjax=\brand{MathJax}>starred macros}
+\trouble{mathjax=\brand{MathJax}>starred macros}
+\trouble{math>starred macros and mathjax=\brand{MathJax}}
+\gindex{mathjax=\brand{MathJax}>@ifstar=\cs{@ifstar} macros}
+\trouble{mathjax=\brand{MathJax}>@ifstar=\cs{@ifstar} macros}
+\trouble{math>@ifstar=\cs{@ifstar} macros and \brand{MathJax}}
+\begin{sourcedisplay}
+\cs{CustomizeMathJax}\{ \\
+ \fquad \cs{def}\cs{myname}\{\\
+ \fqquad \cs{ifstar}\cs{starredaction}\cs{unstarredaction} \\
+ \fqquad \% \textred{(Do not place anything after!)} \\
+ \fquad \}
+\}
+\end{sourcedisplay}
+
+\DescribeMacro{\ifnextchar}
+For \brand{MathJax}, use \cs{ifnextchar} instead of \cs{@ifnextchar}:
+\gindex{@ifnextchar=\cs{@ifnextchar} with \brand{MathJax}}
+\gindex{ifnextchar=\cs{@ifnextchar} with \brand{MathJax}}
+\gindex{mathjax=\brand{MathJax}>@ifnextchar=\cs{@ifnextchar} macros}
+\trouble{mathjax=\brand{MathJax}>@ifnextchar=\cs{@ifnextchar} macros}
+\trouble{math>@ifnextchar=\cs{@ifnextchar} macros and \brand{MathJax}}
+\begin{sourcedisplay}
+\cs{CustomizeMathJax}\{\cs{def}\cs{myname}\{\cs{ifnextchar} X \cs{found}\cs{notfound}\}\}
+\end{sourcedisplay}
+``\texttt{X}'' may be a single \acro{ASCII} character,
+or a hex number inside braces, ex:
+\begin{sourcedisplay}
+\cs{CustomizeMathJax}\{\cs{def}\cs{myname}\{\cs{ifnextchar}\{0x7B\}\cs{found}\cs{notfound}\}\}
+\end{sourcedisplay}
+Use ``\texttt{(}'' or ``\texttt{\{0x28\}}'' for a left parenthesis,
+``\texttt{\{0x7B\}}'' for a left brace,
+``\texttt{\{0x7D\}}'' for a right brace,
+or ``\texttt{\{0x5C\}}'' for a backslash.
}
%\newcommand{\limitscustomizeKaTeX}{%
@@ -1479,10 +1571,10 @@
\trouble{math>file name}
instead of dollar math \texttt{\$x+y\$}.
(Dollar math works, but appears in the filename.)
-Or, use a short name for the \TOC\ entry without the math, or use \cs{texorpdfstring}:
+Or, use a short name for the \TOC\ entry without the math, or use \cs{texorpdfstring}
+from the \pkg{hyperref} package:
\begin{sourcedisplay}
-\cs{section}\{A name with math \\
- \fqquad \cs{texorpdfstring}\{\$1+2=3\$\}\{text description\}\}
+\cs{section}\{Some math \cs{texorpdfstring}\{\$1+2=3\$\}\{three\}\}
\end{sourcedisplay}
}
@@ -1497,7 +1589,6 @@
If using \brand{MathJax}:
\trouble[\brand{MathJax}]{mathjax=\brand{MathJax}>mathtools=\pkg{mathtools}}
\begin{itemize}
- \item Starred macros are not available. Starred environments do work.
\item \pkg{mathtools} \optn{disallowspaces} does not work for \brand{MathJax}.
Protect brackets which are not optional arguments, such as:
\begin{sourcedisplay}
@@ -1513,14 +1604,19 @@
\item For the new \env{cases}-like environments,
\cs{text} must be used to set the normal roman font if desired.
\item \env{alignat} in \brand{MathJax} requires math mode, but
- in \LaTeX it doesn't. It may be required to use \env{warpHTML} and
+ in \LaTeX\ it doesn't. It may be required to use \env{warpHTML} and
\env{warpprint} to isolate a version for each mode.
- \item \cs{DeclareParedDelimiter} and related must be in the preamble
+ \item \cs{DeclarePairedDelimiter} and related must be in the preamble
before \linebreak \texttt{\cs{begin}\{document\}}.
- The starred versions of each macro are not created.
\end{itemize}
}
+\newcommand{\limitsacro}{%
+Define acronymn formats using \cs{textbf} instead
+\watchout[formats]
+of \cs{bfseries} etc.
+}
+
\newcommand{\limitschemfig}{%
If using \cs{polymerdelim} to add delimiters to a \cs{chemfig},
wrap both inside a single \env{lateximage}:
@@ -1553,11 +1649,34 @@
Font control is via \CSS, and the custom \LaTeX\ font settings
are ignored.
+If the print version does not use \pkg{cleveref},
+\trouble[cref reference format undefined]{ntheorem=\pkg{ntheorem}>cref reference format}
+\trouble{cref reference format}
+\trouble{cleveref=\pkg{cleveref}>cref reference format}
+place all \cs{theoremstyle} and \cs{newtheorem}
+declarations in the preamble inside \cs{AtBeginDocument}.\footnote{%
+ \pkg{lwarp} uses \pkg{cleveref} for the \HTML\ conversion,
+ and loads \pkg{cleveref} \cs{AtEndPreamble}, just before \cs{AtBeginDocument}.%
+}
+For some theorems, it may also be required to add inside \cs{AtBeginDocument}
+something such as:
+\begin{sourcedisplay}
+\cs{AtBeginDocument}\{ \% if not using cleveref package \\
+ \fquad \cs{theoremstyle}\{definition\} \\
+ \fquad \cs{newtheorem}\{dtheorem\}\{Definition\} \\
+ \fquad \dots \\
+ \fquad \cs{usepackage}\{etoolbox\} \% for \cs{ifdef} \\
+ \fquad \cs{ifdef}\{\cs{cref}\}\{ \\
+ \fqquad \cs{crefname}\{Proof\}\{Proof\}\{Proofs\} \\
+ \fquad \}\{\} \\
+\}
+\end{sourcedisplay}
+
\limitsntheoremnumbering
}
\newcommand{\limitsntheoremnumbering}{%
-\pkg{ntheorem} has a bug with equation numbering in \AmS\ environments%
+\pkg{ntheorem} has a bug with equation numbering in \AmS\ environments
\trouble[Equation numbering]{ntheorem=\pkg{ntheorem}>numbering}
\trouble{math>equation numbering>ntheorem=\pkg{ntheorem}}
\trouble{AMSmath>ntheorem=\pkg{ntheorem}>numbering}
@@ -1597,7 +1716,7 @@
\end{sourcedisplay}
\DescribeProgram{pdftocairo}
-\margintag{PDF to SVG}
+\margintag{\PDF\ to \SVG}
To convert a \PDF\ image to \SVG, use the utility \prog{pdftocairo}:
\userentry{pdftocairo -svg filename.pdf}
For a large number of images, use \prog{lwarpmk}:
@@ -1611,7 +1730,7 @@
use \userentry{lwarpmk pdftosvg *.PDF} to convert to \SVG\ images.
When using \DVI\ \prog{latex},
-\margintag{DVI latex}
+\margintag{\DVI\ \LaTeX}
it is necessary to convert \EPS\ to \PDF\ and then to \SVG:
\gindex{image>PDF or EPS>converting}
\userentry{lwarpmk epstopdf *.eps\qquad \textrm{(or a list of filenames)}}
@@ -1618,7 +1737,7 @@
\userentry{lwarpmk pdftosvg *.pdf\qquad \textrm{(or a list of filenames)}}
For \PNG\ or \JPG
-\margintag{PNG and JPG}
+\margintag{\PNG\ and \JPG}
\gindex{image>PNG and JPG}
\gindex{PNG images}
\gindex{JPG images}
@@ -1627,8 +1746,8 @@
but will also be used without the file extension if it is the only file of
its base name.
-GIF files may be used for \HTML,
-\margintag{GIF}
+\GIF\ files may be used for \HTML,
+\margintag{\GIF}
\gindex{image>GIF}
\gindex{GIF images}
but another format must also be provided for print output.
@@ -1777,9 +1896,9 @@
}
\newcommand{\limitscolor}{%
-\pkg{color} is superceded by \pkg{xcolor}, and
-\pkg{lwarp} requires several of the features of \pkg{xcolor}.
-When \pkg{color} is requested, \pkg{xcolor} is loaded as well.
+ \pkg{color} is superceded by \pkg{xcolor}, and
+ \pkg{lwarp} requires several of the features of \pkg{xcolor}.
+ When \pkg{color} is requested, \pkg{xcolor} is loaded as well.
}
\newcommand{\limitsxcolor}{%
@@ -1965,6 +2084,36 @@
\trouble[floatrow]{floatrow=\pkg{floatrow}>ttabbox=\cs{ttabbox}}
which used \cs{ttabbox} from \pkg{floatrow}.
\item \limitsresumetabular
+ \item To automate the use of \cs{StartDefiningTabulars}
+ \gindex{StartDefiningTabulars=\cs{StartDefiningTabulars}}
+ \gindex{tabular>StartDefiningTabulars=\cs{StartDefiningTabulars}}
+ \gindex{tabular>in environments, catcode of \&}
+ \margintag{For developers:}
+ and \cs{EndDefiningTabulars},
+ these macros may be embedded inside an \HTML\ environment definition
+ to automatically change the catcode of \texttt{\&} before
+ absorbing the arguments.
+ Another environment may be embedded as well.
+ \begin{sourcedisplay}
+ \% Does the work after the catcode has been changed: \\
+ \cs{newcommand}*\{\textblue{\cs{LWR at HTML@subsomename}}\}[2]\{\% \\
+ \fquad \dots \\
+ \fquad \textgreen{\cs{otherenvironmentname} [<args>] \{<args>\}}\quad \% for example \\
+ \} \\
+ \% Change catcode before absorbing arguments: \\
+ \cs{newcommand}*\{\cs{LWR at HTML@somename}\{\% \\
+ \fquad \textred{\cs{StartDefiningTabulars}} \\
+ \fquad \textblue{\cs{LWR at HTML@subsomename}} \\
+ \} \\
+ \% Change catcode again at the end: \\
+ \cs{newcommand}*\{\cs{LWR at HTML@endsomename}\}\{\% \\
+ \fquad \dots \\
+ \fquad \textgreen{\cs{endotherenvironmentname}} \quad \% for example \\
+ \fquad \textred{\cs{StopDefiningTabulars}} \\
+ \} \\
+ \% Combine with the existing print definition: \\
+ \cs{LWR at formattedenv}\{somename\}
+ \end{sourcedisplay}
\end{itemize}
\item [Cell contents:] \
@@ -2148,16 +2297,16 @@
To fix this, use \cs{ResumeTabular} as follows.
This is ignored in print mode.
\begin{sourcedisplay}
-\textred{\cs{StartDefiningTabulars}} \% because \& is used in a definition \\
+\textred{\cs{StartDefiningTabulars}} \% \quad (\& is used in a definition) \\
\cs{newenvironment}\{outerenvironment\} \\
\{ \\
-\cs{tabular}\{cc\} \\
-left \& right \textbackslash\textbackslash \\
+\fquad \cs{tabular}\{cc\} \\
+\fquad left \& right \textbackslash\textbackslash \\
\} \\
\{ \\
-\textred{\cs{TabularMacro}\cs{ResumeTabular}} \\
-left \& right \textbackslash\textbackslash \\
-\cs{endtabular} \\
+\fquad \textred{\cs{TabularMacro}\cs{ResumeTabular}} \\
+\fquad left \& right \textbackslash\textbackslash \\
+\fquad \cs{endtabular} \\
\} \\
\textred{\cs{StopDefiningTabulars}} \\
\end{sourcedisplay}
@@ -2432,11 +2581,12 @@
Also see \pkg{lwarp}'s \cs{fboxBlock} macro and \env{fminipage} environment for
alternatives to \cs{fbox} for framing environments.
-The \pkg{fancybox} documentation's example framed table
+The \pkg{fancybox} documentation's example of a framed table
\margintag{framed table example}
using an \cs{fbox} containing a \env{tabular}
does not work with \pkg{lwarp}, but the \env{FramedTable} environment does work if
-\cs{fbox} is replaced by \cs{fboxBlock}. This method loses \HTML\ formatting.
+\cs{fbox} is replaced by \cs{fboxBlock}.
+This method does lose some \HTML\ formatting.
A better method is to enclose the table's contents inside a \env{fminipage} environment.
The caption may be placed either inside or outside the \env{fminipage}:
\begin{sourcedisplay}
@@ -2573,6 +2723,16 @@
% would appear in the List of Figures/Tables before the enclosing figure/table,
% therefore \pkg{lwarp} does not place subfigures in the LOF/LOT.
+To have correct sub table numbers:
+\trouble[table numbering]{table>numbering>subfig=\pkg{subfig}}
+\trouble{subfig=\pkg{subfig}>numbering}
+\trouble{subtable>numbering>subfig=\pkg{subfig}}
+\begin{sourcedisplay}
+\cs{usepackage}\{caption\}\\
+\cs{captionsetup}[table]\{position=top\}
+\end{sourcedisplay}
+
+
At present, the package options for \optn{lofdepth} and \optn{lotdepth}
\trouble[\optn{lof/lotdepth}]{subfig=\pkg{subfig}>options}
are not working. These counters must be set separately after the
@@ -2579,7 +2739,7 @@
package has been loaded.
In the document source, use \cs{hfill} and \cs{hspace*}
-\trouble{horizontal spacing}{subfig>inline}
+\trouble[horizontal spacing]{subfig=\pkg{subfig}>inline}
between subfigures to spread them
apart horizontally. The use of other forms of whitespace may
cause paragraph tags to be generated, resulting in subfigures
@@ -2661,18 +2821,17 @@
\trouble[MathJax]{mathjax=\brand{MathJax}>siunitx=\pkg{siunitx}}
a limited emulation is used.
Most functions work reasonably well, but many options cannot be emulated.
-\pkg{siunitx} macros with more than one optional value cannot absorb the second optional
-value, and complicated parsing such as for \cs{ang} is not supported.
+Complicated parsing such as for \cs{ang} is not supported.
The result usually looks fine, and otherwise is enough to get the meaning across.
-\pkg{lwarp}'s \brand{MathJax} emulation for \pkg{siunitx} is meant to be a
-stop-gap measure until an extension is included in \brand{MathJax}.
-As of this writing, the third-party \pkg{siunitx} extension
-for \brand{MathJax} is not currently hosted at any public CDN,
-thus \pkg{siunitx} is not usable with this extension unless a local copy
-of this extension is created first.
-See \cs{MathJaxFilename} to select a custom MathJax script, but \pkg{lwarp}'s
-emulation would have to be diabled as well.
+% \pkg{lwarp}'s \brand{MathJax} emulation for \pkg{siunitx} is meant to be a
+% stop-gap measure until an extension is included in \brand{MathJax}.
+% As of this writing, the third-party \pkg{siunitx} extension
+% for \brand{MathJax} is not currently hosted at any public CDN,
+% thus \pkg{siunitx} is not usable with this extension unless a local copy
+% of this extension is created first.
+% See \cs{MathJaxFilename} to select a custom \brand{MathJax} script, but \pkg{lwarp}'s
+% emulation would have to be diabled as well.
Document modifications required for \brand{MathJax}:
\begin{itemize}
@@ -2705,29 +2864,18 @@
\newcommand{\limitsphysics}{%
\pkg{physics} works as-is for \HTML\ with \SVG\ math.
-For \brand{MathJax}, emulation is provided via \brand{MathJax} macros.
-These are not the same as the third-party \brand{MathJax} extension.
-
-\begin{itemize}
-\item The \optn{notrig} option is honored.
-\item Starred macros are not yet detected.\watchout
-\item Most macros don't work with \cs{big}, etc.\watchout
-\item Macros do not auto-detect variable numbers of mandatory arguments. \watchout
- Provide empty \texttt{\{\}} arguments for those which are not used.
-\item Many of the macros do not work with auto-detected delimiters. \watchout
- Use the delimiter-specific versions instead.
- Some macros do not even consider the following arguments,
- so they may work as expected.
-\item For \cs{Re} and \cs{Im}, the arguments must be in braces.\watchout
-\item For \cs{functionalderivative}, for the example in the manual with $(E-TS)$,
- enclose the parens in braces.
-\item \cs{expectationvalue} requires and uses two mandatory arguments, \watchout
- unlike the third-party \brand{MathJax} \pkg{physics} extension.
-\item Each of \cs{matrixquantity}, \cs{smallmatrixquantity},
- and \cs{matrixdeterminant} work,
- while \cs{identitymatrix} and the following simply print a place-holder,
- and must be replaced by hand.
-\end{itemize}
+For \brand{MathJax}, the \brand{MathJax} v3 \pkg{physics} extension is used.
+% emulation is provided via \pkg{lwarp}'s \brand{MathJax} macros.
+% These are not the same as the third-party \brand{MathJax} extension.
+%
+% \begin{itemize}
+% \item The \optn{notrig} option is honored.
+% \item Most macros don't work with \cs{big}, etc.\watchout
+% \item Each of \cs{matrixquantity}, \cs{smallmatrixquantity},
+% and \cs{matrixdeterminant} work,
+% while \cs{identitymatrix} and the following simply print a place-holder,
+% and must be replaced by hand using \env{warpprint} and \env{warpHTML}.
+% \end{itemize}
}
@@ -2743,7 +2891,8 @@
\newcommand{\limitsbabeltwo}{%
When French is used, the caption separator is
\trouble[\cs{CaptionSeparator}]{babel=\pkg{babel}>French}
-changed to a dash. The following may be used to restore it to a colon:
+changed to a dash. To restore it to a colon,
+the following may be placed before \pkg{lwarp} is loaded:
\begin{sourcedisplay}
\cs{renewcommand}*\{\cs{CaptionSeparator}\}\{:\textasciitilde\}
\end{sourcedisplay}
@@ -2762,12 +2911,12 @@
}
\newcommand{\limitspolyglossia}{%
-\trouble{Undefined control sequence>polyglossia=\pkg{polyglossia}}
-\trouble{polyglossia=\pkg{polyglossia}>Undefined control sequence}
+\trouble{Undefined control sequence \dots begindocument>polyglossia=\pkg{polyglossia}}
+\trouble{polyglossia=\pkg{polyglossia}>Undefined control sequence \dots begindocument}
\pkg{lwarp} uses \pkg{cleveref}, which has some limitations when using
\pkg{polyglossia}, possibly resulting in the error
\begin{sourcedisplay}
-!~Undefined control sequence. \dots\ \cs{@begindocumenthook}
+!~Undefined control sequence. \dots\ \cs{\_\_hook} begindocument
\end{sourcedisplay}
To test compatibility, add
@@ -2824,29 +2973,8 @@
\bigskip
}
-\newcommand{\limitsxparse}{%
-\trouble{xparse=\pkg{xparse}}
-To remove from the log any warnings about redeclaring objects,
-place the following before \pkg{lwarp} is loaded:
-\begin{sourcedisplay}
-\cs{usepackage}[log-declarations=false]\{xparse\}
-\end{sourcedisplay}
-}
-\newcommand{\limitsnewtxmath}{%
-The proper load order is:
-\trouble[loading sequence]{newtxmath=\pkg{newtxmath}}
-\begin{sourcedisplay}
-\textrm{\dots} \\
-\cs{usepackage}\{lwarp\} \\
-\textrm{\dots} \\
-\cs{usepackage}\{amsthm\} \\
-\cs{usepackage}\{newtxmath\} \\
-\textrm{\dots} \\
-\end{sourcedisplay}
-}
-
% For use in the documentation update section:
\newcommand*{\newlwarpmkconf}{
Due to changes in \prog{lwarpmk},
@@ -2925,7 +3053,7 @@
%<*package>
% \fi
%
-% \CheckSum{43597}
+% \CheckSum{53146}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -3051,6 +3179,17 @@
% \changes{v0.81}{2020/03/04}{\ 2020/03/04}
% \changes{v0.82}{2020/03/25}{\ 2020/03/25}
% \changes{v0.83}{2020/03/27}{\ 2020/03/27}
+% \changes{v0.84}{2020/04/24}{\ 2020/04/24}
+% \changes{v0.85}{2020/05/01}{\ 2020/05/01}
+% \changes{v0.86}{2020/05/12}{\ 2020/05/12}
+% \changes{v0.87}{2020/06/03}{\ 2020/06/03}
+% \changes{v0.88}{2020/07/19}{\ 2020/07/19}
+% \changes{v0.89}{2020/09/03}{\ 2020/09/03}
+% \changes{v0.891}{2020/09/22}{\ 2020/09/22}
+% \changes{v0.892}{2020/10/07}{\ 2020/10/07}
+% \changes{v0.893}{2020/11/26}{\ 2020/11/26}
+% \changes{v0.894}{2020/12/24}{\ 2020/12/24}
+% \changes{v0.895}{2021/02/18}{\ 2021/02/18}
@@ -3074,7 +3213,7 @@
%
% \fileversion{} \Dash \filedate
%
-% {\small\textcopyright{} 2016--2020} Brian Dunn\\ \small \texttt{bd at BDTechConcepts.com}
+% {\small\textcopyright{} 2016--2021} Brian Dunn\\ \small \texttt{bd at BDTechConcepts.com}
%
% \end{center}
%
@@ -3083,9 +3222,10 @@
% The \pkg{lwarp} package converts \LaTeX\ to \HTML\ by using \LaTeX\ to process the
% user's document and directly generate \HTML\ tags. External utility programs are only
% used for the final conversion of text and images. Math may be represented
-% by \SVG\ images or \brand{MathJax}. Hundreds of \LaTeX\ packages are supported,
-% including dozens with \brand{MathJax} emulation.
-%
+% by \SVG\ images or \brand{MathJax}.
+% More than 500 \LaTeX\ packages and classes are supported,
+% of which more than 90 also support \brand{MathJax}.
+%
% Documents may be produced by \DVI\ or \PDF\ \LaTeX, Lua\LaTeX, \XeLaTeX;
% by several CJK engines, classes, and packages;
% or by customized systems such as \pkg{perltex} and \pkg{pythontex}.
@@ -3273,11 +3413,261 @@
%
% \begin{description}
% \needspace{2\baselineskip}
+% \item[v0.895:] Vector packages, greatly improved \brand{MathJax} for \pkg{siunitx}.
+% \begin{itemize}
+% \item Fixed quotes in \HTML\ tags while using old font packages with
+% \margintag{core}
+% \XeLaTeX\ and \LuaLaTeX.
+% \item Added \cs{ifblank} and \cs{ifstrequal} to \brand{MathJax} emulation.
+% \margintag{\brand{MathJax}}
+% \item \pkg{multirow}: Allow \cs{par} per v2.7.
+% \margintag{packages}
+% \item \pkg{acro}: Updated to v3.5.
+% \item \pkg{fancyhdr}: Updated to v4.0.
+% \item \pkg{changes}: Updated to v4.0.1.
+% \item \pkg{epsfig}, \pkg{rotating}: Now work inside \env{lateximage}.
+% \item \pkg{amscdx}: Verified to work with \SVG\ math.
+% Warning added about use with \brand{MathJax}.
+% \item Added \brand{MathJax} emulation for \pkg{isomath}, \pkg{mattens},
+% \pkg{maybemath}, \pkg{skmath}, \pkg{tensor}.
+% \item Improved \brand{MathJax} emulation for \pkg{siunitx} \cs{ang},
+% \cs{num}, \cs{SI}.
+% \item Added \pkg{epsf}, \pkg{impnattypo}, \pkg{isotope},
+% \pkg{lpic}, \pkg{luavlna},
+% \pkg{mdwmath}, \pkg{pinlabel}, \pkg{rlepsf},
+% \pkg{tikz-imagelabels}, \pkg{xevlna}.
+% \item Verified to work as-is: \pkg{tensind}.
+% \end{itemize}
+% \needspace{2\baselineskip}
+% \item[v0.894:] \brand{MathJax} additions and improvements.
+% \begin{itemize}
+% \item Improved warning message for enabling \SVG\ graphics for
+% \margintag{\brand{MathJax}}
+% select math expressions while using \brand{MathJax}.
+% \item Accept and ignore a star for \cs{hspace}.
+% \item Ignores \cs{arabic}, \cs{number}, \cs{noalign}.
+% \item Added \brand{MathJax} emulation for \pkg{backnaur},
+% \pkg{colortbl}, \pkg{nicematrix}.
+% \margintag{packages}
+% \item \pkg{booktabs}: \brand{MathJax} emulation now absorbs and discards trim.
+% \item \pkg{menukeys}: Updated to v1.6.1.
+% \end{itemize}
+% \needspace{2\baselineskip}
+% \item[v0.893:] Minor fixes, more packages.
+% \begin{itemize}
+% \item Added \brand{MathJax} emulation for \cs{mathnormal}.
+% \margintag{\brand{MathJax}}
+% \item Fixed \pkg{pstricks} \env{pspicture*}.
+% \margintag{packages}
+% \item Fixed \pkg{tikz} font macros.
+% \item \pkg{braket}: Now uses the \brand{MathJax} extension.
+% \item Added \pkg{esvect}, \pkg{fixmath}, \pkg{keystroke}, \pkg{mathastext},
+% \pkg{menukeys}, \pkg{picinpar}, \pkg{plimsoll}, \pkg{repltext},
+% \pkg{selectp}, \pkg{seqsplit}, \pkg{simplebnf}, \pkg{statistics},
+% \pkg{swfigure}.
+% \item Added \brand{MathJax} emulation for \pkg{mathspec}.
+% \item Verified to work as-is for \pkg{apxproof}, \pkg{syntaxdi}, \pkg{venndiagram}.
+% \end{itemize}
+% \needspace{2\baselineskip}
+% \item[v0.892:] \pkg{minted}, \pkg{fvextra}, \brand{MathJax} \cs{left} \Slash \cs{right}.
+% \begin{itemize}
+% \item \pkg{fourier}, \pkg{libertinust1math}, \pkg{newpxmath}, \pkg{newtxmath},
+% \margintag{\brand{MathJax}}
+% \pkg{newtxsf}, \pkg{unicode-math}: Added \brand{MathJax}
+% \cs{left} \Slash \cs{right} support for additional delimiters.
+% \item \pkg{textpos}: Updated to v1.10.
+% \margintag{packages}
+% \item \pkg{xcolor}: Fixed optional args for \cs{fcolorbox} and related.
+% \item Added \pkg{fvextra}, \pkg{minted}.
+% \end{itemize}
+% \needspace{2\baselineskip}
+% \item[v0.891:] \brand{MathJax} additions and improvements.
+% \begin{itemize}
+% \item Now displays inline \cs{verb} text as \cs{texttt}.
+% \margintag{core}
+% \item Fixed \pkg{alltt} and verbatims with \LaTeX\ lists.
+% \item Now generates an error if nested each of \env{warpHTML}, \env{warpprint}, \env{warpMathJax}
+% inside itself.
+% \item Added \brand{MathJax} \prog{textmacros} extension, allowing
+% \margintag{\brand{MathJax}}
+% formatting inside \cs{text}.
+% \item \pkg{biblatex}, \pkg{hyperref}: Added back page references.
+% \margintag{packages}
+% \item \pkg{fancyvrb}: Fixed \env{BVerbatim} with a label.
+% \item \pkg{listings}: Fixed \brand{MathJax} with captions, improved \HTML\ sanitation.
+% \item \pkg{babel-french}: Fixed \cs{texorpdfstring} conflict.
+% \item Now honors Greek package options for \pkg{mathdesign},
+% \pkg{mathpazo}, \pkg{mathptmx},
+% \pkg{newpxmath}, \pkg{newtxmath}.
+% \item Improved \brand{MathJax} for \pkg{colonequals}, \pkg{mathdesign},
+% \pkg{mathdots}, \pkg{mathfixs}, \pkg{mathtools}, \pkg{multiobjective},
+% \pkg{nicefrac}, \pkg{shuffle}, \pkg{units}.
+% \item \pkg{unicode-math}: Added Greek macros, as well as macros for
+% the first several categories listed in \cmds{texdoc unimath-symbols}.
+% Improved symbol shape macros with Greek. Improved documentation.
+% \item Added \pkg{bussproofs}, \pkg{cmbright}, \pkg{fourier},
+% \pkg{kpfonts}, \pkg{kpfonts-otf},
+% \pkg{libertinust1math}, \pkg{scalerel}, \pkg{txgreeks}.
+% \end{itemize}
+% \needspace{2\baselineskip}
+% \item[v0.89:] Additional \brand{MathJax} support.
+% \begin{itemize}
+% \item Adapted to upcoming \LaTeX\ kernel changes.
+% \margintag{core}
+% \item Allows load of \pkg{amsmath} before \pkg{lwarp}.
+% \item Also removes \filenm{*.bbl} when cleaning aux files.\margintag{\prog{lwarpmk}}
+% \item \brand{MathJax}: Neutralized \cs{protect}, \cs{mathcode} and related,
+% \margintag{\brand{MathJax}}
+% ligatures. Fixed nested environments.
+% \item \pkg{caption}: Updated for v3.5, fix for label sep.
+% \margintag{packages}
+% \item \pkg{thmtools}: Updated for v0.72. Fixed \optn{swapnumber}, \optn{margin}.
+% \item Improved \brand{MathJax} for \pkg{centernot}, \pkg{mathtools},
+% \pkg{mismath}, \pkg{SIunits}, \pkg{siunitx}, \pkg{statmath}.
+% \item Added \brand{MathJax} emulation for \pkg{accents}, \pkg{hepunits},
+% \pkg{hhtensor}, \pkg{mathalpha}, \pkg{mathdesign},
+% \pkg{mathpazo}, \pkg{mathptmx},
+% \pkg{mleftright}, \pkg{newpxmath}, \pkg{newtxmath}, \pkg{newtxsf},
+% \pkg{pxfonts}, \pkg{shuffle}, \pkg{txfonts},
+% \pkg{upgreek}, \pkg{ushort}.
+% \item Verified to work as-is: \pkg{authoraftertitle}.
+% \end{itemize}
+% \needspace{2\baselineskip}
+% \item[v0.88:] Indexing, boxing, theorems.
+% \begin{itemize}
+% \item \textgreen{Now has programmed support for more than 500 packages and classes,
+% of which more than 60 also support \brand{MathJax}.}
+% \item Fixed: \cs{ref*}, and also added \brand{MathJax} emulation.
+% \margintag{core}
+% \item If starting a new paragraph, \cs{hrulefill} creates a
+% \element{div} with a thin horizontal line across the page.
+% Use instead of \cs{hrule}.
+% \item Fixed: Use \cs{chaptername} where appropriate.
+% \item Fixed: Inline links causing extraneous paragraphs.
+% \item Added \cmds{lwarpmk -v} to print the version number.
+% \margintag{\prog{lwarpmk}}
+% \item Added the \optn{IndexRef} option to control the display of index entries.
+% \margintag{indexing}
+% See \cref{sec:optionindexref}.
+% \item Added \cs{IndexPageSeparator} and \cs{IndexRangeSeparator} for custom index styles.
+% \item Added support for \pkg{gindex}, \prog{xindex}.
+% \item Verified to work as-is with \pkg{varindex}.
+% \item \pkg{cleveref}, \pkg{varioref}: Fix for starred macros.
+% \margintag{packages}
+% \item \pkg{varioref}: Removed page-related text from \HTML\ output.
+% \item \pkg{xfakebold}: Updated to v0.08, using \pkg{pdfrender}.
+% \item \pkg{caption}, \pkg{scrextend}: Fixed \cs{caption*}.
+% \item Added \pkg{fbox}, \pkg{shadethm}, \pkg{tcolorbox}, \pkg{termcal},
+% \pkg{thmbox}, \pkg{thmtools}.
+% \end{itemize}
+% \needspace{2\baselineskip}
+% \item[v0.87:] \brand{MathJax}, bibliography packages.
+% \begin{itemize}
+% \item Added boolean \bool{FixSmallCaps} for fonts which render small caps as
+% \margintag{core}
+% all caps.
+% \item Fixed \cs{bibliography} to use the \HTML\ version's \filenm{.bbl} file.
+% Previously the \HTML\ bibliography relied on the print version's \filenm{.bbl},
+% thus would fail if the print document had not yet been created.
+% \item Added \cs{ifstar} and \cs{ifnextchar} to \brand{MathJax}, and
+% \margintag{\brand{MathJax}}
+% removed \cs{DeclareIfstar}.
+% \watchout[Removed \cs{DeclareIfstar}]
+% See \cref{sec:limitscustomizemathjax}.
+% \item \pkg{physics}: Now supports the \brand{MathJax} v3 extension.
+% \margintag{packages}
+% \item \pkg{mathtools}: Improved \cs{underbrakcet}, \cs{overbracket} for \brand{MathJax}.
+% \item \pkg{nccmath}: Improved \cs{underrel} for \brand{MathJax}.
+% \item \pkg{mhchem}: Now supports the \brand{MathJax} v3 extension for \cs{ce} inside math.
+% \item \pkg{cancel}: Now supports the \brand{MathJax} v3 extension.
+% \item \pkg{embrac}: Neutralized kerning for improved \HTML\ conversion.
+% \item Added \pkg{citeref}, \pkg{drftcite}, \pkg{jurabib}, \pkg{multibib}, \pkg{splitbib}.
+% \item Verified to work as-is with \pkg{bibtopic}, \pkg{collref}, \pkg{mciteplus}.
+% \end{itemize}
+% \needspace{2\baselineskip}
+% \item[v0.86:] \brand{MathJax} major updates.
+% \begin{itemize}
+% \item Fixed: Filename if named files with \filenm{*}, parens, period in section name.
+% \margintag{core}
+% \item Fixed: Labels in \env{eqnarray}, \env{lateximage}.
+% \item Updated to \brand{MathJax} v3. New repository.
+% \margintag{\brand{MathJax}}
+% \item Fixed forward references for \brand{MathJax}.
+% \item Improved \brand{MathJax} equation number formatting, now compatible with
+% \pkg{amsmath} \cs{numberwithin} for chapters, sections, subsections,
+% as well as \pkg{amsmath} \env{subequation}s.
+% See \cref{sec:limitscustomizemathjax}.
+% \item Added \cs{DeclareIfstar} to define starred \TeX\ macros in \brand{MathJax}.
+% See \cref{sec:limitscustomizemathjax}.
+% \item Generates an error if \cs{MathJaxFilename} file does not exist.
+% \item \pkg{mathtools}, \pkg{nccmath}, \pkg{physics}:
+% \margintag{packages}
+% Added starred macros for \brand{MathJax}.
+% \item \pkg{nccmath}: Fixed \cs{nr}, \cs{displaybreak} for \brand{MathJax}.
+% \item \pkg{xcolor}: Fixed \cs{textcolor} with \pkg{babel-french}.
+% \end{itemize}
+% \needspace{2\baselineskip}
+% \item[v0.85:] \pkg{fontspec}
+% \begin{itemize}
+% \item \pkg{fontspec}: Fixed core font change macros for world languages.
+% \margintag{packages}
+% \item \pkg{acro}: Due to v3 changes, when defining acronym formats,
+% \watchout[\pkg{acro} formats]
+% use \cs{textbf} instead of \cs{bfseries}, etc.
+% \item Fixed \pkg{idxlayout}, \pkg{mathtools}, \pkg{titlesec}, \pkg{url}.
+% \end{itemize}
+% \needspace{2\baselineskip}
+% \item[v0.84:] Previous/next page links, numerous fixes.
+% \begin{itemize}
+% \item Added documentation of \env{BlockClass} and \cs{InlineClass}
+% for \CSS\ \element{div}s and \element{span}s.
+% \margintag{docs}
+% See \cref{sec:classstyle}.
+% \item Added \cs{LinkPrevious}, \cs{LinkNext} page links.
+% See \cref{sec:htmlsettings}.
+% \item Added \cs{FirstPageBottom}.
+% \watchout[home page footer changed]
+% Home page no longer shares \cs{PageBottom}.
+% See \cref{sec:htmlsettings}.
+% \item Improved coexistence with \pkg{comment}, support for nested environments.
+% \margintag{core}
+% \item No longer requires but still supports the \pkg{caption} package.
+% \item Improved filenames and \HTML\ titles when using special characters.
+% \item Change: Append \filenm{-0} to section named Index
+% \watchout{previously \_index}
+% to distinguish from \filenm{index.html}
+% \item Fixed style tags for \cs{multicolumn}, \cs{multirow}.
+% \item Fixed spacing in \env{tabbing}.
+% \item Fixed \env{lateximage} for: \env{quote}, \env{quotation}, \env{verse},
+% \env{center}, \env{flushleft}, \env{flushright},
+% \element{par} tags, packages \pkg{verbatim}, \pkg{alltt}, \pkg{epigraph}.
+% \item Fixed \pkg{textcomp} due to integration into \LaTeX\ kernel.
+% \item Fixed \cs{itshape}, etc. Adapted to \LaTeX\ \pkg{fontaxes} integration.
+% \item Fixed \cs{@fnsymbol}.
+% \item Warns about section names with dollar-delimited math.
+% \item Warns about a \element{span} containing a float, caption, section,
+% \pkg{mdframed}, or other \element{div} object.
+% \item Only warn about \XeTeX\ logo and \pkg{graphics} if actually used \cs{Xe}.
+% \item \cmds{lwarpmk clean} also removes \filenm{comment_*.cut}.
+% \margintag{\prog{lwarpmk}}
+% \item \pkg{scrextend}, \pkg{scrartcl}, \pkg{scrbook}: Added \cs{titlehead},
+% \margintag{packages}
+% \cs{subject}, \cs{subtitle}, \cs{publishers}.
+% \item \pkg{titling}: Fixed \cs{printthanks}.
+% \item \pkg{memoir}, \pkg{abstract}: Fixed for updated \pkg{memoir}.
+% \item \pkg{memoir}: Fixed \cs{newcomment}, pagenotes, crossreferences.
+% Fixed setting a recursive name.
+% \item Fixed or improved: \pkg{amsthm}, \pkg{backref}, \pkg{biblatex}, \pkg{fixme},
+% \pkg{nfssext-cfr}, \pkg{ntheorem}, \pkg{parcolumns},
+% \pkg{realscripts}, \pkg{rotfloat}, \pkg{titling}.
+% \item Added \pkg{boxedminipage}, renamed from \pkg{boxedminipage2e} per author.
+% \item Verified to work as-is with \pkg{mcite}.
+% \end{itemize}
+% \needspace{2\baselineskip}
% \item[v0.83:] \pkg{memoir} fixes.
% \begin{itemize}
-% \item \pkg{memoir}: Various fixes and updates, but subcaption labels
+% \item \pkg{memoir}: Various fixes and updates.
% \margintag{packages}
-% still need work. (Out of time\dots)
% \item \pkg{physunits}: Updated to v1.0.4.
% \end{itemize}
% \needspace{2\baselineskip}
@@ -3447,7 +3837,7 @@
% \cmidrule(r){1-1}\cmidrule(l){2-2}
% (hard coded as ``image'') & \cs{ImageAltText} \\
% \cs{mathimagename} & \cs{MathImageAltText} \\
-% \cs{pacakgediagramname} & \cs{PackageDiagramAltText} \\
+% \cs{packagediagramname} & \cs{PackageDiagramAltText} \\
% \end{tabular}
% \end{center}
% \item Added \cs{ImageAltText} for the default \HTML\ \attribute{alt} text for
@@ -3808,7 +4198,7 @@
% \item \pkg{xfrac}: Improved \CSS.
% \item \pkg{textcomp} and \pkg{xunicode}: Fix conflicts with \cs{textcircled}.
% \item \pkg{ulem}: Improved compatibility with \pkg{CJKulem}, \env{lateximage}.
-% \item MathJax and \pkg{siunitx}: Removed inoperable extension.
+% \item \brand{MathJax} and \pkg{siunitx}: Removed inoperable extension.
% \item Added \pkg{bitpattern}, \pkg{pdfcomment},
% \pkg{pdfmarginpar}, \pkg{tram}, \pkg{unitsdef}, \pkg{xechangebar}.
% \item Added \pkg{musicography}, \pkg{octave}, \pkg{semantic-markup}.
@@ -3890,10 +4280,10 @@
% \margintag{\DVI\ \prog{latex}}
% \item Fix for \optn{-\/-shell-escape} with \prog{latexmk}.
% \margintag{\prog{latexmk}}
-% \item Updated MathJax script to v2.7.4.
+% \item Updated \brand{MathJax} script to v2.7.4.
% \margintag{math}
-% \item Fix: Mathjax chapter number removed from non-numeric tagged equations.
-% \item Added MathJax support for \pkg{nicefrac}, \pkg{units}.
+% \item Fix: \brand{Mathjax} chapter number removed from non-numeric tagged equations.
+% \item Added \brand{MathJax} support for \pkg{nicefrac}, \pkg{units}.
% \item Fix for \cs{[} and \cs{]} with \cs{displaymathnormal}.
% \item Fix for \cs{includegraphics} filename expansion.
% \margintag{images}
@@ -3958,7 +4348,7 @@
% \needspace{2\baselineskip}
% \item[v0.57:] \pkg{algorithm2e}, \pkg{float} styles, tabular packages, internal improvements.
% \begin{itemize}
-% \item Added support for MathJax equations with \cs{footnote}, \cs{footnotemark}.
+% \item Added support for \brand{MathJax} equations with \cs{footnote}, \cs{footnotemark}.
% \margintag{MathJax}
% \item Added \cs{StartDefiningMath} and \cs{StopDefiningMath} for
% \margintag{math macros}
@@ -3968,7 +4358,7 @@
% \margintag{dynamic math}
% delimit math expressions which depend on a variable condition
% such as a counter. Such expressions will not be hashed for reuse,
-% and will be converted to \SVG\ math images even when MathJax is enabled.
+% and will be converted to \SVG\ math images even when \brand{MathJax} is enabled.
% See \cref{sec:mathdynamic}.
% \item Renamed \cs{EndDefiningTabulars} to \cs{StopDefiningTabulars}.
% \watchout[new name]
@@ -4135,7 +4525,7 @@
% \item Improved \cs{ensuremath} hashing expansion.
% \item Fix: \env{equation*} with \env{split}.
% \item \env{tabbing} now works inside a \env{lateximage}. Use for math in \env{tabbing}.
-% \item Fix: MathJax script was not executing in some conditions.
+% \item Fix: \brand{MathJax} script was not executing in some conditions.
% \margintag{MathJax}
% \item Added \cs{CustomizeMathJax} to add custom functions.
% See \cref{sec:limitsmath}.
@@ -4169,8 +4559,8 @@
% \item Improved support for display math containing complicated math objects,
% such as \pkg{tikz-cd}. See \cref{sec:displaymathother}.
% \item Fix: \cs{addcontentsline} inside \SVG\ math.
-% \item Fix: SVG math containing an embedded \env{lateximage}.
-% \item MathJax now handles \cs{ensuremath} in expressions.\margintag{MathJax}
+% \item Fix: \SVG\ math containing an embedded \env{lateximage}.
+% \item \brand{MathJax} now handles \cs{ensuremath} in expressions.\margintag{MathJax}
% \item Fix: Added \env{alignat} environment. \margintag{misc. fixes}
% \item Fix: \pkg{afterpackage} no longer required, which conflicted with \pkg{scrlfile}.
% \item Fix: \pkg{titling} \cs{thanks} mark.
@@ -4197,11 +4587,11 @@
% ^^A Display math and other forms of \SVG\ image such as \env{picture} and
% ^^A \tikz\ still use individual image files which are recreated each time
% ^^A \cmds{lwarpmk limages} is run.
-% ^^A \item Fixes: SVG math and/or \cs{underline} in a sectioning file name.
+% ^^A \item Fixes: \SVG\ math and/or \cs{underline} in a sectioning file name.
% ^^A \item Improved \SVG\ display math and tags.
% ^^A \item Improved \SVG\ math and \pkg{siunitx} \attribute{alt} tags.
% ^^A \item Improved \pkg{siunitx} units.
-% ^^A \item Fix: \cs{ensuremath} with MathJax now creates a \env{lateximage}.
+% ^^A \item Fix: \cs{ensuremath} with \brand{MathJax} now creates a \env{lateximage}.
% ^^A \item Fix: \cs{centering}, etc. in \SVG\ math, \env{lateximage}, \tikz.
% ^^A \item Fix: Made various macros robust,
% ^^A additionally fixing \pkg{authblk}.\margintag{misc. fixes}
@@ -4274,7 +4664,7 @@
% ^^A \item \cs{PrintStack} changed to \cs{LWRPrintStack}.\watchout[name change]
% ^^A \item Fix: Empty lines between \env{tabular} rows.\margintag{misc. fixes}
% ^^A \item Fix: Stack unnesting.
-% ^^A \item Fix: SVG math and \env{lateximage}s in numerous situations.
+% ^^A \item Fix: \SVG\ math and \env{lateximage}s in numerous situations.
% ^^A \item Fix: Spaces in \cs{usepackage}.
% ^^A \item Fix: Now allows \brand{MathJax} inside \env{verse}.
% ^^A \end{itemize}
@@ -4296,7 +4686,7 @@
% ^^A \item Fix: Empty lines between \env{tabular} rows.\margintag{misc. fixes}
% ^^A \item Fix: ``Improper \cs{prevdepth}'' with minipages, lists.
% ^^A \item Fix: Incorrect \SVG\ math and |lateximage|s with \pkg{subfig}.
-% ^^A \item Fix: Lateximages from incorrect pages with Mathjax.
+% ^^A \item Fix: Lateximages from incorrect pages with \brand{Mathjax}.
% ^^A \item Fix: Missing sidetoc if using \pkg{listings}.
% ^^A \item Fix: Added an \pkg{array} emulation package.
% ^^A \item Added
@@ -4969,7 +5359,7 @@
% While generating \HTML\ output, \SVG\ files are used in place of \PDF.
% Other formats such as \PNG\ and \JPG\ are used as-is.
%
-% SVG images may be used for math,
+% \SVG\ images may be used for math,
% and are also used for \env{picture}, \tikz, and similar environments.
% The \SVG\ format has better browser and e-book support
% than \MathML\ (as of this writing),
@@ -5074,7 +5464,7 @@
% Package names are colored according to their support level:
% \begin{description}
% \item[\spkg{name}:] Supported as-is.
-% \item[\mpkg{name}:] Modifed to work with \HTML\ output, and also
+% \item[\mpkg{name}:] Modifed to work with \HTML\ output, and perhaps also
% as print output in \SVG\ math or \env{lateximage} environments.
% \item[\epkg{name}:] Emulated for \HTML\ output.
% \item[\ipkg{name}:] Ignored for \HTML\ output, but provides source-level compatibility.
@@ -5081,6 +5471,7 @@
% \item[\sjax:] Supported as-is for \brand{MathJax}, subject to limitations.
% \item[\ejax:] Emulated for \brand{MathJax} using custom macros, subject to limitations.
% \item[\ijax:] Ignored by \brand{MathJax}, but may be used in the document source.
+% May be converted to \SVG\ images.
% \end{description}
%
% \renewcommand{\arraystretch}{1.5}
@@ -5119,8 +5510,8 @@
%
% \midrule
%
-% Languages: & \spkg{babel}, \spkg{polyglossia}.
-% \spkg{cjkpunct}, \spkg{xeCJK}.\\
+% Languages: & \spkg{babel}, \spkg{cjkpunct}, \ipkg{impnattypo}, \mpkg{luavlna},
+% \spkg{polyglossia}, \spkg{xeCJK}, \mpkg{xevlna}. \\
%
% Chinese: & C\TeX, \spkg{ctex},
% \spkg{upzhkinsoku},
@@ -5159,7 +5550,7 @@
% \ipkg{pagegrid}, \ipkg{pagesel}, \epkg{parallel}, \epkg{parcolumns},
% \ipkg{pdfcolparallel}, \ipkg{pdfcolparcolumns}, \ipkg{pdfcrypt}, \ipkg{pdfprivacy},
% \ipkg{preview}, \epkg{ragged2e}, \ipkg{returntogrid}, \ipkg{rmpage},
-% \epkg{scrlayer-scrpage}, \epkg{scrpage2}, \epkg{setspace},
+% \epkg{scrlayer-scrpage}, \epkg{scrpage2}, \epkg{setspace}, \ipkg{selectp},
% \ipkg{textarea}, \ipkg{threadcol},
% \ipkg{thumb}, \ipkg{thumbs}, \ipkg{titleps}, \ipkg{tocenter},
% \ipkg{turnthepage}, \ipkg{twoup}, \ipkg{typearea},
@@ -5184,21 +5575,28 @@
% \ipkg{tocbasic}, \mpkg{tocbibind}, \mpkg{tocdata},
% \ipkg{tocloft}, \ipkg{tocstyle}, \spkg{tocvsec2}. \\
%
-% Title page: & \cs{maketitle}, \env{titlepage}, \mpkg{authblk}, \mpkg{titling}. \\
+% Title page: & \cs{maketitle}, \env{titlepage}, \mpkg{authblk},
+% \spkg{authoraftertitle}, \mpkg{titling}. \\
%
% Front \&\ back matter: & \mpkg{abstract}, \mpkg{appendix}. \\
%
-% Indexing: & \prog{makeindex} and \prog{xindy} are supported, with hyperlinks.
+% Indexing: & \prog{makeindex}, \prog{xindy}, and \prog{xindex} are supported,
+% with hyperlinks.
%
-% \spkg{hvindex}, \epkg{idxlayout}, \mpkg{imakeidx}, \epkg{index}, \mpkg{makeidx},
-% \epkg{repeatindex}, \mpkg{splitidx}.
+% \smallskip
+%
+% \mpkg{gindex}, \spkg{hvindex}, \epkg{idxlayout}, \mpkg{imakeidx},
+% \epkg{index}, \mpkg{makeidx},
+% \epkg{repeatindex}, \mpkg{splitidx}, \spkg{varindex}, \spkg{xindex}.
% \\
%
% Glossary: & \mpkg{gloss}, \mpkg{glossaries} and \prog{xindy}, \mpkg{nomencl}.\\
%
-% Bibliography: & \spkg{babelbib}, \mpkg{backref}, \mpkg{biblatex}, \mpkg{bibunits},
-% \mpkg{chapterbib}, \mpkg{cite}, \ipkg{hypernat}, \mpkg{natbib},
-% \spkg{notes2bib}, \ipkg{showtags}.
+% Bibliography: & \spkg{babelbib}, \spkg{bibtopic}, \mpkg{backref},
+% \mpkg{biblatex}, \mpkg{bibunits},
+% \mpkg{chapterbib}, \mpkg{cite}, \mpkg{citeref}, \spkg{collref}, \mpkg{drftcite},
+% \ipkg{hypernat}, \mpkg{jurabib}, \spkg{mcite}, \spkg{mciteplus}, \mpkg{multibib},
+% \mpkg{natbib}, \spkg{notes2bib}, \mpkg{splitbib}, \ipkg{showtags}.
%
% \\
%
@@ -5205,10 +5603,10 @@
% \midrule
%
% Cross-references: &
-% \ipkg{bookmark}, \epkg{breakurl}, \spkg{cleveref}, \epkg{fancyref},
+% \ipkg{bookmark}, \epkg{breakurl}, \spkg{cleveref}, \mpkg{fancyref},
% \ipkg{hypdestopt}, \epkg{hyperref}, \epkg{perpage}, \mpkg{prettyref},
-% \epkg{titleref}, \mpkg{url}, \spkg{varioref}, \spkg{xcite},
-% \mpkg{xr}, \mpkg{xr-hyper}, \ipkg{xurl}. \\
+% \epkg{titleref}, \mpkg{url}, \mpkg{varioref}, \spkg{xcite},
+% \mpkg{xr}, \mpkg{xr-hyper}, \ipkg{xurl}, \spkg{zref}. \\
%
% \midrule
%
@@ -5237,25 +5635,42 @@
% due to native \LaTeX\ processing.\\
%
% Theorems: & Native \LaTeX\ theorems,
-% \mpkg{amsthm}, \mpkg{ntheorem}, \mpkg{theorem}. \\
+% \mpkg{amsthm}, \spkg{apxproof}, \mpkg{ntheorem}, \mpkg{shadethm},
+% \mpkg{theorem}, \mpkg{thmbox}, \mpkg{thmtools}. \\
%
% Additional math: & Math fonts via \SVG\ images,
-% \spkg{amscd}, \spkg{autobreak}\ejax, \ipkg{autonum},
-% \mpkg{backnaur}, \mpkg{bm}\ejax, \spkg{braket}\ejax,
-% \mpkg{breqn}, \mpkg{cases}, \spkg{centernot}\ejax, \spkg{colonequals}\ejax,
-% \spkg{decimal}\ejax,
+% \spkg{accents}\ejax, \spkg{amscd}\sjax, \spkg{amscdx}, \spkg{autobreak}\ejax, \ipkg{autonum},
+% \mpkg{backnaur}\ejax, \mpkg{bm}\ejax, \spkg{braket}\sjax,
+% \mpkg{breqn}\ijax, \mpkg{bussproofs}\sjax, \mpkg{cases}\ijax,
+% \spkg{centernot}\ejax, \spkg{cmbright}\ejax,
+% \spkg{colonequals}\ejax, \spkg{decimal}\ejax,
% \spkg{delarray}, \mpkg{DotArrow}\ejax, \spkg{dotlessi}\ejax, \spkg{dotlessj}\sjax,
-% \spkg{extarrows}\ejax, \spkg{fouridx}\ejax,
-% \spkg{guass}, \spkg{icomma}\ijax, \spkg{jkmath},
-% \spkg{leftidx}\ejax, \spkg{mathcomp}\ejax, \spkg{mathdots}\ejax,
-% \spkg{mathfixs}\ejax, \spkg{mathpunctspace}\ijax,
-% \spkg{mathspec}, \mpkg{mathtools}\ejax, \mpkg{mismath}\ejax,
+% \spkg{esvect}\ejax, \spkg{extarrows}\ejax, \spkg{fixmath}\ejax,
+% \spkg{fouridx}\ejax, \spkg{fourier}\ejax,
+% \spkg{guass}, \spkg{hhtensor}\ejax, \spkg{icomma}\ijax,
+% \spkg{isomath}\ejax, \spkg{jkmath},
+% \spkg{kpfonts}\ejax, \spkg{kpfonts-otf}\ejax,
+% \spkg{leftidx}\ejax, \spkg{libertinust1math}\ejax, \spkg{mathalpha}\ejax,
+% \spkg{mathastext}\ejax, \spkg{mathcomp}\ejax, \spkg{mathdesign}\ejax,
+% \spkg{mathdots}\ejax, \spkg{mathfixs}\ejax,
+% \spkg{mathpazo}\ejax, \spkg{mathptmx}\ejax,
+% \spkg{mathpunctspace}\ijax,
+% \spkg{mathspec}\ejax, \mpkg{mathtools}\ejax, \spkg{mattens}\ejax,
+% \spkg{maybemath}\ijax, \spkg{mdwmath}\ejax,
+% \mpkg{mismath}\ejax, \spkg{mleftright}\ejax,
% \spkg{multiobjective}\ejax, \mpkg{nccmath}\ejax,
-% \spkg{nicematrix}, \spkg{noitcrul}\ejax, \spkg{pb-diagram},
-% \ipkg{resizegather}, \spkg{rmathbr}\ejax, \spkg{stackrel}\ejax,
-% \mpkg{statex2}\ejax, \spkg{statmath}\ejax,
-% \spkg{subsupscripts}\ejax, \spkg{textualicomma}\ijax,
-% \spkg{unicode-math}\ejax, \mpkg{witharrows}\ejax,
+% \spkg{nicematrix}\ejax, \spkg{noitcrul}\ejax,
+% \spkg{newpxmath}\ejax, \spkg{newtxmath}\ejax, \spkg{newtxsf}\ejax,
+% \spkg{pb-diagram},
+% \spkg{pxfonts}\ejax,
+% \ipkg{resizegather}\ijax, \spkg{rmathbr}\ejax, \spkg{scalerel}\ejax,
+% \epkg{shuffle}\ejax, \spkg{skmath}\ejax, \spkg{stackrel}\ejax,
+% \mpkg{statex2}\ejax, \mpkg{statistics}, \spkg{statmath}\ejax,
+% \spkg{subsupscripts}\ejax, \spkg{tensind}, \spkg{tensor}\ejax,
+% \spkg{textualicomma}\ijax,
+% \spkg{txfonts}\ejax, \spkg{txgreeks}\ejax,
+% \spkg{unicode-math}\ejax, \spkg{upgreek}\ejax,
+% \spkg{ushort}\ejax, \mpkg{witharrows}\ejax,
% \mpkg{xfakebold}\ejax, \mpkg{xy}.
% Many others work as-is. \\
%
@@ -5276,8 +5691,9 @@
% \ipkg{fix2col}, \ipkg{flafter},
% \epkg{float}, \epkg{floatflt}, \epkg{floatrow}, \ipkg{fltrace}, \ipkg{ftcap},
% \ipkg{hypcap}, \mpkg{keyfloat}, \ipkg{morefloats}, \ipkg{multicap}, \spkg{newfloat},
-% \epkg{nonfloat}, \ipkg{placeins}, \epkg{rotfloat}, \ipkg{stfloats},
+% \epkg{nonfloat}, \mpkg{picinpar}, \ipkg{placeins}, \epkg{rotfloat}, \ipkg{stfloats},
% \mpkg{subcaption}, \mpkg{subfig}, \epkg{subfigure}, \spkg{subfloat},
+% \epkg{swfigure},
% \epkg{topcapt}, \epkg{trivfloat}, \epkg{wrapfig}. \\
%
% \midrule
@@ -5285,7 +5701,7 @@
% Tabular: &
% \env{tabular} environment, \mpkg{array}\ejax, \epkg{arydshln}\ejax,
% \mpkg{bigdelim}\ejax, \mpkg{bigstrut}\ejax, \mpkg{booktabs}\ejax,
-% \mpkg{colortbl}, \mpkg{ctable}, \mpkg{diagbox}, \mpkg{hhline}\ejax, \epkg{longtable},
+% \mpkg{colortbl}\ijax, \mpkg{ctable}, \mpkg{diagbox}, \mpkg{hhline}\ejax, \epkg{longtable},
% \epkg{ltablex}, \epkg{ltxtable},
% \mpkg{multirow}\ejax, \epkg{supertabular}, \epkg{tabularx}, \epkg{tabulary},
% \epkg{threeparttable}, \mpkg{threeparttablex},
@@ -5299,16 +5715,20 @@
% References to \PDF\ files are changed to \SVG, other image types
% are accepted as well.
% \cs{rotatebox} and \cs{scalebox} are supported as well as \HTML\ can handle.
-% \epkg{rotating} is emulated but all objects are unrotated.
+% \epkg{rotating} is emulated but all objects are unrotated in \HTML.
% \env{picture}, \mpkg{tikz}, and \mpkg{xy} are converted to an \SVG\ image.
%
+% \smallskip
+%
% \mpkg{asymptote}, \spkg{curves}, \spkg{datatool},
-% \spkg{eepic}, \epkg{epsfig}, \spkg{epstopdf},
+% \spkg{eepic}, \mpkg{epsf}, \epkg{epsfig}, \spkg{epstopdf},
% \epkg{figsize}, \ipkg{fitbox},
-% \spkg{grffile}, \mpkg{luamplib}, \epkg{media9},
-% \epkg{movie15}, \epkg{multimedia}, \mpkg{overpic},
+% \spkg{grffile}, \mpkg{lpic}, \mpkg{luamplib}, \epkg{media9},
+% \epkg{movie15}, \epkg{multimedia}, \mpkg{overpic}, \spkg{pict2e}, \mpkg{pinlabel},
% \mpkg{psfrag}, \mpkg{psfragx}, \mpkg{pst-eps}, \mpkg{pstool}, \mpkg{pstricks},
-% \spkg{rviewport}, \mpkg{svg}, \spkg{svg-extract}, \spkg{tikz-3dplot}. \\
+% \mpkg{rlepsf},
+% \spkg{rviewport}, \mpkg{svg}, \spkg{svg-extract}, \mpkg{tikz}, \spkg{tikz-3dplot},
+% \mpkg{tikz-imagelabels}, \mpkg{xy} \\
%
% \midrule
%
@@ -5337,10 +5757,11 @@
% \mpkg{quoting}, \mpkg{verse}. \\
%
% Verbatim: &
-% \mpkg{fancyvrb}, \mpkg{moreverb}, \spkg{shortvrb}, \mpkg{verbatim}. \\
+% \mpkg{fancyvrb}, \mpkg{fvextra}, \mpkg{moreverb}, \spkg{shortvrb}, \mpkg{verbatim}. \\
%
-% Frames: & \mpkg{boxedminipage2e}, \mpkg{fancybox}, \mpkg{framed}, \mpkg{mdframed},
-% \epkg{niceframe}, \epkg{shadow}, \epkg{vertbars}. \\
+% Frames: & \mpkg{boxedminipage}, \mpkg{boxedminipage2e},
+% \mpkg{fancybox}, \mpkg{fbox}\ejax, \mpkg{framed}, \mpkg{mdframed},
+% \epkg{niceframe}, \epkg{shadow}, \mpkg{tcolorbox}\ejax, \epkg{vertbars}. \\
%
% Multi-columns: & \epkg{adjmulticol}, \epkg{multicol},
% \ipkg{multicolrule}, \mpkg{vwcol}. \\
@@ -5354,13 +5775,14 @@
% Direct formatting: & \cs{emph}, \cs{textsuperscript},
% \cs{textbf}, etc are supported.
% \cs{bfseries}, etc.\ are only supported in some cases.
-% \mpkg{cancel}, \epkg{ellipsis}, \mpkg{embrac}, \spkg{enparen},
+% \mpkg{cancel}\sjax, \epkg{ellipsis}, \mpkg{embrac}, \spkg{enparen},
% \ipkg{hyphenat}, \epkg{lettrine}, \epkg{lips},
-% \ipkg{lua-check-hyphen}, \ipkg{luacolor}, \epkg{magaz}, \epkg{nolbreaks},
-% \ipkg{normalcolor},
+% \ipkg{lua-check-hyphen}, \ipkg{luacolor}, \epkg{magaz}, \ipkg{moresize},
+% \epkg{nolbreaks}, \ipkg{normalcolor},
% \ipkg{pdfcol}, \ipkg{pdfcolmk},
-% \ipkg{pdfrender}, \epkg{realscripts}, \mpkg{relsize}\ejax,
-% \ipkg{scalefnt}, \epkg{soul}, \epkg{soulpos}, \epkg{soulutf8}, \mpkg{stackengine},
+% \ipkg{pdfrender}, \mpkg{realscripts}, \mpkg{relsize}\ejax,
+% \ipkg{scalefnt}, \mpkg{seqsplit}\ejax, \epkg{soul}, \epkg{soulpos},
+% \epkg{soulutf8}, \mpkg{stackengine},
% \epkg{textfit}, \epkg{thinsp}, \ipkg{trimclip}, \ipkg{truncate},
% \mpkg{ulem}, \mpkg{umoline}, \ipkg{underscore}, \ipkg{uspace},
% \mpkg{xellipsis}. \\
@@ -5389,15 +5811,26 @@
% Appear in \SVG\ math expressions or embedded image environments.
% \mpkg{fontaxes}, \mpkg{nfssext-cfr}, \mpkg{slantsc}, \ipkg{tabfigures}.
%
+% \smallskip
+%
% Tested to work as-is: Special font macros in \spkg{cfr-lm} and others
-% which use \spkg{nfssext-cfr}. \\
+% which use \spkg{nfssext-cfr}.
%
-% Symbols: & Native \LaTeX\ diacriticals, \mpkg{academicons}, \mpkg{bbding},
+% \smallskip
+%
+% Also see the math section for math and \brand{MathJax} support for math font packages. \\
+%
+% Symbols: & Native \LaTeX\ diacriticals, \mpkg{academicons}, \spkg{amssymb}\sjax,
+% \mpkg{bbding},
% \mpkg{chemgreek}, \mpkg{dingbat}, \spkg{euro}, \mpkg{eurosym},
-% \mpkg{fontawesome}, \mpkg{fontawesome5}, \spkg{gensymb}\ejax, \mpkg{marvosym},
-% \spkg{mathcomp}\ejax, \mpkg{metalogo}, \mpkg{metalogox},
-% \mpkg{pifont}, \spkg{textalpha},
-% \mpkg{textcomp}, \spkg{textgreek}, \mpkg{typicons}, \mpkg{xunicode}.
+% \mpkg{fontawesome}, \mpkg{fontawesome5}, \spkg{gensymb}\ejax, \spkg{latexsym}\sjax,
+% \mpkg{marvosym},
+% \mpkg{metalogo}, \mpkg{metalogox},
+% \mpkg{pifont},
+% \spkg{textalpha},
+% \mpkg{textcomp}, \spkg{textgreek},
+% \mpkg{typicons},
+% \mpkg{xunicode}.
% \\
%
% \midrule
@@ -5417,12 +5850,17 @@
% \mpkg{chemmacros}, \mpkg{chemnum},
% \spkg{circuitikz}, \spkg{econometrics}\ejax, \spkg{elements},
% \mpkg{engtlc}\ejax, \spkg{fast-diagram}, \mpkg{ghsystem},
-% \spkg{hepnicenames}, \spkg{heppennames}, \spkg{karnaughmap}, \mpkg{karnaugh-map},
-% \mpkg{listings}, \spkg{linop}, \mpkg{mhchem}\sjax, \spkg{pgfgantt},
-% \mpkg{phfqit}, \spkg{physics}\ejax, \spkg{physunits}\ejax, \spkg{qcircuit},
-% \mpkg{register}, \spkg{simpler-wick},
-% \spkg{slashed}\ejax, \mpkg{steinmetz}\ejax, \spkg{structmech}, \mpkg{struktex}.
-% \spkg{tikz-karnaugh}, \spkg{tikzcodeblocks} \\
+% \spkg{hepnicenames}, \spkg{heppennames}, \spkg{hepunits}\ejax,
+% \mpkg{isotope}\ejax,
+% \spkg{karnaughmap}, \mpkg{karnaugh-map}, \mpkg{keystroke},
+% \mpkg{listings}, \spkg{listingsutf8}, \spkg{linop}, \mpkg{menukeys},
+% \mpkg{mhchem}\sjax, \mpkg{minted}, \spkg{pgfgantt},
+% \mpkg{phfqit}, \spkg{physics}\sjax, \spkg{physunits}\ejax,
+% \spkg{plimsoll}\ejax, \spkg{qcircuit},
+% \mpkg{register}, \mpkg{simplebnf}, \spkg{simpler-wick},
+% \spkg{slashed}\ejax, \mpkg{steinmetz}\ejax, \spkg{structmech}, \mpkg{struktex},
+% \spkg{syntaxdi},
+% \spkg{tikz-karnaugh}, \spkg{tikzcodeblocks}, \spkg{venndiagram} \\
%
% \midrule
%
@@ -5434,6 +5872,10 @@
%
% \midrule
%
+% Calendars: & \mpkg{termcal} \\
+%
+% \midrule
+%
% Admonitions: & \epkg{awesomebox}, \epkg{notes}. \\
%
% Editorial: & \ipkg{changebar}, \spkg{changelog}, \mpkg{changes},
@@ -5447,7 +5889,7 @@
%
% Accessibility: & \epkg{accessibility}\ijax, \ipkg{accsupp}\ijax,
% \ipkg{axessibility}\ijax,
-% \ipkg{pdfcomment}\ijax, \ipkg{tagpdf}. \\
+% \ipkg{pdfcomment}\ijax, \ipkg{repltext}\ijax, \ipkg{tagpdf}. \\
%
% \midrule
%
@@ -6091,7 +6533,7 @@
% create a new file called |tutorial.tex|.
% This may be done several ways:
% \begin{description}
-% \item [Copy from the documentation PDF:] \
+% \item [Copy from the documentation \PDF:] \
%
% A listing is in \cref{fig:tutorial},
% which may be copied/pasted from the figure directly into your own editor,
@@ -6211,10 +6653,10 @@
%
% \item [|lwarp\_mathjax.txt|:] Inserted into the \HTML\ files when
% \brand{MathJax} is used to display math.
-% This file should not be modified by the user.
+% Do not modify, see \cs{MathJaxFilename} instead.
%
-% \item [|comment.cut|:] A temporary file used by \pkg{lwarp} to
-% conditionally process blocks of text. This file may be ignored.
+% \item [|comment\_*.cut|:] Temporary files used by \pkg{lwarp} to
+% conditionally process blocks of text. These files may be ignored.
% \end{description}
%
% \hrule \medskip
@@ -6586,7 +7028,7 @@
%
% The \filenm{<project>-images} directory contains \SVG\ images
% automatically generated for inline and display math, \pkg{tikz}, etc.
-% To remove all the images from the \filenm{lateximages} directory:
+% To remove all the images from the \filenm{<project>-images} directory:
% \userentry{lwarpmk cleanlimages}
%
%
@@ -6783,9 +7225,12 @@
% \gindex{sideTOC=side\TOC>name}
% \gindex{settings>language}
%
-% Regional localization is supported by \pkg{lwarp} via the following package options
-% and macros:
+% Regional localization is supported by \pkg{lwarp} via the package options
+% and macros shown in \cref{tab:localization}.
%
+% \begin{table}
+% \caption{Localization settings}
+% \label{tab:localization}
% \begin{description}
% \item [Object names:] \LaTeX\ provides redefinable names for various objects,
% and \pkg{lwarp} adds a few more. Use \cs{renewcommand} to change these.
@@ -6792,6 +7237,8 @@
% \begin{description}
% \item [\cs{abstractname}:] This macro is honored by \pkg{lwarp}.
% \item [\cs{linkhomename}:] Displayed by the link to the homepage.
+% \item [\cs{linkpreviousname}:] Displayed by the link to the previous page
+% \item [\cs{linknextname}:] Displayed by the link to the next page.
% \item [\cs{sidetocname}:] Displayed at the head of the side\TOC.
% \end{description}
% \item [\HTML\ settings:] See \cref{tab:htmlsettings} and
@@ -6815,6 +7262,7 @@
% \item [\optn{pdftotextEnc}:] To adjust the encoding of \prog{pdftotext}.
% \end{description}
% \end{description}
+% \end{table}
%
%
% \subsection{Accessibility}
@@ -6838,8 +7286,11 @@
% \HTML\ also provides the \attribute{title} attribute, which usually
% generates a pop-up text. \pkg{lwarp} can add this to a reference or hyperlink.
% \brand{MathJax} also has provisions for improved accessibility
-% as well.
+% as well. See \cref{tab:accessibility}.
%
+% \begin{table}
+% \caption{Accessibiltiy settings}
+% \label{tab:accessibility}
% \begin{description}
% \item [\cs{ImageAltText}:] The default \HTML\ \attribute{alt} text
% for \cs{includegraphics} and \env{lateximage}s.
@@ -6897,6 +7348,7 @@
% This may be changed by redefining \cs{AltTextOpen} and \cs{AltTextClose}.
% Set with \cs{renewcommand}.
% \end{description}
+% \end{table}
%
%
%
@@ -6951,7 +7403,7 @@
% \margintag{Computer Modern}%
% \gindex{font>Computer Modern}\gindex{Computer Modern}%
% \watchout[\prog{pdflatex}]%
-% \watchout[DVI \prog{latex}]%
+% \watchout[\DVI\ \prog{latex}]%
% which may be a ``type 3'' bit-mapped font which may not
% convert well to plain text. A ``type 1'' vector font is required.
%
@@ -7062,10 +7514,9 @@
% ^^A \gindex{ligatures}\gindex{font>ligatures}
% \end{enumerate}
% \end{itemize}
+% \item |\usepackage{newtxmath}| or other math-related font packages.
+% Many of these load \pkg{amsmath}, which may now be loaded before \pkg{lwarp}.
% \item |\usepackage{lwarp}| (\cref{sec:loading}) is placed after any of the above, followed by:
-% \item |\usepackage{newtxmath}| or other math-related font packages.
-% Many of these load \pkg{amsmath}, which must be loaded after \pkg{lwarp},
-% so they must also be loaded after \pkg{lwarp}.
% \item |\setmonofont{TeX Gyre Cursor}| or similar may be required if using
% \trouble[\pkg{fontspec} with monospaced fonts]{font>monospace}
% \trouble{font>ligatures}
@@ -7077,6 +7528,23 @@
% with \pkg{fontspec} after loading the traditional font packages.
% Monospaced output ligatures must be turned off
% to produce the correct \HTML\ characters.
+%
+% Any monospace font with built-in ligatures may require these ligatures to
+% \changes{v0.84}{2020/04/15}{Docs: \brand{JetBrain Mono} font.}
+% be disabled for \HTML. In one example, \brand{JetBrain Mono},
+% \trouble[\brand{JetBrain Mono}]{font>JetBrain Mono=\brand{JetBrain Mono}}
+% \trouble{jetbrain mono=\brand{JetBrain Mono}}
+% \trouble[\HTML\ corrupted]{HTML>corrupted}
+% \trouble{font>ligatures}
+% it is required to use
+% \begin{sourcedisplay}
+% \cs{setmonofont}\{JetBrains Mono\}[\% \\
+% \dots \\
+% \textgreen{Contextuals=AlternateOff,} \\
+% ]
+% \end{sourcedisplay}
+% After \pkg{lwarp} is loaded, the ligature may be re-enabled for print mode
+% by using \cs{setmonofont} again inside a \env{warpprint} environment.
% \item \ldots{} the rest of the preamble and the main document.
% \end{enumerate}
%
@@ -7089,19 +7557,14 @@
% \gindex{UTF-8>index}
% \gindex{index>UTF-8}
%
-% \pkg{lwarp} uses the \prog{xindy} program to processes indexes.
-% \prog{xelatex} and \prog{lualatex} use \prog{xindy} and
-% \prog{pdflatex} uses \prog{texindy}.
+% \pkg{lwarp} supports \prog{makeindex}, \prog{xindy}, \prog{xindex},
+% and \pkg{glossaries}, \pkg{gloss}, and \pkg{nomencl}.
%
-% The \pkg{lwarp} option \optn{xindyLanguage} may be used to set the language option
-% for \pkg{xindy}, and the \optn{xindyCodepage} option may be used to set the codepage
-% option for \pkg{xindy}. These are used for
-% ^^A both
-% index
-% ^^A and glossary
-% generation.
+% See \cref{sec:indexingoverview} for indexing, and
+% \cref{sec:glossaries} for the \pkg{glossaries} package.
%
%
+%
% \clearpage
%
% \subsection{\pkg{lwarp} package loading and options}
@@ -7109,7 +7572,7 @@
% \gindex{settings>lwarp=\pkg{lwarp} package options}
%
% \begin{table}
-% \caption{\pkg{lwarp} package options\label{tab:options}}
+% \caption{\pkg{Lwarp} package options\label{tab:options}}
% \centering
% \renewcommand{\arraystretch}{1.2}
% \begin{tabular}{>{\ttfamily}lp{3.25in}}
@@ -7129,8 +7592,8 @@
% \midrule
% \multicolumn{2}{l}{\small For indexing (\cref{sec:indexsetup}) and glossaries (\cref{sec:glossaries}):} \\
% makeindex & Use \prog{makeindex} to generate indices. \\
+% makeindexStyle & Set a custom style for \prog{makeindex}. \\
% xindy & Use \prog{xindy} to generate indices. \\
-% makeindexStyle & Set a custom style for \prog{makeindex}. \\
% xindyStyle & Set a custom style for \prog{xindy}. \\
% xindyLanguage & The \prog{xindy} language option used for index
% ^^A and glossary
@@ -7138,9 +7601,12 @@
% xindyCodepage & The \prog{xindy} codepage option used for index
% ^^A and glossary
% generation. \\
+% xindex & Use \prog{xindex} to generate indices. \\
+% xindexConfig & Set a custom configuration file for \prog{xindex}. \\
% PrintIndexCmd & Shell commands executed by \cmds{lwarpmk printindex}. \\
% HTMLIndexCmd & Shell commands executed by \cmds{lwarpmk htmlindex}. \\
% LatexmkIndexCmd & Shell commands executed by \prog{latexmk}. \\
+% IndexRef & How to format index links. \\
% GlossaryCmd & Shell command executed by \cmds{lwarpmk printglossary} and \cmds{lwarpmk htmlglossary}. \\
% \midrule
% \multicolumn{2}{l}{\small Seldom necessary:} \\
@@ -7178,60 +7644,70 @@
%
% \begin{description}[itemsep=1\baselineskip]
%
-% \item[\optn{mathsvg}, \optn{mathjax}:]
+% \item[\optn{mathsvg} \textmd{and} \optn{mathjax}:]
% \DescribeOption{mathsvg}
% \DescribeOption{mathjax}
+% \DescribeDefault{mathsvg}
+% Selects \SVG\ images or \brand{MathJax} for math display.
+% See \cref{sec:limitsmath}.
% ^^A \DescribeOption{mathKaTeX}
% ^^A For math display, select \optn{mathsvg} (default), \optn{mathjax},
% ^^A or \optn{mathKaTeX}.
-% For math display, select \optn{mathsvg} (default) or \optn{mathjax}.
-% For more information about the math options, see \cref{sec:limitsmath}.
-%
%
-% \item[\optn{latexmk}:]
-% \DescribeOption{latexmk}
+% \ItemDescribeOption{latexmk}
% \DescribeDefault{false} Tells \prog{lwarpmk} to use \prog{latexmk} to recompile the
% document several times if necessary.
% Otherwise, \prog{lwarpmk} attempts to determing for itself whether to recompile.
% See \cref{sec:htmlsettings}.
%
-% \item[\optn{dvips}:]
-% \DescribeOption{dvips}
+% \ItemDescribeOption{dvips}
% \DescribeDefault{false} Tells \prog{lwarpmk} to use \prog{dvips} and \prog{ps2pdf} to convert
% \DVI\ output to \PDF.
%
-% \item[\optn{dvipdfm}:]
-% \DescribeOption{dvipdfm}
+% \ItemDescribeOption{dvipdfm}
% \DescribeDefault{false} Tells \prog{lwarpmk} to use \prog{dvipdfm} to convert
% \DVI\ output to \PDF.
%
-% \item[\optn{dvipdfmx}:]
-% \DescribeOption{dvipdfmx}
+% \ItemDescribeOption{dvipdfmx}
% \DescribeDefault{false} Tells \prog{lwarpmk} to use \prog{dvipdfmx} to convert
% \DVI\ output to \PDF.
%
%
-% \item[\optn{HomeHTMLFilename}:]
-% \DescribeOption{HomeHTMLFilename}
-% \DescribeDefault{\{\}}
-% See \cref{sec:htmlsettings}.
+% \ItemDescribeOption{HomeHTMLFilename}
+% \DescribeDefault{\cs{BaseJobname}}
%
+% Filename of the homepage, without
+% the ``\filenm{.html}'' suffix.
+% Defaults to the \cs{BaseJobname}. A common setting is:
+% \begin{sourcedisplay}
+% |HomeHTMLFilename=index|
+% \end{sourcedisplay}
+% causing the
+% homepage to be the file |index.html|. Underscores are allowed in
+% \margintag{filename underscores}
+% \optn{HomeHTMLFilename} and \optn{HTMLFilename} options, but may need to be escaped
+% elsewhere, such as when appearing in a list:
+% \gindex{underscore>filename}\gindex{filename>underscore in}
+% \changes{v0.24}{2017/03/13}{Docs: Filename underscore.}
+% \begin{sourcedisplay}
+% \cs{item} [\cs{href}\{file\textred{\textbackslash\_}name.pdf\}\{text\}] \textbackslash
+% \end{sourcedisplay}
+% See \cref{sec:filenameexamples} for examples of naming and numbering \HTML\ files.
%
-% \item[\optn{HTMLFilename}:]
-% \DescribeOption{HTMLFilename}
-% \DescribeDefault{\{\}}
-% See \cref{sec:htmlsettings}.
+% \ItemDescribeOption{HTMLFilename}
+% \DescribeDefault{<empty>}
+% A filename prefix for the rest of the \HTML\ web pages.
+% Useful for numbered web pages with a common prefix. May be empty.
+% See \cref{sec:filenameexamples} for examples of naming and numbering \HTML\ files.
%
%
-% \item[\optn{ImagesName}:]
-% \DescribeOption{ImagesName}
+% \ItemDescribeOption{ImagesName}
% \DescribeDefault{image-}
% The prefix for the images automatically generated by \pkg{lwarp}
% for objects such as \SVG\ math and \env{lateximage}s.
%
%
-% \item[\optn{ImagesDirectory}:]
-% \DescribeOption{ImagesDirectory}
+% \ItemDescribeOption{ImagesDirectory}
% \DescribeDefault{\cs{jobname}-images}
% The directory for the images automatically generated by \pkg{lwarp}
% for objects such as \SVG\ math and \env{lateximage}s.
@@ -7240,22 +7716,19 @@
% \filenm{image-<nn>}.
%
%
-% \item[\optn{PrintLatexCmd}:]
-% \DescribeOption{PrintLatexCmd}
+% \ItemDescribeOption{PrintLatexCmd}
% \DescribeDefault{<automatic>} Sets the shell commands executed by \cmds{lwarpmk print}.
% If not specified, will automatically be set according to the detected \LaTeX\ engine
% and the use of \optn{-\/-shell-escape}.
%
%
-% \item[\optn{HTMLLatexCmd}:]
-% \DescribeOption{HTMLLatexCmd}
+% \ItemDescribeOption{HTMLLatexCmd}
% \DescribeDefault{<automatic>} Sets the shell commands executed by \cmds{lwarpmk html}.
% If not specified, will automatically be set according to the detected \LaTeX\ engine
% and the use of \optn{-\/-shell-escape}.
%
%
-% \item[\optn{makeindex}:]
-% \DescribeOption{makeindex}
+% \ItemDescribeOption{makeindex}
% \DescribeDefault{makeindex} Sets \optn{PrintIndexCmd}, \optn{HTMLIndexCmd},
% and \optn{LatexmkImageCmd}
% to use \prog{makeindex} when generating indexes with
@@ -7263,8 +7736,13 @@
% If neither \optn{makeindex} nor \optn{xindy} is used, \optn{makeindex} is assumed.
%
%
-% \item[\optn{xindy}:]
-% \DescribeOption{xindy}
+% \ItemDescribeOption{makeindexStyle}
+% \DescribeDefault{lwarp.ist}
+% If you wish to use a custom |.ist| file for
+% index generation, see \cref{sec:modifymakeindex}.
+%
+%
+% \ItemDescribeOption{xindy}
% \DescribeDefault{makeindex} Sets \optn{PrintIndexCmd}, \optn{HTMLIndexCmd},
% and \optn{LatexmkImageCmd}
% to use \prog{xindy} when generating indexes with
@@ -7271,35 +7749,37 @@
% \cmds{lwarpmk printindex}, \cmds{lwarpmk htmlindex}, or \prog{latexmk}.
%
%
-% \item[\optn{makeindexStyle}:]
-% \DescribeOption{makeindexStyle}
-% \DescribeDefault{lwarp.ist}
-% If you wish to use a custom |.ist| file for
-% index generation, see \cref{sec:packageoptions}.
-%
-%
-% \item[\optn{xindyStyle}:]
-% \DescribeOption{xindyStyle}
+% \ItemDescribeOption{xindyStyle}
% \DescribeDefault{lwarp.xdy}
% If you wish to use a custom |.xdy| file for
-% index generation, see \cref{sec:packageoptions}.
+% index generation, see \cref{sec:modifyxindy}.
%
%
-% \item[\optn{xindyLanguage}:]
-% \DescribeOption{xindyLanguage}
+% \ItemDescribeOption{xindyLanguage}
% \DescribeDefault{english} If using an index or glossary,
% see \cref{sec:packageoptions}.
%
%
-% \item[\optn{xindyCodepage}:]
-% \DescribeOption{xindyCodepage}
+% \ItemDescribeOption{xindyCodepage}
% \DescribeDefault{utf8} If using an index,
% ^^A or glossary,
% see \cref{sec:packageoptions}.
%
%
-% \item[\optn{PrintIndexCmd}:]
-% \DescribeOption{PrintIndexCmd}
+% \ItemDescribeOption{xindex}
+% \DescribeDefault{makeindex} Sets \optn{PrintIndexCmd}, \optn{HTMLIndexCmd},
+% and \optn{LatexmkImageCmd}
+% to use \prog{xindex} when generating indexes with
+% \cmds{lwarpmk printindex}, \cmds{lwarpmk htmlindex}, or \prog{latexmk}.
+%
+%
+% \ItemDescribeOption{xindexConfig}
+% \DescribeDefault{<empty>}
+% If you wish to use a custom |xindex-*.lua| file for
+% index generation, see \cref{sec:modifyxindex}.
+%
+%
+% \ItemDescribeOption{PrintIndexCmd}
% \DescribeDefault{<automatic>} Sets the shell commands executed by \cmds{lwarpmk printindex}.
% If not specified, will be set by the selection of \optn{makeindex} or
% \optn{xindy}. May be used to specify the creation of multiple indexes.
@@ -7321,7 +7801,7 @@
%
% If specifying \optn{PrintIndexCmd} manually,
% \trouble{PrintIndexCmd}
-% \trouble[xindy]{xindy=\pkg{xindy}>options>PrintIndexCmd=\optn{PrintIndexCmd}}
+% \trouble[xindy]{xindy=\prog{xindy}>options>PrintIndexCmd=\optn{PrintIndexCmd}}
% be sure to assign an \prog{xindy}
% language and codepage with the |-L| and |-C| \prog{xindy} options, as the
% \pkg{lwarp} \optn{xindyLanguage} and \optn{xindyCodepage} options are not
@@ -7337,8 +7817,7 @@
% with the \pkg{lwarp} \optn{PrintIndexCmd} option.
%
%
-% \item[\optn{HTMLIndexCmd}:]
-% \DescribeOption{HTMLIndexCmd}
+% \ItemDescribeOption{HTMLIndexCmd}
% \DescribeDefault{<automatic>} Sets the shell commands executed by \cmds{lwarpmk htmlindex}.
% If not specified, will be set by the selection of \optn{makeindex} or
% \optn{xindy}. May be used to specify the creation of multiple indexes.
@@ -7361,7 +7840,7 @@
% \optn{xindyLanuage}, and \optn{xindyCodepage} options will be used if specified.
%
% If specifying \optn{HTMLIndexCmd} manually,
-% \trouble[xindy]{xindy=\pkg{xindy}>options>HTMLIndexCmd=\optn{HTMLIndexCmd}}
+% \trouble[xindy]{xindy=\prog{xindy}>options>HTMLIndexCmd=\optn{HTMLIndexCmd}}
% be sure to assign an \prog{xindy}
% language and codepage with the |-L| and |-C| \prog{xindy} options, as the
% \pkg{lwarp} \optn{xindyLanguage} and \optn{xindyCodepage} options are not
@@ -7371,8 +7850,7 @@
% worthwhile to use a shell script, then refer to that script with \optn{HTMLIndexCmd}.
%
%
-% \item[\optn{LatexmkIndexCmd}:]
-% \DescribeOption{LatexmkIndexCmd}
+% \ItemDescribeOption{LatexmkIndexCmd}
% \DescribeDefault{<automatic>} Sets the shell commands executed by \prog{latexmk}.
% Unlike \optn{PrintIndexCmd} and \optn{HTMLIndexCmd}, \optn{LatexmkIndexCmd}
% does not include any filenames, which will be provided instead by \prog{latexmk}.
@@ -7396,7 +7874,7 @@
% shown above to compile each of multiple indexes if necessary.
%
% If specifying \optn{LatexmkIndexCmd} manually,
-% \trouble[xindy]{xindy=\pkg{xindy}>options>LatexmkIndexCmd=\optn{LatexmkIndexCmd}}
+% \trouble[xindy]{xindy=\prog{xindy}>options>LatexmkIndexCmd=\optn{LatexmkIndexCmd}}
% be sure to assign an \prog{xindy}
% language and codepage with the |-L| and |-C| \prog{xindy} options, as the
% \pkg{lwarp} \optn{xindyLanguage} and \optn{xindyCodepage} options are not
@@ -7403,8 +7881,35 @@
% used for the \optn{LatexmkIndexCmd} option when it is set manually.
%
%
-% \item[\optn{GlossaryCmd}:]
-% \DescribeOption{GlossaryCmd}
+% \ItemDescribeOption{IndexRef}
+% \DescribeDefault{cref}
+% \label{sec:optionindexref}
+% Describes how to display the index entries for \HTML\ output.
+% Possible values are \optn{ref}, \optn{nameref}, \optn{refnameref},
+% \optn{cref}, \optn{crefnameref}, \optn{autoref}, or a text string
+% such as \optn{(link)} or \optn{(*)} for each index entry reference.
+% (Adding parentheses around a single character makes the link
+% larger and easier to click on.)
+% The default is \optn{cref}, which is available even if the print document
+% does not use \pkg{cleveref}, as the \pkg{lwarp} package relies on \pkg{cleveref}
+% during \HTML\ output.
+% Option \optn{autoref} gives the same results as \optn{cref}.
+%
+% \cs{ref} and \cs{cref} to starred or otherwise unknown links will display as
+% |(*)| instead of |??|.
+%
+% If using \optn{cref} (the default),
+% \trouble[??]{index>?? and non-functional link}
+% \trouble{index>formatting}
+% and if a reference appears as |??| with a non-functional link,
+% use \pkg{cleveref}'s \cs{crefname} to give a name to that type of label.
+%
+% In general, \optn{crefnameref} gives the most information,
+% but the index can become quite verbose.
+% Using \optn{(*)} or similar yields a very compact index.
+%
+%
+% \ItemDescribeOption{GlossaryCmd}
% \DescribeDefault{\cmds{makeglossaries}} Sets the shell command
% executed by \cmds{lwarpmk printglossary} and \cmds{lwarpmk htmlglossary}.
% The print or \HTML\ glossary filename is appended to this command.
@@ -7411,21 +7916,21 @@
% See \cref{sec:glossaries}.
%
%
-% \item[\optn{OSWindows}:]
-% \DescribeOption{OSWindows} \pkg{lwarp} attempts to automatically sense \brand{Windows},
+% \ItemDescribeOption{OSWindows}
+% \pkg{lwarp} attempts to automatically sense \brand{Windows},
% but it may be forced with this option.
% See \cref{sec:OSportabilityusage}.
%
%
-% \item[\optn{pdftotextEnc}:]
-% \DescribeOption{pdftotextEnc}
-% \DescribeDefault{UTF-8} Used to specify
+% \ItemDescribeOption{pdftotextEnc}
+% \DescribeDefault{UTF-8}
+% Used to specify
% the encoding used by \prog{pdftotext} during the \PDF-\HTML\ conversion.
% In most situations, the default is the correct choice.
%
%
-% \item[\optn{lwarpmk}:]
-% \DescribeOption{lwarpmk} If you wish to have \pkg{lwarp} generate a local
+% \ItemDescribeOption{lwarpmk}
+% If you wish to have \pkg{lwarp} generate a local
% copy of \filenm{lwarpmk.lua} for archival or local-installation purposes,
% compile the print version with the \optn{lwarpmk} option set.
% See \cref{sec:packageoptions}.
@@ -7439,7 +7944,7 @@
% \end{quote}
%
%
-% \item[\optn{warpprint} and \optn{warpHTML}:]
+% \item[\optn{warpprint} \textmd{and} \optn{warpHTML}:]
% \DescribeOption{warpprint}
% \DescribeOption{warpHTML}
% Usually controlled by \prog{lwarpmk}, and not set in the document.
@@ -7454,8 +7959,7 @@
% while |<project>_html.tex| will create an \HTML\ version.
%
%
-% \item[\optn{BaseJobname}:]
-% \DescribeOption{BaseJobname}
+% \ItemDescribeOption{BaseJobname}
% \DescribeDefault{\cs{jobname}} Not intended for the user.
% Used internally by \pkg{lwarp} when
% creating the |*_html.tex| file used to compile the \HTML\ version.
@@ -7478,49 +7982,67 @@
% \begin{table}[p]
% \caption{\HTML\ settings}
% \label{tab:htmlsettings}
-% \begin{tabular}{>{\ttfamily}lp{3in}}
+% \renewcommand{\arraystretch}{1.1}
+% \begin{threeparttable}
+% \begin{tabular}{>{\ttfamily}lcp{3in}}
% \toprule
-% Macro \Slash Cntr \Slash Bool & Description \\ \midrule
-% \cs{linkhomename} & Name of the link to the homepage. \\
+% Macro \Slash Cntr \Slash Bool & Loc\tnote{*} & Description \\ \midrule
+% \cs{linkhomename} & P & Name of the link to the homepage. \\
+% \cs{linkpreviousname} & P & Name of the link to the previous page. \\
+% \cs{linknextname} & P & Name of the link to the next page. \\
% \midrule
-% SideTOCDepth & Sectioning depth of the side\TOC. \\
-% \cs{sidetocname} & Name of the side\TOC. \\
+% SideTOCDepth & P & Sectioning depth of the side\TOC. \\
+% \cs{sidetocname} & P & Name of the side\TOC. \\
% \midrule
-% FileDepth & Sectioning depth of the file splits. \\
-% CombineHigherDepths & Combine higher section levels. \\
-% FileSectionNames & Use section names for file names, else use numbers. \\
-% \cs{FilenameLimit} & Maximum length of the generated filenames. \\
+% FileDepth & P & Sectioning depth of the file splits. \\
+% CombineHigherDepths & P & Combine higher section levels. \\
+% FileSectionNames & P & Use section names for file names, else use numbers. \\
+% \cs{FilenameLimit} & P & Maximum length of the generated filenames. \\
% \midrule
-% FootnoteDepth & Sectioning depth of footnotes. \\
+% FootnoteDepth & P & Sectioning depth of footnotes. \\
% \midrule
-% \cs{abstractname} & The name of the abstract. \\
-% \cs{ImageAltText} & \cs{includegraphics} and other images' \attribute{alt} tag. \\
-% \cs{ThisAltText} \marg{text} & Assigns an \attribute{alt} \Slash \attribute{title}
+% \cs{abstractname} & P & The name of the abstract. \\
+% \cs{ImageAltText} & PD & \cs{includegraphics} and other images' \attribute{alt} tag. \\
+% \cs{ThisAltText} \marg{text} & PD & Assigns an \attribute{alt} \Slash \attribute{title}
% tag for the next image or link. \\
-% \cs{MathImageAltText} & The \SVG\ math image \env{lateximage} \attribute{alt} tag. \\
-% \cs{PackageDiagramAltText} & The suffix for a package's \env{lateximage} \attribute{alt} tags. \\
-% \cs{AltTextOpen} & Start an \HTML\ \attribute{alt} tag. \\
-% \cs{AltTextClose} & End an \HTML\ \attribute{alt} tag. \\
+% \cs{MathImageAltText} & PD & The \SVG\ math image \env{lateximage} \attribute{alt} tag. \\
+% \cs{PackageDiagramAltText} & PD & The suffix for a package's \env{lateximage} \attribute{alt} tags. \\
+% \cs{AltTextOpen} & PD & Start an \HTML\ \attribute{alt} tag. \\
+% \cs{AltTextClose} & PD & End an \HTML\ \attribute{alt} tag. \\
% \midrule
-% \cs{CSSFilename} & The \CSS\ for the following files. \\
-% \cs{MathJaxFilename} & The MathJax script for the following files. \\
+% \cs{CSSFilename} & PS & The \CSS\ for the following files. \\
+% \cs{MathJaxFilename} & PS & The \brand{MathJax} script for the following files. \\
% \midrule
-% \cs{HTMLLanguage} & The \HTML\ \attribute{lang} tag. \\
-% \cs{HTMLTitle} & The homepage's \element{title}, overriding \cs{title}. \\
-% \cs{HTMLTitleBeforeSection} & Set subpage \element{title}s to \newline
+% \cs{HTMLLanguage} & PS & The \HTML\ \attribute{lang} tag. \\
+% \cs{HTMLTitle} & PS & The homepage's \element{title}, overriding \cs{title}. \\
+% \cs{HTMLTitleBeforeSection} & PS & Set subpage \element{title}s to \newline
% \fqquad \attribute{\cs{HTMLTitle} - sectionname} \\
-% \cs{HTMLTitleAfterSection} & Set subpage \element{title}s to \newline
+% \cs{HTMLTitleAfterSection} & PS & Set subpage \element{title}s to \newline
% \fqquad \attribute{sectioname - \cs{HTMLTitle}}\\
-% \cs{HTMLAuthor} & The \HTML\ \attribute{author} meta tag, overriding \cs{author}. \\
-% \cs{HTMLDescription} & The \HTML\ \attribute{description} meta tag. \\
+% \cs{HTMLAuthor} & PS & The \HTML\ \attribute{author} meta tag, overriding \cs{author}. \\
+% \cs{HTMLDescription} & PS & The \HTML\ \attribute{description} meta tag. \\
% \midrule
-% \cs{HTMLFirstPageTop} & Heading for the home page. \\
-% \cs{HTMLPageTop} & Heading for the other pages. \\
-% \cs{HTMLPageBottom} & Footing for all pages. \\
+% \cs{HTMLFirstPageTop} & P & Heading for the home page. \\
+% \cs{HTMLFirstPageBottom} & P & Footer for the home page. \\
+% \cs{HTMLPageTop} & PS & Heading for the other pages. \\
+% \cs{HTMLPageBottom} & PS & Footer for the other pages. \\
% \midrule
-% HTMLDebugComments & Boolean to generate \HTML\ comments. \\
+% \cs{IndexPageSeparator} & P & Index page list separator. \\
+% \cs{IndexRangeSeparator} & P & Index page range separator. \\
+% \midrule
+% FixSmallCaps & P & Set \optn{true} if small caps rendered as all caps. \\
+% HTMLDebugComments & P & Boolean to generate \HTML\ comments. \\
% \bottomrule
% \end{tabular}
+% \begin{tablenotes}
+% \item [*]
+% \begin{inlinedesc}
+% \item [P:] Preamble,
+% \item [D:] Anywhere in the document.
+% \item [S:] Before a section.
+% \end{inlinedesc} \hspace*{\fill}
+% \end{tablenotes}
+% \end{threeparttable}
% \end{table}
%
% \Cref{tab:htmlsettings} shows several settings may be used
@@ -7540,66 +8062,40 @@
%
% \begin{description}[style=unboxed]
%
-% \item[Options for the \pkg{lwarp} package:] \ \newline
-% Use the following as options for |\usepackage[<options>]{lwarp}|:
+% \needspace{3\baselineskip}
+% \item[Placed in the preamble before \texttt{\cs{begin}\{document\}}:] \
%
% \begin{description}
%
-% \ItemDescribeOption{HomeHTMLFilename} \DescribeDefault{\cs{BaseJobname}}
-% Filename of the homepage, without
-% the ``\filenm{.html}'' suffix.
-% Defaults to the \cs{BaseJobname}. A common setting is:
-% \begin{sourcedisplay}
-% |HomeHTMLFilename=index|
-% \end{sourcedisplay}
-% causing the
-% homepage to be the file |index.html|. Underscores are allowed in
-% \margintag{filename underscores}
-% \optn{HomeHTMLFilename} and \optn{HTMLFilename} options, but may need to be escaped
-% elsewhere, such as when appearing in a list:
-% \gindex{underscore>filename}\gindex{filename>underscore in}
-% \changes{v0.24}{2017/03/13}{Docs: Filename underscore.}
-% \begin{sourcedisplay}
-% \cs{item} [\cs{href}\{file\textred{\textbackslash\_}name.pdf\}\{text\}] \textbackslash
-% \end{sourcedisplay}
-% See \cref{sec:filenameexamples} for examples of naming and numbering \HTML\ files.
+% \ItemDescribeMacro{\HTMLFirstPageTop} \marg{contents} \DescribeDefault{<empty>} \quad
+% A user-definable custom action applied
+% to the top of the home page. Useful for logos, etc.
+% \cs{LinkNext} may be used to link to the next web page.
+% Defaults empty.
+% Ignored in print output.
%
-% \ItemDescribeOption{HTMLFilename} \DescribeDefault{<empty>}
-% A filename prefix for the rest of the \HTML\ web pages.
-% Useful for numbered web pages with a common prefix. May be empty.
-% See \cref{sec:filenameexamples} for examples of naming and numbering \HTML\ files.
+% \ItemDescribeMacro{\HTMLFirstPageBottom} \marg{contents} \DescribeDefault{<empty>} \quad
+% A user-definable custom action applied
+% to the bottom of the home page. Useful for logos, etc.
+% \cs{LinkNext} may be used to link to the next web page.
+% Defaults empty.
+% Ignored in print output.
%
-% \ItemDescribeOption{latexmk} \DescribeDefault{false}
-% Controls whether \pkg{lwarp} uses \prog{latexmk} to
-% compile the document. This setting is written to \prog{lwarpmk}'s configuration
-% files.
-%
-% \ItemDescribeOption{mathsvg} \DescribeDefault{true}
-% Selects \SVG\ display for math output. (The default.)
-%
-% \ItemDescribeOption{mathjax} \DescribeDefault{false}
-% Selects \brand{MathJax} for math output.
-%
-% ^^A \ItemDescribeOption{mathKaTeX} \DescribeDefault{false}
-% ^^A Selects Ka\TeX\ for math output.
-%
-% \ItemDescribeOption{makeindex} \DescribeDefault{makeindex}
-% Selects \prog{makeindex} for index generation by \prog{lwarpmk}.
-%
-% \ItemDescribeOption{xindy} \DescribeDefault{makeindex}
-% Selects \prog{xindy} for index generation by \prog{lwarpmk}.
-%
-% \end{description} \bigskip
-%
-% \item[Placed in the preamble before \texttt{\cs{begin}\{document\}}:] \
-%
-% \begin{description}
-%
% \ItemDescribeMacro{\linkhomename} \DescribeDefault{Home}
% Name of the link to the home page. Paragraphs are allowed.
% Redefine with \cs{renewcommand}.
% \changes{v0.63}{2018/11/29}{Docs: \cs{linkhomename}.}
%
+% \ItemDescribeMacro{\linkpreviousname} \DescribeDefault{Previous}
+% Name of the link to the previous page. Paragraphs are allowed.
+% Redefine with \cs{renewcommand}.
+% \changes{v0.84}{2020/04/24}{Docs: \cs{linkpreviousname}.}
+%
+% \ItemDescribeMacro{\linknextname} \DescribeDefault{Next}
+% Name of the link to the next page. Paragraphs are allowed.
+% Redefine with \cs{renewcommand}.
+% \changes{v0.84}{2020/04/24}{Docs: \cs{linkpreviousname}.}
+%
% \ItemDescribeCounter{tocdepth} Sectioning depth of the table of contents.
% See \cref{sec:stackdepths} for a list of \LaTeX{} stack depths.
%
@@ -7717,6 +8213,11 @@
% Any pending footnotes are also placed at the bottom of each page
% before each file break.
%
+% \ItemDescribeBoolean{FixSmallCaps} \DescribeDefault{false}
+% Set |true| if \textsc{Small Caps} are rendering in all caps (``SMALL CAPS'').
+% May be required for some fonts (\pkg{erewhon}, \pkg{utopia}, \pkg{fbb}, et al.),
+% and packages such as \pkg{embrac}.
+%
% \ItemDescribeBoolean{HTMLDebugComments} \DescribeDefault{false}
% Set |true| to generate \HTML\ comments, such as which section or \element{div}
% is being opened or closed.
@@ -7727,9 +8228,17 @@
% by the \pkg{babel} package. Defaults to ``|Abstract|''.
% Redefine with \cs{renewcommand}.
%
+% \ItemDescribeMacro{\IndexPageSeparator} \DescribeDefault{``, ''}
+% Index page list separator. Adjust to match index style file.
+% If using \pkg{gindex}, this is set automatically to \pkg{gindex}'s \cs{indexpagessep}.
+%
+% \ItemDescribeMacro{\IndexRangeSeparator} \DescribeDefault{``-\/-''}
+% Index page range separator. Adjust to match index style file.
+% If using \pkg{gindex}, this is set automatically to \pkg{gindex}'s \cs{indexrangesep}.
+%
% \end{description}
%
-% \needspace{2\baselineskip}
+% \needspace{3\baselineskip}
% \item[Placed before \texttt{\cs{begin}\{document\}},
% or before any sectioning command which causes a file break:] \
%
@@ -7749,11 +8258,11 @@
%
% \ItemDescribeMacro{\MathJaxFilename} \marg{filename}
% \DescribeDefault{\filenm{lwarp_mathjax.txt}} \quad
-% Sets the MathJax script file to use for the following
+% Sets the \brand{MathJax} script file to use for the following
% files. May be changed before each each sectioning command which would
% cause a file split.
%
-% The MathJax script file is copied into the head of each \HTML\ file.
+% The \brand{MathJax} script file is copied into the head of each \HTML\ file.
% This may be used to point to a local repository, add extensions, or change
% the script somewhere in the middle of the document.
% \cs{MathJaxFilename} may be used before each file break to set the script file for
@@ -7803,31 +8312,40 @@
% the following files. May be changed before each each sectioning command which would
% cause a file split.
%
-% \ItemDescribeMacro{\HTMLFirstPageTop} \marg{contents} \DescribeDefault{<empty>} \quad
-% A user-definable custom action applied
-% to the top of the home page. Useful for logos, etc.
-% Defaults empty.
-% Ignored in print output.
-%
% \ItemDescribeMacro{\HTMLPageTop} \marg{contents} \DescribeDefault{<empty>} \quad
% A user-definable custom action applied to
% the top of pages other than the home page. Useful for logos, etc.
% Defaults empty.
-% \cs{LinkHome} may be used to place a link back to the homepage.
+% \cs{LinkHome} may be used to place a link back to the homepage, as well as
+% \cs{LinkPrevious} and \cs{LinkNext}.
% Ignored in print output.
%
% \ItemDescribeMacro{\HTMLPageBottom} \marg{contents} \DescribeDefault{<empty>} \quad
% A user-definable custom action applied to the
-% bottom of each web page.
+% bottom of pages other than the home page.
% Useful for authors, copyright notices, contact information, etc.
% Defaults empty.
-% \cs{LinkHome} may be used to place a link back to the homepage.
+% \cs{LinkHome} may be used to place a link back to the homepage, as well as
+% \cs{LinkPrevious} and \cs{LinkNext}.
% Ignored in print output.
%
+% \ItemDescribeMacro{\LinkHome} Creates a link to the home page.
+% \gindex{link>home \Slash previous \Slash next page}
+% \gindex{navigation>link to home \Slash previous \Slash next page}
+% Usually used in \cs{HTMLPageTop} and related.
+%
+% \ItemDescribeMacro{\LinkPrevious} Creates a link to the previous \HTML\ page,
+% unless already at the home page.
+% Usually used in \cs{HTMLPageTop} and related.
+%
+% \ItemDescribeMacro{\LinkNext} Creates a link to the next \HTML\ page, unless
+% already at the end.
+% Usually used in \cs{HTMLPageTop} and related.
+%
% \end{description}
%
%
-% \needspace{2\baselineskip}
+% \needspace{3\baselineskip}
% \item[Placed in the home page before the first sectioning command which causes a file break:] \
%
% \begin{description}
@@ -7883,13 +8401,15 @@
%
% \emph{Do not place anything else on the same line as \texttt{\cs{end}\{warpprint\}}}.
% \watchout
+% Also do not nest \env{warpprint} inside itself.
%
-% \ItemDescribeEnv{warpHTML} An environment which is only used
+% \ItemDescribeEnv{warpHTML} An environment which is only included
% while generating \HTML\ output. This is useful for website logos and
% other items which have no purpose in printed output.
%
% \emph{Do not place anything else on the same line as \texttt{\cs{end}\{warpHTML\}}}.
% \watchout
+% Also do not nest \env{warpHTML} inside itself.
%
% \ItemDescribeMacro{\warpprintonly} \marg{contents} \quad
% A macro version of the \env{warpprint} environment.
@@ -8011,8 +8531,46 @@
% \VerbatimInput[frame=lines]{sample_project.css}
%
% Finally use |\CSSFilename{<project>.css}| in the document to activate the custom \CSS.
-%
-%
+%
+%
+% \subsection{Assigning \CSS\ classes and styles}
+% \label{sec:classstyle}
+%
+% \gindex{CSS>class=\attribute{class}}
+% \gindex{CSS>style=\attribute{span}}
+% \gindex{HTML>class=\attribute{class}}
+% \gindex{HTML>style=\attribute{style}}
+% \gindex{HTML>div=\element{div}}
+% \gindex{HTML>span=\element{span}}
+%
+% \HTML\ \CSS\ classes and styles may be assigned to fragments of the document.
+%
+% \DescribeEnv{BlockClass} \oarg{style} \marg{class}
+%
+% An entire block of text, including paragraphs, may be assigned a \CSS\ class
+% and optional \CSS\ style using the \env{BlockClass} environment.
+% The result is placed inside a \element{div}.
+% A \env{BlockClass} may nest other \env{BlockClass}es or \cs{InlineClass}es.
+%
+% \DescribeMacro{\InlineClass}
+% \parg{\acro{wp} \CSS\ style} \oarg{web \CSS\ style}
+% \marg{\CSS\ class} \marg{text}
+%
+% A section of text without paragraphs may be assinged a \CSS\ class and optional
+% \CSS\ style using the \cs{InlineClass} macro.
+% The result is placed inside a \element{span}.
+% \cs{InlineClass} may be nested, but per the \HTML\ standard it must not contain
+% \env{BlockClass}, nor may it contain a paragraph, nor several other objects
+% such as \HTML\ figures.
+% \cs{InlineClass} also accepts a second optional parameter, enclosed inside
+% parentheses, which assigns the style while generating output for a word processor,
+% while ignoring the web style.
+%
+% Nullified versions of \env{BlockClass} and \cs{InlineClass} are provided
+% for the print version, so they may be used in the document without
+% placing them inside \env{warpHTML} or \cs{warpHTMLonly}.
+%
+%
% \subsection{Selecting the operating system}
% \label{sec:OSportabilityusage}
% \changes{v0.11}{2016/03/11}{Added section: Selecting the operating system.}
@@ -8022,7 +8580,7 @@
%
% \subsection{Selecting actions for print, \HTML, or \brand{MathJax} output}
% \label{sec:selectingoutput}
-% \gindex{settings>selecting output}
+% \gindex{settings>selecting print/\HTML\ output}
% \changes{v0.15}{2016/04/05}{Docs: Clarify print/\HTML\ output.}
%
% The following environments and macros are used to select actions which only apply
@@ -8050,6 +8608,8 @@
% Do \emph{not} place anything else on the same line as |\end{warpHTML}|.
% \trouble[\texttt{\cs{end}\{warpHTML\}}]{warpHTML}
% The exact phrase is used to mark the end of the environment.
+% Do not nest \env{warpHTML} inside itself. \watchout[nesting]
+% \env{warpMathJax} may be used inside \env{warpHTML}.
%
% \DescribeEnv{warpprint}
% Anything which is to be done only for print output
@@ -8061,6 +8621,7 @@
% \end{Verbatim}
% As above, do not place anything else on the line with |\end{warpprint}|.
% \trouble[\texttt{\cs{end}\{warpprint\}}]{warpprint}
+% Do not nest \env{warpprint} inside itself.\watchout[nesting]
%
% \DescribeEnv{warpall}
% Anything which is to be done for any output
@@ -8071,6 +8632,8 @@
% \end{warpall}
% \end{Verbatim}
% As above, do not place anything else on the line with |\end{warpall}|.
+% \trouble[\texttt{\cs{end}\{warpall\}}]{warpall}
+% Do not nest \env{warpall} inside itself.\watchout[nesting]
%
%
% Macros are also provided for print-only or \HTML-only code:
@@ -8087,6 +8650,10 @@
% Anything which is to be done only while using \HTML\ output with \brand{MathJax}
% is surrounded by a \env{warpMathJax} environment.
% Usually, this is \cs{CustomizeMathJax}, used to add emulation macros.
+% |\end{warpMathJax}| must appear on its own line.
+% \trouble[\texttt{\cs{end}\{warpMathJax\}}]{warpMathJax}
+% Do not nest \env{warpMathJax} inside itself. \watchout[nesting]
+% \env{warpMathJax} may be used inside \env{warpHTML}.
%
%
% \subsection{Commands to be placed into the \env{warpprint} environment}
@@ -8328,11 +8895,75 @@
%
% \limitstext
%
-% \subsubsection{Horizontal space}
%
-% \limitshspace
+% \subsubsection{Small caps}
%
+% \DescribeBoolean{FixSmallCaps}
+% \trouble{font>small caps}
+% \trouble{small caps}
+% \trouble{font>CJK}
+% \trouble{CJK>font}
+% Some fonts, such as \pkg{erewhon}, \pkg{utopia}, or \pkg{fbb}, and some packages
+% such as \pkg{embrac}, copy/paste ``\textsc{Small Caps}''
+% as all caps (``SMALL CAPS''),
+% which \pkg{lwarp} then reads as all caps, so the text is printed in all caps.
+% If small caps are being rendered as all caps, set:
+% \begin{sourceverb}
+% \booltrue{FixSmallCaps}
+% \end{sourceverb}
+% Some CJK fonts may not work if \bool{FixSmallCaps} is set \optn{true}.
+% \watchout[CJK fonts]
+% \trouble{Chinese>font}
+% \trouble{Japanese>font}
+% \trouble{Korean>font}
%
+%
+% \subsubsection{Horizontal and vertical space and rules}
+%
+% \DescribeMacro{\hspace}
+% \gindex{space>horizontal and vertical}
+% \gindex{horizontal and vertical space}
+% \gindex{vertical space}
+% \cs{hspace} is converted to an inline \HTML\ span of the given width,
+% except that \texttt{0} width is ignored,
+% a width of \texttt{.16667em} is converted to
+% an \HTML\ thin breakable space (\texttt{U+2009}),
+% and a \cs{fill} is converted to a \cs{qquad}.
+%
+% \DescribeMacro{\vspace}
+% \cs{vspace} is ignored for \HTML.
+%
+% \gindex{\texttt{\textasciitilde}}
+% \gindex{\cs{,}}
+% \marginpar{\hspace*{\fill}\texttt{\~}}
+% \DescribeMacro{\,}
+% \texttt{\~} and \cs{,} are converted to \HTML\ entities.
+%
+% \DescribeMacro{\kern}
+% \DescribeMacro{\hskip}
+% \cs{kern} and \cs{hskip} are entered into the \HTML\ \PDF\ output as-is,
+% then interpreted by \prog{pdftotext}, and thus usually appear as a single space.
+%
+% \DescribeMacro{\rule}
+% \cs{rule} is converted to an \HTML\ rule of the same dimensions,
+% of the currently selected text color.
+%
+% \DescribeMacro{\hrule}
+% \DescribeMacro{\vrule}
+% \trouble{hrule=\cs{hrule}}
+% \gindex{hrule=\cs{hrule}}
+% Both \cs{hrule} and \cs{vrule} are ignored for \HTML.
+% To create a horizontal dividing rule across the page,
+% use \cs{hrulefill} in its own paragraph.
+%
+% \DescribeMacro{\hrulefill}
+% \gindex{rule>horizontal}
+% \gindex{horizontal rule}
+% \cs{hrulefill} usually creates a one-inch rule, similar to a ``fill in the blank''.
+% If it is used at the start of a new paragraph, it creates a \element{div}
+% with a thin horizontal border across the page, as would often be done with \cs{hrule}.
+%
+%
% \subsubsection{Text alignment}
%
% Use the environments \env{center}, \env{flushright}, \env{flushleft} instead
@@ -8474,7 +9105,7 @@
% and \cs{StopDefiningTabulars} afterwards.
% Also see the \pkg{lwarp} documentation for the \pkg{fancybox} package.
% \item [To frame equations:] See \cref{sec:fancybox} for the \pkg{fancybox} package.
-% \item [For fancy framed minipages:] See packages \pkg{boxedminipage2e},
+% \item [For fancy framed minipages:] See packages \pkg{boxedminipage},
% \pkg{shadow}, \pkg{fancybox}, \pkg{framed}, \pkg{mdframed}.
% \item [Custom environments:] Use a custom environment to create a sidebar,
% containing a \env{BlockClass} environment
@@ -8502,7 +9133,45 @@
% \DescribePackage{mdframed}
% \limitsmdframed
%
+
+% \subsubsection{\pkg{tcolorbox} package}
+% \label{sec:limitstcolorbox}
%
+% \DescribePackage{tcolorbox}
+% \trouble{tcolorbox=\pkg{tcolorbox}}
+% \pkg{tcolorbox} is emulated for \HTML\ and \brand{MathJax}, and
+% supported as-is inside a \env{lateximage} or \SVG\ math.
+%
+% What has been tested to work (at least partly) includes:
+% \begin{itemize}[nosep]
+% \item \env{tcolorbox}, \cs{tcbox}.
+% \item Title, subtitle.
+% \item Upper, lower parts.
+% \item Colors and title fonts.
+% \item Floating objects.
+% \item Some layered box features.
+% \item Counters, labels, references.
+% \item \pkg{listings}, \pkg{listingsutf8}.
+% \item \optn{theorems}:
+% Theorems are supported.
+% \optn{math}, \optn{ams equation}, etc.\ are not supported. \watchout[math]
+% Use a \env{tcolorbox} with regular math inside it.
+% \cs{tcboxmath} and \cs{tcbhighmath} are suppored in \SVG\ math, and
+% emulated in \brand{MathJax}.
+% \item Fitting features: \cs{tcboxfit} becomes \cs{tcbox} in \HTML.
+% \item Footnote numbering does not match the printed output.\watchout[footnotes]
+% \item \brand{MathJax} emulation is provided for common macros.
+% \end{itemize}
+%
+% If using \pkg{cleveref},
+% \trouble[undefined references]{reference>undefined>tcolorbox=\pkg{tcolorbox}}
+% it may be necessary to name theorems such as:
+% \begin{sourceverb}
+% \crefname{tcb at cnt@mytheo}{my theorem}{my theorems}
+% \end{sourceverb}
+%
+%
+%
% \subsection{Section names}
% \label{sec:limitssectionnames}
%
@@ -8601,6 +9270,14 @@
% \DescribePackage{varioref}
% \limitscpageref
%
+% \pkg{cleveref} changes the behavior of \pkg{varioref} in that
+% \trouble[\pkg{varioref} types]{varioref=\pkg{varioref}}
+% the reference type is automatically printed if \pkg{cleveref} is loaded.
+% \pkg{Lwarp} requires \pkg{cleveref}, so the \HTML\ version will always
+% automatically print the reference types even if the print mode does not.
+% The simplest way to make them match is to require the \pkg{cleveref} package
+% for the document.
+%
% \subsubsection{Hyperlinks, \pkg{hyperref}, and \pkg{url}}
%
% \DescribePackage{hyperref}
@@ -8823,8 +9500,13 @@
%
% If using a custom indexing style file,
% \margintag{custom index style}
-% see \cref{sec:modifymakeindex,sec:modifyxindy}.
+% see \cref{sec:modifymakeindex,sec:modifyxindy,sec:modifyxindex}.
%
+% To control how the index links appear in the \HTML\ output,
+% \margintag{link appearance}
+% see the \optn{IndexRef} option in \cref{sec:optionindexref},
+% \cpageref{sec:optionindexref}.
+%
% See \cref{sec:index} for \pkg{lwarp}'s core index and glossary code,
% \margintag{source code}
% \gindex{index>source code}
@@ -8835,15 +9517,16 @@
% and \cref{sec:memoirbackmatter} for \pkg{memoir}'s indexing patches.
%
%
-% \subsubsection{Indexing with basic \LaTeX\ and \pkg{makeidx}}
+% \subsubsection{Indexing with \pkg{makeidx}, \prog{makeindex},
+% \prog{xindy}, \prog{xindex}, \pkg{gindex}}
% \label{sec:indexsetup}
%
% \changes{v0.38}{2017/08/24}{Docs: Index, \pkg{tocbibind}.}
% \changes{v0.58}{2018/06/14}{Docs: Index, \prog{makeindex}, \pkg{imakeidx}.}
%
-% \gindex{xindy=\pkg{xindy}>and \pkg{hyperref}}
-% \gindex{hyperref=\pkg{hyperref}>and \pkg{xindy}}
-% \gindex{index>xindy=\pkg{xindy} and \pkg{hyperref}}
+% \gindex{xindy=\prog{xindy}>and \pkg{hyperref}}
+% \gindex{hyperref=\pkg{hyperref}>and \prog{xindy}}
+% \gindex{index>xindy=\prog{xindy}>hyperref=and \pkg{hyperref}}
% \trouble{index>missing entries}
% \gindex{index>see, seealso, ranges}
% \gindex{index>processing}
@@ -8858,6 +9541,9 @@
%
% \needspace{2\baselineskip}
% \item [For a single index using \prog{makeindex}:]
+% \DescribeProgram{makeindex}
+% \gindex{makeindex=\prog{makeindex}}
+% \gindex{index>makeindex=\prog{makeindex}>setup}
% \begin{sourcedisplay}
% \cs{usepackage}\textred{[makeindex\textgreen{,latexmk}]}
% \{\textblue{lwarp}\}
@@ -8872,8 +9558,13 @@
% Otherwise, use \userentry{lwarpmk printindex} \userentry{lwarpmk htmlindex}
% to compile the indexes.
%
+% To use a custom configuration file, see \cref{sec:modifymakeindex}.
+%
% \needspace{8\baselineskip}
% \item [For a single index using \prog{xindy}:]
+% \DescribeProgram{xindy}
+% \gindex{xindy=\prog{xindy}}
+% \gindex{index>xindy=\prog{xindy}>setup}
% \begin{sourcedisplay}
% \cs{usepackage}[ \\
% \fqquad \textred{xindy,} \\
@@ -8889,11 +9580,63 @@
% \prog{latexmk} will create the index automatically.
% Otherwise, use \userentry{lwarpmk printindex} \userentry{lwarpmk htmlindex}
% to compile the indexes.
+%
+% To use a custom configuration file, see \cref{sec:modifyxindy}.
+%
+% \needspace{8\baselineskip}
+% \item [For a single index using \prog{xindex}:]
+% \DescribeProgram{xindex}
+% \gindex{xindex=\prog{xindex}}
+% \gindex{index>xindex=\prog{xindex}>setup}
+% \begin{sourcedisplay}
+% \cs{usepackage}[ \\
+% \fqquad \textred{xindex,} \\
+% \fqquad \textgreen{latexmk} \hfill \textrm{<optional>}\\
+% ]\{\textblue{lwarp}\}
+% \end{sourcedisplay}
+% The usual \filenm{.idx} and \filenm{.ind} files will be used.
+%
+% \prog{lwarpmk} will use \prog{latexmk} if specified, in which case
+% \prog{latexmk} will create the index automatically.
+% Otherwise, use \userentry{lwarpmk printindex} \userentry{lwarpmk htmlindex}
+% to compile the indexes.
+%
+% To use a custom configuration file, see \cref{sec:modifyxindex}.
+%
+%
+% \needspace{8\baselineskip}
+% \item [For a single index using \pkg{gindex}:]
+% \DescribePackage{gindex}
+% \gindex{gindex=\pkg{gindex}}
+% \gindex{index>gindex=\pkg{gindex}>setup}
+% \begin{sourcedisplay}
+% \cs{usepackage}[ \\
+% \fqquad \textred{makeindex,} \\
+% \fqquad \textred{makeindexStyle=gindex.ist,} \\
+% \fqquad \dots or \dots \\
+% \fqquad \textred{makeindexStyle=gindexh.ist,} \\
+% \fqquad \textgreen{latexmk} \hfill \textrm{<optional>}\\
+% ]\{\textblue{lwarp}\}
+% \end{sourcedisplay}
+% The usual \filenm{.idx} and \filenm{.ind} files will be used.
+%
+% \prog{lwarpmk} will use \prog{latexmk} if specified, in which case
+% \prog{latexmk} will create the index automatically.
+% Otherwise, use \userentry{lwarpmk printindex} \userentry{lwarpmk htmlindex}
+% to compile the indexes.
+%
+% To use a custom configuration file, copy \filenm{gindex.ist} to a new
+% file, modify, then specify it with \optn{MakeindexStyle} as above.
+% \pkg{lwarp} will automatically adapt to \pkg{gindex}'s \cs{indexpagessep}
+% and \cs{indexrangesep} settings.
% \end{description}
%
%
% \subsubsection{Indexing with \pkg{index}}
%
+% \DescribeProgram{index}
+% \gindex{index>index=\prog{index}>setup}
+%
% \pkg{lwarp} is told how to use \prog{makeindex} using the
% \optn{PrintIndexCmd} and \optn{HTMLIndexCmd} options.
% The file \filenm{lwarp.ist} is specified, which generates index letter heads for
@@ -8943,6 +9686,9 @@
%
% \subsubsection{Indexing with \pkg{splitidx}}
%
+% \DescribeProgram{splitidx}
+% \gindex{index>splitidx=\prog{splitidx}>setup}
+%
% \pkg{lwarp} is told how to use \prog{splitindex} using the
% \optn{PrintIndexCmd} and \optn{HTMLIndexCmd} options.
% The file \filenm{lwarp.ist} is specified, which generates index letter heads for
@@ -9003,11 +9749,12 @@
% \end{description}
%
%
-%
-%
% \subsubsection{Indexing with \pkg{imakeidx}}
% \label{sec:indexingimakeidx}
%
+% \DescribeProgram{imakeidx}
+% \gindex{index>imakeidx=\prog{imakeidx}>setup}
+%
% Due to the number of methods which may be used to process multiple indexes,
% the options for style file and \prog{xindy} language and codepage must be
% specified in one of several different ways. These are described in detail later in
@@ -9019,7 +9766,9 @@
% \optn{options=} option, which must include
% \pkg{lwarp}'s special \filenm{lwarp.ist} or \filenm{lwarp.xdy} file,
% or a file based on them.
-% If using a custom indexing style file, see \cref{sec:modifymakeindex,sec:modifyxindy}.
+% If using a custom indexing style file,
+% see \cref{sec:modifymakeindex,sec:modifyxindy,sec:modifyxindex}.
+%
% The \optn{splitindex} option is also available of shell escape is used,
% in which case the \pkg{splitidx} package and \prog{splitindex} program will also be used.
%
@@ -9175,14 +9924,51 @@
%
% Use \userentry{lwarpmk printindex} \userentry{lwarpmk htmlindex}
% to compile the indexes.
+%
+% \needspace{2\baselineskip}
+% \item [For multiple indexes using \prog{xindex} and \pkg{imakeidx}, using shell escape:] \
+%
+% \prog{xindex}, \prog{makeindex}, \prog{imakeidx}, and \prog{splitindex} can
+% all work together:
+% \begin{sourcedisplay}
+% \cs{usepackage}\textred{[\% \\
+% \fquad xindex, \\
+% \fquad xindexConfig=-imakeidx, \\
+% \fquad \textgreen{latexmk} \\
+% ]}
+% \{\textblue{lwarp}\} \\
+% \cs{usepackage}\textred{[makeindex\textgreen{,splitindex}]}\{\textblue{imakeidx}\} \\
+% \dots \\
+% \cs{makeindex}[\% \\
+% \fquad \textgreen{options=\{ -s lwarp.ist\} \}} \\
+% ] \\
+% \cs{makeindex}[ \\
+% \fquad name=secondname, \\
+% \fquad \textgreen{options=\{ -s lwarp.ist\} \}} \\
+% ] \\
+% \end{sourcedisplay}
+% For the first compile, use:
+% \watchout[enable shell escape]
+% \userentry{pdflatex \textred{-\/-shell-escape} projectname.tex}
+% \userentry{pdflatex \textred{-\/-enable-write18} projectname.tex \quad \textrm{(MiKTeX)}}
+% or similar with \prog{xelatex} or \prog{lualatex}.
+% \pkg{lwarp} will remember if shell escape was used.
+%
+% \prog{xindex} will use \prog{imakeidx},
+% and \prog{imakeidx} will automatically execute \prog{splitindex} if selected.
+%
+% If selected, \prog{latexmk} will automatically recompile the entire document
+% as necessary.
% \end{description}
%
%
% \subsubsection{Indexes with \pkg{memoir}}
%
+% \gindex{index>memoir=\pkg{memoir}>setup}
+%
% \begin{description}
% \needspace{7\baselineskip}
-% \item [For a single index with \pkg{memoir} and \pkg{makeindex}:]
+% \item [For a single index with \pkg{memoir} and \prog{makeindex}:]
% \begin{sourcedisplay}
% \cs{documentclass}\{\textblue{memoir}\} \\
% \cs{usepackage}\textred{[makeindex\textgreen{,latexmk}]}\{\textblue{lwarp}\} \\
@@ -9198,7 +9984,7 @@
% to compile the indexes.
%
% \needspace{9\baselineskip}
-% \item [For multiple indexes with \pkg{memoir} and \pkg{makeindex},
+% \item [For multiple indexes with \pkg{memoir} and \prog{makeindex},
% using \prog{latexmk}:] \
%
% \pkg{lwarp}'s options are used, and are passed to \prog{latexmk}.
@@ -9213,7 +9999,7 @@
% when the user executes \cmds{lwarpmk print} and \cmds{lwarpmk html}.
%
% \needspace{19\baselineskip}
-% \item [For multiple indexes with \pkg{memoir} and \pkg{makeindex},
+% \item [For multiple indexes with \pkg{memoir} and \prog{makeindex},
% \emph{without} \pkg{latexmk}:] \
%
% \prog{lwarpmk} must be told how to create the indexes:
@@ -9244,7 +10030,7 @@
% to compile the indexes.
%
% \needspace{13\baselineskip}
-% \item [For a single index with \pkg{memoir} and \pkg{xindy}:]
+% \item [For a single index with \pkg{memoir} and \prog{xindy}:]
% \begin{sourcedisplay}
% \cs{documentclass}\{\textblue{memoir}\} \\
% \cs{usepackage}[ \\
@@ -9266,7 +10052,7 @@
% to compile the indexes.
%
% \needspace{17\baselineskip}
-% \item [For multiple indexes with \pkg{memoir} and \pkg{xindy},
+% \item [For multiple indexes with \pkg{memoir} and \prog{xindy},
% using \pkg{latexmk}:] \
%
% \pkg{lwarp}'s options are used, and are passed to \prog{latexmk}.
@@ -9286,7 +10072,7 @@
% \prog{lwarpmk} will use \prog{latexmk} to create the indexes automatically.
%
% \needspace{24\baselineskip}
-% \item [For multiple indexes with \pkg{memoir} and \pkg{xindy},
+% \item [For multiple indexes with \pkg{memoir} and \prog{xindy},
% \emph{without} \pkg{latexmk}:] \
%
% \prog{lwarpmk} must be told how to create the indexes:
@@ -9330,8 +10116,8 @@
% \DescribeFile{lwarp.ist}
% When using \prog{makeindex}, \prog{lwarpmk} uses the file |lwarp.ist| to process the index.
% \gindex{lwarp.ist=\filenm{lwarp.ist}>customizing}
-% \gindex{makeindex>customizing}
-% \gindex{index>custom \pkg{makeindex} style file}
+% \gindex{makeindex=\prog{makeindex}>customizing}
+% \gindex{index>makeindex=\prog{makeindex}>custom style file}
% This file is over-written by \pkg{lwarp} whenever a print version of
% the document is processed.
%
@@ -9342,14 +10128,24 @@
% Keep the lines which refer to \cs{hyperindexref}.
% These lines creates the hyperlinks for the \HTML\ index. During print output
% \cs{hyperindexref} becomes a null function.
+% \item If changing
+% \begin{sourceverb}
+% delim_n -and- delim_r
+% \end{sourceverb}
+% in \filenm{projectname.ist}, then in the document preamble redefine
+% \begin{sourceverb}
+% \IndexPageSeparator -and- \IndexRangeSeparator
+% \end{sourceverb}
+% to match.
% \item In the document source use the \optn{makeindexStyle} option for \pkg{lwarp}:
% \DescribeOption{makeindexStyle}
-% \begin{Verbatim}[gobble=2,tabsize=4]
-% \usepackage[
-% ... other options ...
-% \textred{makeindexStyle=projectname.ist},
-% ]{lwarp}
-% \end{Verbatim}
+% \begin{sourcedisplay}
+% \cs{usepackage}[ \\
+% \fquad \dots other options \dots \\
+% \fquad \textred{makeindex}, \\
+% \fquad \textred{makeindexStyle=projectname.ist}, \\
+% ]\{lwarp\}
+% \end{sourcedisplay}
% Likewise, refer to the custom style file if using \cs{PrintIndexCmd},
% \cs{HTMLIndexCmd}, or \cs{LatexmkIndexCmd}.
% \item Recompile the print version, which causes
@@ -9366,8 +10162,8 @@
% \DescribeFile{lwarp.xdy}
% When using \prog{xindy}, \prog{lwarpmk} uses the file |lwarp.xdy| to process the index.
% \gindex{lwarp.xdy=\filenm{lwarp.xdy}>customizing}
-% \gindex{xindy=\pkg{xindy}>customizing}
-% \gindex{index>custom \pkg{xindy} style file}
+% \gindex{xindy=\prog{xindy}>customizing}
+% \gindex{index>xindy=\prog{xindy}>custom style file}
% This file is over-written by \pkg{lwarp} whenever a print version of
% the document is processed.
%
@@ -9387,14 +10183,28 @@
% \cs{hyperindexref} becomes a null function.
%
% To create custom styles, refer to the lines for \cs{textbf} and \cs{textit}.
+% \item If changing any of
+% \begin{sourceverb}
+% markup-locref-list :sep
+% markup-locclass-list :open
+% markup-locclass-list :sep
+% markup-crossref-layer-list :sep
+% markup-range :sep
+% \end{sourceverb}
+% in \filenm{projectname.xdy}, then in the document preamble redefine
+% \begin{sourceverb}
+% \IndexPageSeparator -and- \IndexRangeSeparator
+% \end{sourceverb}
+% to match.
% \item In the document source use the \optn{xindyStyle} option for \pkg{lwarp}:
% \DescribeOption{xindyStyle}
-% \begin{Verbatim}[gobble=2,tabsize=4]
-% \usepackage[
-% ... other options ...
-% \textred{xindyStyle=projectname.xdy},
-% ]{lwarp}
-% \end{Verbatim}
+% \begin{sourcedisplay}
+% \cs{usepackage}[ \\
+% \fquad \dots other options \dots \\
+% \fquad \textred{xindy}, \\
+% \fquad \textred{xindyStyle=projectname.xdy}, \\
+% ]\{lwarp\}
+% \end{sourcedisplay}
% Likewise, refer to the custom style file if using \cs{PrintIndexCmd},
% \cs{HTMLIndexCmd}, or \cs{LatexmkIndexCmd}.
% \item Recompile the print version, which causes
@@ -9401,12 +10211,50 @@
% \pkg{lwarp} to rewrite the |lwarpmk.conf| configuration file.
% This tells \prog{lwarpmk} to use the custom |projectname.xdy| file instead of |lwarp.xdy|.
% \end{enumerate}
+%
+%
+% \subsubsection{Using a custom \prog{xindex} style file}
+% \label{sec:modifyxindex}
+%
+% \DescribeProgram{xindex}
+% \gindex{xindex=\prog{xindex}>customizing}
+% \gindex{index>xindex=\prog{xindex}>custom configuration file}
+% To use a custom \prog{xindex} style file:
+% \begin{enumerate}
+% \item Copy |xindex-cfg.lua| to a new filename such as \filenm{xindex-projectname.lua}.
+% The filename must start with \filenm{xindex-} and end with \filenm{.lua}.\watchout[filename]
+% \item Make changes to \filenm{xindex-projectname.lua}.
+% \item If changing
+% \begin{sourceverb}
+% itemPageDelimiter -and- rangeSymbol
+% \end{sourceverb}
+% in \filenm{xindex-projectname.lua}, then in the document preamble redefine
+% \begin{sourceverb}
+% \IndexPageSeparator -and- \IndexRangeSeparator
+% \end{sourceverb}
+% to match.
+% \item In the document source use the \optn{xindexConfig} option for \pkg{lwarp}:
+% \DescribeOption{xindexConfig}
+% \begin{sourcedisplay}
+% \cs{usepackage}[ \\
+% \fquad \dots other options \dots \\
+% \fquad \textred{xindex}, \\
+% \fquad \textred{xindexConfig=projectname}, \quad \% \textgreen{(without xindex- or .lua)} \\
+% ]\{lwarp\}
+% \end{sourcedisplay}
+% Likewise, refer to the custom style file if using \cs{PrintIndexCmd},
+% \cs{HTMLIndexCmd}, or \cs{LatexmkIndexCmd}.
+% \item Recompile the print version, which causes
+% \pkg{lwarp} to rewrite the |lwarpmk.conf| configuration file.
+% This tells \prog{lwarpmk} to use the custom
+% \filenm{xindex-projectname.lua} file instead of the default |xindex-cfg.lua|.
+% \end{enumerate}
%
%
% \subsubsection{Additional indexing limitations}
% \prog{xindy} and \pkg{hyperref} may not work well together for print output
-% \trouble[\pkg{xindy} with \pkg{hyperref}]{xindy=\pkg{xindy}>hyperref=\pkg{hyperref}}
-% \trouble{index>xindy=\pkg{xindy} and \pkg{hyperref}}
+% \trouble[\prog{xindy} with \pkg{hyperref}]{xindy=\prog{xindy}>hyperref=and \pkg{hyperref}}
+% \trouble{index>xindy=\prog{xindy}>hyperref=and \pkg{hyperref}}
% \trouble{index>see and seealso}
% \trouble{index>reference ranges}
% \trouble{index>styling references}
@@ -9450,6 +10298,9 @@
%
%
% \subsubsection{Index positions, \TOC, \pkg{tocbibind}}
+% \gindex{index>placement}
+% \gindex{index>tocbibind=\pkg{tocbibind}}
+%
% \limitstocbibind
%
% \limitstocloft
@@ -9527,12 +10378,6 @@
%
%
%
-% \subsubsection{\pkg{newtxmath} package}
-%
-% \DescribePackage{newtxmath}
-% \limitsnewtxmath
-%
-%
% \subsection{Graphics}
% \label{sec:limitsgraphics}
%
@@ -9751,7 +10596,42 @@
% \DescribeClass{memoir}
% \limitsmemoir
%
+% The custom frame commands in the \pkg{memoir} manual may be emulated by
+% \trouble[\env{framewithtitle}, \env{titledframe}]{framewithtitle=\env{framewithtitle}}
+% \trouble{titledframe=\env{titledframe}}
+% \trouble{memoir=\pkg{memoir}>\env{framewithtitle}, \env{titledframe}}
+% \gindex{memoir=\pkg{memoir}>\env{framewithtitle}, \env{titledframe}}
+% placing the original defintions in the preamble inside \env{warpprint}
+% environments, and then providing an \HTML\ equivalent:
+% \begin{sourceverb}
+% \begin{warpHTML}
+% \newcommand{\FrameTitle}[2]{%
+% \textbf{#2}
+% }
+%
+% \newenvironment{framewithtitle}[2][\FrameFirst at Lab\ (cont.)]{%
+% \begin{fminipage}{\linewidth}
+% \textbf{#2}
+% \begin{minipage}{\linewidth}
+% }
+% {\end{minipage}\end{fminipage}}
+%
+% \newcommand{\TitleFrame}[2]{%
+% \par
+% \textbf{#1}\par
+% \fboxBlock{#2}
+% }
+%
+% \newenvironment{titledframe}[2][\FrameFirst at Lab\ (cont.)]{%
+% \par
+% \textbf{#2}
+% \begin{fminipage}{\linewidth}
+% }
+% {\end{fminipage}}
+% \end{warpHTML}
+% \end{sourceverb}
%
+%
% \subsection{International languages}
% \label{sec:international}
%
@@ -9818,6 +10698,10 @@
% \limitsfixme
%
%
+% \subsubsection{\pkg{acro} package}
+% \limitsacro
+% \trouble{acro=\pkg{acro}}
+%
% \subsubsection{\pkg{chemfig} package}
%
% \limitschemfig
@@ -9835,14 +10719,6 @@
% See \cref{sec:mhchem}.
%
%
-% \subsubsection{\pkg{xparse} package}
-%
-% \changes{v0.45}{2017/12/09}{Docs: \pkg{xparse} warnings.}
-% \DescribePackage{xparse}
-% \limitsxparse
-% \gindex{xparse=\pkg{xparse}>warnings}
-%
-%
% \subsubsection{\pkg{kotex} package}
%
% \DescribePackage{kotex}
@@ -9875,7 +10751,7 @@
% are used to set customized commands to be executed by
% \cmds{lwarpmk print} and \cmds{lwarpmk html}.
% \begin{description}
-% \item [\optn{PrintLatexCmd}] should be set to shell commands which take \filenm{project.tex}
+% \item[\optn{PrintLatexCmd}] should be set to shell commands which take \filenm{project.tex}
% and generate \filenm{project.pdf}.
% \item[\optn{HTMLLatexCmd}] should be set to take \filenm{project_html.tex} and
% generate \filenm{project_html.pdf}.
@@ -10515,7 +11391,7 @@
%
% Equation numbering is not automatic, but the equation numbers in \SVG\ math
% will match the \LaTeX\ and \HTML\ output.
-% SVG math is recommended when using the \AmS\ environments, which may have
+% \SVG\ math is recommended when using the \AmS\ environments, which may have
% multiple numbered equations per object.
%
% As of when last checked, \brand{LibreOffice} ignores the following:
@@ -10581,13 +11457,6 @@
% \watchout[\TeX\ boxes]
% require \cs{newpage}, which will not work in a \TeX\ box.
%
-% \changes{v0.57}{2018/05/28}{Docs: Recreating the index for \pkg{lwarp} source.}
-% To recreate the index for the \pkg{lwarp} documentation:
-% \margintag{index recreation}
-% \begin{Verbatim}[gobble=2,obeytabs,tabsize=4,frame=lines]
-% makeindex -s gglo.ist -o lwarp.gls lwarp.glo
-% splitindex lwarp.idx -- -s gind.ist
-% \end{Verbatim}
%
%
% \subsection{Creating a development system}
@@ -10607,7 +11476,7 @@
% hundred additional \filenm{lwarp-*.sty} files for the various packages which are
% supported.
%
-% To create the documentation \filenm{lwarp.pdf},
+% To create the initial documentation \filenm{lwarp.pdf},
% execute \userentry{pdflatex lwarp.dtx}
%
% \item[To make the development files visible to other projects:] \
@@ -10619,6 +11488,7 @@
%
% Inside this directory, create the file \filenm{update}, containing:
% \begin{Verbatim}[gobble=2,obeytabs,tabsize=4,frame=lines]
+% rm lwarp-*.sty
% ln -s /path_to_dev_directory/lwarp*.sty .
% ln -s /path_to_dev_directory/lwarp_baseline_marker.png .
% ln -s /path_to_dev_directory/lwarp_baseline_marker.eps .
@@ -10654,6 +11524,39 @@
% setenv PATH ${HOME}/bin:/opt/texbin_local:/opt/texbin:${PATH}
% \end{Verbatim}
%
+% \item[To fully compile the \pkg{lwarp} documentation and indexes:] \ \null
+% \changes{v0.57}{2018/05/28}{Docs: Recreating the index for \pkg{lwarp} source.}
+% \changes{v0.87}{2020/05/17}{Docs: Updated docs to compile \pkg{lwarp} documentation.}
+% \gindex{documentation>compile}
+% \gindex{lwarp=\pkg{lwarp}>compiling documentation}
+% \begin{sourcedisplay}
+% pdflatex lwarp.ins \\
+% pdflatex lwarp.dtx \\
+% pdflatex lwarp.dtx \hfill \textgreen{<if necessary>} \\
+% makeindex -s gglo.ist -o lwarp.gls lwarp.glo \hfill \textgreen{<indexes>} \\
+% splitindex lwarp.idx -- -s gind.ist \\
+% pdflatex lwarp.dtx \\
+% pdflatex lwarp.dtx \hfill \textgreen{<if necessary>} \\
+% makeindex -s gglo.ist -o lwarp.gls lwarp.glo \hfill \textgreen{<indexes>} \\
+% splitindex lwarp.idx -- -s gind.ist \hfill \textgreen{<again>} \\
+% pdflatex lwarp.dtx \\
+% pdflatex lwarp.dtx \hfill \textgreen{<if necessary>}
+% \end{sourcedisplay}
+% (The second round of index processing is required to fully resolve the
+% final Index of Indexes.)
+%
+% To make it easier to update the documentation after a minor change,
+% it is useful to create a command script called \filenm{make_index}, containing:
+% \begin{sourceverb}
+% makeindex -s gglo.ist -o lwarp.gls lwarp.glo
+% splitindex lwarp.idx -- -s gind.ist
+% \end{sourceverb}
+%
+% Note that Index of Indexes and the cross-references to the indexes
+% \trouble[references]{index>documentation references}
+% \trouble{documentation>index cross-references}
+% may not be correct until the above has been accomplished.
+%
% \end{description}
%
%
@@ -10920,10 +11823,13 @@
% \item[\ctr{SideTOCDepth} < \ctr{FileDepth}:] A warning is displayed if these
% counters are set such that the side\TOC\ will not be able to access all pages
% of the website.
-% \item[Duplicate filenames:] \pkg{lwarp} may generate file names from section names.
-% While doing so, the filenames are simplified and special characters are removed.
+% \item[Filenames:] \pkg{lwarp} may generate file names from section names.
+% While doing so, the filenames are simplified, and special characters
+% and math are removed.
% If this process generates a duplicate filename, and error is generated,
% describing the filename and which section name generated it.
+% A warning is issued if dollar-delimited math is used.
+% Parenthesis-delimited math is recommended instead.
% \item[Multirow:] When \cs{multirow} or \cs{multicolrow} are used,
% \trouble[\HTML\ corrupted]{HTML>corrupted}
% \cs{mrowcell} or \cs{mcolrowcell} must be placed in the appropriate cells to
@@ -10930,7 +11836,7 @@
% avoid corrupted \HTML\ output.
% \item[(width,height) missing a comma:] \cs{makebox} and \cs{framebox} can accept
% a parenthesis-delimited width and height, which must be separated by a comma.
-% \item[``Load graphicx or graphics for improved SVG math baselines.'':] \SVG\ math
+% \item[``Load graphicx or graphics for improved \SVG\ math baselines.'':] \SVG\ math
% sizing and baselines are improved if either of these packages are used.
% \item[``Load graphicx or graphics for improved XeTeX logo.'':] If these packages
% are loaded, the \XeLaTeX\ logo can use the reversed ``E''.
@@ -10985,10 +11891,21 @@
% that your document's \LaTeX{} code is correct, before attempting
% to generate an \HTML\ version.
%
-% \item [\texttt{\cs{end}\{warpHTML\}, \cs{end}\{warpprint\}, \cs{end}\{warpall\}}:]
-% \trouble{warpHTML}\trouble{warpprint}\trouble{warpall}
+% \item [\texttt{\cs{end}\{warpHTML\}, \cs{end}\{warpprint\},
+% \cs{end}\{warpall\}, \cs{end}\{warpMathJax\}}:] ~ \\
+% \trouble{warpHTML}
+% \trouble{warpprint}\trouble{warpall}\trouble{warpMathJax}
% Each of these must be without any other characters on the same line.
+% \watchout[\env{warpHTML}, \env{warpprint}, \env{warpMathJax}, \env{warpall}]
%
+% \item[``\texttt{Runaway argument? File ended while scanning use of \cs{next}}:] ~ \\
+% \trouble{warpHTML}
+% \trouble{warpprint}\trouble{warpall}\trouble{warpMathJax}
+% \trouble{Runaway argument? File ended \dots}
+% \trouble{File ended while scanning use of \cs{next}}
+% Don't use \env{warpHTML}, \env{warpprint}, \env{warpall}, or
+% \env{warpMathJax} inside itself.
+%
% \item [Options clash:] If using \pkg{memoir}, see \cref{sec:limitsmemoir}.
%
% \item [``Missing \cs{begin}\{document\}.'':]
@@ -11029,6 +11946,12 @@
% \end{sourcedisplay}
% \trouble{Label(s) may have changed}
%
+% \item [``Temporary page! LaTeX was unable to guess the total
+% number of pages \dots'':] \
+% Harmless. Recompile the document one more time.
+% \trouble{Temporary page \dots unable to guess \dots}
+% \trouble{LaTeX was unable to guess the total\dots}
+%
% \item [``Leaders not followed by proper glue'':] ~ \\
% This can be caused by
% a missing |l@<floattype>| or |l@<sectiontype>| definition.
@@ -11050,8 +11973,16 @@
% \end{sourcedisplay}
% inside a group first.
%
+% As a stop-gap measure, you may wish to try incrementing
+% \label{sec:troubletexboxes}
+% \margintag{\ctr{LWR at texboxdepth}}
+% the counter \ctr{LWR at texboxdepth} before the problematic
+% macro, and then decrementing it after.
+% Doing so tells \pkg{lwarp} to avoid using a \cs{newpage} inside
+% the macro, which may avoid this error.
+%
% Also, custom macros which appear inside a section,
-% \trouble[macros in section,table,figure names]{sectioning>macro in name}
+% \trouble[macros in section, table, figure names]{sectioning>macro in name}
% \trouble{table>macro in name}
% \trouble{figure>macro in name}
% figure, or table name should be
@@ -11061,7 +11992,7 @@
%
% If using BibTeX, see \cref{sec:limitsbibtex}.\watchout[BibTeX]
%
-% \item[``\texttt{!~Undefined control sequence. \dots\ \cs{@begindocumenthook}''}:] ~
+% \item[``\texttt{!~Undefined control sequence. \dots\ \cs{\_\_hook} begindocument''}:] ~
% \watchout[\pkg{polyglossia}] \\
% See \cref{sec:limitspolyglossia}
% if using \pkg{polyglossia}.
@@ -11080,6 +12011,27 @@
% define new macros for print and \HTML\ modes, see \cref{sec:definingprinthtml}
% regarding \cs{LWR at expandableformatted}.
%
+% \item[''\texttt{Token not allowed in a PDF string}'':] This \pkg{hyperref}
+% \trouble{Token not allowed in a PDF string}
+% \trouble{hyperref=\pkg{hyperref}>Token not allowed in a PDF string}
+% warning appears while creating the print-mode document, not \HTML.
+% A low-level macro is being used in a section name which appears
+% in the \PDF\ bookmarks. \pkg{hyperref} removes this macro from
+% the bookmark, and warns of doing so.
+% To avoid this warning, use \cs{pdfstringdefDisableCommands} in
+% the preamble to define simplified replacement macros for each, or use
+% \cs{texorpdfstring} in the \cs{section} or related macro
+% to declare what to use for the \TeX\ text, v.s. the \PDF\ bookmark.
+% See the \pkg{hyperref} manual.
+%
+% \item[``\texttt{Command \cs{textquoteright} invalid in math mode}'':] This
+% \trouble[quote character]{Command \cs{textquoteright} invalid in math mode}
+% \trouble{math>Command \cs{textquoteright} invalid in math mode}
+% \trouble{textquoteright=\cs{textquoteright} invalid in math mode}
+% can occur when the document source has math containing
+% the slanted quote |’| character, instead of using
+% the upright quote |'| character.
+%
% \item[Complicated objects inside math:] Some objects, such as \tikz,
% \trouble[``impure'' math objects]{math>non-math contents}
% may not compile in \pkg{lwarp}'s normal math emulation.
@@ -11168,7 +12120,7 @@
% \item Enter \cmds{lwarpmk limages} to refresh the \env{lateximage} images.
% \end{itemize}
%
-% \item[SVG images:] \
+% \item[\SVG\ images:] \
%
% \limitssvgimages
%
@@ -11523,8 +12475,12 @@
% \changes{v0.63}{2018/11/25}{Added p\TeX support.}
% \changes{v0.79}{2020/01/05}{\pkg{luatex85}: Removed.}
% \changes{v0.79}{2020/01/05}{\pkg{ifpdf}, \pkg{ifptex}: Provided by \pkg{iftex}.}
+% \changes{v0.87}{2020/05/21}{\pkg{ifpdf}, \pkg{ifptex}: Restored to work on TL2019 and earlier.}
+% ^^A *8* remove ifpdf, ifptex
% \begin{macrocode}
\RequirePackage{iftex}[2019/11/07]
+\RequirePackage{ifpdf}
+\RequirePackage{ifptex}
\newif\ifxetexorluatex
@@ -11610,14 +12566,17 @@
{%
Package #1,\MessageBreak
or one which uses #1,\MessageBreak
- must be loaded after lwarp
+ must be loaded after Lwarp.\MessageBreak
+ Enter 'H' for possible solutions%
}
- {Move \detokenize{\usepackage}{#1} after
- \detokenize{\usepackage}{lwarp}.\MessageBreak
- Package #1 may also be loaded by something else,\MessageBreak
- which must also be moved after lwarp.}
+ {%
+ Move ``\protect\usepackage{#1}'' after
+ ``\protect\usepackage{lwarp}''.\MessageBreak
+ Package #1 may also be loaded by something else,\MessageBreak
+ which must also be moved after Lwarp.%
+ }
}
-{}
+{\relax}
}
% \end{macrocode}
% \end{macro}
@@ -11668,11 +12627,14 @@
% \begin{macrocode}
\newcommand*{\LWR at loadbefore}[1]{%
\@ifpackageloaded{#1}
-{}
+{\relax}
{
\PackageError{lwarp}
- {Package #1 must be loaded before lwarp}
- {Move \detokenize{\usepackage}{#1} before \detokenize{\usepackage}{lwarp}.}
+ {%
+ Package #1 must be loaded before lwarp.\MessageBreak
+ Enter 'H' for possible solutions%
+ }
+ {Move ``\protect\usepackage{#1}'' before ``\protect\usepackage{lwarp}''.}
}
}
% \end{macrocode}
@@ -11709,7 +12671,9 @@
{%
Package #1 is not supported\MessageBreak
by lwarp's HTML conversion.\MessageBreak
- Package(s) #2 may be useful instead%
+ Package(s)\MessageBreak
+ \space\space#2\MessageBreak
+ may be useful instead%
}
{%
Package #1 might conflict with lwarp in some way,\MessageBreak
@@ -11778,7 +12742,7 @@
or is superceded by another class.\MessageBreak
For a possible alternative, see class(es) #2.
}
-}{}%
+}{\relax}%
}
% \end{macrocode}
% \end{macro}
@@ -11794,7 +12758,13 @@
% \changes{v0.68}{2019/02/26}{Prevented \pkg{alg}, \pkg{algorithmic}, \pkg{fncylab}, \pkg{pdfcprot}.}
% \changes{v0.80}{2020/02/15}{Prevented \pkg{formula}, \pkg{shadethm}, \pkg{slashbox}.}
% \changes{v0.81}{2020/02/15}{Prevented \pkg{statex}.}
+% \changes{v0.87}{2020/05/14}{Prevented \pkg{csvtools}.}
+% \changes{v0.88}{2020/07/07}{Prevented \pkg{shadethm}.}
+% \changes{v0.891}{2020/09/16}{Prevented \pkg{libgreek}.}
+% \changes{v0.893}{2020/11/15}{Allowed \pkg{picinpar}.}
+% \changes{v0.895}{2021/01/19}{Allowed \pkg{epsf}.}
%
+% ^^A *earlyloadnever *loadnever
% \begin{macrocode}
\LWR at earlyclassloadnever{jarticle}{ujarticle}
\LWR at earlyclassloadnever{jbook}{ujbook}
@@ -11808,23 +12778,21 @@
\LWR at earlyloadnever{alg}{algorithm2e, algorithmicx}
\LWR at earlyloadnever{algorithmic}{algorithm2e, algorithmicx}
\LWR at earlyloadnever{bitfield}{bytefield}
-\LWR at earlyloadnever{boxedminipage}{boxedminipage2e}
\LWR at earlyloadnever{caption2}{caption}
% \LWR at earlyloadnever{ccaption}{caption}% might be preloaded by memoir
\LWR at earlyloadnever{colortab}{colortbl}
+\LWR at earlyloadnever{csvtools}{datatool}
\LWR at earlyloadnever{doublespace}{setspace}
-\LWR at earlyloadnever{epsf}{graphicx}
\LWR at earlyloadnever{fancyheadings}{fancyhdr}
\LWR at earlyloadnever{fncylab}{cleveref}
\LWR at earlyloadnever{formula}{siunitx}
\LWR at earlyloadnever{glossary}{glossaries}
\LWR at earlyloadnever{hyper}{hyperref}
+\LWR at earlyloadnever{libgreek}{libertinust1math, newtx}
\LWR at earlyloadnever{newthm}{ntheorem}
\LWR at earlyloadnever{pdfcprot}{microtype}
-\LWR at earlyloadnever{picinpar}{floatflt, wrapfig}
\LWR at earlyloadnever{picins}{floatflt, wrapfig}
\LWR at earlyloadnever{rplain}{fancyhdr}
-\LWR at earlyloadnever{shadethm}{mdframed}
\LWR at earlyloadnever{si}{siunitx}
\LWR at earlyloadnever{sistyle}{siunitx}
\LWR at earlyloadnever{slashbox}{diagbox}
@@ -11860,6 +12828,7 @@
% \changes{v0.45}{2017/12/03}{Allows \pkg{memoir}'s preloaded packages.}
% \changes{v0.58}{2018/06/21}{Fix: \pkg{memoir} and \pkg{ccaption}.}
% \changes{v0.82}{2020/03/17}{\pkg{syntonly}: Added to \cs{LWR at loadafter}.}
+% \changes{v0.89}{2020/08/12}{Allow preload of \pkg{amsmath}, \pkg{amsthm}, \pkg{centernot}.}
%
% The following packages must be loaded after \pkg{lwarp}:
% ^^A *loadafter
@@ -11871,6 +12840,7 @@
\LWR at loadafter{a5comb}
\LWR at notmemoirloadafter{abstract}
\LWR at loadafter{academicons}
+\LWR at loadafter{accents}
\LWR at loadafter{accessibility}
\LWR at loadafter{accsupp}
\LWR at loadafter{acro}
@@ -11881,8 +12851,9 @@
\LWR at loadafter{algorithm2e}
\LWR at loadafter{algorithmicx}
\LWR at loadafter{alltt}
-\LWR at loadafter{amsmath}
-\LWR at loadafter{amsthm}
+\LWR at loadafter{amscdx}
+% \LWR at loadafter{amsmath}% may be preloaded
+% \LWR at loadafter{amsthm}% may be preloaded
\LWR at loadafter{anonchap}
\LWR at loadafter{anysize}
\LWR at notmemoirloadafter{appendix}
@@ -11891,10 +12862,11 @@
\LWR at notmemoirloadafter{array}
\LWR at loadafter{arydshln}
\LWR at loadafter{asymptote}
-% \LWR at loadafter{atbegshi}% used by morewrites
+% \LWR at loadafter{atbegshi}% now in LaTeX core, also used by morewrites
\LWR at loadafter{attachfile}
\LWR at loadafter{attachfile2}
\LWR at loadafter{authblk}
+\LWR at loadafter{authoraftertitle}% Supported as-is, but must be loaded after.
\LWR at loadafter{autobreak}
\LWR at loadafter{autonum}
\LWR at loadafter{awesomebox}
@@ -11915,11 +12887,13 @@
\LWR at notmemoirloadafter{booktabs}
\LWR at loadafter{bophook}
\LWR at loadafter{bounddvi}
+\LWR at loadafter{boxedminipage}
\LWR at loadafter{boxedminipage2e}
\LWR at loadafter{braket}
\LWR at loadafter{breakurl}
\LWR at loadafter{breqn}
\LWR at loadafter{bsheaders}
+\LWR at loadafter{bussproofs}
\LWR at loadafter{bxpapersize}
\LWR at loadafter{bytefield}
\LWR at loadafter{cancel}
@@ -11926,10 +12900,11 @@
\LWR at loadafter{canoniclayout}
\LWR at loadafter{caption}
\LWR at loadafter{caption2}
+\LWR at loadafter{caption3}
\LWR at loadafter{cases}
% catoptions is supported by the lwarp core
% \LWR at loadafter{ccaption}% may be preloaded by memoir
-\LWR at loadafter{centernot}
+% \LWR at loadafter{centernot}% may be preloaded by newtx
\LWR at loadafter{changebar}
\LWR at loadafter{changelayout}
\LWR at notmemoirloadafter{changepage}
@@ -11944,6 +12919,9 @@
\LWR at loadafter{chkfloat}
\LWR at notmemoirloadafter{chngpage}
\LWR at loadafter{cite}
+\LWR at loadafter{citeref}
+\LWR at loadafter{cleveref}
+% cmbright may be preloaded
\LWR at loadafter{cmdtrack}
\LWR at loadafter{colonequals}
\LWR at loadafter{color}
@@ -11967,6 +12945,7 @@
\LWR at loadafter{draftcopy}
\LWR at loadafter{draftfigure}
\LWR at loadafter{draftwatermark}
+\LWR at loadafter{drftcite}
\LWR at loadafter{easy-todo}
\LWR at loadafter{ebook}
\LWR at loadafter{econometrics}
@@ -11981,6 +12960,7 @@
\LWR at notmemoirloadafter{enumerate}
\LWR at loadafter{enumitem}
\LWR at notmemoirloadafter{epigraph}
+\LWR at loadafter{epsf}
\LWR at loadafter{epsfig}
\LWR at loadafter{epstopdf}
\LWR at loadafter{epstopdf-base}
@@ -11988,10 +12968,11 @@
\LWR at loadafter{eqparbox}
\LWR at loadafter{errata}
\LWR at loadafter{eso-pic}
+\LWR at loadafter{esvect}
\LWR at loadafter{etoc}
\LWR at loadafter{eurosym}
\LWR at loadafter{everypage}
-\LWR at loadafter{everyshi}
+% \LWR at loadafter{everyshi}% now in LaTeX core
\LWR at loadafter{extarrows}
\LWR at loadafter{extramarks}
\LWR at loadafter{fancybox}
@@ -11999,11 +12980,13 @@
\LWR at loadafter{fancyref}
\LWR at loadafter{fancytabs}
\LWR at loadafter{fancyvrb}
+\LWR at loadafter{fbox}
\LWR at loadafter{fewerfloatpages}
\LWR at loadafter{figcaps}
\LWR at loadafter{figsize}
\LWR at loadafter{fitbox}
\LWR at loadafter{fix2col}
+\LWR at loadafter{fixmath}
\LWR at loadafter{fixme}
\LWR at loadafter{fixmetodonotes}
\LWR at loadafter{flafter}
@@ -12032,6 +13015,7 @@
\LWR at loadafter{foreign}
\LWR at loadafter{forest}
\LWR at loadafter{fouridx}
+% fourier may be loaded before lwarp
\LWR at loadafter{framed}
\LWR at loadafter{ftcap}
\LWR at loadafter{ftnright}
@@ -12038,11 +13022,13 @@
\LWR at loadafter{fullminipage}
\LWR at loadafter{fullpage}
\LWR at loadafter{fullwidth}
+\LWR at loadafter{fvextra}
\LWR at loadafter{fwlw}
\LWR at loadafter{gensymb}
\LWR at loadafter{gentombow}
% geometry is always loaded by lwarp, and lwarp-geometry is AtBeginDocument
\LWR at loadafter{ghsystem}
+\LWR at loadafter{gindex}
\LWR at loadafter{glossaries}
\LWR at loadafter{gmeometric}
% \LWR at loadafter{graphics}% pre-loaded by xunicode
@@ -12055,7 +13041,9 @@
\LWR at loadafter{gridset}
\LWR at loadafter{hang}
\LWR at loadafter{hanging}
+\LWR at loadafter{hepunits}
\LWR at loadafter{hhline}
+\LWR at loadafter{hhtensor}
\LWR at loadafter{hypbmsec}
\LWR at loadafter{hypcap}
\LWR at loadafter{hypdestopt}
@@ -12066,13 +13054,20 @@
\LWR at loadafter{idxlayout}
\LWR at loadafter{ifoddpage}
\LWR at loadafter{imakeidx}
+\LWR at loadafter{impnattypo}
\LWR at notmemoirloadafter{index}
% inputenc must be loaded before lwarp
% inputenx must be loaded before lwarp
% inputtrc may be loaded before lwarp
\LWR at loadafter{intopdf}
+\LWR at loadafter{isomath}
+\LWR at loadafter{isotope}
+\LWR at loadafter{jurabib}
\LWR at loadafter{karnaugh-map}
\LWR at loadafter{keyfloat}
+\LWR at loadafter{keystroke}
+% kpfonts may be loaded before lwarp
+% kpfonts-otf may be loaded before lwarp
\LWR at loadafter{layaureo}
\LWR at loadafter{layout}
\LWR at loadafter{layouts}
@@ -12080,11 +13075,13 @@
\LWR at loadafter{leftidx}
\LWR at loadafter{letterspace}
\LWR at loadafter{lettrine}
+% libertinust1math may be loaded before lwarp
\LWR at loadafter{lineno}
\LWR at loadafter{lips}
\LWR at loadafter{listings}
\LWR at loadafter{listliketab}
\LWR at loadafter{longtable}
+\LWR at loadafter{lpic}
\LWR at loadafter{lscape}
\LWR at loadafter{ltablex}
\LWR at loadafter{ltcaption}
@@ -12095,6 +13092,7 @@
\LWR at loadafter{luacolor}
\LWR at loadafter{luamplib}
\LWR at loadafter{luatodonotes}
+\LWR at loadafter{luavlna}
\LWR at loadafter{lyluatex}
\LWR at loadafter{magaz}
\LWR at notmemoirloadafter{makeidx}
@@ -12103,14 +13101,24 @@
\LWR at loadafter{marginfix}
\LWR at loadafter{marginnote}
\LWR at loadafter{marvosym}
+% mathalpha may be loaded before lwarp
+\LWR at loadafter{mathastext}
\LWR at loadafter{mathcomp}
+\LWR at loadafter{mathdesign}
\LWR at loadafter{mathdots}
\LWR at loadafter{mathfixs}
+\LWR at loadafter{mathpazo}
+\LWR at loadafter{mathptmx}
+\LWR at loadafter{mathspec}
\LWR at loadafter{mathtools}
+\LWR at loadafter{mattens}
+\LWR at loadafter{maybemath}
\LWR at loadafter{mcaption}
\LWR at loadafter{mdframed}
+\LWR at loadafter{mdwmath}
\LWR at loadafter{media9}
\LWR at loadafter{memhfixc}
+\LWR at loadafter{menukeys}
\LWR at loadafter{metalogo}
\LWR at loadafter{metalogox}
\LWR at loadafter{mhchem}
@@ -12119,12 +13127,15 @@
\LWR at loadafter{midpage}
\LWR at loadafter{minibox}
\LWR at loadafter{minitoc}
+\LWR at loadafter{minted}
\LWR at loadafter{mismath}
+\LWR at loadafter{mleftright}
% morefloats must be allowed early for print mode
\LWR at notmemoirloadafter{moreverb}
% morewrites must be loaded before lwarp
\LWR at notmemoirloadafter{movie15}
\LWR at notmemoirloadafter{mparhack}
+\LWR at loadafter{multibib}
\LWR at loadafter{multicap}
%\LWR at loadafter{multicol}% loaded by ltxdoc
\LWR at loadafter{multicolrule}
@@ -12141,11 +13152,14 @@
\LWR at loadafter{nccmath}
\LWR at notmemoirloadafter{needspace}
% newclude must be loaded before lwarp
-\LWR at loadafter{newtxmath}
+% newpxmath may be preloaded
+% newtxmath may be loaded before lwarp
+% newtxsf may be loaded before lwarp
% newunicodechar must be loaded before lwarp
\LWR at notmemoirloadafter{nextpage}
\LWR at loadafter{nicefrac}
\LWR at loadafter{niceframe}
+\LWR at loadafter{nicematrix}
\LWR at loadafter{noitcrul}
\LWR at loadafter{nolbreaks}
\LWR at loadafter{nomencl}
@@ -12187,7 +13201,9 @@
\LWR at loadafter{phfqit}
\LWR at loadafter{physics}
\LWR at loadafter{physunits}
+\LWR at loadafter{picinpar}
\LWR at loadafter{pifont}
+\LWR at loadafter{pinlabel}
\LWR at loadafter{placeins}
\LWR at loadafter{plarray}
\LWR at loadafter{plarydshln}
@@ -12195,6 +13211,7 @@
\LWR at loadafter{plextarydshln}
\LWR at loadafter{plcolortbl}
\LWR at loadafter{plextdelarray}
+\LWR at loadafter{plimsoll}
\LWR at loadafter{prelim2e}
\LWR at loadafter{prettyref}
\LWR at loadafter{preview}
@@ -12205,6 +13222,7 @@
\LWR at loadafter{pstricks}
% \LWR at loadafter{pxatbegshi}% may be used by morewrites
\LWR at loadafter{pxeveryshi}
+% \LWR at loadafter{pxfonts}% may be loaded before lwarp
\LWR at loadafter{pxftnright}
\LWR at loadafter{pxjahyper}
\LWR at loadafter{quotchap}
@@ -12217,6 +13235,7 @@
\LWR at loadafter{repeatindex}
\LWR at loadafter{resizegather}
\LWR at loadafter{returntogrid}
+\LWR at loadafter{rlepsf}
\LWR at loadafter{rmathbr}
\LWR at loadafter{rmpage}
\LWR at loadafter{romanbar}
@@ -12226,6 +13245,7 @@
\LWR at loadafter{rviewport}
\LWR at loadafter{savetrees}
% scalefnt is loaded by babel-french
+\LWR at loadafter{scalerel}
\LWR at loadafter{schemata}
\LWR at loadafter{scrextend}
\LWR at loadafter{scrhack}
@@ -12236,6 +13256,7 @@
\LWR at loadafter{section}
\LWR at loadafter{sectionbreak}
\LWR at loadafter{sectsty}
+\LWR at loadafter{selectp}
\LWR at loadafter{semantic-markup}
\LWR at notmemoirloadafter{setspace}
\LWR at loadafter{shadow}
@@ -12243,15 +13264,19 @@
\LWR at notmemoirloadafter{showidx}
\LWR at loadafter{showkeys}
\LWR at loadafter{showtags}
+\LWR at loadafter{shuffle}
\LWR at loadafter{sidecap}
\LWR at loadafter{sidenotes}
+\LWR at loadafter{simplebnf}
\LWR at loadafter{SIunits}
\LWR at loadafter{siunitx}
+\LWR at loadafter{skmath}
\LWR at loadafter{slantsc}
\LWR at loadafter{slashed}
\LWR at loadafter{soul}
\LWR at loadafter{soulpos}
\LWR at loadafter{soulutf8}
+\LWR at loadafter{splitbib}
\LWR at loadafter{splitidx}
\LWR at loadafter{srcltx}
\LWR at loadafter{srctex}
@@ -12259,6 +13284,7 @@
\LWR at loadafter{stackengine}
\LWR at loadafter{stackrel}
\LWR at loadafter{statex2}
+\LWR at loadafter{statistics}
\LWR at loadafter{statmath}
\LWR at loadafter{steinmetz}
\LWR at notltjloadafter{stfloats}
@@ -12269,6 +13295,7 @@
\LWR at loadafter{subsupscripts}
\LWR at loadafter{supertabular}
\LWR at loadafter{svg}
+\LWR at loadafter{swfigure}
\LWR at loadafter{syntonly}
\LWR at loadafter{t1inc}
\LWR at loadafter{tabfigures}
@@ -12276,8 +13303,11 @@
\LWR at loadafter{tablefootnote}
\LWR at notmemoirloadafter{tabularx}
\LWR at loadafter{tabulary}
+\LWR at loadafter{tagpdf}
\LWR at loadafter{tascmac}
-\LWR at loadafter{tagpdf}
+\LWR at loadafter{tcolorbox}
+\LWR at loadafter{tensor}
+\LWR at loadafter{termcal}
\LWR at loadafter{textarea}
% \LWR at loadafter{textcomp}% maybe before lwarp with font packages
\LWR at loadafter{textfit}
@@ -12284,6 +13314,10 @@
\LWR at loadafter{textpos}
\LWR at loadafter{theorem}
\LWR at loadafter{thinsp}
+\LWR at loadafter{thm-listof}
+\LWR at loadafter{thm-restate}
+\LWR at loadafter{thmbox}
+\LWR at loadafter{thmtools}
\LWR at loadafter{threadcol}
\LWR at loadafter{threeparttable}
\LWR at loadafter{threeparttablex}
@@ -12290,6 +13324,7 @@
\LWR at loadafter{thumb}
\LWR at loadafter{thumbs}
\LWR at loadafter{tikz}
+\LWR at loadafter{tikz-imagelabels}
\LWR at loadafter{titleps}
\LWR at loadafter{titlesec}
\LWR at loadafter{titletoc}
@@ -12310,6 +13345,8 @@
\LWR at loadafter{truncate}
\LWR at loadafter{turnthepage}
\LWR at loadafter{twoup}
+% \LWR at loadafter{txfonts}% may be loaded before lwarp
+% txgreeks may be loaded before lwarp
% \end{macrocode}
% \changes{v0.44}{2017/11/19}{Adjustment for \pkg{koma-script}.}
% \begin{macrocode}
@@ -12318,13 +13355,15 @@
% \LWR at loadafter{ulem}% preloaded by ctexart and related classes
\LWR at loadafter{umoline}
\LWR at loadafter{underscore}
-\LWR at loadafter{unicode-math}
+% unicode-math may be loaded before lwarp
\LWR at loadafter{units}
\LWR at loadafter{unitsdef}
+\LWR at loadafter{upgreek}
\LWR at loadafter{upref}
\LWR at loadafter{url}
+\LWR at loadafter{ushort}
\LWR at loadafter{uspace}
-\LWR at loadafter{varioref}% no lwarp package provided
+\LWR at loadafter{varioref}
\LWR at notmemoirloadafter{verse}
\LWR at loadafter{versonotes}
\LWR at loadafter{vertbars}
@@ -12343,6 +13382,7 @@
\LWR at loadafter{xechangebar}
\LWR at loadafter{xellipsis}
% xetexko-vertical must be loaded before lwarp
+\LWR at loadafter{xevlna}
\LWR at loadafter{xfakebold}
\LWR at loadafter{xfrac}
\LWR at loadafter{xltabular}
@@ -12368,9 +13408,12 @@
%
% \begin{macrocode}
\newcommand{\LWR at mdfive}[1]{%
-\PackageError{lwarp}
-{No MD5 macro was found}
-{Lwarp must find the macros pdfmdfivesum or mdfivesum.}
+ \PackageError{lwarp}
+ {No MD5 macro was found}
+ {%
+ Lwarp must find the macros \protect\pdfmdfivesum\space
+ or \protect\mdfivesum.%
+ }
}
% \end{macrocode}
%
@@ -12441,7 +13484,7 @@
%
%
% \section{Unicode input characters}
-% \changes{v0.18}{2016/05/17}{PDF Unicode input characters.}
+% \changes{v0.18}{2016/05/17}{PDF=\PDF\ Unicode input characters.}
% \gindex{Unicode>input characters}
%
% \codeall
@@ -12499,7 +13542,8 @@
{%
Lwarp requires a vector font.\MessageBreak
Install and load cm-super, lmodern, or another\MessageBreak
- Type-1 vector font before loading lwarp%
+ Type-1 vector font before loading lwarp.\MessageBreak
+ Enter 'H' for possible solutions%
}
{%
Install cm-super or lmodern.\MessageBreak
@@ -12516,7 +13560,7 @@
%
% \section{Upright quotes}
%
-% In PDF\TeX, preserve upright quotes in verbatim text.
+% In pdf\TeX, preserve upright quotes in verbatim text.
% \pkg{upquote} also loads \pkg{textcomp}.
%
% \changes{v0.63}{2018/11/25}{p\TeX: Load \pkg{upquote}.}
@@ -12532,11 +13576,48 @@
%
%
%
+% \section{Avoid bad font combinations}
%
+% For \XeLaTeX\ and \LuaLaTeX, certain font combinations cause problems
+% with \pkg{lwarp}.
%
+% \pkg{libertinus-otf} has special handling for \cs{textquotedbl}.
+% Search for \cs{LWR at orig@textquotedbl}.
+%
+% \changes{v0.895}{2021/01/14}{Use \pkg{kpfonts-otf} if \LuaLaTeX, \XeLaTeX.}
+%
+% \begin{macrocode}
+\ifxetexorluatex
+ \AtBeginDocument{
+ \@ifpackageloaded{kpfonts}{
+ \PackageError{lwarp}
+ {%
+ When using XeLaTeX or LuaLaTeX,\MessageBreak
+ use kpfonts-otf instead of kpfonts%
+ }
+ {%
+ Replace: \protect\usepackage{kpfonts}\MessageBreak
+ with: \protect\usepackage{kpfonts-otf}
+ }
+ }{}
+ }
+\fi
+% \end{macrocode}
+%
+%
% \section{Miscellaneous tools}
%
%
+% \subsection{Variables}
+%
+% \begin{macrocode}
+\newlength{\LWR at templengthone}
+\newlength{\LWR at templengthtwo}
+\newlength{\LWR at templengththree}
+\newcounter{LWR at tempcountone}
+% \end{macrocode}
+%
+%
% \subsection{Lengths and units}
%
% \begin{macro}{\LWR at providelength} \marg{\cs{lengthname}}
@@ -12593,11 +13674,16 @@
% \begin{macro}{\LWR at patcherror} \marg{packagename} \marg{macroname}
%
% Prints an error if could not patch a macro.
+% \changes{v0.89}{2020/09/01}{Improved message.}
% \begin{macrocode}
\newcommand*{\LWR at patcherror}[2]{%
-\PackageError{lwarp}
-{Unable to patch package #1, macro #2}
-{Please contact the author of the Lwarp package.}
+ \PackageError{lwarp}%
+ {%
+ Unable to patch package #1,\MessageBreak
+ macro \LWRbackslash #2.\MessageBreak
+ Lwarp or #1 may need to be updated%
+ }%
+ {Please contact the maintainer of the Lwarp package.}%
}
% \end{macrocode}
% \end{macro}
@@ -12674,7 +13760,32 @@
% \end{macro}
%
%
+% \subsection{Inside boxes}
%
+% Greater than zero if currently inside a \TeX\ box,
+% thus should not use \cs{LWR at orignewpage}.
+% See \cref{sec:troubletexboxes}.
+% \changes{v0.88}{2020/06/06}{Added \ctr{LWR at texboxdepth}.}
+% \begin{macrocode}
+\newcounter{LWR at texboxdepth}
+\setcounter{LWR at texboxdepth}{0}
+% \end{macrocode}
+%
+% \begin{macro}{\LWR at maybe@orignewpage}
+% Only do \cs{LWR at orignewpage} if not inside a \TeX\ box.
+% \changes{v0.88}{2020/06/06}{Added.}
+% \begin{macrocode}
+\newcommand*{\LWR at maybe@orignewpage}{%
+ \LWR at traceinfo{LWR at maybe@orignewpage}%
+ \ifnumgreater{\value{LWR at texboxdepth}}{0}
+ {}%
+ {\LWR at orignewpage}%
+ \LWR at traceinfo{LWR at maybe@orignewpage done}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
% \subsection{Global boxes}
%
% \begin{macro}{\LWR at gsavebox} \marg{macroname} \marg{contents}
@@ -12728,7 +13839,8 @@
% Results in the macro name without the leading backslash.
%
% Ref: \href{https://tex.stackexchange.com/questions/42318/removing-a-backslash-from-a-character-sequence}
-% {\texttt{https://tex.stackexchange.com/questions/42318/removing-a-backslash-from-a-character-sequence}}
+% {\texttt{https://tex.stackexchange.com/questions/42318/ \\
+% \hspace*{\fill}removing-a-backslash-from-a-character-sequence}}
%
% \changes{v0.79}{2020/01/18}{Added.}
% \begin{macrocode}
@@ -12742,6 +13854,55 @@
% \end{macro}
%
%
+% \subsection{Title case}
+%
+% \begin{macro}{\LWRtexttitlecase}
+% \begin{macrocode}
+\ExplSyntaxOn
+\newcommand*{\LWRtexttitlecase}[1]{%
+ \text_titlecase:n{#1}%
+}
+\ExplSyntaxOff
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{LetLtxMacrocs}
+%
+% \begin{macro}{\LWR at LetLtxMacrocs} \marg{newcsname} \marg{oldcsname}
+%
+% \cs{LetLtxMacro} with cs names.
+%
+% \changes{v0.88}{2020/07/05}{Added.}
+% \begin{macrocode}
+\newcommand*{\LWR at LetLtxMacrocs}[2]{%
+ \expandafter\LetLtxMacro\csname #1\expandafter\endcsname%
+ \csname#2\endcsname%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Absorbing a star}
+%
+% \begin{macro}{\LWR at absorbstar} \marg{csname}
+%
+% Modifies a macro to aborb a star.
+% Used for \pkg{cleveref}, since \pkg{hyperref} is emulated, so the
+% starred macros are not created by \pkg{cleveref}.
+%
+% \changes{v0.88}{2020/07/05}{Added.}
+% \begin{macrocode}
+\newcommand*{\LWR at absorbstar}[1]{%
+ \LWR at LetLtxMacrocs{LWR at origns@#1}{#1}%
+ \csdef{#1}{\@ifstar{\csuse{LWR at origns@#1}}{\csuse{LWR at origns@#1}}}
+ \expandafter\robustify\csname #1\endcsname
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
% \section{Operating-System portability}
% \label{sec:OSportability}
% \changes{v0.11}{2016/03/11}{Added section: Operating-System portability.}
@@ -12960,9 +14121,9 @@
%
% \begin{macrocode}
\DeclareVoidOption{warpprint}{%
-\PackageInfo{lwarp}{Using option 'warpprint'}
-\booltrue{warpingprint}%
-\boolfalse{warpingHTML}%
+ \PackageInfo{lwarp}{Using option 'warpprint'}
+ \booltrue{warpingprint}%
+ \boolfalse{warpingHTML}%
}
% \end{macrocode}
@@ -12976,9 +14137,9 @@
%
% \begin{macrocode}
\DeclareVoidOption{warpHTML}{%
-\PackageInfo{lwarp}{Using option 'warpHTML'}%
-\booltrue{warpingHTML}%
-\boolfalse{warpingprint}%
+ \PackageInfo{lwarp}{Using option 'warpHTML'}%
+ \booltrue{warpingHTML}%
+ \boolfalse{warpingprint}%
}
% \end{macrocode}
%
@@ -12996,9 +14157,9 @@
% and may be used for \cs{ifbool} tests.
% \begin{macrocode}
\DeclareVoidOption{mathsvg}{%
-\PackageInfo{lwarp}{Using option 'mathsvg'}
-\boolfalse{mathjax}%
-\boolfalse{LWR at origmathjax}%
+ \PackageInfo{lwarp}{Using option 'mathsvg'}
+ \boolfalse{mathjax}%
+ \boolfalse{LWR at origmathjax}%
% \end{macrocode}
% ^^A % \begin{macrocode}
% ^^A \boolfalse{mathKaTeX}%
@@ -13014,9 +14175,9 @@
% If the \optn{mathjax} option is given, boolean |mathjax| is true, may be used for \cs{ifbool} tests.
% \begin{macrocode}
\DeclareVoidOption{mathjax}{%
-\PackageInfo{lwarp}{Using option 'mathjax'}
-\booltrue{mathjax}%
-\booltrue{LWR at origmathjax}%
+ \PackageInfo{lwarp}{Using option 'mathjax'}
+ \booltrue{mathjax}%
+ \booltrue{LWR at origmathjax}%
% \end{macrocode}
% ^^A % \begin{macrocode}
% ^^A \boolfalse{mathKaTeX}%
@@ -13081,8 +14242,8 @@
% \DescribeOption{makeindexStyle} Selects a custom |.ist| file.
% \DescribeDefault{lwarp.ist}
-% A customized file should be based on |lwarp.ist|, and must retain
-% the lines related to \cs{hyperindexref}.
+% A customized file should be based on |lwarp.ist|.
+% See \cref{sec:modifymakeindex}.
%
% \changes{v0.58}{2018/06/21}{Added option \optn{makeindexStyle.}}
%
@@ -13093,11 +14254,8 @@
% \DescribeOption{xindyStyle} Selects a custom |.xdy| file.
% \DescribeDefault{lwarp.xdy}
-% A customized file should be based on |lwarp.xdy|, and must retain
-% the line
-% \begin{Verbatim}[gobble=2]
-% (markup-locref :open "\hyperindexref{" :close "}")
-% \end{Verbatim}
+% A customized file should be based on |lwarp.xdy|.
+% See \cref{sec:modifyxindy}.
%
% \changes{v0.30}{2017/04/28}{Option \optn{xdyFilename} added.}
% \changes{v0.54}{2018/04/06}{Option \optn{xdyFilename} changed to \optn{xindyStyle.}}
@@ -13107,7 +14265,7 @@
% \end{macrocode}
-% \DescribeOption{xindyLanguage} Sets the \pkg{xindy} language to be assigned
+% \DescribeOption{xindyLanguage} Sets the \prog{xindy} language to be assigned
% \DescribeDefault{english}
% in \prog{lwarpmk}'s configuration files. This is then used by \prog{lwarpmk} while
% processing the index and glossary.
@@ -13121,7 +14279,7 @@
% \end{macrocode}
-% \DescribeOption{xindyCodepage} Sets the \pkg{xindy} codepage to be assigned
+% \DescribeOption{xindyCodepage} Sets the \prog{xindy} codepage to be assigned
% \DescribeDefault{utf8}
% in \prog{lwarpmk}'s configuration files. This is then used by \prog{lwarpmk} while
% processing the index.
@@ -13135,6 +14293,18 @@
+% \DescribeOption{xindexConfig} Selects a custom |xindex-*.lua| file.
+% \DescribeDefault{<empty>}
+% A customized file should be based on |xindex-cfg.lua|.
+% See \cref{sec:modifyxindex}.
+
+% \changes{v0.88}{2020/07/08}{Option \optn{xindexConfig} added.}
+% \begin{macrocode}
+\DeclareStringOption[]{xindexConfig}
+% \end{macrocode}
+
+
+
% \limitspdftotextenc
%
% \changes{v0.54}{2018/04/06}{Add: \optn{pdftotextEnc}.}
@@ -13156,8 +14326,8 @@
\boolfalse{LWR at creatinglwarpmk}
\DeclareVoidOption{lwarpmk}{
-\PackageInfo{lwarp}{Using option 'lwarpmk'}
-\booltrue{LWR at creatinglwarpmk}
+ \PackageInfo{lwarp}{Using option 'lwarpmk'}
+ \booltrue{LWR at creatinglwarpmk}
}
% \end{macrocode}
@@ -13173,8 +14343,8 @@
%
% \begin{macrocode}
\DeclareVoidOption{OSWindows}{
-\PackageInfo{lwarp}{Using option 'OSWindows'}
-\LWR at setOSWindows
+ \PackageInfo{lwarp}{Using option 'OSWindows'}
+ \LWR at setOSWindows
}
% \end{macrocode}
@@ -13246,7 +14416,7 @@
% \end{macrocode}
% \DescribeOption{makeindex} Tells \pkg{lwarp} to
-% use \pkg{makeindex} for index generation.
+% use \prog{makeindex} for index generation.
% When \filenm{lwarpmk.conf} and \filenm{*.lwarpmkconf} are generated,
% \optn{PrintIndexCmd} and \optn{HTMLIndexCmd} will be set for \prog{makeindex}
% with a single index file.
@@ -13257,7 +14427,7 @@
% \DescribeOption{xindy} Tells \pkg{lwarp} to
-% use \pkg{xindy} for index generation.
+% use \prog{xindy} for index generation.
% When \filenm{lwarpmk.conf} and \filenm{*.lwarpmkconf} are generated,
% \optn{PrintIndexCmd} and \optn{HTMLIndexCmd} will be set for \prog{xindy}
% with a single index file.
@@ -13267,6 +14437,28 @@
% \end{macrocode}
+% \DescribeOption{xindex} Tells \pkg{lwarp} to
+% use \prog{xindex} for index generation.
+% When \filenm{lwarpmk.conf} and \filenm{*.lwarpmkconf} are generated,
+% \optn{PrintIndexCmd} and \optn{HTMLIndexCmd} will be set for \prog{xindex}
+% with a single index file.
+% \changes{v0.88}{2020/07/08}{Added \optn{xindex} option.}
+% \begin{macrocode}
+\DeclareBoolOption[false]{xindex}
+% \end{macrocode}
+
+
+% \DescribeOption{IndexRef}
+% \DescribeDefault{cref}
+% Tells \pkg{lwarp} how to
+% display the index entries in \HTML output.
+% See \cref{sec:optionindexref}.
+% \changes{v0.88}{2020/07/18}{Added \optn{IndexRef} option.}
+% \begin{macrocode}
+\DeclareStringOption[cref]{IndexRef}
+% \end{macrocode}
+
+
% \DescribeOption{GlossaryCmd} \DescribeDefault{makeglossaries}
% The shell command to use to compile the glossary.
% The print or \HTML\ version of the glossary filename will be appended to this command.
@@ -13392,7 +14584,8 @@
% \cs{LWR at PrintIndexCmd} and \cs{LWR at HTMLIndexCmd} are tested to see if they are empty.
% If so, they are set to a reasonable defaults for a single index using \prog{makeindex},
% then possibly set to defaults for \prog{xindy}
-% if the \pkg{lwarp} \optn{xindy} option was selected.
+% if the \pkg{lwarp} \optn{xindy} option was selected,
+% then likewise for \prog{xindex} if the \optn{xindex} option was selected.
%
% \begin{macrocode}
\ifdefempty{\LWR at PrintIndexCmd}{
@@ -13408,6 +14601,20 @@
\jobname.idx%
}
}{}
+ \ifbool{LWR at xindex}{
+ \ifdefvoid{\LWR at xindexConfig}{
+ \renewcommand{\LWR at PrintIndexCmd}{%
+ xindex
+ \jobname.idx%
+ }
+ }{
+ \renewcommand{\LWR at PrintIndexCmd}{%
+ xindex
+ -c \LWR at xindexConfig \space
+ \jobname.idx%
+ }
+ }
+ }{}
}{}
\ifdefempty{\LWR at HTMLIndexCmd}{
@@ -13423,6 +14630,20 @@
\jobname_html.idx%
}
}{}
+ \ifbool{LWR at xindex}{
+ \ifdefvoid{\LWR at xindexConfig}{
+ \renewcommand{\LWR at HTMLIndexCmd}{%
+ xindex
+ \jobname_html.idx%
+ }
+ }{
+ \renewcommand{\LWR at HTMLIndexCmd}{%
+ xindex
+ -c \LWR at xindexConfig \space
+ \jobname_html.idx%
+ }
+ }
+ }{}
}{}
\ifdefempty{\LWR at LatexmkIndexCmd}{
@@ -13437,11 +14658,22 @@
-C \LWR at xindyCodepage%
}
}{}
+ \ifbool{LWR at xindex}{
+ \ifdefvoid{\LWR at xindexConfig}{
+ \renewcommand{\LWR at LatexmkIndexCmd}{%
+ xindex
+ }
+ }{
+ \renewcommand{\LWR at LatexmkIndexCmd}{%
+ xindex
+ -c \LWR at xindexConfig
+ }
+ }
+ }{}
}{}
% \end{macrocode}
%
%
-%
% \subsection{Conditional compilation}
%
% \begin{macro}{\warpprintonly} \marg{contents}
@@ -13474,28 +14706,63 @@
% \end{macrocode}
-% Use |comment_print.cut| for print mode, and
-% |comment_html.cut| for \HTML\ mode.
-% This helps \prog{latexmk} to more reliably know whether to recompile.
+% \begin{macro}{\LWR at includecomment} \marg{env name} \marg{partial filename}
+% \begin{macro}{\LWR at excludecomment} \marg{env name} \marg{partial filename}
%
-% \changes{v0.37}{2017/08/19}{\pkg{comment}: Maintains independent
-% cutfiles for print, \HTML.}
-%
+% Use many \pkg{comment} cut files to avoid collision in case the
+% user uses the \pkg{comment} package. Each filename is ``|comment_#2.cut|''.
+% Based on the \pkg{comment} package.
+% \changes{v0.84}{2020/03/30}{Independent cut files.}
+% \changes{v0.891}{2020/09/15}{Error if nested comment.}
% \begin{macrocode}
-\ifbool{warpingHTML}{
-\def\DefaultCutFileName{\def\CommentCutFile{comment_html.cut}}
-}{}
+\def\LWR at includecomment
+ #1#2{\message{Lwarp: Including comment '#1'}%
+ \csarg\def{After#1Comment}{%
+ \CloseAndInputCutFile%
+ \csundef{LWR@#1commentused}%
+ }
+ \csarg\def{#1}{%
+ \endgroup
+ \ifcsdef{LWR@#1commentused}{
+ \PackageError{lwarp}%
+ {Nested #1 environment}%
+ {%
+ Environment #1 cannot be nested.\MessageBreak
+ This can happen when a package is loaded
+ from inside a\MessageBreak
+ #1 environment.%
+ }%
+ }{\relax}
+ \csdef{LWR@#1commentused}{}
+ \message{Including '#1' comment.}%
+ \def\CommentCutFile{comment_#2.cut}
+ \SetUpCutFile
+ \ProcessComment{#1}
+ }%
+ \CommentEndDef{#1}
+}
-\ifbool{warpingprint}{
-\def\DefaultCutFileName{\def\CommentCutFile{comment_print.cut}}
-}{}
+\def\LWR at excludecomment
+ #1#2{\message{Lwarp: Excluding comment '#1'}%
+ \csarg\def{#1}{
+ \endgroup
+ \message{Excluding '#1' comment.}%
+ \begingroup
+ \def\CommentCutFile{comment_#2.cut}
+ \def\ProcessCutFile{}%
+ \def\ThisComment####1{}%
+ \ProcessComment{#1}
+ }%
+ \csarg\def{After#1Comment}{\CloseAndInputCutFile \endgroup}
+ \CommentEndDef{#1}}
% \end{macrocode}
+% \end{macro}
+% \end{macro}
-
% \begin{environment}{warpall}
% Anything in the |warpall| environment will be generated for print or \HTML\ outputs.
% \begin{macrocode}
-\includecomment{warpall}
+\LWR at includecomment{warpall}{all}
% \end{macrocode}
% \end{environment}
@@ -13505,8 +14772,8 @@
% For \HTML\ output:
% \begin{macrocode}
\ifbool{warpingHTML}
- {\includecomment{warpHTML}}
- {\excludecomment{warpHTML}}%
+ {\LWR at includecomment{warpHTML}{html}}
+ {\LWR at excludecomment{warpHTML}{html}}
% \end{macrocode}
% \end{environment}
@@ -13515,8 +14782,8 @@
% Anything in the |warpprint| environment will be generated for print output only.
% \begin{macrocode}
\ifbool{warpingprint}
- {\includecomment{warpprint}}
- {\excludecomment{warpprint}}
+ {\LWR at includecomment{warpprint}{print}}
+ {\LWR at excludecomment{warpprint}{print}}
% \end{macrocode}
% \end{environment}
@@ -13526,25 +14793,25 @@
% \changes{v0.79}{2020/01/26}{Added.}
% \begin{macrocode}
\begin{warpprint}
-\excludecomment{warpMathJax}
+\LWR at excludecomment{warpMathJax}{mathjax}
\end{warpprint}
\begin{warpHTML}
\ifbool{mathjax}
- {\includecomment{warpMathJax}}
- {\excludecomment{warpMathJax}}
+ {\LWR at includecomment{warpMathJax}{mathjax}}
+ {\LWR at excludecomment{warpMathJax}{mathjax}}
\end{warpHTML}
% \end{macrocode}
% \end{environment}
-% \begin{environment}{LWR at creatinglwarpmk}
+% \begin{environment}{LWRcreatelwarpmk}
% Optionally generate a local copy of \prog{lwarpmk}.
% Default to no.
% \begin{macrocode}
\ifbool{LWR at creatinglwarpmk}
- {\includecomment{LWR at createlwarpmk}}
- {\excludecomment{LWR at createlwarpmk}}
+ {\LWR at includecomment{LWRcreatelwarpmk}{lwarpmk}}
+ {\LWR at excludecomment{LWRcreatelwarpmk}{lwarpmk}}
% \end{macrocode}
% \end{environment}
%
@@ -13586,6 +14853,7 @@
% ^^A
% ^^A
%
+% \DescribePackage{fontspec}
% Load \pkg{fontspec} if necessary:
% \changes{v0.50}{2018/02/24}{Fix: Load \pkg{fontspec} if necessary.}
% \begin{macrocode}
@@ -13673,8 +14941,16 @@
tracking=false,
kerning=false,
spacing=false}
-
-\DisableLigatures[f,q,t,T,Q]{encoding = *,family = *}
+% \begin{macrocode}
+%
+% Disable ligatures for typewriter fonts.
+% The comma was causing issues with \brand{MathJax} and \cs{,} followed by a comma.
+% Ligatures for f, q, t, etc used to be disabled for non-typewriter fonts, but
+% are now allowed.
+% \changes{v0.89}{2020/08/01}{Disable typewriter ligatures.}
+% ^^A \DisableLigatures[{,},f,q,t,T,Q]{encoding = *,family = *}% previous
+% \begin{macrocode}
+\DisableLigatures{encoding = *,family = tt*}
% \end{macrocode}
% ^^A
% ^^A
@@ -13744,7 +15020,7 @@
% \changes{v0.20}{2017/01/12}{Page geometry set to 6in wide with large margins.}
% \changes{v0.27}{2017/04/04}{Page geometry modified to reduce line overflow.}
% \changes{v0.28}{2017/04/13}{Forced oneside to maintain large right margin.}
-% \changes{v0.52}{2018/03/31}{Fix: MathJax script line wraps. Reduced right margin.}
+% \changes{v0.52}{2018/03/31}{Fix: \brand{MathJax} script line wraps. Reduced right margin.}
% \changes{v0.74}{2019/08/13}{Remembers user's geometry.}
%
% \codehtml
@@ -14178,7 +15454,7 @@
% \begin{macrocode}
\begin{warpall}
% \end{macrocode}
-
+%
% Remember the original \cs{RequirePackage}:
% \begin{macrocode}
\LetLtxMacro\LWR at origRequirePackage\RequirePackage
@@ -14230,7 +15506,6 @@
-% ^^A *checkload
% \begin{macro}{\LWR at checkloadfilename} \marg{filename}
% Checks if this filename should be loaded after \pkg{lwarp},
% or never at all.
@@ -14244,8 +15519,15 @@
% \changes{v0.79}{2020/01/09}{Prevented \pkg{bxcjkjatype}, \pkg{hangul}.}
% \changes{v0.80}{2020/02/15}{Prevented \pkg{formula}, \pkg{shadethm}, \pkg{slashbox}.}
% \changes{v0.81}{2020/02/28}{Prevented \pkg{statex}.}
+% \changes{v0.87}{2020/05/14}{Prevented \pkg{csvtools}.}
+% \changes{v0.88}{2020/07/07}{Prevented \pkg{shadethm}.}
+% \changes{v0.891}{2020/09/16}{Prevented \pkg{libgreek}.}
+% \changes{v0.893}{2020/11/15}{Allowed \pkg{picinpar}.}
+% \changes{v0.895}{2021/01/19}{Allowed \pkg{epsf}.}
+
+% The following should never be loaded:
%
-% The following should never be loaded:
+% ^^A *checkload *loadnever
% \begin{macrocode}
\newcommand*{\LWR at checkloadfilename}[1]{%
\LWR at checkloadnever{#1}{ae}{cm-super, lmodern}
@@ -14254,23 +15536,21 @@
\LWR at checkloadnever{#1}{alg}{algorithm2e, algorithmicx}
\LWR at checkloadnever{#1}{algorithmic}{algorithm2e, algorithmicx}
\LWR at checkloadnever{#1}{bitfield}{bytefield}
-\LWR at checkloadnever{#1}{boxedminipage}{boxedminipage2e}
\LWR at checkloadnever{#1}{caption2}{caption}
\LWR at checkloadnever{#1}{ccaption}{caption}% might be preloaded by memoir
\LWR at checkloadnever{#1}{colortab}{colortbl}
+\LWR at checkloadnever{#1}{csvtools}{datatool}
\LWR at checkloadnever{#1}{doublespace}{setspace}
-\LWR at checkloadnever{#1}{epsf}{graphicx}
\LWR at checkloadnever{#1}{fancyheadings}{fancyhdr}
\LWR at checkloadnever{#1}{fncylab}{cleveref}
\LWR at checkloadnever{#1}{formula}{siunitx}
\LWR at checkloadnever{#1}{glossary}{glossaries}
\LWR at checkloadnever{#1}{hyper}{hyperref}
+\LWR at checkloadnever{#1}{libgreek}{libertinust1math, newtx}
\LWR at checkloadnever{#1}{newthm}{ntheorem}
\LWR at checkloadnever{#1}{pdfcprot}{microtype}
-\LWR at checkloadnever{#1}{picinpar}{floatflt, wrapfig}
\LWR at checkloadnever{#1}{picins}{floatflt, wrapfig}
\LWR at checkloadnever{#1}{rplain}{fancyhdr}
-\LWR at checkloadnever{#1}{shadethm}{mdframed}
\LWR at checkloadnever{#1}{si}{siunitx}
\LWR at checkloadnever{#1}{sistyle}{siunitx}
\LWR at checkloadnever{#1}{slashbox}{diagbox}
@@ -14284,6 +15564,7 @@
%
% ^^A *loadbefore
% The following should only be loaded before \pkg{lwarp}:
+% \changes{v0.895}{2021/01/14}{\pkg{kpfonts} load before \pkg{lwarp}.}
% \begin{macrocode}
\LWR at checkloadbefore{#1}{ctex}
\LWR at checkloadbefore{#1}{fontspec}
@@ -14292,6 +15573,7 @@
\LWR at checkloadbefore{#1}{nfssext-cfr}
\LWR at checkloadbefore{#1}{fontaxes}
\LWR at checkloadbefore{#1}{kotex}
+\LWR at checkloadbefore{#1}{kpfonts}% textcomp option clash
\LWR at checkloadbefore{#1}{luatexja}
\LWR at checkloadbefore{#1}{luatexja-fontspec}
\LWR at checkloadbefore{#1}{luatexko}
@@ -14436,6 +15718,8 @@
}%
}
\LetLtxMacro\usepackage\RequirePackage
+\@onlypreamble\RequirePackage
+\@onlypreamble\usepackage
% \end{macrocode}
% \end{macro}
@@ -14455,8 +15739,9 @@
% \begin{macrocode}
\NewDocumentCommand{\LWR at ProvidesPackagePass}{m o}{
\PackageInfo{lwarp}{%
- Using package `#1' and adding lwarp modifications,\MessageBreak
- including options,}%
+ Using package `#1',\MessageBreak
+ and adding lwarp modifications, including options,\MessageBreak%
+ }%
\IfValueTF{#2}%
{\ProvidesPackage{lwarp-#1}[#2]}%
{\ProvidesPackage{lwarp-#1}}%
@@ -14565,28 +15850,6 @@
-% \section{Additional required packages}
-
-% \codehtml
-% \begin{macrocode}
-\begin{warpHTML}
-% \end{macrocode}
-
-% \DescribePackage{caption}
-% \changes{v0.47}{2018/01/29}{\pkg{caption}: Also loads \pkg{lwarp-caption}.}
-% \changes{v0.66}{2018/12/29}{\pkg{caption}: Fix for options clash.}
-% \begin{macrocode}
-\LWR at origRequirePackage{caption}
-\AtBeginDocument{\RequirePackage{lwarp-caption}}%
-% \end{macrocode}
-
-% \begin{macrocode}
-\end{warpHTML}
-% \end{macrocode}
-
-
-
-
% \section{File handles}
% Defines file handles for writes.
@@ -14657,7 +15920,7 @@
\immediate\openout\LWR at quickfile #1_html_inc.tex% lwarp
\immediate\write\LWR at quickfile{\string\input{#1.tex}}% lwarp
\immediate\closeout\LWR at quickfile% lwarp
-\LWR at orignewpage% changed from clearpage
+\LWR at maybe@orignewpage% changed from clearpage
\if at filesw
\immediate\write\@mainaux{\string\@input{#1_html_inc.aux}}% changed
\fi
@@ -14675,7 +15938,7 @@
\immediate\write\@partaux{\relax}%
\fi
\@input@{#1_html_inc.tex}% changed
- \LWR at orignewpage% changed from clearpage
+ \LWR at maybe@orignewpage% changed from clearpage
\@writeckpt{#1}%
\if at filesw
\immediate\closeout\@partaux
@@ -14707,29 +15970,29 @@
% Used to copy the |.toc| file to |.sidetoc| to re-print the \TOC\ in
% the side\TOC\ navigation pane.
% \begin{macrocode}
-\newwrite\LWR at copyoutfile % open the file to write to
-\newread\LWR at copyinfile % open the file to read from
+\newwrite\LWR at copyoutfile % open the file to write to
+\newread\LWR at copyinfile % open the file to read from
\newcommand*{\LWR at copyfile}[2]{%
-\LWR at traceinfo{LWR at copyfile: copying #1 to #2}
+ \LWR at traceinfo{LWR at copyfile: copying #1 to #2}
-\immediate\openout\LWR at copyoutfile=#2
-\openin\LWR at copyinfile=#1
-\begingroup\endlinechar=-1
-\makeatletter
+ \immediate\openout\LWR at copyoutfile=#2
+ \openin\LWR at copyinfile=#1
+ \begingroup\endlinechar=-1
+ \makeatletter
-\LWR at traceinfo{LWR at copyfile: about to loop}
+ \LWR at traceinfo{LWR at copyfile: about to loop}
-\loop\unless\ifeof\LWR at copyinfile
- \LWR at traceinfo{LWR at copyfile: one line}
- \read\LWR at copyinfile to\LWR at fileline % Read one line and store it into \LWR at fileline
+ \loop\unless\ifeof\LWR at copyinfile
+ \LWR at traceinfo{LWR at copyfile: one line}
+ \read\LWR at copyinfile to\LWR at fileline % Read one line and store it into \LWR at fileline
% \LWR at fileline\par % print the content into the pdf
% print the content:
- \immediate\write\LWR at copyoutfile{\unexpanded\expandafter{\LWR at fileline}}%
-\repeat
-\immediate\closeout\LWR at copyoutfile
-\LWR at traceinfo{LWR at copyfile: done}
-\endgroup
+ \immediate\write\LWR at copyoutfile{\unexpanded\expandafter{\LWR at fileline}}%
+ \repeat
+ \immediate\closeout\LWR at copyoutfile
+ \LWR at traceinfo{LWR at copyfile: done}
+ \endgroup
}
% \end{macrocode}
% \end{macro}
@@ -14847,9 +16110,7 @@
% The new \HTML\ versions of macros and environments are used most of the time.
% Copies of the print versions are used inside a \env{lateximage} environment,
% which draws and remembers an image of the printed output, and also several
-% other places. The copies of the print versions may also be used by the \HTML\
-% versions, such as when the \HTML\ version merely encloses the print version
-% inside \HTML\ tags.
+% other places.
%
% The general structure for providing print and \HTML\ versions of a macro or
% environment is as follows:
@@ -14859,13 +16120,14 @@
% \item[For a preexisting macro, not defined with \pkg{xparse}:] An \HTML\ version
% is provided with a special name, inside a \env{warpHTML} environment,
% then \cs{LWR at formatted} is used to redefine and patch various macros:
-% \begin{Verbatim}[gobble=2,obeytabs,tabsize=4,frame=lines]
+% \needspace{5\baselineskip}
+% \begin{sourceverb}
% \begin{warpHTML}
% \newcommand{\LWR at HTML@name}{...}% may also use xparse
%
% \LWR at formatted{name}
% \end{warpHTML}
-% \end{Verbatim}
+% \end{sourceverb}
% |\LWR at formatted{name}| copies the original print version,
% then redefines \cs{name} to use either the print or \HTML\ version depending
% on which mode \pkg{lwarp} is using. \pkg{xparse} may be used to
@@ -14874,16 +16136,18 @@
% \item[For a preexisiting environment, not defined with \pkg{xparse}:] The process
% is similar. Note the use of \cs{LWR at formattedenv} instead of \cs{LWR at formatted}.
-% \begin{Verbatim}[gobble=2,obeytabs,tabsize=4,frame=lines]
+% \needspace{5\baselineskip}
+% \begin{sourceverb}
% \begin{warpHTML}
% \newenvironment{LWR at HTML@name}{...}% may also use xparse
%
% \LWR at formattedenv{name}
% \end{warpHTML}
-% \end{Verbatim}
+% \end{sourceverb}
% \item[If the original used \pkg{xparse}:] A copy must be made using a new name:
-% \begin{Verbatim}[gobble=2,obeytabs,tabsize=4,frame=lines]
+% \needspace{7\baselineskip}
+% \begin{sourceverb}
% \begin{warpHTML}
% \NewDocumentCommand{\LWR at print@name}{..}{..}% copy the original
%
@@ -14891,7 +16155,7 @@
%
% \LWR at formatted{name}
% \end{warpHTML}
-% \end{Verbatim}
+% \end{sourceverb}
% Similar for an environment, using \cs{LWR at formattedenv}.
% (\cs{LWR at formatted} and \cs{LWR at formattedenv} use \cs{LetLtxMacro} to
% copy the original print definiton,
@@ -14899,7 +16163,8 @@
% so the print version must be manually recreated in the \pkg{lwarp} source.)
% \item[For a new macro or environment, not using \pkg{xparse} for the print version:] \
-% \begin{Verbatim}[gobble=2,obeytabs,tabsize=4,frame=lines]
+% \needspace{9\baselineskip}
+% \begin{sourceverb}
% \begin{warpall}
% \newcommand{\name}{...}% NOT xparse!
% \end{warpall}
@@ -14909,7 +16174,7 @@
%
% \LWR at formatted{name}
% \end{warpHTML}
-% \end{Verbatim}
+% \end{sourceverb}
% Similar for an environment.
% The plain \cs{name} or environment \env{name} is used for the printed
% version, and is placed inside \env{warpall}.
@@ -14921,7 +16186,8 @@
% by defining the \cs{LWR at print@<name>} version with \pkg{xparse}, along with
% \cs{name} defined without \pkg{xparse} to refer directly to the \cs{LWR at print}
% version:
-% \begin{Verbatim}[gobble=2,obeytabs,tabsize=4,frame=lines]
+% \needspace{16\baselineskip}
+% \begin{sourceverb}
% \begin{warpall}
% \NewDocumentCommand{\LWR at print@name}{...} {...}% -or-
% \NewDocumentEnvironment{\LWR at print@name}{...} {...} {...}
@@ -14938,7 +16204,7 @@
% \LWR at formatted{name}% -or-
% \LWR at formattedenv{name}
% \end{warpHTML}
-% \end{Verbatim}
+% \end{sourceverb}
%
% \end{description}
%
@@ -15001,6 +16267,37 @@
% \end{macro}
%
%
+%
+% \begin{macro}{\LWR at formatted@checkname} \marg{name}
+% \changes{v0.893}{2020/11/15}{Added.}
+% \begin{macrocode}
+\newcommand*{\LWR at formatted@checkname}[1]{%
+ \ifcsundef{LWR at HTML@#1}{%
+ \PackageError{lwarp}
+ {%
+ \protect\LWR at HTML@#1 is not defined%
+ }
+ {Perhaps it is misspelled.}
+ }{\relax}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\LWR at formatted@checkendname} \marg{name}
+% \changes{v0.893}{2020/11/15}{Added.}
+% \begin{macrocode}
+\newcommand*{\LWR at formatted@checkendname}[1]{%
+ \ifcsundef{endLWR at HTML@#1}{%
+ \PackageError{lwarp}
+ {%
+ \protect\endLWR at HTML@#1 is not defined%
+ }
+ {Perhaps it is misspelled.}
+ }{\relax}%
+}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\LWR at formatted} \marg{macroname} \qquad No backslash in the macro name.
%
% If not yet defined, defines \cs{LWR at print@<name>} as
@@ -15008,8 +16305,10 @@
% Also redefines \cs{<name>} to use \cs{LWR@<format>@<name>},
% where <format> is set by \cs{LWR at formatting}, and is |print| or |HTML|.
%
+% \changes{v0.893}{2020/11/15}{Improved error handling.}
% \begin{macrocode}
\newcommand*{\LWR at formatted}[1]{%
+ \LWR at formatted@checkname{#1}%
\ifcsundef{LWR at print@#1}{%
\expandafter\LetLtxMacro\csname LWR at print@#1\expandafter\endcsname%
\csname#1\endcsname%
@@ -15033,8 +16332,10 @@
%
% An expandable version of \cs{LWR at formatted}.
%
+% \changes{v0.893}{2020/11/15}{Improved error handling.}
% \begin{macrocode}
\newcommand*{\LWR at expandableformatted}[1]{%
+ \LWR at formatted@checkname{#1}%
\ifcsundef{LWR at print@#1}{%
\expandafter\LetLtxMacro\csname LWR at print@#1\expandafter\endcsname%
\csname#1\endcsname%
@@ -15060,8 +16361,11 @@
% Also redefines the environment |<name>| to use environment |LWR@<format>@<name>|,
% where <format> is set by \cs{LWR at formatting}, and is |print| or |HTML|.
%
+% \changes{v0.893}{2020/11/15}{Improved error handling.}
% \begin{macrocode}
\newcommand*{\LWR at formattedenv}[1]{%
+ \LWR at formatted@checkname{#1}%
+ \LWR at formatted@checkendname{#1}%
\ifcsundef{LWR at print@#1}{%
\expandafter\LetLtxMacro\csname LWR at print@#1\expandafter\endcsname%
\csname#1\endcsname%
@@ -15083,8 +16387,11 @@
%
% An expandable version of \env{LWR at formattedenv}.
%
+% \changes{v0.893}{2020/11/15}{Improved error handling.}
% \begin{macrocode}
\newcommand*{\LWR at expandableformattedenv}[1]{%
+ \LWR at formatted@checkname{#1}%
+ \LWR at formatted@checkendname{#1}%
\ifcsundef{LWR at print@#1}{%
\expandafter\LetLtxMacro\csname LWR at print@#1\expandafter\endcsname%
\csname#1\endcsname%
@@ -15233,6 +16540,7 @@
\begin{warpHTML}
% \end{macrocode}
%
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\AtBeginDocument{
\ifbool{FormatWP}{
@@ -15250,11 +16558,11 @@
\renewcommand*{\LWR at tagsubsubsectionend}{/h5}
\renewcommand*{\LWR at tagparagraph}{h6}
\renewcommand*{\LWR at tagparagraphend}{/h6}
-\renewcommand*{\LWR at tagsubparagraph}{span class="subparagraph"}
+\renewcommand*{\LWR at tagsubparagraph}{span class=\textquotedbl{}subparagraph\textquotedbl}
\renewcommand*{\LWR at tagsubparagraphend}{/span}
}% WPTitleHeading
{% not WPTitleHeading, part and section starting at h1
-\renewcommand*{\LWR at tagtitle}{div class="title"}
+\renewcommand*{\LWR at tagtitle}{div class=\textquotedbl{}title\textquotedbl}
\renewcommand*{\LWR at tagtitleend}{/div}
\renewcommand*{\LWR at tagpart}{h1}
\renewcommand*{\LWR at tagpartend}{/h1}
@@ -15273,7 +16581,7 @@
{% chapter defined
\ifbool{WPTitleHeading}{}
{% not WPTitleHeading, part and chapter starting at h1
-\renewcommand*{\LWR at tagtitle}{div class="title"}
+\renewcommand*{\LWR at tagtitle}{div class=\textquotedbl{}title\textquotedbl}
\renewcommand*{\LWR at tagtitleend}{/div}
\renewcommand*{\LWR at tagpart}{h1}
\renewcommand*{\LWR at tagpartend}{/h1}
@@ -15287,7 +16595,7 @@
\renewcommand*{\LWR at tagsubsubsectionend}{/h5}
\renewcommand*{\LWR at tagparagraph}{h6}
\renewcommand*{\LWR at tagparagraphend}{/h6}
-\renewcommand*{\LWR at tagsubparagraph}{span class="subparagraph"}
+\renewcommand*{\LWR at tagsubparagraph}{span class=\textquotedbl{}subparagraph\textquotedbl}
\renewcommand*{\LWR at tagsubparagraphend}{/span}
}% not WPTitleHeading
}% chapter defined
@@ -15341,8 +16649,27 @@
\let\LWR at origbigskip\bigskip
\let\LWR at origtextellipsis\textellipsis
-\let\LWR at orig@textquotedbl\textquotedbl
+% \end{macrocode}
+% \changes{v0.88}{2020/07/03}{Added \cs{vdots}.}
+% \begin{macrocode}
+\let\LWR at origvdots\vdots
+% \end{macrocode}
+%
+% \pkg{libertinus-otf} has too much kerning for \cs{textquotedbl},
+% causing an extra space.
+% \changes{v0.895}{2021/01/14}{Fixed \pkg{libertinus-otf} \cs{textquotedbl} kern.}
+% \begin{macrocode}
+\LetLtxMacro\LWR at orig@@textquotedbl\textquotedbl
+\LetLtxMacro\LWR at orig@textquotedbl\LWR at orig@@textquotedbl
+\AtEndPreamble{
+\@ifpackageloaded{libertinus-otf}{
+ \renewcommand{\LWR at orig@textquotedbl}{\LWR at orig@@textquotedbl\kern-.15em}
+ \LetLtxMacro\textquotedbl\LWR at orig@textquotedbl
+}{}
+}
+% \end{macrocode}
+% \begin{macrocode}
\LetLtxMacro\LWR at origttfamily\ttfamily
\LetLtxMacro\LWR at origem\em
@@ -15353,14 +16680,7 @@
\let\LWR at origsp\sp
\let\LWR at origsb\sb
-\LetLtxMacro\LWR at origtextsuperscript\textsuperscript
-\LetLtxMacro\LWR at orig@textsuperscript\@textsuperscript
-\AtBeginDocument{
-\LetLtxMacro\LWR at origtextsubscript\textsubscript
-\LetLtxMacro\LWR at orig@textsubscript\@textsubscript
-}
-
\LetLtxMacro\LWR at origunderline\underline
% \end{macrocode}
%
@@ -15373,7 +16693,6 @@
\let\LWR at orignewline\newline
-
\AtBeginDocument{% in case packages change definition
\let\LWR at orig@trivlist\@trivlist
\let\LWR at origtrivlist\trivlist
@@ -15415,6 +16734,7 @@
% \limitsaccents
%
% \changes{v0.37}{2017/08/18}{\protect\LaTeX\ accents: Added.}
+% \changes{v0.84}{2020/04/12}{\protect\LaTeX\ accents: Add'l symbols.}
%
% \codehtml
% \begin{macrocode}
@@ -15430,29 +16750,41 @@
%
% For Unicode engines, only \cs{t} needs to be redefined:
% \begin{macrocode}
-\LetLtxMacro\LWR at origt\t
+\LetLtxMacro\LWR at origtie\t
% \end{macrocode}
% For pdf\LaTeX, additional work is required:
% \begin{macrocode}
\ifPDFTeX% pdflatex or dvi latex
-\LetLtxMacro\LWR at origequalaccent\=
+\LetLtxMacro\LWR at origgraveaccent\`
+\LetLtxMacro\LWR at origacuteaccent\'
+\LetLtxMacro\LWR at origcircumflexaccent\^
+\LetLtxMacro\LWR at origtildeaccent\~
+\LetLtxMacro\LWR at origmacronaccent\=
+\LetLtxMacro\LWR at origbreve\u
\LetLtxMacro\LWR at origdotaccent\.
-\LetLtxMacro\LWR at origu\u
-\LetLtxMacro\LWR at origv\v
-\LetLtxMacro\LWR at origc\c
-\LetLtxMacro\LWR at origd\d
-\LetLtxMacro\LWR at origb\b
+\LetLtxMacro\LWR at origdiaeresisaccent\"
+\LetLtxMacro\LWR at origdoubleacuteaccent\H
+\LetLtxMacro\LWR at origcaronaccent\v
+\LetLtxMacro\LWR at origdotbelowaccent\d
+\LetLtxMacro\LWR at origcedillaaccent\c
+\LetLtxMacro\LWR at origmacronbelowaccent\b
% \end{macrocode}
% The \HTML\ redefinitions follow.
%
% For pdf\LaTeX, Unicode diacritical marks are used:
% \begin{macrocode}
-\renewcommand*{\=}[1]{#1\HTMLunicode{0305}}
+\renewcommand*{\`}[1]{#1\HTMLunicode{0300}}
+\renewcommand*{\'}[1]{#1\HTMLunicode{0301}}
+\renewcommand*{\^}[1]{#1\HTMLunicode{0302}}
+\renewcommand*{\~}[1]{#1\HTMLunicode{0303}}
+\renewcommand*{\=}[1]{#1\HTMLunicode{0304}}
+\renewcommand*{\u}[1]{#1\HTMLunicode{0306}}
\renewcommand*{\.}[1]{#1\HTMLunicode{0307}}
-\renewcommand*{\u}[1]{#1\HTMLunicode{0306}}
+\renewcommand*{\"}[1]{#1\HTMLunicode{0308}}
+\renewcommand*{\H}[1]{#1\HTMLunicode{030B}}
\renewcommand*{\v}[1]{#1\HTMLunicode{030C}}
+\renewcommand*{\d}[1]{#1\HTMLunicode{0323}}
\renewcommand*{\c}[1]{#1\HTMLunicode{0327}}
-\renewcommand*{\d}[1]{#1\HTMLunicode{0323}}
\renewcommand*{\b}[1]{#1\HTMLunicode{0331}}
\fi
% \end{macrocode}
@@ -15467,18 +16799,24 @@
% \begin{macrocode}
\ifPDFTeX% pdflatex or dvi latex
\newcommand*{\LWR at restoreorigaccents}{%
-\LetLtxMacro\=\LWR at origequalaccent%
-\LetLtxMacro\.\LWR at origdotaccent%
-\LetLtxMacro\u\LWR at origu%
-\LetLtxMacro\v\LWR at origu%
-\LetLtxMacro\t\LWR at origt%
-\LetLtxMacro\c\LWR at origc%
-\LetLtxMacro\d\LWR at origd%
-\LetLtxMacro\b\LWR at origb%
+ \LetLtxMacro\`\LWR at origgraveaccent%
+ \LetLtxMacro\'\LWR at origacuteaccent%
+ \LetLtxMacro\^\LWR at origcircumflexaccent%
+ \LetLtxMacro\~\LWR at origtildeaccent%
+ \LetLtxMacro\=\LWR at origmacronaccent%
+ \LetLtxMacro\u\LWR at origbreve%
+ \LetLtxMacro\.\LWR at origdotaccent%
+ \LetLtxMacro\"\LWR at origdiaeresisaccent%
+ \LetLtxMacro\H\LWR at origdoubleacuteaccent%
+ \LetLtxMacro\v\LWR at origcaronaccent%
+ \LetLtxMacro\t\LWR at origtie%
+ \LetLtxMacro\d\LWR at origdotbelowaccent%
+ \LetLtxMacro\c\LWR at origcedillaaccent%
+ \LetLtxMacro\b\LWR at origmacronbelowaccent%
}%
\else% XeLaTeX, LuaLaTeX:
\newcommand*{\LWR at restoreorigaccents}{%
-\LetLtxMacro\t\LWR at origt%
+ \LetLtxMacro\t\LWR at origtie%
}%
\fi%
}% AtBeginDocument
@@ -15513,7 +16851,7 @@
% Default to no configuration files:
% \changes{v0.61}{2018/10/02}{Don't write configuration files if processing \pkg{pstool} image.}
% \begin{macrocode}
-\excludecomment{LWRwriteconf}
+\LWR at excludecomment{LWRwriteconf}{writeconf}
% \end{macrocode}
%
% Generate configuration files if print mode and not \filenm{-pstool}:
@@ -15531,7 +16869,7 @@
}
{
\PackageInfo{lwarp}{Generating lwarp configuration files,}%
- \includecomment{LWRwriteconf}
+ \LWR at includecomment{LWRwriteconf}{writeconf}
}
\end{warpprint}
% \end{macrocode}
@@ -15626,9 +16964,12 @@
% Error message if not sure which \LaTeX\ engine is being used.
% \begin{macrocode}
\newcommand*{\LWR at unknownengine}{%
- \PackageError{lwarp}
- {Unknown LaTeX engine.}
- {Lwarp only knows about pdflatex, dvi latex, xelatex, lualatex, and upLateX.}
+ \PackageError{lwarp}%
+ {Unknown LaTeX engine}%
+ {%
+ Lwarp only knows about pdflatex, DVI latex,
+ xelatex, lualatex, and upLateX.%
+ }%
}
% \end{macrocode}
% \end{macro}
@@ -15656,7 +16997,7 @@
\newcommand*{\LWR at latexmkcmd}[1]{%
latexmk \space \LWR at shellescapecmd \space #1 \space
-recorder \space
- \LWR at latexmkvar{makeindex}{\LWR at LatexmkIndexCmd}
+ \LWR at latexmkvar{makeindex}{\LWR at LatexmkIndexCmd}%
}
% \end{macrocode}
% \end{macro}
@@ -15958,7 +17299,6 @@
% \changes{v0.58}{2018/06/20}{\filenm{lwarpmk.conf}: Generated \cs{AtBeginDocument}.}
% \changes{v0.58}{2018/06/20}{\filenm{lwarpmk.conf}: Added options \optn{makeindex} and \optn{xindy}.}
% \changes{v0.58}{2018/06/21}{\filenm{lwarpmk.conf}: Added option \optn{makeindexstyle}.}
-%
% \codeconfig
% \begin{macrocode}
\begin{LWRwriteconf}
@@ -15984,7 +17324,6 @@
% \changes{v0.58}{2018/06/20}{\filenm{*.lwarpmkconf}: Generated \cs{AtBeginDocument}.}
% \changes{v0.58}{2018/06/20}{\filenm{*.lwarpmkconf}: Added options \optn{makeindex} and \optn{xindy}.}
% \changes{v0.58}{2018/06/21}{\filenm{*.lwarpmkconf}: Added option \optn{makeindexstyle}.}
-%
% The \optn{makeindex} and \optn{xindy} options have already been handled
% for \filenm{lwarp.conf}.
%
@@ -16041,6 +17380,15 @@
% \changes{v0.76}{2019/10/02}{\filenm{lwarp.css}: Fix for small caps.}
% \changes{v0.79}{2020/01/17}{\filenm{lwarp.css}: Fix: Nested \env{tabular}s.}
% \changes{v0.81}{2020/02/22}{\filenm{lwarp.css}: Added \pkg{nolbreaks}.}
+% \changes{v0.84}{2020/03/28}{\filenm{lwarp.css}: Added \pkg{koma-*} subject.}
+% \changes{v0.84}{2020/04/10}{\filenm{lwarp.css}: Improved \pkg{realscripts}.}
+% \changes{v0.84}{2020/04/13}{\filenm{lwarp.css}: Improved \pkg{nfssext-cfr}.}
+% \changes{v0.84}{2020/04/18}{\filenm{lwarp.css}: Fix: Minipage tex align.}
+% \changes{v0.84}{2020/04/24}{\filenm{lwarp.css}: Fix: Top nav if narrow window.}
+% \changes{v0.88}{2020/07/04}{\filenm{lwarp.css}: Added \pkg{tcolorbox}, \pkg{thmbox}.}
+% \changes{v0.88}{2020/07/14}{\filenm{lwarp.css}: Added \optn{indexheading} for \pkg{gindex}.}
+% \changes{v0.893}{2020/10/18}{\filenm{lwarp.css}: Added \pkg{keystroke}.}
+% \changes{v0.894}{2020/12/15}{\filenm{lwarp.css}: \TeX\ logos no longer below baseline.}
%
% ^^A *lwarp.css
%
@@ -16050,7 +17398,7 @@
\begin{filecontents*}[overwrite]{lwarp.css}
/*
CSS stylesheet for the LaTeX Lwarp package
- Copyright 2016-2020 Brian Dunn — BD Tech Concepts LLC
+ Copyright 2016-2021 Brian Dunn — BD Tech Concepts LLC
*/
@@ -16108,10 +17456,11 @@
span.indexitem {margin-left: 0em}
span.indexsubitem {margin-left: 2em}
span.indexsubsubitem {margin-left: 4em}
+div.indexheading {margin-top: 2ex ; font-weight: bold}
div.hidden, span.hidden { display: none ; }
-kbd, span.texttt {
+kbd, span.texttt, p span.texttt {
font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console",
"Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono",
"Courier New", monospace;
@@ -16126,10 +17475,6 @@
span.textmd, div.textmd { font-weight: normal; }
-span.texteb { font-weight: bolder; }
-
-span.textlg { font-weight: lighter; }
-
span.textup, div.textup {
font-style: normal;
font-variant: normal;
@@ -16158,6 +17503,52 @@
Geneva, Verdana, sans-serif ;
}
+/* nfssext-cfr lining figures */
+span.textln, div.textln {
+ font-variant-numeric: lining-nums ;
+}
+
+/* nfssext-cfr proportional figures */
+span.textp, div.textp {
+ font-variant-numeric: proportional-nums ;
+}
+
+/* nfssext-cfr tabular figures */
+span.textt, div.textt {
+ font-variant-numeric: tabular-nums ;
+}
+
+/* nfssext-cfr font weights */
+span.textdb, div.textdb {
+ font-weight: 500 ;
+}
+
+span.textsb, div.textsb {
+ font-weight: 600 ;
+}
+
+span.texteb, div.texteb {
+ font-weight: 800 ;
+}
+
+span.textub, div.textub {
+ font-weight: 900 ;
+}
+
+span.textlg, div.textlg {
+ font-weight: 300 ;
+}
+
+span.textel, div.textel {
+ font-weight: 200 ;
+}
+
+span.textul, div.textul {
+ font-weight: 100 ;
+}
+
+
+
span.textcircled { border: 1px solid black ; border-radius: 1ex ; }
span.underline {
@@ -16170,7 +17561,9 @@
text-decoration-skip: auto ;
}
+div.hrule { border-top: 1px solid silver }
+
/* for vertical text: */
div.verticalrl { writing-mode: vertical-rl }
div.horizontaltb { writing-mode: horizontal-tb }
@@ -16202,16 +17595,16 @@
.supsubscript sub {
position: relative;
display: block;
- font-size: .5em;
+ font-size: .7em;
line-height: 1;
}
.supsubscript sup {
- top: .5em;
+ top: .3em;
}
.supsubscript sub {
- top: .5em;
+ top: .3em;
}
div.attribution p {
@@ -16290,7 +17683,7 @@
div.dictumauthor { font-style:italic }
-/* copyrightbox package */
+/* copyrightbox package: */
div.copyrightbox { margin: .5ex .5em }
div.copyrightbox p {margin: 0px .5em ; padding: 0px}
div.copyrightboxnote {text-align: left ; font-size: 60%}
@@ -16353,6 +17746,11 @@
span.highlight { background: #F8E800 ; }
+/* keystroke package: */
+span.keystroke {
+ border-style: outset ;
+ padding: 0pt .5em 0pt .5em ;
+}
html body {
@@ -16501,7 +17899,7 @@
}
section.textbody div.footnotes{
- margin: 3ex 2em 0ex 2em ;
+ margin: 3ex 2em .5ex 2em ;
border-bottom: 2px solid silver ;
}
@@ -16693,6 +18091,7 @@
.minipage, .fminipage, .fcolorminipage {
/* display: inline-block ; */
/* Mini pages which follow each other will be tiled. */
+ text-align:left;
margin: .25em .25em .25em .25em;
padding: .25em .25em .25em .25em;
display: inline-flex;
@@ -16755,22 +18154,35 @@
}
-.mdframed {
+/* mdframed, tcolorbox, shadebox packages */
+.mdframed, .tcolorbox, .shadebox {
padding: 0ex ;
margin: 2ex 0em 2ex 0em ;
+ border: 1px solid black ;
}
-.mdframed p { padding: 0ex .5em 0ex .5em ; }
+.tcolorbox {
+ border-radius: 10pt ;
+ margin: 2ex 1em 2ex 1em ;
+}
-.mdframed dl { padding: 1ex .5em 0ex .5em ; }
+.mdframed p, .tcolorbox p { padding: 0ex .5em 0ex .5em ; }
-.mdframedtitle {
+.mdframed dl, .tcolorbox dl { padding: 1ex .5em 0ex .5em ; }
+
+.mdframedtitle, .tcolorboxtitle {
padding: .5ex 0pt 0pt 0pt ;
border-radius: 10pt 10pt 0pt 0pt ;
display: block ;
margin-bottom: 1ex ;
+ border-bottom: 1px solid silver ;
}
+.tcolorboxsubtitle .tcolorbox {
+ margin: 2ex 0em 2ex 0em ;
+ border-radius: 0pt ;
+}
+
.mdframedsubtitle {
display: block ;
}
@@ -16872,7 +18284,10 @@
dl dd p { margin-top: 0em; }
-dd ul, dd ol, dd dl { clear: both ; padding-top: 1ex }
+dd ul, dd ol, dd dl {
+ clear: both ;
+/* padding-top: 1ex ; */
+}
nav {
@@ -17188,6 +18603,26 @@
+div.titlehead
+{
+ text-align: left ;
+ font-style: normal ;
+ font-weight: normal ;
+ font-style: normal ;
+ font-size: .8em ;
+ margin: 1ex 0em 1ex 0em ;
+}
+
+div.subject
+{
+ text-align: center ;
+ font-style: normal ;
+ font-weight: bold ;
+ font-style: normal ;
+ font-size: .8em ;
+ margin: 1ex 0em 1ex 0em ;
+}
+
div.published
{
text-align: center ;
@@ -17282,6 +18717,7 @@
}
+/* for \LinkHome, \LinkPrevious, and \LinkNext: */
a.linkhome { font-weight:bold ; font-size: 1em ;}
@@ -17405,10 +18841,16 @@
/* Native LaTeX theorems: */
-.theoremcontents { font-style: italic; margin-top: 3ex ; margin-bottom: 3ex ; }
-.theoremlabel { font-style: normal; font-weight: bold ; margin-right: .5em ; }
+.theoremcontents {
+ font-style: italic; margin-top: 3ex ; margin-bottom: 3ex ;
+}
+.theoremlabel {
+ font-style: normal; font-weight: bold ; margin-right: .5em ;
+}
+
+
/* theorem, amsthm, and ntheorem packages */
span.theoremheader,
@@ -17480,6 +18922,35 @@
span.amsthmnoteremark {}
+/* thmbox */
+
+.thmbox {
+ font-style: italic; margin-top: 3ex ; margin-bottom: 3ex ;
+ border: 1px solid gray ;
+ padding: 1ex ;
+}
+
+.thmboxtitle {
+ font-style: normal; font-weight: bold ; margin-right: .5em ;
+ border-bottom: 1px solid gray ;
+}
+
+span.thmboxproofname, span.thmboxexamplename {
+ font-weight: bold ;
+}
+
+div.thmboxproof, div.thmboxexample {
+ font-size: 0.85em ;
+ margin: 2ex ;
+}
+
+div.thmboxleftbar {
+ border-left: 2px solid black ;
+ padding-left: 1em ;
+}
+
+
+
/* For the backnaur package: */
div.backnaur {
display: block ;
@@ -17527,6 +18998,9 @@
/*
For CSS LaTeX and related logos:
Based on spacing demonstrated by the metafont package.
+
+The subscripts are shrunk instead of lowered below the baseline,
+to avoid browser rendering errors with the line height in lists, etc.
*/
.latexlogofont {
@@ -17538,7 +19012,6 @@
.latexlogo {
font-family: "Linux Libertine O", "Nimbus Roman No 9 L",
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
- font-size: 1.1em;
}
.latexlogosup {
@@ -17552,10 +19025,11 @@
.latexlogosub {
text-transform: uppercase;
- vertical-align: -0.27ex;
+/* vertical-align: -0.27ex; */
margin-left: -0.08em;
margin-right: -0.07em;
- font-size: 1em;
+/* font-size: 1em; */
+ font-size: .7em ;
}
.latexlogotwoe {
@@ -17565,10 +19039,11 @@
.latexlogotwoesub {
font-style:italic ;
- vertical-align: -0.27ex;
+/* vertical-align: -0.27ex; */
margin-left: -0.11em;
margin-right: -0.1em;
- font-size: 1em;
+/* font-size: 1em; */
+ font-size: .7em ;
}
.xelatexlogo {
@@ -17575,14 +19050,14 @@
font-family: "Linux Libertine O", "Nimbus Roman No 9 L",
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
letter-spacing: .03em ;
- font-size: 1.1em;
}
.xelatexlogosub {
- vertical-align: -0.27ex;
+/* vertical-align: -0.27ex; */
margin-left: -0.0667em;
margin-right: -.05em;
- font-size: 1em;
+/* font-size: 1em; */
+ font-size: .7em ;
letter-spacing: .03em ;
}
@@ -17620,6 +19095,7 @@
box-shadow: none ;
}
span.sidetocthetitle { display: inline }
+ nav.topnavigation { display:block }
nav.botnavigation { display:block }
div.bodycontainer { width: 100% }
.marginpar {
@@ -18283,6 +19759,9 @@
% \end{macrocode}
+
+
+
% \subsection{\filenm{lwarp_one_limage.cmd}}
%
% \DescribeFile{lwarp_one_limage.cmd}
@@ -18337,10 +19816,13 @@
% \subsection{\filenm{lwarp_mathjax.txt}}
+% \credits{Davide P. Cervone}
+
% \DescribeFile{lwarp_mathjax.txt}
-% The default MathJax script used by \pkg{lwarp} when using \brand{MathJax}.
-% A recent version of MathJax is used, as served by the recommended repository.
-% Adjustments are made to allow \LaTeX\ to control the equation tags.
+% The default \brand{MathJax} script used by \pkg{lwarp} when using \brand{MathJax}.
+% A recent version of \brand{MathJax} is used, as served by the recommended repository.
+% Adjustments are made to allow \LaTeX\ to control the equation tags
+% and provide for starred macros.
%
% \cs{MathJaxFilename} determines which script file is copied into the \HTML\ pages,
% and defaults to \filenm{lwarp_mathjax.txt}.
@@ -18353,8 +19835,8 @@
% To generate a custom script, such as to use a local repository,
% \margintag{custom script}
% copy \filenm{lwarp_mathjax.txt} to a new file,
-% make changes while keeping \pkg{lwarp}'s adjustments for equation numbering,
-% and use \cs{MathJaxFilename} to select new filename.
+% make changes while keeping \pkg{lwarp}'s adjustments for equation numbering
+% and starred macros, and use \cs{MathJaxFilename} to select the new filename.
%
% \changes{v0.28}{2017/04/11}{File: \filenm{lwarp_mathjax.txt}: Updated \protect\acro{CDN} repository.}
% \changes{v0.30}{2017/04/26}{Fix: \filenm{lwarp_mathjax.txt}: Only written in print mode.}
@@ -18362,13 +19844,19 @@
% \changes{v0.42}{2017/10/16}{File: \filenm{lwarp_mathjax.txt}: Updated \pkg{siunitx} script.}
% \changes{v0.45}{2017/12/21}{File: \filenm{lwarp_mathjax.txt}: Allow \brand{MathJax} inside \env{tabbing}.}
% \changes{v0.45}{2018/01/23}{File: \filenm{lwarp_mathjax.txt}: Allow \brand{MathJax} inside \env{verse}.}
-% \changes{v0.59}{2018/07/13}{File: \filenm{lwarp_mathjax.txt}: Updated to MathJax v2.7.4.}
-% \changes{v0.59}{2018/07/16}{File: \filenm{lwarp_mathjax.txt}: Fix: Removed chapter number from tagged non-numeric MathJax equations.}
+% \changes{v0.59}{2018/07/13}{File: \filenm{lwarp_mathjax.txt}: Updated to \brand{MathJax} v2.7.4.}
+% \changes{v0.59}{2018/07/16}{File: \filenm{lwarp_mathjax.txt}: Fix: Removed chapter number from tagged non-numeric \brand{MathJax} equations.}
% \changes{v0.62}{2018/11/05}{File: \filenm{lwarp_mathjax.txt}: Removed inoperable \pkg{siunitx} extension.}
-% \changes{v0.70}{2019/03/24}{File: \filenm{lwarp_mathjax.txt}: Updated to MathJax v2.7.5.}
+% \changes{v0.70}{2019/03/24}{File: \filenm{lwarp_mathjax.txt}: Updated to \brand{MathJax} v2.7.5.}
% \changes{v0.70}{2019/03/24}{File: \filenm{lwarp_mathjax.txt}: Loads \filenm{autoload-all.js} extension.}
-% \changes{v0.76}{2019/10/05}{File: \filenm{lwarp_mathjax.txt}: Updated to MathJax v2.7.6.}
-%
+% \changes{v0.76}{2019/10/05}{File: \filenm{lwarp_mathjax.txt}: Updated to \brand{MathJax} v2.7.6.}
+% \changes{v0.86}{2020/05/03}{File: \filenm{lwarp_mathjax.txt}: Updated to \brand{MathJax} v3 current.}
+% \changes{v0.86}{2020/05/03}{File: \filenm{lwarp_mathjax.txt}: Improved equation numbering.}
+% \changes{v0.86}{2020/05/03}{File: \filenm{lwarp_mathjax.txt}: Added support for starred macros.}
+% \changes{v0.87}{2020/05/20}{File: \filenm{lwarp_mathjax.txt}: Now provides \cs{ifstar}, \cs{ifnextchar}.}
+% \changes{v0.891}{2020/09/07}{File: \filenm{lwarp_mathjax.txt}: Renamed \filenm{tagformat} extension.}
+% \changes{v0.892}{2020/09/26}{File: \filenm{lwarp_mathjax.txt}: Added \cs{left} \Slash \cs{right} delimiters.}
+% \changes{v0.895}{2021/01/13}{File: \filenm{lwarp_mathjax.txt}: Added \cs{ifblank}, \cs{ifstrequal} macros.}
% ^^A *lwarp_mathjax.txt
%
% \codeconfig
@@ -18375,121 +19863,209 @@
% \begin{macrocode}
\begin{LWRwriteconf}
\begin{filecontents*}[overwrite]{lwarp_mathjax.txt}
-<!-- https://groups.google.com/forum/#!topic/
- mathjax-users/jUtewUcE2bY -->
-<script type="text/x-mathjax-config">
-MathJax.Hub.Register.StartupHook("TeX AMSmath Ready",function () {
- var seteqsectionDefault = {name: "", num: 0};
- var seteqsections = {}, seteqsection = seteqsectionDefault;
- var TEX = MathJax.InputJax.TeX, PARSE = TEX.Parse;
- var AMS = MathJax.Extension["TeX/AMSmath"];
- TEX.Definitions.Add({
- macros: {
- seteqsection: "mySection",
- seteqnumber: "mySetEqNumber"
- }
- });
+<script>
+// Lwarp MathJax emulation code
+//
+// Based on code by Davide P. Cervone.
+// Equation numbering: https://github.com/mathjax/MathJax/issues/2427
+// Starred and ifnextchar macros: https://github.com/mathjax/MathJax/issues/2428
+// \left, \right delimiters: https://github.com/mathjax/MathJax/issues/2535
+//
+// Modified by Brian Dunn to adjust equation numbering and add subequations.
+//
+// LaTeX can use \seteqnumber{subequations?}{section}{number} before each equation.
+// subequations? is 0 usually, 1 if inside subequations.
+// section is a string printed as-is, or empty.
+// number is auto-incremented by MathJax between equations.
+//
+MathJax = {
+ subequations: "0",
+ section: "",
+ loader: {
+ load: ['[tex]/tagformat', '[tex]/textmacros'],
+ },
+ startup: {
+ ready() {
+ // These would be replaced by import commands if you wanted to make
+ // a proper extension.
+ const Configuration = MathJax._.input.tex.Configuration.Configuration;
+ const CommandMap = MathJax._.input.tex.SymbolMap.CommandMap;
+ const Macro = MathJax._.input.tex.Symbol.Macro;
+ const TexError = MathJax._.input.tex.TexError.default;
+ const ParseUtil = MathJax._.input.tex.ParseUtil.default;
+ const expandable = MathJax._.util.Options.expandable;
- PARSE.Augment({
- mySection: function (name) {
- seteqsection.num = AMS.number;
- var n = this.GetArgument(name);
- if (n === "") {
- seteqsection = seteqsectionDefault;
- } else {
- if (!seteqsections["_"+n])
- seteqsections["_"+n] = {name:n, num:0};
- seteqsection = seteqsections["_"+n];
+ // Insert the replacement string into the TeX string, and check
+ // that there haven't been too many maxro substitutions (prevents
+ // infinite loops).
+ const useArgument = (parser, text) => {
+ parser.string = ParseUtil.addArgs(parser, text, parser.string.slice(parser.i));
+ parser.i = 0;
+ if (++parser.macroCount > parser.configuration.options.maxMacros) {
+ throw new TexError('MaxMacroSub1',
+ 'MathJax maximum macro substitution count exceeded; ' +
+ 'is there a recursive macro call?');
}
- AMS.number = seteqsection.num;
- },
- mySetEqNumber: function (name) {
- var n = this.GetArgument(name);
- if (!n || !n.match(/^ *[0-9]+ *$/))
- n = "";
- else
- n = parseInt(n)-1;
- <!-- $ syntax highlighting -->
- if (n === "" || n < 1)
- TEX.Error
- ("Argument to "+name+" should be a positive integer");
- AMS.number = n;
- }
- });
- MathJax.Hub.Config({
- TeX: {
- equationNumbers: {
- formatTag: function (n) {
- <!-- if not numeric, don't include the chapter -->
- if (!n.match(/^ *[0-9]+ *$/ ))
- <!-- $ syntax highlighting -->
- return "("+(n).replace(/^\./,"")+")" ;
- else
- return "("+(seteqsection.name+"."+n).replace(/^\./,"")+")" ;
- },
- formatID: function (n) {
- n = (seteqsection.name+'.'+n).replace
- (/[:"'<>&]/g,"").replace(/^\./,"");
- return 'mjx-eqn-' + n;
- }
+ }
+
+ // Create the command map for:
+ // \ifstar, \ifnextchar, \ifblank, \ifstrequal, \seteqnumber
+ new CommandMap('Lwarp-macros', {
+ ifstar: 'IfstarFunction',
+ ifnextchar: 'IfnextcharFunction',
+ ifblank: 'IfblankFunction',
+ ifstrequal: 'IfstrequalFunction',
+ seteqnumber: 'SeteqnumberFunction'
+ }, {
+ // This function implements an ifstar macro.
+ IfstarFunction(parser, name) {
+ const resultstar = parser.GetArgument(name);
+ const resultnostar = parser.GetArgument(name);
+ const star = parser.GetStar(); // true if there is a *
+ useArgument(parser, star ? resultstar : resultnostar);
+ },
+
+ // This function implements an ifnextchar macro.
+ IfnextcharFunction(parser, name) {
+ let whichchar = parser.GetArgument(name);
+ if (whichchar.match(/^(?:0x[0-9A-F]+|[0-9]+)$/i)) {
+ // $ syntax highlighting
+ whichchar = String.fromCodePoint(parseInt(whichchar));
+ }
+ const resultnextchar = parser.GetArgument(name);
+ const resultnotnextchar = parser.GetArgument(name);
+ const gotchar = (parser.GetNext() === whichchar);
+ useArgument(parser, gotchar ? resultnextchar : resultnotnextchar);
+ },
+
+ // This function implements an ifblank macro.
+ IfblankFunction(parser, name) {
+ const blankarg = parser.GetArgument(name);
+ const resultblank = parser.GetArgument(name);
+ const resultnotblank = parser.GetArgument(name);
+ const isblank = (blankarg.trim() == "");
+ useArgument(parser, isblank ? resultblank : resultnotblank);
+ },
+
+ // This function implements an ifstrequal macro.
+ IfstrequalFunction(parser, name) {
+ const strequalfirst = parser.GetArgument(name);
+ const strequalsecond = parser.GetArgument(name);
+ const resultequal = parser.GetArgument(name);
+ const resultnotequal = parser.GetArgument(name);
+ const isequal = (strequalfirst == strequalsecond);
+ useArgument(parser, isequal ? resultequal : resultnotequal);
+ },
+
+ // This function modifies the equation numbers.
+ SeteqnumberFunction(parser, name) {
+ // Get the macro parameters
+ const star = parser.GetStar(); // true if there is a *
+ const optBrackets = parser.GetBrackets(name); // contents of optional brackets
+ const newsubequations = parser.GetArgument(name); // the subequations argument
+ const neweqsection = parser.GetArgument(name); // the eq section argument
+ const neweqnumber = parser.GetArgument(name); // the eq number argument
+ MathJax.config.subequations=newsubequations ; // a string with boolean meaning
+ MathJax.config.section=neweqsection ; // a string with numeric meaning
+ parser.tags.counter = parser.tags.allCounter = neweqnumber ;
}
- }
- });
-});
-</script>
-<!-- http://docs.mathjax.org/en/latest/options/ThirdParty.html -->
-<script type="text/x-mathjax-config">
- MathJax.Ajax.config.path["Contrib"] =
- "https://cdn.mathjax.org/mathjax/contrib";
-</script>
+ });
-<script type="text/x-mathjax-config">
-MathJax.Hub.Config({
- TeX: {
- extensions: ["autoload-all.js"] ,
- equationNumbers: {
- autoNumber: "AMS"
+ // Create the Lwarp-macros package
+ Configuration.create('Lwarp-macros', {
+ handler: {macro: ['Lwarp-macros']}
+ });
+
+ MathJax.startup.defaultReady();
+
+ // For forward references:
+ MathJax.startup.input[0].preFilters.add(({math}) => {
+ if (math.inputData.recompile){
+ MathJax.config.subequations = math.inputData.recompile.subequations;
+ MathJax.config.section = math.inputData.recompile.section;
}
- }
-});
-</script>
+ });
+ MathJax.startup.input[0].postFilters.add(({math}) => {
+ if (math.inputData.recompile){
+ math.inputData.recompile.subequations = MathJax.config.subequations;
+ math.inputData.recompile.section = MathJax.config.section;
+ }
+ });
-<!-- Alternative CDN provider: -->
-<script type="text/javascript" async
-src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.6/MathJax.js?config=TeX-AMS_HTML-full">
+ // For \left, \right with unicode-math:
+ const {DelimiterMap} = MathJax._.input.tex.SymbolMap;
+ const {Symbol} = MathJax._.input.tex.Symbol;
+ const {MapHandler} = MathJax._.input.tex.MapHandler;
+ const delimiter = MapHandler.getMap('delimiter');
+ delimiter.add('\\lBrack', new Symbol('\\lBrack', '\u27E6'));
+ delimiter.add('\\rBrack', new Symbol('\\rBrack', '\u27E7'));
+ delimiter.add('\\lAngle', new Symbol('\\lAngle', '\u27EA'));
+ delimiter.add('\\rAngle', new Symbol('\\rAngle', '\u27EB'));
+ delimiter.add('\\lbrbrak', new Symbol('\\lbrbrak', '\u2772'));
+ delimiter.add('\\rbrbrak', new Symbol('\\rbrbrak', '\u2773'));
+ delimiter.add('\\lbag', new Symbol('\\lbag', '\u27C5'));
+ delimiter.add('\\rbag', new Symbol('\\rbag', '\u27C6'));
+ delimiter.add('\\llparenthesis', new Symbol('\\llparenthesis', '\u2987'));
+ delimiter.add('\\rrparenthesis', new Symbol('\\rrparenthesis', '\u2988'));
+ delimiter.add('\\llangle', new Symbol('\\llangle', '\u2989'));
+ delimiter.add('\\rrangle', new Symbol('\\rrangle', '\u298A'));
+ delimiter.add('\\Lbrbrak', new Symbol('\\Lbrbrak', '\u27EC'));
+ delimiter.add('\\Rbrbrak', new Symbol('\\Rbrbrak', '\u27ED'));
+ delimiter.add('\\lBrace', new Symbol('\\lBrace', '\u2983'));
+ delimiter.add('\\rBrace', new Symbol('\\rBrace', '\u2984'));
+ delimiter.add('\\lParen', new Symbol('\\lParen', '\u2985'));
+ delimiter.add('\\rParen', new Symbol('\\rParen', '\u2986'));
+ delimiter.add('\\lbrackubar', new Symbol('\\lbrackubar', '\u298B'));
+ delimiter.add('\\rbrackubar', new Symbol('\\rbrackubar', '\u298C'));
+ delimiter.add('\\lbrackultick', new Symbol('\\lbrackultick', '\u298D'));
+ delimiter.add('\\rbracklrtick', new Symbol('\\rbracklrtick', '\u298E'));
+ delimiter.add('\\lbracklltick', new Symbol('\\lbracklltick', '\u298F'));
+ delimiter.add('\\rbrackurtick', new Symbol('\\rbrackurtick', '\u2990'));
+ delimiter.add('\\langledot', new Symbol('\\langledot', '\u2991'));
+ delimiter.add('\\rangledot', new Symbol('\\rangledot', '\u2992'));
+ delimiter.add('\\lparenless', new Symbol('\\lparenless', '\u2993'));
+ delimiter.add('\\rparengtr', new Symbol('\\rparengtr', '\u2994'));
+ delimiter.add('\\Lparengtr', new Symbol('\\Lparengtr', '\u2995'));
+ delimiter.add('\\Rparenless', new Symbol('\\Rparenless', '\u2996'));
+ delimiter.add('\\lblkbrbrak', new Symbol('\\lblkbrbrak', '\u2997'));
+ delimiter.add('\\rblkbrbrak', new Symbol('\\rblkbrbrak', '\u2998'));
+ delimiter.add('\\lvzigzag', new Symbol('\\lvzigzag', '\u29D8'));
+ delimiter.add('\\rvzigzag', new Symbol('\\rvzigzag', '\u29D9'));
+ delimiter.add('\\Lvzigzag', new Symbol('\\Lvzigzag', '\u29DA'));
+ delimiter.add('\\Rvzigzag', new Symbol('\\Rvzigzag', '\u29DB'));
+ delimiter.add('\\lcurvyangle', new Symbol('\\lcurvyangle', '\u29FC'));
+ delimiter.add('\\rcurvyangle', new Symbol('\\rcurvyangle', '\u29FD'));
+ delimiter.add('\\Vvert', new Symbol('\\Vvert', '\u2980'));
+ } // ready
+ }, // startup
+
+ tex: {
+ packages: {'[+]': ['tagformat', 'Lwarp-macros', 'textmacros']},
+ tags: "ams",
+ tagformat: {
+ number: function (n) {
+ if(MathJax.config.subequations==0)
+ return(MathJax.config.section + n);
+ else
+ return(MathJax.config.section + String.fromCharCode(96+n));
+ },
+ },
+ }
+}
</script>
-<!-- No longer supported after April 30, 2017: -->
-<!--
<script
- src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML-full">
-</script>
--->
-
+ id="MathJax-script"
+ src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"
+></script>
\end{filecontents*}
% \end{Verbatim}% for syntax highlighting
\end{LWRwriteconf}
% \end{macrocode}
-% ^^A A possible addition for siuntix:
-% ^^A <!-- https://github.com/burnpanck/MathJax-siunitx -->
-% ^^A
-% ^^A <script type="text/x-mathjax-config">
-% ^^A MathJax.Hub.Config({
-% ^^A extensions: ["tex2jax.js","[siunitx]/siunitx.js"],
-% ^^A jax: ["input/TeX","output/HTML-CSS"],
-% ^^A tex2jax: {
-% ^^A inlineMath: [["$","$"],["\\(","\\)"]] ,
-% ^^A processClass: "tabbing|verse"
-% ^^A },
-% ^^A TeX: {extensions: ["AMSmath.js","AMSsymbols.js", "sinuitx.js"]}
-% ^^A });
-% ^^A MathJax.Ajax.config.path['siunitx'] = 'http://rawgit.com/burnpanck/MathJax-siunitx/master/';
-% ^^A </script>
-
-
+
% ^^A \subsection{\filenm{lwarp_KaTeX.txt}}
% ^^A \DescribeFile{lwarp_KaTeX.txt}
@@ -18591,19 +20167,21 @@
% \changes{v0.59}{2018/08/21}{\prog{lwarpmk}: Consolidated compiling options into \optn{printlatexcmd} and \optn{HTMLlatexcmd}.}
% \changes{v0.59}{2018/09/06}{\prog{lwarpmk}: Added \cmds{lwarpmk epstopdf}.}
% \changes{v0.66}{2019/01/27}{\prog{lwarpmk}: Added \optn{ImagesDirectory} and \optn{ImagesName}.}
-% \changes{v0.66}{2019/01/30}{\prog{lwarpmk}: Fix for \cmds{cleanlimages}.}%
-% \changes{v0.68}{2019/03/02}{\prog{lwarpmk}: Improved error handling if incomplete compile.}%
+% \changes{v0.66}{2019/01/30}{\prog{lwarpmk}: Fix for \cmds{cleanlimages}.}
+% \changes{v0.68}{2019/03/02}{\prog{lwarpmk}: Improved error handling if incomplete compile.}
% \changes{v0.71}{2019/04/11}{\prog{lwarpmk}: If wrong \filenm{lwarpmk.conf} version,
% or wrong OS,
-% displays the print command to recompile.}%
-% \changes{v0.74}{2019/08/05}{\prog{lwarpmk}: \cmds{lwarpmk clean} removes add'l files.}%
-% \changes{v0.74}{2019/08/14}{\prog{lwarpmk}: \cmds{lwarpmk epstopdf} and \cmds{pdftosvg} honor directories.}%
-% \changes{v0.81}{2020/03/04}{\prog{lwarpmk}: Improved error if in \pkg{lwarp} source directory.}%
+% displays the print command to recompile.}
+% \changes{v0.74}{2019/08/05}{\prog{lwarpmk}: \cmds{lwarpmk clean} removes add'l files.}
+% \changes{v0.74}{2019/08/14}{\prog{lwarpmk}: \cmds{lwarpmk epstopdf} and \cmds{pdftosvg} honor directories.}
+% \changes{v0.81}{2020/03/04}{\prog{lwarpmk}: Improved error if in \pkg{lwarp} source directory.}
+% \changes{v0.84}{2020/03/30}{\prog{lwarpmk}: \optn{clean} also removes \filenm{comment_*.cut}}
+% \changes{v0.89}{2020/08/29}{\prog{lwarpmk}: \optn{clean} also removes \filenm{*.bbl}}
%
% The following is only generated if the \optn{lwarpmk} option
% was given to \pkg{lwarp}.
% \begin{macrocode}
-\begin{LWR at createlwarpmk}
+\begin{LWRcreatelwarpmk}
% \end{macrocode}
%
% ^^A *lwarpmk.lua
@@ -18611,10 +20189,10 @@
\begin{filecontents*}[overwrite]{lwarpmk.lua}
#!/usr/bin/env texlua
--- Copyright 2016-2020 Brian Dunn
+-- Copyright 2016-2021 Brian Dunn
-printversion = "v0.83"
+printversion = "v0.895"
requiredconfversion = "2" -- also at *lwarpmk.conf
function printhelp ()
@@ -18645,10 +20223,11 @@
lwarpmk pdftosvg <list of file names>: Converts each PDF file to SVG.
lwarpmk epstopdf <list of file names>: Converts each EPS file to PDF.
lwarpmk clean [-p project]: Remove *.aux, *.toc, *.lof/t,
- *.idx, *.ind, *.log, *_html_inc.*, .gl*,
+ *.idx, *.ind, *.bbl, *.log, *_html_inc.*, .gl*,
*_html.pdf, *_html.html, *_html.sidetoc
lwarpmk cleanall [-p project]: Remove auxiliary files, project.pdf, *.html
lwarpmk cleanlimages: Removes all images from the "lateximages" directory.
+lwarpmk -v: Print the version number.
lwarpmk -h: Print this help message.
lwarpmk --help: Print this help message.
@@ -19008,12 +20587,13 @@
-- Remove auxiliary files:
-- All .aux files are removed since there may be many bbl*.aux files.
-- Also removes sourcename_html.pdf, sourcename_html.html,
--- and sourcename_html.sidetoc.
+-- and sourcename_html.sidetoc, plus comment_*.cut.
--
os.execute ( rmname .. " *.aux " ..
sourcename ..".toc " .. sourcename .. "_html.toc " ..
sourcename ..".lof " .. sourcename .. "_html.lof " ..
sourcename ..".lot " .. sourcename .. "_html.lot " ..
+ sourcename ..".bbl " .. sourcename .. "_html.bbl " ..
" *.idx " ..
" *.ind " ..
sourcename ..".ps " .. sourcename .."_html.ps " ..
@@ -19022,7 +20602,8 @@
sourcename .. "_html.pdf " ..
sourcename .. "_html.html " ..
sourcename .. "_html.sidetoc " ..
- " *_html_inc.* "
+ " *_html_inc.* " ..
+ " comment_*.cut"
)
end
@@ -19549,6 +21130,12 @@
printhelp ()
+-- lwarpmk -v:
+
+elseif (arg[1] == "-v" ) then
+-- The version number has already been printed
+-- by the lwarpmk intro.
+
-- lwarpmk -h or lwarpmk --help :
elseif (arg[1] == "-h" ) or (arg[1] == "--help") then
@@ -19568,7 +21155,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\end{LWR at createlwarpmk}
+\end{LWRcreatelwarpmk}
% \end{macrocode}
%
@@ -19858,11 +21445,11 @@
% \DescribeBoolean{LWR at mathmacro} True if currently defining math macros.
-% Used to disable \SVG\ math hashing and MathJax math contents while
+% Used to disable \SVG\ math hashing and \brand{MathJax} math contents while
% defining a macro using inline math.
% Begin a macro, it is not guaranteed that the contents are static, and so
% the image must be unique. The contents also almost certainly will not be
-% parsed correctly by MathJax.
+% parsed correctly by \brand{MathJax}.
% \begin{macrocode}
\newbool{LWR at mathmacro}
\boolfalse{LWR at mathmacro}
@@ -19908,7 +21495,7 @@
% value of a counter, then \cs{inlinemathother} must be used before the
% inline math expression, and \cs{inlinemathnormal} must be used after.
%
-% For MathJax, the inline math expression is usually printed for MathJax to
+% For \brand{MathJax}, the inline math expression is usually printed for \brand{MathJax} to
% interpret. When marked as dynamic math, the following inline math expression
% will be displayed as an unhashed inline \SVG\ image instead.
%
@@ -19984,7 +21571,7 @@
\newcommand*{\HTMLentity}[1]{%
% \LWR at traceinfo{HTMLentity \detokenize{#1}}%
\begingroup%
-\LWR at FBcancel%
+\LWR at hook@processingtags%
\LWR at origampersand#1;%
\endgroup%
% \LWR at traceinfo{HTMLentity done}%
@@ -20082,7 +21669,7 @@
% such as 100+ for one chapter, 200+ for another chapter, etc.
% \begin{macrocode}
\newcommand*{\SetHTMLFileNumber}[1]{%
-\setcounter{LWR at htmlfilenumber}{#1}%
+ \setcounter{LWR at htmlfilenumber}{#1}%
}
% \end{macrocode}
% \end{macro}
@@ -20108,9 +21695,43 @@
% \end{macrocode}
+% Updated each time a new \HTML\ file is begun.
+% Used to provide \HTML\ previous/next web page links.
+% \begin{macrocode}
+\newcounter{LWR at HTMLpagenum}
+\setcounter{LWR at HTMLpagenum}{0}
+% \end{macrocode}
+
+
+% \DescribeCounter{LWR at htmlseqfilenumber}
+% A sequential count of the number of each \HTML\ file as it is being created.
+% Number 0 is the home page.
+% Unlike \cs{LWR at htmlfilenumber}, this one is known to increment by one
+% for each file. This is used to generate previous \slash next links for
+% each web page, via labels called |\BaseJobname-autofile-*|, and the
+% last page is also labelled |\BaseJobname-autofile-last|.
+%
+% \changes{v0.84}{2020/04/24}{Added prev/next links.}
+% \begin{macrocode}
+\newcounter{LWR at htmlseqfilenumber}
+\setcounter{LWR at htmlseqfilenumber}{0}
+% \end{macrocode}
+
+% \DescribeBoolean{LWR at setseqfilelabel}
+% At each new \HTML\ file, this is false until a sectional unit is used,
+% at which point this is set true and a label is placed.
+% In this way, the previous/next labels will point to a named section.
+% \begin{macrocode}
+\newbool{LWR at setseqfilelabel}
+\setbool{LWR at setseqfilelabel}{false}
+% \end{macrocode}
+
+
% \DescribeCounter{LWR at htmlfilenumber}
% Records the number of each \HTML\ file as it is being created.
% Number 0 is the home page.
+% This might not be sequential, as the user may use
+% \cs{SetHTMLFileNumber} to create groups of numbered nodes.
% \begin{macrocode}
\newcounter{LWR at htmlfilenumber}
\setcounter{LWR at htmlfilenumber}{0}
@@ -20125,6 +21746,8 @@
% \changes{v0.20}{2016/09/11}{Sections called ``Index'' or ``index'' have an underscore
% prepended to their filenames if no prefix.}
% \changes{v0.66}{2019/01/30}{Sanitize underscores.}
+% \changes{v0.84}{2020/04/10}{Fix: Sections called ``Index'' or ``index'' have \filenm{-0}
+% appended to their filenames if no prefix.}
%
% Prints the filename for a given section: |\HTMLFilename{}filenumber/name.html|
% \begin{macrocode}
@@ -20144,15 +21767,15 @@
% \LWR at traceinfo{about to assign temp}%
\LWR at sanitize{#1}%
\LWR at traceinfo{about to compare with ??}%
-\ifthenelse{\equal{\LWR at sanitized}{??}}%
+\ifdefstring{\LWR at sanitized}{??}
{\LWR at traceinfo{found ??}}%
{\LWR at traceinfo{not found ??}}%
\LWR at traceinfo{about to compare with zero or empty}%
-\ifthenelse{%
- \equal{\LWR at sanitized}{0}%
- \OR \equal{\LWR at sanitized}{}%
- \OR \equal{\LWR at sanitized}{??}%
-}%
+\ifboolexpr{
+ test {\ifdefstring{\LWR at sanitized}{0}} or
+ test {\ifdefstring{\LWR at sanitized}{}} or
+ test {\ifdefstring{\LWR at sanitized}{??}}
+}
{%
\LWR at traceinfo{LWR at htmlsectionfilename B \HomeHTMLFilename.html}%
\HomeHTMLFilename.html%
@@ -20159,18 +21782,20 @@
}%
% \end{macrocode}
% For a \LaTeX\ section named ``Index'' or ``index'' without a prefix, create a filename
-% with a leading underscore to avoid colliding with the \HTML\ filename |index.html|:
+% with a trailing \filenm{-0} to avoid colliding with the \HTML\ filename |index.html|:
% \begin{macrocode}
{%
\LWR at traceinfo{LWR at htmlsectionfilename C \LWR at sanitized}%
- \ifthenelse{%
- \equal{\HTMLFilename}{} \AND
- \equal{\LWR at sanitized}{Index} \OR
- \equal{\LWR at sanitized}{index}%
+ \ifboolexpr{
+ test{\ifdefvoid{\HTMLFilename}} and
+ (
+ test{\ifdefstring{\LWR at sanitized}{Index}} or
+ test{\ifdefstring{\LWR at sanitized}{index}}
+ )
}%
{%
- \LWR at traceinfo{Prefixing the index name with an underscore.}%
- \_\LWR at sanitized.html%
+ \LWR at traceinfo{Adding a zero to the index filename.}%
+ \LWR at sanitized-0.html%
}%
% \end{macrocode}
% Otherwise, create a filename with the chosen prefix:
@@ -20189,18 +21814,18 @@
%
% Prints the filename for the given label
%
-% \changes{v0.50}{2018/02/20}{Fix: SVG math in a section name.}
+% \changes{v0.50}{2018/02/20}{Fix: \SVG\ math in a section name.}
% \begin{macrocode}
\newcommand*{\LWR at htmlrefsectionfilename}[1]{%
-\LWR at traceinfo{LWR at htmlrefsectionfilename: !\detokenize{#1}!}%
+ \LWR at traceinfo{LWR at htmlrefsectionfilename: !\detokenize{#1}!}%
% \end{macrocode}
% \cs{LWR at nullfonts} to allow math in a section name.
% \begin{macrocode}
-\begingroup%
-\LWR at nullfonts%
-\LWR at htmlsectionfilename{\LWR at htmlfileref{#1}}%
-\endgroup%
-\LWR at traceinfo{LWR at htmlrefsectionfilename: done}%
+ \begingroup%
+ \LWR at nullfonts%
+ \LWR at htmlsectionfilename{\LWR at htmlfileref{#1}}%
+ \endgroup%
+ \LWR at traceinfo{LWR at htmlrefsectionfilename: done}%
}
% \end{macrocode}
% \end{macro}
@@ -20243,7 +21868,7 @@
% The filename must be detokenized for underscores.
% \begin{macrocode}
\newcommand*{\LinkHome}{%
-\LWR at subhyperrefclass{\HomeHTMLFilename.html}{\linkhomename}{linkhome}%
+ \LWR at subhyperrefclass{\HomeHTMLFilename.html}{\linkhomename}{linkhome}%
}
% \end{macrocode}
% \end{macro}
@@ -20302,8 +21927,8 @@
% Creates a link to the homepage at the top of the page for use when the window is too
% narrow for the side\TOC.
% \begin{macrocode}
-\newcommand*{\LWR at topnavigation}{
-\LWR at htmlelementclassline{nav}{topnavigation}{\LinkHome}
+\newcommand*{\LWR at topnavigation}{%
+ \LWR at htmlelementclassline{nav}{topnavigation}{\LinkHome}
}
% \end{macrocode}
% \end{macro}
@@ -20313,8 +21938,8 @@
% Creates a link to the homepage at the bottom of the page for use when the window is too
% narrow for the side\TOC.
% \begin{macrocode}
-\newcommand*{\LWR at botnavigation}{
-\LWR at htmlelementclassline{nav}{botnavigation}{\LinkHome}
+\newcommand*{\LWR at botnavigation}{%
+ \LWR at htmlelementclassline{nav}{botnavigation}{\LinkHome}
}
% \end{macrocode}
% \end{macro}
@@ -20324,7 +21949,111 @@
% \end{macrocode}
+% \section{Previous \Slash next navigation links}
+% \codeall
+% \begin{macrocode}
+\begin{warpall}
+% \end{macrocode}
+
+% \begin{macro}{\linkpreviousname} What to call the link to the previous web page.
+% \changes{v0.84}{2020/04/24}{Added prev/next links.}
+% \begin{macrocode}
+\newcommand*{\linkpreviousname}{Previous}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\linknextname} What to call the link to the next web page.
+% \changes{v0.84}{2020/04/24}{Added prev/next links.}
+% \begin{macrocode}
+\newcommand*{\linknextname}{Next}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macrocode}
+\end{warpall}
+% \end{macrocode}
+
+
+% \codeprint
+% \begin{macrocode}
+\begin{warpprint}
+% \end{macrocode}
+
+% \begin{macro}{\LinkPrevious} Creates a link to the previous web page if there is one.
+% \begin{macrocode}
+\newcommand*{\LinkPrevious}{}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\LinkNext} Creates a link to the next web page if there is one.
+% \begin{macrocode}
+\newcommand*{\LinkNext}{}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macrocode}
+\end{warpprint}
+% \end{macrocode}
+
+
+% \codehtml
+% \begin{macrocode}
+\begin{warpHTML}
+% \end{macrocode}
+
+% \begin{macro}{\LinkPrevious} Creates a link to the previous web page if there is one.
+%
+% The links refer to the \LaTeX\ labels |\Basejobname-autofile-*|
+%
+% \changes{v0.84}{2020/04/24}{Added prev/next links.}
+% \begin{macrocode}
+\newcommand*{\LinkPrevious}{%
+ \ifnumless{\value{LWR at htmlseqfilenumber}}{1}{}{%
+ \setcounter{LWR at tempcountone}{\value{LWR at htmlseqfilenumber}-1}%
+ \LWR at subhyperrefclass{%
+ \LWR at htmlrefsectionfilename{%
+ \BaseJobname-autofile-\arabic{LWR at tempcountone}%
+ }%
+ }{\linkpreviousname}{linkhome}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\LinkNext} Creates a link to the next web page if there is one.
+%
+% The links refer to the \LaTeX\ labels |\Basejobname-autofile-*| \\
+% and the last is the label |\Basejobname-autofile-last|
+%
+% \changes{v0.84}{2020/04/24}{Added prev/next links.}
+% \begin{macrocode}
+\newcommand*{\LinkNext}{%
+ \ifcsdef{r@\BaseJobname-autofile-last at lwarp}{%
+ \edef\LWR at tempone{%
+ \LWR at htmlfileref{\BaseJobname-autofile-\arabic{LWR at htmlseqfilenumber}}%
+ }%
+ \edef\LWR at temptwo{%
+ \LWR at htmlfileref{\BaseJobname-autofile-last}%
+ }%
+ \ifdefequal{\LWR at tempone}{\LWR at temptwo}{}{%
+ \setcounter{LWR at tempcountone}{\value{LWR at htmlseqfilenumber}+1}%
+ \LWR at subhyperrefclass{%
+ \LWR at htmlrefsectionfilename{%
+ \BaseJobname-autofile-\arabic{LWR at tempcountone}%
+ }%
+ }{\linknextname}{linkhome}%
+ }%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macrocode}
+\end{warpHTML}
+% \end{macrocode}
+
+
% \section{\cs{LWRPrintStack} diagnostic tool}
% Diagnostics tool:
@@ -20453,8 +22182,14 @@
\newcommand{\LWR at forcenewpage}{%
\LWR at traceinfo{LWR at forcenewpage}%
\ifinner\else%
-\LWR at stoppars\LWR at orignewpage\LWR at startpars%
+ \LWR at traceinfo{LWR at forcenewpage A}%
+ \LWR at stoppars%
+ \LWR at traceinfo{LWR at forcenewpage B}%
+ \LWR at maybe@orignewpage%
+ \LWR at traceinfo{LWR at forcenewpage C}%
+ \LWR at startpars%
\fi%
+\LWR at traceinfo{LWR at forcenewpage done}%
}
% \end{macrocode}
%
@@ -20544,10 +22279,11 @@
% \subsection{Mapping \LaTeX\ sections to \HTML\ sections}
%
% \changes{v0.73}{2019/06/21}{Added \cs{book} for \pkg{memoir}.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\newcommand*{\LWR at tagtitle}{h1}
\newcommand*{\LWR at tagtitleend}{/h1}
-\newcommand*{\LWR at tagbook}{div class="book"}
+\newcommand*{\LWR at tagbook}{div class=\textquotedbl{}book\textquotedbl}
\newcommand*{\LWR at tagbookend}{/div}
\newcommand*{\LWR at tagpart}{h2}
\newcommand*{\LWR at tagpartend}{/h2}
@@ -20559,9 +22295,9 @@
\newcommand*{\LWR at tagsubsectionend}{/h5}
\newcommand*{\LWR at tagsubsubsection}{h6}
\newcommand*{\LWR at tagsubsubsectionend}{/h6}
-\newcommand*{\LWR at tagparagraph}{span class="paragraph"}
+\newcommand*{\LWR at tagparagraph}{span class=\textquotedbl{}paragraph\textquotedbl}
\newcommand*{\LWR at tagparagraphend}{/span}
-\newcommand*{\LWR at tagsubparagraph}{span class="subparagraph"}
+\newcommand*{\LWR at tagsubparagraph}{span class=\textquotedbl{}subparagraph\textquotedbl}
\newcommand*{\LWR at tagsubparagraphend}{/span}
\newcommand*{\LWR at tagregularparagraph}{p}
@@ -20568,7 +22304,22 @@
% \end{macrocode}
+% \subsection{Hook while processing tags}
+%
+% This is used to disable special text processing while processing \HTML\ tags.
+% Special processing includes that done by
+% \pkg{babel-french}, \pkg{luavina}, \pkg{xevlna}.
+%
+% \begin{macro}{\LWR at hook@processingtags} Disable special text processing
+% while generating tags.
+% Replaces \cs{LWR at FBcancel} in most places.
+% \changes{v0.895}{2021/01/12}{Added.}
+% \begin{macrocode}
+\newcommand*{\LWR at hook@processingtags}{}
+% \end{macrocode}
+% \end{macro}
+
% \subsection{Babel-French tag modifications}
% \changes{v0.34}{2017/08/03}{\pkg{babel-french}: Adds fixed-width \HTML\ spaces to punctuation.}
@@ -20594,6 +22345,7 @@
{}%
{%
\LetLtxMacro\LWR at FBcancel\NoAutoSpacing%
+ \appto{\LWR at hook@processingtags}{\LWR at FBcancel}%
}%
\@ifundefined{frenchbsetup}%
@@ -20606,31 +22358,31 @@
%
\renewrobustcmd*{\FBcolonspace}{%
\begingroup%
- \LWR at FBcancel%
+ \LWR at hook@processingtags%
\LWR at origampersand{}nbsp;%
\endgroup%
}%
\renewrobustcmd*{\FBthinspace}{%
\begingroup%
- \LWR at FBcancel%
+ \LWR at hook@processingtags%
\LWR at origampersand\LWR at origpound{}x202f;% \,
\endgroup%
}%
\renewrobustcmd*{\FBguillspace}{%
\begingroup%
- \LWR at FBcancel%
+ \LWR at hook@processingtags%
\LWR at origampersand{}nbsp;% ~, for \og xyz \fg{}
\endgroup%
}%
\DeclareDocumentCommand{\FBmedkern}{}{%
\begingroup%
- \LWR at FBcancel%
+ \LWR at hook@processingtags%
\LWR at origampersand\LWR at origpound{}x202f;% \,
\endgroup%
}%
\DeclareDocumentCommand{\FBthickkern}{}{%
\begingroup%
- \LWR at FBcancel%
+ \LWR at hook@processingtags%
\LWR at origampersand{}nbsp;% ~
\endgroup%
}%
@@ -20674,12 +22426,13 @@
% Break ligatures and use upright apostrophes in \HTML\ tags.
%
% \cs{protect} is in case the tag appears in \TOC, \LOF, \LOT.
+% \changes{v0.85}{2020/04/30}{Fix: Added print macros for \pkg{fontspec}.}
% \begin{macrocode}
\newcommand*{\LWR at htmltagc}[1]{%
\LWR at traceinfo{LWR at htmltagc !\detokenize{#1}!}%
\begingroup%
-\LWR at FBcancel%
-\ifmmode\else\protect\LWR at origttfamily\fi%
+\LWR at hook@processingtags%
+\ifmmode\else\protect\LWR at print@normalfont\protect\LWR at origttfamily\fi%
\protect\LWR at origtextless%
\LWR at isolate{#1}%
\protect\LWR at origtextgreater%
@@ -20689,7 +22442,36 @@
% \end{macro}
%
+% \begin{macro}{\LWR at spanwarnformat} \marg{object}
+%
+% Warns if the given object is used inside a span.
+% \begin{macrocode}
+\newcommand*{\LWR at spanwarnformat}[1]{%
+ \ifnumcomp{\value{LWR at spandepth}}{>}{0}{%
+ \PackageWarning{lwarp}{%
+ A #1 is being used inside a span.\MessageBreak
+ Formatting may be lost,%
+ }%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\LWR at spanwarninvalid} \marg{object}
+%
+% Warns if the given object is used inside a span.
+% \begin{macrocode}
+\newcommand*{\LWR at spanwarninvalid}[1]{%
+ \ifnumcomp{\value{LWR at spandepth}}{>}{0}{%
+ \PackageWarning{lwarp}{%
+ A #1 is being used inside a span.\MessageBreak
+ This generates invalid HTML,%
+ }%
+ }{}%
+}
+% \end{macrocode}
+% \end{macro}
+
% \begin{environment}{LWR at nestspan} Disable \env{minipage}, \cs{parbox},
% and \HTML\ \element{div}s inside a \element{span}.
%
@@ -20706,6 +22488,8 @@
% \changes{v0.44}{2017/11/15}{Added \env{list} and \env{trivlist}.}
% \changes{v0.70}{2019/04/02}{Improved \env{minipage}, \cs{parbox} inside a span.}
% \changes{v0.73}{2019/06/23}{Fix: \env{quote}, \env{quotation} inside a span.}
+% \changes{v0.84}{2020/04/22}{Nullified \env{minipage}, \cs{parbox} inside a span.}
+% \changes{v0.84}{2020/04/22}{Issue warnings inside a span.}
%
% \begin{macrocode}
\newcommand*{\LWR at nestspanitem}{%
@@ -20723,11 +22507,21 @@
{% not in a lateximage
\LWR at traceinfo{LWR at nestspan: NOT inside a lateximage}%
\addtocounter{LWR at spandepth}{1}%
+% \end{macrocode}
+% Nullify several objects inside the span:
+% ^^A {\LWR at subhtmlelementclass{span}{inlineminipage}}%
+% ^^A {\LWR at htmltagc{/span}}%
+% \begin{macrocode}
\RenewDocumentEnvironment{minipage}{O{t} o O{t} m}%
- {\LWR at subhtmlelementclass{span}{inlineminipage}}%
- {\LWR at htmltagc{/span}}%
- \RenewDocumentEnvironment{BlockClass}{o m}{}{}%
- \renewcommand{\BlockClassSingle}[2]{##2}%
+ {\LWR at spanwarnformat{minipage or \protect\parbox}}%
+ {}%
+ \RenewDocumentEnvironment{BlockClass}{o m}%
+ {\LWR at spanwarnformat{multi-paragraph object}}%
+ {}%
+ \renewcommand{\BlockClassSingle}[2]{%
+ {\LWR at spanwarnformat{multi-paragraph object}}%
+ ##2%
+ }%
\renewcommand{\LWR at forcenewpage}{}%
\renewcommand{\LWR at liststart}{%
\let\item\LWR at nestspanitem%
@@ -20811,13 +22605,14 @@
% \begin{macro}{\LWR at htmlclosecomment}
% \changes{v0.47}{2018/01/25}{Add \cs{mbox} to prevent line breaks.}
% \changes{v0.63}{2018/11/30}{Fix: Break ligature for \pkg{luatexko}.}
+% \changes{v0.85}{2020/04/29}{Fix: Added print macros for \pkg{fontspec}.}
% \begin{macrocode}
\newcommand*{\LWR at htmlopencomment}{%
{%
% \LWR at traceinfo{LWR at htmlopencomment}%
\begingroup%
-\LWR at FBcancel%
-\ifmmode\else\protect\LWR at origttfamily\fi%
+\LWR at hook@processingtags%
+\ifmmode\else\protect\LWR at print@normalfont\protect\LWR at origttfamily\fi%
\LWR at print@mbox{\LWR at origtextless{}!-\/-}%
\endgroup%
}%
@@ -20827,8 +22622,8 @@
{%
% \LWR at traceinfo{LWR at htmlclosecomment}%
\begingroup%
-\LWR at FBcancel%
-\ifmmode\else\protect\LWR at origttfamily\fi%
+\LWR at hook@processingtags%
+\ifmmode\else\protect\LWR at print@normalfont\protect\LWR at origttfamily\fi%
\LWR at print@mbox{-\/-\LWR at origtextgreater}%
\endgroup%
}%
@@ -20840,15 +22635,21 @@
% \begin{macro}{\LWR at htmlcomment} \marg{comment}
%
% \changes{v0.28}{2017/04/13}{Breaks ligatures in \HTML\ comments.}
-%
+% \changes{v0.85}{2020/04/29}{Fix: Added print macros for \pkg{fontspec}.}
+% \changes{v0.893}{2020/10/16}{Disabled in math mode.}
% \begin{macrocode}
\newcommand{\LWR at htmlcomment}[1]{%
-\LWR at htmlopencomment{}%
-{%
-\LWR at origttfamily% break ligatures
-#1%
-}%
-\LWR at htmlclosecomment{}}
+\ifmmode%
+\else%
+ \LWR at htmlopencomment{}%
+ {%
+ \LWR at print@normalfont%
+ \LWR at origttfamily% break ligatures
+ #1%
+ }%
+ \LWR at htmlclosecomment{}%
+\fi%
+}
% \end{macrocode}
% \end{macro}
%
@@ -20874,6 +22675,7 @@
% \subsection{Div class and element class}
+
% \begin{macro}{\LWR at subhtmlelementclass} \marg{element} \oarg{style} \marg{class}
%
% Factored and reused in several places.
@@ -20887,21 +22689,22 @@
% \changes{v0.34}{2017/08/02}{Moved optional argument in front of mandatory.}
% \changes{v0.63}{2018/11/24}{Fix for \pkg{xeCJK}.}
% \changes{v0.66}{2019/02/02}{Improved \HTML\ formatting.}
+% \changes{v0.892}{2020/10/03}{Ignore empty class.}
%
% \begin{macrocode}
\NewDocumentCommand{\LWR at subhtmlelementclass}{m O{} m}{%
\LWR at traceinfo{LWR at subhtmlelementclass !#1!#2!#3!}%
\ifblank{#2}%
-{% empty option
+{% empty style
\LWR at htmltag{%
- #1 % space
- class=\textquotedbl#3\textquotedbl\ % space
+ #1%
+ \ifblank{#3}{}{ class=\textquotedbl#3\textquotedbl\ }% spaces
}%
}%
-{% non-empty option
+{% non-empty style
\LWR at htmltag{%
#1\LWR at indentHTML%
- class=\textquotedbl#3\textquotedbl\LWR at indentHTML%
+ \ifblank{#3}{}{class=\textquotedbl#3\textquotedbl\LWR at indentHTML}%
style=\textquotedbl#2\textquotedbl\LWR at orignewline%
}%
}%
@@ -21043,12 +22846,12 @@
% \codehtml
% \begin{macrocode}
\begin{warpHTML}
+
\NewDocumentEnvironment{LWR at print@BlockClass}{o m}{}{}%
+
\NewDocumentEnvironment{LWR at HTML@BlockClass}{o m}%
-{%
- \LWR at htmldivclass[#1]{#2}%
-}
-{\LWR at htmldivclassend{#2}}
+ {\LWR at htmldivclass[#1]{#2}}
+ {\LWR at htmldivclassend{#2}}
\LWR at formattedenv{BlockClass}
\end{warpHTML}
@@ -21073,7 +22876,7 @@
% \begin{macrocode}
\begin{warpHTML}
\newcommand{\LWR at HTML@BlockClassSingle}[2]{%
-\LWR at htmlelementclassline{div}{#1}{#2}%
+ \LWR at htmlelementclassline{div}{#1}{#2}%
}
\LWR at formatted{BlockClassSingle}
@@ -21497,14 +23300,18 @@
% \begin{macro}{\LWR at startpars}
% Begin handling \HTML\ paragraphs.
% This allows an \HTML\ paragraph to start, but one has not yet begun.
+% \changes{v0.84}{2020/04/14}{Ignore if in \env{lateximage}.}
% \begin{macrocode}
\newcommand*{\LWR at startpars}%
{%
% \LWR at traceinfo{LWR at startpars}%
% \end{macrocode}
-% Ignore if inside a span:
+% Ignore if inside a \env{lateximage} or \element{span}:
% \begin{macrocode}
-\ifnumcomp{\value{LWR at spandepth}}{>}{0}%
+\ifboolexpr{
+ test {\ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}} or
+ test {\ifnumcomp{\value{LWR at spandepth}}{>}{0}}
+}%
{}%
{%
% \end{macrocode}
@@ -21550,13 +23357,17 @@
% Any currently open \HTML\ paragraph is closed, and no more will be opened.
%
% \changes{v0.36}{2017/08/15}{Extra \protect\HTML\ source space after paragraphs.}
+% \changes{v0.84}{2020/04/14}{Ignore if in \env{lateximage}.}
% \begin{macrocode}
\newcommand*{\LWR at stoppars}%
{%
% \end{macrocode}
-% Ignore if inside a span:
+% Ignore if inside a \env{lateximage} or \element{span}:
% \begin{macrocode}
-\ifnumcomp{\value{LWR at spandepth}}{>}{0}%
+\ifboolexpr{
+ test {\ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}} or
+ test {\ifnumcomp{\value{LWR at spandepth}}{>}{0}}
+}%
{}%
{%
% \end{macrocode}
@@ -21635,14 +23446,12 @@
% \begin{macrocode}
\AtBeginDocument{
-\def\@afterindentfalse{\let\if at afterindent\iffalse}
-\@afterindentfalse
+ \def\@afterindentfalse{\let\if at afterindent\iffalse}
+ \@afterindentfalse
}
\let\LWR at afterindent@syntaxhighlight\fi% syntax highlighting
% \end{macrocode}
-
-
% \begin{macrocode}
\end{warpHTML}
% \end{macrocode}
@@ -21658,8 +23467,10 @@
% In the following, catcode is manually changed back and forth
% without groups, since new macros are being defined which must
% not be contained within the groups.
+% \changes{v0.84}{2020/04/24}{Added \cs{FirstPageBottom}.}
% \begin{macrocode}
\newcommand{\LWR at firstpagetop}{} % for the home page alone
+\newcommand{\LWR at firstpagebottom}{} % for the home page alone
\newcommand{\LWR at pagetop}{} % for all other pages
\newcommand{\LWR at pagebottom}{}
% \end{macrocode}
@@ -21678,7 +23489,20 @@
%
% \end{macro}
%
+% \begin{macro}{\HTMLFirstPageBottom} \marg{text and logos}
%
+% \changes{v0.84}{2020/04/24}{Added \cs{FirstPageBottom}.}
+%
+% \begin{macrocode}
+\newcommand{\HTMLFirstPageBottom}[1]{%
+ \renewcommand{\LWR at firstpagebottom}{#1}%
+}
+% \end{macrocode}
+%
+%
+% \end{macro}
+%
+%
% \begin{macro}{\HTMLPageTop} \marg{text and logos}
%
% \changes{v0.30}{2017/04/28}{Renamed from \cs{SetPageTop}.}
@@ -21752,7 +23576,7 @@
-% \section{MathJax script}
+% \section{\brand{MathJax} script}
% \codehtml
% \begin{macrocode}
@@ -21761,11 +23585,11 @@
% \begin{macro}{\LWR at mathjaxfilename}
% \DescribeDefault{\filenm{lwarp_mathjax.txt}}
-% The MathJax script filename to use.
+% The \brand{MathJax} script filename to use.
% This file is copied into the head of each \HTML\ page.
% This may be changed mid-document using \cs{MathJaxFilename},
-% allowing the use of a custom MathJax script, such as for a local repository,
-% or different MathJax script files to be used for different sections of the document.
+% allowing the use of a custom \brand{MathJax} script, such as for a local repository,
+% or different \brand{MathJax} script files to be used for different sections of the document.
%
% \changes{v0.70}{2019/03/24}{Added.}
% \begin{macrocode}
@@ -21774,7 +23598,7 @@
% \end{macro}
% \begin{macro}{\MathJaxFilename} \marg{filename} \qquad
-% Assigns the MathJax script file to be used by the following \HTML\ pages.
+% Assigns the \brand{MathJax} script file to be used by the following \HTML\ pages.
%
% \changes{v0.70}{2019/03/24}{Added.}
% \begin{macrocode}
@@ -22198,7 +24022,7 @@
% \changes{v0.48}{2018/02/11}{Removed \cs{itshape}.}
% \begin{macrocode}
\AtBeginDocument{
-\def\thempfootnote{\@alph\c at mpfootnote}
+ \def\thempfootnote{\@alph\c at mpfootnote}
}
% \end{macrocode}
% \end{macro}
@@ -22440,6 +24264,7 @@
\begin{warpHTML}
% \end{macrocode}
+
% \begin{macro}{\LWR at thisfilename}
% The currently-active filename or number.
% At first, this is the homepage.
@@ -22513,7 +24338,28 @@
% \end{macro}
+% \begin{macro}{\LWR at avoiddupfilenames} \qquad
+% Instructions for how to avoid duplicate filenames.
+% This is used in a warning in \cs{LWR at filenamenoblanks},
+% and in an error in \cs{LWR at newhtmlfile}.
+% \begin{macrocode}
+\newcommand*{\LWR at avoiddupfilenames}{%
+ To avoid duplicate filenames, use the optional\MessageBreak
+ short Table of Contents entry:\MessageBreak
+ \space\space\protect\section[Unique name, no math]{Name with math}%
+ \MessageBreak
+ or use \protect\texorpdfstring, from the hyperref package:\MessageBreak
+ \space\space%
+ \protect\section{\MessageBreak
+ \space\space\space\space\protect\texorpdfstring\MessageBreak
+ \space\space\space\space\space\space%
+ {Name with math}{Unique name, no math}\MessageBreak
+ \space\space}
+}
+% \end{macrocode}
+% \end{macro}
+
% \begin{macro}{\LWR at filenamenoblanks} \marg{filename}
%
% Convert blanks into dashes, removes short words,
@@ -22539,6 +24385,7 @@
% \begin{macrocode}
\edef\LWR at thisnewfilename{#1}%
% \end{macrocode}
+%
% Replaces common macros with hyphens.
% (\cs{\&} is done by \cs{LWR at nullfonts}.)
% \begin{macrocode}
@@ -22555,7 +24402,32 @@
% \begin{macrocode}
\edef\LWR at thisnewfilename{\detokenize\expandafter{\LWR at thisnewfilename}}%
% \end{macrocode}
+%
+% Warn if there is dollar math in the section name:
% \begin{macrocode}
+\ifbool{FileSectionNames}{%
+ \IfSubStr{\LWR at thisnewfilename}{\LWRdollar}{%
+ \PackageWarning{lwarp}
+ {%
+ This section name:\MessageBreak
+ \space\space``\detokenize\expandafter{#1}''\MessageBreak
+ at the line number listed below,\MessageBreak
+ is using $dollar-delimited math$,
+ which generates\MessageBreak
+ complicated file names. It is better to use\MessageBreak
+ \space\space%
+ \protect\section{Name with \protect\(parenthesis math\protect\)}%
+ \MessageBreak
+ The math then will be removed from the file name.\MessageBreak
+ \MessageBreak
+ \LWR at avoiddupfilenames%
+ \MessageBreak
+ This section is found before or%
+ }
+ }{}%
+}{}
+% \end{macrocode}
+% \begin{macrocode}
\LWR at traceinfo{LWR at filenamenoblanks edef: !\LWR at thisnewfilename!}%
\fullexpandarg%
% \end{macrocode}
@@ -22564,12 +24436,16 @@
\LWR at simplifyname*{ }
% \end{macrocode}
% Convert punctutation into hyphens:
+% \changes{v0.86}{2020/05/04}{Fix: \filenm{*}, \filenm{(}, \filenm{)}, \filenm{.} in filename.}
% \begin{macrocode}
+\LWR at simplifyname*{*}
+\LWR at simplifyname*{(}
+\LWR at simplifyname*{)}
+\LWR at simplifyname*{.}
\LWR at simplifyname*{!}
\LWR at simplifyname*{,}
\LWR at simplifyname*{'}
\LWR at simplifyname*{+}
-\LWR at simplifyname*{,}
\LWR at simplifyname*{/}
\LWR at simplifyname*{:}
\LWR at simplifyname*{;}
@@ -22631,28 +24507,31 @@
% \begin{macrocode}
\LWR at simplifycustom%
% \end{macrocode}
-% Convert multiple hyphens:
-% \begin{macrocode}
-\LWR at simplifyname*{-----}
-\LWR at simplifyname*{----}
-\LWR at simplifyname*{---}
-\LWR at simplifyname*{--}
-% \end{macrocode}
+%
% If pdf\LaTeX\ and not \optn{utf8} encoding, don't try to convert emdash, endash:
% \changes{v0.52}{2018/04/01}{Fix: \cs{FileDepth} with non-utf8 encoding.}
+% \changes{v0.84}{2020/04/21}{Fix: Dashes in filename.}
% \begin{macrocode}
\ifPDFTeX% pdflatex or dvi latex
\ifdefstring{\inputencodingname}{utf8}{%
-\LWR at simplifyname*{—}
+ \LWR at simplifyname*{—}
% emdash
-\LWR at simplifyname*{–}
+ \LWR at simplifyname*{–}
% endash
}{}%
\else% not PDFTeX
-\LWR at simplifyname*{—}
-\LWR at simplifyname*{–}
+ \LWR at simplifyname*{—}
+ \LWR at simplifyname*{–}
\fi%
% \end{macrocode}
+%
+% Convert multiple hyphens:
+% \begin{macrocode}
+\LWR at simplifyname*{-----}
+\LWR at simplifyname*{----}
+\LWR at simplifyname*{---}
+\LWR at simplifyname*{--}
+% \end{macrocode}
% If starts with a dash, remove the leading dash:
% \begin{macrocode}
\IfBeginWith{\LWR at thisnewfilename}{\detokenize{-}}{%
@@ -22726,7 +24605,7 @@
%
% Replaces strings inside \cs{tmpb}.
%
-% Modified from the original by \textsc{Petr Olsak}, from the \pkg{opmac} package.
+% Modified from the original, by \textsc{Petr Olsak}, from the \pkg{opmac} package.
%
% \changes{v0.81}{2020/02/24}{Added.}
% \begin{macrocode}
@@ -22752,7 +24631,17 @@
% \end{macrocode}
% \end{macro}
+% \DescribeBoolean{LWR at MathJax@silentquotes}
+% If true, double quotes (\cs{"} and |"|) are removed (used for \pkg{mathspec}).
+% This unfortunately includes double quotes used inside \cs{text} with \brand{MathJax}.
+% If false, double quotes are escaped.
+% \begin{macrocode}
+\newbool{LWR at MathJax@silentquotes}
+\boolfalse{LWR at MathJax@silentquotes}
+% \end{macrocode}
+
+
% \begin{macro}{\LWR at subHTMLsanitize}
%
% \cs{LWR at strresult} must first be set by \cs{LWR at HTMLsanitize},
@@ -22775,11 +24664,21 @@
\LWR at replacestrings{<}{<}%
\LWR at replacestrings{>}{>}%
% \end{macrocode}
-% The double quote occasionally causes problems.
+% The quotes occasionally causes problems.
+% For \pkg{mathspec}, also allow neutralization of \cs{"} and the |"| character.
+% \changes{v0.891}{2020/09/09}{Neutralized single quotes.}
+% \changes{v0.893}{2020/11/22}{Optionally neutralized single quotes.}
% \begin{macrocode}
- \LWR at replacestrings{"}{"}%
+ \ifbool{LWR at MathJax@silentquotes}
+ {%
+ \expandafter\LWR at replacestrings\expandafter{\LWRbackslash"}{}%
+ \LWR at replacestrings{"}{}%
+ }%
+ {\LWR at replacestrings{"}{"}}%
+ \LWR at replacestrings{'}{'}%
+ \LWR at replacestrings{`}{`}%
% \end{macrocode}
-% MathJax allows expressions to be defined with \cs{newcommand}.
+% \brand{MathJax} allows expressions to be defined with \cs{newcommand}.
% These expressions would appear with |##| for each argument,
% and each must be changed to a single |#|.
% This must be done after all the above changes.
@@ -22803,10 +24702,8 @@
% and fully expand the strings:
% \begin{macrocode}
\begingroup%
- \LWR at FBcancel%
- \fullexpandarg%
- \protect\StrSubstitute{\detokenize{#1}}%
- {\detokenize{\&}}{\detokenize{&}}[\LWR at strresult]%
+ \LWR at hook@processingtags%
+ \edef\LWR at strresult{\detokenize{#1}}%
\LWR at subHTMLsanitize%
\LWR at strresult%
\endgroup%
@@ -22818,11 +24715,25 @@
% \begin{macro}{\LWR at HTMLsanitizeexpand} \marg{text}
%
% This version expands the argument before sanitizing it.
+% This is only used for adding math to \brand{MathJax} expressions or
+% \env{lateximage} \attribute{alt} tags.
%
% \changes{v0.36}{2017/08/16}{Fix for \pkg{babel-french}.}
% \changes{v0.51}{2018/03/07}{Fix: Escapes double quotes.}
-% \changes{v0.79}{2020/01/27}{Fix: \cs{\&}.}
+% ^^A \changes{v0.79}{2020/01/27}{Fix: \cs{\&}.}
+% \changes{v0.89}{2020/08/08}{Fix: Nested \brand{MathJax} environments.}
+% ^^A *88*
% \begin{macrocode}
+\edef\LWR at beginspaceleftbrace{begin \LWRleftbrace}
+\edef\LWR at beginspaceleftbrace{\detokenize\expandafter{\LWR at beginspaceleftbrace}}
+\edef\LWR at beginleftbrace{begin\LWRleftbrace}
+\edef\LWR at beginleftbrace{\detokenize\expandafter{\LWR at beginleftbrace}}
+
+\edef\LWR at endspacerightbrace{end \LWRrightbrace}
+\edef\LWR at endspacerightbrace{\detokenize\expandafter{\LWR at endspacerightbrace}}
+\edef\LWR at endrightbrace{end\LWRrightbrace}
+\edef\LWR at endrightbrace{\detokenize\expandafter{\LWR at endrightbrace}}
+
\newrobustcmd{\LWR at HTMLsanitizeexpand}[1]{%
% \end{macrocode}
% Cancel French \pkg{babel} character handling,
@@ -22829,14 +24740,25 @@
% and fully expand the strings:
% \begin{macrocode}
\begingroup%
- \LWR at FBcancel%
- \fullexpandarg%
+ \LWR at hook@processingtags%
% \end{macrocode}
% The difference between this and \cs{LWR at HTMLsanitize} (without ``expand'')
% is the following \cs{expandafter}:
% \begin{macrocode}
- \protect\StrSubstitute{\detokenize\expandafter{#1}}%
- {\detokenize{\&}}{\detokenize{&}}[\LWR at strresult]%
+ \edef\LWR at strresult{\detokenize\expandafter{#1}}%
+% \end{macrocode}
+% The math expression may includes spaces between tokens,
+% but \brand{MathJax} does not want a space between \cs{begin} or \cs{end}
+% and the following brace.
+% This space is removed here.
+% ^^A *88*
+% \begin{macrocode}
+ \protect\StrSubstitute{\LWR at strresult}%
+ {\LWR at beginspaceleftbrace}{\LWR at beginleftbrace}[\LWR at strresult]%
+ \protect\StrSubstitute{\LWR at strresult}%
+ {\LWR at endspacerightbrace}{\LWR at endrightbrace}[\LWR at strresult]%
+% \end{macrocode}
+% \begin{macrocode}
\LWR at subHTMLsanitize%
\LWR at strresult%
\endgroup%
@@ -22869,10 +24791,8 @@
% \begin{macrocode}
\newcommand*{\LWR at subcustomizedmathjax}[1]{%
\begingroup%
- \LWR at FBcancel%
- \fullexpandarg%
- \protect\StrSubstitute{\detokenize{#1}}%
- {\detokenize{\&}}{\detokenize{&}}[\LWR at strresult]%
+ \LWR at hook@processingtags%
+ \edef\LWR at strresult{\detokenize{#1}}%
\LWR at subHTMLsanitize%
\xdef\LWR at customizedMathJax{%
\LWR at customizedMathJax%
@@ -22898,8 +24818,8 @@
\newcommand*{\CustomizeMathJax}[1]{%
\ifbool{LWR at warnedcustomizemathjax}{}{%
\StrLen{\detokenize{#1}}[\LWR at tempone]%
- \ifnumgreater{\LWR at tempone}{200}{%
- \AtBeginDocument{%
+ \ifnumgreater{\LWR at tempone}{350}{%
+ \AtEndDocument{%
\PackageWarningNoLine{lwarp}{%
To ensure faster MathJax compilation, place each\MessageBreak
custom macro in its own \protect\CustomizeMathJax.\MessageBreak
@@ -22931,7 +24851,8 @@
% \end{macrocode}
% \end{macro}
-%
+
+% ^^A *mathjax customizations
% Default customizations:
% \margintag{defaults}
%
@@ -22945,6 +24866,8 @@
% \changes{v0.51}{2018/03/18}{\brand{MathJax}: Nullifies \cs{ensuremath}.}
% \changes{v0.57}{2018/05/24}{\brand{MathJax}: Supports \cs{footnote}, \cs{footnotemark}.}
% \changes{v0.79}{2020/01/24}{\brand{MathJax}: Additional macros.}
+% \changes{v0.893}{2020/10/14}{\brand{MathJax}: Added \cs{mathnormal}.}
+% \changes{v0.894}{2020/12/22}{\brand{MathJax}: Added \cs{arabic}, \cs{number}, \cs{noalign}.}
%
% For footnotes, \cs{footnotename} is used in most cases, however
% for \env{equation} the footnote is picked up from \LaTeX in \cs{LWR at doendequation}.
@@ -22975,11 +24898,18 @@
\CustomizeMathJax{\def\LWRfootnote{1}}
\CustomizeMathJax{\newcommand{\footnote}[2][\LWRfootnote]{{}^{\mathrm{#1}}}}
\CustomizeMathJax{\newcommand{\footnotemark}[1][\LWRfootnote]{{}^{\mathrm{#1}}}}
-\end{warpMathJax}
% \end{macrocode}
-
+%
+% \cs{hspace} is modified to accept and ignore a star:
+% \changes{v0.894}{2020/12/21}{\brand{MathJax}: Accept starred \cs{hspace}.}
% \begin{macrocode}
-\begin{warpMathJax}
+\CustomizeMathJax{\let\LWRorighspace\hspace}
+\CustomizeMathJax{\renewcommand{\hspace}{\ifstar\LWRorighspace\LWRorighspace}}
+% \end{macrocode}
+%
+% Various other customizations:
+% \begin{macrocode}
+\CustomizeMathJax{\newcommand{\mathnormal}[1]{{#1}}}
\CustomizeMathJax{\newcommand\ensuremath[1]{#1}}
\CustomizeMathJax{% absorb two optional arguments
\newcommand{\LWRframebox}[2][]{\fbox{#2}}
@@ -22989,9 +24919,28 @@
\CustomizeMathJax{\newcommand{\addtolength}[2]{}}
\CustomizeMathJax{\newcommand{\setcounter}[2]{}}
\CustomizeMathJax{\newcommand{\addtocounter}[2]{}}
+\CustomizeMathJax{\newcommand{\arabic}[1]{}}
+\CustomizeMathJax{\newcommand{\number}[1]{}}
+\CustomizeMathJax{\newcommand{\noalign}[1]{\text{#1}\notag \\}}
\CustomizeMathJax{\newcommand{\cline}[1]{}}
\CustomizeMathJax{\newcommand{\directlua}[1]{\text{(directlua)}}}
\CustomizeMathJax{\newcommand{\luatexdirectlua}[1]{\text{(directlua)}}}
+% \end{macrocode}
+%
+% \cs{protect}, \cs{mathchar}, and \cs{delimiter} are silently discarded; and
+% \cs{mathcode} and \cs{delcode} are ignored.
+% \changes{v0.89}{2020/07/27}{mathjax=\brand{MathJax}: Added \cs{protect}, and
+% \cs{mathcode} and related.}
+% \begin{macrocode}
+\CustomizeMathJax{\newcommand{\protect}{}}
+\CustomizeMathJax{\def\LWRabsorbnumber#1 {}}
+\CustomizeMathJax{\def\LWRabsorbquotenumber"#1 {}}
+\CustomizeMathJax{\newcommand{\LWRabsorboption}[1][]{}}
+\CustomizeMathJax{\newcommand{\LWRabsorbtwooptions}[1][]{\LWRabsorboption}}
+\CustomizeMathJax{\def\mathchar{\ifnextchar"\LWRabsorbquotenumber\LWRabsorbnumber}}
+\CustomizeMathJax{\def\mathcode#1={\mathchar}}
+\CustomizeMathJax{\let\delcode\mathcode}
+\CustomizeMathJax{\let\delimiter\mathchar}
\end{warpMathJax}
\begin{warpHTML}% due to warpMathJax
@@ -22999,7 +24948,7 @@
% \begin{macro}{\LWR at customizeMathJax}
-% Prints MathJax commands to the \HTML\ output.
+% Prints \brand{MathJax} commands to the \HTML\ output.
%
% \changes{v0.79}{2020/01/28}{MathJax: Hide definitions.}
% \begin{macrocode}
@@ -23011,16 +24960,19 @@
\LWR at stoppars
\LWR at htmlcomment{MathJax customizations:}
-\typeout{---}
-\typeout{Package lwarp:}
-\typeout{Processing MathJax customizations. If this takes too long,}
-\typeout{see the Lwarp manual regarding customizing MathJax.}
\begin{BlockClass}{hidden}
\LWR at stoppars
-\LWR at customizedMathJax
+% \end{macrocode}
+%
+% Avoid ligatures while printing \brand{MathJax} customizations:
+% \changes{v0.89}{2020/08/02}{Print \brand{MathJax} customizations with typewriter font.}
+% \begin{macrocode}
+{
+ \LWR at print@ttfamily
+ \LWR at customizedMathJax
+}
\LWR at startpars
\end{BlockClass}
-\typeout{---}
\LWR at startpars
}{}
@@ -23122,6 +25074,34 @@
\begin{warpHTML}
% \end{macrocode}
+
+% \begin{macro}{\LWR at createfooter} If specified, create the first or later web page footer.
+% \changes{v0.73}{2019/06/23}{Fix: Empty header/footer.}
+% \changes{v0.84}{2020/04/24}{Added \cs{FirstPageBottom}.}
+% \begin{macrocode}
+\newcommand*{\LWR at createfooter}{%
+ \ifnumless{\value{LWR at htmlseqfilenumber}}{1}{%
+ \ifdefempty{\LWR at firstpagebottom}{}{%
+ \LWR at htmlelement{footer}
+
+ \LWR at firstpagebottom
+
+ \LWR at htmlelementend{footer}
+ }%
+ }{%
+ \ifdefempty{\LWR at pagebottom}{}{%
+ \LWR at htmlelement{footer}
+
+ \LWR at pagebottom
+
+ \LWR at htmlelementend{footer}
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+
+
% \begin{macro}{\LWR at newhtmlfile} \marg{section name}
% \changes{v0.18}{2016/04/23}{side\TOC\ after title, improving responsive design.}
% \changes{v0.21}{2017/02/22}{Skip title if not given.}
@@ -23151,21 +25131,8 @@
%
% No footer between files if \EPUB:
% \begin{macrocode}
-\ifbool{FormatEPUB}
-{}
-{
+\ifbool{FormatEPUB}{}{\LWR at createfooter}
% \end{macrocode}
-% \changes{v0.73}{2019/06/23}{Fix: Empty header/footer.}
-% \begin{macrocode}
- \ifdefempty{\LWR at pagebottom}{}{%
- \LWR at htmlelement{footer}
-
- \LWR at pagebottom
-
- \LWR at htmlelementend{footer}
- }
-}
-% \end{macrocode}
%
%
% No bottom navigation if are finishing the home page or
@@ -23182,9 +25149,12 @@
\LWR at htmltag{/body}\LWR at orignewline
\LWR at htmltag{/html}\LWR at orignewline
\LWR at traceinfo{LWR at newhtmlfile: about to LWR at orignewpage}
-\LWR at orignewpage
-
+\LWR at maybe@orignewpage
+% \end{macrocode}
+% \changes{v0.84}{2020/04/24}{Added prev/next links.}
+% \begin{macrocode}
\addtocounter{LWR at htmlfilenumber}{1}%
+\addtocounter{LWR at htmlseqfilenumber}{1}%
% \end{macrocode}
%
%
@@ -23221,23 +25191,25 @@
% \end{macrocode}
% If the filename is not unique, create an error.
% \begin{macrocode}
- \PackageError{lwarp}
+ \PackageError{lwarp}%
{%
- Section name\MessageBreak
+ The section name:\MessageBreak
``#1'',\MessageBreak
at the line number listed below,\MessageBreak
generates the filename\MessageBreak
``\LWR at thisfilename'',\MessageBreak
- which appears to be a duplicate.\MessageBreak
- There is a previous section with an\MessageBreak
- identical or similar name%
- }
+ which appears to be a duplicate. There is a\MessageBreak
+ previous section with an identical or similar name.\MessageBreak
+ While generating file names, Lwarp sanitizes math,\MessageBreak
+ most symbols, and a few common short words,\MessageBreak
+ and this may cause a conflict.\MessageBreak
+ Enter 'H' for possible solutions%
+ }%
{%
- Lwarp sanitizes most symbols and a few common short words
- when generating file names, and this may cause a conflict.
- }
- }
-}
+ \LWR at avoiddupfilenames%
+ }%
+ }%
+}%
% \end{macrocode}
% If using file numbers instead of names, the name is set to the next file number.
% \begin{macrocode}
@@ -23250,7 +25222,7 @@
% Uses pipe-separated fields for |split_html.gawk|.
% Uses monospaced font with ligatures disabled for everything except the title.
%
-% \changes{v0.50}{2018/02/20}{Fix: SVG math in a section name.}
+% \changes{v0.50}{2018/02/20}{Fix: \SVG\ math in a section name.}
% \begin{macrocode}
\LWR at traceinfo{LWR at newhtmlfile: about to print start file}%
% \end{macrocode}
@@ -23278,7 +25250,7 @@
% \end{macrocode}
%
-% Track the page numbers:
+% Track the \PDF\ page numbers of the \HTML\ output:
% \changes{v0.48}{2018/02/11}{Fix: \TOC, \LOF, \LOT\ links.}
% \begin{macrocode}
\setcounter{LWR at latestautopage}{\value{page}}%
@@ -23332,13 +25304,20 @@
%
% Start of the \element{textbody}:
% \changes{v0.65}{2018/12/18}{Improved \CSS\ for page layout.}
+% \changes{v0.84}{2020/04/24}{Added prev/next links.}
% \begin{macrocode}
\LWR at htmlelementclass{div}{bodycontainer}
\LWR at htmlelementclass{section}{textbody}
-
% \end{macrocode}
%
+% Not yet found a new section in this file.
+% Once one is found, a label will be placed for
+% previous/next links.
+% \begin{macrocode}
+\boolfalse{LWR at setseqfilelabel}
+% \end{macrocode}
%
+%
% Print title only if there is one.
% Skip if formatting for an \EPUB\ or word processor:
% \begin{macrocode}
@@ -23396,6 +25375,7 @@
% \prog{pdflatex} to generate characters and \prog{pdftotext} to read them.
% If extra symbols appear in the text,
% \trouble[accents in filenames]{filename>accents}
+% \trouble{accents>file names}
% \trouble{sectioning>accents}
% \gindex{filename>accent in}
% \gindex{accents>in section \& file names}
@@ -23402,14 +25382,19 @@
% it may be that \prog{pdflatex} is actually producing a symbol over or under a
% character, resulting in \prog{pdftotext} picking up the accent symbol separately.
%
-% \XeLaTeX{} and \LuaLaTeX{} directly support accented section and file names.
+% \XeLaTeX{} and \LuaLaTeX{} directly support accented section and file names,
% \gindex{accents>in section \& file names}
% \gindex{Unicode>file \& section names}
% \gindex{UTF-8>file \& section names}
% \gindex{Xe\LaTeX>file \& section names}
% \gindex{Lua\LaTeX>file \& section names}
+% but it may be necessary to use \LaTeX\ accents instead of
+% native Unicode accents. \LaTeX\ accents will have the accents stripped
+% when creating file names, whereas using Unicode accents will create filenames
+% which include accents, which may cause issues with some operating systems.
%
%
+%
% \codehtml
% \begin{macrocode}
\begin{warpHTML}
@@ -23541,6 +25526,10 @@
% \begin{macro}{\LWR at createautosec} \marg{section type}
%
% Create an autosection tag.
+%
+% The use of \cs{textquotedbl} instead of |"| provides improved
+% compatibility with \pkg{xeCJK}.
+%
% \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
% \changes{v0.63}{2018/11/24}{Fix for \pkg{xeCJK}.}
% \begin{macrocode}
@@ -23663,10 +25652,23 @@
%
%
%
+% \begin{macro}{\LWR at printchaptername}
+% Print \cs{chaptername} in most cases,
+% but this is nullified for \pkg{ctexbook}, \pkg{komascript}, \pkg{ujt*} classes.
+% \changes{v0.88}{2020/06/20}{Conditionally print \cs{chaptername}.}
+% \begin{macrocode}
+\newcommand*{\LWR at printchaptername}{%
+ \ifdefvoid{\chaptername}{}{\chaptername~}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
% \DescribeCounter{LWR at currentautosec} Records the page number when the section
-% was created. If a math expression is included in the section name,
-% and SVG math is used, the corresponding \env{lateximage} will cause the
-% page number to change by the time the following autosec label is created.
+% was created. (If a math expression is included in the section name,
+% and \SVG\ math is used, the corresponding \env{lateximage} will cause the
+% page number to change by the time the following autosec label is created,
+% thus the initial page number is recorded here.)
% \changes{v0.43}{2017/11/01}{\ctr{LWR at currentautosec}: Added.}
% \changes{v0.66}{2019/01/28}{\ctr{LWR at currentautosec}: Fix for \LOF, \LOT float in home page.}
% \begin{macrocode}
@@ -23689,6 +25691,13 @@
\IfValueTF{#2}%
{\LWR at traceinfo{LWR at section: starting #4 #2}}%
{\LWR at traceinfo{LWR at section: starting #4 #3}}%
+% \end{macrocode}
+% Warn if starting a section inside a \element{span}:
+% \changes{v0.84}{2020/04/22}{Warn inside a \element{span}.}
+% \begin{macrocode}
+ \LWR at spanwarninvalid{section}%
+% \end{macrocode}
+% \begin{macrocode}
\LWR at maybeprintpendingfootnotes{\csuse{LWR at depth#4}}%
\LWR at stoppars%
\LWR at startnewdepth{#4}%
@@ -23757,10 +25766,11 @@
% Generate a new \LaTeX\ page so that \TOC\ and index page number points to the section:
% \begin{macrocode}
\LWR at traceinfo{LWR at section: not a new HTML file, about to LWR at orignewpage}%
- \LWR at orignewpage%
+ \LWR at maybe@orignewpage%
}% not new file
% \end{macrocode}
+%
% Remember this section's name for \cs{nameref}:
% \begin{macrocode}
\IfValueT{#3}{%
@@ -23768,6 +25778,7 @@
\IfValueTF{#2}{\LWR at setlatestname{#2}}{\LWR at setlatestname{#3}}%
}%
% \end{macrocode}
+%
% Print an opening comment with the level and the name;
% ex: ``section'' ``Introduction''
% Footnotes may be used in section names, which would also appear in the
@@ -23791,6 +25802,7 @@
\endgroup%
}{}
% \end{macrocode}
+%
% For inline sections paragraph and subparagraph, start a new paragraph now:
% \begin{macrocode}
\ifthenelse{%
@@ -23799,6 +25811,7 @@
{\LWR at startpars}%
{}%
% \end{macrocode}
+%
% Create the opening tag with an autosec:
% \begin{macrocode}
\LWR at traceinfo{LWR at section: about to LWR at createautosec}%
@@ -23808,6 +25821,7 @@
% \begin{macrocode}
\setcounter{LWR at currentautosec}{\value{page}}%
% \end{macrocode}
+%
% Check if starred:
% \begin{macrocode}
\IfBooleanTF{#1}%
@@ -23814,6 +25828,7 @@
{%
\LWR at traceinfo{LWR at section: starred}%
% \end{macrocode}
+%
% Starred, but also forcing a \TOC\ entry, so
% add unnumbered \TOC\ name or regular name:
% \begin{macrocode}
@@ -23826,10 +25841,12 @@
{}%
}% starred
% \end{macrocode}
+%
% Not starred, so step counter and add to \TOC:
% \begin{macrocode}
{% not starred
% \end{macrocode}
+%
% Only add a numbered \TOC\ entry if section number is not too deep:
% \begin{macrocode}
\ifthenelse{%
@@ -23837,6 +25854,7 @@
}%
{% if secnumdepth
% \end{macrocode}
+%
% If in the main matter, step the counter and add the \TOC\ entry.
% For |article| class, \pkg{lwarp} assumes that all is mainmatter.
% \begin{macrocode}
@@ -23846,6 +25864,7 @@
\LWR at traceinfo{LWR at section: yes mainmatter}%
\refstepcounter{#4}%
% \end{macrocode}
+%
% Add main matter numbered \TOC\ entry with the \TOC\ name or the regular name:
% \changes{v0.64}{2018/12/07}{Support for \pkg{ujarticle and related.}}
% \begin{macrocode}
@@ -23865,6 +25884,7 @@
\LWR at traceinfo{LWR at section: finished addcontentsline}%
}% end of if main matter
% \end{macrocode}
+%
% If not main matter, add unnumbered \TOC\ name or regular name:
% \begin{macrocode}
{% not main matter
@@ -23875,6 +25895,7 @@
}% end of not main matter
}% end of secnumdepth
% \end{macrocode}
+%
% Deeper than secnumdepth, so add an unnumbered \TOC\ entry:
% \begin{macrocode}
{%
@@ -23883,6 +25904,7 @@
}%
}%
% \end{macrocode}
+%
% For part, print ``Part'':
% \begin{macrocode}
\ifbool{LWR at mainmatter}%
@@ -23895,6 +25917,7 @@
{\@partnameformat}%
{}%
% \end{macrocode}
+%
% Print the section number:
% \begin{macrocode}
\LWR at traceinfo{LWR at section: about to print section number}%
@@ -23906,7 +25929,13 @@
{\protect\LWR at sectionnumber{\@partcntformat{#4}}}%
{%
\ifstrequal{#4}{chapter}%
- {\protect\LWR at sectionnumber{\@chapcntformat{#4}}}%
+ {%
+% \end{macrocode}
+% \changes{v0.88}{2020/06/20}{Conditionally print \cs{chaptername}.}
+% \begin{macrocode}
+ \LWR at printchaptername%
+ \protect\LWR at sectionnumber{\@chapcntformat{#4}}%
+ }%
{\protect\LWR at sectionnumber{\@seccntformat{#4}}}%
}%
}%
@@ -23913,7 +25942,7 @@
{}%
\LWR at traceinfo{LWR at section: finished print section number}%
}{}%
-}% end of not starred
+}% not starred
% \end{macrocode}
% Print the section name:
% \begin{macrocode}
@@ -23927,7 +25956,11 @@
\LWR at htmltag{\@nameuse{LWR at tag#4end}}%
\LWR at orignewline%
% \end{macrocode}
-% Generate a \LaTeX{} label:
+%
+% Generate a \LaTeX{} label.
+%
+% Track the \PDF\ page numbers of the \HTML\ output.
+%
% \changes{v0.43}{2017/11/01}{Fix: Math in section name.}
% \changes{v0.48}{2018/02/11}{Fix: \TOC, \LOF, \LOT\ links.}
% \changes{v0.66}{2019/01/28}{Fix: \TOC, \LOF, \LOT\ links.}
@@ -23937,6 +25970,18 @@
\setcounter{LWR at latestautopage}{\value{page}}%
\LWR at newautopagelabel{LWR at currentautosec}\LWR at orignewline%
% \end{macrocode}
+%
+% If this is the first section found in this file,
+% create a label for prevous/next links:
+% \changes{v0.84}{2020/04/24}{Added prev/next links.}
+% \begin{macrocode}
+\ifbool{LWR at setseqfilelabel}{}{%
+ \label{\BaseJobname-autofile-\arabic{LWR at htmlseqfilenumber}}%
+ \booltrue{LWR at setseqfilelabel}%
+}%
+% \end{macrocode}
+%
+%
% Start paragraph handing unless is an inline paragraph or subparagraph:
% \begin{macrocode}
\ifthenelse{%
@@ -24190,7 +26235,7 @@
\newcommand*{\LWR at currentHTMLLanguage}{en-US}
\newcommand*{\HTMLLanguage}[1]{%
-\renewcommand*{\LWR at currentHTMLLanguage}{#1}%
+ \renewcommand*{\LWR at currentHTMLLanguage}{#1}%
}
% \end{macrocode}
% \end{macro}
@@ -24203,18 +26248,19 @@
% \changes{v0.52}{2018/04/01}{Fix: \cs{FileDepth} with non-utf8 encoding.}
% \changes{v0.62}{2018/11/02}{Refactored.}
% \changes{v0.64}{2018/12/07}{Added \pkg{utarticle} and related.}
+% \changes{v0.84}{2020/04/21}{Improved spacing for \pkg{xeCJK}.}
% \begin{macrocode}
\ifPDFTeX% pdflatex or dvi latex
\ifdefstring{\inputencodingname}{utf8}{%
- \newcommand*{\theHTMLTitleSeparator}{ — }% EMdash
+ \newcommand*{\theHTMLTitleSeparator}{ —\ }% EMdash
}{%
- \newcommand*{\theHTMLTitleSeparator}{ - }% hyphen
+ \newcommand*{\theHTMLTitleSeparator}{ -\ }% hyphen
}%
\else%
\ifpTeX
- \newcommand*{\theHTMLTitleSeparator}{ - }% hyphen
+ \newcommand*{\theHTMLTitleSeparator}{ -\ }% hyphen
\else
- \newcommand*{\theHTMLTitleSeparator}{ — }% EMdash
+ \newcommand*{\theHTMLTitleSeparator}{ —\ }% EMdash
\fi%
\fi%
% \end{macrocode}
@@ -24280,7 +26326,7 @@
% \end{macrocode}
-% \begin{macro}{\LWR at filestart} \oarg{sectionname} \qquad
+% \begin{macro}{\LWR at filestart} \oarg{section name} \qquad
% Creates the opening \HTML\ tags.
% \changes{v0.19}{2016/05/25}{lwarp\_mathjax.txt loaded.}
% \changes{v0.20}{2016/06/27}{Adds meta description.}
@@ -24291,30 +26337,57 @@
\newcommand*{\LWR at filestart}[1][]{%
\LWR at traceinfo{LWR at filestart !#1!}%
% \end{macrocode}
+%
% Locally temporarily disable direct-formatting commands:
% \begin{macrocode}
\begingroup%
\LWR at nullfonts%
% \end{macrocode}
+%
% Save the section name for use while creating the
% \HTML\ meta \attribute{title} tag:
% \begin{macrocode}
\edef\theHTMLSection{#1}%
% \end{macrocode}
+%
+% Remove extra material:
+% \changes{v0.84}{2020/04/12}{Improved \HTML\ title.}
+% \begin{macrocode}
+\StrSubstitute{\theHTMLSection}{\protect}{\detokenize{-}}[\theHTMLSection]
+\StrSubstitute{\theHTMLSection}{\detokenize{-----}}{\detokenize{-}}[\theHTMLSection]
+\StrSubstitute{\theHTMLSection}{\detokenize{----}}{\detokenize{-}}[\theHTMLSection]
+\StrSubstitute{\theHTMLSection}{\detokenize{---}}{\detokenize{-}}[\theHTMLSection]
+\StrSubstitute{\theHTMLSection}{\detokenize{--}}{\detokenize{-}}[\theHTMLSection]
+% \end{macrocode}
+%
+% If starts with a dash, remove the leading dash:
+% \begin{macrocode}
+\IfBeginWith{\theHTMLSection}{\detokenize{-}}{%
+ \StrGobbleLeft{\theHTMLSection}{1}[\theHTMLSection]%
+}{}%
+% \end{macrocode}
+%
% Create the page's \HTML\ header:
% \begin{macrocode}
\LWR at htmltag{!DOCTYPE html}\LWR at orignewline
% \end{macrocode}
+%
% The language is user-adjustable:
+%
+% NOTE: \cs{LWR at orig@textquotedbl} is used here because \cs{textquotedbl} is
+% nullified by \cs{LWR at nullfonts} while starting the new file.
+%
% \begin{macrocode}
\LWR at htmltag{%
html lang=\LWR at orig@textquotedbl\LWR at currentHTMLLanguage\LWR at orig@textquotedbl%
}\LWR at orignewline
% \end{macrocode}
+%
% Start of the meta data:
% \begin{macrocode}
\LWR at htmltag{head}\LWR at orignewline
% \end{macrocode}
+%
% Charset is fixed at UTF-8:
% \begin{macrocode}
\LWR at htmltag{%
@@ -24355,6 +26428,7 @@
}\LWR at orignewline
}%
% \end{macrocode}
+%
% Mobile-friendly viewport:
% \gindex{HTML>meta tag>viewport}
% \gindex{viewport>HTML meta tag}
@@ -24366,6 +26440,7 @@
content=\LWR at orig@textquotedbl{}width=device-width, initial-scale=1.0\LWR at orig@textquotedbl\ /%
}\LWR at orignewline
% \end{macrocode}
+%
% IE patch:
% \changes{v0.63}{2018/11/30}{Fix: Break ligature for \pkg{luatexko}.}
% \begin{macrocode}
@@ -24379,6 +26454,7 @@
\LWR at htmltag{/script}\LWR at orignewline
\LWR at htmltag{![endif]-\/-}\LWR at orignewline
% \end{macrocode}
+%
% The page's title, if there is one.
% A section name is also added if given.
% \changes{v0.44}{2017/11/18}{Add \cs{HTMLTitle}.}
@@ -24394,6 +26470,7 @@
\LWR at htmltag{/title}\LWR at orignewline%
}%
% \end{macrocode}
+%
% The page's stylesheet:
% \begin{macrocode}
\LWR at htmltag{%
@@ -24404,6 +26481,7 @@
}%
\LWR at orignewline
% \end{macrocode}
+%
% Optional \brand{MathJax} support. The \HTML\ tags must be turned off
% during the verbatim input, and the paragraph handling which was
% turned on at the end of verbatim input must be immediately turned off
@@ -24418,8 +26496,19 @@
% ^^A \ifbool{mathKaTeX}{%
% ^^A \verbatiminput{lwarp_KaTeX.txt}%
% ^^A }{%
+% \changes{v0.86}{2020/05/03}{Error if missing file.}
% \begin{macrocode}
- \verbatiminput{\LWR at mathjaxfilename}%
+ \IfFileExists{\LWR at mathjaxfilename}%
+ {\verbatiminput{\LWR at mathjaxfilename}}%
+ {%
+ \PackageError{lwarp}%
+ {%
+ \protect\MathJaxFilename\space specified the file\MessageBreak
+ \space\space\LWR at mathjaxfilename\MessageBreak
+ which does not exist%
+ }%
+ {Specify an existing file, or remove \protect\MathJaxFilename.}%
+ }%
% \end{macrocode}
% ^^A }%
% \begin{macrocode}
@@ -24429,10 +26518,12 @@
}% end of mathjax
{}%
% \end{macrocode}
+%
% End of the header:
% \begin{macrocode}
\LWR at htmltag{/head}\LWR at orignewline
% \end{macrocode}
+%
% Start of the body:
% \begin{macrocode}
\LWR at htmltag{body}\LWR at orignewline
@@ -24546,16 +26637,6 @@
\let\LWR at origcaption\caption
% \end{macrocode}
%
-% Labels:
-% \cs{ltx at label} is used in \pkg{amsmath} environments and is also
-% patched by \pkg{cleveref}.
-% \gindex{label>in HTML}
-% \margintag{Label in \HTML}
-% \changes{v0.20}{2017/01/30}{Fix: math cross references.}
-% \begin{macrocode}
-\let\LWR at origltx@label\ltx at label
-\let\ltx at label\LWR at htmlmathlabel
-% \end{macrocode}
% Not yet started any paragraph handling:
% \begin{macrocode}
\global\boolfalse{LWR at doingapar}
@@ -24562,7 +26643,7 @@
\global\boolfalse{LWR at doingstartpars}
% \end{macrocode}
% Document and page settings:
-% \changes{v0.45}{2017/12/08}{Fix: Lateximages on incorrect pages with Mathjax.}
+% \changes{v0.45}{2017/12/08}{Fix: Lateximages on incorrect pages with \brand{Mathjax}.}
% \begin{macrocode}
\mainmatter
\LWR at origpagenumbering{arabic}
@@ -24591,6 +26672,13 @@
\LWR at htmlelementclass{section}{textbody}
% \end{macrocode}
%
+% Create a label for previous/next links, and remember it has been done:
+% \changes{v0.84}{2020/04/24}{Added prev/next links.}
+% \begin{macrocode}
+\booltrue{LWR at setseqfilelabel}%
+\label{\BaseJobname-autofile-\arabic{LWR at htmlseqfilenumber}}
+% \end{macrocode}
+%
% Patch the |itemize|, |enumerate|, and |description| environments and \cs{item}.
% This works with the native \LaTeX\ environments, as well as
% those provided by \pkg{enumitem}, \pkg{enumerate}, and \pkg{paralist}.
@@ -24619,8 +26707,22 @@
% disable \cs{ensuremath} by printing a nullified
% definition at the start of each file, and add further customizations:
% \changes{v0.51}{2018/03/18}{MathJax: Nullifies \cs{ensuremath}.}
+% \changes{v0.89}{2020/08/17}{MathJax: Improved info message.}
% \begin{macrocode}
+\ifbool{mathjax}{
+ \typeout{---}
+ \typeout{Package lwarp:}
+ \typeout{Processing MathJax customizations for the first HTML page.}
+ \typeout{Later HTML pages will take the same amount of time.}
+ \typeout{If this takes too long, see the Lwarp manual regarding customizing MathJax.}
+}{}
+
\LWR at customizeMathJax
+
+\ifbool{mathjax}{
+ \typeout{Done.}
+ \typeout{---}
+}{}
% \end{macrocode}
%
% ^^A % Likewise for Ka\TeX:
@@ -24691,7 +26793,9 @@
% Close the textbody:
% \changes{v0.65}{2018/12/18}{Improved \CSS\ for page layout.}
+% \changes{v0.84}{2020/04/24}{Added prev/next links.}
% \begin{macrocode}
+\label{\BaseJobname-autofile-last}
\LWR at htmlelementclassend{section}{textbody}
\LWR at htmlelementclassend{div}{bodycontainer}
\LWR at htmlelementclassend{div}{bodyandsidetoc}
@@ -24701,17 +26805,10 @@
\LWR at printpendingfootnotes
% \end{macrocode}
%
-% Create the footer:
-%
-% \changes{v0.73}{2019/06/23}{Fix: Empty header/footer.}
+% Create the footer if not \EPUB\:
+% \changes{v0.84}{2020/04/24}{Fix: No footer for \EPUB}
% \begin{macrocode}
-\ifdefempty{\LWR at pagebottom}{}{%
- \LWR at htmlelement{footer}
-
- \LWR at pagebottom
-
- \LWR at htmlelementend{footer}
-}
+\ifbool{FormatEPUB}{}{\LWR at createfooter}
% \end{macrocode}
% No bottom navigation if are finishing the home page,
@@ -24735,7 +26832,7 @@
% \end{macrocode}
% Seems to be required sometimes:
% \begin{macrocode}
-\LWR at orignewpage
+\LWR at maybe@orignewpage
}
% \end{macrocode}
% \end{macro}
@@ -24744,42 +26841,94 @@
% \begin{macro}{\enddocument}
% If labels have not changed, mark successful completion
-% of the \env{lateximages} file.
+% of the \filenm{lateximages.txt} file.
% Executed as everything is being shut down.
+%
+% For the newer kernel hooks, see \cmds{texdoc lthooks-doc} and \cmds{texdoc ltshipout-doc}.
% \changes{v0.70}{2019/03/26}{If labels changed, require recompile before making limages.}
+% \changes{v0.89}{2020/07/28}{Adapt to \LaTeX\ core changes.}
% \begin{macrocode}
-\xpatchcmd{\enddocument}
- {%
- \if at tempswa
- \@latex at warning@no at line{Label(s) may have changed.
- Rerun to get cross-references right}%
- \fi
- }
- {%
- \if at tempswa
- \@latex at warning@no at line{Label(s) may have changed.
- Rerun to get cross-references right}%
- \else
+\ifdef{\AddToHook}{% newer kernel
+ \AddToHook{enddocument/info}{%
+ \if at filesw
+ \ifx \@multiplelabels \relax
+ \if at tempswa
+% \end{macrocode}
+% This is where warnings of duplicate labels would appear.
+% \begin{macrocode}
+ \else
+% \end{macrocode}
+% No duplicate labels, so safe to create images.
+% \begin{macrocode}
\immediate\write\LWR at lateximagesfile{%
|end|end|end|%
}%
- \fi
+ \fi
+ \fi\fi
}
- {}
- {
- \PackageWarningNoLine{lwarp}
+}% newer kernel
+{% older kernel
+ \xpatchcmd{\enddocument}
{%
- Could not patch \protect\enddocument.\MessageBreak
- If labels have changed, be sure to recompile before\MessageBreak
- creating lateximages with\MessageBreak
- \space\space lwarpmk limages,\MessageBreak
- or the images may be corrupt%
+ \if at tempswa
+ \@latex at warning@no at line{Label(s) may have changed.
+ Rerun to get cross-references right}%
+ \fi
}
- }
+ {%
+ \if at tempswa
+ \@latex at warning@no at line{Label(s) may have changed.
+ Rerun to get cross-references right}%
+ \else
% \end{macrocode}
+% No duplicate labels, so safe to create images.
+% \begin{macrocode}
+ \immediate\write\LWR at lateximagesfile{%
+ |end|end|end|%
+ }%
+ \fi
+ }
+ {}
+ {
+ \AtEndDocument{
+ \PackageWarningNoLine{lwarp}
+ {%
+ Could not patch \protect\enddocument.\MessageBreak
+ If labels have changed, be sure to recompile before\MessageBreak
+ creating lateximages with\MessageBreak
+ \space\space lwarpmk limages,\MessageBreak
+ or the images may be corrupt%
+ }
+ }
+ }
+}% older kernel
+% \end{macrocode}
% \end{macro}
+
+% \section{Nullifying foreground \Slash background hooks}
+%
+% See \cmds{texdoc lthooks-doc} and \cmds{textdoc ltshipout-doc}.
+%
+% \changes{v0.89}{2020/07/28}{Foreground/background hooks: Adapt to \LaTeX\ core changes.}
% \begin{macrocode}
+\ifdef{\RemoveFromHook}{
+ \AfterEndPreamble{
+ \IfHookEmptyTF{shipout/background}{}{
+ \PackageInfo{lwarp}{Removing background hook}
+ \RemoveFromHook{shipout/background}[*]
+ }
+ \IfHookEmptyTF{shipout/foreground}{}{
+ \PackageInfo{lwarp}{Removing foreground hook}
+ \RemoveFromHook{shipout/foreground}[*]
+ }
+ }
+}{}
+% \end{macrocode}
+
+
+
+% \begin{macrocode}
\end{warpHTML}
% \end{macrocode}
@@ -25010,24 +27159,27 @@
%
% \subsection{Printing the thanks}
%
-% \codeall
-% \begin{macrocode}
-\begin{warpall}
-% \end{macrocode}
-% \DescribeMacro{\printthanks} Forces the \cs{thanks} to be printed.
-%
+% \begin{macro}{\printthanks} Forces the \cs{thanks} to be printed.
% This is necessary in a \env{titlingpage} environment
% when \cs{maketitle} was not used.
-% \changes{v0.73}{2019/06/25}{Fix: Paragraph tags.}
-% \begin{macrocode}
-\newcommand*{\printthanks}{\LWR at stoppars\@thanks\LWR at startpars}
-% \end{macrocode}
%
+% \changes{v0.84}{2020/03/29}{Fix: \cs{printthanks} in print mode.}
%
+% \codeprint
% \begin{macrocode}
-\end{warpall}
+\begin{warpprint}
+\newcommand*{\printthanks}{\@thanks}
+\end{warpprint}
% \end{macrocode}
+% \changes{v0.73}{2019/06/25}{Fix: Paragraph tags.}
+% \codehtml
+% \begin{macrocode}
+\begin{warpHTML}
+\newcommand*{\printthanks}{\LWR at stoppars\@thanks\LWR at startpars}
+\end{warpHTML}
+% \end{macrocode}
+% \end{macro}
% \subsection{Printing the title, etc.\ in \HTML}
@@ -25250,12 +27402,22 @@
% The original definition used \cs{\textbar} which was not being seen by \prog{pdftotext}.
%
% \changes{v0.34}{2017/08/07}{Text symbols instead of math.}
+% \changes{v0.84}{2020/04/17}{\cs{LWR at formatted}, fixed double bar.}
%
% \begin{macrocode}
-\def\@fnsymbol#1{\ifcase#1\or *\or \HTMLentity{dagger}\or \HTMLentity{Dagger}\or
- \HTMLentity{sect}\or \HTMLentity{para}\or \text{\HTMLunicode{2016}}\or
- **\or \HTMLentity{dagger}\HTMLentity{dagger} \or
- \HTMLentity{Dagger}\HTMLentity{Dagger} \else\@ctrerr\fi}
+\def\LWR at HTML@@fnsymbol#1{%
+ \ifcase#1\or *\or
+ \HTMLentity{dagger}\or
+ \HTMLentity{Dagger}\or
+ \HTMLentity{sect}\or
+ \HTMLentity{para}\or
+ \HTMLunicode{2016}\or
+ **\or
+ \HTMLentity{dagger}\HTMLentity{dagger} \or
+ \HTMLentity{Dagger}\HTMLentity{Dagger} \else
+ \@ctrerr\fi%
+}
+\LWR at formatted{@fnsymbol}
% \end{macrocode}
% \end{macro}
%
@@ -25450,10 +27612,16 @@
}%
}% yes titling package
{% no titling package
- \newcommand{\published}[1]{}%
- \newcommand*{\printpublished}{}%
- \newcommand{\subtitle}{}%
- \newcommand*{\printsubtitle}%
+% \end{macrocode}
+% \changes{v0.84}{2020/03/28}{Fixed \cs{subtitle}, \cs{printsubtitle} if no \pkg{titling}.}
+% \changes{v0.84}{2020/03/28}{Added \cs{subtitle}, \cs{published} for \pkg{koma*}.}
+% \begin{macrocode}
+ \def\@published{}%
+ \DeclareDocumentCommand{\published}{m}{\gdef\@published{##1}}%
+ \DeclareDocumentCommand{\printpublished}{}{}%
+ \def\@subtitle{}%
+ \DeclareDocumentCommand{\subtitle}{m}{\gdef\@subtitle{##1}}%
+ \DeclareDocumentCommand{\printsubtitle}{}{}%
}% no titling package
}% \AddSubtitlePublished
% \end{macrocode}
@@ -25493,12 +27661,12 @@
% \begin{macrocode}
\DeclareDocumentEnvironment{abstract}{O{\abstractname}}
{
-\LWR at forcenewpage
-\BlockClass{abstract}
-\BlockClassSingle{abstracttitle}{#1}
+ \LWR at forcenewpage
+ \BlockClass{abstract}
+ \BlockClassSingle{abstracttitle}{#1}
}
{
-\endBlockClass
+ \endBlockClass
}
% \end{macrocode}
% \end{environment}
@@ -25523,11 +27691,25 @@
% Ex: |"A quotation." \attribution{\textsc{Author Name}\\\textsl{Book Title}}|
%
% \changes{v0.73}{2019/06/25}{Fix: Paragraph tags.}
+% \changes{v0.84}{2020/04/14}{Added print mode.}
%
+% \codeall
+% \begin{macrocode}
+\begin{warpall}
+\newcommand{\attribution}[1]{
+ \begin{flushright}
+ \unskip
+ #1
+ \end{flushright}%
+}
+\end{warpall}
+% \end{macrocode}
+% \end{macro}
+%
% \codehtml
% \begin{macrocode}
\begin{warpHTML}
-\newcommand{\attribution}[1]{%
+\newcommand{\LWR at HTML@attribution}[1]{%
\LWR at stoppars%
\begin{BlockClass}{attribution}
#1
@@ -25534,20 +27716,9 @@
\end{BlockClass}
\LWR at startpars%
}
+\LWR at formatted{attribution}
\end{warpHTML}
% \end{macrocode}
-% \codeprint
-% \begin{macrocode}
-\begin{warpprint}
-\newcommand{\attribution}[1]{
- \begin{flushright}
- \unskip
- #1
- \end{flushright}%
-}
-\end{warpprint}
-% \end{macrocode}
-% \end{macro}
% \subsection{Quotes, quotations}
@@ -25558,25 +27729,31 @@
% \end{macrocode}
%
% \begin{environment}{quote}
+% \changes{v0.84}{2020/04/14}{Added print mode.}
% \begin{macrocode}
-\renewenvironment*{quote}
+\newenvironment*{LWR at HTML@quote}
{
\LWR at forcenewpage
\LWR at htmlblocktag{blockquote}
}
{\LWR at htmlblocktag{/blockquote}}
+
+\LWR at formattedenv{quote}
% \end{macrocode}
% \end{environment}
%
+% \begin{environment}{quotation}
% \changes{v0.71}{2019/04/27}{Fix: \env{blockquotation} tag.}
-% \begin{environment}{quotation}
+% \changes{v0.84}{2020/04/14}{Added print mode.}
% \begin{macrocode}
-\renewenvironment*{quotation}
+\newenvironment*{LWR at HTML@quotation}
{
\LWR at forcenewpage
\LWR at htmlblocktag{blockquote}
}
{\LWR at htmlblocktag{/blockquote}}
+
+\LWR at formattedenv{quotation}
% \end{macrocode}
% \end{environment}
@@ -25599,8 +27776,9 @@
%
% \begin{environment}{verse}
% \changes{v0.54}{2018/04/08}{Fix: Line spacing.}
+% \changes{v0.84}{2020/04/14}{Added print mode.}
% \begin{macrocode}
-\renewenvironment{verse}
+\newenvironment{LWR at HTML@verse}
{\let\\\newline% lwarp
\list{}{\itemsep \z@
\itemindent -1.5em%
@@ -25609,6 +27787,8 @@
\advance\leftmargin 1.5em}%
\item\relax}
{\endlist}
+
+\LWR at formattedenv{verse}
% \end{macrocode}
% \end{environment}
%
@@ -25666,6 +27846,7 @@
% \end{macrocode}
%
%
+%
% \DescribeLength{\VerbatimHTMLWidth} Width to use in \HTML\ |Verbatim| environment.
%
% This width is used when placing line numbers to the right.
@@ -25690,10 +27871,39 @@
% \end{macrocode}
+% \begin{macro}{\verb}
+%
+% Patched to encapsulate the verbatim text inside span
+% with a class of \attribute{texttt}.
+%
+% \changes{v0.891}{2020/09/12}{\cs{verb} as \cs{texttt}.}
+% \begin{macrocode}
+\LetLtxMacro\LWR at orig@verb at egroup\verb at egroup
+
+\def\LWR at verb@egroup at endspan{%
+ \LWR at orig@verb at egroup%
+ \LWR at htmltag{/span}%
+ \endgroup%
+}
+% \end{macrocode}
+%
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
+% \begin{macrocode}
+\xpretocmd{\verb}
+ {%
+ \begingroup%
+ \LWR at htmltag{span class=\textquotedbl{}texttt\textquotedbl}%
+ \let\verb at egroup\LWR at verb@egroup at endspan%
+ }
+ {}
+ {\LWR at patcherror{LaTeX}{verb}}
+% \end{macrocode}
+% \end{macro}
+
+
% \begin{macro}{\LWR at atbeginverbatim}
% \oarg{1: style}
-% \marg{2: negative \cs{baselineskip} \cs{vspace}}
-% \marg{3: class}
+% \marg{2: class}
%
% Encloses a verbatim environment with the given \CSS\ class.
%
@@ -25702,29 +27912,32 @@
% \changes{v0.51}{2018/03/17}{Adds vertical offset.}
% \changes{v0.63}{2018/11/24}{Fix for \pkg{xeCJK}.}
% \begin{macrocode}
-\newcommand*{\LWR at atbeginverbatim}[3][]
+\newcommand*{\LWR at atbeginverbatim}[2][]
{%
% \end{macrocode}
+% Stop generating \HTML\ paragraph tags:
+% \begin{macrocode}
+\LWR at stoppars%
+% \end{macrocode}
% Avoid excessive space between lines:
+% \changes{v0.891}{2020/09/12}{Fix for verbatim, \pkg{alltt} with lists}
% \begin{macrocode}
\setlength{\parskip}{0ex}%
+\setlength{\topsep}{0pt}%
+\setlength{\partopsep}{0pt}%
% \end{macrocode}
-% Stop generating \HTML\ paragraph tags:
-% \begin{macrocode}
-\LWR at stoppars%
-% \end{macrocode}
% Create a new |pre| of the given class.
% The tags may temporarily be turned off for internal use, such
% as loading the \brand{MathJax} script.
% \begin{macrocode}
\ifbool{LWR at verbtags}{%
- \LWR at htmltag{pre class=\textquotedbl#3\textquotedbl%
+ \LWR at htmltag{pre class=\textquotedbl#2\textquotedbl%
\ifthenelse{\equal{#1}{}}{}{ style=\textquotedbl#1\textquotedbl}%
}%
- \LWR at orignewline% pre
- \leavevmode\unskip\LWR at print@vspace*{-#2\baselineskip}%
+ \par%
}{}%
% \end{macrocode}
+%
% Use a mono-spaced font to preserve horizontal positioning.
% If horizontal alignment is important for the user, use a mono-spaced font
% in the \CSS\ for the |verse| class.
@@ -25734,10 +27947,11 @@
% \end{macrocode}
% \changes{v0.50}{2018/03/02}{Improved column alignment.}
% \changes{v0.54}{2018/04/06}{Improved column alignment.}
+% \changes{v0.85}{2020/04/29}{Fix: Added print macros for \pkg{fontspec}.}
% \begin{macrocode}
-% \LWR at print@normalsize%
+\LWR at print@normalfont%
\LWR at origttfamily%
-\LWR at print@small%
+\LWR at print@scriptsize%
% \end{macrocode}
% Since inside a \element{pre}, restore the original list processing:
% \begin{macrocode}
@@ -25745,7 +27959,7 @@
% \end{macrocode}
% Turn off \pkg{babel-french} extra space before punctuation:
% \begin{macrocode}
-\LWR at FBcancel%
+\LWR at hook@processingtags%
% \end{macrocode}
% Do not produce \HTML\ tags for \cs{hspace} inside a verse |par|.
% Restore plain \LaTeX{} \cs{hspace} functionality:
@@ -25757,12 +27971,11 @@
% \begin{macro}{\LWR at afterendverbatim}
-% \marg{negative \cs{baselineskip} \cs{vspace}}
%
% Finishes enclosing a verbatim environment.
% \changes{v0.54}{2018/04/07}{Added vspace argument.}
% \begin{macrocode}
-\newcommand*{\LWR at afterendverbatim}[1]{%
+\newcommand*{\LWR at afterendverbatim}{%
\endgroup%
\par%
% \end{macrocode}
@@ -25769,8 +27982,7 @@
% At the end of the environment, close the |pre|:
% \begin{macrocode}
\ifbool{LWR at verbtags}{%
- \LWR at print@vspace*{-#1\baselineskip}%
- \noindent\LWR at htmltag{/pre}\LWR at orignewline% pre
+ \noindent\LWR at htmltag{/pre}\par% pre
}{}%
% \end{macrocode}
% Resume regular paragraph handling:
@@ -25786,15 +27998,16 @@
%
% Patch \cs{verbatiminput} to add \HTML\ tags:
%
+% \changes{v0.84}{2020/04/16}{Added print mode.}
% \begin{macrocode}
-\let\LWRV at origverbatim@input\verbatim at input
+\newcommand{\LWR at HTML@verbatim at input}[2]{%
+ \ifbool{LWR at verbtags}{\LWR at forcenewpage}{}%
+ \LWR at atbeginverbatim{Verbatim}%
+ \LWR at print@verbatim at input{#1}{#2}%
+ \LWR at afterendverbatim%
+}
-\renewcommand{\verbatim at input}[2]{%
-\ifbool{LWR at verbtags}{\LWR at forcenewpage}{}%
-\LWR at atbeginverbatim{2.5}{Verbatim}%
-\LWRV at origverbatim@input{#1}{#2}%
-\LWR at afterendverbatim{1.5}%
-}
+\LWR at formatted{verbatim at input}
% \end{macrocode}
% \end{macro}
@@ -25803,16 +28016,25 @@
% \begin{environment}{verbatim}
%
% \changes{v0.20}{2016/12/24}{Added.}
+% \changes{v0.84}{2020/04/16}{Added print mode.}
%
% \begin{macrocode}
\AfterEndPreamble{
\LWR at traceinfo{Patching verbatim.}
\AtBeginEnvironment{verbatim}{%
-\LWR at forcenewpage%
-\LWR at atbeginverbatim{2.5}{verbatim}%
+ \ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}%
+ {}%
+ {%
+ \LWR at forcenewpage%
+ \LWR at atbeginverbatim{verbatim}%
+ }%
}
\AfterEndEnvironment{verbatim}{%
- \LWR at afterendverbatim{1}%
+ \ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}%
+ {}%
+ {%
+ \LWR at afterendverbatim%
+ }%
}
}
% \end{macrocode}
@@ -25826,16 +28048,24 @@
% \changes{v0.42}{2017/10/13}{Added.}
% \changes{v0.52}{2018/03/27}{Fix to allow inside \env{lateximage}.}
% \changes{v0.58}{2018/06/07}{Improved print/\HTML\ output selection.}
+% \changes{v0.84}{2020/04/17}{Restore spacing.}
% \begin{macrocode}
\newcommand*{\LWR at HTML@tabbing}{%
-\LWR at forcenewpage%
-\LWR at atbeginverbatim{3}{tabbing}%
-\LWR at print@tabbing%
+ \LWR at forcenewpage%
+ \LWR at atbeginverbatim{tabbing}%
+ \let\enskip\LWR at origenskip%
+ \let\quad\LWR at origquad%
+ \let\qquad\LWR at origqquad%
+ \let~\LWR at origtilde%
+ \let\,\LWR at origcomma%
+ \let\thinspace\LWR at origthinspace%
+ \let\negthinspace\LWR at orignegthinspace%
+ \LWR at print@tabbing%
}
\newcommand*{\LWR at HTML@endtabbing}{%
\LWR at print@endtabbing%
- \LWR at afterendverbatim{1}%
+ \LWR at afterendverbatim%
}
\LWR at formatted{tabbing}
@@ -25872,7 +28102,7 @@
% \begin{macrocode}
\begin{warpHTML}
% \end{macrocode}
-
+%
% \begin{macro}{\@begintheorem} \marg{name} \marg{number}
% \begin{macrocode}
\renewcommand{\@begintheorem}[2]{%
@@ -25883,16 +28113,26 @@
}
% \end{macrocode}
% \end{macro}
+%
+%
% \begin{macro}{\@opargbegintheorem} \marg{name} \marg{number} \marg{oparg}
+%
+% \LaTeX\ defines this, but \pkg{amsthm} \cs{relax}es it,
+% so it will not be defined if \pkg{amsthm} is loaded before \pkg{lwarp}.
+% \changes{v0.89}{2020/08/12}{Allow preload of \pkg{amsmath}, \pkg{amsthm}, \pkg{centernot}.}
% \begin{macrocode}
-\renewcommand{\@opargbegintheorem}[3]{%
-\LWR at forcenewpage
-\BlockClass{theoremcontents}
-\trivlist
-\item[\InlineClass{theoremlabel}{#1\ #2\ (#3)\ }]\itshape
+\ifundef{\@opargbegintheorem}{}{
+ \renewcommand{\@opargbegintheorem}[3]{%
+ \LWR at forcenewpage
+ \BlockClass{theoremcontents}
+ \trivlist
+ \item[\InlineClass{theoremlabel}{#1\ #2\ (#3)\ }]\itshape
+ }
}
% \end{macrocode}
% \end{macro}
+%
+%
% \begin{macro}{\@endtheorem}
% \begin{macrocode}
\renewcommand*{\@endtheorem}{%
@@ -25968,8 +28208,11 @@
% \begin{macro}{\LWR at printopenlist}
% May be locally redefined by \env{enumerate} or \env{description}.
% \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
-\newcommand*{\LWR at printopenlist}{ul style="\LWR at print@mbox{list-style-type:none}"}
+\newcommand*{\LWR at printopenlist}{%
+ ul style=\textquotedbl\LWR at print@mbox{list-style-type:none}\textquotedbl{}%
+}
% \end{macrocode}
% \end{macro}
@@ -26172,6 +28415,7 @@
\LWR at nulllistfills%
}
% \end{macrocode}
+%
% \changes{v0.46}{2018/01/21}{Fix: Stack unnesting.}
% \begin{macrocode}
\newcommand*{\LWR at listend}{%
@@ -26205,10 +28449,13 @@
% \begin{environment}{itemize} \oarg{options}
% \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\newcommand*{\LWR at itemizestart}{%
\renewcommand*{\LWR at printcloselist}{\LWR at printcloseitemize}
-\renewcommand*{\LWR at printopenlist}{ul style="\LWR at print@mbox{list-style-type:none}"}
+\renewcommand*{\LWR at printopenlist}{%
+ ul style=\textquotedbl\LWR at print@mbox{list-style-type:none}\textquotedbl{}%
+}
\let\item\LWR at itemizeitem%
\LWR at nulllistfills%
}
@@ -26223,10 +28470,13 @@
% \begin{environment}{enumerate} \oarg{options}
% \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\newcommand*{\LWR at enumeratestart}{%
\renewcommand*{\LWR at printcloselist}{\LWR at printcloseitemize}
-\renewcommand*{\LWR at printopenlist}{ul style="\LWR at print@mbox{list-style-type:none}"}
+\renewcommand*{\LWR at printopenlist}{%
+ ul style=\textquotedbl\LWR at print@mbox{list-style-type:none}\textquotedbl{}%
+}
\let\item\LWR at itemizeitem%
\LWR at nulllistfills%
}
@@ -26325,22 +28575,22 @@
% \begin{macro}{\LWR at restoreoriglists} Restores the original \env{trivlist} environment.
% \begin{macrocode}
\newcommand*{\LWR at restoreoriglists}{%
-\LWR at traceinfo{LWR at restoreoriglists}%
-\LetLtxMacro\item\LWR at origitem%
-\LetLtxMacro\@item\LWR at orig@item%
-\let\@trivlist\LWR at orig@trivlist%
-\let\trivlist\LWR at origtrivlist%
-\let\endtrivlist\LWR at origendtrivlist%
-\LetLtxMacro\itemize\LWR at origitemize%
-\LetLtxMacro\enditemize\LWR at endorigitemize%
-\LetLtxMacro\enumerate\LWR at origenumerate%
-\LetLtxMacro\endenumerate\LWR at endorigenumerate%
-\LetLtxMacro\description\LWR at origdescription%
-\LetLtxMacro\enddescription\LWR at endorigdescription%
-\let\@mklab\LWR at orig@mklab%
-\let\makelabel\LWR at origmakelabel%
-\let\@donoparitem\LWR at orig@donoparitem%
-\let\@nbitem\LWR at orig@nbitem%
+ \LWR at traceinfo{LWR at restoreoriglists}%
+ \LetLtxMacro\item\LWR at origitem%
+ \LetLtxMacro\@item\LWR at orig@item%
+ \let\@trivlist\LWR at orig@trivlist%
+ \let\trivlist\LWR at origtrivlist%
+ \let\endtrivlist\LWR at origendtrivlist%
+ \LetLtxMacro\itemize\LWR at origitemize%
+ \LetLtxMacro\enditemize\LWR at endorigitemize%
+ \LetLtxMacro\enumerate\LWR at origenumerate%
+ \LetLtxMacro\endenumerate\LWR at endorigenumerate%
+ \LetLtxMacro\description\LWR at origdescription%
+ \LetLtxMacro\enddescription\LWR at endorigdescription%
+ \let\@mklab\LWR at orig@mklab%
+ \let\makelabel\LWR at origmakelabel%
+ \let\@donoparitem\LWR at orig@donoparitem%
+ \let\@nbitem\LWR at orig@nbitem%
}
% \end{macrocode}
% \end{macro}
@@ -26726,7 +28976,7 @@
% \subsubsection{Longtable variables}
% \DescribeBoolean{LWR at starredlongtable}
-% Per the \pkg{caption} pacakge, step the counter if |longtable*|.
+% Per the \pkg{caption} package, step the counter if |longtable*|.
%
% \begin{macrocode}
\newbool{LWR at starredlongtable}
@@ -27960,6 +30210,7 @@
\booltrue{LWR at startedrow}%
% \end{macrocode}
% Create the row tag, with a class if necessary.
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\booltrue{LWR at intabularmetadata}%
\ifboolexpr{%
@@ -27967,7 +30218,7 @@
test{\ifnumcomp{\value{LWR at hdashedlines}}{>}{0}}%
}%
{%
- \LWR at htmltag{tr class="hline" }%
+ \LWR at htmltag{tr class=\textquotedbl{}hline\textquotedbl }%
\LWR at orignewline%
}%
{% not doing hline
@@ -27974,12 +30225,12 @@
\ifbool{LWR at doingtbrule}%
{%
\ifdefvoid{\LWR at ruleHTMLcolor}{%
- \LWR at htmltag{tr class="tbrule"}%
+ \LWR at htmltag{tr class=\textquotedbl{}tbrule\textquotedbl}%
}{%
\LWR at htmltag{%
- tr class="tbrule" % space
- style="border-top: 1px solid % space
- \LWR at origpound\LWR at ruleHTMLcolor "%
+ tr class=\textquotedbl{}tbrule\textquotedbl\ % space
+ style=\textquotedbl{}border-top: 1px solid % space
+ \LWR at origpound\LWR at ruleHTMLcolor \textquotedbl{}%
}%
}%
\LWR at orignewline%
@@ -28030,15 +30281,16 @@
\LWR at traceinfo{atbang: #2 !\LWR at atbangspec!}%
% \end{macrocode}
% Only generate if is not empty;
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\ifdefempty{\LWR at atbangspec}%
{}%
{% not empty
\LWR at htmltag{%
- td class="td#1%
+ td class=\textquotedbl{}td#1%
\LWR at subaddcmidruletrim{}{}%
\LWR at printbartag{#2}%
- "%
+ \textquotedbl{}%
\LWR at tdstartstyles%
\LWR at addcmidrulewidth%
\LWR at addcdashline%
@@ -28130,13 +30382,14 @@
\LWR at getexparray{LWR at tablecolspec}{\arabic{LWR at tableLaTeXcolindex}}%
}%
% \end{macrocode}
-% print the start of a new table data cell:
+% Print the start of a new table data cell:
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\LWR at traceinfo{LWR at tabledatasinglecolumntag: about to print td tag}%
\LWR at htmltag{%
- td class="td%
+ td class=\textquotedbl{}td%
% \end{macrocode}
-% append this column's spec:
+% Append this column's spec:
% \begin{macrocode}
\LWR at strresult%
% \end{macrocode}
@@ -28146,7 +30399,7 @@
\LWR at addcmidruletrim%
\LWR at addleftmostbartag%
\LWR at printbartag{\arabic{LWR at tableLaTeXcolindex}}%
- "%
+ \textquotedbl{}%
% \end{macrocode}
% Add styles for rules, alignment:
% \changes{v0.42}{2017/10/26}{If \progcode{FormatWP} add cell alignment.}
@@ -28385,15 +30638,6 @@
-% Used to compute margins, tabular trims, column offsets:
-% \begin{macrocode}
-\newlength{\LWR at templengthone}
-\newlength{\LWR at templengthtwo}
-\newlength{\LWR at templengththree}
-\newcounter{LWR at tempcountone}
-% \end{macrocode}
-
-
% \begin{macro}{\LWR at tdstartstyles}
% Begins possibly adding a table data cell style.
% \begin{macrocode}
@@ -28403,11 +30647,12 @@
% \begin{macro}{\LWR at tdaddstyle}
% Starts adding a table data cell style.
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\newcommand*{\LWR at tdaddstyle}{%
\ifbool{LWR at tdhavecellstyle}%
{; }%
- { style="}%
+ { style=\textquotedbl}%
\booltrue{LWR at tdhavecellstyle}%
}
% \end{macrocode}
@@ -28416,11 +30661,12 @@
% \begin{macro}{\LWR at tdendstyles}
% Finishes possibly adding a table data cell style.
% Prints the closing quote.
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\newcommand*{\LWR at tdendstyles}{%
\ifbool{LWR at tdhavecellstyle}%
{%
- "%
+ \textquotedbl%
\boolfalse{LWR at tdhavecellstyle}%
}{}%
}
@@ -28778,11 +31024,14 @@
% \begin{macro}{\LWR at subaddtabularcellcolor} \marg{\HTML\ color}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\newcommand*{\LWR at subaddtabularcellcolor}[1]{%
- \LWR at htmltag{div class="cellcolor" style="%
+ \LWR at htmltag{div class=\textquotedbl{}cellcolor\textquotedbl\ % space
+ style=\textquotedbl{}%
background:\LWR at origpound{}{}#1 %
- " }%
+ \textquotedbl\ %
+ }% space
\defaddtocounter{LWR at cellcolordepth}{1}%
}
% \end{macrocode}
@@ -29140,30 +31389,23 @@
\LWR at maybenewtablerow%
% \end{macrocode}
% Begin the opening table data tag:
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\LWR at htmltag{%
- td colspan="#4" %
+ td colspan=\textquotedbl#4\textquotedbl\ %
% \end{macrocode}
%
% \begin{macrocode}
\IfValueT{#2}{ % rows?
- rowspan="#2" %
+ rowspan=\textquotedbl#2\textquotedbl\ %
+ }%
% \end{macrocode}
%
-% \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.84}{2020/04/16}{Fix: Multicolumn style.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
- \IfValueT{#1}{% vpos?
- \ifstrequal{#1}{b}%
- {style="\LWR at print@mbox{vertical-align:bottom}" }{}%
- \ifstrequal{#1}{t}%
- {style="\LWR at print@mbox{vertical-align:top}" }{}%
- }% vpos?
- }% rows?
+ class=\textquotedbl{}td%
% \end{macrocode}
-%
-% \begin{macrocode}
- class="td%
-% \end{macrocode}
% Print the column type and vertical bars:
% \begin{macrocode}
\defcounter{LWR at mcolvertbarsl}{0}%
@@ -29206,17 +31448,38 @@
{ tvertbarrdoubledash}{}%
% \end{macrocode}
% Close the class tag's opening quote:
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
- "%
+ \textquotedbl{}%
% \end{macrocode}
% \changes{v0.42}{2017/10/26}{If \progcode{FormatWP} add cell alignment.}
% \begin{macrocode}
\LWR at tdstartstyles%
% \end{macrocode}
+%
+% Style for vertical position:
+% \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \begin{macrocode}
+ \IfValueT{#1}{% vpos?
+ \ifstrequal{#1}{b}%
+ {%
+ \LWR at tdaddstyle%
+ \LWR at print@mbox{vertical-align:bottom}%
+ }{}%
+ \ifstrequal{#1}{t}%
+ {%
+ \LWR at tdaddstyle%
+ \LWR at print@mbox{vertical-align:top}%
+ }{}%
+ }% vpos?
+% \end{macrocode}
+%
+% Style for row colors:
% \changes{v0.49}{2018/02/18}{\pkg{xcolor}: Added tabular row colors.}
% \begin{macrocode}
\LWR at addtabularrowcolor%
% \end{macrocode}
+% Other styles:
% \begin{macrocode}
\LWR at addcmidrulewidth%
\LWR at addcdashline%
@@ -30019,7 +32282,7 @@
% \begin{macro}{\LWR at nullifyNoAutoSpacing}
% For \pkg{babel-french}, turn off auto spacing at the start of the tabular,
% then nullify the autospacing commands inside the tabular,
-% since they were not compatible with the tabular column parsing code,
+% since they were not compatible with the tabular parsing code for each cell,
% which uses \pkg{xstring}.
% \changes{v0.41}{2017/10/06}{\pkg{babel-french}: Fix: \cs{NoAutoSpacing} in a tabular.}
% \changes{v0.78}{2019/10/29}{\pkg{babel-french}: Fix: Hyperlinks.}
@@ -30073,16 +32336,7 @@
% a warning is issued here instructing the user to please isolate the \element{span}
% to print-only.
% \begin{macrocode}
- \ifnumcomp{\value{LWR at spandepth}}{>}{0}{%
- \PackageWarning{lwarp}{%
- A tabular is being used inside a span such as\MessageBreak
- a minipage. Some formatting may not be correct\MessageBreak
- in the tabular.\MessageBreak
- It is recommended to use \protect\warpprintonly\space or the\MessageBreak
- warpprint environment to isolate the span to\MessageBreak
- print-only,%
- }
- }{}%
+ \LWR at spanwarnformat{tabular}%
\addtocounter{LWR at tabulardepth}{1}%
% \end{macrocode}
% Not yet started a table row:
@@ -30345,7 +32599,7 @@
% \begin{macrocode}
\ifbool{LWR at usedmultirow}{%
\ifbool{LWR at foundmrowcell}%
- {}%
+ {\relax}%
{%
\PackageError{lwarp}%
{%
@@ -30431,6 +32685,8 @@
% \begin{description}
% \item [\cs{label}:] Adds \HTML\ tags (\cref{sec:labels}),
% and another \filenm{.aux} entry (\cref{sec:lwarplabelsetup}).
+% If \pkg{memoir} is used, its \cs{@mem at old@label} points to \pkg{lwarp}'s version,
+% and \pkg{cleveref} patches.
% \item [\cs{newlabel}:] Unchanged. When the |.aux| file is read, sets \cs{r@<label>@lwarp}.
% \item [\cs{r@<label>@lwarp}:] Set to |{{section_name}{file_name}{depth}{number}}|:
% \begin{description}
@@ -30497,8 +32753,9 @@
% description, or caption, for \cs{nameref}.
%
% \changes{v0.44}{2017/11/19}{Adjustment for \pkg{koma-script}.}
+% \changes{v0.84}{2020/04/24}{Default name for previous/next links.}
% \begin{macrocode}
-\providecommand*{\@currentlabelname}{}
+\def\@currentlabelname{\linkhomename}%
% \end{macrocode}
% \end{macro}
%
@@ -30614,12 +32871,12 @@
% \end{macro}
%
%
-% \begin{macro}{\LWR at lwarplabel} \marg{label}
+% \begin{macro}{\LWR at write@lwarplabel} \marg{label}
% Sanitize the name and then creates the label:
% \changes{v0.66}{2019/01/27}{No longer use \pkg{zref}.}
% \begin{macrocode}
-\newcommand*{\LWR at lwarplabel}[1]{%
- \LWR at traceinfo{LWR at lwarplabel !#1!}%
+\newcommand*{\LWR at write@lwarplabel}[1]{%
+ \LWR at traceinfo{LWR at write@lwarplabel !#1!}%
\LWR at setlatestname{\@currentlabelname}%
\@bsphack%
\protected at write\@auxout{}%
@@ -30647,14 +32904,63 @@
% \label{sec:labels}
-% \begin{macro}{\LWR at sublabel} \marg{label} \quad
+% \begin{macro}{\LWR at label@subcreatetag} Creates the tag from \cs{LWR at sanitized}.
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
+% \begin{macrocode}
+\newcommand*{\LWR at label@subcreatetag}{%
+ \LWR at htmltag{a \LWR at print@mbox{id=\textquotedbl\LWR at sanitized\textquotedbl}}%
+ \LWR at htmltag{/a}%
+}
+% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\LWR at label@inmathcomment}
+% \changes{v0.86}{2020/05/11}{Fix: Labels in \env{eqnarray}.}
+% \begin{macrocode}
+\newcommand*{\LWR at label@inmathcomment}{%
+ \ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
+ {%
+% \end{macrocode}
+% The combined \LaTeX\ \& \HTML\ label is printed in a \cs{mbox} field:%
+% \begin{macrocode}
+ \mbox{%
+% \end{macrocode}
+% Shift the label over to the right side of the environment to avoid
+% over-printing the math:
+% \begin{macrocode}
+ \ifdef{\totwidth@}{\ifbool{LWR at amsmultline}{}{\hspace*{\totwidth@}}}{}%
+% \end{macrocode}
+% Temporarily end the \HTML\ comment,
+% insert the \LaTeX{} \& \HTML\ label, then
+% resume the \HTML\ comment.
+% \cs{@firstofone} is required to remove extra braces
+% introduced by the \pkg{amsmath} package.)
+% \begin{macrocode}
+ \LWR at htmlclosecomment%
+ \LWR at label@subcreatetag%
+ \LWR at htmlopencomment%
+ }% mbox
+ }% mathjax
+ {%
+ \LWR at label@subcreatetag%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+
+
+
+% \begin{macro}{\LWR at label@createtag} \marg{label} \quad
% Creates an \HTML\ id tag.
%
+% Used by \cs{LWR at new@label} and \cs{hyperdef}.
+%
% \cs{detokenize} is used to allow underscores in the labels.
% \changes{v0.45}{2017/12/29}{Fix: Labels with underscores.}
% \begin{macrocode}
-\newcommand*{\LWR at sublabel}[1]{%
- \LWR at traceinfo{LWR at sublabel !#1!}%
+\newcommand*{\LWR at label@createtag}[1]{%
+ \LWR at traceinfo{LWR at label@createtag !#1!}%
% \end{macrocode}
% Create an \HTML\ id tag unless are inside a lateximage,
% since it would appear in the image:
@@ -30663,29 +32969,33 @@
{}%
{% not lateximage
% \end{macrocode}
-% If not doing a lateximage, create an \HTML\ ID tag:
+% If not doing a lateximage, create an \HTML\ ID tag.
+%
% \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
-% (To be factored\dots)
+% \changes{v0.86}{2020/05/11}{Fix: Labels in \env{eqnarray}.}
% \begin{macrocode}
\LWR at sanitize{#1}%
- \ifbool{LWR at doingstartpars}%
- {% pars allowed
- \ifbool{LWR at doingapar}%
- {% par started
- \LWR at htmltag{a \LWR at print@mbox{id="\LWR at sanitized"}}%
- \LWR at htmltag{/a}%
- }% par started
- {% par not started
- \LWR at stoppars%
- \LWR at htmltag{a \LWR at print@mbox{id="\LWR at sanitized"}}%
- \LWR at htmltag{/a}%
- \LWR at startpars%
- }% par not started
- }% pars allowed
- {% pars not allowed
- \LWR at htmltag{a \LWR at print@mbox{id="\LWR at sanitized"}}%
- \LWR at htmltag{/a}%
- }% pars not allowed
+ \ifbool{LWR at insidemathcomment}%
+ {% inside HTML math comment
+ \LWR at label@inmathcomment%
+ }% inside HTML math comment
+ {% not inside HTML math comment
+ \ifbool{LWR at doingstartpars}%
+ {% pars allowed
+ \ifbool{LWR at doingapar}%
+ {% par started
+ \LWR at label@subcreatetag%
+ }% par started
+ {% par not started
+ \LWR at stoppars%
+ \LWR at label@subcreatetag%
+ \LWR at startpars%
+ }% par not started
+ }% pars allowed
+ {% pars not allowed
+ \LWR at label@subcreatetag%
+ }% pars not allowed
+ }% not inside HTML math comment
}% not lateximage
}
% \end{macrocode}
@@ -30692,30 +33002,30 @@
% \end{macro}
%
%
-% \begin{macro}{\LWR at new@label} \parg{bookmark} \marg{label} \oarg{type}
+% \begin{macro}{\LWR at new@label} \marg{label}
%
% \cs{label} during \HTML\ output when not in \SVG\ math mode,
% removing extra spaces around the label, as done by a regular \LaTeX\ \cs{label}.
%
% The is also used during a \env{lateximage}, including \SVG\ math, since
-% the special label handling is required, but \cs{LWR at sublabel} does not
+% the special label handling is required, but \cs{LWR at label@createtag} does not
% generate \HTML\ tags inside a \env{lateximage}.
%
-% \pkg{clevereref} later encases this to add its own cross-referencing.
+% If \pkg{memoir} is used, it's \cs{@mem at old@label} is pointed here.
%
-% The optional \meta{bookmark} is per the \pkg{memoir} class, and is ignored.
+% \pkg{clevereref} later encases this to add its own cross-referencing,
+% and also patches \pkg{memoir}.
%
-% The optional \meta{type} is per the \pkg{ntheorem} package, and is ignored.
-%
+% \changes{v0.84}{2020/04/05}{Removed optional args.}
% \begin{macrocode}
-\NewDocumentCommand{\LWR at new@label}{d() m o}{%
+\NewDocumentCommand{\LWR at new@label}{m}{%
\LWR at traceinfo{LWR at new@label: starting}%
- \LWR at traceinfo{LWR at new@label: !#2!}%
+ \LWR at traceinfo{LWR at new@label: !#1!}%
% \@bsphack%
% \end{macrocode}
% Create a traditional \LaTeX\ label, as modified by \pkg{cleveref}:
% \begin{macrocode}
- \LWR at orig@label{#2}%
+ \LWR at orig@label{#1}%
% \end{macrocode}
% Create a special label which holds the section number,
% |LWR at htmlfilenumber|, |LWR at lateximagedepth|, and |LWR at lateximagenumber|:
@@ -30730,8 +33040,8 @@
\LWR at traceinfo{%
LWR at new@label: LWR at htmlfilenumber is \arabic{LWR at htmlfilenumber}%
}%
- \LWR at lwarplabel{#2}%
- \LWR at sublabel{#2}%
+ \LWR at write@lwarplabel{#1}%
+ \LWR at label@createtag{#1}%
% \@esphack%
\LWR at traceinfo{LWR at new@label: done}%
}
@@ -30746,10 +33056,11 @@
% \begin{macro}{\LWR at addlinktitle}
% \changes{v0.74}{2019/08/25}{Added.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\newcommand*{\LWR at addlinktitle}{%
\ifdefvoid{\LWR at ThisAltText}{}{ % space
- title="\LWR at ThisAltText" % space
+ title=\textquotedbl\LWR at ThisAltText\textquotedbl\ % space
\gdef\LWR at ThisAltText{}%
}%
}
@@ -30773,8 +33084,9 @@
\LWR at traceinfo{LWR at startref A: !#1!}%
% \end{macrocode}
% Create the filename part of the link:
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
- \LWR at htmltag{a href="%
+ \LWR at htmltag{a href=\textquotedbl%
\LWR at traceinfo{LWR at startref B}%
\LWR at print@mbox{\LWR at htmlrefsectionfilename{#1}}%
\LWR at traceinfo{LWR at startref C}%
@@ -30802,7 +33114,10 @@
{%
\ifthenelse{\cnttest{\LWR at lateximagedepthref{#1}}{>}{0}}%
{%
- \LWR at ImagesName\LWR at lateximagenumberref{#1}%
+% \end{macrocode}
+% \changes{v0.86}{2020/05/11}{Fixed: \cs{label} inside \env{lateximage}.}
+% \begin{macrocode}
+ lateximage-\BaseJobname-\LWR at lateximagenumberref{#1}%
}%
{%
\LWR at traceinfo{LWR at startref D3}%
@@ -30816,8 +33131,9 @@
\LWR at traceinfo{LWR at startref E}%
% \end{macrocode}
% Closing quote:
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
- "%
+ \textquotedbl%
% \end{macrocode}
% Maybe add a title:
% \begin{macrocode}
@@ -30852,6 +33168,16 @@
% Create an internal document reference link,
% or without a link if starred per \pkg{hyperref}.
%
+% \pkg{hyperref} defines a starred version.
+% Since \pkg{hyperref} is only emulated, the starred version is
+% defined here for print mode, in case \cs{ref} is used inside
+% \SVG\ math:
+% \changes{v0.88}{2020/07/05}{Fixed: Starred.}
+% \begin{macrocode}
+\LWR at absorbstar{ref}%
+% \end{macrocode}
+%
+% The \HTML\ version:
% \changes{v0.58}{2018/06/07}{Improved print/\HTML\ output selection.}
% \begin{macrocode}
\NewDocumentCommand{\LWR at HTML@ref}{s m}{%
@@ -30863,22 +33189,18 @@
\LWR at formatted{ref}
% \end{macrocode}
+%
+% For \brand{MathJax}:
+% \changes{v0.88}{2020/07/05}{Added \brand{MathJax}.}
+% \begin{macrocode}
+\CustomizeMathJax{\let\LWRref\ref}
+\CustomizeMathJax{\renewcommand{\ref}{\ifstar\LWRref\LWRref}}
+% \end{macrocode}
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\LWR at ref@ignorestar} * \marg{label} \quad
-% For use inside \cs{hyperref}. Ignores the star, then uses the original \cs{ref}.
%
-% \changes{v0.57}{2018/06/05}{\pkg{subcaption}: Fix: \cs{subref}.}
-% \begin{macrocode}
-\NewDocumentCommand{\LWR at ref@ignorestar}{s m}{%
- \LWR at print@ref{#2}%
-}
-% \end{macrocode}
-% \end{macro}
-
-
-
+%
% \label{sec:pagerefpagefor}
% \begin{macro}{\pagerefPageFor} Text for page references.
%
@@ -30957,14 +33279,11 @@
% Emulates \pkg{hyperref}:
% \begin{macro}{\@currentHref} Added to support \pkg{backref}.
% \changes{v0.45}{2018/01/14}{Added.}
+% \changes{v0.84}{2020/04/07}{\pkg{backref}: Fixed from \pkg{lwarp} v0.72 changes.}
% \begin{macrocode}
\AtBeginDocument{
-
-\def\@currentHref{%
- autopage-\theLWR at currentautosec%
+ \def\@currentHref{\BaseJobname-autopage-\theLWR at currentautosec}
}
-
-}
% \end{macrocode}
% \end{macro}
@@ -30983,7 +33302,7 @@
% For \pkg{babel-french}:
% \changes{v0.78}{2019/10/29}{\pkg{babel-french}: Fix: Hyperlinks.}
% \begin{macrocode}
- \LWR at FBcancel%
+ \LWR at hook@processingtags%
}
% \end{macrocode}
% \end{macro}
@@ -31004,7 +33323,7 @@
% For \pkg{babel-french}:
% \changes{v0.78}{2019/10/29}{\pkg{babel-french}: Fix: Hyperlinks.}
% \begin{macrocode}
- \LWR at FBcancel%
+ \LWR at hook@processingtags%
}
% \end{macrocode}
% \end{macro}
@@ -31019,14 +33338,15 @@
% \changes{v0.18}{2016/04/14}{Improved \HTML\ output linebreaks.}
% \changes{v0.45}{2017/12/29}{Improved URLs with underscores.}
% \changes{v0.57}{2018/06/05}{Fix: Text catcodes.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\NewDocumentCommand{\LWR at subhyperref}{m}{%
\LWR at traceinfo{LWR at subhyperref !#1!}%
\LWR at sanitize{#1}%
\LWR at htmltag{%
- a href="\LWR at sanitized" % space
+ a href=\textquotedbl\LWR at sanitized\textquotedbl\ % space
\LWR at addlinktitle % space
- target="\_{}blank" % space
+ target=\textquotedbl\_{}blank\textquotedbl\ % space
}%
}
% \end{macrocode}
@@ -31053,12 +33373,13 @@
% \changes{v0.45}{2017/12/29}{Improved URLs with underscores.}
% \changes{v0.66}{2019/02/02}{Improved \HTML\ formatting.}
% \changes{v0.78}{2019/11/05}{Remove extra space.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\NewDocumentCommand{\LWR at subhyperrefclass}{m +m m}{%
\LWR at htmltag{%
a % space
- href="\begingroup\@sanitize#1\endgroup" % space
- class="#3" % space
+ href=\textquotedbl\begingroup\@sanitize#1\endgroup\textquotedbl\ % space
+ class=\textquotedbl#3\textquotedbl\ % space
\LWR at addlinktitle % space
}\LWR at orignewline%
#2%
@@ -31070,7 +33391,7 @@
-% \begin{macro}{\href} \oarg{options} \marg{URL}
+% \begin{macro}{\LWR at href} \oarg{options} \marg{URL}
%
% Create a link with accompanying text:
%
@@ -31078,6 +33399,7 @@
% \changes{v0.49}{2018/02/18}{Fix: Adapt to classes.}
% \changes{v0.52}{2018/03/26}{Fix: \progcode{\#}, \progcode{\%}, \progcode{\&}, \progcode{\~}, \progcode{\_} in \URL.}
% \changes{v0.57}{2018/06/05}{Fix: Text catcodes.}
+% \changes{v0.86}{2020/05/07}{\pkg{hyperref}: Adjusted emulation.}
% \begin{macrocode}
\DeclareDocumentCommand{\LWR at hrefb}{O{} m}{%
\LWR at ensuredoingapar%
@@ -31086,7 +33408,7 @@
\LWR at subhyperreftext%
}
-\newrobustcmd*{\href}{%
+\newrobustcmd*{\LWR at href}{%
\begingroup%
\LWR at linkcatcodes%
\LWR at hrefb%
@@ -31094,12 +33416,13 @@
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\nolinkurl} \marg{URL}
+% \begin{macro}{\LWR at nolinkurl} \marg{URL}
%
% Print the name of the link without creating the link:
% \changes{v0.43}{2017/10/31}{Made robust.}
% \changes{v0.45}{2017/12/29}{Fix: Underscore in \URL.}
% \changes{v0.52}{2018/03/26}{Fix: \progcode{\#}, \progcode{\%}, \progcode{\&}, \progcode{\~}, \progcode{\_} in \URL.}
+% \changes{v0.86}{2020/05/07}{\pkg{hyperref}: Adjusted emulation.}
% \begin{macrocode}
\newcommand*{\LWR at nolinkurlb}[1]{%
\LWR at ensuredoingapar%
@@ -31109,7 +33432,7 @@
\endgroup%
}
-\newrobustcmd*{\nolinkurl}{%
+\newrobustcmd*{\LWR at nolinkurl}{%
\begingroup%
\LWR at linkcatcodes%
\LWR at nolinkurlb%
@@ -31118,7 +33441,7 @@
% \end{macro}
-% \begin{macro}{\url} \marg{URL}
+% \begin{macro}{\LWR at url} \marg{URL}
%
% Create a link whose text name is the address of the link.
%
@@ -31129,16 +33452,17 @@
% \changes{v0.45}{2017/12/29}{Improved URLs with underscores.}
% \changes{v0.49}{2018/02/18}{Fix: Adapt to classes.}
% \changes{v0.52}{2018/03/26}{Fix: \progcode{\#}, \progcode{\%}, \progcode{\&}, \progcode{\~}, \progcode{\_} in \URL.}
+% \changes{v0.86}{2020/05/07}{\pkg{hyperref}: Adjusted emulation.}
% \begin{macrocode}
\DeclareDocumentCommand{\LWR at urlb}{m}{%
\LWR at ensuredoingapar%
\def\LWR at templink{#1}%
\@onelevel at sanitize\LWR at templink%
- \href{\LWR at templink}{\LWR at templink}%
+ \LWR at href{\LWR at templink}{\LWR at templink}%
\endgroup%
}
-\newrobustcmd*{\url}{%
+\newrobustcmd*{\LWR at url}{%
\begingroup%
\LWR at linkcatcodes%
\LWR at urlb%
@@ -31155,23 +33479,24 @@
% \changes{v0.18}{2016/05/18}{Suppress extra space.}
% \changes{v0.66}{2019/02/02}{Improved \HTML\ formatting.}
% \changes{v0.74}{2019/08/20}{Add \cs{ThisAltText}.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\newcommand*{\LWR at subinlineimage}[5]{%
\ifblank{#1}%
{%
\LWR at htmltag{img \LWR at indentHTML
- src="#3.#4" \LWR at indentHTML
- alt="#3" \LWR at indentHTML
- style="#5" \LWR at indentHTML
- class="#2" \LWR at orignewline
+ src=\textquotedbl#3.#4\textquotedbl \LWR at indentHTML
+ alt=\textquotedbl#3\textquotedbl \LWR at indentHTML
+ style=\textquotedbl#5\textquotedbl \LWR at indentHTML
+ class=\textquotedbl#2\textquotedbl \LWR at orignewline
}%
}%
{%
\LWR at htmltag{img \LWR at indentHTML
- src="#3.#4" \LWR at indentHTML
- alt="#1" \LWR at indentHTML
- style="#5" \LWR at indentHTML
- class="#2" \LWR at orignewline
+ src=\textquotedbl#3.#4\textquotedbl \LWR at indentHTML
+ alt=\textquotedbl#1\textquotedbl \LWR at indentHTML
+ style=\textquotedbl#5\textquotedbl \LWR at indentHTML
+ class=\textquotedbl#2\textquotedbl \LWR at orignewline
}%
}%
}
@@ -31225,12 +33550,11 @@
% \hrule
% \end{table}
%
-% \cs{@makecaption} is redefined to print the float number and caption text,
-% separated by \cs{CaptionSeparator}, which works with the \pkg{babel} package to
-% adjust the caption separator according to the language. French, for example,
-% uses an en-dash instead of a colon: ``Figure 123 -- Caption text''.
+% ^^A \cs{@makecaption} is redefined to print the float number and caption text,
+% ^^A separated by \cs{CaptionSeparator}, which works with the \pkg{babel} package to
+% ^^A adjust the caption separator according to the language. French, for example,
+% ^^A uses an en-dash instead of a colon: ``Figure 123 -- Caption text''.
-
% \subsection{Float environment}
% \codehtml
@@ -31244,6 +33568,13 @@
%
% \begin{macrocode}
\NewDocumentCommand{\LWR at floatbegin}{m o}{%
+% \end{macrocode}
+% Warn if starting a float inside a \element{span}:
+% \changes{v0.84}{2020/04/22}{Warn inside a \element{span}.}
+% \begin{macrocode}
+ \LWR at spanwarninvalid{float}%
+% \end{macrocode}
+% \begin{macrocode}
\ifbool{FormatWP}{\newline}{}%
\LWR at stoppars%
% \end{macrocode}
@@ -31268,10 +33599,13 @@
% \changes{v0.42}{2017/10/26}{If \progcode{FormatWP} add a text frame.}
% \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
% \changes{v0.56}{2018/05/14}{Adds a \element{class} per \pkg{float} package style.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\LWR at htmltag{%
- figure id="\LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}" % space
- class="#1 \@nameuse{LWR at floatstyle@#1}"%
+ figure id=\textquotedbl%
+ \LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}%
+ \textquotedbl\ % space
+ class=\textquotedbl#1 \@nameuse{LWR at floatstyle@#1}\textquotedbl%
}%
\ifbool{FormatWP}{%
\LWR at orignewline%
@@ -31281,7 +33615,6 @@
% Update the caption type:
% \begin{macrocode}
\renewcommand*{\@captype}{#1}%
- \caption at settype{#1}%
% \end{macrocode}
% Mark the float for a word processor conversion:
% \begin{macrocode}
@@ -31292,11 +33625,9 @@
}{}%
% \end{macrocode}
-% Look for \cs{centering}, etc:
-% \changes{v0.54}{2018/04/19}{Honor \cs{centering}, etc. in floats.}
-% \changes{v0.55}{2018/04/24}{Fix: Float optional args.}
+% After each \cs{LWR at floatbegin}, look for \cs{centering}, etc next,
+% using \cs{LWR at floatalignment}.
% \begin{macrocode}
- \LWR at futurenonspacelet\LWR at mynexttoken\LWR at floatalignment%
}
% \end{macrocode}
% \end{macro}
@@ -31319,11 +33650,25 @@
%
%
%
-% \begin{macro}{\@float}
-% \begin{macro}{\@dlbfloat} Support packages which create floats directly.
+% \begin{macro}{\@xfloat}
+% \begin{macro}{\@xdlbfloat} Support packages which create floats directly.
+%
+% Look for \cs{centering}, etc using \cs{LWR at floatalignment}.
+%
+% \changes{v0.54}{2018/04/19}{Honor \cs{centering}, etc. in floats.}
+% \changes{v0.55}{2018/04/24}{Fix: Float optional args.}
+% \changes{v0.84}{2020/04/19}{\pkg{caption} now optional.}
% \begin{macrocode}
-\let\@float\LWR at floatbegin
-\let\@dblfloat\LWR at floatbegin
+\AtBeginDocument{
+ \def\@xfloat #1[#2]{%
+ \LWR at floatbegin{#1}[#2]
+ \LWR at futurenonspacelet\LWR at mynexttoken\LWR at floatalignment%
+ }
+ \def\@xdblfloat #1[#2]{%
+ \LWR at floatbegin{#1}[#2]
+ \LWR at futurenonspacelet\LWR at mynexttoken\LWR at floatalignment%
+ }
+}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -31365,9 +33710,12 @@
%
% \begin{macro}{\end at float}
% \begin{macro}{\end at dlbfloat} Support packages which create floats directly.
+% \changes{v0.84}{2020/04/19}{\pkg{caption} now optional.}
% \begin{macrocode}
-\let\end at float\LWR at floatend
-\let\end at dblfloat\LWR at floatend
+\AtBeginDocument{
+ \let\end at float\LWR at floatend
+ \let\end at dblfloat\LWR at floatend
+}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -31402,11 +33750,27 @@
% \begin{macro}{\LWR at forcenewautoidanchor}
% Adds a new \element{autoid} anchor.
% \changes{v0.79}{2019/12/09}{Factored.}
+% \changes{v0.84}{2020/04/16}{\element{par} handling.}
+% \changes{v0.88}{2020/07/04}{Inline handling.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\newcommand*{\LWR at forcenewautoidanchor}{%
\addtocounter{LWR at thisautoid}{1}%
- \LWR at htmltag{a id="\LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}"}%
- \LWR at htmltag{/a}%
+ \ifbool{LWR at doingapar}%
+ {%
+ \LWR at htmltag{a id=\textquotedbl%
+ \LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}%
+ \textquotedbl\ }% space
+ \LWR at htmltag{/a }%
+ }%
+ {%
+ \LWR at stoppars%
+ \LWR at htmltag{a id=\textquotedbl%
+ \LWR at print@mbox{autoid-\arabic{LWR at thisautoid}}%
+ \textquotedbl\ }% space
+ \LWR at htmltag{/a }%
+ \LWR at startpars%
+ }%
}
% \end{macrocode}
% \end{macro}
@@ -31479,7 +33843,9 @@
% \subsection{Caption inside a float environment}
-% \begin{macro}{\CaptionSeparator} How to separate the float number and the caption text.
+% \begin{macro}{\CaptionSeparator} How to separate the float number and the caption text,
+% if not defined by the user.
+% In most cases, \pkg{caption}'s settings are used instead.
% \changes{v0.13}{2016/03/23}{Fix for newer babel package.}
% \begin{macrocode}
\AtBeginDocument{\providecommand*{\CaptionSeparator}{:~}}
@@ -31486,27 +33852,57 @@
% \end{macrocode}
% \end{macro}
+
+% \begin{macro}{\@caption} \marg{posn} \oarg{name} \marg{long name}
% \begin{macro}{\@makecaption} \marg{name and num} \marg{text}
%
% Prints the float type and number, the caption separator, and the caption text.
+%
+% \cs{@caption} is provided here in case \pkg{caption} is not loaded, and
+% is based on the \pkg{nameref} package.
+%
+% \changes{v0.84}{2020/04/20}{\pkg{caption} now optional.}
% \begin{macrocode}
-\AtBeginDocument{\renewcommand{\@makecaption}[2]{%
- \LWR at traceinfo{@makecaption}%
- \LWR at isolate{#1}\CaptionSeparator\LWR at isolate{#2}%
- \LWR at traceinfo{@makecaption: done}%
-}%
+\AtBeginDocument{
+ \@ifpackageloaded{caption}{}{
+ \let\LWR at orig@caption\@caption%
+ \long\def\@caption#1[#2]{%
+% \end{macrocode}
+% Warn if using a caption inside a \element{span}:
+% \changes{v0.84}{2020/04/22}{Warn inside a \element{span}.}
+% \begin{macrocode}
+ \LWR at spanwarnformat{caption}%
+% \end{macrocode}
+% \begin{macrocode}
+ \LWR at setlatestname{#2}%
+ \LWR at orig@caption{#1}[{#2}]% also takes third argument
+ }%
+
+ \renewcommand{\@makecaption}[2]{%
+ \LWR at traceinfo{@makecaption}%
+ \caption at begin{\@captype}%
+ \LWR at isolate{#1}%
+ \edef\LWR at tempone{#1}%
+ \ifdefvoid{\LWR at tempone}{}{\CaptionSeparator}%
+ \LWR at isolate{#2}%
+ \caption at end%
+ \LWR at traceinfo{@makecaption: done}%
+ }%
+ }
}
% \end{macrocode}
% \end{macro}
+% \end{macro}
% \subsection{Caption and \LOF\ linking and tracking}
% When a new \HTML\ file is marked in the \LaTeX\ \PDF\ file,
+% or at the start of a new section,
% the \LaTeX\ page number at that point is stored in |LWR at latestautopage|,
% (and the associated filename is remembered by the special \LaTeX\ labels).
% This page number is used to generate an |autopage| \HTML\ \element{id}
-% in the \HTML\ output at the start of the new \HTML\ file.
+% in the \HTML\ output at the start of the new \HTML\ file or section.
% Meanwhile, there is a float counter used to generate an \HTML\ |autoid|
% \element{id} at the start of the float itself in the \HTML\ file.
% The |autopage| and |autoid| values to use for each float are written to the
@@ -31541,8 +33937,10 @@
% \end{macrocode}
% \end{macro}
+
% \DescribeCounter{LWR at latestautopage}
-% Updated each time a new \HTML\ file is begun.
+% The \HTML\ output's \PDF\ page number at the start of a new \HTML\ file or section.
+%
% \cs{LWRsetnextfloat} is written with this and the |autoid|
% by the modified \cs{addcontentsline} just before each float's entry.
% \begin{macrocode}
@@ -31579,7 +33977,7 @@
%
% Low-level code to create \HTML\ tags for captions.
%
-% The print versions are from the \pkg{caption} package.
+% The print versions are from the \pkg{caption} package, if loaded.
%
% \changes{v0.47}{2018/01/28}{Fix: Argument passed to \cs{LWR at origcaption@begin}.}
% \changes{v0.58}{2018/06/07}{Improved print/\HTML\ output selection.}
@@ -31632,10 +34030,17 @@
% These are assigned \cs{AtBeginDocument} so that other packages
% which modify captions will have already been loaded before saving the
% print-mode version.
+%
+% Print versions are provided here in case \pkg{caption} is not loaded.
+%
+% \changes{v0.84}{2020/04/20}{\pkg{caption} now optional.}
% \begin{macrocode}
\AtBeginDocument{
-\LWR at formatted{caption at begin}
-\LWR at formatted{caption at end}
+ \providecommand{\caption at begin}[1]{}
+ \LWR at formatted{caption at begin}
+
+ \providecommand{\caption at end}{}
+ \LWR at formatted{caption at end}
}
% \end{macrocode}
% \end{macro}
@@ -31646,28 +34051,37 @@
% Tracks the float number for this caption used outside a float.
% Patched to create an \HTML\ anchor.
% \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.84}{2020/04/20}{\pkg{caption} now optional.}
% \begin{macrocode}
-\let\LWR at origcaptionlistentry\captionlistentry
+\AtBeginDocument{%
+\@ifpackageloaded{caption}{
+ \let\LWR at origcaptionlistentry\captionlistentry
-\renewcommand*{\captionlistentry}{%
- \LWR at ensuredoingapar%
- \LWR at origcaptionlistentry%
-}
+ \renewcommand*{\captionlistentry}{%
+ \LWR at ensuredoingapar%
+ \LWR at origcaptionlistentry%
+ }
% \end{macrocode}
%
% \changes{v0.79}{2019/12/09}{Fix: Duplicate \attribute{auto-id}.}
% \begin{macrocode}
-\def\LWR at LTcaptionlistentry{%
- \LWR at ensuredoingapar%
- \LWR at forcenewautoidanchor%
- \bgroup
- \@ifstar{\egroup\LWR at LT@captionlistentry}% gobble *
- {\egroup\LWR at LT@captionlistentry}%
-}%
+ \def\LWR at LTcaptionlistentry{%
+ \LWR at ensuredoingapar%
+ \LWR at forcenewautoidanchor%
+ \bgroup%
+ \@ifstar{\egroup\LWR at LT@captionlistentry}% gobble *
+ {\egroup\LWR at LT@captionlistentry}%
+ }%
-\def\LWR at LT@captionlistentry#1{%
- \caption at listentry\@firstoftwo[\LTcaptype]{#1}%
-}%
+ \def\LWR at LT@captionlistentry#1{%
+ \caption at listentry\@firstoftwo[\LTcaptype]{#1}%
+ }%
+}% caption loaded
+{% caption not loaded
+ \newcommand{\captionlistentry}[2][]{}%
+ \newcommand{\LWR at LT@captionlistentry}[2][]{}%
+}
+}% AtBeginDocument
% \end{macrocode}
% \end{macro}
@@ -31715,16 +34129,17 @@
%
% \begin{macro}{\captionof}
% Patched to handle paragraph tags.
+% \changes{v0.84}{2020/04/20}{\pkg{caption} now optional.}
% \begin{macrocode}
+\RequirePackage{capt-of}
+
\AtBeginDocument{
+ \let\LWR at origcaptionof\captionof
-\let\LWR at origcaptionof\captionof
-
-\renewcommand*{\captionof}{%
- \LWR at stoppars%
- \LWR at origcaptionof%
-}
-
+ \renewcommand*{\captionof}{%
+ \LWR at stoppars%
+ \LWR at origcaptionof%
+ }
}% AtBeginDocument
% \end{macrocode}
% \end{macro}
@@ -31980,10 +34395,11 @@
%
% It may be renamed by redefining \cs{sidetocname}, and may contain paragraphs.
%
-% \CSS\ may be used to format the side\TOC:
+% Per \cref{tab:sidetoccss}, \CSS\ may be used to format the side\TOC.
%
-% \begin{docsidebar}[CSS related to side\TOC:]
-% \vspace*{-\baselineskip}
+% \begin{table}[h]
+% \caption{CSS related to the side\TOC}
+% \label{tab:sidetoccss}
% \begin{description}[parsep=0ex]
% \vspace*{-\baselineskip}
% \item [|div.sidetoccontainer|:] The entire side\TOC.
@@ -31990,8 +34406,7 @@
% \item [|div.sidetoctitle|:] The title.
% \item [|div.sidetoccontents|:] The table of contents.
% \end{description}
-% \vspace*{-\baselineskip}
-% \end{docsidebar}
+% \end{table}
% \begin{macrocode}
\end{warpHTML}
@@ -32010,7 +34425,7 @@
\newcounter{SideTOCDepth}
\setcounter{SideTOCDepth}{1}
-\AtBeginDocument{%
+\AtEndDocument{%
\ifnumcomp{\value{SideTOCDepth}}{<}{\value{FileDepth}}{
\PackageWarningNoLine{lwarp}
{%
@@ -32123,7 +34538,8 @@
% \end{macrocode}
% Respond to |tocdepth|:
% \begin{macrocode}
- \ifthenelse{\cnttest{#1}{<=}{\value{tocdepth}}}%
+ \ifnumcomp{#1}{>}{\value{tocdepth}}%
+ {}%
{%
\LWR at startpars%
% \end{macrocode}
@@ -32148,7 +34564,6 @@
% \begin{macrocode}
\LWR at stoppars%
}%
- {}%
\LWR at traceinfo{hypertoc done}%
}
% \end{macrocode}
@@ -32186,7 +34601,6 @@
%
% \begin{macrocode}
\newcommand{\hypertocfloat}[5]{%
- \LWR at startpars%
% \end{macrocode}
% If some float-creation package has not yet defined
% the float type's |lofdepth| counter, etc, define it here:
@@ -32343,7 +34757,18 @@
% \end{macrocode}
+% \begin{macro}{\IndexPageSeparator}
+% \begin{macro}{\IndexRangeSeparator}
+% User-adjustable delimiters for page and range separators in the \filenm{*.ind} files.
+% \changes{v0.88}{2020/07/16}{Added.}
+% \begin{macrocode}
+\newcommand*{\IndexPageSeparator}{, }
+\newcommand*{\IndexRangeSeparator}{--}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+
% \begin{environment}{theindex}
% \begin{macrocode}
\@ifundefined{chapter}
@@ -32399,15 +34824,76 @@
% \end{macro}
-% \begin{macro}{\@wrindex} \marg{term} \qquad
+% \begin{macro}{\LWR at xindex@modifyentry} \marg{indexing term}
+%
+% If using \prog{xindex}, modifies the pipe character to become \cs{hyperindexformat}.
+% The indexing term is split into two argument at the pipe, then fed to
+% \cs{LWR at xindex@modifyentrysub}.
+%
+% \changes{v0.88}{2020/07/12}{Added support for \prog{xindex}.}
+% \begin{macrocode}
+\NewDocumentCommand{\LWR at xindex@modifyentry}{>{\SplitArgument{1}{|}}m}
+ {\LWR at xindex@modifyentrysub#1}
+% \end{macrocode}
+%
+% Handle left and right parenthesis range argument,
+% or add a |hyperindexformat| clause.
+% \begin{macrocode}
+\newcommand*{\LWR at xindex@modifyentrysub}[2]{%
+ \edef\LWR at tempone{#1}%
+ \edef\LWR at temptwo{#2}%
+ \IfValueTF{#2}{%
+ \ifx#2(%
+ \appto\LWR at tempone{|(}%
+ \else%
+ \ifx#2)%
+ \appto\LWR at tempone{|)}%
+ \else%
+ \appto\LWR at tempone{%
+ |hyperindexformat\LWRleftbrace%
+ \LWRbackslash#2%
+ \LWRrightbrace%
+ }%
+ \fi%
+ \fi%
+ }%
+ {}%
+}
+% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\@wrindex} \marg{indexing term} \qquad
% Redefined to write the |LWR at autoindex| counter instead of |page|.
+%
+% If using \prog{xindex}, the first line is a comment
+% including a special phrase which tricks \prog{xindex} into
+% thinking that \pkg{hyperref} was used.
+%
% \changes{v0.28}{2017/04/13}{Improved indexing.}
+% \changes{v0.88}{2020/07/12}{Added support for \prog{xindex}.}
% \begin{macrocode}
+\newbool{LWR at xindex@tricked}
+\boolfalse{LWR at xindex@tricked}
+
\def\LWR at wrindex#1{%
+ \ifbool{LWR at xindex}{%
+ \ifbool{LWR at xindex@tricked}{}{%
+ \protected at write\@indexfile{}%
+ {%
+ \LWRpercent\space hyperpage\LWRrightbrace%
+ \LWRpercent\space trick xindex to assume hyperref%
+ }%
+ \global\booltrue{LWR at xindex@tricked}%
+ }%
+ \LWR at xindex@modifyentry{#1}%
+ }{%
+ \def\LWR at tempone{#1}%
+ }%
\addtocounter{LWR at autoindex}{1}%
- \LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%
+ \label{LWRindex-\arabic{LWR at autoindex}}%
\protected at write\@indexfile{}%
- {\string\indexentry{#1}{\arabic{LWR at autoindex}}}%
+ {\string\indexentry{\LWR at tempone}{\arabic{LWR at autoindex}}}%
\endgroup%
\@esphack%
}
@@ -32434,29 +34920,200 @@
% \end{macro}
+% \begin{macro}{\LWR at indexnameref@anonref} \marg{LWR at autoindex}
+%
+% Displays a reference link where there no \cs{ref} available.
+% \begin{macrocode}
+\newcommand*{\LWR at indexnameref@anonref}[1]{%
+ \LWR at startref{LWRindex-#1}%
+ (*)%
+ \LWR at htmltag{/a}%
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\LWR at indexnameref@ref} \marg{LWR at autoindex}
+%
+% Creates \cs{ref}-style index references.
+% To avoid an unwanted space if there is nothing to reference,
+% the reference is checked first.
+% \begin{macrocode}
+\newcommand*{\LWR at indexnameref@ref}[1]{%
+ \edef\LWR at thisref{\csuse{r at LWRindex-#1}}%
+ \ifdefvoid{\LWR at thisref}{}{%
+ \edef\LWR at thisref{\expandafter\@firstoftwo\LWR at thisref}%
+ \ifdefvoid{\LWR at thisref}%
+ {\LWR at indexnameref@anonref{#1}}%
+ {\ref{LWRindex-#1}}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\LWR at indexnameref@refnameref} \marg{LWR at autoindex}
+%
+% Creates \cs{ref}-style index references.
+% To avoid an unwanted space if there is nothing to reference,
+% the reference is checked first.
+% For links to starred or |??| objects, only the name is used.
+% \begin{macrocode}
+\newcommand*{\LWR at indexnameref@refnameref}[1]{%
+ \edef\LWR at thisref{\csuse{r at LWRindex-#1}}%
+ \ifdefvoid{\LWR at thisref}{}{%
+ \edef\LWR at thisref{\expandafter\@firstoftwo\LWR at thisref}%
+ \ifdefvoid{\LWR at thisref}{}{%
+ \ifdefstring{\LWR at thisref}{(*)}%
+ {}%
+ {\ref{LWRindex-#1} }% space
+ }%
+ }%
+ \nameref{LWRindex-#1}%
+}
+% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\LWR at indexnameref@cref} \marg{LWR at autoindex}
+%
+% Creates \cs{cref}-style index references.
+% If no numbered reference is available, a \cs{nameref} is used instead.
+% If the reference is |??|, which will be changed by \cs{LWR at indexnameref}
+% to become |(*)|, then the link is changed to show |(*)|.
+% \begin{macrocode}
+\newcommand*{\LWR at indexnameref@cref}[1]{%
+ \edef\LWR at thisref{\csuse{r at LWRindex-#1}}%
+ \ifdefvoid{\LWR at thisref}{%
+ \nameref{LWRindex-#1}%
+ }{%
+ \edef\LWR at thisref{\expandafter\@firstoftwo\LWR at thisref}%
+ \ifdefvoid{\LWR at thisref}{%
+ \nameref{LWRindex-#1}%
+ }{%
+ \ifdefstring{\LWR at thisref}{(*)}{%
+ \LWR at indexnameref@anonref{#1}%
+ }{%
+ \cref{LWRindex-#1}%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\LWR at indexnameref@crefnameref} \marg{LWR at autoindex}
+%
+% Creates \cs{cref}-style index references.
+% If no numbered reference is available, a \cs{nameref} is used instead.
+% If the reference is |??|, which will be changed by \cs{LWR at indexnameref}
+% to become |(*)|, then the link is changed to show only the name.
+% \begin{macrocode}
+\newcommand*{\LWR at indexnameref@crefnameref}[1]{%
+ \edef\LWR at thisref{\csuse{r at LWRindex-#1}}%
+ \ifdefvoid{\LWR at thisref}%
+ {}%
+ {%
+ \edef\LWR at thisref{\expandafter\@firstoftwo\LWR at thisref}%
+ \ifdefvoid{\LWR at thisref}%
+ {}%
+ {%
+ \ifdefstring{\LWR at thisref}{(*)}%
+ {}%
+ {\cref{LWRindex-#1}} % space
+ }%
+ }%
+ \nameref{LWRindex-#1}%
+}
+% \end{macrocode}
+% \end{macro}
+
+
% \begin{macro}{\LWR at indexnameref} \marg{LWR at autoindex}
%
% Creates a hyperlink based on the given entry's autoindex.
+% \changes{v0.88}{2020/07/19}{Added \optn{IndexRef} option, refactored.}
% \begin{macrocode}
-\newcommand*{\LWR at indexnameref}[1]{\nameref{LWRindex-#1}}
+\newcommand*{\LWR at indexnameref}[1]{%
+ {% group
% \end{macrocode}
+% Temporarily redefine \pkg{caption}'s \cs{caption at xref} because it was printing |??|
+% in the indexes, and also causing error on expansion:
+% \begin{macrocode}
+ \ifdef{\caption at xref}{%
+ \renewcommand*{\caption at xref}[2]{(*)}%
+ }{}%
+% \end{macrocode}
+% \begin{macrocode}
+ \ifdefstring{\LWR at IndexRef}{ref}{%
+ \LWR at indexnameref@ref{#1}%
+ }{%
+ \ifdefstring{\LWR at IndexRef}{nameref}{%
+ \nameref{LWRindex-#1}%
+ }{%
+ \ifdefstring{\LWR at IndexRef}{refnameref}{%
+ \LWR at indexnameref@refnameref{#1}%
+ }{%
+ \ifdefstring{\LWR at IndexRef}{cref}{%
+ \LWR at indexnameref@cref{#1}%
+ }{%
+ \ifdefstring{\LWR at IndexRef}{crefnameref}{%
+ \LWR at indexnameref@crefnameref{#1}%
+ }{%
+ \ifdefstring{\LWR at IndexRef}{autoref}{%
+ \LWR at indexnameref@cref{#1}%
+ }{% text string
+ \LWR at startref{LWRindex-#1}%
+ \LWR at IndexRef%
+ \LWR at htmltag{/a}%
+ }}}}}}%
+ }% group
+}
+% \end{macrocode}
% \end{macro}
-% \begin{macro}{\LWR at doindexentry} \marg{LWR at autoindex, or macros.}
+% \begin{macro}{\LWR at doindexentrysubsub} \marg{range start: LWR at autoindex, or macros.} \marg{range end or blank}
%
% Creates a hyperlink, or handles \cs{see}, \cs{textbf}, etc.
%
% \changes{v0.58}{2018/06/17}{Adds support for \cs{see}, \cs{seealso}, \cs{emph}, \cs{textbf}, etc.}
+% \changes{v0.88}{2020/07/11}{Handles a range, for \prog{xindex}.}
% \begin{macrocode}
-\newrobustcmd{\LWR at doindexentry}[1]{%
+\newrobustcmd{\LWR at doindexentrysubsub}[2]{%
\IfInteger{#1}%
{\LWR at indexnameref{#1}}%
{#1}%
+ \IfValueT{#2}{%
+ \IndexRangeSeparator%
+ \IfInteger{#2}%
+ {\LWR at indexnameref{#2}}%
+ {#2}%
+ }%
}
% \end{macrocode}
% \end{macro}
+%
+% \begin{macro}{\LWR at doindexentrysub}
+% \marg{range delimiter} \marg{LWR at autoindex or macros, possible a range}
+% \changes{v0.88}{2020/07/15}{Adapts to \pkg{gindex}.}
+% \begin{macrocode}
+\NewDocumentCommand{\LWR at doindexentrysub}{m >{\SplitArgument{1}{#1}}m}
+ {\LWR at doindexentrysubsub#2}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\LWR at doindexentry} \marg{LWR at autoindex or macros, possible a range}
+% \changes{v0.88}{2020/07/15}{Adapts to \pkg{gindex}.}
+% \begin{macrocode}
+\newcommand*{\LWR at doindexentry}[1]{%
+ \relax% required
+ \expandafter\LWR at doindexentrysub\expandafter{\IndexRangeSeparator}{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+
+
% \begin{macro}{\LWR at hyperindexrefnullified}
% Handles macros commonly seen inside an \cs{index} entry.
% Each macro is redefined to create and format a link to its entry.
@@ -32491,18 +35148,94 @@
% \end{macro}
-% \begin{macro}{\hyperindexref} \marg{LWR at autoindex}
+% \begin{macro}{\hyperindexref} \marg{list of LWR at autoindex, commas, and ranges}
%
% |\hyperindexref{LWR at autoindex}| is inserted into |*.ind| by
-% the \pkg{makeindex} style file \filenm{lwarp.ist} or
-% the \pkg{xindy} style file \filenm{lwarp.xdy}.
+% the \prog{makeindex} style file \filenm{lwarp.ist} or
+% the \prog{xindy} style file \filenm{lwarp.xdy}.
+% For \prog{xindex}, \cs{hyperpage} is inserted, which is \cs{let} to \cs{hyperindexref}.
+% For \prog{gindex}, \cs{addindexitem} and related are inserted, which
+% are defined to use \cs{hyperindexref}.
%
+% The argument is split at commas, and also for ranges,
+% then passed to \cs{LWR at hyperindexrefsub}.
+%
+% \changes{v0.88}{2020/07/14}{Rewritten to parse commas and ranges.}
+% \begin{macrocode}
+\newcommand*{\hyperindexref}[1]{%
+ \relax% required
+ \expandafter\LWR at hyperindexref@comma\expandafter{\IndexPageSeparator}{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\LWR at hyperindexref@comma} \marg{separator} \marg{list of args}
+%
+% The list is split at commas, and passed to \cs{LWR at hyperindexref@@comma}.
+% \begin{macrocode}
+\NewDocumentCommand{\LWR at hyperindexref@comma}
+ {m >{\SplitList{#1}} m}
+ {%
+% \end{macrocode}
+% Used to place the separtor between each entry, but not before the first.
+% \begin{macrocode}
+ \def\LWR at hyperindexref@thiscomma{}%
+ \def\LWR at hyperindexref@nextcomma{#1}%
+% \end{macrocode}
+% Each comma-delimited entry is now passed individually to \cs{LWR at hyperindexref@@comma}.
+% \begin{macrocode}
+ \ProcessList{#2}\LWR at hyperindexref@@comma%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\LWR at hyperindexref@@comma} \marg{arg, perhaps with a range}
+%
+% A comma separator is placed if not the first item,
+% then the range is parsed.
+% \begin{macrocode}
+\newcommand*{\LWR at hyperindexref@@comma}[1]{%
+ \LWR at hyperindexref@thiscomma%
+ \renewcommand{\LWR at hyperindexref@thiscomma}{\LWR at hyperindexref@nextcomma}%
+ \expandafter\LWR at hyperindexref@range\expandafter{\IndexRangeSeparator}{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\LWR at hyperindexref@range} \marg{range delimiter} \marg{arg}
+% \begin{macrocode}
+\NewDocumentCommand{\LWR at hyperindexref@range}
+ {m >{\SplitArgument{1}{#1}} m}
+ {\LWR at hyperindexrefsub#2}
+% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\LWR at hyperindexrefsub}
+% \marg{range start: LWR at autoindex}
+% \marg{range end, or |-NoValue-|}
+%
+% Handles the start and end of a range, if applicable.
+% \begin{macrocode}
+\newcommand*{\LWR at hyperindexrefsub}[2]{%
+ \LWR at hyperindexrefsubtwo{#1}%
+ \IfValueT{#2}{%
+ \IndexRangeSeparator%
+ \LWR at hyperindexrefsubtwo{#2}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\LWR at hyperindexrefsubtwo} \marg{LWR at autoindex}
+%
% \changes{v0.20}{2016/12/19}{Print mode provided in case \pkg{hyperref} not used.}
% \changes{v0.28}{2017/04/13}{Improved indexing.}
% \changes{v0.58}{2018/06/17}{Adds support for \cs{see}, \cs{seealso}, \cs{emph}, \cs{textbf}, etc.}
% \changes{v0.66}{2019/02/05}{Fix: Long index entries.}
+% \changes{v0.88}{2020/07/11}{Adds support for a range, for \prog{xindex}.}
% \begin{macrocode}
-\newcommand{\hyperindexref}[1]{%
+\newcommand*{\LWR at hyperindexrefsubtwo}[1]{%
% \end{macrocode}
% In long index lines with numerous entries,
% \prog{makeindex} can insert a newline before the page number,
@@ -32510,7 +35243,7 @@
% If the first character is a space, remove it first.
% ^^A Or use the trimspaces package.
% \begin{macrocode}
- \def\LWR at tempone{#1}%
+ \edef\LWR at tempone{#1}%
\IfBeginWith{\LWR at tempone}{ }{%
\StrGobbleLeft{\LWR at tempone}{1}[\LWR at tempone]%
}{}%
@@ -32532,7 +35265,32 @@
% \end{macrocode}
% \end{macro}
+
+% \begin{macro}{\hyperpage} Emulate \pkg{hyperref}.
+% \changes{v0.88}{2020/07/12}{Added.}
% \begin{macrocode}
+\LetLtxMacro\hyperpage\hyperindexref
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\nohyperpage} Emulate \pkg{hyperref}.
+% \changes{v0.88}{2020/07/12}{Added.}
+% \begin{macrocode}
+\def\nohyperpage#1{}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\hyperindexformat} Emulate \pkg{hyperref}.
+% \changes{v0.88}{2020/07/12}{Added.}
+% \begin{macrocode}
+\def\hyperindexformat#1#2{%
+ #1{\hyperpage{#2}}%
+}%
+% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macrocode}
\end{warpHTML}
% \end{macrocode}
@@ -32564,6 +35322,7 @@
%
%
% \section{Bibliography presentation}
+% ^^A *bibliography
%
% \codehtml
% \begin{macrocode}
@@ -32571,21 +35330,12 @@
% \end{macrocode}
%
%
-% \begin{macro}{\bibliography} \marg{filenames}
-%
-% Modified to use the base jobname instead of the |_html| jobname.
-% \changes{v0.48}{2018/02/04}{Fix: \cs{BaseJobname} for bibliography.}
-% \begin{macrocode}
-\def\bibliography#1{%
- \if at filesw
- \immediate\write\@auxout{\string\bibdata{#1}}%
- \fi
-% \@input@{\jobname.bbl}% original
- \begingroup%
- \@input@{\BaseJobname.bbl}% lwarp
- \endgroup%
-}
-% \end{macrocode}
+% \begin{macro}{\bibliography} \marg{filenames} \qquad
+% At one time this was modified to read \cs{BaseJobname}\filenm{.bbl},
+% which meant the \HTML\ version could not resolve until the print version was
+% also present. This also confused \pkg{multibib}.
+% It has been reverted to the original to use \cs{jobname}\filenm{.bbl}.
+% \changes{v0.87}{2020/05/17}{Reverted to original.}
% \end{macro}
%
%
@@ -32646,6 +35396,24 @@
% \section{Restoring original formatting}
%
+% \codehtml
+% \begin{macrocode}
+\begin{warpHTML}
+% \end{macrocode}
+%
+%
+% \begin{macro}{\LWR at restoreMathJaxformatting}
+% A few macros (ref: \pkg{tcolorbox}) must be treated
+% separately while printing the \HTML\
+% comment for a \brand{MathJax} expression.
+% These are set here, to which other functions may be appended.
+% \changes{v0.88}{2020/06/25}{Added.}
+% \begin{macrocode}
+\newcommand*{\LWR at restoreMathJaxformatting}{}
+% \end{macrocode}
+% \end{macro}
+%
+%
% \begin{macro}{\LWR at restoreorigformatting}
% Used to temporarily restore
% the print-mode meaning of a number of formatting, graphics, and symbols-related
@@ -32669,12 +35437,7 @@
% \changes{v0.40}{2017/09/09}{Improved \protect\LaTeX\ logos inside a \env{lateximage}.}
% \changes{v0.40}{2017/09/09}{Nullified \cs{InlineClass}, etc. inside a \env{lateximage}.}
-% \codehtml
% \begin{macrocode}
-\begin{warpHTML}
-% \end{macrocode}
-
-% \begin{macrocode}
\newcommand*{\LWR at restoreorigformatting}{%
\LWR at traceinfo{LWR at restoreorigformatting}%
% \end{macrocode}
@@ -32705,6 +35468,12 @@
\let\thinspace\LWR at origthinspace% disable HTML short unbreakable space
\let\negthinspace\LWR at orignegthinspace% disable HTML negative short unbreakable space
\let\textellipsis\LWR at origtextellipsis%
+% \end{macrocode}
+% \changes{v0.88}{2020/07/03}{Added \cs{vdots}.}
+% \begin{macrocode}
+ \let\vdots\LWR at origvdots%
+% \end{macrocode}
+% \begin{macrocode}
\let\textless\LWR at origtextless%
\let\textgreater\LWR at origtextgreater%
% \end{macrocode}
@@ -32718,10 +35487,6 @@
\LetLtxMacro\normalfont\LWR at orignormalfont%
\let\sp\LWR at origsp%
\let\sb\LWR at origsb%
- \LetLtxMacro\textsuperscript\LWR at origtextsuperscript%
- \LetLtxMacro\@textsuperscript\LWR at orig@textsuperscript%
- \LetLtxMacro\textsubscript\LWR at origtextsubscript%
- \LetLtxMacro\@textsubscript\LWR at orig@textsubscript%
\LetLtxMacro\underline\LWR at origunderline%
\let~\LWR at origtilde%
\let\enskip\LWR at origenskip%
@@ -32758,7 +35523,15 @@
\LWR at restoreorigaccents%
\LWR at restoreoriglists%
%
- \LWR at FBcancel%
+ \LWR at hook@processingtags%
+% \end{macrocode}
+%
+% To enable \brand{MathJax}-specific nullification, used for \pkg{tcolorbox}:
+% \changes{v0.88}{2020/06/25}{Support for \brand{MathJax}.}
+% \begin{macrocode}
+ \ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
+ {\LWR at restoreMathJaxformatting}%
+ {}%
}
% \end{macrocode}
% \end{macro}
@@ -32768,12 +35541,230 @@
% \end{macrocode}
%
%
+% \section{Nullifying filename formatting}
%
+% The following are used to nullify certain macros and
+% environments while converting section names to file names.
+%
+%
+% \codehtml
+% \begin{macrocode}
+\begin{warpHTML}
+% \end{macrocode}
+%
+%
+% Also commonly used are \cs{@empty}, \cs{@gobble}, and \cs{@firstofone}.
+%
+% \begin{macrocode}
+\newcommand*{\LWR at dash}{-}
+% \end{macrocode}
+%
+%
+% \begin{macro}{\LWR at nullfonts} Removes formatting during filename operations,
+% file references, and \HTML\ comments.
+%
+% \textred{Use only inside a group.}\watchout
+%
+% The following are \emph{not} made robust,
+% since they must be expanded to their nullified versions.
+%
+% \changes{v0.34}{2017/08/05}{Improved font control.}
+% \changes{v0.36}{2017/08/15}{Fix: Filenames while using \brand{MathJax}.}
+% \changes{v0.40}{2017/09/21}{Fix: Long arguments for expandable command.}
+% \changes{v0.43}{2017/10/31}{Fix: Nullify dollar inside filesnames.}
+% \changes{v0.48}{2018/02/04}{Fix: \cs{newline} in title.}
+% \changes{v0.65}{2018/12/09}{Added \cs{textsi}.}
+% \changes{v0.84}{2020/04/11}{Factored out redefinitions.}
+% \changes{v0.84}{2020/04/12}{Fix: Accents.}
+% \begin{macrocode}
+\catcode`\$=\active% redefining $ below
+\catcode`\_=12% redefining \_ below
+\newcommand*{\LWR at nullfonts}{%
+% \end{macrocode}
+% Various built-in symbols.
+% \changes{v0.67}{2019/02/13}{Add'l symbols.}
+% \changes{v0.84}{2020/04/12}{Add'l symbols.}
+% \begin{macrocode}
+ \renewcommand*{\$}{-}%
+ \renewcommand*{\%}{-}%
+ \renewcommand*{\_}{-}%
+ \renewcommand*{\}}{-}%
+ \renewcommand*{\{}{-}%
+ \renewcommand*{\&}{-}% used to be 'and'
+ \renewcommand*{\#}{-}%
+ \renewcommand*{\,}{-}%
+ \renewcommand*{~}{-}%
+%
+% accents:
+ \renewcommand*{\`}[1]{##1}%
+ \renewcommand*{\'}[1]{##1}%
+ \renewcommand*{\^}[1]{##1}%
+ \renewcommand*{\~}[1]{##1}%
+ \renewcommand*{\=}[1]{##1}%
+ \renewcommand*{\u}[1]{##1}%
+ \renewcommand*{\.}[1]{##1}%
+ \renewcommand*{\"}[1]{##1}%
+ \renewcommand*{\H}[1]{##1}%
+ \renewcommand*{\v}[1]{##1}%
+ \renewcommand*{\d}[1]{##1}%
+ \renewcommand*{\c}[1]{##1}%
+ \renewcommand*{\b}[1]{##1}%
+ \renewcommand*{\t}[1]{##1}%
+%
+ \let\newline\LWR at dash%
+ \let\textasciicircum\LWR at dash%
+ \let\textasciitilde\LWR at dash%
+ \let\textasteriskcentered\LWR at dash%
+ \let\textbackslash\LWR at dash%
+ \let\textbar\LWR at dash%
+ \let\textbardbl\LWR at dash%
+ \let\textbigcircle\LWR at dash%
+ \let\textbraceleft\LWR at dash%
+ \let\textbraceright\LWR at dash%
+ \let\textbullet\LWR at dash%
+ \let\textcopyright\LWR at dash%
+ \let\textdagger\LWR at dash%
+ \let\textdaggerdbl\LWR at dash%
+ \let\textdollar\LWR at dash%
+ \let\textellipsis\LWR at dash%
+ \let\textemdash\LWR at dash%
+ \let\textendash\LWR at dash%
+ \let\textexclamdown\LWR at dash%
+ \let\textgreater\LWR at dash%
+ \let\textless\LWR at dash%
+ \let\textordfeminine\LWR at dash%
+ \let\textordmasculine\LWR at dash%
+ \let\textparagraph\LWR at dash%
+ \let\textperiodcentered\LWR at dash%
+ \let\textpertenthousand\LWR at dash%
+ \let\textperthousand\LWR at dash%
+ \let\textquestiondown\LWR at dash%
+ \let\textquotedblleft\LWR at dash%
+ \let\textquotedblright\LWR at dash%
+ \let\textquoteleft\LWR at dash%
+ \let\textquoteright\LWR at dash%
+ \let\textregistered\LWR at dash%
+ \let\textsection\LWR at dash%
+ \let\textsterling\LWR at dash%
+ \let\texttrademark\LWR at dash%
+ \let\textunderscore\LWR at dash%
+ \let\textvisiblespace\LWR at dash%
+ \let\copyright\LWR at dash%
+ \let\dag\LWR at dash%
+ \let\ddag\LWR at dash%
+ \let\dots\LWR at dash%
+ \let\P\LWR at dash%
+ \let\pounds\LWR at dash%
+ \let\S\LWR at dash%
+%
+ \renewcommand*{\aa}{a}%
+ \renewcommand*{\AA}{A}%
+ \renewcommand*{\AE}{AE}%
+ \renewcommand*{\ae}{ae}%
+ \renewcommand*{\dh}{d}%
+ \renewcommand*{\DH}{D}%
+ \renewcommand*{\DJ}{D}%
+ \renewcommand*{\dj}{d}%
+ \renewcommand*{\IJ}{IJ}%
+ \renewcommand*{\ij}{ij}%
+ \renewcommand*{\L}{L}%
+ \renewcommand*{\l}{l}%
+ \renewcommand*{\NG}{NG}%
+ \renewcommand*{\ng}{ng}%
+ \renewcommand*{\O}{O}%
+ \renewcommand*{\o}{o}%
+ \renewcommand*{\oe}{oe}%
+ \renewcommand*{\OE}{OE}%
+ \renewcommand*{\ss}{ss}%
+ \renewcommand*{\SS}{SS}%
+ \renewcommand*{\th}{th}%
+ \renewcommand*{\TH}{TH}%
+%
+ \let\guillemotleft\@empty%
+ \let\guilsinglleft\@empty%
+ \let\quotedblbase\@empty%
+ \let\textquotedbl\@empty%
+ \let\guillemotright\@empty%
+ \let\guilsinglright\@empty%
+ \let\quotesinglbase\@empty%
+% \end{macrocode}
+% \begin{macrocode}
+ \renewcommand*{\HTMLunicode}[1]{}%
+ \renewcommand*{\HTMLentity}[1]{}%
+% \end{macrocode}
+% \begin{macrocode}
+ \renewcommand{\textsuperscript}[1]{##1}%
+ \renewcommand{\textsubscript}[1]{##1}%
+% \end{macrocode}
+% \changes{v0.50}{2018/02/20}{Fix: \cs{underline} in sectioning file name.}
+% \begin{macrocode}
+ \renewcommand{\underline}[1]{##1}%
+% \end{macrocode}
+% \changes{v0.73}{2019/06/24}{Fix: \cs{hspace} in sectioning file name.}
+% \begin{macrocode}
+ \RenewDocumentCommand{\hspace}{s m}{}%
+% \end{macrocode}
+% \begin{macrocode}
+ \RenewDocumentCommand{\LWR at htmlspanclass}{o m +m}{##3}%
+ \DeclareExpandableDocumentCommand{\InlineClass}{D{(}{)}{} o m +m}{##4}%
+% \end{macrocode}
+% Nullify math macros.
+% \changes{v0.55}{2018/04/24}{Removed extraneous space which appeared in file links.}
+% \begin{macrocode}
+ \def\(##1\){}%
+ \def\[##1\]{}%
+ \RenewDocumentCommand{\LWR at subsingledollar}{s m m m}{}%
+% \end{macrocode}
+% Nullify logos:
+% \changes{v0.66}{2019/02/01}{Logos.}
+% \begin{macrocode}
+ \renewcommand*{\TeX}{TeX}%
+ \renewcommand*{\LaTeX}{LaTeX}%
+ \renewcommand*{\LaTeXe}{LaTeX2e}%
+ \renewcommand*{\LuaTeX}{LuaTeX}%
+ \renewcommand*{\LuaLaTeX}{LuaLaTeX}%
+ \renewcommand*{\XeTeX}{XeTeX}%
+ \renewcommand*{\XeLaTeX}{XeLaTeX}%
+ \renewcommand*{\ConTeXt}{ConTeXt}%
+ \renewcommand*{\BibTeX}{BibTeX}%
+ \renewcommand*{\MakeIndex}{MakeIndex}%
+ \renewcommand*{\AmS}{AmS}%
+ \renewcommand*{\MiKTeX}{MiKTeX}%
+ \renewcommand*{\LyX}{LyX}%
+% \end{macrocode}
+% Use the simpler form with \cs{texorpdfstring}:
+% \changes{v0.52}{2018/03/31}{Fix: \cs{texorpdfstring} in section names.}
+% \changes{v0.84}{2020/04/12}{Revised \cs{texorpdfstring}.}
+% \begin{macrocode}
+ \def\texorpdfstring{\expandafter\@secondoftwo}%
+}
+\catcode`\$=3%
+\catcode`\_=8%
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\FilenameNullify} \marg{redefinitions}
+%
+% Adds more nullifying definitions for filename generation.
+%
+% \changes{v0.67}{2019/02/13}{Added.}
+% \begin{macrocode}
+\newcommand*{\FilenameNullify}[1]{%
+ \appto{\LWR at nullfonts}{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\end{warpHTML}
+% \end{macrocode}
+%
+%
+%
% \section{Math}
% \label{sec:math}
%
-%
-%
% \subsection{Limitations}
%
% See \nameref{sec:limitsmath}, \cref{sec:limitsmath}.
@@ -32897,6 +35888,18 @@
% \end{macrocode}
+% \DescribeBoolean{LWR at insidemathcomment}
+% True while inside an \HTML\ comment which is displaying a math
+% environment.
+% Used to undo the comment for a moment while creating a \cs{label},
+% so that the label's \HTML\ tags will be seen by \HTML.
+% \changes{v0.86}{2020/05/11}{\bool{LWR at insidemathcomment}: Added.}
+% \begin{macrocode}
+\newbool{LWR at insidemathcomment}
+\boolfalse{LWR at insidemathcomment}
+% \end{macrocode}
+
+
% \DescribeBoolean{LWR at xfakebold}
% True if \pkg{xfakebold} \cs{setBold} is in use.
% \changes{v0.67}{2019/02/17}{\pkg{xfakebold}: Added support.}
@@ -32985,7 +35988,7 @@
%
% A marker with alpha or opacity of 0\% is not registered by \prog{pdfcrop}, so
% the marker is a small square block of 1\% alpha, which seems to work while still being
-% effectively invisible in the final SVG image.
+% effectively invisible in the final \SVG\ image.
%
% If \pkg{graphicx} is loaded, this marker is sized as a tiny 1\,sp square.
% If \pkg{graphics} is loaded, this marker is used at its default size of around
@@ -33090,13 +36093,13 @@
% preferred.)
%
% \begin{description}
-% \item [SVG math:] \cs{LWR at origensuredmath} is part of argument \#4.
-% \item [SVG math \cs{ensuremath}:] \cs{LWR at origensuredmath} is part of argument \#4.
-% \item [SVG dynamic math:] \cs{LWR at origensuredmath} is part of argument \#4.
-% \item [Mathjax:] Argument \#4 is the contents of the math expression
+% \item [\SVG\ math:] \cs{LWR at origensuredmath} is part of argument \#4.
+% \item [\SVG\ math \cs{ensuremath}:] \cs{LWR at origensuredmath} is part of argument \#4.
+% \item [\SVG\ dynamic math:] \cs{LWR at origensuredmath} is part of argument \#4.
+% \item [\brand{MathJax}:] Argument \#4 is the contents of the math expression
% without \cs{LWR at origensuredmath}. This case is handled above.
-% \item [Mathjax \cs{ensuremath}:] \cs{LWR at origensuredmath} is part of argument \#4.
-% \item [Mathjax dynamic math:] Argument \#4 is the contents of the math expression
+% \item [\brand{MathJax} \cs{ensuremath}:] \cs{LWR at origensuredmath} is part of argument \#4.
+% \item [\brand{MathJax} dynamic math:] Argument \#4 is the contents of the math expression
% without \cs{LWR at origensuredmath}, so \cs{LWR at origensuredmath} is added below.\
% \item [\cs{ifmmode}:] Included ``just in case''.
% \end{description}
@@ -33220,7 +36223,7 @@
\newcommand*{\LWR at subsingledollarsvg}[4]{%
% \end{macrocode}
% Measure the depth, width, and height of the math image:
-% \changes{v0.51}{2018/03/04}{Fix: SVG math with enclosed \env{lateximage}.}
+% \changes{v0.51}{2018/03/04}{Fix: \SVG\ math with enclosed \env{lateximage}.}
% \begin{macrocode}
\LWR at singledollarmeasure{#4}%
% \end{macrocode}
@@ -33372,17 +36375,17 @@
% \marg{4: math expression}
%
% For inline math.
-% Uses MathJax, or for \SVG\ math the image is measured and ajusted to the baseline
+% Uses \brand{MathJax}, or for \SVG\ math the image is measured and ajusted to the baseline
% of the \HTML\ output, and placed inside a \env{lateximage}.
%
% \begin{description}
-% \item [SVG math:] \cs{LWR at origensuredmath} is part of argument \#4.
-% \item [SVG math \cs{ensuremath}:] \cs{LWR at origensuredmath} is part of argument \#4.
-% \item [SVG dynamic math:] \cs{LWR at origensuredmath} is part of argument \#4.
-% \item [Mathjax:] Argument \#4 is the contents of the math expression
+% \item [\SVG\ math:] \cs{LWR at origensuredmath} is part of argument \#4.
+% \item [\SVG\ math \cs{ensuremath}:] \cs{LWR at origensuredmath} is part of argument \#4.
+% \item [\SVG\ dynamic math:] \cs{LWR at origensuredmath} is part of argument \#4.
+% \item [\brand{MathJax}:] Argument \#4 is the contents of the math expression
% without \cs{LWR at origensuredmath}. This case is handled above.
-% \item [Mathjax \cs{ensuremath}:] \cs{LWR at origensuredmath} is part of argument \#4.
-% \item [Mathjax dynamic math:] Argument \#4 is the contents of the math expression
+% \item [\brand{MathJax} \cs{ensuremath}:] \cs{LWR at origensuredmath} is part of argument \#4.
+% \item [\brand{MathJax} dynamic math:] Argument \#4 is the contents of the math expression
% without \cs{LWR at origensuredmath}, so \cs{LWR at origensuredmath} is added below.\
% \end{description}
%
@@ -33391,7 +36394,7 @@
% \changes{v0.19}{2016/05/25}{\brand{MathJax} support.}
% \changes{v0.42}{2017/10/26}{If \progcode{FormatWP} print LaTeX expression.}
% \changes{v0.47}{2018/01/24}{Added \SVG\ math image baseline adjust and em sizing.}
-% \changes{v0.50}{2018/02/23}{Fix: Use \env{lateximage} even if MathJax.}
+% \changes{v0.50}{2018/02/23}{Fix: Use \env{lateximage} even if \brand{MathJax}.}
% \changes{v0.50}{2018/02/24}{Improved \SVG\ math \attribute{alt} tags.}
% \begin{macrocode}
\newlength{\LWR at singledollarwidth}
@@ -33417,14 +36420,14 @@
% \begin{macrocode}
\LWR at applyxfakebold%
% \end{macrocode}
-% MathJax cannot parse the often complicated \TeX\ expressions which
+% \brand{MathJax} cannot parse the often complicated \TeX\ expressions which
% appear in the various uses of \cs{ensuredmath}.
% \cs{ensuremath} forces the \attribute{alt} tag to ``|(math image)|'', as
% translated according to \cs{MathImageAltText}.
-% If this is the case, force the use of a \env{lateximage} even if MathJax.
+% If this is the case, force the use of a \env{lateximage} even if \brand{MathJax}.
% Likewise for \pkg{siunitx} if |parse-numbers=false|.
%
-% If MathJax, or if formatting math for a word processor, and not \cs{ensuredmath},
+% If \brand{MathJax}, or if formatting math for a word processor, and not \cs{ensuredmath},
% and not a dynamic math expression, print the math expression:
% \changes{v0.51}{2018/03/11}{Fix: \cs{ensuredmath} inside \SVG\ image.}
% \changes{v0.57}{2018/05/23}{Fix: Dynamic inline math expressions.}
@@ -33443,17 +36446,25 @@
}%
% \end{macrocode}
% For \brand{MathJax}, print the math between |\(| and |\)|:
+% \changes{v0.89}{2020/08/01}{TT font for \brand{MathJax}.}
% \begin{macrocode}
{%
\LWR at traceinfo{LWR at subsingledollar: Mathjax}%
{%
\textbackslash(%
- \LWR at HTMLsanitize{#4}%
+ {%
+% \end{macrocode}
+% \cs{ifmmode} to avoid error about \cs{ttfamily} inside math mode
+% in the case of nested math, ex. equation with tcolorbox with math.
+% \begin{macrocode}
+ \ifmmode\else\LWR at print@ttfamily\fi%
+ \LWR at HTMLsanitize{#4}%
+ }%
\textbackslash)%
}%
}% mathjax
% \end{macrocode}
-% For SVG, print the math inside a \env{lateximage},
+% For \SVG, print the math inside a \env{lateximage},
% with an \element{alt} tag of the \LaTeX\ code,
% and a \CSS\ style to control the baseline adjustment.
% \begin{macrocode}
@@ -33520,16 +36531,17 @@
% \end{macrocode}
% For \brand{MathJax}, print the math between |\[| and |\]|:
% \changes{v0.42}{2017/10/16}{Improved line spacing with mathjax.}
+% \changes{v0.89}{2020/08/01}{TT font for \brand{MathJax}.}
% \begin{macrocode}
{
\textbackslash[%
- \LWR at HTMLsanitize{#1}%
+ {\LWR at print@ttfamily\LWR at HTMLsanitize{#1}}%
\textbackslash]
}% mathjax
% \end{macrocode}
-% For SVG, print the math inside a \env{lateximage},
+% For \SVG, print the math inside a \env{lateximage},
% with an \element{alt} tag of the \LaTeX\ code:
% \changes{v0.50}{2018/02/24}{Improved \SVG\ math \attribute{alt} tags.}
% \changes{v0.50}{2018/03/02}{Improved \SVG\ math display.}
@@ -33569,6 +36581,7 @@
%
%
% \begin{macro}{\LWR at singledollar} \marg{alt text} \marg{math expression}
+% \changes{v0.89}{2020/08/01}{TT font for \brand{MathJax}.}
% \begin{macrocode}
\protected\gdef\LWR at singledollar#1${%
\ifbool{mathjax}{%
@@ -33605,11 +36618,11 @@
% Redefine to the above dollar macros.
% \begin{macrocode}
\AtBeginDocument{
-\protected\gdef\(#1\){$#1$}
-\protected\gdef\[#1\]{$$#1$$}
+ \protected\gdef\(#1\){$#1$}
+ \protected\gdef\[#1\]{$$#1$$}
}
-\endgroup
+\endgroup% active $
% \end{macrocode}
% \changes{v0.59}{2018/08/23}{Fix with \cs{displaymathnormal}.}
% \begin{macrocode}
@@ -33624,14 +36637,14 @@
% \begin{macro}{\@ensuredmath} \marg{expression}
%
-% If MathJax, a \env{lateximage} is used, since \cs{ensuremath} is
-% often used for complex \TeX\ expressions which MathJax may not render.
+% If \brand{MathJax}, a \env{lateximage} is used, since \cs{ensuremath} is
+% often used for complex \TeX\ expressions which \brand{MathJax} may not render.
% If \SVG\ math, a hashed file is used with a simple \attribute{alt} tag, but
% additional hashing provided by the contents.
%
% \changes{v0.51}{2018/02/24}{Hashes \cs{ensuremath}.}
% \changes{v0.42}{2017/10/16}{Improved \cs{ensuremath}.}
-% \changes{v0.50}{2018/02/23}{Fix: Use \env{lateximage} even if MathJax.}
+% \changes{v0.50}{2018/02/23}{Fix: Use \env{lateximage} even if \brand{MathJax}.}
% \changes{v0.50}{2018/02/24}{Improved \SVG\ math \attribute{alt} tags.}
% \changes{v0.52}{2018/03/25}{Improved hashing expansion.}
% \begin{macrocode}
@@ -33711,9 +36724,12 @@
% Set the default displaymath to the normal version:
+%
+% \changes{v0.89}{2020/08/12}{Removed \cs{let} of \cs{[}, \cs{]}.}
+% ^^A \LetLtxMacro\[\LWR at openbracketnormal% (but not yet defined)
+% ^^A \LetLtxMacro\]\LWR at closebracketnormal%
+%
% \begin{macrocode}
-\LetLtxMacro\[\LWR at openbracketnormal%
-\LetLtxMacro\]\LWR at closebracketnormal%
\LetLtxMacro\displaymath\LWR at displaymathnormal%
\LetLtxMacro\enddisplaymath\endLWR at displaymathnormal%
% \end{macrocode}
@@ -33775,7 +36791,52 @@
% \end{macrocode}
%
%
+% Determing how to set \brand{MathJax} section and equation numbers.
+% Adjusts for various kinds of \cs{theequation} to determine
+% \cs{theMathJaxsection} and \cs{theMathJaxequation}.
%
+% \begin{macrocode}
+\newcommand\LWR at article@theequation{\@arabic\c at equation}
+
+\newcommand\LWR at book@theequation
+ {\ifnum \c at chapter>\z@ \thechapter.\fi \@arabic\c at equation}
+
+
+\newcommand\LWR at chapter@theequation{\thechapter.\arabic{equation}}
+\newcommand\LWR at section@thequation{\thesection.\arabic{equation}}
+\newcommand\LWR at subsection@thequation{\thesubsection.\arabic{equation}}
+
+\AtBeginDocument{
+ % default per article class:
+ \newcommand*{\theMathJaxsubequations}{0}
+ \newcommand*{\theMathJaxsection}{}
+ \newcommand*{\theMathJaxequation}{\arabic{equation}}
+
+ \ifdefstrequal{\theequation}{\LWR at article@theequation}
+ {}{
+ \ifdefstrequal{\theequation}{\LWR at book@theequation}{
+ \renewcommand*{\theMathJaxsection}{\ifnum \c at chapter>\z@ \thechapter.\fi}
+ }{
+ \ifdefstrequal{\theequation}{\LWR at subsection@thequation}{
+ \renewcommand*{\theMathJaxsection}{\thesubsection{}.}
+ }{
+ \ifdefstrequal{\theequation}{\LWR at section@thequation}{
+ \renewcommand*{\theMathJaxsection}{\thesection{}.}
+ }{
+ \ifdefstrequal{\theequation}{\LWR at chapter@theequation}{
+ \renewcommand*{\theMathJaxsection}{\thechapter{}.}
+ }{% unknown format
+ \PackageWarningNoLine{lwarp}
+ {%
+ Unknown equation tag format for \protect\theequation.\MessageBreak
+ Article-style equation numbering will be used%
+ }
+ }}}}}
+}
+% \end{macrocode}
+%
+%
+%
% \begin{macro}{\LWR at syncmathjax} Sets the \brand{MathJax} equation format
% and number for the following equations.
%
@@ -33784,44 +36845,35 @@
% \begin{macrocode}
\newcommand*{\LWR at syncmathjax}{%
% \end{macrocode}
-% If using chapters, place the chapter number in front of the equation.
-% Otherwise, use the simple equation number.
-% \changes{v0.82}{2020/03/09}{Removed \element{par} tags.}
-% \begin{macrocode}
- \ifcsdef{thechapter}{
- \LWR at stoppars%
- \InlineClass{hidden}{
- \textbackslash(
- \textbackslash{}seteqsection \{\thechapter\}
- \textbackslash)
- }
- \LWR at startpars%
- }
- {}% not using chapters
-% \end{macrocode}
-% \brand{MathJax} doesn't allow setting the equation number to 1:
-% \begin{macrocode}
- \ifthenelse{\cnttest{\value{equation}}>0}
- {
-% \end{macrocode}
-% Tell \brand{MathJax} that the next set of equations begins with the current \LaTeX{} equation
-% number, plus one.
-% \begin{macrocode}
- \setcounter{LWR at nextequation}{\value{equation}}
- \addtocounter{LWR at nextequation}{1}
-% \end{macrocode}
+%
+% Tell \brand{MathJax} that the next equation number is
+% the current \LaTeX{} equation number.
+%
+% Before each equation, \pkg{lwarp} inserts into the \HTML\ code:
+% \begin{sourceverb}
+% \seteqnumber{subequations?}{section}{number}
+% \end{sourceverb}
+% \begin{description}
+% \item [|subequations?|] is |0| usually, |1| if inside \pkg{amsmath} \env{subequations}.
+% \item [|section|] is a string printed as-is, or empty.
+% \item [|number|] is auto-incremented by \brand{MathJax} between equations.
+% \end{description}
+%
% Place the \brand{MathJax} command inside ``\cs{(}'' and ``\cs{)}'' characters,
% to be printed to \HTML, not interpreted by \LaTeX.
% \changes{v0.82}{2020/03/09}{Removed \element{par} tags.}
+% \changes{v0.86}{2020/05/08}{Improved \brand{MathJax} equation numbers.}
% \begin{macrocode}
\LWR at stoppars%
\InlineClass{hidden}{
- \textbackslash(
- \textbackslash{}seteqnumber \{\arabic{LWR at nextequation}\}
- \textbackslash)
+ \textbackslash(%
+ \textbackslash{}seteqnumber%
+ \{\theMathJaxsubequations\}%
+ \{\theMathJaxsection\}%
+ \{\theMathJaxequation\}%
+ \textbackslash)%
}
\LWR at startpars%
- }{}% not eq > 0
}
% \end{macrocode}
% \end{macro}
@@ -33849,6 +36901,7 @@
% restore various commands to their \LaTeX\ meanings.
% \begin{macrocode}
\LWR at restoreorigformatting
+ \booltrue{LWR at insidemathcomment}
% \end{macrocode}
% ^^A When a label is encountered, the \HTML\ comment is closed,
% ^^A the label is generated in an \HTML-output context,
@@ -33868,6 +36921,7 @@
% Close the \HTML\ comment and resume \HTML\ paragraph handling:
% \begin{macrocode}
\LWR at htmlclosecomment
+ \boolfalse{LWR at insidemathcomment}
\LWR at startpars
}
% \end{macrocode}
@@ -33885,15 +36939,20 @@
% Enclose the \brand{MathJax} environment inside printed ``\cs{(}'' and ``\cs{)}'' characters.
% \begin{macrocode}
\LWR at origtilde\LWR at orignewline
- \textbackslash{}begin\{#1\}
% \end{macrocode}
-% Print the contents, sanitizing for \HTML\ special characters.
+% Print the environment name and contents, sanitizing for \HTML\ special characters.
+% \changes{v0.89}{2020/08/01}{TT font for \brand{MathJax}.}
% \begin{macrocode}
- \LWR at HTMLsanitizeexpand{\detokenize\expandafter{#2}}
+ {%
+ \LWR at print@ttfamily%
+ \textbackslash{}begin\{#1\}
+ \LWR at orignewline%
+ \LWR at HTMLsanitizeexpand{\detokenize\expandafter{#2}}%
+ \LWR at orignewline%
+ \textbackslash{}end\{#1\}
+ }%
% \end{macrocode}
-% Close the \brand{MathJax} environment:
% \begin{macrocode}
- \textbackslash{}end\{#1\}
\LWR at orignewline
}
% \end{macrocode}
@@ -33906,10 +36965,10 @@
% after redefined by \pkg{amsmath}, if loaded.
% \begin{macrocode}
\AtBeginDocument{
-\let\LWR at origequation\equation
-\let\LWR at origendequation\endequation
-\csletcs{LWR at origequation*}{equation*}
-\csletcs{LWR at origendequation*}{endequation*}
+ \let\LWR at origequation\equation
+ \let\LWR at origendequation\endequation
+ \csletcs{LWR at origequation*}{equation*}
+ \csletcs{LWR at origendequation*}{endequation*}
}
% \end{macrocode}
%
@@ -33953,10 +37012,10 @@
\LWR at hidelatexequation{#2}{#1}
}
% \end{macrocode}
-% SVG output:
+% \SVG\ output:
% Create the |lateximage| along with an \HTML\ \element{alt} tag
% having an equation number, the \LaTeX{} equation environment
-% commmands, and the contents of the environment's \cs{BODY}.
+% commands, and the contents of the environment's \cs{BODY}.
% \begin{macrocode}
{% not mathjax
% \end{macrocode}
@@ -34085,10 +37144,10 @@
% Remove existing \env{equation} environment:
% \begin{macrocode}
\AtBeginDocument{
-\let\equation\relax
-\let\endequation\relax
-\csletcs{equation*}{relax}
-\csletcs{endequation*}{relax}
+ \let\equation\relax
+ \let\endequation\relax
+ \csletcs{equation*}{relax}
+ \csletcs{endequation*}{relax}
}
% \end{macrocode}
@@ -34100,14 +37159,12 @@
% macro called \cs{BODY}.
% \begin{macrocode}
\AtBeginDocument{
+ \NewEnviron{equation}%
+ {\LWR at doequation{\BODY}{equation}}%
+ [\LWR at doendequation{equation}]
-\NewEnviron{equation}%
- {\LWR at doequation{\BODY}{equation}}%
- [\LWR at doendequation{equation}]
-
-\LetLtxMacro\LWR at equationnormal\equation
-\LetLtxMacro\endLWR at equationnormal\endequation
-
+ \LetLtxMacro\LWR at equationnormal\equation
+ \LetLtxMacro\endLWR at equationnormal\endequation
}% AtBeginDocument
% \end{macrocode}
% \end{environment}
@@ -34116,14 +37173,12 @@
% \begin{environment}{equation*}
% \begin{macrocode}
\AtBeginDocument{
+ \NewEnviron{equation*}%
+ {\LWR at doequation{\BODY}{equation*}}%
+ [\LWR at doendequation{equation*}]
-\NewEnviron{equation*}%
- {\LWR at doequation{\BODY}{equation*}}%
- [\LWR at doendequation{equation*}]
-
-\csletcs{LWR at equationnormalstar}{equation*}
-\csletcs{LWR at endequationnormalstar}{endequation*}
-
+ \csletcs{LWR at equationnormalstar}{equation*}
+ \csletcs{LWR at endequationnormalstar}{endequation*}
}% AtBeginDocument
% \end{macrocode}
% \end{environment}
@@ -34134,10 +37189,10 @@
% some \tikz\ expressions.
% \begin{macrocode}
\AtBeginDocument{
-\LetLtxMacro\LWR at equationless\equation
-\LetLtxMacro\endLWR at equationless\endequation
-\csletcs{LWR at equationlessstar}{equation*}
-\csletcs{LWR at endequationlessstar}{endequation*}
+ \LetLtxMacro\LWR at equationless\equation
+ \LetLtxMacro\endLWR at equationless\endequation
+ \csletcs{LWR at equationlessstar}{equation*}
+ \csletcs{LWR at endequationlessstar}{endequation*}
}
% \end{macrocode}
@@ -34167,7 +37222,7 @@
% \begin{macro}{\displaymathother} Use when display math environments have complicated
-% objects which will not work with MathJax or should not be
+% objects which will not work with \brand{MathJax} or should not be
% included in \HTML\ \attribute{alt} tags. \margintag{complicated math objects}
% Complicated contents are more likely to compile correctly.
% \changes{v0.51}{2018/03/21}{Processing for complicated display math.}
@@ -34231,55 +37286,6 @@
% \end{macrocode}
-% \begin{macro}{\LWR at htmlmathlabel} \marg{label}
-% \gindex{label>math environment}
-%
-% \pkg{lwarp} points \cs{ltx at label} here.
-% This is used by \cs{label} when inside a
-% \LaTeX\ AMS math environment's math display environment.
-%
-% \cs{LWR at origltx@label} points to the \LaTeX\ original,
-% modified by \pkg{lwarp}, then by \pkg{amsmath},
-% then by \pkg{cleveref}.
-% \begin{macrocode}
-\newcommand*{\LWR at htmlmathlabel}[1]{%
- \LWR at traceinfo{LWR at htmlmathlabelb #1}%
-% \end{macrocode}
-% If |mathjax| or |FormatWP|, print the \LaTeX\ expression:
-% \changes{v0.42}{2017/10/26}{If \progcode{FormatWP} print LaTeX expression.}
-% \begin{macrocode}
- \ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
- {%
-% \end{macrocode}
-% The combined \LaTeX\ \& \HTML\ label is printed in a \cs{text} field:
-% \begin{macrocode}
- \text{%
-% \end{macrocode}
-% Shift the label over to the right side of the environment to avoid
-% over-printing the math:
-% \begin{macrocode}
- \ifbool{LWR at amsmultline}{}{\hspace*{\totwidth@}}%
-% \end{macrocode}
-% Temporarily end the \HTML\ comment,
-% insert the \LaTeX{} \& \HTML\ label, then
-% resume the \HTML\ comment.
-% \cs{@firstofone} is required to remove extra braces
-% introduced by the \pkg{amsmath} package.)
-% \begin{macrocode}
- \LWR at htmlclosecomment%
- \LWR at origltx@label{#1}%
- \LWR at htmlopencomment%
- }% text
- }% mathjax
- {%
- \LWR at origltx@label{#1}%
- }%
-}
-% \end{macrocode}
-% \end{macro}
-
-
-
% \begin{macro}{\LWR at beginhideamsmath}
% Starts hiding \LaTeX\ math inside an \HTML\ comment.
% \begin{macrocode}
@@ -34290,6 +37296,7 @@
\begingroup
\LWR at restoreorigformatting
+ \booltrue{LWR at insidemathcomment}
}
% \end{macrocode}
% \end{macro}
@@ -34301,6 +37308,7 @@
\endgroup
\LWR at htmlclosecomment
+ \boolfalse{LWR at insidemathcomment}
\LWR at orignewline
\LWR at startpars
}
@@ -34317,8 +37325,8 @@
% \changes{v0.34}{2017/07/29}{Fix: Added the \env{eqnarray} environments.}
%
% The \pkg{amsmath} environments already collect their contents
-% in \cs{@envbody} for further processing. \env{eqnarray} is not an \AmS\ package,
-% and thus requires special handling.
+% in \cs{@envbody} for further processing.
+% \env{eqnarray} is not an \AmS\ package, and thus requires special handling.
%
% For \SVG\ math: Each envrionment is encapsulated inside a \env{lateximage} environment,
% along with a special optional argument of \cs{LWR at amsmathbody}
@@ -34403,11 +37411,12 @@
% \changes{v0.42}{2017/10/12}{Fix: Numbering and naming AMS math environments.}
% \changes{v0.50}{2018/03/02}{Improved \SVG\ math display.}
% \changes{v0.51}{2018/03/11}{Fix: \cs{addcontentsline} inside \SVG\ math. Provides an autoid anchor.}
+% \changes{v0.89}{2020/08/02}{\cs{textendash} for number range.}
% \begin{macrocode}
\begin{BlockClass}{displaymathnumbered}%
\LWR at newautoidanchor%
\booltrue{LWR at indisplaymathimage}%
- \begin{lateximage}[(\LWR at startingequationtag--\LWR at equationtag)%
+ \begin{lateximage}[(\LWR at startingequationtag\textendash\LWR at equationtag)%
\LWR at addmathjax{eqnarray}{\BODY}]*%
% \end{macrocode}
% Support for \pkg{xfakebold}:
@@ -34728,6 +37737,7 @@
% prefixed by the equation numbers.
%
% \changes{v0.42}{2017/10/12}{Fix: Numbering and naming AMS math environments.}
+% \changes{v0.89}{2020/08/02}{\cs{textendash} for number range.}
%
% \begin{macrocode}
\newcommand*{\LWR at amsmathbodynumbered}[1]
@@ -34734,7 +37744,7 @@
{%
\ifnumcomp{\value{LWR at startingequation}}{=}{\value{equation}}%
{(\LWR at equationtag)}%
- {(\LWR at startingequationtag--\LWR at equationtag)} % extra space
+ {(\LWR at startingequationtag\textendash\LWR at equationtag)} % extra space
\LWR at amsmathbody{#1} % extra space
}
% \end{macrocode}
@@ -34904,10 +37914,13 @@
% Create an \HTML\ span which will hold the comment which contains the \prog{pdftotext} translation
% of the image's page, and also will hold the link to the |.svg| file:
% \changes{v0.66}{2019/02/02}{Improved \HTML\ formatting.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\LWR at htmltag{span\LWR at indentHTML%
- id="lateximage-\BaseJobname-\arabic{LWR at lateximagenumber}"\LWR at indentHTML
- class="lateximagesource"\LWR at orignewline
+ id=\textquotedbl{}%
+ lateximage-\BaseJobname-\arabic{LWR at lateximagenumber}%
+ \textquotedbl\LWR at indentHTML
+ class=\textquotedbl{}lateximagesource\textquotedbl\LWR at orignewline
}%
% \end{macrocode}
% Write instructions to the |<ImagesDirectory>.txt| file:
@@ -34970,7 +37983,7 @@
% Start the new \PDF\ page:
% \begin{macrocode}
\LWR at traceinfo{lateximage: about to create a new page}%
- \LWR at orignewpage%
+ \LWR at maybe@orignewpage%
% \end{macrocode}
% If the current page is larger,
% typeset the image in a ``standard'' width page and font size:
@@ -35013,7 +38026,7 @@
% \end{macrocode}
%
% Enable print-mode math functions:
-% \changes{v0.50}{2018/02/20}{Fix: SVG math in a section name.}
+% \changes{v0.50}{2018/02/20}{Fix: \SVG\ math in a section name.}
% \begin{macrocode}
\LetLtxMacro$\LWR at origdollar%
\catcode`\$=3% math shift
@@ -35020,6 +38033,7 @@
\LetLtxMacro\(\LWR at origopenparen%
\LetLtxMacro\)\LWR at origcloseparen%
% \end{macrocode}
+%
% Only enable print-mode display math if are not already inside display math:
% \changes{v0.51}{2018/03/21}{Processing for complicated display math.}
% \begin{macrocode}
@@ -35032,6 +38046,7 @@
\csletcs{endequation*}{LWR at origendequation*}%
}% not in display math
% \end{macrocode}
+%
% For \pkg{chemformula}:
% \begin{macrocode}
\LetLtxMacro\LWR at newsingledollar$%
@@ -35043,7 +38058,8 @@
}% end of \begin{lateximage}
% \end{macrocode}
%
-% When the environment closes:
+%
+% When the \env{lateximage} environment closes:
% \margintag{\cs{endlateximage}}
%
% \begin{macrocode}
@@ -35050,11 +38066,13 @@
{% start of \end{lateximage}
\LWR at traceinfo{lateximage: starting end of lateximage}%
% \end{macrocode}
+%
% Nested more than one deep?
% \begin{macrocode}
\LWR at traceinfo{lateximage: internal depth was \arabic{LWR at lateximagedepth}}%
\ifnumcomp{\value{LWR at lateximagedepth}}{>}{1}%
% \end{macrocode}
+%
% If nesting inside an already existing lateximage, simply record one less level.
% Uses a lower-level \TeX\ macro due to \AmS\ \cs{text} change of \cs{addtocounter}.
% \begin{macrocode}
@@ -35063,17 +38081,20 @@
\global\advance\c at LWR@lateximagedepth -1\relax%
}%
% \end{macrocode}
+%
% If this is the outer-most lateximage:
% \begin{macrocode}
{% end of outer-most lateximage
% \end{macrocode}
+%
% Finish the lateximage minipage and start a new \PDF\ page:
% \changes{v0.69}{2019/03/14}{Fix for \prog{pdftotext} errors from font size change.}
% \begin{macrocode}
\LWR at traceinfo{lateximage: ending outer-most lateximage}%
\endLWR at print@minipage%
- \LWR at orignewpage%
+ \LWR at maybe@orignewpage%
% \end{macrocode}
+%
% Close the \HTML\ comment which encapsulated any traces of the lateximage picked up by \prog{pdftotext}:
% \begin{macrocode}
\LWR at print@vspace*{.5\baselineskip}%
@@ -35080,6 +38101,7 @@
\LWR at htmlclosecomment%
\LWR at traceinfo{lateximage: The page after the image is \arabic{page}}%
% \end{macrocode}
+%
% Create a link to the lateximage, allowing its natural height:
% \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
% \changes{v0.50}{2018/02/22}{MD5 hash avoids duplicate \SVG\ math.}
@@ -35093,10 +38115,12 @@
\LWR at lateximage@oneimage{#2}{\LWR at ImagesName\theLWR at externalfilecnt}{#5}{#3}%
}% no hash
% \end{macrocode}
+%
% Be sure that are doing a paragraph:
% \begin{macrocode}
\LWR at ensuredoingapar%
% \end{macrocode}
+%
% Close the \HTML\ span which has the \prog{pdftotext} comment and also the link to the |.svg| image:
% \begin{macrocode}
\LWR at htmltag{/span}%
@@ -35104,11 +38128,13 @@
\LWR at htmlcomment{End of lateximage}%
}{}%
% \end{macrocode}
+%
% Undo one lateximage level.
% This is not inside an \AmS\ \cs{text}, so regular \cs{addtocounter} may be used here.
% \begin{macrocode}
\addtocounter{LWR at lateximagedepth}{-1}%
% \end{macrocode}
+%
% Clear the single-use \attribute{alt} text:
% \changes{v0.74}{2019/08/20}{Add \cs{ThisAltText}.}
% \begin{macrocode}
@@ -35128,7 +38154,7 @@
% \end{macrocode}
% \begin{environment}{lateximage} * \oarg{\element{alt} tag} *
-% \oarg{add'l hashing} \oarg{\CSS\ style}
+% \oarg{add'l hashing} \oarg{\CSS\ style}
%
% \env{varwidth} is used to create a box of the natural width of its contents.
%
@@ -35159,8 +38185,9 @@
% Replace \env{center} functionality with \CSS\ tags:
% \changes{v0.42}{2017/10/26}{If \progcode{FormatWP} use explicit \attribute{text-align}.}
% \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.84}{2020/04/14}{Added print mode.}
% \begin{macrocode}
-\renewenvironment*{center}
+\newenvironment*{LWR at HTML@center}
{
\LWR at forcenewpage
\ifbool{FormatWP}
@@ -35168,6 +38195,8 @@
{\BlockClass{center}}
}
{\endBlockClass}
+
+\LWR at formattedenv{center}
% \end{macrocode}
% \end{environment}
@@ -35174,8 +38203,9 @@
% \begin{environment}{flushright}
% \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.84}{2020/04/14}{Added print mode.}
% \begin{macrocode}
-\renewenvironment*{flushright}
+\newenvironment*{LWR at HTML@flushright}
{
\LWR at forcenewpage
\ifbool{FormatWP}
@@ -35183,13 +38213,16 @@
{\BlockClass{flushright}}
}
{\endBlockClass}
+
+\LWR at formattedenv{flushright}
% \end{macrocode}
% \end{environment}
% \begin{environment}{flushleft}
% \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.84}{2020/04/14}{Added print mode.}
% \begin{macrocode}
-\renewenvironment*{flushleft}
+\newenvironment*{LWR at HTML@flushleft}
{
\LWR at forcenewpage
\ifbool{FormatWP}
@@ -35197,6 +38230,8 @@
{\BlockClass{flushleft}}
}
{\endBlockClass}
+
+\LWR at formattedenv{flushleft}
% \end{macrocode}
% \end{environment}
@@ -35328,11 +38363,33 @@
\LWR at PreloadedPackage{graphicx}
% \end{macrocode}
+% \pkg{scalefnt} may have been preloaded by \pkg{babel}
+% \begin{macrocode}
+\LWR at PreloadedPackage{scalefnt}
+% \end{macrocode}
+
% \pkg{fontaxes} must be preloaded so that \pkg{lwarp} may patch it for \HTML.
% \begin{macrocode}
\LWR at PreloadedPackage{fontaxes}
% \end{macrocode}
+% Various font packages which may be loaded before \pkg{lwarp}:
+% \begin{macrocode}
+\LWR at PreloadedPackage{cmbright}
+\LWR at PreloadedPackage{fourier}
+\LWR at PreloadedPackage{kpfonts}
+\LWR at PreloadedPackage{kpfonts-otf}
+\LWR at PreloadedPackage{libertinust1math}
+\LWR at PreloadedPackage{pxfonts}
+\LWR at PreloadedPackage{txfonts}
+\LWR at PreloadedPackage{txgreeks}
+\LWR at PreloadedPackage{newpxmath}
+\LWR at PreloadedPackage{newtxmath}
+\LWR at PreloadedPackage{newtxsf}
+\LWR at PreloadedPackage{mathalpha}
+\LWR at PreloadedPackage{unicode-math}
+% \end{macrocode}
+
% \pkg{nfssext-cfr} may be preloaded by \pkg{cfm-lm} or related font packages.
% \begin{macrocode}
\LWR at PreloadedPackage{nfssext-cfr}
@@ -35403,7 +38460,7 @@
\newrobustcmd{\LWR at siunitx@textdegree}{\HTMLentity{deg}}
\newrobustcmd{\LWR at siunitx@textprime}{\HTMLunicode{2032}}
\newrobustcmd{\LWR at siunitx@textdblprime}{\HTMLunicode{2033}}
-\newrobustcmd{\LWR at siunitx@textplanckbar}{\text{\textit{\HTMLunicode{0127}}}}
+\newrobustcmd{\LWR at siunitx@textplanckbar}{\text{\textit{\HTMLunicode{210F}}}}
\appto\LWR at restoreorigformatting{%
\renewrobustcmd{\LWR at siunitx@textcelsius}{\text{\ensuremath{^\circ}C}}%
@@ -35726,16 +38783,9 @@
-
% \section{\pkg{cleveref}}
-% \label{sec:cleveref}
-
-% \DescribePackage{cleveref}
-% \pkg{cleveref} package is used as-is with minor patches.
%
-% \limitscpageref
-%
-% \pkg{cleveref} and the following associated macro patches are
+% \pkg{cleveref} and \pkg{lwarp-cleveref} with its associated macro patches are
% \margintag{loading order}
% automatically preloaded at the end of the preamble via \cs{AtEndPreamble}
% and \cs{AfterEndPreamble}.
@@ -35746,182 +38796,26 @@
% \cs{crefname}, then \pkg{cleveref} may be loaded in the user's preamble near the
% end, and \pkg{lwarp}'s additional loading of \pkg{cleveref} will have no effect.
%
-% \Cref{tab:crossrefdata} on page \pageref{tab:crossrefdata}
-% shows the data structure of the label/reference system
-% as revised by \pkg{lwarp} and \pkg{cleveref}.
-
-
-% A few patches allow \pkg{cleveref} to work as-is:
-
-% \codehtml
-% \begin{macrocode}
-\begin{warpHTML}
-% \end{macrocode}
+% \cs{AtEndPreable} forces \pkg{cleveref} to be loaded last,
+% if it has not yet been loaded by the user.
%
-% \cs{AtEndPreable} forces \pkg{cleveref} to be loaded last:
-%
% \changes{v0.19}{2016/06/06}{cleveref: Loaded \cs{AtEndPreamble}.}
% \changes{v0.33}{2017/06/18}{cleveref: Fix: Loaded \cs{AtEndPreamble}.}
%
+% \codehtml
% \begin{macrocode}
+\begin{warpHTML}
+
\AtEndPreamble{
\RequirePackage{cleveref}
}
-% \end{macrocode}
-%
-%
-% \changes{v0.20}{2017/01/05}{\pkg{cleveref} and referencing patches:
-% Applied \cs{AfterEndPreamble}.}
-%
-% \begin{flushleft}
-% The following patches are applied after \pkg{cleveref} has loaded,
-% and after \cs{AtBeginDocument}. Print-mode versions are not required
-% since they all come down to \cs{ref} eventually, and \cs{ref} has a print-mode
-% version.
-% \end{flushleft}
-% \begin{macrocode}
-\AfterEndPreamble{
-\LWR at traceinfo{Patching cleveref.}
-% \end{macrocode}
-% \begin{macro}{\@@@setcref} \marg{kindofref} \marg{label}
-%
-% \cs{@templabel} becomes the section number.
-%
-% \changes{v0.48}{2018/02/10}{Fix for new v0.21 of \pkg{cleveref}.}
-% \begin{macrocode}
-\def\LWR at orig@@@setcref#1#2{\cref at getlabel{#2}{\@templabel}#1{\@templabel}{}{}}%
-
-\ifdefequal{\@@setcref}{\LWR at orig@@@setcref}{% before v0.21
- \renewcommand*{\@@setcref}[2]{#1{\ref{#2}}{}{}}
-}{
- \ifdefequal{\@@@setcref}{\LWR at orig@@@setcref}{% as of v0.21
- \renewcommand*{\@@@setcref}[2]{#1{\ref{#2}}{}{}}
- }{
- \PackageWarning{lwarp-cleveref}{
- Unknown version of cleveref.
- \protect\cref\space will fail.
- }%
- }
-}
+\end{warpHTML}
% \end{macrocode}
-% \end{macro}
-
-%\begin{macro}{\@@@setcrefrange} \marg{text} \marg{label} \marg{label}
-% \changes{v0.48}{2018/02/10}{Fix for new v0.21 of \pkg{cleveref}.}
-% \begin{macrocode}
-\def\LWR at orig@@@setcrefrange#1#2#3{%
- \cref at getlabel{#2}{\@labela}%
- \cref at getlabel{#3}{\@labelb}%
- #1{\@labela}{\@labelb}{}{}{}{}}%
-
-\ifdefequal{\@@setcrefrange}{\LWR at orig@@@setcrefrange}{
- \renewcommand{\@@setcrefrange}[3]{%
- #1{\ref{#2}}{\ref{#3}}{}{}{}{}%
- }
-}{
- \ifdefequal{\@@@setcrefrange}{\LWR at orig@@@setcrefrange}{
- \renewcommand{\@@@setcrefrange}[3]{%
- #1{\ref{#2}}{\ref{#3}}{}{}{}{}%
- }
- }{
- \PackageWarning{lwarp-cleveref}{
- Unknown version of cleveref.
- \protect\crefrange\space will fail.
- }
- }
-}
-
-% \end{macrocode}
-% \end{macro}
-
-% ^^A orig:
-% ^^A \def\@@setcpageref#1#2{%
-% ^^A \cref at getpageref{#2}{\@temppage}#1{\@temppage}{}{}}
-
-
-% \label{sec:cpagereffor}
-% \begin{macro}{\cpagerefFor} Redefinable word between ``page(s)'' and the page numbers.
%
-% \changes{v0.20}{2017/01/03}{User-redefinable word for page references.}
%
-% \begin{macrocode}
-\newcommand*{\cpagerefFor}{for}
-% \end{macrocode}
-% \end{macro}
-
-% \begin{macro}{\@@@setcpageref} \marg{typeofref} \marg{label},
-% where typeofref is ``page'' or ``pages''
+% \section{Preexisting label and reference definitions}
%
-% \changes{v0.48}{2018/02/10}{Fix for new v0.21 of \pkg{cleveref}.}
-% \begin{macrocode}
-\def\LWR at orig@@setcpageref#1#2{% before v0.21
- \cref at getpageref{#2}{\@temppage}#1{\@temppage}{}{}}%
-
-\def\LWR at orig@@@setcpageref#1#2{% as of v0.21
- \cpageref at getlabel{#2}{\@temppage}#1{\@temppage}{}{}}%
-
-\ifdefequal{\@@setcpageref}{\LWR at orig@@setcpageref}{
- \renewcommand*{\@@setcpageref}[2]{%
- #1{\cpagerefFor\ \cref{#2}}{}{}%
- }
-}{
- \ifdefequal{\@@@setcpageref}{\LWR at orig@@@setcpageref}{
- \renewcommand*{\@@@setcpageref}[2]{%
- #1{\cpagerefFor\ \cref{#2}}{}{}%
- }
- }
- {
- \PackageWarning{lwarp-cleveref}{
- Unknown version of cleveref.
- \protect\cpageref\space will fail.
- }
- }
-}
-% \end{macrocode}
-% \end{macro}
-
-
-% ^^A orig:
-% ^^A \def\@@setcpagerefrange#1#2#3{%
-% ^^A \cref at getpageref{#2}{\@pagea}%
-% ^^A \cref at getpageref{#3}{\@pageb}%
-% ^^A #1{\@pagea}{\@pageb}{}{}{}{}}
-
-% \begin{macrocode}
-\def\LWR at orig@@setcpagerefrange#1#2#3{% before v0.21
- \cref at getpageref{#2}{\@pagea}%
- \cref at getpageref{#3}{\@pageb}%
- #1{\@pagea}{\@pageb}{}{}{}{}}%
-
-\def\LWR at orig@@@setcpagerefrange#1#2#3{% as of v0.21
- \cpageref at getlabel{#2}{\@pagea}%
- \cpageref at getlabel{#3}{\@pageb}%
- #1{\@pagea}{\@pageb}{}{}{}{}}%
-
-\ifdefequal{\@@setcpagerefrange}{\LWR at orig@@setcpagerefrange}{
- \renewcommand*{\@@setcpagerefrange}[3]{%
- #1{\cpagerefFor\ \cref{#2}}{\cref{#3}}{}{}{}{}%
- }
-}{
- \ifdefequal{\@@@setcpagerefrange}{\LWR at orig@@@setcpagerefrange}{
- \renewcommand*{\@@@setcpagerefrange}[3]{%
- #1{\cpagerefFor\ \cref{#2}}{\cref{#3}}{}{}{}{}%
- }
- }
- {
- \PackageWarning{lwarp-cleveref}{
- Unknown version of cleveref.
- \protect\cpagerefrange\space will fail.
- }
- }
-}
-
-}% AfterEndPreamble
-% \end{macrocode}
-
-
-%
% Remember and patch some label-related defintions.
% These will be further encased and patched by other packages later.
%
@@ -35928,12 +38822,16 @@
% \cs{label} and \cs{pageref} do NOT change their behavior according to
% print or \HTML\ output, and thus do not use the \cs{LWR at formatted} system.
%
+% \codehtml
% \begin{macrocode}
-\LetLtxMacro\LWR at orig@label\label
-\RenewDocumentCommand{\label}{}{\LWR at new@label}
+\begin{warpHTML}
+\LetLtxMacro\LWR at orig@label\label% includes memoir, before cleveref
+\LetLtxMacro\label\LWR at new@label
+
\LetLtxMacro\LWR at orig@pageref\pageref
-\RenewDocumentCommand{\pageref}{}{\LWR at new@pageref}
+\LetLtxMacro\pageref\LWR at new@pageref
+
\end{warpHTML}
% \end{macrocode}
@@ -36026,7 +38924,7 @@
% \begin{macrocode}
\NewDocumentEnvironment{LWR at setvirtualpage}{s O{1}}{%
\ifnumequal{\value{LWR at virtualpagedepth}}{0}{%
- \IfBooleanT{#1}{\LWR at orignewpage}%
+ \IfBooleanT{#1}{\LWR at maybe@orignewpage}%
\setlength{\linewidth}{6in/#2}%
\setlength{\textwidth}{6in}%
\setlength{\textheight}{9in}%
@@ -36180,13 +39078,16 @@
% If |FormatWP|, add a text frame:
% \changes{v0.42}{2017/10/26}{If \progcode{FormatWP} add a text frame.}
% \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\ifbool{FormatWP}{%
\addtocounter{LWR at thisautoidWP}{1}%
\LWR at htmltag{%
- div id="\LWR at print@mbox{autoidWP-\arabic{LWR at thisautoidWP}}" %
- class="wpminipage"%
+ div id=\textquotedbl%
+ \LWR at print@mbox{autoidWP-\arabic{LWR at thisautoidWP}}%
+ \textquotedbl\ % space
+ class=\textquotedbl{}wpminipage\textquotedbl%
}%
}{}%
@@ -36194,9 +39095,10 @@
%
% Create the \element{div} tag with optional alignment style:
% \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\LWR at traceinfo{minipage: creating div class}%
-\LWR at htmltag{div class="minipage" style="%
+\LWR at htmltag{div class=\textquotedbl{}minipage\textquotedbl\ style=\textquotedbl%
\ifthenelse{\equal{#1}{t}}{\LWR at print@mbox{vertical-align:bottom} ; }{}%
\ifthenelse{\equal{#1}{c}}{\LWR at print@mbox{vertical-align:middle} ; }{}%
\ifthenelse{\equal{#1}{b}}{\LWR at print@mbox{vertical-align:top} ; }{}%
@@ -36223,7 +39125,8 @@
}%
\LWR at traceinfo{minipage: about to print the height}%
\ifblank{#2}{}{height:\LWR at printlength{\LWR at minipageheight} ; }%
-"}%
+\textquotedbl%
+}%
% \end{macrocode}
%
% Finish with an empty line to start the contents on a new line.
@@ -36721,6 +39624,7 @@
+
% \section{Direct formatting}
% \label{sec:directformatting}
%
@@ -36730,6 +39634,27 @@
% see \cref{sec:highlevelclasses}.
+% \codeall
+% \begin{macrocode}
+\begin{warpall}
+% \end{macrocode}
+
+% \DescribeBoolean{FixSmallCaps}
+% User may set \bool{FixSmallCaps} to \optn{true} if small caps
+% are being incorrectly rendered as all caps.
+%
+% \changes{v0.87}{2020/05/12}{Added \bool{FixSmallCaps} to remove \cs{LWR at print@scshape}
+% for \pkg{erewhon}, et. al.}
+% \begin{macrocode}
+\newbool{FixSmallCaps}
+\boolfalse{FixSmallCaps}
+% \end{macrocode}
+
+% \begin{macrocode}
+\end{warpall}
+% \end{macrocode}
+
+
% \codehtml
% \begin{macrocode}
\begin{warpHTML}
@@ -36753,8 +39678,6 @@
}
\LWR at formatted{emph}
-
-\newcommand{\LWR at null@emph}[1]{#1}
% \end{macrocode}
% \end{macro}
@@ -36769,8 +39692,6 @@
}
\LWR at formatted{textmd}
-
-\newcommand{\LWR at null@textmd}[1]{#1}
% \end{macrocode}
% \end{macro}
@@ -36785,8 +39706,6 @@
}
\LWR at formatted{textbf}
-
-\newcommand{\LWR at null@textbf}[1]{#1}
% \end{macrocode}
% \end{macro}
@@ -36802,8 +39721,6 @@
}
\LWR at formatted{texteb}
-
-\newcommand{\LWR at null@texteb}[1]{#1}
% \end{macrocode}
% \end{macro}
@@ -36819,8 +39736,6 @@
}
\LWR at formatted{textlg}
-
-\newcommand{\LWR at null@textlg}[1]{#1}
% \end{macrocode}
% \end{macro}
@@ -36835,8 +39750,6 @@
}
\LWR at formatted{textrm}
-
-\newcommand{\LWR at null@textrm}[1]{#1}
% \end{macrocode}
% \end{macro}
@@ -36851,8 +39764,6 @@
}
\LWR at formatted{textsf}
-
-\newcommand{\LWR at null@textsf}[1]{#1}
% \end{macrocode}
% \end{macro}
@@ -36866,8 +39777,6 @@
}
\LWR at formatted{texttt}
-
-\newcommand{\LWR at null@texttt}[1]{#1}
% \end{macrocode}
% \end{macro}
@@ -36883,8 +39792,6 @@
}
\LWR at formatted{textup}
-
-\newcommand{\LWR at null@textup}[1]{#1}
% \end{macrocode}
% \end{macro}
@@ -36898,8 +39805,6 @@
}
\LWR at formatted{textit}
-
-\newcommand{\LWR at null@textit}[1]{#1}
% \end{macrocode}
% \end{macro}
@@ -36914,8 +39819,6 @@
}
\LWR at formatted{textsc}
-
-\newcommand{\LWR at null@textsc}[1]{#1}
% \end{macrocode}
% \end{macro}
@@ -36931,8 +39834,6 @@
}
\LWR at formatted{textulc}
-
-\newcommand{\LWR at null@textulc}[1]{#1}
% \end{macrocode}
% \end{macro}
@@ -36957,8 +39858,6 @@
}
\LWR at formatted{textsi}
-
-\newcommand{\LWR at null@textsi}[1]{#1}
% \end{macrocode}
% \end{macro}
@@ -36972,8 +39871,15 @@
}
\LWR at formatted{textsl}
+% \end{macrocode}
+% \end{macro}
-\newcommand{\LWR at null@textsl}[1]{#1}
+
+% \begin{macro}{\textssc} \marg{text}
+% \changes{v0.84}{2020/04/13}{Moved to core.}
+% \begin{macrocode}
+\newrobustcmd{\LWR at HTML@textssc}[1]{\textsc{#1}}
+\LWR at formatted{textssc}
% \end{macrocode}
% \end{macro}
@@ -36983,244 +39889,35 @@
\DeclareRobustCommand{\LWR at HTML@textnormal}[1]{\textmd{\textrm{\textup{#1}}}}
\LWR at formatted{textnormal}
-
-\newcommand{\LWR at null@textnormal}[1]{#1}
% \end{macrocode}
% \end{macro}
-
-
% \begin{macrocode}
-\newcommand{\LWR at null@rmfamily}{}
-\newcommand{\LWR at null@sffamily}{}
-\newcommand{\LWR at null@ttfamily}{}
-\newcommand{\LWR at null@bfseries}{}
-\newcommand{\LWR at null@ebweight}{}
-\newcommand{\LWR at null@lgweight}{}
-\newcommand{\LWR at null@mdseries}{}
-\newcommand{\LWR at null@upshape}{}
-\newcommand{\LWR at null@slshape}{}
-\newcommand{\LWR at null@scshape}{}
-\newcommand{\LWR at null@itshape}{}
-\newcommand{\LWR at null@normalfont}{}
-% \end{macrocode}
-%
-% \changes{v0.62}{2018/11/17}{Fix for \cs{em}.}
-% \begin{macrocode}
-\newcommand{\LWR at null@em}{}
-% \end{macrocode}
-
-
-% \begin{macro}{\LWR at nullfonts} Removes formatting during filename operations,
-% file references, and \HTML\ comments.
-%
-% \textred{Use only inside a group.}\watchout
-%
-% The following are \emph{not} made robust,
-% since they must be expanded to their nullified versions.
-%
-% \changes{v0.34}{2017/08/05}{Improved font control.}
-% \changes{v0.36}{2017/08/15}{Fix: Filenames while using \brand{MathJax}.}
-% \changes{v0.40}{2017/09/21}{Fix: Long arguments for expandable command.}
-% \changes{v0.43}{2017/10/31}{Fix: Nullify dollar inside filesnames.}
-% \changes{v0.48}{2018/02/04}{Fix: \cs{newline} in title.}
-% \changes{v0.65}{2018/12/09}{Added \cs{textsi}.}
-% \begin{macrocode}
-\catcode`\$=\active% redefining $ below
-\catcode`\_=12% redefining \_ below
-\newcommand*{\LWR at nullfonts}{%
-\LetLtxMacro\emph\LWR at null@emph%
-\LetLtxMacro\textmd\LWR at null@textmd%
-\LetLtxMacro\textbf\LWR at null@textbf%
-\LetLtxMacro\textrm\LWR at null@textrm%
-\LetLtxMacro\textsf\LWR at null@textsf%
-\LetLtxMacro\texttt\LWR at null@texttt%
-\LetLtxMacro\textup\LWR at null@textup%
-\LetLtxMacro\textit\LWR at null@textit%
-\LetLtxMacro\textsc\LWR at null@textsc%
-\LetLtxMacro\textulc\LWR at null@textulc%
-\LetLtxMacro\textsi\LWR at null@textsi%
-\LetLtxMacro\textsl\LWR at null@textsl%
-\LetLtxMacro\textnormal\LWR at null@textnormal%
-\LetLtxMacro\rmfamily\LWR at null@rmfamily%
-\LetLtxMacro\sffamily\LWR at null@sffamily%
-\LetLtxMacro\ttfamily\LWR at null@ttfamily%
-\LetLtxMacro\bfseries\LWR at null@bfseries%
-\LetLtxMacro\mdseries\LWR at null@mdseries%
-\LetLtxMacro\upshape\LWR at null@upshape%
-\LetLtxMacro\slshape\LWR at null@slshape%
-\LetLtxMacro\scshape\LWR at null@scshape%
-\LetLtxMacro\ulcshape\LWR at null@ulcshape%
-% \end{macrocode}
-% \changes{v0.65}{2018/12/10}{Added \cs{sishape}.}
-% \begin{macrocode}
-\LetLtxMacro\sishape\LWR at null@sishape%
-% \end{macrocode}
-% \begin{macrocode}
-\LetLtxMacro\itshape\LWR at null@itshape%
-\LetLtxMacro\normalfont\LWR at null@normalfont%
-\LetLtxMacro\em\LWR at null@em%
-% \end{macrocode}
-% Various built-in symbols.
-% \changes{v0.67}{2019/02/13}{Add'l symbols.}
-% \begin{macrocode}
-\renewcommand*{\$}{-}%
-\renewcommand*{\%}{-}%
-\renewcommand*{\_}{-}%
-\renewcommand*{\}}{-}%
-\renewcommand*{\{}{-}%
-\renewcommand*{\&}{and}%
-\renewcommand*{\#}{-}%
-\renewcommand*{\,}{-}%
-\renewcommand*{~}{-}%
-\renewcommand*{\^}[1]{-}%
-\renewcommand*{\~}[1]{-}%
-\renewcommand*{\newline}{-}%
-\renewcommand*{\textasciicircum}{-}%
-\renewcommand*{\textasciitilde}{-}%
-\renewcommand*{\textasteriskcentered}{-}%
-\renewcommand*{\textbackslash}{-}%
-\renewcommand*{\textbar}{-}%
-\renewcommand*{\textbardbl}{-}%
-\renewcommand*{\textbigcircle}{-}%
-\renewcommand*{\textbraceleft}{-}%
-\renewcommand*{\textbraceright}{-}%
-\renewcommand*{\textbullet}{-}%
-\renewcommand*{\textcopyright}{-}%
-\renewcommand*{\textdagger}{-}%
-\renewcommand*{\textdaggerdbl}{-}%
-\renewcommand*{\textdollar}{-}%
-\renewcommand*{\textellipsis}{-}%
-\renewcommand*{\textemdash}{-}%
-\renewcommand*{\textendash}{-}%
-\renewcommand*{\textexclamdown}{-}%
-\renewcommand*{\textgreater}{-}%
-\renewcommand*{\textless}{-}%
-\renewcommand*{\textordfeminine}{-}%
-\renewcommand*{\textordmasculine}{-}%
-\renewcommand*{\textparagraph}{-}%
-\renewcommand*{\textperiodcentered}{-}%
-\renewcommand*{\textpertenthousand}{-}%
-\renewcommand*{\textperthousand}{-}%
-\renewcommand*{\textquestiondown}{-}%
-\renewcommand*{\textquotedblleft}{-}%
-\renewcommand*{\textquotedblright}{-}%
-\renewcommand*{\textquoteleft}{-}%
-\renewcommand*{\textquoteright}{-}%
-\renewcommand*{\textregistered}{-}%
-\renewcommand*{\textsection}{-}%
-\renewcommand*{\textsterling}{-}%
-\renewcommand*{\texttrademark}{-}%
-\renewcommand*{\textunderscore}{-}%
-\renewcommand*{\textvisiblespace}{-}%
-\renewcommand*{\copyright}{-}%
-\renewcommand*{\dag}{-}%
-\renewcommand*{\ddag}{-}%
-\renewcommand*{\dots}{-}%
-\renewcommand*{\P}{-}%
-\renewcommand*{\pounds}{-}%
-\renewcommand*{\S}{-}%
-\renewcommand*{\aa}{a}%
-\renewcommand*{\AA}{A}%
-\renewcommand*{\AE}{AE}%
-\renewcommand*{\ae}{ae}%
-\renewcommand*{\dh}{d}%
-\renewcommand*{\DH}{D}%
-\renewcommand*{\DJ}{D}%
-\renewcommand*{\dj}{d}%
-\renewcommand*{\IJ}{IJ}%
-\renewcommand*{\ij}{ij}%
-\renewcommand*{\L}{L}%
-\renewcommand*{\l}{l}%
-\renewcommand*{\NG}{NG}%
-\renewcommand*{\ng}{ng}%
-\renewcommand*{\O}{O}%
-\renewcommand*{\o}{o}%
-\renewcommand*{\oe}{oe}%
-\renewcommand*{\OE}{OE}%
-\renewcommand*{\ss}{ss}%
-\renewcommand*{\SS}{SS}%
-\renewcommand*{\th}{th}%
-\renewcommand*{\TH}{TH}%
-\renewcommand*{\guillemotleft}{}%
-\renewcommand*{\guilsinglleft}{}%
-\renewcommand*{\quotedblbase}{}%
-\renewcommand*{\textquotedbl}{}%
-\renewcommand*{\guillemotright}{}%
-\renewcommand*{\guilsinglright}{}%
-\renewcommand*{\quotesinglbase}{}%
-% \end{macrocode}
-% \begin{macrocode}
-\renewcommand*{\HTMLunicode}[1]{}%
-\renewcommand*{\HTMLentity}[1]{}%
-% \end{macrocode}
-% \begin{macrocode}
-\renewcommand{\textsuperscript}[1]{##1}%
-\renewcommand{\textsubscript}[1]{##1}%
-% \end{macrocode}
-% \changes{v0.50}{2018/02/20}{Fix: \cs{underline} in sectioning file name.}
-% \begin{macrocode}
-\renewcommand{\underline}[1]{##1}%
-% \end{macrocode}
-% \changes{v0.73}{2019/06/24}{Fix: \cs{hspace} in sectioning file name.}
-% \begin{macrocode}
-\RenewDocumentCommand{\hspace}{s m}{}%
-% \end{macrocode}
-% \begin{macrocode}
-\RenewDocumentCommand{\LWR at htmlspanclass}{o m +m}{##3}%
-\DeclareExpandableDocumentCommand{\InlineClass}{D{(}{)}{} o m +m}{##4}%
-% \end{macrocode}
-% Nullify math macros.
-% \changes{v0.55}{2018/04/24}{Removed extraneous space which appeared in file links.}
-% \begin{macrocode}
-\def\(##1\){}%
-\def\[##1\]{}%
-\RenewDocumentCommand{\LWR at subsingledollar}{s m m m}{}%
-\protected\def$##1${}%
-% \end{macrocode}
-% Nullify logos:
-% \changes{v0.66}{2019/02/01}{Logos.}
-% \begin{macrocode}
-\renewcommand*{\TeX}{TeX}%
-\renewcommand*{\LaTeX}{LaTeX}%
-\renewcommand*{\LaTeXe}{LaTeX2e}%
-\renewcommand*{\LuaTeX}{LuaTeX}%
-\renewcommand*{\LuaLaTeX}{LuaLaTeX}%
-\renewcommand*{\XeTeX}{XeTeX}%
-\renewcommand*{\XeLaTeX}{XeLaTeX}%
-\renewcommand*{\ConTeXt}{ConTeXt}%
-\renewcommand*{\BibTeX}{BibTeX}%
-\renewcommand*{\MakeIndex}{MakeIndex}%
-\renewcommand*{\AmS}{AmS}%
-\renewcommand*{\MiKTeX}{MiKTeX}%
-\renewcommand*{\LyX}{LyX}%
-% \end{macrocode}
-% Use the simpler form with \cs{texorpdfstring}:
-% \changes{v0.52}{2018/03/31}{Fix: \cs{texorpdfstring} in section names.}
-% \begin{macrocode}
-\let\texorpdfstring\relax%
-\newcommand{\texorpdfstring}[2]{##2}%
+\FilenameNullify{%
+ \LetLtxMacro\emph\@firstofone%
+ \LetLtxMacro\textmd\@firstofone%
+ \LetLtxMacro\textbf\@firstofone%
+ \LetLtxMacro\texteb\@firstofone%
+ \LetLtxMacro\textlg\@firstofone%
+ \LetLtxMacro\textrm\@firstofone%
+ \LetLtxMacro\textsf\@firstofone%
+ \LetLtxMacro\texttt\@firstofone%
+ \LetLtxMacro\textup\@firstofone%
+ \LetLtxMacro\textit\@firstofone%
+ \LetLtxMacro\textsc\@firstofone%
+ \LetLtxMacro\textulc\@firstofone%
+ \LetLtxMacro\textsi\@firstofone%
+ \LetLtxMacro\textsl\@firstofone%
+ \LetLtxMacro\textssc\@firstofone%
+ \LetLtxMacro\textnormal\@firstofone%
}
-\catcode`\$=3%
-\catcode`\_=8%
% \end{macrocode}
-% \end{macro}
%
%
-% \begin{macro}{\FilenameNullify} \marg{redefinitions}
%
-% Adds more nullifying definitions for filename generation.
%
-% \changes{v0.67}{2019/02/13}{Added.}
-% \begin{macrocode}
-\newcommand*{\FilenameNullify}[1]{%
- \appto{\LWR at nullfonts}{#1}%
-}
-% \end{macrocode}
-% \end{macro}
%
-%
% \changes{v0.48}{2018/02/02}{Improved font control.}
% \changes{v0.72}{2019/05/27}{\pkg{fontaxes}: Added.}
@@ -37291,10 +39988,14 @@
% \changes{v0.48}{2018/02/02}{Improved font control.}
% \changes{v0.50}{2018/02/20}{Robustify macros.}
% \changes{v0.72}{2019/05/24}{Use \cs{LWR at formatted} for \cs{bfseries}, etc.}
+% \changes{v0.85}{2020/04/29}{Fix: Added print macros for \pkg{fontspec}.}
%
% \begin{macro}{\mdseries}
% \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@mdseries}{\renewcommand*{\LWR at f@series}{md}}
+\newrobustcmd*{\LWR at HTML@mdseries}{%
+ \LWR at print@mdseries%
+ \renewcommand*{\LWR at f@series}{md}%
+}
\LWR at formatted{mdseries}
% \end{macrocode}
% \end{macro}
@@ -37301,7 +40002,10 @@
% \begin{macro}{\bfseries}
% \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@bfseries}{\renewcommand*{\LWR at f@series}{bf}}
+\newrobustcmd*{\LWR at HTML@bfseries}{%
+ \LWR at print@bfseries%
+ \renewcommand*{\LWR at f@series}{bf}%
+}
\LWR at formatted{bfseries}
% \end{macrocode}
% \end{macro}
@@ -37309,7 +40013,10 @@
% \begin{macro}{\ebweight} From \pkg{nfssext-cfr}.
% \changes{v0.72}{2019/05/26}{\pkg{nfssext-cfr}: Added.}
% \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@ebweight}{\renewcommand*{\LWR at f@series}{eb}}
+\newrobustcmd*{\LWR at HTML@ebweight}{%
+ \LWR at print@ebweight%
+ \renewcommand*{\LWR at f@series}{eb}%
+}
\LWR at formatted{ebweight}
% \end{macrocode}
% \end{macro}
@@ -37317,7 +40024,10 @@
% \begin{macro}{\lgweight} From \pkg{nfssext-cfr}.
% \changes{v0.72}{2019/05/26}{\pkg{nfssext-cfr}: Added.}
% \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@lgweight}{\renewcommand*{\LWR at f@series}{lg}}
+\newrobustcmd*{\LWR at HTML@lgweight}{%
+ \LWR at print@lgweight%
+ \renewcommand*{\LWR at f@series}{lg}%
+}
\LWR at formatted{lgweight}
% \end{macrocode}
% \end{macro}
@@ -37324,7 +40034,10 @@
% \begin{macro}{\rmfamily}
% \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@rmfamily}{\renewcommand*{\LWR at f@family}{rm}}
+\newrobustcmd*{\LWR at HTML@rmfamily}{%
+ \LWR at print@rmfamily%
+ \renewcommand*{\LWR at f@family}{rm}%
+}
\LWR at formatted{rmfamily}
% \end{macrocode}
% \end{macro}
@@ -37331,7 +40044,10 @@
% \begin{macro}{\sffamily}
% \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@sffamily}{\renewcommand*{\LWR at f@family}{sf}}
+\newrobustcmd*{\LWR at HTML@sffamily}{%
+ \LWR at print@sffamily%
+ \renewcommand*{\LWR at f@family}{sf}%
+}
\LWR at formatted{sffamily}
% \end{macrocode}
% \end{macro}
@@ -37338,29 +40054,55 @@
% \begin{macro}{\ttfamily}
% \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@ttfamily}{\renewcommand*{\LWR at f@family}{tt}}
+\newrobustcmd*{\LWR at HTML@ttfamily}{%
+ \LWR at print@ttfamily%
+ \renewcommand*{\LWR at f@family}{tt}%
+}
\LWR at formatted{ttfamily}
% \end{macrocode}
% \end{macro}
-
+%
+%
+% The following use \cs{AtBeginDocument} due to the
+% \LaTeX\ core \cs{reinstall at nfss@defs}, which redefines these
+% \cs{AtBeginDocument}. See \cmds{texdoc source2e}.
+%
% \begin{macro}{\upshape}
% \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@upshape}{\renewcommand*{\LWR at f@shape}{up}}
-\LWR at formatted{upshape}
+\newrobustcmd*{\LWR at HTML@upshape}{%
+ \LWR at print@upshape%
+ \renewcommand*{\LWR at f@shape}{up}%
+}
+\AtBeginDocument{\LWR at formatted{upshape}}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\itshape}
% \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@itshape}{\renewcommand*{\LWR at f@shape}{it}}
-\LWR at formatted{itshape}
+\newrobustcmd*{\LWR at HTML@itshape}{%
+ \LWR at print@itshape%
+ \renewcommand*{\LWR at f@shape}{it}%
+}
+\AtBeginDocument{\LWR at formatted{itshape}}
% \end{macrocode}
% \end{macro}
+
% \begin{macro}{\scshape}
+%
+% Note: \cs{LWR at print@scshape} is not used here since some fonts,
+% such as \pkg{erewhon}, copy/paste as all-caps.
+%
+% \changes{v0.87}{2020/05/12}{Added \bool{FixSmallCaps} to remove \cs{LWR at print@scshape}
+% for \pkg{erewhon}, et. al.}
% \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@scshape}{\renewcommand*{\LWR at f@shapecaps}{sc}}
-\LWR at formatted{scshape}
+\newrobustcmd*{\LWR at HTML@scshape}{%
+ \ifbool{FixSmallCaps}{}{%
+ \LWR at print@scshape%
+ }%
+ \renewcommand*{\LWR at f@shapecaps}{sc}%
+}
+\AtBeginDocument{\LWR at formatted{scshape}}
% \end{macrocode}
% \end{macro}
@@ -37370,22 +40112,30 @@
\@ifundefined{ulcshape}{
\LetLtxMacro\ulcshape\upshape
}{}
-\newrobustcmd*{\LWR at HTML@ulcshape}{\renewcommand*{\LWR at f@shapecaps}{ulc}}
-\LWR at formatted{ulcshape}
+\newrobustcmd*{\LWR at HTML@ulcshape}{%
+ \LWR at print@ulcshape%
+ \renewcommand*{\LWR at f@shapecaps}{ulc}%
+}
+\AtBeginDocument{\LWR at formatted{ulcshape}}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\sishape}
% \changes{v0.65}{2018/12/10}{Added \cs{sishape}.}
+% \changes{v0.87}{2020/05/12}{Added \bool{FixSmallCaps} to remove \cs{LWR at print@scshape}
+% for \pkg{erewhon}, et. al.}
% \begin{macrocode}
\@ifundefined{sishape}{
\LetLtxMacro\sishape\scshape
}{}
\newrobustcmd*{\LWR at HTML@sishape}{%
+ \ifbool{FixSmallCaps}{}{%
+ \LWR at print@sishape%
+ }%
\renewcommand*{\LWR at f@shape}{it}
\renewcommand*{\LWR at f@shapecaps}{sc}%
}
-\LWR at formatted{sishape}
+\AtBeginDocument{\LWR at formatted{sishape}}
% \end{macrocode}
% \end{macro}
@@ -37392,11 +40142,22 @@
% \begin{macro}{\slshape}
% \changes{v0.62}{2018/11/11}{Added.}
% \begin{macrocode}
-\newrobustcmd*{\LWR at HTML@slshape}{\renewcommand*{\LWR at f@shape}{sl}}
-\LWR at formatted{slshape}
+\newrobustcmd*{\LWR at HTML@slshape}{%
+ \LWR at print@slshape%
+ \renewcommand*{\LWR at f@shape}{sl}%
+}
+\AtBeginDocument{\LWR at formatted{slshape}}
% \end{macrocode}
% \end{macro}
+% \begin{macro}{\sscshape}
+% \changes{v0.84}{2020/04/13}{Moved to core.}
+% \begin{macrocode}
+\newrobustcmd{\LWR at HTML@sscshape}{\LWR at HTML@scshape}
+\AtBeginDocument{\LWR at formatted{sscshape}}
+% \end{macrocode}
+% \end{macro}
+
% \begin{macro}{\normalfont}
% \changes{v0.78}{2019/11/05}{Uses \cs{LWR at formatted}.}
% \begin{macrocode}
@@ -37407,6 +40168,27 @@
+% \begin{macrocode}
+\FilenameNullify{%
+ \LetLtxMacro\rmfamily\@empty%
+ \LetLtxMacro\sffamily\@empty%
+ \LetLtxMacro\ttfamily\@empty%
+ \LetLtxMacro\bfseries\@empty%
+ \LetLtxMacro\ebweight\@empty%
+ \LetLtxMacro\lgweight\@empty%
+ \LetLtxMacro\mdseries\@empty%
+ \LetLtxMacro\upshape\@empty%
+ \LetLtxMacro\slshape\@empty%
+ \LetLtxMacro\sishape\@empty%
+ \LetLtxMacro\scshape\@empty%
+ \LetLtxMacro\itshape\@empty%
+ \LetLtxMacro\ulcshape\@empty%
+ \LetLtxMacro\sscshape\@empty%
+ \LetLtxMacro\normalfont\@empty%
+}
+% \end{macrocode}
+
+
% \begin{macro}{\sp} \marg{text}
% For \pkg{siunitx}. Must work in math mode.
@@ -37426,33 +40208,37 @@
% \begin{macro}{\textsuperscript} \marg{text}
% \changes{v0.50}{2018/02/20}{Robustify macros.}
+% \changes{v0.84}{2020/04/13}{Use \cs{LWR at formatted}.}
% \begin{macrocode}
-\renewrobustcmd{\textsuperscript}[1]{\LWR at htmlspan{sup}{#1}}
+\newrobustcmd{\LWR at HTML@textsuperscript}[1]{\LWR at htmlspan{sup}{#1}}
+\LWR at formatted{textsuperscript}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\@textsuperscript} \marg{text}
% \changes{v0.42}{2017/10/16}{Added.}
+% \changes{v0.84}{2020/04/13}{Use \cs{LWR at formatted}.}
% \begin{macrocode}
-\renewcommand{\@textsuperscript}[1]{\LWR at htmlspan{sup}{#1}}
+\newcommand{\LWR at HTML@@textsuperscript}[1]{\LWR at htmlspan{sup}{#1}}
+\LWR at formatted{@textsuperscript}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\textsubscript} \marg{text}
% \changes{v0.50}{2018/02/20}{Robustify macros.}
+% \changes{v0.84}{2020/04/13}{Use \cs{LWR at formatted}. No longer \cs{AtBeginDocument}.}
% \begin{macrocode}
-\AtBeginDocument{
-\renewrobustcmd{\textsubscript}[1]{\LWR at htmlspan{sub}{#1}}
-}
+ \newrobustcmd{\LWR at HTML@textsubscript}[1]{\LWR at htmlspan{sub}{#1}}
+ \LWR at formatted{textsubscript}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\@textsubscript} \marg{text}
% \changes{v0.42}{2017/10/16}{Added.}
+% \changes{v0.84}{2020/04/13}{Use \cs{LWR at formatted}. No longer \cs{AtBeginDocument}.}
% \begin{macrocode}
-\AtBeginDocument{
-\renewcommand{\@textsubscript}[1]{\LWR at htmlspan{sub}{#1}}
-}
+ \newcommand{\LWR at HTML@@textsubscript}[1]{\LWR at htmlspan{sub}{#1}}
+ \LWR at formatted{@textsubscript}
% \end{macrocode}
% \end{macro}
@@ -37609,6 +40395,7 @@
% \changes{v0.45}{2017/12/29}{Improved: Robust \cs{,}, \cs{~}, and \cs{textellipsis} commands.}
% \changes{v0.56}{2018/05/09}{Added \cs{thinspace}.}
% \changes{v0.61}{2018/09/23}{Spaces redefined \cs{AtBeginDocument}.}
+% \changes{v0.88}{2020/07/03}{Added \cs{vdots}.}
% \begin{macrocode}
\AtBeginDocument{
\renewrobustcmd*{\,}{\HTMLunicode{202f}} % HTML thin non-breakable space
@@ -37616,6 +40403,7 @@
\renewrobustcmd*{\negthinspace}{\HTMLunicode{202f}} % HTML thin non-breakable space
\renewrobustcmd*{~}{\HTMLentity{nbsp}}
\renewrobustcmd*{\textellipsis}{\HTMLunicode{2026}}
+\renewrobustcmd*{\vdots}{\HTMLunicode{22EE}}
}
% \end{macrocode}
%
@@ -37681,8 +40469,26 @@
% \begin{macro}{\hrulefill}
% \changes{v0.20}{2017/01/19}{Inserts a short rule.}
% \changes{v0.58}{2018/06/07}{Improved print/\HTML\ output selection.}
+% \changes{v0.88}{2020/06/28}{Full line \element{div} if not started paragraph.}
% \begin{macrocode}
-\newcommand*{\LWR at HTML@hrulefill}{\rule{1in}{1pt}}
+\newcommand*{\LWR at HTML@hrulefill}{%
+ \ifbool{LWR at doingapar}%
+ {\rule{1in}{1pt}}%
+ {%
+ \LWR at findcurrenttextcolor%
+ \ifdefstring{\LWR at tempcolor}{000000}%
+ {%
+ \begin{BlockClass}{hrule}%
+ \end{BlockClass}%
+ }%
+ {%
+ \begin{BlockClass}[%
+ border-top: 1px solid \LWR at origpound\LWR at tempcolor % space
+ ]{hrule}%
+ \end{BlockClass}%
+ }%
+ }%
+}%
\LWR at formatted{hrulefill}
% \end{macrocode}
% \end{macro}
@@ -37777,7 +40583,7 @@
% Placed just before \cs{hspace}, \cs{quad}, or \cs{qquad}'s \HTML\ output.
% \begin{macrocode}
\newcommand*{\LWR at minipagestartpars}{%
-\ifbool{LWR at minipagethispar}{\LWR at startpars}{}%
+ \ifbool{LWR at minipagethispar}{\LWR at startpars}{}%
}
% \end{macrocode}
% \end{macro}
@@ -37786,7 +40592,7 @@
% Placed just after \cs{hspace}, \cs{quad}, or \cs{qquad}'s \HTML\ output.
% \begin{macrocode}
\newcommand*{\LWR at minipagestoppars}{%
-\ifbool{LWR at minipagethispar}{\LWR at stoppars}{}%
+ \ifbool{LWR at minipagethispar}{\LWR at stoppars}{}%
}
% \end{macrocode}
% \end{macro}
@@ -37799,9 +40605,9 @@
% \changes{v0.65}{2018/12/22}{Changed to Unicode EM SPACE.}
% \begin{macrocode}
\renewrobustcmd*{\quad}{%
-\LWR at minipagestoppars%
-\HTMLunicode{2003}%
-\LWR at minipagestartpars%
+ \LWR at minipagestoppars%
+ \HTMLunicode{2003}%
+ \LWR at minipagestartpars%
}
% \end{macrocode}
% \end{macro}
@@ -37820,9 +40626,9 @@
% \changes{v0.65}{2018/12/22}{Changed to Unicode EN SPACE.}
% \begin{macrocode}
\renewrobustcmd*{\enskip}{%
-\LWR at minipagestoppars%
-\HTMLunicode{2002}%
-\LWR at minipagestartpars%
+ \LWR at minipagestoppars%
+ \HTMLunicode{2002}%
+ \LWR at minipagestartpars%
}
% \end{macrocode}
% \end{macro}
@@ -37881,11 +40687,12 @@
}%
% \end{macrocode}
% Print the span with the converted width. Not rounded.
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
{%
\LWR at htmltagc{%
- span style="width:\LWR at printlength{\LWR at tempwidth}; % extra space
- display:inline-block"%
+ span style=\textquotedbl{}width:\LWR at printlength{\LWR at tempwidth}; % extra space
+ display:inline-block\textquotedbl%
}%
% \end{macrocode}
% If formatting for a word processor, approximate with a number of \cs{quad}s,
@@ -38068,11 +40875,12 @@
% less than 1pt is quite common in \LaTeX\ code.
% \changes{v0.57}{2018/06/02}{Fix: Colored rules.}
% \changes{v0.66}{2019/02/02}{Improved \HTML\ formatting.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\LWR at findcurrenttextcolor%
\LWR at htmltagc{%
span\LWR at indentHTML%
- style="%
+ style=\textquotedbl%
% \end{macrocode}
% The \HTML\ background color is used to draw the filled rule according
% to the \LaTeX\ foreground color set by \cs{textcolor}.
@@ -38107,8 +40915,9 @@
}%
% \end{macrocode}
% Display inline-block to place the span inline with the text:
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
- display:inline-block;"\LWR at orignewline%
+ display:inline-block;\textquotedbl\LWR at orignewline%
}%
% \end{macrocode}
% If formatting for a word processor, approximate with a number of underscores,
@@ -38144,6 +40953,33 @@
% \end{macrocode}
% \end{macro}
%
+%
+% ^^A This doesn't work because \hrule is used in many places at a low level.
+% ^^A % \begin{macro}{\hrule}
+% ^^A % Generates a <div>, then uses the original to consume any arguments.
+% ^^A % The print-mode rule is not seen by \prog{pdftotext}.
+% ^^A %
+% ^^A % \changes{v0.88}{2020/06/22}{Added.}
+% ^^A % \begin{macrocode}
+% ^^A \renewcommand*{\hrule}{%
+% ^^A \ifbool{LWR at doingstartpars}%
+% ^^A {%
+% ^^A \begin{BlockClass}[border-top:1px solid silver]{hrule}%
+% ^^A \end{BlockClass}%
+% ^^A }{}%
+% ^^A \LWR at orig@hrule%
+% ^^A }
+% ^^A % \end{macrocode}
+% ^^A %
+% ^^A % Not needed, since print-mode \env{BlockClass} does nothing:
+% ^^A % \begin{sourceverb}
+% ^^A % \appto\LWR at restoreorigformatting{
+% ^^A % \let\hrule\LWR at orig@hrule%
+% ^^A % }
+% ^^A % \end{sourceverb}
+% ^^A % \end{macro}
+%
+%
% \begin{macrocode}
\end{warpHTML}
% \end{macrocode}
@@ -38158,17 +40994,18 @@
\begin{warpHTML}
% \end{macrocode}
-% \begin{macro}{\phantomsection}
+% \begin{macro}{\LWR at phantomsection}
% Emulate the \pkg{hyperref} \cs{phantomsection} command,
% often used to insert the bibliography into the table of contents.
% Ignores \cs{ForceHTMLTOC}.
% \changes{v0.55}{2018/04/26}{Fix: \cs{ForceHTMLTOC} with \cs{phantomsection}.}
+% \changes{v0.86}{2020/05/07}{\pkg{hyperref}: Adjusted emulation.}
% \begin{macrocode}
-\DeclareDocumentCommand{\phantomsection}{}{%
-\begingroup%
-\boolfalse{LWR at forcinghtmltoc}%
-\section*{}%
-\endgroup%
+\newrobustcmd*{\LWR at phantomsection}{%
+ \begingroup%
+ \boolfalse{LWR at forcinghtmltoc}%
+ \section*{}%
+ \endgroup%
}
% \end{macrocode}
% \end{macro}
@@ -38202,23 +41039,34 @@
%
%
% \changes{v0.62}{2018/10/23}{Logos: Fix for \XeTeX\ logo if \pkg{graphics} is not loaded.}
+% \changes{v0.84}{2020/04/06}{Logos: Only warn about \pkg{graphics} if actually use \cs{Xe}.}
%
% \codeall
% \begin{macrocode}
\begin{warpall}
+\newbool{LWR at warnXe}
+\boolfalse{LWR at warnXe}
+
\newrobustcmd*{\Xe}
- {X\hspace{-.1667em}\raisebox{-.5ex}{E}}
+ {%
+ X\hspace{-.1667em}\raisebox{-.5ex}{E}%
+ \global\booltrue{LWR at warnXe}%
+ }
\AtBeginDocument{
-\@ifpackageloaded{graphics}{
- \@ifpackageloaded{metalogo}{}{
- \renewrobustcmd*{\Xe}
- {X\hspace{-.1667em}\raisebox{-.5ex}{\reflectbox{E}}}
- }
-}{
- \PackageWarningNoLine{lwarp}{Load graphicx or graphics
- for improved XeTeX logo}
+ \@ifpackageloaded{graphics}{
+ \@ifpackageloaded{metalogo}{}{
+ \renewrobustcmd*{\Xe}
+ {X\hspace{-.1667em}\raisebox{-.5ex}{\reflectbox{E}}}
+ }
+ }{}
}
+
+\AtEndDocument{
+ \ifbool{LWR at warnXe}{
+ \PackageWarningNoLine{lwarp}{Load graphicx or graphics
+ for improved XeTeX logo}
+ }{}
}
\providerobustcmd*{\XeTeX}{\mbox{\Xe\hspace{-.125em}\TeX}}
@@ -38422,7 +41270,7 @@
%
-% \section{\cs{AtBeginDocument}, \cs{AtEndDocument}}
+% \section{Starting and stopping \pkg{lwarp}}
% \codehtml
% \begin{macrocode}
@@ -38446,8 +41294,74 @@
% \end{macrocode}
+% \section{Loading \pkg{everyshi} patches}
+%
+% \pkg{everyshi} is emulated by the \LaTeX\ core, so its patches are loaded
+% here.
+% \cs{AtBeginDocument} is used in case an older verison of \LaTeX\ is
+% used.
+%
+% \changes{v0.89}{2020/07/28}{\pkg{everyshi}: Included in \LaTeX\ core.}
+%
+% \codehtml
+% \begin{macrocode}
+\begin{warpHTML}
+\AtBeginDocument{
+ \@ifpackageloaded{everyshi}{
+ \RequirePackage{lwarp-everyshi}
+ }{}
+}
+\end{warpHTML}
+% \end{macrocode}
+% \section{Loading \pkg{textcomp} patches}
+%
+% \pkg{textcomp} has now been integrated into the \LaTeX\ core,
+% so its patches are loaded now.
+%
+% \codehtml
+%
+% \changes{v0.84}{2020/04/14}{Fixed: \pkg{textcomp} now in kernel.}
+% \begin{macrocode}
+\begin{warpHTML}
+\RequirePackage{lwarp-textcomp}
+\end{warpHTML}
+% \end{macrocode}
+
+
+
+% \section{Loading \pkg{amsmath}, \pkg{amsthm} patches, \pkg{centernot}}
+%
+% \pkg{amsmath}, \pkg{amsthm}, and \pkg{centernot} may have been preloaded,
+% such as by \pkg{newtx}, so their patches are loaded now.
+%
+% \codehtml
+%
+% \changes{v0.89}{2020/08/12}{Allow preload of \pkg{amsmath}, \pkg{amsthm}, \pkg{centernot}.}
+% \begin{macrocode}
+\begin{warpHTML}
+\@ifpackageloaded{amsthm}{
+ \RequirePackage{lwarp-amsthm}
+}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@ifpackageloaded{amsmath}{
+ \RequirePackage{lwarp-amsmath}
+}{}
+% \end{macrocode}
+%
+%
+% \pkg{amsthm} may load \pkg{centernot}, so \pkg{centernot} must be checked second.
+% \begin{macrocode}
+\@ifpackageloaded{centernot}{
+ \RequirePackage{lwarp-centernot}
+}{}
+\end{warpHTML}
+% \end{macrocode}
+
+
% \section{Loading \brand{Koma-script} class patches}
%
% Load patches to \pkg{koma-script}.
@@ -38473,22 +41387,25 @@
% Load patches to \pkg{memoir}.
%
% \changes{v0.45}{2017/12/03}{\pkg{memoir}: Added.}
+% \changes{v0.84}{2020/03/31}{\pkg{memoir}: Preloads \pkg{xcolor}.}
%
+% \codeall
+% \begin{macrocode}
+\begin{warpprint}
+\@ifclassloaded{memoir}{\LWR at origRequirePackage{xcolor}}{}
+\end{warpprint}
+% \end{macrocode}
+
% \codehtml
% \begin{macrocode}
\begin{warpHTML}
-% \end{macrocode}
-%
-% \begin{macrocode}
\@ifclassloaded{memoir}{\RequirePackage{lwarp-patch-memoir}}{}
-% \end{macrocode}
-%
-% \begin{macrocode}
\end{warpHTML}
% \end{macrocode}
+
% \section{\pkg{ut*} class patches}
%
% Load patches to \pkg{uj*} and \pkg{ut*} classes, as well as \pkg{ltj*} classes.
@@ -38525,6 +41442,7 @@
\quad%
}
}
+ \renewcommand*{\LWR at printchaptername}{}
% \end{macrocode}
% Use decimal points instead of centered dots:
% \begin{macrocode}
@@ -38610,6 +41528,8 @@
\LWR at isolate{\CTEX at chaptername}~%
\CTEX at chapter@aftername%
}%
+
+ \renewcommand*{\LWR at printchaptername}{}
}{}
}
% \end{macrocode}
@@ -38691,7 +41611,7 @@
\typeout{Package lwarp:}
\typeout{If the error}
\typeout{\space\space``! Undefined control sequence.
- \space ... \space \protect\@begindocumenthook''}
+ \space ... \space \protect\__hook begindocument''}
\typeout{occurs here, use the polyglossia macro:}
\typeout{\space\space\protect\setmainlanguage\protect{...\protect}}
\typeout{---}
@@ -38714,13 +41634,12 @@
%
%
% \section{\brand{MathJax} warnings}
-% ^^A *mathjax
%
% \begin{macro}{\LWR at mathjaxwarn} \marg{packagename} \marg{More text.}
%
% To be done \cs{AtBeginDocument}.
%
-% \changes{v0.79}{2020/01/18}{Warn if using packages not supported by \brand{MathJax}.}
+% \changes{v0.79}{2020/01/18}{Warn if using packages partially supported by \brand{MathJax}.}
% \begin{macrocode}
\newcommand*{\LWR at mathjaxwarn}[2]{%
\@ifpackageloaded{lwarp-#1}{%
@@ -38741,60 +41660,147 @@
}{}%
}
+% \begin{macro}{\LWR at nomathjaxwarn} \marg{packagename} \marg{More text.}
+%
+% To be done \cs{AtBeginDocument}.
+%
+% \changes{v0.894}{2020/12/22}{Warn if using packages not supported by \brand{MathJax}.}
+% \changes{v0.895}{2021/01/08}{Improved \brand{MathJax} warning.}
+% \begin{macrocode}
+\newcommand*{\LWR at nomathjaxwarn}[2]{%
+ \@ifpackageloaded{lwarp-#1}{%
+ \ifblank{#2}{%
+ \PackageWarningNoLine{lwarp}
+ {%
+ Lwarp does not provide MathJax support for #1.\MessageBreak
+ Use SVG math by removing the Lwarp mathjax option%
+ }
+ }{%
+ \PackageWarningNoLine{lwarp}
+ {%
+ Lwarp does not provide MathJax support for #1.\MessageBreak
+ #2%
+ }
+ }%
+ }{}%
+}
+% \end{macrocode}
+%
+% \begin{macro}{\LWR at forceSVGmessage} \marg{packagename}
+% \changes{v0.894}{2020/12/22}{Improved \brand{MathJax} warnings.}
+% \changes{v0.895}{2021/01/08}{Improved \brand{MathJax} warning.}
+% \begin{macrocode}
+\newcommand*{\LWR at forceSVGmessage}[1]{%
+ SVG math output may be enabled for select math\MessageBreak
+ expressions to preserve #1 visual\MessageBreak
+ features for those particular expressions.\MessageBreak
+ Before the chosen inline math, use \protect\inlinemathother\MessageBreak
+ to begin using SVG math, and \protect\inlinemathnormal\MessageBreak
+ afterward to resume using MathJax math.\MessageBreak
+ Before display math, use \protect\displaymathother\MessageBreak
+ to begin using SVG math, and use \protect\displaymathnormal\MessageBreak
+ after to resume using MathJax for the following math.\MessageBreak
+ Or, use SVG math for all expressions by removing\MessageBreak
+ the mathjax option for the lwarp package%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% ^^A *mathjax warnings
+%
+% If \brand{MathJax} is being used, issue a warning for certain packages.
+% \changes{v0.894}{2020/12/22}{Improved \brand{MathJax} warnings.}
+% \changes{v0.895}{2021/02/06}{Added \brand{MathJax} warnings for
+% \pkg{aligned-overset}, \pkg{autoaligne}, \pkg{boldtensors},
+% \pkg{liberitinust1math}, \pkg{tensind}.}
+% \changes{v0.895}{2021/02/06}{Improved \brand{MathJax} warning for \pkg{unicode-math}.}
+% \begin{macrocode}
\AtBeginDocument{
\ifbool{mathjax}{
+ \LWR at nomathjaxwarn{aligned-overset}{}
+ \LWR at nomathjaxwarn{amscdx}
+ {\LWR at forceSVGmessage{amscdx}}
\LWR at mathjaxwarn{arydshln}
{In a math array, do not use the optional argument\MessageBreak
for \protect\cdashline.\space\space
Furthermore, \protect\cline\space is not\MessageBreak
supported by MathJax}
+ \LWR at nomathjaxwarn{autoaligne}{}
\LWR at mathjaxwarn{autonum}
{MathJax does not support equation+.\MessageBreak
You may use the warpprint and warpHTML\MessageBreak
environments to isolate the package load\MessageBreak
and the equation+ environments}
- \LWR at mathjaxwarn{backnaur}
- {You may enclose its uses inside\MessageBreak
- lateximage environments to force SVG output,\MessageBreak
- but this also changes the print output}
\LWR at mathjaxwarn{bigdelim}
{Delimiters appear only of the first line}
+ \LWR at nomathjaxwarn{boldtensors}{}
\LWR at mathjaxwarn{booktabs}
- {In a math array, do not use (trim) for \protect\cmidrule}
+ {\protect\cmidrule\space is not displayed}
\LWR at mathjaxwarn{breqn}
{Each environment becomes an SVG image}
+ \LWR at mathjaxwarn{colortbl}
+ {Colors are ignored in MathJax.\MessageBreak
+ (Text mode tabular does support colortbl.)\MessageBreak
+ \LWR at forceSVGmessage{colortbl}}
\LWR at mathjaxwarn{delarray}
- {Enclose its uses inside lateximage\MessageBreak
- environments to force SVG output}
- \LWR at mathjaxwarn{jkmath}{}
- \LWR at mathjaxwarn{mathspec}{}
+ {\LWR at forceSVGmessage{delarray}}
+ \LWR at nomathjaxwarn{gauss}
+ {\LWR at forceSVGmessage{gauss}}
+ \LWR at mathjaxwarn{hhline}
+ {A simple \protect\hline\space is used}
+ \LWR at mathjaxwarn{isomath}
+ {Some of the symbol font macros such as \protect\mathsfbfit\MessageBreak
+ do not use a sans font because MathJax does not yet\MessageBreak
+ have sans Greek. Tensors may look like vectors%
+ }
+ \LWR at nomathjaxwarn{jkmath}
+ {\LWR at forceSVGmessage{jkmath}}
+ \LWR at mathjaxwarn{libertinust1math}
+ {Some of the symbol font macros such as \protect\mathsfbfit\MessageBreak
+ do not use a sans font because MathJax does not yet\MessageBreak
+ have sans Greek. Tensors may look like vectors%
+ }
\LWR at mathjaxwarn{mathtools}
- {Avoid starred macros.\MessageBreak
- See the Lwarp manual for other limitations}
+ {See the Lwarp manual regarding the disallowspaces\MessageBreak
+ and showonlyrefs options, the alignat environment,\MessageBreak
+ and \protect\DeclarePairedDelimiter\space and related%
+ }
+ \LWR at mathjaxwarn{mathspec}
+ {Double quotes are removed, even inside \protect\text}
\LWR at mathjaxwarn{multirow}
{Multirow works as expected in text mode, but\MessageBreak
limited emulation is provided for MathJax math.\MessageBreak
\protect\multirow\space ignores all arguments except\MessageBreak
the text}
- \LWR at mathjaxwarn{pb-diagram}
- {Enclose its uses inside lateximage environments\MessageBreak
- to force SVG output}
- \LWR at mathjaxwarn{physics}
- {The third-party extension is not yet used.\MessageBreak
- Avoid starred macros and automatic delimiters.\MessageBreak
- Use all mandatory arguments, adding empty as needed.\MessageBreak
- See the Lwarp manual for details}
+ \LWR at mathjaxwarn{nicematrix}
+ {Keys/values are ignored in MathJax.\MessageBreak
+ \protect\Cdots, etc. do not span multiple cells.\MessageBreak
+ AutoNiceMatrix, etc. are not supported for MathJax.\MessageBreak
+ \LWR at forceSVGmessage{nicematrix}%
+ }
+ \LWR at nomathjaxwarn{pb-diagram}
+ {\LWR at forceSVGmessage{pb-diagram}}
+% \LWR at mathjaxwarn{physics}
+% % {The third-party extension is not used.\MessageBreak
+% {The MathJax v3 extension is used.\MessageBreak
+% See the Lwarp manual for details}
+ \LWR at nomathjaxwarn{tensind}{}
\LWR at mathjaxwarn{unicode-math}
- {Not all characters are encoded correctly.\MessageBreak
+ {Do not use embedded Unicode characters.\MessageBreak
+ (Not all characters are encoded correctly.)\MessageBreak
Some symbol fonts are not supported by MathJax,\MessageBreak
- and are only approximated}
+ and are only approximated.\MessageBreak
+ Greek macros such as \protect\alpha\space respond to the math-style\MessageBreak
+ option. Latin symbols does not, per MathJax\MessageBreak
+ limitations, unless placed inside \protect\symbit\space or similar}
+ \LWR at nomathjaxwarn{unitsdef}{}
\LWR at mathjaxwarn{witharrows}
{Arrows can only point to the next line.\MessageBreak
Text is only placed on a single line}
- \LWR at mathjaxwarn{xy}
- {xy works in text, but in math you must\MessageBreak
- enclose its uses inside lateximage\MessageBreak
- environments to force SVG output}
+ \LWR at nomathjaxwarn{xy}
+ {In text, xy works as-is. SVG images will be generated.\MessageBreak
+ \LWR at forceSVGmessage{xy}}
}{}
}
% \end{macrocode}
@@ -39050,33 +42056,37 @@
\InlineClass{abstractrunintitle}{\abstractname}%
\@bslabeldelim}%
}
-
+% \end{macrocode}
+%
+% \changes{v0.84}{2020/03/28}{\pkg{abstract}: Updated for \pkg{memoir}.}
+% \begin{macrocode}
\@ifclassloaded{memoir}
{
\renewenvironment{abstract}{%
-% \titlepage
- \null\vfil
- \@beginparpenalty\@lowpenalty
+% % \titlepage
+% \null\vfil
+% \@beginparpenalty\@lowpenalty
+ \setup at bstract
\if at bsrunin
\else
- \if at bsstyle
- \abstitlestyle{\BlockClassSingle{abstracttitle}{\abstractname}}
- \else
+% \if at bsstyle
+% \abstitlestyle{\BlockClassSingle{abstracttitle}{\abstractname}}
+% \else
\ifnumber at bs
\num at bs
\else
\begin{\absnamepos}%
\abstractnamefont \BlockClassSingle{abstracttitle}{\abstractname}
- \@endparpenalty\@M
+% \@endparpenalty\@M
\end\absnamepos%
-%% \vspace{\abstitleskip}%
+ \vspace{\abstitleskip}%
\fi
- \fi
- \vspace{\abstitleskip}%
+% \fi
+% \vspace{\abstitleskip}%
\fi
\put at bsintoc%
\begin{@bstr at ctlist}\if at bsrunin\@bsrunintitle\fi\abstracttextfont}%
- {\par\end{@bstr at ctlist}\vfil\null%\endtitlepage
+ {\par\end{@bstr at ctlist}%\vfil\null%\endtitlepage
}
}{% not memoir
\if at titlepage
@@ -39196,41 +42206,97 @@
%
%
%
-%
% \iffalse
-%<*afterpage>
+%<*accents>
% \fi
%
-% \part{lwarp-afterpage.sty}
+% \part{lwarp-accents.sty}
%
-% \section{afterpage}
+% \section{accents}
%
-% \credits{David Carlisle}
+% \credits{Javier Bezos}
%
-% \DescribePackage{afterpage} \pkg{afterpage} is emulated.
+% \DescribePackage{accents}
+% \pkg{accents} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
%
-% \changes{v0.20}{2017/01/11}{\pkg{afterpage}: Added.}
+% \changes{v0.89}{2020/07/21}{\pkg{accents}: Added.}
%
% \codehtml
%
-% Discard all options for \pkg{lwarp-afterpage}:
% \begin{macrocode}
-\LWR at ProvidesPackageDrop{afterpage}[2014/10/28]
+\LWR at ProvidesPackagePass{accents}[2006/05/12]
% \end{macrocode}
%
+% For \brand{MathJax}:
% \begin{macrocode}
-\newcommand{\afterpage}[1]{#1}
+\begin{warpMathJax}
+\LWR at infoprocessingmathjax{accents}
+
+\CustomizeMathJax{\newcommand{\ring}[1]{\mathring{#1}}}
+\CustomizeMathJax{\newcommand{\accentset}[2]{\overset{#1{}}{#2}}}
% \end{macrocode}
%
+% As of this writing, \brand{MathJax} v3 does not yet support
+% groups for macros, so for \cs{underaccent}, the originals are remembered here,
+% then they are temporarily redefined and used inside \cs{underaccent},
+% then restored to their originals.
+% \cs{LARGE} gives a reasonable size, and \cs{raise} is used to
+% adjust vertically without introducing extra line space.
+% \begin{macrocode}
+\CustomizeMathJax{\let\LWRgrave\grave}
+\CustomizeMathJax{\let\LWRacute\acute}
+\CustomizeMathJax{\let\LWRcheck\check}
+\CustomizeMathJax{\let\LWRbreve\breve}
+\CustomizeMathJax{\let\LWRbar\bar}
+\CustomizeMathJax{\let\LWRhat\hat}
+\CustomizeMathJax{\let\LWRdot\dot}
+\CustomizeMathJax{\let\LWRtilde\tilde}
+\CustomizeMathJax{\let\LWRddot\ddot}
+\CustomizeMathJax{\let\LWRvec\vec}
+\CustomizeMathJax{\let\LWRwidetilde\widetilde}
+
+\CustomizeMathJax{\newcommand{\underaccent}[2]{%
+ {%
+ \renewcommand{\grave}[1]{{\LARGE\LWRgrave{##1}}}%
+ \renewcommand{\acute}[1]{{\LARGE\LWRacute{##1}}}%
+ \renewcommand{\check}[1]{{\LARGE\LWRcheck{##1}}}%
+ \renewcommand{\breve}[1]{{\LARGE\LWRbreve{##1}}}%
+ \renewcommand{\bar}[1]{{\LARGE\LWRbar{##1}}}%
+ \renewcommand{\hat}[1]{{\LARGE\LWRhat{##1}}}%
+ \renewcommand{\dot}[1]{{\LARGE\LWRdot{##1}}}%
+ \renewcommand{\tilde}[1]{{\LARGE\LWRtilde{##1}}}%
+ \renewcommand{\ddot}[1]{{\LARGE\LWRddot{##1}}}%
+ \renewcommand{\vec}[1]{{\LARGE\LWRvec{##1}}}%
+ \renewcommand{\widetilde}[1]{{\LARGE\LWRwidetilde{\hphantom{#2}}}}%
+ \underset{\raise 2pt {#1{}}}{#2}%
+ \let\grave\LWRgrave%
+ \let\acute\LWRacute%
+ \let\check\LWRcheck%
+ \let\breve\LWRbreve%
+ \let\bar\LWRbar%
+ \let\hat\LWRhat%
+ \let\dot\LWRdot%
+ \let\tilde\LWRtilde%
+ \let\ddot\LWRddot%
+ \let\vec\LWRvec%
+ \let\widetilde\LWRwidetilde%
+ }%
+}}
+
+\CustomizeMathJax{\newcommand{\undertilde}[1]{%
+ \underset{\raise 3pt {\widetilde{\hphantom{#1}}}}{#1}%
+}}
+\end{warpMathJax}
+% \end{macrocode}
+%
% \iffalse
-%</afterpage>
+%</accents>
% \fi
%
%
%
%
-%
-%
% \iffalse
%<*accessibility>
% \fi
@@ -39252,7 +42318,7 @@
%
% \begin{macrocode}
\newcommand{\alt}[1]{\ThisAltText{#1}}
-\newcommand{\newhref}[3]{\ThisAltText{#2}\href{#1}{#3}}%
+\newcommand{\newhref}[3]{\ThisAltText{#2}\LWR at href{#1}{#3}}%
\providecommand{\thead}[1]{\textbf{#1}}
% \end{macrocode}
%
@@ -39325,6 +42391,8 @@
% \DescribePackage{acro}
% \pkg{acro} is patched for use by \pkg{lwarp}.
%
+% \limitsacro
+%
% \changes{v0.48}{2018/02/02}{\pkg{acro}: Added.}
%
% \codehtml
@@ -39352,11 +42420,25 @@
\LWR at DeclareAcronym
}
% \end{macrocode}
-
+%
+%
+% Replace dot fill with simple dots:
+% \changes{v0.895}{2021/01/20}{\pkg{acro}: Updated to v3.5.}
+% \begin{macrocode}
+\ExplSyntaxOn
+\cs_new_protected:Npn \LWR at HTML@acro_dot_fill: {\dots\space}
+\LWR at formatted{acro_dot_fill:}
+\ExplSyntaxOff
+% \end{macrocode}
+%
+%
% Modified to activate the current font:
% \changes{v0.76}{2019/10/07}{\pkg{acro}: Updated for v2.10.}
% \begin{macrocode}
\ExplSyntaxOn
+\@ifpackagelater{acro}{2020/04/29}%
+{}% v3 or later
+{% before v3
\@ifpackagelater{acro}{2019/09/23}%
{% v2.10 or later
\cs_gset_protected:Npn \__acro_typeset:nn #1#2
@@ -39453,6 +42535,7 @@
\group_end:
}
}% before v2.10
+}% before v3
\ExplSyntaxOff
% \end{macrocode}
@@ -39601,8 +42684,8 @@
% \changes{v0.47}{2018/01/26}{\pkg{adjmulticol}: Fix: Line wrap at \HTML\ hyphen.}
% \begin{macrocode}
\BlockClass[%
-\LWR at print@mbox{margin-left:\LWR at printlength{\LWR at templengthone}} ; %
-\LWR at print@mbox{margin-right:\LWR at printlength{\LWR at templengthtwo}}%
+ \LWR at print@mbox{margin-left:\LWR at printlength{\LWR at templengthone}} ; %
+ \LWR at print@mbox{margin-right:\LWR at printlength{\LWR at templengthtwo}}%
]{\LWR at mcolstype}%
}
{\endBlockClass}
@@ -39885,37 +42968,37 @@
% and turns off line numbering while creating the \element{div} tags:
% \begin{macrocode}
\renewcommand{\algocf at Vline}[1]{%
-\boolfalse{LWR at algocf@dopars}%
-\begin{BlockClass}{alg2evline}
-\booltrue{LWR at algocf@dopars}%
-#1
-\boolfalse{LWR at algocf@dopars}%
-\end{BlockClass}
-\booltrue{LWR at algocf@dopars}%
+ \boolfalse{LWR at algocf@dopars}%
+ \begin{BlockClass}{alg2evline}
+ \booltrue{LWR at algocf@dopars}%
+ #1
+ \boolfalse{LWR at algocf@dopars}%
+ \end{BlockClass}
+ \booltrue{LWR at algocf@dopars}%
}
% \end{macrocode}
%
% \begin{macrocode}
\renewcommand{\algocf at Vsline}[1]{%
-\boolfalse{LWR at algocf@dopars}%
-\begin{BlockClass}{alg2evsline}
-\booltrue{LWR at algocf@dopars}%
-#1
-\boolfalse{LWR at algocf@dopars}%
-\end{BlockClass}
-\booltrue{LWR at algocf@dopars}%
+ \boolfalse{LWR at algocf@dopars}%
+ \begin{BlockClass}{alg2evsline}
+ \booltrue{LWR at algocf@dopars}%
+ #1
+ \boolfalse{LWR at algocf@dopars}%
+ \end{BlockClass}
+ \booltrue{LWR at algocf@dopars}%
}
% \end{macrocode}
%
% \begin{macrocode}
\renewcommand{\algocf at Noline}[1]{%
-\boolfalse{LWR at algocf@dopars}%
-\begin{BlockClass}{alg2enoline}
-\booltrue{LWR at algocf@dopars}%
-#1
-\boolfalse{LWR at algocf@dopars}%
-\end{BlockClass}
-\booltrue{LWR at algocf@dopars}%
+ \boolfalse{LWR at algocf@dopars}%
+ \begin{BlockClass}{alg2enoline}
+ \booltrue{LWR at algocf@dopars}%
+ #1
+ \boolfalse{LWR at algocf@dopars}%
+ \end{BlockClass}
+ \booltrue{LWR at algocf@dopars}%
}
% \end{macrocode}
%
@@ -39961,13 +43044,9 @@
%
% \changes{v0.42}{2017/10/27}{\pkg{algorithmicx}: If \progcode{FormatWP} add \cs{quad}s.}
% \changes{v0.44}{2017/11/16}{\pkg{algorithmicx}: Improved comment symbol.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
%
-% \codehtml
% \begin{macrocode}
-\begin{warpHTML}
-% \end{macrocode}
-
-% \begin{macrocode}
\AtBeginEnvironment{algorithmic}{%
%
\let\origALG at doentity\ALG at doentity%
@@ -39975,7 +43054,9 @@
\renewcommand*{\ALG at doentity}{%
\origALG at doentity%
\LWR at htmltagc{%
-span style="width:\LWR at printlength{\ALG at thistlm}; display:inline-block;"%
+ span style=\textquotedbl{}%
+ width:\LWR at printlength{\ALG at thistlm}; display:inline-block;%
+ \textquotedbl%
}%
\ifbool{FormatWP}{%
\setlength{\LWR at templengthone}{\the\ALG at thistlm}%
@@ -39999,10 +43080,6 @@
}%
% \end{macrocode}
-% \begin{macrocode}
-\end{warpHTML}
-% \end{macrocode}
-
% \iffalse
%</algorithmicx>
% \fi
@@ -40024,6 +43101,7 @@
% \pkg{alltt} is patched for use by \pkg{lwarp}.
%
% \changes{v0.20}{2017/01/11}{\pkg{alltt}: Added.}
+% \changes{v0.84}{2020/04/16}{\pkg{alltt}: Added print mode.}
%
% \codehtml
%
@@ -40034,13 +43112,30 @@
% \begin{macrocode}
\AfterEndPreamble{
\LWR at traceinfo{Patching alltt.}
+
\AtBeginEnvironment{alltt}{%
-\LWR at forcenewpage
-\LWR at atbeginverbatim{3}{alltt}%
+ \ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}%
+ {}%
+ {%
+ \LWR at forcenewpage
+% \end{macrocode}
+% Vertical spacing changes if inside a list.
+% \begin{macrocode}
+ \LWR at atbeginverbatim{alltt}%
+ }%
}
+
\AfterEndEnvironment{alltt}{%
- \LWR at afterendverbatim{2}%
+ \ifnumcomp{\value{LWR at lateximagedepth}}{>}{0}%
+ {}%
+ {%
+% \end{macrocode}
+% Vertical spacing changes if inside a list.
+% \begin{macrocode}
+ \LWR at afterendverbatim%
+ }%
}
+
}
% \end{macrocode}
%
@@ -40051,8 +43146,55 @@
%
%
%
+% \iffalse
+%<*amscdx>
+% \fi
%
+% \part{lwarp-amscdx.sty}
+%
+% \section{amscdx}
+%
+% \credits{Martin Vermeer}
+%
+% \DescribePackage{amscdx}
+% \pkg{amscdx} is used as-is for \SVG\ math.
+%
+% For \brand{MathJax}, a warning notes that the \env{CD} environment
+% \trouble[\brand{MathJax}]{amscdx=\pkg{amscdx}}
+% must be enclosed between \cs{displaymathother} and \cs{displaymathnormal}.
+%
+% \changes{v0.895}{2021/01/08}{\pkg{amscdx}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{amscdx}[2019/07/02]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{%
+ \renewenvironment{CD}
+ {\text{(Use \unicode{x005C}displaymathother before the CD enviroment.) \quad}}
+ {\quad \text{(Use \unicode{x005C}displaymathnormal after the CD enviroment.)}}
+}
+
+\CustomizeMathJax{\newcommand{\CDfattrue}{}}
+\CustomizeMathJax{\newcommand{\CDfatfalse}{}}
+\CustomizeMathJax{\newcommand{\CDashtrue}{}}
+\CustomizeMathJax{\newcommand{\CDashfalse}{}}
+\CustomizeMathJax{\newcommand{\CDlor}[1]{}}
+\end{warpMathJax}
+% \end{macrocode}
+%
% \iffalse
+%</amscdx>
+% \fi
+%
+%
+%
+%
+% \iffalse
%<*amsmath>
% \fi
%
@@ -40074,6 +43216,15 @@
\LWR at ProvidesPackagePass{amsmath}[2017/09/02]
% \end{macrocode}
%
+% \begin{noindmacro}{\dotso} An \HTML\ text-mode version.
+% \changes{v0.88}{2020/07/03}{\pkg{amsmath}: Added \cs{dotso} text mode.}
+% \begin{macrocode}
+\newcommand*{\LWR at HTML@dotso}{\textellipsis\ }
+\LWR at formatted{dotso}
+% \end{macrocode}
+% \end{noindmacro}
+%
+%
% Patches to allow \cs{eqref} inside a caption:
%
% \changes{v0.49}{2018/02/18}{\pkg{amsmath}: Fix: Patches for \cs{eqref}.}
@@ -40128,6 +43279,7 @@
% Embeds the environment inside a \env{lateximage}.
%
% \changes{v0.80}{2020/02/13}{AMS environments: Fix: Centering starred envs.}
+% \changes{v0.89}{2020/08/02}{AMS environments: Fix: \element{ALT} text env name.}
% \begin{macrocode}
\NewDocumentCommand{\LWR at amsmathenv@@before}{s m}{%
\IfBooleanTF{#1}{
@@ -40137,7 +43289,7 @@
}
\LWR at newautoidanchor%
\booltrue{LWR at indisplaymathimage}%
- \begin{lateximage}[\LWR at amsmathbodynumbered{#1}]*
+ \begin{lateximage}[\LWR at amsmathbodynumbered{#2}]*%
\LWR at applyxfakebold%
}
% \end{macrocode}
@@ -40214,7 +43366,7 @@
{\LWR at amsmathenv@@after}
% \end{macrocode}
% Clear the single-use \attribute{alt} text:
-% \changes{v0.74}{2019/08/20}{Add \cs{ThisAltText}.}
+% \changes{v0.74}{2019/08/20}{\pkg{amsmath}: Add \cs{ThisAltText}.}
% \begin{macrocode}
\gdef\LWR at ThisAltText{}%
}{}
@@ -40297,7 +43449,7 @@
% \begin{environment}{alignat}
-% \changes{v0.51}{2018/03/11}{Fix: Added.}
+% \changes{v0.51}{2018/03/11}{\pkg{amsmath}: Fix: Added.}
% \begin{macrocode}
\BeforeBeginEnvironment{alignat}{\LWR at amsmathenv@before{alignat}}
@@ -40315,12 +43467,33 @@
% \end{environment}
%
%
+% \changes{v0.86}{2020/05/08}{\pkg{amsmath}: Added support for \brand{MathJax}.}
+% \begin{macrocode}
+\AtBeginEnvironment{subequations}{
+ \renewcommand*{\theMathJaxsubequations}{1}
+ \renewcommand*{\theMathJaxsection}{\theparentequation}
+ \renewcommand*{\theMathJaxequation}{\arabic{equation}}
+}
+% \end{macrocode}
+%
+%
% For \brand{MathJax}:
% \changes{v0.79}{2020/01/27}{\pkg{amsmath}: Added \brand{MathJax} emulation.}
% \changes{v0.82}{2020/03/14}{\pkg{amsmath}: Fixed: \cs{intertext} for \brand{MathJax}.}
+% \changes{v0.895}{2021/02/11}{\pkg{amsmath}: Added \cs{Hat}, etc..}
% \begin{macrocode}
\begin{warpMathJax}
\CustomizeMathJax{\newcommand{\intertext}[1]{\text{#1}\notag \\}}
+\CustomizeMathJax{\let\Hat\hat}
+\CustomizeMathJax{\let\Check\check}
+\CustomizeMathJax{\let\Tilde\tilde}
+\CustomizeMathJax{\let\Acute\acute}
+\CustomizeMathJax{\let\Grave\grave}
+\CustomizeMathJax{\let\Dot\dot}
+\CustomizeMathJax{\let\Ddot\ddot}
+\CustomizeMathJax{\let\Breve\breve}
+\CustomizeMathJax{\let\Bar\bar}
+\CustomizeMathJax{\let\Vec\vec}
\end{warpMathJax}
% \end{macrocode}
%
@@ -40374,21 +43547,33 @@
% \begin{macrocode}
\@ifpackageloaded{mdframed}{
\PackageError{lwarp}
- {Package mdframed must be loaded after package amsthm}
{%
- Move \detokenize{\usepackage}{amsthm} before
- \detokenize{\usepackage}{mdframed}.\MessageBreak
+ Package mdframed must be loaded after package amsthm.\MessageBreak
+ Enter 'H' for solutions%
+ }
+ {%
+ Move ``\protect\usepackage{amsthm}'' before
+ ``\protect\usepackage{mdframed}''.\MessageBreak
Package amsthm may be loaded by something else,\MessageBreak
which must also be moved before mdframed.%
}
}
-{}
+{\relax}
% \end{macrocode}
%
+%
+% Necessary for \cs{text}, used by \cs{openbox}, etc., below:
+% \changes{v0.88}{2020/07/01}{\pkg{amsthm}: Requires \pkg{amsmath}.}
% \begin{macrocode}
+\RequirePackage{amsmath}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
\LWR at ProvidesPackagePass{amsthm}[2017/10/31]
% \end{macrocode}
-
+%
+%
% Storage for the style being used for new theorems:
% \begin{macrocode}
\newcommand{\LWR at newtheoremstyle}{plain}
@@ -40423,7 +43608,9 @@
\else % numbered theorem, need to check for optional arg
\def\@tempa{\@oparg{\@ynthm{#2}}[]}%
\fi
- \AtBeginEnvironment{#2}{\edef\LWR at thisthmstyle{\@nameuse{LWR at thmstyle#2}}}% lwarp
+ \AtBeginEnvironment{#2}{%
+ \edef\LWR at thisthmstyle{\@nameuse{LWR at thmstyle#2}}%
+ }% lwarp
}%
\@tempa
}
@@ -40432,15 +43619,21 @@
% Patched to enclose with \CSS:
% \begin{macrocode}
\newcommand{\LWR at haveamsthmname}{
-\renewcommand{\thmname}[1]{\InlineClass{amsthmname\LWR at thisthmstyle}{##1}}
+ \renewcommand{\thmname}[1]{%
+ \InlineClass{amsthmname\LWR at thisthmstyle}{##1}%
+ }
}
\newcommand{\LWR at haveamsthmnumber}{
-\renewcommand{\thmnumber}[1]{\InlineClass{amsthmnumber\LWR at thisthmstyle}{##1}}
+ \renewcommand{\thmnumber}[1]{%
+ \InlineClass{amsthmnumber\LWR at thisthmstyle}{##1}%
+ }
}
\newcommand{\LWR at haveamsthmnote}{
-\renewcommand{\thmnote}[1]{\InlineClass{amsthmnote\LWR at thisthmstyle}{##1}}
+ \renewcommand{\thmnote}[1]{%
+ \InlineClass{amsthmnote\LWR at thisthmstyle}{##1}%
+ }
}
\LWR at haveamsthmname
@@ -40448,15 +43641,22 @@
\LWR at haveamsthmnote
% \end{macrocode}
%
-% Patches for \CSS:
+% Patched for \CSS:
% \begin{macrocode}
\def\@begintheorem#1#2[#3]{%
+% \end{macrocode}
+% \changes{v0.84}{2020/04/07}{\pkg{amsthm}: Fix for \cs{nameref}.}
+% \begin{macrocode}
+ \GetTitleString{#3}% lwarp
+ \let\@currentlabelname\GetTitleStringResult% lwarp
+% \end{macrocode}
+% \begin{macrocode}
\item[
% \deferred at thm@head{
% \the\thm at headfont \thm at indent
- \@ifempty{#1}{\let\thmname\@gobble}{\LWR at haveamsthmname}% lwarp
- \@ifempty{#2}{\let\thmnumber\@gobble}{\LWR at haveamsthmnumber}% lwarp
- \@ifempty{#3}{\let\thmnote\@gobble}{\LWR at haveamsthmnote}% lwarp
+ \@ifempty{#1}{\let\thmname\@gobble}{\LWR at haveamsthmname}% lwarp
+ \@ifempty{#2}{\let\thmnumber\@gobble}{\LWR at haveamsthmnumber}% lwarp
+ \@ifempty{#3}{\let\thmnote\@gobble}{\LWR at haveamsthmnote}% lwarp
\thm at swap\swappedhead\thmhead{#1}{#2}{#3}%
\the\thm at headpunct~
\thmheadnl % possibly a newline.
@@ -40472,8 +43672,8 @@
\def\@thm#1#2#3{%
\ifhmode\unskip\unskip\par\fi
\normalfont
- \LWR at forcenewpage% lwarp
- \BlockClass{amsthmbody\LWR at thisthmstyle}% lwarp
+ \LWR at forcenewpage% lwarp
+ \BlockClass{amsthmbody\LWR at thisthmstyle}% lwarp
\trivlist
\let\thmheadnl\relax
\let\thm at swap\@gobble
@@ -40501,8 +43701,8 @@
\def\cref at thmoptarg[#1]#2#3#4{%
\ifhmode\unskip\unskip\par\fi%
\normalfont%
- \LWR at forcenewpage% lwarp
- \BlockClass{amsthmbody\LWR at thisthmstyle}% lwarp
+ \LWR at forcenewpage% lwarp
+ \BlockClass{amsthmbody\LWR at thisthmstyle}% lwarp
\trivlist%
\let\thmheadnl\relax%
\let\thm at swap\@gobble%
@@ -40543,9 +43743,9 @@
\def\Box{\text{\HTMLunicode{25A1}}}% UTF-8 white box
\appto\LWR at restoreorigformatting{%
-\LetLtxMacro\openbox\LWR at orig@openbox%
-\LetLtxMacro\blacksquare\LWR at orig@blacksquare%
-\LetLtxMacro\Box\LWR at orig@Box%
+ \LetLtxMacro\openbox\LWR at orig@openbox%
+ \LetLtxMacro\blacksquare\LWR at orig@blacksquare%
+ \LetLtxMacro\Box\LWR at orig@Box%
}% appto
}{}% @ifundefined
}% AtBeginDocument
@@ -41116,7 +44316,19 @@
\LWR at ProvidesPackageDrop{atbegshi}[2011/10/05]
% \end{macrocode}
%
+% \changes{v0.89}{2020/07/28}{\pkg{atbegshi}: Adapt to \LaTeX kernel changes.}
% \begin{macrocode}
+\let\AtBeginShipout\relax
+\let\AtBeginShipoutNext\relax
+\let\AtBeginShipoutFirst\relax
+\let\AtBeginShipoutDiscard\relax
+\let\AtBeginShipoutInit\relax
+\let\AtBeginShipoutAddToBox\relax
+\let\AtBeginShipoutAddToBoxForeground\relax
+\let\AtBeginShipoutUpperLeft\relax
+\let\AtBeginShipoutUpperLeftForeground\relax
+\let\AtBeginShipoutOriginalShipout\relax
+
\newcommand*{\AtBeginShipout}[1]{}
\newbox\AtBeginShipoutBox
\newcommand*{\AtBeginShipoutNext}[1]{}
@@ -41131,7 +44343,6 @@
\def\AtBeginShipoutBoxWidth{0pt}
\def\AtBeginShipoutBoxHeight{0pt}
\def\AtBeginShipoutBoxDepth{0pt}
-
% \end{macrocode}
%
% \iffalse
@@ -41212,7 +44423,7 @@
% A file annotation becomes a reference:
% \begin{macrocode}
\DeclareRobustCommand{\atfi at insert@file at annot}[1]{%
- \href{#1}{\LWR at attachfile@appearance}%
+ \LWR at href{#1}{\LWR at attachfile@appearance}%
}
% \end{macrocode}
@@ -41310,7 +44521,7 @@
% A file annotation becomes a reference:
% \begin{macrocode}
\DeclareRobustCommand{\atfi at insert@file at annot}[1]{%
- \href{#1}{\LWR at attachfile@appearance}%
+ \LWR at href{#1}{\LWR at attachfile@appearance}%
}
% \end{macrocode}
%
@@ -41382,11 +44593,14 @@
% Require that \pkg{authblk} be loaded before \pkg{titling}:
% \begin{macrocode}
\@ifpackageloaded{titling}{
-\PackageError{lwarp-authblk}
-{Package authblk must be loaded before titling}
-{Titling appends authblk's author macro, so authblk must be loaded first.}
+ \PackageError{lwarp-authblk}
+ {Package authblk must be loaded before titling}
+ {%
+ Titling appends authblk's author macro,
+ so authblk must be loaded first.%
+ }
}
-{}
+{\relax}
% \end{macrocode}
%
% Load \pkg{authblk}:
@@ -41728,7 +44942,8 @@
% \credits{Adrian P. Robson}
%
% \DescribePackage{backnaur}
-% \pkg{backnaur} is patched for use by \pkg{lwarp}.
+% \pkg{backnaur} is patched for use by \pkg{lwarp},
+% and emulated for \brand{MathJax}.
%
% \changes{v0.72}{2019/05/20}{\pkg{backnaur}: Added.}
%
@@ -41743,7 +44958,7 @@
\renewenvironment{bnf*}{\csuse{eqnarray*}}{\csuse{endeqnarray*}}
% \end{macrocode}
%
-% ^^A % For HTML without SVG images, but also without equation numbering:
+% ^^A % For HTML without \SVG\ images, but also without equation numbering:
% ^^A %
% ^^A % A purely \HTML\ text output is generated, without math images.
% ^^A %
@@ -41789,6 +45004,43 @@
% ^^A % \@ifpackagewith{backnaur}{epsilon}{\renewcommand{\bnfes}{\HTMLunicode{3f5}}}{}% \epsilon
% ^^A % \end{macrocode}
%
+%
+% For \brand{MathJax}:
+% \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\bnfpn}[1]{\langle \text{\textrm{#1}} \rangle}}
+\CustomizeMathJax{\newcommand{\bnfor}{\; \mid \;}}
+\CustomizeMathJax{\newcommand{\bnfsp}{\;}}
+\@ifpackagewith{backnaur}{perp}{
+ \CustomizeMathJax{\newcommand{\bnfes}{\perp}}
+}{
+ \@ifpackagewith{backnaur}{epsilon}{
+ \CustomizeMathJax{\newcommand{\bnfes}{\epsilon}}
+ }{
+ \CustomizeMathJax{\newcommand{\bnfes}{\lambda}}
+ }
+}
+\@ifpackagewith{backnaur}{tsrm}{
+ \CustomizeMathJax{\newcommand{\bnfts}[1]{\text{#1}}}
+}{
+ \CustomizeMathJax{\newcommand{\bnfts}[1]{\text{\texttt{#1}}}}
+}
+\CustomizeMathJax{\newcommand{\bnftd}[1]{\text{\textit{#1}}}}
+\CustomizeMathJax{\newcommand{\bnfsk}{\dots}}
+\@ifpackagewith{backnaur}{altpo}{
+ \CustomizeMathJax{\newcommand{\bnfpo}{::=}}
+}{
+ \CustomizeMathJax{\newcommand{\bnfpo}{\models}}
+}
+\CustomizeMathJax{\newcommand{\bnfprod}{\ifstar{\LWRbnfprodnn}{\LWRbnfprodyn}}}
+\CustomizeMathJax{\newcommand{\LWRbnfprodyn}[2]{\bnfpn{#1} & \bnfpo & #2}}
+\CustomizeMathJax{\newcommand{\LWRbnfprodnn}[2]{\nonumber \bnfpn{#1} & \bnfpo & #2}}
+\CustomizeMathJax{\newcommand{\bnfmore}{\ifstar{\LWRbnfmorenn}{\LWRbnfmoreyn}}}
+\CustomizeMathJax{\newcommand{\LWRbnfmoreyn}[1]{ & & #1}}
+\CustomizeMathJax{\newcommand{\LWRbnfmorenn}[1]{\nonumber & & #1}}
+\end{warpMathJax}
+% \end{macrocode}
+%
% \iffalse
%</backnaur>
% \fi
@@ -41815,6 +45067,7 @@
% generating \HTML\ output.
%
% \changes{v0.45}{2018/01/14}{\pkg{backref}: Added.}
+% \changes{v0.84}{2020/04/07}{\pkg{backref}: Fixed from \pkg{lwarp} v0.72 changes.}
%
% \codehtml
%
@@ -41824,7 +45077,13 @@
% Force the \optn{hyperref} option:
% \begin{macrocode}
-\def\backref{}\let\backrefxxx\hyper at section@backref
+\def\backref{}
+
+\long\def\hyper at section@backref#1#2#3{%
+ \ref{#3}%
+}
+
+\let\backrefxxx\hyper at section@backref
% \end{macrocode}
% \iffalse
@@ -42191,7 +45450,12 @@
}{}
% \end{macrocode}
%
+% \pkg{hyperref} emulation is loaded \cs{AtBeginDocument} to avoid an
+% options clash.
+% \changes{v0.84}{2020/04/24}{\pkg{biblatex}: Fixed: Requires \pkg{hyperref}.}
% \begin{macrocode}
+\AtBeginDocument{\RequirePackage{hyperref}}
+
\LWR at ProvidesPackagePass{biblatex}[2018/03/04]
% \end{macrocode}
%
@@ -42209,6 +45473,7 @@
{}
{\listxadd\blx at anchors{\the\c at refsection @\abx at field@entrykey}%
\hypertarget{cite.\the\c at refsection @\abx at field@entrykey}{}}}
+
\protected\def\blx at imc@bibhyperref{%
\@ifnextchar[%]
{\blx at bibhyperref}
@@ -42245,9 +45510,136 @@
}
\let\blx at imc@ifhyperref\@firstoftwo
-}
% \end{macrocode}
%
+%
+% The following patches are for back page references.
+%
+% \changes{v0.891}{2020/09/05}{\pkg{biblatex}: Fixed: Back page references.}
+% \begin{macrocode}
+\DeclareListFormat{pageref}{%
+ \ifnumless{\abx at pagerefstyle}{0}
+ {\usebibmacro{list:plain}%
+ \ifhyperref
+ {%
+% \hyperlink{page.#1}{#1}%
+ \ref{\BaseJobname-autopage-#1}% lwarp
+ }
+ {#1}}
+ {\ifnumequal{\value{listcount}}{1}
+ {\usebibmacro{pageref:init}}
+ {}%
+ \usebibmacro{pageref:comp}{#1}%
+ \ifnumequal{\value{listcount}}{\value{liststop}}
+ {\usebibmacro{pageref:dump}}
+ {}}}
+
+\renewbibmacro*{pageref:comp}[1]{%
+ \numdef\abx at range@prev{\abx at range@prev+1}%
+ \ifinteger{#1}
+ {\def\abx at range@num{#1}%
+ \def\abx at range@this{1}%
+ \ifnumequal{\abx at range@this}{\abx at range@last}
+ {}
+ {\def\abx at range@prev{-1}}}
+ {\ifrmnum{#1}
+ {\numdef\abx at range@num{\rmntonum{#1}}%
+ \def\abx at range@this{2}%
+ \ifnumequal{\abx at range@this}{\abx at range@last}
+ {}
+ {\def\abx at range@prev{-1}}}
+ {\undef\abx at range@num
+ \def\abx at range@this{0}%
+ \def\abx at range@prev{-1}}}%
+ \ifdef\abx at range@num
+ {\ifnumequal{\abx at range@num}{\abx at range@prev}
+ {\def\abx at range@hold{#1}%
+ \numdef\abx at range@diff{\abx at range@diff+1}}
+ {\usebibmacro{pageref:dump}%
+ \ifnumgreater{\abx at range@last}{-1}
+ {\printdelim{multilistdelim}}
+ {}%
+ \ifhyperref
+% {\hyperlink{page.#1}{#1}}
+ {\ref{\BaseJobname-autopage-#1}}% lwarp
+ {#1}}%
+ \edef\abx at range@prev{\abx at range@num}}
+ {\usebibmacro{pageref:dump}%
+ \ifnumgreater{\abx at range@last}{-1}
+ {\printdelim{multilistdelim}}
+ {}%
+ \ifhyperref
+% {\hyperlink{page.#1}{#1}}
+ {\ref{\BaseJobname-autopage-#1}}% lwarp
+ {#1}%
+ \def\abx at range@prev{-1}}%
+ \edef\abx at range@last{\abx at range@this}}
+
+\renewbibmacro*{pageref:dump}{%
+ \ifnumgreater{\abx at range@diff}{0}
+ {\ifcase\abx at pagerefstyle\relax % two
+ \bibrangedash
+ \ifhyperref
+% {\hyperlink{page.\abx at range@hold}{\abx at range@hold}}
+ {\ref{\BaseJobname-autopage-\abx at range@hold}}% lwarp
+ {\abx at range@hold}%
+ \or % three
+ \ifnumless{\abx at range@diff}{2}
+ {\printdelim{multilistdelim}}
+ {\bibrangedash}%
+ \ifhyperref
+% {\hyperlink{page.\abx at range@hold}{\abx at range@hold}}
+ {\ref{\BaseJobname-autopage-\abx at range@hold}}% lwarp
+ {\abx at range@hold}%
+ \or % two+
+ \ifnumless{\abx at range@diff}{2}
+ {\sqspace
+ \ifhyperref
+% {\hyperlink{page.\abx at range@hold}{\bibstring{sequens}}}
+ {\ref{\BaseJobname-autopage-\abx at range@hold}}% lwarp
+ {\bibstring{sequens}}}
+ {\bibrangedash
+ \ifhyperref
+% {\hyperlink{page.\abx at range@hold}{\abx at range@hold}}
+ {\ref{\BaseJobname-autopage-\abx at range@hold}}% lwarp
+ {\abx at range@hold}}%
+ \or % three+
+ \ifnumless{\abx at range@diff}{2}
+ {\sqspace
+ \ifhyperref
+% {\hyperlink{page.\abx at range@hold}{\bibstring{sequens}}}
+ {\ref{\BaseJobname-autopage-\abx at range@hold}}% lwarp
+ {\bibstring{sequens}}}
+ {\ifnumless{\abx at range@diff}{3}
+ {\sqspace
+ \ifhyperref
+% {\hyperlink{page.\abx at range@hold}{\bibstring{sequentes}}}
+ {\ref{\BaseJobname-autopage-\abx at range@hold}}% lwarp
+ {\bibstring{sequentes}}}
+ {\bibrangedash
+ \ifhyperref
+% {\hyperlink{page.\abx at range@hold}{\abx at range@hold}}
+ {\ref{\BaseJobname-autopage-\abx at range@hold}}% lwarp
+ {\abx at range@hold}}}%
+ \else % all+
+ \ifnumless{\abx at range@diff}{2}
+ {\sqspace
+ \ifhyperref
+% {\hyperlink{page.\abx at range@hold}{\bibstring{sequens}}}
+ {\ref{\BaseJobname-autopage-\abx at range@hold}}% lwarp
+ {\bibstring{sequens}}}
+ {\sqspace
+ \ifhyperref
+% {\hyperlink{page.\abx at range@hold}{\bibstring{sequentes}}}
+ {\ref{\BaseJobname-autopage-\abx at range@hold}}% lwarp
+ {\bibstring{sequentes}}}%
+ \fi
+ \def\abx at range@diff{0}}
+ {}}
+
+}% \AfterPreamble
+% \end{macrocode}
+%
% \iffalse
%</biblatex>
% \fi
@@ -42254,6 +45646,8 @@
%
%
%
+%
+%
% \iffalse
%<*bibunits>
% \fi
@@ -42783,12 +46177,17 @@
%
% For \brand{MathJax}:
% \changes{v0.79}{2020/01/30}{\pkg{booktabs}: Added \brand{MathJax} emulation.}
+% \changes{v0.894}{2020/12/22}{\pkg{booktabs}: \brand{MathJax}: Absorb \cs{cmidrule} trim arg.}
% \begin{macrocode}
\begin{warpMathJax}
\CustomizeMathJax{\newcommand{\toprule}[1][]{\hline}}
\CustomizeMathJax{\let\midrule\toprule}
\CustomizeMathJax{\let\bottomrule\toprule}
-\CustomizeMathJax{\newcommand{\cmidrule}[2][]{}}% avoid (trim)
+\CustomizeMathJax{\def\LWRbooktabscmidruleparen(#1)#2{}}
+\CustomizeMathJax{\newcommand{\LWRbooktabscmidrulenoparen}[1]{}}
+\CustomizeMathJax{\newcommand{\cmidrule}[1][]{%
+ \ifnextchar(\LWRbooktabscmidruleparen\LWRbooktabscmidrulenoparen%
+}}
\CustomizeMathJax{\newcommand{\morecmidrules}{}}
\CustomizeMathJax{\newcommand{\specialrule}[3]{\hline}}
\CustomizeMathJax{\newcommand{\addlinespace}[1][]{}}
@@ -42861,27 +46260,27 @@
%
%
% \iffalse
-%<*boxedminipage2e>
+%<*boxedminipage>
% \fi
-% \part{lwarp-boxedminipage2e.sty}
+% \part{lwarp-boxedminipage.sty}
-% \section{boxedminipage2e}
+% \section{boxedminipage}
%
% \credits{Scott Pakin}
%
-% \DescribePackage{boxedminipage2e}
-% \pkg{boxedminipage2e} is emulated for \HTML, and used as-is for \env{lateximage}s.
+% \DescribePackage{boxedminipage}
+% \pkg{boxedminipage} is emulated for \HTML, and used as-is for \env{lateximage}s.
%
% \changes{v0.34}{2017/07/26}{\pkg{boxedminipage2e}: Added.}
% \changes{v0.72}{2019/06/07}{\pkg{boxedminipage2e}: Added support for \env{lateximage}s.}
% \changes{v0.73}{2019/06/24}{\pkg{boxedminipage2e}: Fix: Paragraph tags.}
+% \changes{v0.84}{2020/04/23}{\pkg{boxedminipage}: Renamed from \pkg{boxedminipage2e} per author.}
%
% \codehtml
%
-% Discard all options for \pkg{lwarp-boxedminipage2e}:
% \begin{macrocode}
-\LWR at ProvidesPackagePass{boxedminipage2e}[2015/03/09]
+\LWR at ProvidesPackagePass{boxedminipage}[2020/04/19]
% \end{macrocode}
% \begin{macrocode}
@@ -42899,6 +46298,34 @@
% \end{macrocode}
% \iffalse
+%</boxedminipage>
+% \fi
+%
+%
+%
+% \iffalse
+%<*boxedminipage2e>
+% \fi
+
+% \part{lwarp-boxedminipage2e.sty}
+
+% \section{boxedminipage2e}
+%
+% \credits{Scott Pakin}
+%
+% \DescribePackage{boxedminipage2e}
+% \pkg{boxedminipage2e} has been renamed \pkg{boxedminipage} by the author.
+%
+% \changes{v0.84}{2020/04/23}{\pkg{boxedminipage}: Renamed from \pkg{boxedminipage2e} per author.}
+%
+% \codehtml
+%
+% Automatically loads \pkg{boxedminipage}:
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{boxedminipage2e}
+% \end{macrocode}
+
+% \iffalse
%</boxedminipage2e>
% \fi
%
@@ -42918,9 +46345,10 @@
%
% \DescribePackage{braket}
% \pkg{braket} works as-is for \HTML\ with \SVG\ math.
-% For \brand{MathJax}, emulation is provided by \brand{MathJax} macros.
+% For \brand{MathJax}, the \brand{MathJax} extension is used.
%
% \changes{v0.79}{2020/01/29}{\pkg{braket}: Added.}
+% \changes{v0.893}{2020/10/30}{\pkg{braket}: Now uses \brand{MathJax} extension.}
%
% \codehtml
%
@@ -42930,14 +46358,7 @@
%
% \begin{macrocode}
\begin{warpMathJax}
-\CustomizeMathJax{\newcommand{\bra}[1]{\langle#1\vert}}
-\CustomizeMathJax{\newcommand{\Bra}[1]{\left\langle#1\right\vert}}
-\CustomizeMathJax{\newcommand{\ket}[1]{\vert#1\rangle}}
-\CustomizeMathJax{\newcommand{\Ket}[1]{\left\vert#1\right\rangle}}
-\CustomizeMathJax{\newcommand{\braket}[1]{\langle#1\rangle}}
-\CustomizeMathJax{\newcommand{\Braket}[1]{\left\langle#1\right\rangle}}
-\CustomizeMathJax{\newcommand{\set}[1]{\{#1\}}}
-\CustomizeMathJax{\newcommand{\Set}[1]{\left\{#1\right\}}}
+ \CustomizeMathJax{\require{braket}}
\end{warpMathJax}
% \end{macrocode}
%
@@ -42973,7 +46394,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\LetLtxMacro\burl\url
+\LetLtxMacro\burl\LWR at url
\NewDocumentCommand{\LWR at burlaltb}{O{} +m m}{%
\LWR at ensuredoingapar%
@@ -43130,8 +46551,59 @@
%
%
%
+% \iffalse
+%<*bussproofs>
+% \fi
%
+% \part{lwarp-bussproofs.sty}
+%
+% \section{bussproofs}
+%
+% \credits{Samuel R. Buss}
+%
+% \DescribePackage{bussproofs}
+% \pkg{bussproofs} is used as-is for \HTML, and
+% emulated by \brand{MathJax}'s extension.
+%
+% If not using \brand{MathJax}, inline proofs with \cs{DisplayMath} must be placed
+% \trouble[\cs{DisplayProof}]{bussproofs=\pkg{bussproofs}}
+% inside a math expression.
+%
+% If using \brand{MathJax}, only the \env{prooftree} environment may be used,
+% not \cs{DisplayProof}.
+%
+% \changes{v0.891}{2020/09/20}{\pkg{bussproofs}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{bussproofs}% no date in file
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ifbool{mathjax}{
+ \CustomizeMathJax{\require{bussproofs}}
+
+ \NewEnviron{LWR at HTML@prooftree}%
+ {\LWR at doequation{\BODY}{prooftree}}%
+ [\LWR at doendequation{prooftree}]
+ \LWR at formattedenv{prooftree}
+}{% SVG HTML
+ \BeforeBeginEnvironment{prooftree}{%
+ \begin{lateximage}[-bussproofs-~\PackageDiagramAltText]%
+ }
+ \AfterEndEnvironment{prooftree}{\end{lateximage}}
+}
+% \end{macrocode}
+%
% \iffalse
+%</bussproofs>
+% \fi
+%
+%
+%
+%
+% \iffalse
%<*bxpapersize>
% \fi
%
@@ -43206,9 +46678,10 @@
% \section{cancel}
%
% \DescribePackage{cancel}
-% \pkg{cancel} is used as-is for SVG math, and emulated for \HTML\ text output.
+% \pkg{cancel} is used as-is for \SVG\ math, and emulated for \HTML\ text output.
%
% \changes{v0.44}{2017/11/16}{\pkg{cancel}: Added.}
+% \changes{v0.87}{2020/06/02}{\pkg{cancel}: Now uses \brand{MathJax} v3 extension.}
%
% \codehtml
%
@@ -43263,6 +46736,15 @@
% \end{macrocode}
% \end{noindmacro}
%
+% For \brand{MathJax}:
+% \begin{macrocode}
+\begin{warpMathJax}
+\PackageWarningNoLine{lwarp, cancel}{The MathJax v3 extension will be used}
+\CustomizeMathJax{\require{cancel}}
+\end{warpMathJax}
+% \end{macrocode}
+
+%
% \iffalse
%</cancel>
% \fi
@@ -43317,128 +46799,268 @@
% \pkg{caption} is patched for use by \pkg{lwarp}.
%
% \changes{v0.47}{2018/01/25}{\pkg{caption}: Added.}
+% \changes{v0.78}{2019/10/30}{\pkg{caption}: Added warning regarding passing options.}
+% \changes{v0.84}{2020/04/16}{\pkg{caption}: Simplified.}
+% \changes{v0.84}{2020/04/20}{\pkg{caption}: Non-width \cs{parbox}es.}
+% \changes{v0.89}{2020/08/25}{\pkg{caption}: Adapt to v3.5.}
+% \changes{v0.893}{2020/11/26}{\pkg{caption}: Updated date to v3.5g.}
%
% \codehtml
%
-% \changes{v0.78}{2019/10/30}{\pkg{caption}: Added warning regarding passing options.}
% \begin{macrocode}
\typeout{---}
\typeout{Packages lwarp and caption:}
\typeout{If a ``Missing \protect\begin\protect{document\protect}'' error occurs here,}
-\typeout{try using: \space \protect\usepackage\protect{caption\protect}\space\protect\captionsetup{options}}
+\typeout{try using: \space \protect\usepackage\protect{caption\protect}\space%
+ \protect\captionsetup{options}}
\typeout{instead of: \protect\usepackage[options]\protect{caption\protect}.}
\typeout{---}
-\LWR at ProvidesPackagePass{caption}[2019/09/01]
+\LWR at ProvidesPackagePass{caption}[2020/10/26]
% \end{macrocode}
-
-% \begin{macrocode}
-\renewcommand\caption at ibox[3]{%
- \@testopt{\caption at iibox{#1}{#2}{#3}}{%
-% \wd\@tempboxa%
- \linewidth% lwarp
- }%
-% \LWR at traceinfo{caption at ibox: done}%
-}
-% \end{macrocode}
%
+% ^^A This could be given a permanent standardized name, then redefined by lwarp.
% \begin{macrocode}
-\long\def\caption at iibox#1#2#3[#4]{%
- \@testopt{\caption at iiibox{#1}{#2}{#3}{#4}}\captionbox at hj@default
+\long\def\caption at iibox@#1#2#3#4{%
+% \setbox\@tempboxa\hbox{#4}%
+ \caption at iiibox{#1}{#2}{#3}%
+% [\wd\@tempboxa]%
+ []% lwarp
+ [\captionbox at hj@default]%
+% {\unhbox\@tempboxa}%
+ {{#4}}% lwarp
}
% \end{macrocode}
%
% \begin{macrocode}
-\long\def\caption at iiibox#1#2#3#4[#5]#6{%
-% \setbox\@tempboxa\hbox{#6}%
+\long\def\caption at iiiibox#1#2#3#4#5[#6][#7]#8{%
\begingroup
#1*% set \caption at position
\caption at iftop{%
- \LWR at traceinfo{caption at iiibox top}%
\endgroup
- \parbox[t]{#4}{%
+% \end{macrocode}
+%
+% ^^A This parbox could be factored out, given a permanent name,
+% ^^A then redefined by lwarp.
+% \begin{macrocode}
+ \minipagefullwidth% lwarp
+ \parbox[t]{\linewidth}{%
#1\relax
\caption at setposition t%
-% \vbox{\caption#2{#3}}%
- {\caption#2{#3}}% lwarp
+% #2%
+ {\caption#4{#5}}%
% \captionbox at hrule
-% \csname caption at hj@#5\endcsname
-% \unhbox\@tempboxa
- #6% lwarp
+% \csname caption at hj@#7\endcsname
+ #8%
}%
}{%
- \LWR at traceinfo{caption at iiibox bottom}%
\endgroup
- \parbox[b]{#4}{%
+% \end{macrocode}
+%
+% ^^A This parbox could be factored out, given a permanent name,
+% ^^A then redefined by lwarp.
+% \begin{macrocode}
+% \parbox[b]{#6}{%
+ \minipagefullwidth% lwarp
+ \parbox[b]{\linewidth}{% lwarp
#1\relax
\caption at setposition b%
-% \csname caption at hj@#5\endcsname
-% \unhbox\@tempboxa
- #6% lwarp
+% \csname caption at hj@#7\endcsname
+ #8%
% \captionbox at hrule
-% \vtop{\caption#2{#3}}}%
- {\caption#2{#3}}% lwarp
- }%
+% #3
+ {\caption#4{#5}}%
+ }%
}%
-\LWR at traceinfo{caption at iiibox: done}%
}
+% \end{macrocode}
-% \def\caption at caption{%
-% \caption at iftype
-% {%
-% \caption at checkgrouplevel\@empty\caption
-% \caption at star
-% {\caption at refstepcounter\@captype}%
-% {\caption at dblarg{\@caption\@captype}}}%
-% {\caption at Error{\noexpand\caption outside float}%
-% \caption at gobble}%
-% }
+% \begin{noindmacro}{\caption at makecaption}
+% \changes{v0.71}{2019/04/08}{\pkg{caption}: Reduced underfull \cs{hbox} warnings.}
+% ^^A Lwarp could nullify \caption at make@above/bottom.
+% \begin{macrocode}
+\long\def\caption at makecaption#1#2{%
+% \caption at make@above
+ \caption@@make{#1}{#2}%
+% \caption at make@below
+}
-\long\def\caption@@caption#1[#2]#3{%
+\AtBeginDocument{
+ \let\@makecaption\caption at makecaption
+}
% \end{macrocode}
+% \end{noindmacro}
+
+
+% Appended to look ahead to the next token for \cs{centering}, etc:
+% \changes{v0.84}{2020/04/20}{\pkg{caption}: Improved integration.}
+% \changes{v0.891}{2020/09/04}{\pkg{caption}: Improved integration.}
% \begin{macrocode}
- \ifcaption at star
- \else
- \caption at prepareanchor{#1}{#2}%
- \memcaptioninfo{#1}{\csname the#1\endcsname}{#2}{#3}%
- \@nameuse{nag at hascaptiontrue}%
- \fi
+\AtBeginDocument{
+\xapptocmd{\@xfloat}
+ {\LWR at futurenonspacelet\LWR at mynexttoken\LWR at floatalignment}
+ {}
+ {\LWR at patcherror{caption}{@xfloat}}
+
+\xapptocmd{\@xdblfloat}
+ {\LWR at futurenonspacelet\LWR at mynexttoken\LWR at floatalignment}
+ {}
+ {\LWR at patcherror{caption}{@xdblfloat}}
+}
% \end{macrocode}
+
+
+% Updates for late patches for \pkg{scrextend}:
+% \changes{v0.88}{2020/07/15}{\pkg{caption}, \pkg{scrextend}: Fixed \cs{caption*}.}
% \begin{macrocode}
- \par
- \caption at beginex{#1}{#2}{#3}%
- \caption at setfloatcapt{%
- \caption at boxrestore
- \if at minipage
- \@setminipage
- \fi
- \caption at normalsize
+\caption at AtBeginDocument{
+\@ifpackageloaded{lwarp-scrextend}{
+ \LetLtxMacro\captionbelow\caption
+ \LetLtxMacro\captionabove\caption
+ \LetLtxMacro\captionofbelow\captionof
+ \LetLtxMacro\captionofabove\captionof
+}{}
+}
% \end{macrocode}
-% \changes{v0.73}{2019/07/11}{\pkg{caption}: Fix for starred captions.}
+%
+% \iffalse
+%</caption>
+% \fi
+%
+%
+%
+%
+%
+% \iffalse
+%<*caption3>
+% \fi
+%
+% \part{lwarp-caption3.sty}
+
+% \section{caption3}
+%
+% \credits{Axel Sommerfeldt}
+%
+% \DescribePackage{caption3}
+% \pkg{caption3} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.89}{2020/08/25}{\pkg{caption3}: Split from \pkg{lwarp-caption}.}
+% \changes{v0.893}{2020/11/26}{\pkg{caption3}: Updated date to v2.2e.}
+%
+% \codehtml
+%
% \begin{macrocode}
- \ifcaption at star
- \let\caption at makeanchor\@firstofone
- #3% lwarp
- \else% lwarp
- \@makecaption{\csname fnum@#1\endcsname}%
- {\ignorespaces\caption at makeanchor{#3}}%
- \fi% lwarp
+\LWR at ProvidesPackagePass{caption3}[2020/10/21]
% \end{macrocode}
-% \changes{v0.70}{2019/03/24}{\pkg{caption}: Fix: Extra par tags.}
-% \begin{macrocode}
-% \par
- \caption at if@minipage\@minipagetrue\@minipagefalse}%
- \caption at end%
-}
-% \end{macrocode}
-
+%
+%
% \begin{noindmacro}{\caption@@@make}
% \marg{caption label} \marg{caption text}
% \begin{macrocode}
+\@ifpackagelater{caption3}{2020/08/23}{
\renewcommand\caption@@@make[2]{%
\LWR at traceinfo{caption@@@make}%
+% \end{macrocode}
+%
+% ^^A Lwarp has to stop and start its paragraph handling,
+% ^^A so I guess caption package could provide null macros for
+% ^^A \LWR at stoppars and \LWR at startpars if lwarp has not already defined them.
+% \begin{macrocode}
+ \LWR at stoppars% lwarp
+% \end{macrocode}
+%
+% ^^A This could be factored out into a macro with a standard name
+% ^^A which lwarp could nullify:
+% \begin{macrocode}
% \sbox\@tempboxa{#1}%
% \ifdim\wd\@tempboxa=\z@
+% \caption at set{labelseparator}{none}%
+% \fi
+ \caption at ifempty{#2}{%
+ \caption at set{labelseparator}{none}%
+ \caption at set{textformat}{simple}%
+ }%
+ \caption at labelseparator % defines \caption at iflabelfont,
+% \caption at labelsep and \caption at labelsep@name
+% (the latter is needed by \caption at fmt)
+%
+% \end{macrocode}
+%
+% ^^A This could be factored out into a macro with a standard name
+% ^^A which lwarp could nullify:
+% \begin{macrocode}
+% \@setpar{\@@par\caption@@par}\caption@@par
+ \caption at applyfont
+% \end{macrocode}
+%
+% \cs{caption at fmt} with \optn{plain} format is defined as |{#1#2#3\par}|:
+%
+% \begin{macrocode}
+% \caption at fmt
+ {\ifcaption at star\else
+ \begingroup
+ \captionlabelfont
+% \end{macrocode}
+%
+% ^^A \LWR at isolate could also be provided by caption if lwarp has
+% ^^A not already defined it. For caption, it might be \@firstofone, for example.
+% ^^A (For lwarp it improved Chinese text handling.)
+% \begin{macrocode}
+ \LWR at isolate{#1}% lwarp
+ \endgroup
+ \fi}%
+ {\ifcaption at star\else
+ \begingroup
+ \caption at iflabelfont\captionlabelfont
+ \relax\caption at labelsep
+ \endgroup
+ \fi}%
+ {{\captiontextfont
+% \end{macrocode}
+%
+% ^^A Another null macro in caption, which could be provided if
+% ^^A lwarp has not yet defined it:
+% \begin{macrocode}
+ \let\\\newline% lwarp
+%
+ \caption at textstart
+% \end{macrocode}
+%
+% ^^A This could be factored out into a macro with a standard name
+% ^^A which lwarp could nullify:
+% \begin{macrocode}
+% \caption at ifstrut
+% {\vrule\@height\ht\strutbox\@width\z@}%
+% {}%
+% \nobreak\hskip\z at skip % enable hyphenation
+% \end{macrocode}
+%
+% ^^A \LWR at isolate again:
+% \begin{macrocode}
+ \LWR at isolate{\caption at textformat{#2}}% lwarp
+% \end{macrocode}
+%
+% ^^A This could be factored out into a macro with a standard name
+% ^^A which lwarp could nullify:
+% \begin{macrocode}
+% \caption at ifstrut
+% {\ifhmode\@finalstrut\strutbox\fi}%
+% {}%
+ \caption at textend}}%
+% \end{macrocode}
+%
+% ^^A as \LWR at startpars above:
+% \begin{macrocode}
+ \LWR at startpars% lwarp
+\LWR at traceinfo{caption@@@make done}%
+}
+}% later than 2020/08/23
+{% earlier than 2020/08/23
+\renewcommand\caption@@@make[2]{%
+\LWR at traceinfo{caption@@@make}%
+ \LWR at stoppars% lwarp
+% \sbox\@tempboxa{#1}%
+% \ifdim\wd\@tempboxa=\z@
% \let\caption at lsep\relax
% \fi
\caption at ifempty{#2}{%
@@ -43445,6 +47067,7 @@
\let\caption at lsep\@empty
\let\caption at tfmt\@firstofone
}%
+% \@setpar{\@@par\caption@@par}\caption@@par
\caption at applyfont
% \end{macrocode}
% \cs{caption at fmt} with \optn{plain} format is defined as |{#1#2#3\par}|:
@@ -43453,7 +47076,7 @@
{\ifcaption at star\else
\begingroup
\captionlabelfont
- #1%
+ \LWR at isolate{#1}% lwarp
\endgroup
\fi}%
{\ifcaption at star\else
@@ -43465,59 +47088,57 @@
\fi}%
{{%
\captiontextfont
+ \let\\\newline% lwarp
% \caption at ifstrut
% {\vrule\@height\ht\strutbox\@width\z@}%
% {}%
% \nobreak\hskip\z at skip % enable hyphenation
- \caption at tfmt{#2}%
+ \LWR at isolate{\caption at tfmt{#2}}% lwarp
% \caption at ifstrut
% {\ifhmode\@finalstrut\strutbox\fi}%
% {}%
}}%
+ \LWR at startpars% lwarp
\LWR at traceinfo{caption@@@make done}%
}
+}% earlier than 2020/08/23
% \end{macrocode}
% \end{noindmacro}
-
+%
+%
% \begin{noindmacro}{\caption@@make@} \marg{} \marg{}
+% ^^A This could be given a standardized name,
+% ^^A and redefined by lwarp as follows. Most of the original
+% ^^A is thrown away.
% \begin{macrocode}
\renewcommand{\caption@@make@}[2]{%
- \caption at stepthecounter
- \caption at beginhook
+ \caption at stepthecounter%
+ \caption at beginhook%
\caption@@@make{#1}{#2}%
- \caption at endhook
+ \caption at endhook%
}
% \end{macrocode}
% \end{noindmacro}
-
-% \begin{noindmacro}{\caption at makecaption}
-% \changes{v0.71}{2019/04/08}{Reduced underfull \cs{hbox} warnings.}
+%
+%
+%
+% ^^A These are simplifications for HTML:
% \begin{macrocode}
-\long\def\caption at makecaption#1#2{%
-% \caption at iftop
-% {\vskip\belowcaptionskip}%
-% {\caption at rule\vskip\abovecaptionskip}%
- \caption@@make{#1}{#2}%
-% \caption at iftop
-% {\vskip\abovecaptionskip\caption at rule}%
-% {\vskip\belowcaptionskip}%
+\DeclareCaptionBox{none}{#2}
+\DeclareCaptionBox{parbox}{%
+ #2%
}
% \end{macrocode}
-% \end{noindmacro}
-
-
+%
+% ^^A Simplification for HTML:
% \begin{macrocode}
-% \DeclareCaptionBox{none}{#2}
-\DeclareCaptionBox{parbox}{%
-#2%
-}
\DeclareCaptionBox{colorbox}{%
-#2%
+ #2%
}
% \end{macrocode}
-
+%
% \iffalse
-%</caption>
+%</caption3>
% \fi
%
%
@@ -43524,9 +47145,6 @@
%
%
%
-%
-%
-%
% \iffalse
%<*cases>
% \fi
@@ -43596,6 +47214,7 @@
% and emulated for \brand{MathJax}.
%
% \changes{v0.80}{2020/02/08}{\pkg{centernot}: Added.}
+% \changes{v0.89}{2020/08/17}{\pkg{centernot}: Improved.}
%
% \codehtml
%
@@ -43603,9 +47222,17 @@
\LWR at ProvidesPackagePass{centernot}[2016/05/16]
% \end{macrocode}
%
+% Based on \href{https://github.com/mathjax/MathJax/issues/2107}
+% {\texttt{https://github.com/mathjax/MathJax/issues/2107}}
+% with \cs{textstyle} removed to work with sub \Slash super scripts.
+%
% \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-overlaysymbols}
+
\begin{warpMathJax}
-\CustomizeMathJax{\newcommand{\centernot}[1]{\not{\!#1\,}}}
+\CustomizeMathJax{\newcommand{\centernot}[1]{%
+ \LWRoverlaysymbols{\unicode{x2215}}{#1}
+}}
\end{warpMathJax}
% \end{macrocode}
%
@@ -43774,13 +47401,18 @@
% \DescribePackage{changes}
% \pkg{changes} is patched for use by \pkg{lwarp}.
%
+% Use \optn{commandnameprefix=ifneeded} to avoid a conflict with the \cs{comment}
+% \trouble[\cs{comment}]{changes=\pkg{changes}}
+% command when using \pkg{lwarp}.
+%
% \changes{v0.67}{2019/02/15}{\pkg{changes}: Added.}
% \changes{v0.70}{2019/03/24}{\pkg{changes}: Updated to v3.1.2.}
+% \changes{v0.895}{2021/01/30}{\pkg{changes}: Updated to v4.0.1.}
%
% \codehtml
%
% \begin{macrocode}
-\LWR at ProvidesPackagePass{changes}[2019/01/26]
+\LWR at ProvidesPackagePass{changes}[2021/02/14]
% \end{macrocode}
%
% \cs{BaseJobname} is added to the label in case \pkg{xr} or \pkg{xr-hyper} are used.
@@ -43788,7 +47420,7 @@
% \changes{v0.72}{2019/06/05}{\pkg{changes}: Fix references for \pkg{xr}, \pkg{xr-hyper}.}
% \begin{macrocode}
\renewcommand{\ChangesListline}[4]{%
- \IfSubStr{\Changes at loc@show}{#1}{%
+ \IfIsInList{#1}{\Changes at loc@show}{%
\LWR at startpars%
#2: #3 \qquad
\nameref{\BaseJobname-autopage-#4}%
@@ -43796,112 +47428,255 @@
}{}%
}
-\renewcommand{\Changes at summaryline}[4]{%
- \IfSubStr{\Changes at loc@show}{#1}{%
- \ifthenelse{\not\equal{\Changes at loc@style}{compactsummary} \or #2 > 0}%
- {%
- #3:~#2#4%
- }{}%
- }{}%
+\renewcommand{\listofchanges}[1][\@empty]{%
+\setkeys{Changes at loc}{#1}%
+\ifbool{Changes at optiondraft}%
+{%
+\IfIsInList{\Changes at loc@style}{list|summary|compactsummary}%
+{}%
+{%
+\PackageWarning{changes}{Wrong style for list of changes: '\Changes at loc@style', using 'list' instead.}%
+\def\Changes at loc@style{}%
+}%
+\IfIsEmpty{\Changes at loc@style}%
+{\def\Changes at loc@style{list}}%
+{}%
+\IfStrEq{\Changes at loc@show}{all}%
+{\def\Changes at loc@show{added|deleted|replaced|highlight|comment}}%
+{}%
+\IfIsInList{\Changes at loc@show}{added|deleted|replaced|highlight|comment}%
+{}%
+{%
+\PackageWarning{changes}{Wrong show-value for list of changes: '\Changes at loc@show', using 'all' instead.}%
+\def\Changes at loc@show{}%
+}%
+\IfIsEmpty{\Changes at loc@show}%
+{\def\Changes at loc@show{added|deleted|replaced|highlight|comment}}%
+{}%
+\IfIsEmpty{\Changes at loc@title}%
+{%
+\IfStrEq{\Changes at loc@style}{list}%
+{\def\Changes at heading{\listofchangesname}}{}%
+\IfStrEq{\Changes at loc@style}{summary}%
+{\def\Changes at heading{\summaryofchangesname}}{}%
+\IfStrEq{\Changes at loc@style}{compactsummary}%
+{\def\Changes at heading{\compactsummaryofchangesname}}{}%
+}%
+{\def\Changes at heading{\Changes at loc@title}}%
+\section*{\Changes at heading}
+\IfIsInList{\Changes at loc@style}{list}%
+{%
+\IfFileExists{\jobname.\Changes at locextension}%
+{%
+\newread\Changes at InFile%
+\openin\Changes at InFile=\jobname.\Changes at locextension%
+\loop\unless\ifeof\Changes at InFile%
+\read\Changes at InFile to \Changes at Line%
+\ifeof\Changes at InFile\else%
+\Changes at Line%
+\fi
+\repeat
+\closein\Changes at InFile%
+}{%
+\emph{\changesnoloc}%
+\PackageWarning{changes}{LaTeX rerun needed for list of changes}%
+}%
+}{}%
+\IfIsInList{\Changes at loc@style}{summary|compactsummary}%
+{%
+\IfFileExists{\jobname.\Changes at socextension}%
+{%
+\newread\Changes at InFile%
+\openin\Changes at InFile = \jobname.\Changes at socextension%
+\loop\unless\ifeof\Changes at InFile%
+\read\Changes at InFile to \Changes at Line%
+\ifeof\Changes at InFile\else%
+\expandafter\changes at chopline\Changes at Line\\%
+\textbf{%
+\IfIsColored%
+{\color{\Changes at Incolor}}%
+{}%
+\IfIsAnonymous{\Changes at Inid}%
+{%
+ \LWR at textcurrentcolor{% lwarp
+ \changesauthorname: \changesanonymousname%
+ }% lwarp
+}%
+{%
+ \LWR at textcurrentcolor{% lwarp
+\changesauthorname: \Changes at Inid%
+ }% lwarp
+\IfIsEmpty{\Changes at Inname}%
+{}%
+{ %
+ \LWR at textcurrentcolor{% lwarp
+(\Changes at Inname)%
+ }% lwarp
+}%
+}%
+}\\%
+\numdef{\Changes at InSum}{0}%
+\renewcommand*{\do}[1]{%
+\numdef{\Changes at InSum}{\Changes at InSum + \csuse{Changes at In########1}}%
+}%
+\expandafter\dopsvlist\expandafter{\Changes at loc@show}%
+\ifnumcomp{\Changes at InSum}{=}{0}%
+{%
+% \parbox{\Changes at summary@width}{% lwarp
+ \changesnochanges%
+% }% lwarp
+% \\[1ex]% lwarp
+ \par% \lwarp
+}%
+{%
+\numdef{\Changes at InCount}{0}%
+\renewcommand*{\do}[1]{%
+\numdef{\Changes at InCount}{\Changes at InCount + \csuse{Changes at In########1}}%
+\ifboolexpr{%
+not test {\IfStrEq{\Changes at loc@style}{compactsummary}} or%
+test {\ifnumgreater{\csuse{Changes at In########1}}{0}}%
+}%
+{%
+% \parbox{\Changes at summary@width}{% lwarp
+\csuse{changes########1name}~%
+% \let\cleaders\leaders\dotfill~% lwarp
+\dotfill~% \lwarp
+\csuse{Changes at In########1}%
+% }% lwarp
+% \ifnumless{\Changes at InCount}{\Changes at InSum}% lwarp
+{\\}%
+% {\\[1ex]}% lwarp
+}%
+{}%
+}%
+\expandafter\dopsvlist\expandafter{\Changes at loc@show}%
+ \par% lwarp
+}%
+\fi%
+\repeat
+\closein\Changes at InFile%
+}{%
+\emph{\changesnosoc}%
+\PackageWarning{changes}{LaTeX rerun needed for summary of changes}%
+}%
+}{}%
+}{}%
}
-\xpatchcmd{\listofchanges}
- {{\changesauthorname: \changesanonymousname}}
- {{\LWR at textcurrentcolor{\changesauthorname: \changesanonymousname}}}
- {}
- {\LWR at patcherror{changes}{listofchanges A}}
-\xpatchcmd{\listofchanges}
- {\changesauthorname: \Changes at InID}
- {\LWR at textcurrentcolor{\changesauthorname: \Changes at InID}}
- {}
- {\LWR at patcherror{changes}{listofchanges B}}
+\renewcommand{\Changes at Markup@comment}[3]{%
+\IfStrEq{\Changes at optioncommentmarkup}{todo}%
+{%
+\IfIsColored%
+{\colorlet{Changes at todocolor}{authorcolor}}%
+{\colorlet{Changes at todocolor}{black}}%
+\todo[color=Changes at todocolor!10, bordercolor=Changes at todocolor, linecolor=Changes at todocolor!70, nolist]{\textbf{[\IfIsAnonymous{#2}{}{#3~}\arabic{authorcommentcount}]} #1}%
+}{}%
+\IfStrEq{\Changes at optioncommentmarkup}{margin}%
+{%
+\marginpar{%
+\IfIsColored%
+{\leavevmode\color{authorcolor}}%
+{}%
+ \LWR at textcurrentcolor{% lwarp
+\textbf{[\IfIsAnonymous{#2}{}{#3~}\arabic{Changes at commentCount#2}]:} #1%
+ }% lwarp
+}%
+}{}%
+\IfStrEq{\Changes at optioncommentmarkup}{footnote}%
+{%
+\footnote{%
+ \LWR at textcurrentcolor{% lwarp
+\textbf{[\IfIsAnonymous{#2}{}{#3~}\arabic{Changes at commentCount#2}]:} #1%
+ }% lwarp
+}%
+}{}%
+\IfStrEq{\Changes at optioncommentmarkup}{uwave}%
+{%
+{%
+\IfIsColored%
+{\color{authorcolor}}%
+{}%
+\allowbreak%
+\uwave{%
+\textbf{[\IfIsAnonymous{#2}{}{#3~}\arabic{Changes at commentCount#2}]:} #1%
+}%
+}%
+}{}%
+}
-\xpatchcmd{\listofchanges}
- {(\Changes at InName)}
- {\LWR at textcurrentcolor{(\Changes at InName)}}
- {}
- {\LWR at patcherror{changes}{listofchanges C}}
-
-\xpatchcmd{\listofchanges}
- {\parbox{\Changes at summary@width}}
- {}
- {}
- {\LWR at patcherror{changes}{listofchanges D}}
-
-\xpatchcmd{\Changes at Markup@comment}
- {%
- \ifthenelse{\isAnonymous{#2}}%
- {\textbf{[\arabic{Changes at commentCount#2}]:} }%
- {\textbf{[#3~\arabic{Changes at commentCount#2}]:} }%
- #1%
- }
- {%
- \LWR at textcurrentcolor{% lwarp
- \ifthenelse{\isAnonymous{#2}}%
- {\textbf{[\arabic{Changes at commentCount#2}]:} }%
- {\textbf{[#3~\arabic{Changes at commentCount#2}]:} }%
- #1%
- }% lwarp
- }
- {}
- {\LWR at patcherror{changes}{\Changes at Markup@comment A}}
-
-\xpatchcmd{\Changes at Markup@comment}
- {%
- \uwave{%
- \ifthenelse{\isAnonymous{#2}}%
- {\textbf{[\arabic{Changes at commentCount#2}]:} }%
- {\textbf{[#3~\arabic{Changes at commentCount#2}]:} }%
- #1%
- }%
- }
- {%
- \LWR at textcurrentcolor{% lwarp
- \uwave{%
- \ifthenelse{\isAnonymous{#2}}%
- {\textbf{[\arabic{Changes at commentCount#2}]:} }%
- {\textbf{[#3~\arabic{Changes at commentCount#2}]:} }%
- #1%
- }%
- }% lwarp
- }
- {}
- {\LWR at patcherror{changes}{\Changes at Markup@comment B}}
-
-\xpatchcmd{\Changes at output}
- {\Changes at Markup@author{\Changes at output@author{#2}{left}}}
- {\LWR at textcurrentcolor{\Changes at Markup@author{\Changes at output@author{#2}{left}}}}
- {}
- {\LWR at patcherror{changes}{Changes at output A}}
-
-\xpatchcmd{\Changes at output}
- {%
- \ifthenelse{\equal{#1}{added}}{\Changes at Markup@added{#3}}{}%
- \ifthenelse{\equal{#1}{deleted}}{\Changes at Markup@deleted{#4}}{}%
- \ifthenelse{\equal{#1}{replaced}}{%
- {\Changes at Markup@added{#3}}\allowbreak\Changes at Markup@deleted{#4}%
- }{}%
- \ifthenelse{\equal{#1}{highlight}}{\Changes at Markup@highlight{#3}}{}%
- }
- {%
- \LWR at textcurrentcolor{%
- \ifthenelse{\equal{#1}{added}}{\Changes at Markup@added{#3}}{}%
- \ifthenelse{\equal{#1}{deleted}}{\Changes at Markup@deleted{#4}}{}%
- \ifthenelse{\equal{#1}{replaced}}{%
- {\Changes at Markup@added{#3}}\allowbreak\Changes at Markup@deleted{#4}%
- }{}%
- \ifthenelse{\equal{#1}{highlight}}{\Changes at Markup@highlight{#3}}{}%
- }%
- }
- {}
- {\LWR at patcherror{changes}{Changes at output B}}
-
-\xpatchcmd{\Changes at output}
- {\Changes at Markup@author{\Changes at output@author{#2}{right}}}
- {\LWR at textcurrentcolor{\Changes at Markup@author{\Changes at output@author{#2}{right}}}}
- {}
- {\LWR at patcherror{changes}{Changes at output C}}
+\renewrobustcmd{\Changes at output}[7]{%
+\ifbool{Changes at optiondraft}%
+{%
+\Changes at check@author{#2}%
+\Changes at set@color{#2}%
+{%
+\IfIsInList{#1}{added|deleted|replaced|highlight}%
+{%
+\IfIsEmpty{#5}%
+{%
+\IfIsAuthorEmptyAtPosition{#2}{left}%
+{}%
+{{%
+\IfIsColored%
+{\color{authorcolor}}%
+{}%
+ \LWR at textcurrentcolor{% lwarp
+\Changes at Markup@author{\Changes at output@author{#2}{left}}%
+ }% lwarp
+}}%
+}{}%
+{%
+\IfStrEq{#1}{highlight}%
+{}{%
+\IfIsColored%
+{\color{authorcolor}}%
+{}%
+}%
+ \LWR at textcurrentcolor{% lwarp
+\IfStrEq{#1}{added}{\Changes at Markup@added{#3}}{}%
+\IfStrEq{#1}{deleted}{\Changes at Markup@deleted{#4}}{}%
+\IfStrEq{#1}{replaced}{{\Changes at Markup@added{#3}}\allowbreak\Changes at Markup@deleted{#4}}{}%
+\IfStrEq{#1}{highlight}{\Changes at Markup@highlight{#3}}{}%
+ }% lwarp
+}%
+\IfIsEmpty{#5}%
+{%
+\IfIsAuthorEmptyAtPosition{#2}{right}%
+{}%
+{{%
+\IfIsColored%
+{\color{authorcolor}}%
+{}%
+ \LWR at textcurrentcolor{% lwarp
+\Changes at Markup@author{\Changes at output@author{#2}{right}}%
+ }% lwarp
+}}%
+}{}%
+\stepcounter{Changes@#1Count#2}%
+}{}%
+\IfIsEmpty{#5}%
+{}%
+{%
+\stepcounter{Changes at commentCount#2}%
+\Changes at set@commentcount{#2}%
+\Changes at Markup@comment%
+{#5}%
+{#2}%
+{\Changes at output@author{#2}{left}\Changes at output@author{#2}{right}}%
+}%
+}%
+\IfIsEmpty{#2}%
+{\def\Changes at locid{}}%
+{\def\Changes at locid{~(#2)}}%
+\addtocontents{\Changes at locextension}{\protect\ChangesListline{#1}{#6\Changes at locid}{#7}{\thepage}}%
+}%
+{%
+\IfIsEmpty{#3}%
+{\@bsphack\@esphack}%
+{#3}%
+}%
+}
% \end{macrocode}
%
% \iffalse
@@ -44132,7 +47907,7 @@
% \end{macrocode}
%
% \begin{noindmacro}{\ch}
-% Enclose in an inline \SVG\ image or MathJax.
+% Enclose in an inline \SVG\ image or \brand{MathJax}.
% The \attribute{alt} tag is is the contents of the \cs{ch} expression.
% The filename is hashed, and also has additional hashing information based on
% the local options.
@@ -44469,7 +48244,7 @@
% \codehtml
%
% \begin{macrocode}
-\LWR at ProvidesPackagePass{chemgreek}[2016/02/10]
+\LWR at ProvidesPackagePass{chemgreek}[2020/01/16]
% \end{macrocode}
% \begin{macrocode}
@@ -44515,7 +48290,7 @@
\LWR at ProvidesPackagePass{chemmacros}[2017/08/28]
% \end{macrocode}
%
-% SVG file hashing assumes that the relevent options are constant for the entire document.
+% \SVG\ file hashing assumes that the relevent options are constant for the entire document.
%
% \subsection{Changes to the user's document}
%
@@ -45731,9 +49506,51 @@
%
%
%
+% \iffalse
+%<*citeref>
+% \fi
%
+% \part{lwarp-citeref.sty}
%
+% \section{citeref}
+%
+% \credits{Bj\"orn Briel}
+%
+% \DescribePackage{citeref}
+% \pkg{citeref} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.87}{2020/05/16}{\pkg{citeref}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{citeref}[1999/27/05]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\@cprwrite#1={\write\@auxout{\string\citepageref{#1}{\theLWR at currentautosec}}}
+
+\def\citepageref#1#2{%
+ \xdef\cpr at testa{\@nameuse{cpr at last@#1}}%letzte Zitatstelle
+ \xdef\cpr at testb{#2}% Seite dieser Zitatstelle
+ \ifx\cpr at testa\cpr at testb%
+ \relax% Konsekutive identische Seitenangaben weglassen
+ \else%
+ \@namexdef{cpr at last@#1}{#2}%
+ \@ifundefined{cpr@#1}%
+ {\@namexdef{cpr@#1}{\ref{\BaseJobname-autopage-#2}}}% lwarp
+ {\@namexdef{cpr@#1}{\@nameuse{cpr@#1}, \ref{\BaseJobname-autopage-#2}}}% lwarp
+ \fi
+ }
+% \end{macrocode}
+%
% \iffalse
+%</citeref>
+% \fi
+%
+%
+%
+% \iffalse
%<*CJK>
% \fi
%
@@ -45792,6 +49609,258 @@
%
%
% \iffalse
+%<*cleveref>
+% \fi
+%
+% \part{lwarp-cleveref.sty}
+%
+% \section{cleveref}
+% \label{sec:cleveref}
+%
+% \credits{Toby Cubitt}
+%
+% \DescribePackage{cleveref}
+% \pkg{cleveref} is patched for \HTML, and
+% limited \brand{MathJax} emulation is added.
+%
+% \limitscpageref
+%
+% \Cref{tab:crossrefdata} on page \pageref{tab:crossrefdata}
+% shows the data structure of the label/reference system
+% as revised by \pkg{lwarp} and \pkg{cleveref}.
+%
+% For \brand{MathJax},
+% each references is printed as an \cs{eqref}, without \pkg{cleveref}'s
+% description text. Page references are also printed as simple \cs{eqref}s.
+% Multiple labels in a single \cs{cref} will print as \texttt{(???)} in \brand{MathJax}.
+% \watchout[multiple labels]
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{cleveref}[2018/03/27]
+% \end{macrocode}
+%
+%
+% \changes{v0.20}{2017/01/05}{\pkg{cleveref} and referencing patches:
+% Applied \cs{AfterEndPreamble}.}
+%
+% The following patches are applied.
+% Print-mode versions are not required since they all come down to \cs{ref} eventually,
+% and \cs{ref} has a print-mode version.
+%
+% \begin{macro}{\@@@setcref} \marg{kindofref} \marg{label}
+%
+% \cs{@templabel} becomes the section number.
+%
+% \changes{v0.48}{2018/02/10}{Fix for new v0.21 of \pkg{cleveref}.}
+% \begin{macrocode}
+\def\LWR at orig@@@setcref#1#2{\cref at getlabel{#2}{\@templabel}#1{\@templabel}{}{}}%
+
+\ifdefequal{\@@setcref}{\LWR at orig@@@setcref}{% before v0.21
+ \renewcommand*{\@@setcref}[2]{#1{\ref{#2}}{}{}}
+}{
+ \ifdefequal{\@@@setcref}{\LWR at orig@@@setcref}{% as of v0.21
+ \renewcommand*{\@@@setcref}[2]{%
+ #1{\ref{#2}}{}{}}
+ }{
+ \PackageWarningNoLine{lwarp-cleveref}{
+ Unknown version of cleveref.
+ \protect\cref\space will fail.
+ }%
+ }
+}
+% \end{macrocode}
+% \end{macro}
+
+%\begin{macro}{\@@@setcrefrange} \marg{text} \marg{label} \marg{label}
+% \changes{v0.48}{2018/02/10}{Fix for new v0.21 of \pkg{cleveref}.}
+% \begin{macrocode}
+\def\LWR at orig@@@setcrefrange#1#2#3{%
+ \cref at getlabel{#2}{\@labela}%
+ \cref at getlabel{#3}{\@labelb}%
+ #1{\@labela}{\@labelb}{}{}{}{}}%
+
+\ifdefequal{\@@setcrefrange}{\LWR at orig@@@setcrefrange}{
+ \renewcommand{\@@setcrefrange}[3]{%
+ #1{\ref{#2}}{\ref{#3}}{}{}{}{}%
+ }
+}{
+ \ifdefequal{\@@@setcrefrange}{\LWR at orig@@@setcrefrange}{
+ \renewcommand{\@@@setcrefrange}[3]{%
+ #1{\ref{#2}}{\ref{#3}}{}{}{}{}%
+ }
+ }{
+ \PackageWarningNoLine{lwarp-cleveref}{
+ Unknown version of cleveref.
+ \protect\crefrange\space will fail.
+ }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+
+% ^^A orig:
+% ^^A \def\@@setcpageref#1#2{%
+% ^^A \cref at getpageref{#2}{\@temppage}#1{\@temppage}{}{}}
+
+
+% \label{sec:cpagereffor}
+% \begin{macro}{\cpagerefFor} Redefinable word between ``page(s)'' and the page numbers.
+%
+% \changes{v0.20}{2017/01/03}{User-redefinable word for page references.}
+%
+% \begin{macrocode}
+\newcommand*{\cpagerefFor}{for}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\@@@setcpageref} \marg{typeofref} \marg{label},
+% where typeofref is ``page'' or ``pages''
+%
+% \changes{v0.48}{2018/02/10}{Fix for new v0.21 of \pkg{cleveref}.}
+% \begin{macrocode}
+\def\LWR at orig@@setcpageref#1#2{% before v0.21
+ \cref at getpageref{#2}{\@temppage}#1{\@temppage}{}{}}%
+
+\def\LWR at orig@@@setcpageref#1#2{% as of v0.21
+ \cpageref at getlabel{#2}{\@temppage}#1{\@temppage}{}{}}%
+
+\ifdefequal{\@@setcpageref}{\LWR at orig@@setcpageref}{
+ \renewcommand*{\@@setcpageref}[2]{%
+ #1{\cpagerefFor\ \cref{#2}}{}{}%
+ }
+}{
+ \ifdefequal{\@@@setcpageref}{\LWR at orig@@@setcpageref}{
+ \renewcommand*{\@@@setcpageref}[2]{%
+ #1{\cpagerefFor\ \cref{#2}}{}{}%
+ }
+ }
+ {
+ \PackageWarningNoLine{lwarp-cleveref}{
+ Unknown version of cleveref.
+ \protect\cpageref\space will fail.
+ }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+
+
+% ^^A orig:
+% ^^A \def\@@setcpagerefrange#1#2#3{%
+% ^^A \cref at getpageref{#2}{\@pagea}%
+% ^^A \cref at getpageref{#3}{\@pageb}%
+% ^^A #1{\@pagea}{\@pageb}{}{}{}{}}
+
+% \begin{macrocode}
+\def\LWR at orig@@setcpagerefrange#1#2#3{% before v0.21
+ \cref at getpageref{#2}{\@pagea}%
+ \cref at getpageref{#3}{\@pageb}%
+ #1{\@pagea}{\@pageb}{}{}{}{}}%
+
+\def\LWR at orig@@@setcpagerefrange#1#2#3{% as of v0.21
+ \cpageref at getlabel{#2}{\@pagea}%
+ \cpageref at getlabel{#3}{\@pageb}%
+ #1{\@pagea}{\@pageb}{}{}{}{}}%
+
+\ifdefequal{\@@setcpagerefrange}{\LWR at orig@@setcpagerefrange}{
+ \renewcommand*{\@@setcpagerefrange}[3]{%
+ #1{\cpagerefFor\ \cref{#2}}{\cref{#3}}{}{}{}{}%
+ }
+}{
+ \ifdefequal{\@@@setcpagerefrange}{\LWR at orig@@@setcpagerefrange}{
+ \renewcommand*{\@@@setcpagerefrange}[3]{%
+ #1{\cpagerefFor\ \cref{#2}}{\cref{#3}}{}{}{}{}%
+ }
+ }
+ {
+ \PackageWarningNoLine{lwarp-cleveref}{
+ Unknown version of cleveref.
+ \protect\cpagerefrange\space will fail.
+ }
+ }
+}
+% \end{macrocode}
+%
+% If \pkg{hyperref} is loaded, \pkg{cleveref} defines starred versions of the following,
+% but since \pkg{hyperref} is only emulated, starred versions are defined here:
+% \changes{v0.88}{2020/07/05}{\pkg{cleveref}, \pkg{varioref}: Fix for starred macros.}
+% \begin{macrocode}
+\LWR at absorbstar{cref}
+\LWR at absorbstar{Cref}
+\LWR at absorbstar{crefrange}
+\LWR at absorbstar{Crefrange}
+\LWR at absorbstar{cpageref}
+\LWR at absorbstar{Cpageref}
+\LWR at absorbstar{cpagerefrange}
+\LWR at absorbstar{Cpagerefrange}
+\LWR at absorbstar{labelcref}
+\LWR at absorbstar{labelcpageref}
+% \end{macrocode}
+%
+% ^^A *varioref
+% If \pkg{hyperref} is loaded, \pkg{cleveref} also defines starred versions
+% of \pkg{varioref} macros, so they are defined here.
+% \begin{macrocode}
+\@ifpackageloaded{varioref}{
+ \LWR at absorbstar{vref}
+ \LWR at absorbstar{Vref}
+ \LWR at absorbstar{vrefrange}
+ \LWR at absorbstar{Vrefrange}
+ \LWR at absorbstar{fullref}
+ \LWR at absorbstar{Fullref}
+}{}% varioref
+% \end{macrocode}
+%
+%
+% ^^A % For \brand{MathJax} and \pkg{cleveref},
+% ^^A % but not \pkg{varioref} since \pkg{varioref} macros would only
+% ^^A % be useful in math inside a \cs{text} macro, where they do not
+% ^^A % work in \brand{MathJax}.
+% ^^A %
+% ^^A % \changes{v0.88}{2020/07/05}{\pkg{cleveref}: Added \brand{MathJax} emulation.}
+% ^^A % \begin{macrocode}
+% ^^A \CustomizeMathJax{\newcommand{\cref}{\ifstar\eqref\eqref}}
+% ^^A \CustomizeMathJax{\let\Cref\cref}
+% ^^A \CustomizeMathJax{\newcommand{\LWRcrefrange}[2]{%
+% ^^A \eqref{#1}--\eqref{#2}%
+% ^^A }}
+% ^^A \CustomizeMathJax{\newcommand{\crefrange}{%
+% ^^A \ifstar\LWRcrefrange\LWRcrefrange%
+% ^^A }}
+% ^^A \CustomizeMathJax{\let\Crefrange\crefrange}
+% ^^A \CustomizeMathJax{\let\cpageref\cref}
+% ^^A \CustomizeMathJax{\let\Cpageref\cref}
+% ^^A \CustomizeMathJax{\let\cpagerefrange\crefrange}
+% ^^A \CustomizeMathJax{\let\Cpagerefrange\crefrange}
+% ^^A \CustomizeMathJax{\let\labelcref\cref}
+% ^^A \CustomizeMathJax{\let\labelcpageref\cpageref}
+% ^^A % \end{macrocode}
+% ^^A %
+% ^^A % For \pkg{varioref}, which is modified by \pkg{cleveref},
+% ^^A % so must be patched here:
+% ^^A % \begin{macrocode}
+% ^^A \CustomizeMathJax{\let\vref\cref}
+% ^^A \CustomizeMathJax{\let\Vref\cref}
+% ^^A \CustomizeMathJax{\let\vpageref\cref}
+% ^^A \CustomizeMathJax{\let\Vpageref\cref}
+% ^^A \CustomizeMathJax{\let\vrefrange\crefrange}
+% ^^A \CustomizeMathJax{\let\Vrefrange\crefrange}
+% ^^A \CustomizeMathJax{\let\vpagerefrange\crefrange}
+% ^^A \CustomizeMathJax{\let\Vpagerefrange\crefrange}
+% ^^A \CustomizeMathJax{\let\fullref\cref}
+% ^^A \CustomizeMathJax{\let\Fullref\cref}
+% ^^A % \end{macrocode}
+%
+% \iffalse
+%</cleveref>
+% \fi
+%
+%
+%
+%
+% \iffalse
%<*clrdblpg>
% \fi
%
@@ -45818,6 +49887,63 @@
%
%
% \iffalse
+%<*cmbright>
+% \fi
+%
+% \part{lwarp-cmbright.sty}
+%
+% \section{cmbright}
+%
+% \credits{Walter Schmidt}
+%
+% \DescribePackage{cmbright}
+% \pkg{cmbright} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation ignores all package options,
+% \trouble[limitations]{cmbright=\pkg{cmbright}}
+% except \optn{slantedGreek} is honored, and \cs{mathbold} is available.
+%
+% The dedicated macros for upright Greek letters do work correctly.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.891}{2020/09/14}{\pkg{cmbright}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{cmbright}[2005/04/13]
+
+\LWR at infoprocessingmathjax{cmbright}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+\@ifpackagewith{cmbright}{slantedGreek}
+{
+ \LWR at mathjax@addgreek at u@it*{}{}
+}
+{}
+
+\LWR at mathjax@addgreek at u@up*{up}{}
+
+\CustomizeMathJax{\newcommand{\mathbold}[1]{\boldsymbol{#1}}}
+
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</cmbright>
+% \fi
+%
+%
+%
+%
+% \iffalse
%<*cmdtrack>
% \fi
%
@@ -45868,6 +49994,7 @@
% This may need to be undone for some fonts.
%
% \changes{v0.81}{2020/03/03}{\pkg{colonequals}: Added.}
+% \changes{v0.891}{2020/09/08}{\pkg{colonequals}: Uses Unicode and \cs{mathrel}.}
%
% \codehtml
%
@@ -45879,24 +50006,24 @@
\begin{warpMathJax}
\LWR at infoprocessingmathjax{colonequals}
-\CustomizeMathJax{\newcommand{\ratio}{\unicode{x2236}}}
-\CustomizeMathJax{\newcommand{\coloncolon}{\unicode{x2237}}}
-\CustomizeMathJax{\newcommand{\colonequals}{\coloncolon=}}
-\CustomizeMathJax{\newcommand{\coloncolonequals}{\coloncolon=}}
-\CustomizeMathJax{\newcommand{\equalscolon}{=\!\ratio}}
-\CustomizeMathJax{\newcommand{\equalscoloncolon}{=\!\coloncolon}}
-\CustomizeMathJax{\newcommand{\colonminus}{\ratio-}}
-\CustomizeMathJax{\newcommand{\coloncolonminus}{\coloncolon-}}
-\CustomizeMathJax{\newcommand{\minuscolon}{-\ratio}}
-\CustomizeMathJax{\newcommand{\minuscoloncolon}{-\coloncolon}}
-\CustomizeMathJax{\newcommand{\colonapprox}{\ratio\approx}}
-\CustomizeMathJax{\newcommand{\coloncolonapprox}{\coloncolon\approx}}
-\CustomizeMathJax{\newcommand{\approxcolon}{\approx\!\ratio}}
-\CustomizeMathJax{\newcommand{\approxcoloncolon}{\approx\!\coloncolon}}
-\CustomizeMathJax{\newcommand{\colonsim}{\ratio\sim}}
-\CustomizeMathJax{\newcommand{\coloncolonsim}{\coloncolon\sim}}
-\CustomizeMathJax{\newcommand{\simcolon}{\sim\!\ratio}}
-\CustomizeMathJax{\newcommand{\simcoloncolon}{\sim\!\coloncolon}}
+\CustomizeMathJax{\newcommand{\ratio}{\mathrel{\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand{\coloncolon}{\mathrel{\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand{\colonequals}{\mathrel{\unicode{x2236}\!=}}}
+\CustomizeMathJax{\newcommand{\coloncolonequals}{\mathrel{\unicode{x2237}\!=}}}
+\CustomizeMathJax{\newcommand{\equalscolon}{\mathrel{=\!\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand{\equalscoloncolon}{\mathrel{=\!\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand{\colonminus}{\mathrel{\unicode{x2236}-}}}
+\CustomizeMathJax{\newcommand{\coloncolonminus}{\mathrel{\unicode{x2237}-}}}
+\CustomizeMathJax{\newcommand{\minuscolon}{\mathrel{-\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand{\minuscoloncolon}{\mathrel{-\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand{\colonapprox}{\mathrel{\unicode{x2236}\!\approx}}}
+\CustomizeMathJax{\newcommand{\coloncolonapprox}{\mathrel{\unicode{x2237}\!\approx}}}
+\CustomizeMathJax{\newcommand{\approxcolon}{\mathrel{\approx\!\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand{\approxcoloncolon}{\mathrel{\approx\!\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand{\colonsim}{\mathrel{\unicode{x2236}\!\sim}}}
+\CustomizeMathJax{\newcommand{\coloncolonsim}{\mathrel{\unicode{x2237}\!\sim}}}
+\CustomizeMathJax{\newcommand{\simcolon}{\mathrel{\sim\!\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand{\simcoloncolon}{\mathrel{\sim\!\unicode{x2237}}}}
\end{warpMathJax}
% \end{macrocode}
%
@@ -45906,9 +50033,6 @@
%
%
%
-%
-%
-%
% \iffalse
%<*color>
% \fi
@@ -45938,7 +50062,6 @@
%
%
%
-%
% \iffalse
%<*colortbl>
% \fi
@@ -46066,6 +50189,17 @@
% \end{macrocode}
% \end{noindmacro}
+% For \brand{MathJax}, colors are discarded.
+% \changes{v0.894}{2020/12/22}{\pkg{colortbl}: Added \brand{MathJax} emulation.}
+% \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\columncolor}[2][]{\LWRabsorbtwooptions}}
+\CustomizeMathJax{\let\rowcolor\columncolor}
+\CustomizeMathJax{\let\cellcolor\columncolor}
+\end{warpMathJax}
+% \end{macrocode}
+
+
% \iffalse
%</colortbl>
% \fi
@@ -46262,6 +50396,7 @@
\PackageError{lwarp-ctable}{\MessageBreak
You can, currently, use the sidecap option only with\MessageBreak
memoir documents. Use topcap or botcap only}
+ {}
\fi
\fi
\ifdim\@CTwidth=0pt\else
@@ -46269,6 +50404,7 @@
\PackageError{lwarp-ctable}{\MessageBreak
You may not use the width and maxwidth options together\MessageBreak
Use either width or maxwidth}
+ {}
\fi
\fi
\ifx\@CTpos\empty
@@ -46276,6 +50412,7 @@
\PackageError{lwarp-ctable}{\MessageBreak
You may not use the pos and sideways options together\MessageBreak
Rotated tables and figures are always typeset on a separate page}
+ {}
\fi
\fi
\ifx\@CTcaption\empty
@@ -46283,6 +50420,7 @@
\PackageError{lwarp-ctable}{\MessageBreak
You may not label a captionless table\MessageBreak
Such a label can't be referenced}
+ {}
\fi
\fi
% \end{macrocode}
@@ -47000,8 +51138,46 @@
%
%
%
+% \iffalse
+%<*drftcite>
+% \fi
%
+% \part{lwarp-drftcite.sty}
+%
+% \section{drftcite}
+%
+% \credits{Donald Arseneau}
+%
+% \DescribePackage{drftcite}
+% \pkg{drftcite} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.87}{2020/06/02}{\pkg{drftcite}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{drftcite}[1995/01/23]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\@lbibitem[#1]#2{\global\@HighCite\z@
+ \item[
+ \textsuperscript{\@nameuse{DCN@#2\@extra at b@citeb}}~% lwarp
+ \@biblabel{\@ifundefined{DCN@#2\@extra at b@citeb}{\@warning
+ {Reference `#2' on page \thepage\space was never cited}}{}%
+% \DC at llap{$^{\@nameuse{DCN@#2\@extra at b@citeb}}$\ \ }%%o
+ \@citeverb{#2}}\hfil]\if at filesw{\def\protect##1{\string ##1\space}%
+ \immediate\write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces}
+% \end{macrocode}
+%
% \iffalse
+%</drftcite>
+% \fi
+%
+%
+%
+%
+% \iffalse
%<*easy-todo>
% \fi
%
@@ -47014,6 +51190,11 @@
% \DescribePackage{easy-todo}
% \pkg{easy-todo} is patched for use by \pkg{lwarp}.
%
+% To remove the ``P.'' heading for \HTML:
+% \begin{sourceverb}
+% \warpHTMLonly{\renewcommand{\todoindexpagetitle}{}}
+% \end{sourceverb}
+%
% \changes{v0.44}{2017/11/10}{\pkg{easy-todo}: Added.}
%
% \codehtml
@@ -47025,12 +51206,12 @@
% \begin{noindmacro}{\listoftodos}
% Modified to correct buggy use of \cs{flushright}.
% \begin{macrocode}
-\let\LWR at origlistoftodos\listoftodos
+\let\LWR at easytodo@origlistoftodos\listoftodos
\renewcommand{\listoftodos}{%
\begingroup
\renewcommand{\flushright}{}
-\LWR at origlistoftodos
+\LWR at easytodo@origlistoftodos
\endgroup
}
% \end{macrocode}
@@ -47125,6 +51306,7 @@
% is emulated for \brand{MathJax}.
%
% \changes{v0.81}{2020/03/01}{\pkg{econometrics}: Added.}
+% \changes{v0.89}{2020/09/02}{\pkg{econometrics}: Uses \pkg{lwarp-common-mathjax-letters}.}
%
% \codehtml
%
@@ -47132,7 +51314,10 @@
\LWR at ProvidesPackagePass{econometrics}% no date specified in the original
% \end{macrocode}
%
+%
% \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
\begin{warpMathJax}
\LWR at infoprocessingmathjax{econometrics}
@@ -47169,96 +51354,12 @@
\CustomizeMathJax{\newcommand{\calY}{\mathcal{Y}}}
\CustomizeMathJax{\newcommand{\calZ}{\mathcal{Z}}}
-\CustomizeMathJax{\newcommand{\mA}{\bm A}}
-\CustomizeMathJax{\newcommand{\va}{\bm a}}
-\CustomizeMathJax{\newcommand{\mB}{\bm B}}
-\CustomizeMathJax{\newcommand{\vb}{\bm b}}
-\CustomizeMathJax{\newcommand{\mC}{\bm C}}
-\CustomizeMathJax{\newcommand{\vc}{\bm c}}
-\CustomizeMathJax{\newcommand{\mD}{\bm D}}
-\CustomizeMathJax{\newcommand{\vd}{\bm d}}
-\CustomizeMathJax{\newcommand{\mE}{\bm E}}
-\CustomizeMathJax{\newcommand{\ve}{\bm e}}
-\CustomizeMathJax{\newcommand{\mF}{\bm F}}
-\CustomizeMathJax{\newcommand{\vf}{\bm f}}
-\CustomizeMathJax{\newcommand{\mG}{\bm G}}
-\CustomizeMathJax{\newcommand{\vg}{\bm g}}
-\CustomizeMathJax{\newcommand{\mH}{\bm H}}
-\CustomizeMathJax{\newcommand{\vh}{\bm h}}
-\CustomizeMathJax{\newcommand{\mI}{\bm I}}
-\CustomizeMathJax{\newcommand{\vi}{\bm i}}
-\CustomizeMathJax{\newcommand{\mJ}{\bm J}}
-\CustomizeMathJax{\newcommand{\vj}{\bm j}}
-\CustomizeMathJax{\newcommand{\mK}{\bm K}}
-\CustomizeMathJax{\newcommand{\vk}{\bm k}}
-\CustomizeMathJax{\newcommand{\mL}{\bm L}}
-\CustomizeMathJax{\newcommand{\vl}{\bm l}}
-\CustomizeMathJax{\newcommand{\mM}{\bm M}}
-\CustomizeMathJax{\newcommand{\vm}{\bm m}}
-\CustomizeMathJax{\newcommand{\mN}{\bm N}}
-\CustomizeMathJax{\newcommand{\vn}{\bm n}}
-\CustomizeMathJax{\newcommand{\mO}{\bm O}}
-\CustomizeMathJax{\newcommand{\vo}{\bm o}}
-\CustomizeMathJax{\newcommand{\mP}{\bm P}}
-\CustomizeMathJax{\newcommand{\vp}{\bm p}}
-\CustomizeMathJax{\newcommand{\mQ}{\bm Q}}
-\CustomizeMathJax{\newcommand{\vq}{\bm q}}
-\CustomizeMathJax{\newcommand{\mR}{\bm R}}
-\CustomizeMathJax{\newcommand{\vr}{\bm r}}
-\CustomizeMathJax{\newcommand{\mS}{\bm S}}
-\CustomizeMathJax{\newcommand{\vs}{\bm s}}
-\CustomizeMathJax{\newcommand{\mT}{\bm T}}
-\CustomizeMathJax{\newcommand{\vt}{\bm t}}
-\CustomizeMathJax{\newcommand{\mU}{\bm U}}
-\CustomizeMathJax{\newcommand{\vu}{\bm u}}
-\CustomizeMathJax{\newcommand{\mV}{\bm V}}
-\CustomizeMathJax{\newcommand{\vv}{\bm v}}
-\CustomizeMathJax{\newcommand{\mW}{\bm W}}
-\CustomizeMathJax{\newcommand{\vw}{\bm w}}
-\CustomizeMathJax{\newcommand{\mX}{\bm X}}
-\CustomizeMathJax{\newcommand{\vx}{\bm x}}
-\CustomizeMathJax{\newcommand{\mY}{\bm Y}}
-\CustomizeMathJax{\newcommand{\vy}{\bm y}}
-\CustomizeMathJax{\newcommand{\mZ}{\bm Z}}
-\CustomizeMathJax{\newcommand{\vz}{\bm z}}
+\LWR at mathjax@addlatin at u@bfit{m}% uppercase Latin, bold italic
+\LWR at mathjax@addlatin at l@bfit{v}% lowercase Latin, bold italic
-\CustomizeMathJax{\newcommand{\valpha}{\bm \alpha}}
-\CustomizeMathJax{\newcommand{\vbeta}{\bm \beta}}
-\CustomizeMathJax{\newcommand{\vgamma}{\bm \gamma}}
-\CustomizeMathJax{\newcommand{\vdelta}{\bm \delta}}
-\CustomizeMathJax{\newcommand{\vepsi}{\bm \epsi}}
-\CustomizeMathJax{\newcommand{\vvarepsilon}{\bm \varepsilon}}
-\CustomizeMathJax{\newcommand{\vzeta}{\bm \zeta}}
-\CustomizeMathJax{\newcommand{\veta}{\bm \eta}}
-\CustomizeMathJax{\newcommand{\vtheta}{\bm \theta}}
-\CustomizeMathJax{\newcommand{\viota}{\bm \iota}}
-\CustomizeMathJax{\newcommand{\vkappa}{\bm \kappa}}
-\CustomizeMathJax{\newcommand{\vlambda}{\bm \lambda}}
-\CustomizeMathJax{\newcommand{\vmu}{\bm \mu}}
-\CustomizeMathJax{\newcommand{\vnu}{\bm \nu}}
-\CustomizeMathJax{\newcommand{\vxi}{\bm \xi}}
-\CustomizeMathJax{\newcommand{\vpi}{\bm \pi}}
-\CustomizeMathJax{\newcommand{\vrho}{\bm \rho}}
-\CustomizeMathJax{\newcommand{\vsigma}{\bm \sigma}}
-\CustomizeMathJax{\newcommand{\vtau}{\bm \tau}}
-\CustomizeMathJax{\newcommand{\vupsilon}{\bm \upsilon}}
-\CustomizeMathJax{\newcommand{\vphi}{\bm \phi}}
-\CustomizeMathJax{\newcommand{\vchi}{\bm \chi}}
-\CustomizeMathJax{\newcommand{\vpsi}{\bm \psi}}
-\CustomizeMathJax{\newcommand{\vomega}{\bm \omega}}
+\LWR at mathjax@addgreek at l@bfit{v}{}% lowercase Greek bold italic
+\LWR at mathjax@addgreek at u@bfit*{m}{}% uppercase Greek bold italic, capitalized macro names
-\CustomizeMathJax{\newcommand{\mGamma}{\bm \varGamma}}
-\CustomizeMathJax{\newcommand{\mDelta}{\bm \varDelta}}
-\CustomizeMathJax{\newcommand{\mTheta}{\bm \varTheta}}
-\CustomizeMathJax{\newcommand{\mLambda}{\bm \varLambda}}
-\CustomizeMathJax{\newcommand{\mXi}{\bm \varXi}}
-\CustomizeMathJax{\newcommand{\mPi}{\bm \varPi}}
-\CustomizeMathJax{\newcommand{\mSigma}{\bm \varSigma}}
-\CustomizeMathJax{\newcommand{\mUpsilon}{\bm \varUpsilon}}
-\CustomizeMathJax{\newcommand{\mPhi}{\bm \varPhi}}
-\CustomizeMathJax{\newcommand{\mPsi}{\bm \varPsi}}
-\CustomizeMathJax{\newcommand{\mOmega}{\bm \varOmega}}
-
\CustomizeMathJax{\newcommand{\rb}{\mathrm{b}}}
\CustomizeMathJax{\newcommand{\rB}{\mathrm{B}}}
\CustomizeMathJax{\newcommand{\rC}{\mathrm{C}}}
@@ -47389,7 +51490,7 @@
\textcolor{red}{%
#1 is only a provisional stub\\\Large
the Office document
- \ifx\ed at stubURI\@empty{#2}\else\href{\ed at stubURI}{#2}\fi\
+ \ifx\ed at stubURI\@empty{#2}\else\LWR at href{\ed at stubURI}{#2}\fi\
contains more text\\which will be merged for the final document%
}%
\end{center}%
@@ -47449,7 +51550,7 @@
% \credits{Clemens Niederberger}
%
% \DescribePackage{embrac}
-% \pkg{embrac} is nullfied for \HTML\, and used as-is for print.
+% \pkg{embrac} is patched for \HTML\, and used as-is for print.
%
% \changes{v0.65}{2018/12/10}{\pkg{embrac}: Added.}
%
@@ -47459,7 +51560,14 @@
\LWR at ProvidesPackagePass{embrac}[2017/07/04]
% \end{macrocode}
%
+% \changes{v0.87}{2020/05/14}{\pkg{embrac}: Neutralized kerning.}
% \begin{macrocode}
+\ExplSyntaxOn
+\RenewDocumentCommand{\embrac_kern:n}{m}{}
+\ExplSyntaxOff
+% \end{macrocode}
+%
+% \begin{macrocode}
\LetLtxMacro\LWR at orig@HTML at emph\LWR at HTML@emph
\RenewDocumentCommand{\LWR at HTML@emph}{s m}{\LWR at orig@HTML at emph{#2}}
@@ -47645,7 +51753,7 @@
%
% \credits{John Lavagnino}
%
-% \DescribePackage{endnotes} Used as-is.
+% \DescribePackage{endnotes} Patched for \HTML.
%
% \limitsendnotes
%
@@ -48022,12 +52130,7 @@
%
%
%
-% \codehtml
-% \begin{macrocode}
-\begin{warpHTML}
-% \end{macrocode}
-
% \cs{newlist} \marg{name} \marg{type} \marg{maxdepth} \\
% \cs{renewlist} \marg{name} \marg{type} \marg{maxdepth}
%
@@ -48047,10 +52150,6 @@
% \end{macrocode}
-% \begin{macrocode}
-\end{warpHTML}
-% \end{macrocode}
-
% \iffalse
%</enumitem>
% \fi
@@ -48074,88 +52173,102 @@
% \credits{Peter Wilson}
%
% \DescribePackage{epigraph}
-% \pkg{epigraph} is emulated.
+% \pkg{epigraph} is emulated for \HTML, and used as-is for print output.
%
+% Use \CSS\ to format epigraphs.
+%
% \changes{v0.42}{2017/10/27}{\pkg{epigraph}: If \progcode{FormatWP} add \HTML\ styles.}
+% \changes{v0.84}{2020/04/16}{\pkg{epigraph}: Added print mode.}
%
% \codehtml
% \begin{macrocode}
-\LWR at ProvidesPackageDrop{epigraph}[2009/09/02]
+\LWR at ProvidesPackagePass{epigraph}[2020/01/02]
% \end{macrocode}
% \changes{v0.73}{2019/06/25}{\pkg{epigraph}: Fix: Paragraph tags.}
% \begin{macrocode}
-\DeclareDocumentCommand{\qitem}{m m}
-{
-\begin{BlockClass}{qitem}
-#1
-\LWR at stoppars%
-\ifbool{FormatWP}
-{\begin{BlockClass}[border-top:1px solid gray]{epigraphsource}}
-{\begin{BlockClass}{epigraphsource}}
-#2
-\end{BlockClass}
-\end{BlockClass}
+\DeclareDocumentCommand{\LWR at HTML@qitem}{m m}
+{%
+ \begin{BlockClass}{qitem}%
+ #1%
+ \LWR at stoppars%
+ \ifbool{FormatWP}%
+ {\begin{BlockClass}[border-top:1px solid gray]{epigraphsource}}%
+ {\begin{BlockClass}{epigraphsource}}%
+ #2%
+ \end{BlockClass}%
+ \end{BlockClass}%
}
+\LWR at formatted{qitem}
% \end{macrocode}
% \changes{v0.47}{2018/01/26}{\pkg{epigraph}: Fix: Line wrap at \HTML\ hyphen.}
% \begin{macrocode}
-\DeclareDocumentCommand{\epigraph}{m m}
-{
-\begin{LWR at BlockClassWP}{\LWR at print@mbox{text-align:right}}{}{epigraph}
-\qitem{#1}{#2}
-\end{LWR at BlockClassWP}
+\DeclareDocumentCommand{\LWR at HTML@epigraph}{m m}
+{%
+ \begin{LWR at BlockClassWP}{\LWR at print@mbox{text-align:right}}{}{epigraph}%
+ \qitem{#1}{#2}%
+ \end{LWR at BlockClassWP}%
}
+\LWR at formatted{epigraph}
-\DeclareDocumentEnvironment{epigraphs}{}
-{\LWR at BlockClassWP{\LWR at print@mbox{text-align:right}}{}{epigraph}}
-{\endLWR at BlockClassWP}
+\DeclareDocumentEnvironment{LWR at HTML@epigraphs}{}
+ {\LWR at BlockClassWP{\LWR at print@mbox{text-align:right}}{}{epigraph}}
+ {\endLWR at BlockClassWP}
+\LWR at formattedenv{epigraphs}
% \end{macrocode}
%
-% Use \CSS\ to format epigraphs.
%
-% The following are null commands for source compatibility:
+% The following cannot be used in print mode while generating \HTML:
% \begin{macrocode}
-\newenvironment*{flushepinormal}{}{}
-% \end{macrocode}
-%
-% \changes{v0.45}{2017/12/22}{\pkg{epigraph}: Support for \pkg{memoir}.}
-% \begin{macrocode}
-\@ifclassloaded{memoir}{
-\setlength{\epigraphwidth}{.5\linewidth}
-\renewcommand{\textflush}{flushepinormal}
\renewcommand{\epigraphhead}[2][0]{#2}
\renewcommand{\dropchapter}[1]{}
\renewcommand*{\undodrop}{}
-}{% not memoir
-\newlength{\epigraphwidth}
-\setlength{\epigraphwidth}{.5\linewidth}
-\newcommand{\textflush}{flushepinormal}
-\newcommand{\epigraphflush}{flushright}
-\newcommand{\sourceflush}{flushright}
-\newcommand*{\epigraphsize}{\small}
-\newlength{\epigraphrule}
-\newlength{\beforeepigraphskip}
-\newlength{\afterepigraphskip}
-\newcommand{\epigraphhead}[2][0]{#2}
-\newcommand{\dropchapter}[1]{}
-\newcommand*{\undodrop}{}
-}% not memoir
-
-\let\cleartoevenpage\relax% also in nextpage
-\newcommand{\cleartoevenpage}[1][]{}
% \end{macrocode}
%
-% \changes{v0.79}{2020/01/06}{\pkg{epigraph}: Updated to v1.5e.}
+%
+% \iffalse
+%</epigraph>
+% \fi
+%
+%
+%
+% \iffalse
+%<*epsf>
+% \fi
+%
+% \part{lwarp-epsf.sty}
+%
+% \section{epsf}
+%
+% \credits{Tom Rokicki}
+%
+% \DescribePackage{epsf}
+% \pkg{epsf} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.895}{2019/01/19}{\pkg{epsf}: Added.}
+%
+% \codehtml
+%
% \begin{macrocode}
-\newif\ifepigraphnoindent
-\newcommand\epigraphnoindent{\epigraphnoindenttrue}
+\LWR at ProvidesPackagePass{epsf}% not date given
% \end{macrocode}
%
+% \begin{macrocode}
+\xpretocmd{\epsfsetgraph}
+ {\begin{lateximage}}
+ {}
+ {\LWR at patcherror{lwarp-epsf}{epsfsetgraph-begin}}
+
+\xapptocmd{\epsfsetgraph}
+ {\end{lateximage}}
+ {}
+ {\LWR at patcherror{lwarp-epsf}{epsfsetgraph-end}}
+% \end{macrocode}
+%
% \iffalse
-%</epigraph>
+%</epsf>
% \fi
%
%
@@ -48176,11 +52289,12 @@
% \watchout
%
% \changes{v0.61}{2018/10/01}{\pkg{epsfig}: Added.}
+% \changes{v0.895}{2021/01/17}{\pkg{epsfig}: Supports \env{lateximage}.}
%
% \codehtml
%
% \begin{macrocode}
-\LWR at ProvidesPackageDrop{epsfig}[2017/06/25]
+\LWR at ProvidesPackagePass{epsfig}[2017/06/25]
% \end{macrocode}
%
% A few additional keys to capture the filename:
@@ -48202,9 +52316,11 @@
%
% The captured filename is used as the argument to \cs{includegraphics}:
% \begin{macrocode}
-\newcommand{\epsfig}[1]{\includegraphics[#1]{\LWR at epsfig@filename}}
+\newcommand{\LWR at HTML@epsfig}[1]{\includegraphics[#1]{\LWR at epsfig@filename}}
+\LWR at formatted{epsfig}
-\newcommand{\psfig}[1]{\includegraphics[#1]{\LWR at epsfig@filename}}
+\newcommand{\LWR at HTML@psfig}[1]{\includegraphics[#1]{\LWR at epsfig@filename}}
+\LWR at formatted{psfig}
% \end{macrocode}
%
% \iffalse
@@ -48233,11 +52349,12 @@
%
% \changes{v0.50}{2018/02/21}{\pkg{epstopdf}: Added.}
% \changes{v0.59}{2018/08/27}{\pkg{epstopdf}: Improved.}
+% \changes{v0.893}{2020/11/26}{\pkg{epstopdf}: Updated date to v2.11.}
%
% \codehtml
%
% \begin{macrocode}
-\LWR at ProvidesPackagePass{epstopdf}[2016/05/15]
+\LWR at ProvidesPackagePass{epstopdf}[2020-01-24]
% \end{macrocode}
%
% \iffalse
@@ -48260,11 +52377,12 @@
%
% \changes{v0.51}{2018/03/03}{\pkg{epstopdf-base}: Added.}
% \changes{v0.59}{2018/08/27}{\pkg{epstopdf-base}: Improved.}
+% \changes{v0.893}{2020/11/26}{\pkg{epstopdf-base}: Updated date to v2.11.}
%
% \codehtml
%
% \begin{macrocode}
-\LWR at ProvidesPackagePass{epstopdf-base}[2016/05/15]
+\LWR at ProvidesPackagePass{epstopdf-base}[2020-01-24]
% \end{macrocode}
%
% Redefine to remember the image filename, replacing |.pdf| with |.svg|.
@@ -48502,7 +52620,7 @@
% Finish the current page's errata before closing and reloading the list:
% \begin{macrocode}
-\preto\PrintErrata{\LWR at orignewpage}
+\preto\PrintErrata{\LWR at maybe@orignewpage}
% \end{macrocode}
% No longer defining math macros with the \HTML\ |$|:
@@ -48570,6 +52688,43 @@
%
%
% \iffalse
+%<*esvect>
+% \fi
+%
+% \part{lwarp-esvect.sty}
+%
+% \section{esvect}
+%
+% \credits{Eddie Saudrais}
+%
+% \DescribePackage{esvect}
+% \pkg{esvect} is used as-is for \SVG\ math,
+% and emulated for \brand{MathJax}.
+%
+% \changes{v0.893}{2020/10/14}{\pkg{esvect}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{esvect}% no date given
+% \end{macrocode}
+%
+% \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\LWResvectvv}[1]{\overrightarrow{#1}}}
+\CustomizeMathJax{\newcommand{\LWResvectvvstar}[2]{\overrightarrow{#1}\!_{#2}}}
+\CustomizeMathJax{\newcommand{\vv}{\ifstar\LWResvectvvstar\LWResvectvv}}
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</esvect>
+% \fi
+%
+%
+%
+%
+% \iffalse
%<*etoc>
% \fi
%
@@ -48822,12 +52977,16 @@
% \codehtml
%
% Discard all options for \pkg{lwarp-everyshi}:
+% \changes{v0.89}{2020/07/28}{\pkg{everyshi}: Adapt to \LaTeX kernel changes.}
% \begin{macrocode}
\LWR at ProvidesPackageDrop{everyshi}[2001/05/15]
% \end{macrocode}
%
% \begin{macrocode}
+\let\EveryShipout\relax
\newcommand*{\EveryShipout}[1]{}
+
+\let\AtNextShipout\relax
\newcommand*{\AtNextShipout}[1]{}
% \end{macrocode}
%
@@ -49173,24 +53332,24 @@
% \begin{macrocode}
\let\LWRFB at UseVerbatim\UseVerbatim
\renewcommand*{\UseVerbatim}[1]{%
-\LWR at atbeginverbatim{3}{Verbatim}%
+\LWR at atbeginverbatim{Verbatim}%
\LWRFB at UseVerbatim{#1}%
-\LWR at afterendverbatim{.5}%
+\LWR at afterendverbatim%
}
\let\LWRFB at LUseVerbatim\LUseVerbatim
\renewcommand*{\LUseVerbatim}[1]{%
-\LWR at atbeginverbatim{3}{LVerbatim}%
+\LWR at atbeginverbatim{LVerbatim}%
\noindent%
\LWRFB at LUseVerbatim{#1}%
-\LWR at afterendverbatim{.5}%
+\LWR at afterendverbatim%
}
\def\@BUseVerbatim[#1]#2{%
-\LWR at atbeginverbatim{3}{BVerbatim}%
+\LWR at atbeginverbatim{BVerbatim}%
\LWRFB at UseVerbatim{#2}%
-\LWR at afterendverbatim{.5}%
+\LWR at afterendverbatim%
}
% \end{macrocode}
%
@@ -49220,12 +53379,13 @@
% \changes{v0.20}{2017/01/11}{\pkg{fancyhdr}: Added.}
% \changes{v0.33}{2017/06/18}{\pkg{fancyhdr}: Fix: Optional args for \cs{lhead}, etc.}
% \changes{v0.66}{2019/02/02}{\pkg{fancyhdr}: Updated to v3.10.}
+% \changes{v0.895}{2020/01/05}{\pkg{fancyhdr}: Updated to v4.0.}
%
% \codehtml
%
% Discard all options for \pkg{lwarp-fancyhdr}:
% \begin{macrocode}
-\LWR at ProvidesPackageDrop{fancyhdr}[2019/01/31]
+\LWR at ProvidesPackageDrop{fancyhdr}[2021/01/04]
% \end{macrocode}
% \begin{macrocode}
@@ -49232,7 +53392,7 @@
\newcommand*{\fancyhead}[2][]{}
\newcommand*{\fancyfoot}[2][]{}
\newcommand*{\fancyhf}[2][]{}
-\newcommand*{\fancypagestyle}[2]{}
+
\newcommand*{\lhead}[2][]{}
\newcommand*{\chead}[2][]{}
\newcommand*{\rhead}[2][]{}
@@ -49241,16 +53401,30 @@
\newcommand*{\rfoot}[2][]{}
\newcommand*{\headrulewidth}{}
\newcommand*{\footrulewidth}{}
+\providecommand{\headruleskip}{0pt}
+\providecommand{\footruleskip}{0pt}
+\newcommand{\plainheadrulewidth}{0pt}
+\newcommand{\plainfootrulewidth}{0pt}
+\def\fancyplain#1#2{#1}
\newcommand*{\headrule}{}
\newcommand*{\footrule}{}
\newlength{\headwidth}
+\newcommand*{\fancycenter}[1][1em]{}
\newcommand*{\fancyheadoffset}[2][]{}
\newcommand*{\fancyfootoffset}[2][]{}
\newcommand*{\fancyhfoffset}[2][]{}
+\newcommand{\fancyheadinit}[1]{}
+\newcommand{\fancyfootinit}[1]{}
+\newcommand{\fancyhfinit}[1]{}
\newcommand*{\iffloatpage}[2]{#2}
\newcommand*{\ifftopfloat}[2]{#2}
\newcommand*{\iffbotfloat}[2]{#2}
\newcommand*{\iffootnote}[2]{#2}
+
+\newcommand{\fancypagestyle}[1]{%
+ \@ifnextchar[{\f at nch@pagestyle{#1}}{\f at nch@pagestyle{#1}[]}%
+}
+\long\def\f at nch@pagestyle#1[#2]#3{}
% \end{macrocode}
% \iffalse
@@ -49268,11 +53442,14 @@
%
% \section{fancyref}
%
+% \credits{Axel Reichert}
+%
% \DescribePackage{fancyref}
-% \pkg{fancyref} is emulated.
+% \pkg{fancyref} is modifed for \HTML\ output.
%
% \changes{v0.44}{2017/11/22}{\pkg{fancyref}: Added.}
% \changes{v0.48}{2018/02/04}{\pkg{fancyref}: Now directly supported.}
+% \changes{v0.88}{2020/07/20}{\pkg{fancyref}: Now uses \pkg{varioref} which ignores page-related output.}
%
% \codehtml
%
@@ -49292,36 +53469,6 @@
\renewcommand*{\fancyrefhook}[1]{#1}%
}
% \end{macrocode}
-
-% Modified to ignore the page number and \pkg{varioref}.
-% \begin{macrocode}
-\renewcommand*{\@f at ref}[4]{%
- \@ifundefined{#1r@#2@#3}{%
- \PackageError{lwarp-fancyref}{%
- \backslashchar#1ref\space format ``#2''
- undefined\MessageBreak
- for label type ``#3''%
- }{%
- The format ``#2'' was not defined for the label type
- ``#3''\MessageBreak
- and the \backslashchar#1ref\space command. Perhaps
- you have only misspelled its name.\MessageBreak
- Otherwise you will have to define it with
- \protect\new#1refformat\MessageBreak
- prior to using it.%
- }%
- }{%
- \fancyrefhook{%
- \@nameuse{#1r@#2@#3}%
- {\ref{#3\fancyrefargdelim#4}}%
-% {\pageref{#3\fancyrefargdelim#4}}% original
-% {\@fancyref at page@ref{#3\fancyrefargdelim#4}}% original
- {}% lwarp
- {}% lwarp
- }%
- }%
-}%
-% \end{macrocode}
%
% \iffalse
%</fancyref>
@@ -49507,11 +53654,10 @@
% \end{macrocode}
%
% Adds \HTML\ formatting:
+% \changes{v0.891}{2020/09/12}{\pkg{fancyvrb}: Fix: \env{BVerbatim} with labels.}
% \begin{macrocode}
\def\FV at BUseVerbatim#1{%
- \LWR at atbeginverbatim{0}{verbatim}%
\FV at BVerbatimBegin#1\FV at BVerbatimEnd%
- \LWR at afterendverbatim{0}%
}
% \end{macrocode}
@@ -49526,6 +53672,7 @@
% start and end of the environment, depending on the choice of |frame|.
% Original code is from the \pkg{fancyvrb} package.
% \changes{v0.73}{2019/06/26}{\pkg{fancyvrb}: Fix: Nested \element{div}/\element{pre}.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\newcommand*{\LWR at fvstartnone}{%
\LWR at traceinfo{fvstartnone}%
@@ -49536,14 +53683,14 @@
\ifx\FV at LabelBegin\relax\else
\FancyVerbRuleColor{\LWR at FVfindbordercolor}
\LWR at htmltagc{%
- div class="fancyvrblabel" % extra space
- style="color: \LWR at origpound\LWR at tempcolor"%
+ div class=\textquotedbl{}fancyvrblabel\textquotedbl\ % space
+ style=\textquotedbl{}color: \LWR at origpound\LWR at tempcolor\textquotedbl%
}
\LWR at print@textrm{\FV at LabelBegin}% \textrm preserves emdash
\LWR at htmltagc{/div}\LWR at orignewline%
\fi
\fi
-\LWR at atbeginverbatim{0}{verbatim}%
+\LWR at atbeginverbatim{verbatim}%
% }%
}
@@ -49550,14 +53697,14 @@
\newcommand*{\LWR at fvendnone}{%
\LWR at traceinfo{fvendnone}%
% \hbox to\z@{
-\LWR at afterendverbatim{0}%
+\LWR at afterendverbatim%
\LWR at stoppars%
\ifx\FV at LabelPositionBottomLine\relax\else
\ifx\FV at LabelEnd\relax\else
\FancyVerbRuleColor{\LWR at FVfindbordercolor}
\LWR at htmltagc{%
- div class="fancyvrblabel" % extra space
- style="color: \LWR at origpound\LWR at tempcolor"%
+ div class=\textquotedbl{}fancyvrblabel\textquotedbl\ % space
+ style=\textquotedbl{}color: \LWR at origpound\LWR at tempcolor\textquotedbl%
}
\LWR at print@textrm{\FV at LabelEnd}
\LWR at htmltagc{/div}\LWR at orignewline%
@@ -49662,7 +53809,14 @@
\let\FV at LeftListFrame\relax%
\let\FV at RightListFrame\relax%
\let\FV at EndListFrame\LWR at fvendline}
-
+% \end{macrocode}
+%
+% Seems to be required in some situations:
+% \changes{v0.892}{2020/10/06}{\pkg{fancyvrb}: Provided \cs{FV at FrameFillLine}.}
+% \begin{macrocode}
+\def\FV at FrameFillLine{}%
+% \end{macrocode}
+% \begin{macrocode}
\def\FV at Frame@leftline{%
\renewcommand*{\LWR at FVstyle}{%
\LWR at currenttextcolorstyle\LWR at indentHTMLtwo%
@@ -49736,19 +53890,44 @@
}
% \end{macrocode}
-% \begin{environment}{BVerbatim}
+% \changes{v0.892}{2020/10/05}{\pkg{fancyvrb}: Adapted to \pkg{fvextra}.}
% \begin{macrocode}
-\AtBeginEnvironment{BVerbatim}
-{%
-\LWR at forcenewpage% instead of \preto
-\LWR at atbeginverbatim{0}{bverbatim}%
+\def\FV at ListProcessLine@i#1{%
+% \hbox{%
+ \ifvoid\@labels\else
+ \hbox to \z@{\kern\@totalleftmargin\box\@labels\hss}%
+ \fi
+ \FV at ListProcessLine{#1}%
+% }%
+% \let\FV at ProcessLine\FV at ListProcessLine@ii%
}
+% \end{macrocode}
-\AfterEndEnvironment{BVerbatim}
-{%
-\LWR at afterendverbatim{0}%
-}
+% \changes{v0.892}{2020/10/05}{\pkg{fancyvrb}: Adapted to \pkg{fvextra}.}
+% \begin{macrocode}
+\def\FV at ListProcessLastLine{}
% \end{macrocode}
+
+
+% \begin{environment}{BVerbatim}
+% \changes{v0.891}{2020/09/12}{\pkg{fancyvrb}: Fix: \env{BVerbatim} with labels.}
+% \begin{macrocode}
+
+\xpretocmd{\FV at BeginVBox}
+ {%
+ \LWR at forcenewpage% instead of \preto
+ \LWR at atbeginverbatim{bverbatim}%
+ }
+ {}
+ {\LWR at patcherror{fancyvrb}{FV at BeginVBox}}
+
+\xapptocmd{\FV at EndVBox}
+ {%
+ \LWR at afterendverbatim%
+ }
+ {}
+ {\LWR at patcherror{fancyvrb}{FV at EndVBox}}
+% \end{macrocode}
% \end{environment}
% End of the modifications to make at the end of the preamble:
@@ -49765,6 +53944,169 @@
%
%
% \iffalse
+%<*fbox>
+% \fi
+%
+% \part{lwarp-fbox.sty}
+%
+% \section{fbox}
+%
+% \credits{Herbert Voß}
+%
+% \DescribePackage{fbox}
+% \pkg{fbox} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.88}{2020/06/30}{\pkg{fbox}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{fbox}[2020/06/22]
+% \end{macrocode}
+%
+% This will be \cs{LWR at formatted} when \cs{AtBeginDocument}:
+% \begin{macrocode}
+\LetLtxMacro\LWR at HTML@fbox\fbox
+% \end{macrocode}
+%
+% Instead of using the original, the new version is used with all borders:
+% \begin{macrocode}
+\renewcommand*{\orig at fbox}{\FBox at i[tblr]}
+% \end{macrocode}
+%
+% \begin{noindmacro}{LWR at fboxpkg@border}
+% \marg{1: top \Slash bottom \Slash left \Slash right} \marg{2: padding, or empty}
+%
+% Accumulates \HTML\ styles for border, and padding if given:
+% \begin{macrocode}
+\newcommand*{\LWR at fboxpkg@border}[2]{%
+ \appto\LWR at tempone{%
+ border-#1: % space
+ \LWR at printlength{\LWR at atleastonept} % space
+ solid \LWR at origpound\LWR at tempcolor ;\LWR at indentHTML
+ }%
+ \ifblank{#2}{}{%
+ \appto\LWR at tempone{%
+ padding-#1: \LWR at printlength{#2} ;\LWR at indentHTML
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{noindmacro}
+%
+% A hack to reuse the same code for inline and blocks:
+% \begin{macrocode}
+\newbool{LWR at fboxpkg@ispar}
+\boolfalse{LWR at fboxpkg@ispar}
+% \end{macrocode}
+%
+% Acculumate \HTML\ styles for left and right padding,
+% depending on \cs{if at fbox@space at left}, \cs{if at fbox@space at right}:
+% \begin{macrocode}
+\newcommand{\LWR at fboxpkg@lrpadding}[1]{%
+ \csuse{if at fbox@space@#1}%
+ \appto\LWR at tempone{%
+ padding-#1: \LWR at printlength{\fbox@@sep};\LWR at indentHTML
+ }
+ \else%
+ \appto\LWR at tempone{%
+ padding-#1: 0pt;\LWR at indentHTML
+ }
+ \fi%
+}
+% \end{macrocode}
+%
+% The \HTML\ version, modified to use \HTML\ styles and either
+% an \cs{InlineClass} or \env{BlockClass}:
+% \begin{macrocode}
+\newcommand{\LWR at HTML@FBox at iii}[1]{%
+% \end{macrocode}
+%
+% Find and set the text color, rule width, margin:
+% \begin{macrocode}
+ \LWR at forceminwidth{\fbox@@rule}%
+ \LWR at findcurrenttextcolor%
+ \def\LWR at tempone{%
+ color: \LWR at origpound\LWR at tempcolor ; \LWR at indentHTML
+ margin: 1ex ; \LWR at indentHTML
+ }%
+% \end{macrocode}
+%
+% Add left/right padding:
+% \begin{macrocode}
+ \LWR at fboxpkg@lrpadding{left}%
+ \LWR at fboxpkg@lrpadding{right}%
+% \end{macrocode}
+%
+% Per the original to decode the borders, in a new way:
+% \begin{macrocode}
+ \ifnum\the\@tempcntb>8\relax
+ \advance\@tempcntb by -8
+ \LWR at fboxpkg@border{top}{\fbox@@sep}%
+ \fi
+ \ifnum\@tempcntb>3
+ \advance\@tempcntb by -4
+ \LWR at fboxpkg@border{left}{}%
+ \fi
+ \ifnum\@tempcntb>1
+ \LWR at fboxpkg@border{right}{}%
+ \fi
+ \ifodd\@tempcntb
+ \LWR at fboxpkg@border{bottom}{\fbox@@sep}%
+ \fi
+% \end{macrocode}
+%
+% Generate a \env{BlockClass} or \cs{InlineClass} with the contents:
+% \begin{macrocode}
+ \color at begingroup
+ \ifbool{LWR at fboxpkg@ispar}%
+ {%
+ \begin{BlockClass}[\LWR at tempone]{fboxpkg}%
+ #1%
+ \end{BlockClass}%
+ }%
+ {%
+ \InlineClass[\LWR at tempone]{fboxpkg}{%
+ #1%
+ }%
+ }%
+ \color at endgroup
+ \boolfalse{LWR at fboxpkg@ispar}% globally
+}
+\LWR at formatted{FBox at iii}
+% \end{macrocode}
+%
+% For \cs{fparbox}, set the use of \env{BlockClass}, then reuse the above:
+% \begin{macrocode}
+\long\def\LWR at HTML@FParBox at i[#1]#2{%
+ \booltrue{LWR at fboxpkg@ispar}%
+ \FBox at i[#1]{#2}
+}
+\LWR at formatted{FParBox at i}
+
+\long\def\LWR at HTML@FParBox at ii#1{%
+ \booltrue{LWR at fboxpkg@ispar}%
+ \FBox at i[tblr]{#1}%
+}
+\LWR at formatted{FParBox at ii}
+% \end{macrocode}
+%
+% For \brand{MathJax}, absorb and ignore star and optional arguments:
+% \begin{macrocode}
+\CustomizeMathJax{\let\LWRorigfbox\fbox}
+\CustomizeMathJax{\newcommand{\LWRfboxpkgtwo}[2][]{\LWRorigfbox{#2}}}
+\CustomizeMathJax{\renewcommand{\fbox}{\ifstar\LWRfboxpkgtwo\LWRfboxpkgtwo}}
+\CustomizeMathJax{\newcommand{\fparbox}{\fbox}}
+% \end{macrocode}
+%
+% \iffalse
+%</fbox>
+% \fi
+%
+%
+%
+%
+% \iffalse
%<*fewerfloatpages>
% \fi
%
@@ -49946,8 +54288,49 @@
%
%
%
+% \iffalse
+%<*fixmath>
+% \fi
%
+% \part{lwarp-fixmath.sty}
+%
+% \section{fixmath}
+%
+% \credits{Walter Schmidt}
+%
+% \DescribePackage{fixmath}
+% \pkg{fixmath} is used as-is for \SVG\ math, and
+% emulated for \brand{MathJax}.
+%
+% \brand{MathJax} does not have full font support for bold italic Greek.
+% \watchout[limitations]
+%
+% \changes{v0.893}{2020/10/30}{\pkg{fixmath}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{fixmath}[2000/04/11]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+\LWR at mathjax@addgreek at u@it*{}{}
+\LWR at mathjax@addletter{\BooleanTrue}{up}{}{delta}{0394}
+\LWR at mathjax@addletter{\BooleanTrue}{up}{}{omega}{03A9}
+\CustomizeMathJax{\newcommand{\mathbold}[1]{\boldsymbol{#1}}}
+\end{warpMathJax}
+% \end{macrocode}
+%
% \iffalse
+%</fixmath>
+% \fi
+%
+%
+%
+% \iffalse
%<*fixme>
% \fi
%
@@ -49977,10 +54360,15 @@
% \end{macrocode}
%
% Float-related macros required by \pkg{lwarp}:
+% \changes{v0.84}{2020/04/09}{\pkg{fixme}: Added section name.}
% \begin{macrocode}
\newcommand{\ext at fixme}{lox}
-\renewcommand{\l at fixme}[2]{\hypertocfloat{1}{fixme}{lox}{#1}{#2}}
+\renewcommand{\l at fixme}[2]{%
+ \hypertocfloat{1}{fixme}{lox}%
+ {\LWR at nameref{\BaseJobname-autopage-\arabic{LWR at nextautopage}} --- #1}
+ {#2}
+}
% \end{macrocode}
%
% Other modifications:
@@ -50169,10 +54557,6 @@
\LWR at ProvidesPackageDrop{float}[2001/11/08]
% \end{macrocode}
-% \begin{noindmacro}{\listof}
-% See \cref{sec:listof} for the \cs{listof} command.
-% \end{noindmacro}
-
% \begin{macro}{\LWR at floatstyle}
% The default float style:
% \begin{macrocode}
@@ -50189,27 +54573,27 @@
%
% \begin{macrocode}
\NewDocumentCommand{\newfloat}{m m m o}{%
-\IfValueTF{#4}%
-{\DeclareFloatingEnvironment[fileext=#3,within=#4]{#1}}%
-{\DeclareFloatingEnvironment[fileext=#3]{#1}}%
+ \IfValueTF{#4}%
+ {\DeclareFloatingEnvironment[fileext=#3,within=#4]{#1}}%
+ {\DeclareFloatingEnvironment[fileext=#3]{#1}}%
% \end{macrocode}
% Remember the float style:
% \changes{v0.57}{2018/05/14}{\pkg{float}: Added float styles.}
% \begin{macrocode}
-\csedef{LWR at floatstyle@#1}{\LWR at floatstyle}%
+ \csedef{LWR at floatstyle@#1}{\LWR at floatstyle}%
% \end{macrocode}
% \pkg{newfloat} package automatically creates the \cs{listof} command
% for new floats, but \pkg{float} does not,
% so remove \cs{listof} here in case it is manually created later.
% \begin{macrocode}
-\cslet{listof#1s}\relax%
-\cslet{listof#1es}\relax%
+ \cslet{listof#1s}\relax%
+ \cslet{listof#1es}\relax%
% \end{macrocode}
% Likesize, \pkg{newfloat} also creates \cs{l@<type>}, but \pkg{float} does not,
% so remove it here:
% \changes{v0.57}{2018/05/26}{\pkg{float}: Fix: Do not pre-define \cs{l at name}.}
% \begin{macrocode}
-\cslet{l@#1}\relax%
+ \cslet{l@#1}\relax%
}
% \end{macrocode}
% \end{noindmacro}
@@ -50217,9 +54601,15 @@
% \begin{noindmacro}{\floatname} \marg{type} \marg{name}
%
% Sets the text name of the float, such as ``Figure''.
+% Avoids trying to set a recursive name, from \pkg{trivfloat}.
+% \changes{v0.84}{2020/04/08}{\pkg{float}: Fix: Recursive name.}
% \begin{macrocode}
\NewDocumentCommand{\floatname}{m +m}{%
- \SetupFloatingEnvironment{#1}{name=#2}%
+ \def\LWR at tempone{#2}%
+ \def\LWR at temptwo{\@nameuse{#1name}}%
+ \ifdefequal{\LWR at tempone}{\LWR at temptwo}{}{%
+ \SetupFloatingEnvironment{#1}{name=#2}%
+ }%
}
% \end{macrocode}
% \end{noindmacro}
@@ -50254,6 +54644,10 @@
% \end{macrocode}
% \end{noindmacro}
+% \begin{noindmacro}{\listof}
+% See \cref{sec:listof} for the \cs{listof} command in the \pkg{lwarp} core.
+% \end{noindmacro}
+
% \iffalse
%</float>
% \fi
@@ -50310,7 +54704,7 @@
}%
{marginblock}%
}%
- \captionsetup{type=#2}%
+ \renewcommand*{\@captype}{#2}%
}
{%
\endLWR at BlockClassWP%
@@ -50410,8 +54804,8 @@
\AtBeginDocument{
\@ifpackageloaded{subcaption}
-{\booltrue{LWR at subcaptionloaded}}
-{\boolfalse{LWR at subcaptionloaded}}
+ {\booltrue{LWR at subcaptionloaded}}
+ {\boolfalse{LWR at subcaptionloaded}}
}
% \end{macrocode}
@@ -50672,9 +55066,9 @@
% inside a \CSS\ \element{div} of class |floatfoot|.
% \begin{macrocode}
\NewDocumentCommand{\floatfoot}{s +m}{%
-\begin{BlockClass}{floatfoot}
-#2
-\end{BlockClass}
+ \begin{BlockClass}{floatfoot}
+ #2
+ \end{BlockClass}
}
% \end{macrocode}
% \end{noindmacro}
@@ -50695,19 +55089,19 @@
% \end{macrocode}
% The row of floats is placed into a \element{div} of class |floatrow|:
% \begin{macrocode}
-\LWR at forcenewpage
-\BlockClass{floatrow}
+ \LWR at forcenewpage
+ \BlockClass{floatrow}
% \end{macrocode}
% While inside the floatrow, |LWR at insubfloatrow| is set true,
% which tells \cs{floatbox} to use \cs{subfigure} or \cs{subtable}.
% \begin{macrocode}
-\begingroup
-\booltrue{LWR at insubfloatrow}
+ \begingroup%
+ \booltrue{LWR at insubfloatrow}%
}
-{
-\endgroup
-\endBlockClass
-\boolfalse{LWR at insubfloatrow}
+{%
+ \endgroup%
+ \endBlockClass%
+ \boolfalse{LWR at insubfloatrow}%
}
% \end{macrocode}
% \end{noindenvironment}
@@ -51141,6 +55535,7 @@
% Swashes and figure styles are ignored for \HTML.
%
% \changes{v0.72}{2019/05/27}{\pkg{fontaxes}: Added.}
+% \changes{v0.84}{2020/04/13}{\pkg{fontaxes}: Moved sscshape to core. \cs{FilenameNullify}.}
%
% \codehtml
%
@@ -51149,29 +55544,17 @@
% \end{macrocode}
%
% \begin{macrocode}
-\newrobustcmd{\LWR at HTML@sscshape}{\LWR at HTML@scshape}
-\LWR at formatted{sscshape}
-\newcommand*{\LWR at null@sscshape}{}
-
-\newrobustcmd{\LWR at HTML@textssc}[1]{\textsc{#1}}
-\LWR at formatted{textssc}
-\newcommand*{\LWR at null@textssc}[1]{#1}
-
\ifdef{\LWR at HTML@swshape}{}{% duplicated by nfssext-cfr
\newcommand{\LWR at HTML@swshape}{}
\LWR at formatted{swshape}
- \newcommand*{\LWR at null@swshape}{}
- \newcommand{\LWR at HTML@textsw}[1]{#1}
+ \newrobustcmd{\LWR at HTML@textsw}[1]{#1}
\LWR at formatted{textsw}
- \newcommand*{\LWR at null@textsw}[1]{#1}
-}
-\appto{\LWR at nullfonts}{%
-\LetLtxMacro\sscshape\LWR at null@sscshape%
-\LetLtxMacro\textssc\LWR at null@textssc%
-\LetLtxMacro\swshape\LWR at null@swshape%
-\LetLtxMacro\textsw\LWR at null@textsw%
+ \FilenameNullify{%
+ \LetLtxMacro\swshape\@empty%
+ \LetLtxMacro\textsw\firstofone%
+ }
}
% \end{macrocode}
%
@@ -51256,7 +55639,8 @@
\providecommand*{\multfootsep}{,}
% \end{macrocode}
%
-% Using \pkg{cleveref}:
+% Using \pkg{cleveref}.
+% \cs{labelcref} only prints the number of the object, not its type.
% \begin{macrocode}
\providecommand*{\footref}[1]{\labelcref{#1}}
% \end{macrocode}
@@ -51538,7 +55922,9 @@
% \end{macrocode}
% \begin{macrocode}
-\BeforeBeginEnvironment{forest}{\begin{lateximage}[forest]}
+\BeforeBeginEnvironment{forest}{%
+ \begin{lateximage}[-forest-~\PackageDiagramAltText]%
+}
\AfterEndEnvironment{forest}{\end{lateximage}}
@@ -51546,8 +55932,9 @@
\forest at config{#2}%
\IfBooleanTF{#1}{%
\PackageError{lwarp-forest}%
- {Starred \Forest is not supported}%
- {Lwarp uses an environment for images, but \Forest* cannot work in an environment.}%
+ {\protect\Forest* is not supported}%
+ {Lwarp uses an environment for images,\MessageBreak
+ but \protect\Forest* cannot work in an environment.}%
\let\forest at next\forest at env%
}{\let\forest at next\forest at group@env}%
\begin{lateximage}[-forest-~\PackageDiagramAltText]% lwarp
@@ -51603,6 +55990,118 @@
%
%
% \iffalse
+%<*fourier>
+% \fi
+%
+% \part{lwarp-fourier.sty}
+%
+% \section{fourier}
+%
+% \credits{Michel Bovani}
+%
+% \DescribePackage{fourier}
+% \pkg{fourier} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation ignores all package options,
+% \trouble[limitations]{fourier=\pkg{fourier}}
+% except \optn{sloped} and \optn{upright} are honored for Greek characters,
+% but \brand{MathJax} cannot yet honor these for Latin characters.
+%
+% The dedicated macros for upright and italic Greek letters do work correctly.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.891}{2020/09/14}{\pkg{fourier}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{fourier}[2020/03/03]
+
+\LWR at infoprocessingmathjax{fourier}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-overlaysymbols}
+
+\begin{warpMathJax}
+
+\@ifpackagewith{fourier}{sloped}
+ {
+ \LWR at mathjax@addgreek at l@up{other}{}
+ \LWR at mathjax@addgreek at u@it*{other}{}
+ }% sloped
+ {% not sloped
+ \@ifpackagewith{fourier}{upright}
+ {% upright option
+ \LWR at mathjax@addgreek at l@up{}{}
+ \LWR at mathjax@addgreek at u@up*{}{}
+ \LWR at mathjax@addgreek at l@it{other}{}
+ \LWR at mathjax@addgreek at u@it*{other}{}
+ }
+ {% neither sloped nor upright
+ \LWR at mathjax@addgreek at l@up{other}{}
+ \LWR at mathjax@addgreek at u@it*{other}{}
+ }
+ }
+
+\CustomizeMathJax{\newcommand{\othergreek}[1]{#1}}
+\CustomizeMathJax{\let\varvarrho\varrho}
+\CustomizeMathJax{\let\varvarpi\varpi}
+\CustomizeMathJax{\let\othervarvarpi\othervarpi}
+\CustomizeMathJax{\let\othervarvarrho\othervarrho}
+\CustomizeMathJax{\let\varpartialdiff\partial}
+% \end{macrocode}
+%
+% \filenm{lwarp_mathjax.txt} adds \cs{left} \Slash \cs{right} support for
+% delimiters.
+% \changes{v0.892}{2020/09/26}{\pkg{fourier}: Added \cs{left} \Slash \cs{right} support in \filenm{lwarp_mathjax.txt}.}
+% \begin{macrocode}
+\CustomizeMathJax{\let\llbracket\lBrack}
+\CustomizeMathJax{\let\rrbracket\rBrack}
+\CustomizeMathJax{\let\dblbrackleft\lBrack}
+\CustomizeMathJax{\let\dblbrackright\rBrack}
+
+\CustomizeMathJax{\let\VERT|}
+
+\CustomizeMathJax{\newcommand{\parallelslant}{\mathrel{\unicode{x02AFD}}}}
+\CustomizeMathJax{\newcommand{\thething}{\mathord{\unicode{x1F60E}}}}
+\CustomizeMathJax{\newcommand{\nparallelslant}{%
+ \mathrel{\LWRoverlaysymbols{-}{\unicode{x02AFD}}}%
+}}
+\CustomizeMathJax{\newcommand{\xswordsup}{\mathord{\unicode{x2694}}}}
+\CustomizeMathJax{\newcommand{\xswordsdown}{\mathord{\unicode{x2694}}}}% up
+\CustomizeMathJax{\newcommand{\notowns}{\mathrel{\unicode{x220C}}}}
+
+\CustomizeMathJax{\newcommand{\iintop}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintop}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\oiint}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\let\oiintop\oiint}
+\CustomizeMathJax{\newcommand{\oiiint}{\mathop{\unicode{x2230}}\limits}}
+\CustomizeMathJax{\let\oiiintop\oiiint}
+\CustomizeMathJax{\newcommand{\slashint}{\mathop{\unicode{x2A0D}}\limits}}
+\CustomizeMathJax{\let\slashintop\slashint}
+
+\CustomizeMathJax{\let\overgroup\overparen}
+\CustomizeMathJax{\let\wideparen\overparen}
+\CustomizeMathJax{\let\widearc\overparen}
+\CustomizeMathJax{\let\wideOarc\overrightarrow}
+\CustomizeMathJax{\newcommand{\widering}[1]{\stackrel{\unicode{x2218}}{\overgroup{#1}}}}
+
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</fourier>
+% \fi
+%
+%
+%
+%
+% \iffalse
%<*framed>
% \fi
@@ -51911,8 +56410,201 @@
%
%
%
+% \iffalse
+%<*fvextra>
+% \fi
%
+% \part{lwarp-fvextra.sty}
+%
+% \section{fvextra}
+%
+% \credits{Geoffrey M. Poore}
+%
+% \DescribePackage{fvextra}
+% \pkg{fvextra} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.892}{2020/10/05}{\pkg{fvextra}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{fvextra}[2019/02/04]
+% \end{macrocode}
+%
+% Ignored are \optn{highlight},
+% \optn{showtabs}, \optn{obeytabs}, \optn{tab}, \optn{tabcolor}.
+% Also ignored are all options regarding line breaking
+% except \optn{breaklines}, which is emulated as true.
+%
+% \optn{tabsize} is honored.
+%
+% If line numbers on the right side are used along with \optn{breaklines},
+% the line numbers will not be aligned.
+% \begin{macrocode}
+
+\define at booleankey{FV}{obeytabs}%
+% {\let\FV at ObeyTabsInit\FV@@ObeyTabsInit}%
+ {\let\FV at ObeyTabsInit\relax}
+ {\let\FV at ObeyTabsInit\relax}
+
+\define at key{FV}{tabcolor}%
+ {}
+
+\define at key{FV}{tab}{}
+
+\define at booleankey{FV}{showtabs}%
+% {\def\FV at TabChar{\FV at TabColor{\FancyVerbTab}}}%
+ {\let\FV at TabChar\relax}
+ {\let\FV at TabChar\relax}
+
+\newbool{LWR at FV@breaklines}
+
+\define at booleankey{FV}{breaklines}%
+ {\FV at BreakLinesfalse
+ \booltrue{LWR at FV@breaklines}
+ \let\FV at ListProcessLine\FV at ListProcessLine@NoBreak}
+ {\FV at BreakLinesfalse
+ \boolfalse{LWR at FV@breaklines}
+ \let\FV at ListProcessLine\FV at ListProcessLine@NoBreak}
+% \fvset{breaklines}
+
+\define at key{FV}{breakanywheresymbolpre}{\def\FancyVerbBreakAnywhereSymbolPre{}}
+\fvset{breakanywheresymbolpre={}}
+
+\define at key{FV}{breakanywheresymbolpost}{\def\FancyVerbBreakAnywhereSymbolPost{}}
+\fvset{breakanywheresymbolpost={}}
+
+\define at key{FV}{breakbeforesymbolpre}{\def\FancyVerbBreakBeforeSymbolPre{}}
+\fvset{breakbeforesymbolpre={}}
+
+\define at key{FV}{breakbeforesymbolpost}{\def\FancyVerbBreakBeforeSymbolPost{}}
+\fvset{breakbeforesymbolpost={}}
+
+\define at key{FV}{breakaftersymbolpre}{\def\FancyVerbBreakAfterSymbolPre{}}
+\fvset{breakaftersymbolpre={}}
+
+\define at key{FV}{breakaftersymbolpost}{\def\FancyVerbBreakAfterSymbolPost{}}
+\fvset{breakaftersymbolpost={}}
+
+\define at key{FV}{breaksymbolleft}{\def\FancyVerbBreakSymbolLeft{}}
+
+\define at key{FV}{breaksymbol}{\fvset{breaksymbolleft={}}}
+
+\fvset{breaksymbolleft={}}
+
+\define at key{FV}{breaksymbolright}{\def\FancyVerbBreakSymbolRight{}}
+\fvset{breaksymbolright={}}
+
+\def\FV at ListProcessLine@NoBreak#1{%
+% \hbox to \hsize{%
+% \kern\leftmargin
+% \hbox to \linewidth{%
+ \FV at LeftListNumber%
+ \FV at LeftListFrame%
+ \FancyVerbFormatLine{%
+ \FancyVerbHighlightLine{%
+ \FV at ObeyTabs{\FancyVerbFormatText{#1}}}}%\hss
+ \FV at RightListFrame%
+ \FV at RightListNumber%
+% }%
+% \hss}%
+\null\par% lwarp
+}
+
+
+\newcommand*{\LWR at FV@linethensep}{%
+ \ifbool{LWR at FV@breaklines}%
+ {\theFancyVerbLine\kern\FV at NumberSep}%
+ {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}%
+}
+
+\newcommand*{\LWR at FV@septhenline}{%
+ \ifbool{LWR at FV@breaklines}%
+ {\kern\FV at NumberSep\theFancyVerbLine}%
+ {\hbox to\z@{\kern\FV at NumberSep\theFancyVerbLine\hss}}%
+}
+
+\xpatchcmd{\FV at Numbers@left}
+ {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+ {\LWR at FV@linethensep}
+ {}
+ {\LWR at patcherror{fvextra}{FV at Numbers@left A}}
+
+\xpatchcmd{\FV at Numbers@left}
+ {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+ {\LWR at FV@linethensep}
+ {}
+ {\LWR at patcherror{fvextra}{FV at Numbers@left B}}
+
+\xpatchcmd{\FV at Numbers@left}
+ {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+ {\LWR at FV@linethensep}
+ {}
+ {\LWR at patcherror{fvextra}{FV at Numbers@left C}}
+
+\xpatchcmd{\FV at Numbers@right}
+ {\hbox to\z@{\kern\FV at NumberSep\theFancyVerbLine\hss}}
+ {\LWR at FV@septhenline}
+ {}
+ {\LWR at patcherror{fvextra}{FV at Numbers@right A}}
+
+\xpatchcmd{\FV at Numbers@right}
+ {\hbox to\z@{\kern\FV at NumberSep\theFancyVerbLine\hss}}
+ {\LWR at FV@septhenline}
+ {}
+ {\LWR at patcherror{fvextra}{FV at Numbers@right B}}
+
+\xpatchcmd{\FV at Numbers@right}
+ {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+ {\LWR at FV@linethensep}
+ {}
+ {\LWR at patcherror{fvextra}{FV at Numbers@right C}}
+
+\xpatchcmd{\FV at Numbers@both}
+ {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+ {\LWR at FV@linethensep}
+ {}
+ {\LWR at patcherror{fvextra}{FV at Numbers@both A}}
+
+\xpatchcmd{\FV at Numbers@both}
+ {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+ {\LWR at FV@linethensep}
+ {}
+ {\LWR at patcherror{fvextra}{FV at Numbers@both B}}
+
+\xpatchcmd{\FV at Numbers@both}
+ {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+ {\LWR at FV@linethensep}
+ {}
+ {\LWR at patcherror{fvextra}{FV at Numbers@both C}}
+
+\xpatchcmd{\FV at Numbers@both}
+ {\hbox to\z@{\kern\FV at NumberSep\theFancyVerbLine\hss}}
+ {\LWR at FV@septhenline}
+ {}
+ {\LWR at patcherror{fvextra}{FV at Numbers@both D}}
+
+\xpatchcmd{\FV at Numbers@both}
+ {\hbox to\z@{\kern\FV at NumberSep\theFancyVerbLine\hss}}
+ {\LWR at FV@septhenline}
+ {}
+ {\LWR at patcherror{fvextra}{FV at Numbers@both E}}
+
+\xpatchcmd{\FV at Numbers@both}
+ {\hbox to\z@{\hss\theFancyVerbLine\kern\FV at NumberSep}}
+ {\LWR at FV@linethensep}
+ {}
+ {\LWR at patcherror{fvextra}{FV at Numbers@both F}}
+% \end{macrocode}
+%
% \iffalse
+%</fvextra>
+% \fi
+%
+%
+%
+%
+% \iffalse
%<*fwlw>
% \fi
%
@@ -52132,6 +56824,75 @@
%
%
% \iffalse
+%<*gindex>
+% \fi
+%
+% \part{lwarp-gindex.sty}
+%
+% \section{gindex}
+%
+% \credits{Javier Bezos}
+%
+% \DescribePackage{gindex}
+% \pkg{gindex} is patched for use by \pkg{lwarp}.
+%
+% See \cref{sec:indexsetup}.
+%
+% \changes{v0.88}{2020/07/16}{\pkg{gindex}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{gindex}[2019/10/07]
+% \end{macrocode}
+%
+% Set the index page and range separators.
+% These are set \cs{AtBeginDocument} to allow the user to change them.
+% They are then protected so that the \pkg{lwarp} core looks for the
+% tokens instead of their expanded contents, since the \filenm{*.ind}
+% files will contain \cs{indexpagessep} and \cs{indexrangesep} instead of
+% their literal contents.
+% Finally, \pkg{lwarp} is told of the \pkg{gindex} macros.
+% \begin{macrocode}
+\AtBeginDocument{
+ \robustify{\indexpagessep}
+ \robustify{\indexrangesep}
+ \renewcommand*{\IndexPageSeparator}{\indexpagessep}
+ \renewcommand*{\IndexRangeSeparator}{\indexrangesep}
+}
+% \end{macrocode}
+%
+% \cs{hyperindexref} is added:
+% \begin{macrocode}
+\def\addindexitem#1#2{%
+ \indexflushitem
+ \gix at getspecial#1\indexspecial\indexspecial\@@\indexitem{\hyperindexref{#2}}}
+
+\def\addindexsubitem#1#2{%
+ \stepcounter{indexsubitems}%
+ \gix at getspecial#1\indexspecial\indexspecial\@@\indexsubitem{\hyperindexref{#2}}}
+
+\def\addindexsubsubitem#1#2{%
+ \gix at getspecial#1\indexspecial\indexspecial\@@\indexsubsubitem{\hyperindexref{#2}}}
+% \end{macrocode}
+%
+% Uses a \element{div} of class \attribute{indexheading}:
+% \begin{macrocode}
+\renewcommand\indexheading[1]{%
+ \begin{BlockClass}{indexheading}
+ \MakeUppercase{#1}%
+ \end{BlockClass}
+}
+% \end{macrocode}
+%
+% \iffalse
+%</gindex>
+% \fi
+%
+%
+%
+%
+% \iffalse
%<*gloss>
% \fi
%
@@ -52207,7 +56968,7 @@
% \begin{macrocode}
\renewcommand*{\@p at glossarysection}[2]{%
\glsclearpage
- \phantomsection
+ \LWR at phantomsection
\ifdefempty\@@glossarysecstar
{%
\csname\@@glossarysec\endcsname{#2}%
@@ -52320,10 +57081,11 @@
% \changes{v0.40}{2017/09/07}{\pkg{graphics}: Moved out of the \pkg{lwarp} core.}
% \changes{v0.40}{2017/09/07}{\pkg{graphics}: Restores \cs{includegraphics}
% and \cs{DeclareGraphicsExtensions} in a \env{lateximage}.}
+% \changes{v0.893}{2020/11/26}{\pkg{graphics}: Updated date to v1.4c.}
%
% \codehtml
% \begin{macrocode}
-\LWR at ProvidesPackagePass{graphics}[2017/06/25]
+\LWR at ProvidesPackagePass{graphics}[2020/08/30]
% \end{macrocode}
@@ -52489,9 +57251,8 @@
\define at key{igraph}{scale}{%
\ifthenelse{\equal{#1}{1}}{}{% must expand #1
\PackageWarning{lwarp}{%
- It is recommended to use\MessageBreak
- [width=xx\protect\linewidth]\MessageBreak
- instead of [scale=yy],%
+ It is recommended to use ``[width=xx\protect\linewidth]''\MessageBreak
+ instead of ``[scale=yy]'',%
}%
}%
\renewcommand*{\LWR at igxscale}{#1}%
@@ -52732,10 +57493,11 @@
% For the \HTML\ reference, add the graphicspath, filename, extension,
% alt tag, style, and class.
% \changes{v0.79}{2019/12/09}{\pkg{graphics}: Factored from \cs{LWR at includegraphicsb}.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\newcommand*{\LWR at ig@htmltag}{%
img\LWR at indentHTML%
- src="%
+ src=\textquotedbl%
% \end{macrocode}
% \changes{v0.62}{2018/10/27}{\pkg{graphics}: Fix: Filename expansion.}
% \begin{macrocode}
@@ -52742,9 +57504,10 @@
\detokenize\expandafter{\LWR at parsedfilename}%
% \end{macrocode}
% \begin{macrocode}
- "\LWR at indentHTML%
+ \textquotedbl\LWR at indentHTML%
% \end{macrocode}
% Only include a style tag if a width, height, angle, or scale was given:
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\ifthenelse{
\NOT\equal{\LWR at igwidthstyle}{} \OR
@@ -52755,7 +57518,7 @@
\NOT\equal{\LWR at igyscale}{1}
}%
{%
- style="\LWR at indentHTML
+ style=\textquotedbl\LWR at indentHTML
\ifthenelse{\NOT\equal{\LWR at igwidthstyle}{}}%
{\LWR at igwidthstyle;\LWR at indentHTML}{}%
\ifthenelse{\NOT\equal{\LWR at igheightstyle}{}}%
@@ -52787,14 +57550,15 @@
\ifthenelse{\NOT\equal{\LWR at opacity}{1}}%
{opacity:\LWR at opacity;\LWR at indentHTML}{}%
%
- "\LWR at indentHTML%
+ \textquotedbl\LWR at indentHTML%
}{}%
% \end{macrocode}
% Set the class and alt tag:
% \changes{v0.65}{2018/12/19}{\pkg{graphics}: Added \cs{includegraphics} \attribute{alt} key.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
- class="\LWR at igclass"\LWR at indentHTML%
- alt="\AltTextOpen\LWR at igalt\AltTextClose" \LWR at orignewline%
+ class=\textquotedbl\LWR at igclass\textquotedbl\LWR at indentHTML%
+ alt=\textquotedbl\AltTextOpen\LWR at igalt\AltTextClose\textquotedbl\ \LWR at orignewline%
}% end of image tags
% \end{macrocode}
% \end{noindmacro}
@@ -52816,7 +57580,7 @@
% \changes{v0.18}{2016/05/17}{\pkg{graphics}: Fix: \cs{linewidth}, \cs{textwidth}, \cs{textheight}
% inside a minipage.}
% \changes{v0.18}{2016/05/17}{\pkg{graphics}: em, ex, \%, px dimensions preserved.}
-% \changes{v0.18}{2016/05/17}{\pkg{graphics}: Add: svgz file extension.}
+% \changes{v0.18}{2016/05/17}{\pkg{graphics}: Add: \SVG\ file extension.}
% \changes{v0.20}{2016/08/20}{\pkg{graphics}: Fix: \cs{linewidth} in a floatrow.}
% \changes{v0.20}{2017/01/12}{\pkg{graphics}: Fix: Expands filename.}
% \changes{v0.28}{2017/04/12}{\pkg{graphics}: Adapts to \pkg{graphics} syntax.}
@@ -52893,9 +57657,18 @@
\Ginclude at graphics{\detokenize\expandafter{\LWR at tempone}}%
\endgroup%
\filename at parse{\LWR at parsedfilename}%
+% \end{macrocode}
+%
+% Remove doubled |//| in the directory path,
+% from the 2020/10/01 \LaTeX\ kernel change.
+% \changes{v0.892}{2020/10/01}{\pkg{graphics}: Fix path from kernel change.}
+% \begin{macrocode}
+ \StrSubstitute{\LWR at parsedfilename}{//}{/}[\LWR at parsedfilename]%
+% \end{macrocode}
+% \begin{macrocode}
\LWR at traceinfo{LWR at parsedfilename is \LWR at parsedfilename}%
-% \LWR at sanitize{\LWR at parsedfilename}%
% \end{macrocode}
+% ^^A \LWR at sanitize{\LWR at parsedfilename}%
%
% If formatting for a word processor, find and set the actual image size,
% without rotation, using \PDF\ instead of \SVG\ to find the original bounding box:
@@ -52907,7 +57680,7 @@
% alt tag, style, and class:
% \begin{macrocode}
\LWR at traceinfo{LWR at includegraphicsb: about to create href}%
- \href{\LWR at parsedfilename}%
+ \LWR at href{\LWR at parsedfilename}%
{% start of href
\LWR at traceinfo{LWR at includegraphicsb: about to LWR at htmltag}%
\LWR at htmltag{\LWR at ig@htmltag}%
@@ -53033,10 +57806,11 @@
% \end{macrocode}
% Select |inline-block| so that \HTML\ will transform this span:
% \changes{v0.66}{2019/02/02}{Improved \HTML\ formatting.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\LWR at htmltagc{%
span\LWR at indentHTML
- style="\LWR at indentHTML
+ style=\textquotedbl\LWR at indentHTML
display: inline-block;\LWR at indentHTML
% \end{macrocode}
% If an origin was given, translate and print the origin information:
@@ -53049,7 +57823,7 @@
% \begin{macrocode}
\LWR at rotstyle{-ms-}{#2}\LWR at indentHTML
\LWR at rotstyle{-webkit-}{#2}\LWR at indentHTML
- \LWR at rotstyle{}{#2}"\LWR at orignewline%
+ \LWR at rotstyle{}{#2}\textquotedbl\LWR at orignewline%
}\LWR at orignewline%
% \end{macrocode}
% Print the text to be rotated:
@@ -53085,10 +57859,11 @@
% \end{macrocode}
% Select |inline-block| so that \HTML\ will transform this span:
% \changes{v0.66}{2019/02/02}{Improved \HTML\ formatting.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\LWR at htmltagc{%
span\LWR at indentHTML
- style="\LWR at indentHTML
+ style=\textquotedbl\LWR at indentHTML
display: inline-block;\LWR at indentHTML
% \end{macrocode}
% Print the scaling information:
@@ -53096,7 +57871,7 @@
\LWR at scalestyle{-ms-}{#1}{\IfNoValueTF{#2}{#1}{#2}}\LWR at indentHTML
\LWR at scalestyle{-webkit-}{#1}{\IfNoValueTF{#2}{#1}{#2}}\LWR at indentHTML
\LWR at scalestyle{}{#1}{\IfNoValueTF{#2}{#1}{#2}}
- "\LWR at orignewline
+ \textquotedbl\LWR at orignewline
}\LWR at orignewline%
% \end{macrocode}
% Print the text to be scaled:
@@ -53126,7 +57901,7 @@
\AtBeginDocument{
\newcommand{\LWR at HTML@reflectbox}[1]{%
-\scalebox{-1}[1]{#1}%
+ \scalebox{-1}[1]{#1}%
}% \reflectbox
\LWR at formatted{reflectbox}
@@ -53146,7 +57921,7 @@
\AtBeginDocument{
\NewDocumentCommand{\LWR at HTML@resizebox}{s m m m}{%
-#4%
+ #4%
}
\LWR at formatted{resizebox}
@@ -53182,10 +57957,11 @@
% \pkg{lwarp-graphics} handles the syntax of either \pkg{graphics} or \pkg{graphicx}.
%
% \changes{v0.40}{2017/09/07}{\pkg{graphicx}: Moved out of the \pkg{lwarp} core.}
+% \changes{v0.893}{2020/11/26}{\pkg{graphicx}: Updated date to v1.2b.}
%
% \codehtml
% \begin{macrocode}
-\LWR at ProvidesPackagePass{graphicx}[2017/06/01]
+\LWR at ProvidesPackagePass{graphicx}[2020/09/09]
% \end{macrocode}
% \iffalse
@@ -53355,6 +58131,7 @@
%
% \changes{v0.44}{2017/11/15}{\pkg{hang}: Added.}
% \changes{v0.47}{2018/01/26}{\pkg{hang}: Fix: Line wrap at \HTML\ hyphen.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
%
% \codehtml
%
@@ -53389,7 +58166,7 @@
\renewcommand*{\LWR at printcloselist}{\LWR at printcloseitemize}%
\renewcommand*{\LWR at printopenlist}{%
\LWR at findhangingleftmargin%
- ul style="%
+ ul style=\textquotedbl%
\LWR at print@mbox{list-style-type:none;} % extra space
\LWR at print@mbox{%
margin-left:\LWR at printlength{\LWR at templengthone}%
@@ -53397,7 +58174,7 @@
\LWR at print@mbox{%
text-indent:-\LWR at printlength{\hangingindent}%
}%
- "%
+ \textquotedbl%
}%
\let\item\LWR at itemizeitem%
\list{}{}%
@@ -53512,6 +58289,99 @@
%
%
% \iffalse
+%<*hepunits>
+% \fi
+%
+% \part{lwarp-hepunits.sty}
+%
+% \section{hepunits}
+%
+% \credits{Andy Buckley}
+%
+% \DescribePackage{hepunits}
+% \pkg{hepunits} is used as-is, and emulated for \brand{MathJax}.
+%
+% \changes{v0.89}{2020/07/23}{\pkg{hepunits}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{hepunits}[2020/04/10]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\begin{warpMathJax}
+\LWR at infoprocessingmathjax{hepunits}
+
+\ifx\@HEPopt at sicmds\@yes
+\CustomizeMathJax{\newcommand{\micron}{\micro\metre}}
+\CustomizeMathJax{\newcommand{\mrad}{\milli\radian}}
+\fi
+
+\CustomizeMathJax{\newcommand{\gauss}{\mathrm{G}}}
+
+\CustomizeMathJax{\newcommand{\invcmsq}{\centi\metre\tothe{-2}}}
+\CustomizeMathJax{\newcommand{\invcmsqpersecond}{\invcmsq\second\tothe{-1}}}
+\CustomizeMathJax{\newcommand{\invcmsqpersec}{\invcmsqpersecond}}
+
+%% (Inverse) cross-sections
+\CustomizeMathJax{\newcommand{\invbarn}{\barn\tothe{-1}}}
+
+\ifx\@HEPopt at noprefixcmds\@empty
+\CustomizeMathJax{\newcommand{\millibarn}{\milli\barn}}
+\CustomizeMathJax{\newcommand{\microbarn}{\micro\barn}}
+\CustomizeMathJax{\newcommand{\nanobarn}{\nano\barn}}
+\CustomizeMathJax{\newcommand{\picobarn}{\pico\barn}}
+\CustomizeMathJax{\newcommand{\femtobarn}{\femto\barn}}
+\CustomizeMathJax{\newcommand{\attobarn}{\atto\barn}}
+\CustomizeMathJax{\newcommand{\zeptobarn}{\zepto\barn}}
+\CustomizeMathJax{\newcommand{\yoctobarn}{\yocto\barn}}
+\CustomizeMathJax{\newcommand{\invnanobarn}{\nano\invbarn}}
+\CustomizeMathJax{\newcommand{\invpicobarn}{\pico\invbarn}}
+\CustomizeMathJax{\newcommand{\invfemtobarn}{\femto\invbarn}}
+\CustomizeMathJax{\newcommand{\invattobarn}{\atto\invbarn}}
+\CustomizeMathJax{\newcommand{\invzeptobarn}{\zepto\invbarn}}
+\CustomizeMathJax{\newcommand{\invyoctobarn}{\yocto\invbarn}}
+\CustomizeMathJax{\newcommand{\invnb}{\invnanobarn}}
+\CustomizeMathJax{\newcommand{\invpb}{\invpicobarn}}
+\CustomizeMathJax{\newcommand{\invfb}{\invfemtobarn}}
+\CustomizeMathJax{\newcommand{\invab}{\invattobarn}}
+\CustomizeMathJax{\newcommand{\invzb}{\invzeptobarn}}
+\CustomizeMathJax{\newcommand{\invyb}{\invyoctobarn}}
+\fi
+
+\CustomizeMathJax{\newcommand{\electronvoltc}{\electronvolt\per\mathit{c}}}
+\CustomizeMathJax{\newcommand{\electronvoltcsq}{\electronvolt\per\mathit{c}\squared}}
+\CustomizeMathJax{\let\eVc\electronvoltc}
+\CustomizeMathJax{\let\eVcsq\electronvoltcsq}
+
+\ifx\@HEPopt at noprefixcmds\@empty
+\CustomizeMathJax{\newcommand{\meV}{\milli\eV}}
+\CustomizeMathJax{\newcommand{\keV}{\kilo\eV}}
+\CustomizeMathJax{\newcommand{\MeV}{\mega\eV}}
+\CustomizeMathJax{\newcommand{\GeV}{\giga\eV}}
+\CustomizeMathJax{\newcommand{\TeV}{\tera\eV}}
+\CustomizeMathJax{\newcommand{\meVc}{\milli\eVc}}
+\CustomizeMathJax{\newcommand{\keVc}{\kilo\eVc}}
+\CustomizeMathJax{\newcommand{\MeVc}{\mega\eVc}}
+\CustomizeMathJax{\newcommand{\GeVc}{\giga\eVc}}
+\CustomizeMathJax{\newcommand{\TeVc}{\tera\eVc}}
+\CustomizeMathJax{\newcommand{\meVcsq}{\milli\eVcsq}}
+\CustomizeMathJax{\newcommand{\keVcsq}{\kilo\eVcsq}}
+\CustomizeMathJax{\newcommand{\MeVcsq}{\mega\eVcsq}}
+\CustomizeMathJax{\newcommand{\GeVcsq}{\giga\eVcsq}}
+\CustomizeMathJax{\newcommand{\TeVcsq}{\tera\eVcsq}}
+\fi
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</hepunits>
+% \fi
+%
+%
+%
+% \iffalse
%<*hhline>
% \fi
%
@@ -53564,6 +58434,62 @@
%
%
% \iffalse
+%<*hhtensor>
+% \fi
+%
+% \part{lwarp-hhtensor.sty}
+%
+% \section{hhtensor}
+%
+% \credits{Harald Harders}
+%
+% \DescribePackage{hhtensor}
+% \pkg{hhtensor} is used as-is, and emulated for \brand{MathJax}.
+%
+% \changes{v0.88}{2020/07/23}{\pkg{hhtensor}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{hhtensor}[2011/12/29]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\begin{warpMathJax}
+\iftensor at bold
+ \CustomizeMathJax{\newcommand{\vec}[1]{\boldsymbol{#1}}}
+ \CustomizeMathJax{\newcommand{\matr}[1]{\boldsymbol{#1}}}
+ \CustomizeMathJax{\newcommand{\tens}[2]{\boldsymbol{#1}}}
+\else
+ \iftensor at uline
+ \CustomizeMathJax{\newcommand{\vec}[1]{\ushort{#1}}}
+ \CustomizeMathJax{\newcommand{\matr}[1]{\ushortd{#1}}}
+ \CustomizeMathJax{\newcommand{\tens}[2]{
+ \underset{
+ \raise{.5ex}{\underset{#2}{\sim}}
+ }{#1}
+ }}
+ \else
+ \CustomizeMathJax{\newcommand{\matr}[1]{\vec{\vec{#1}}}}
+ \CustomizeMathJax{\newcommand{\tens}[2]{
+ \underset{
+ \raise{.5ex}{\underset{#2}{\sim}}
+ }{#1}
+ }}
+ \fi
+\fi
+\CustomizeMathJax{\newcommand{\dcdot}{\mathrel{\cdot\mkern 0.0mu \cdot}}}
+\CustomizeMathJax{\newcommand{\trans}{{}^{\mathrm{T}}}}
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</hhtensor>
+% \fi
+%
+%
+%
+% \iffalse
%<*hypbmsec>
% \fi
%
@@ -53684,7 +58610,7 @@
% \section{hyperref}
%
-% \credits{Sebastian Rahtz, Heiko Oberdiek}
+% \credits{Sebastian Rahtz, Heiko Oberdiek, The \LaTeX3 Project}
%
% \DescribePackage{hyperref}
% \pkg{hyperref} is emulated.
@@ -53697,22 +58623,277 @@
% \ProvidesPackage{lwarp-#1-#2}% not allowed
\PackageInfo{lwarp}{%
Using the lwarp HTML version of package `hyperref',\MessageBreak
-and discarding options.\MessageBreak
+and discarding options except backref, pagebackref.\MessageBreak
(Not using \protect\ProvidesPackage, so that other packages\MessageBreak
do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
+% \end{macrocode}
+%
+%
+% \changes{v0.891}{2020/09/05}{\pkg{hyperref}: Added \optn{backref}, \optn{pagebackref}.}
+% \begin{macrocode}
+\SetupKeyvalOptions{family=LWR at hyperref,prefix=LWR at hyperref@}
-\DeclareOption*{}
+\newcommand{\hypersetup}[1]{\setkeys{LWR at hyperref}{#1}}
+
+\define at key{LWR at hyperref}{a4paper}[]{}
+\define at key{LWR at hyperref}{a5paper}[]{}
+\define at key{LWR at hyperref}{b5paper}[]{}
+\define at key{LWR at hyperref}{letterpaper}[]{}
+\define at key{LWR at hyperref}{legalpaper}[]{}
+\define at key{LWR at hyperref}{executivepaper}[]{}
+\define at key{LWR at hyperref}{implicit}[]{}
+\define at key{LWR at hyperref}{draft}[]{}
+\define at key{LWR at hyperref}{final}[]{}
+\define at key{LWR at hyperref}{setpagesize}[]{}
+\define at key{LWR at hyperref}{debug}[]{}
+\define at key{LWR at hyperref}{linktocpage}[]{}
+\define at key{LWR at hyperref}{linktoc}[]{}
+\define at key{LWR at hyperref}{extension}[]{}
+\define at key{LWR at hyperref}{verbose}[]{}
+\define at key{LWR at hyperref}{typexml}[]{}
+\define at key{LWR at hyperref}{raiselinks}[]{}
+\define at key{LWR at hyperref}{breaklinks}[]{}
+\define at key{LWR at hyperref}{localanchorname}[]{}
+\define at key{LWR at hyperref}{pageanchor}[]{}
+\define at key{LWR at hyperref}{plainpages}[]{}
+\define at key{LWR at hyperref}{naturalnames}[]{}
+\define at key{LWR at hyperref}{hypertexnames}[]{}
+\define at key{LWR at hyperref}{nesting}[]{}
+\define at key{LWR at hyperref}{destlabel}[]{}
+\define at key{LWR at hyperref}{unicode}[]{}
+\define at key{LWR at hyperref}{pdfencoding}[]{}
+\define at key{LWR at hyperref}{psdextra}[]{}
+\define at key{LWR at hyperref}{pdfversion}[]{}
+\define at key{LWR at hyperref}{dvipdfmx-outline-open}[]{}
+\define at key{LWR at hyperref}{driverfallback}[]{}
+\define at key{LWR at hyperref}{customdriver}[]{}
+\define at key{LWR at hyperref}{hyperfigures}[]{}
+\define at key{LWR at hyperref}{hyperfootnotes}[]{}
+\define at key{LWR at hyperref}{hyperindex}[]{}
+\define at key{LWR at hyperref}{encap}[]{}
+\define at key{LWR at hyperref}{colorlinks}[]{}
+\define at key{LWR at hyperref}{ocgcolorlinks}[]{}
+\define at key{LWR at hyperref}{frenchlinks}[]{}
+\define at key{LWR at hyperref}{bookmarks}[]{}
+\define at key{LWR at hyperref}{bookmarksopen}[]{}
+\define at key{LWR at hyperref}{bookmarksdepth}[]{}
+\define at key{LWR at hyperref}{bookmarksopenlevel}[]{}
+\define at key{LWR at hyperref}{bookmarkstype}[]{}
+\define at key{LWR at hyperref}{bookmarksnumbered}[]{}
+\define at key{LWR at hyperref}{CJKbookmarks}[]{}
+\define at key{LWR at hyperref}{link}[]{}
+\define at key{LWR at hyperref}{anchor}[]{}
+\define at key{LWR at hyperref}{cite}[]{}
+\define at key{LWR at hyperref}{file}[]{}
+\define at key{LWR at hyperref}{url}[]{}
+\define at key{LWR at hyperref}{menu}[]{}
+\define at key{LWR at hyperref}{run}[]{}
+\define at key{LWR at hyperref}{linkbordercolor}[]{}
+\define at key{LWR at hyperref}{anchorbordercolor}[]{}
+\define at key{LWR at hyperref}{citebordercolor}[]{}
+\define at key{LWR at hyperref}{filebordercolor}[]{}
+\define at key{LWR at hyperref}{urlbordercolor}[]{}
+\define at key{LWR at hyperref}{menubordercolor}[]{}
+\define at key{LWR at hyperref}{runbordercolor}[]{}
+\define at key{LWR at hyperref}{pagecolor}[]{}
+\define at key{LWR at hyperref}{baseurl}[]{}
+\define at key{LWR at hyperref}{linkfileprefix}[]{}
+\define at key{LWR at hyperref}{pdfpagetransition}[]{}
+\define at key{LWR at hyperref}{pdfpageduration}[]{}
+\define at key{LWR at hyperref}{pdfpagehidden}[]{}
+\define at key{LWR at hyperref}{pagebordercolor}[]{}
+\define at key{LWR at hyperref}{allbordercolors}[]{}
+\define at key{LWR at hyperref}{pdfhighlight}[]{}
+\define at key{LWR at hyperref}{pdfborder}[]{}
+\define at key{LWR at hyperref}{pdfborderstyle}[]{}
+\define at key{LWR at hyperref}{pdfprintpagerange}[]{}
+\define at key{LWR at hyperref}{pdfusetitle}[]{}
+\define at key{LWR at hyperref}{pdftitle}[]{}
+\define at key{LWR at hyperref}{pdfauthor}[]{}
+\define at key{LWR at hyperref}{pdfproducer}[]{}
+\define at key{LWR at hyperref}{pdfcreator}[]{}
+\define at key{LWR at hyperref}{addtopdfcreator}[]{}
+\define at key{LWR at hyperref}{pdfcreationdate}[]{}
+\define at key{LWR at hyperref}{pdfmoddate}[]{}
+\define at key{LWR at hyperref}{pdfsubject}[]{}
+\define at key{LWR at hyperref}{pdfkeywords}[]{}
+\define at key{LWR at hyperref}{pdftrapped}[]{}
+\define at key{LWR at hyperref}{pdfinfo}[]{}
+\define at key{LWR at hyperref}{pdfview}[]{}
+\define at key{LWR at hyperref}{pdflinkmargin}[]{}
+\define at key{LWR at hyperref}{pdfstartpage}[]{}
+\define at key{LWR at hyperref}{pdfstartview}[]{}
+\define at key{LWR at hyperref}{pdfremotestartview}[]{}
+\define at key{LWR at hyperref}{pdfpagescrop}[]{}
+\define at key{LWR at hyperref}{pdftoolbar}[]{}
+\define at key{LWR at hyperref}{pdfmenubar}[]{}
+\define at key{LWR at hyperref}{pdfwindowui}[]{}
+\define at key{LWR at hyperref}{pdffitwindow}[]{}
+\define at key{LWR at hyperref}{pdfcenterwindow}[]{}
+\define at key{LWR at hyperref}{pdfdisplaydoctitle}[]{}
+\define at key{LWR at hyperref}{pdfa}[]{}
+\define at key{LWR at hyperref}{pdfnewwindow}[]{}
+\define at key{LWR at hyperref}{pdflang}[]{}
+\define at key{LWR at hyperref}{pdfpagelabels}[]{}
+\define at key{LWR at hyperref}{pdfescapeform}[]{}
+\define at key{LWR at hyperref}{english}[]{}
+\define at key{LWR at hyperref}{UKenglish}[]{}
+\define at key{LWR at hyperref}{british}[]{}
+\define at key{LWR at hyperref}{USenglish}[]{}
+\define at key{LWR at hyperref}{american}[]{}
+\define at key{LWR at hyperref}{german}[]{}
+\define at key{LWR at hyperref}{austrian}[]{}
+\define at key{LWR at hyperref}{ngerman}[]{}
+\define at key{LWR at hyperref}{naustrian}[]{}
+\define at key{LWR at hyperref}{russian}[]{}
+\define at key{LWR at hyperref}{brazil}[]{}
+\define at key{LWR at hyperref}{brazilian}[]{}
+\define at key{LWR at hyperref}{portuguese}[]{}
+\define at key{LWR at hyperref}{spanish}[]{}
+\define at key{LWR at hyperref}{catalan}[]{}
+\define at key{LWR at hyperref}{afrikaans}[]{}
+\define at key{LWR at hyperref}{french}[]{}
+\define at key{LWR at hyperref}{frenchb}[]{}
+\define at key{LWR at hyperref}{francais}[]{}
+\define at key{LWR at hyperref}{acadian}[]{}
+\define at key{LWR at hyperref}{canadien}[]{}
+\define at key{LWR at hyperref}{italian}[]{}
+\define at key{LWR at hyperref}{magyar}[]{}
+\define at key{LWR at hyperref}{hungarian}[]{}
+\define at key{LWR at hyperref}{greek}[]{}
+\define at key{LWR at hyperref}{dutch}[]{}
+\define at key{LWR at hyperref}{tex4ht}[]{}
+\define at key{LWR at hyperref}{pdftex}[]{}
+\define at key{LWR at hyperref}{luatex}[]{}
+\define at key{LWR at hyperref}{nativepdf}[]{}
+\define at key{LWR at hyperref}{dvipdfm}[]{}
+\define at key{LWR at hyperref}{dvipdfmx}[]{}
+\define at key{LWR at hyperref}{xetex}[]{}
+\define at key{LWR at hyperref}{pdfmark}[]{}
+\define at key{LWR at hyperref}{dvips}[]{}
+\define at key{LWR at hyperref}{hypertex}[]{}
+\define at key{LWR at hyperref}{vtex}[]{}
+\define at key{LWR at hyperref}{vtexpdfmark}[]{}
+\define at key{LWR at hyperref}{dviwindo}[]{}
+\define at key{LWR at hyperref}{dvipsone}[]{}
+\define at key{LWR at hyperref}{textures}[]{}
+\define at key{LWR at hyperref}{latex2html}[]{}
+\define at key{LWR at hyperref}{ps2pdf}[]{}
+\define at key{LWR at hyperref}{vietnamese}[]{}
+\define at key{LWR at hyperref}{vietnam}[]{}
+\define at key{LWR at hyperref}{arabic}[]{}
+\define at key{LWR at hyperref}{hidelinks}[]{}
+\define at key{LWR at hyperref}{draft}[]{}
+\define at key{LWR at hyperref}{nolinks}[]{}
+\define at key{LWR at hyperref}{final}[]{}
+\define at key{LWR at hyperref}{pdfa}[]{}
+\define at key{LWR at hyperref}{pdfversion}[]{}
+\define at key{LWR at hyperref}{typexml}[]{}
+\define at key{LWR at hyperref}{tex4ht}[]{}
+\define at key{LWR at hyperref}{pdftex}[]{}
+\define at key{LWR at hyperref}{nativepdf}[]{}
+\define at key{LWR at hyperref}{dvipdfm}[]{}
+\define at key{LWR at hyperref}{dvipdfmx}[]{}
+\define at key{LWR at hyperref}{dvipdfmx-outline-open}[]{}
+\define at key{LWR at hyperref}{pdfmark}[]{}
+\define at key{LWR at hyperref}{dvips}[]{}
+\define at key{LWR at hyperref}{hypertex}[]{}
+\define at key{LWR at hyperref}{vtex}[]{}
+\define at key{LWR at hyperref}{vtexpdfmark}[]{}
+\define at key{LWR at hyperref}{dviwindo}[]{}
+\define at key{LWR at hyperref}{dvipsone}[]{}
+\define at key{LWR at hyperref}{textures}[]{}
+\define at key{LWR at hyperref}{latex2html}[]{}
+\define at key{LWR at hyperref}{ps2pdf}[]{}
+\define at key{LWR at hyperref}{xetex}[]{}
+\define at key{LWR at hyperref}{driverfallback}[]{}
+\define at key{LWR at hyperref}{customdriver}[]{}
+\define at key{LWR at hyperref}{pdfversion}[]{}
+\define at key{LWR at hyperref}{bookmarks}[]{}
+\define at key{LWR at hyperref}{ocgcolorlinks}[]{}
+\define at key{LWR at hyperref}{colorlinks}[]{}
+\define at key{LWR at hyperref}{frenchlinks}[]{}
+\define at key{LWR at hyperref}{backref}[]{}
+\define at key{LWR at hyperref}{pagebackref}[]{}
+\define at key{LWR at hyperref}{destlabel}[]{}
+\define at key{LWR at hyperref}{pdfpagescrop}[]{}
+\define at key{LWR at hyperref}{pdfpagemode}[]{}
+\define at key{LWR at hyperref}{pdfnonfullscreenpagemode}[]{}
+\define at key{LWR at hyperref}{pdfdirection}[]{}
+\define at key{LWR at hyperref}{pdfviewarea}[]{}
+\define at key{LWR at hyperref}{pdfviewclip}[]{}
+\define at key{LWR at hyperref}{pdfprintarea}[]{}
+\define at key{LWR at hyperref}{pdfprintclip}[]{}
+\define at key{LWR at hyperref}{pdfprintscaling}[]{}
+\define at key{LWR at hyperref}{pdfduplex}[]{}
+\define at key{LWR at hyperref}{pdfpicktraybypdfsize}[]{}
+\define at key{LWR at hyperref}{pdfprintpagerange}[]{}
+\define at key{LWR at hyperref}{pdfnumcopies}[]{}
+\define at key{LWR at hyperref}{pdfstartview}[]{}
+\define at key{LWR at hyperref}{pdfstartpage}[]{}
+\define at key{LWR at hyperref}{pdftoolbar}[]{}
+\define at key{LWR at hyperref}{pdfmenubar}[]{}
+\define at key{LWR at hyperref}{pdfwindowui}[]{}
+\define at key{LWR at hyperref}{pdffitwindow}[]{}
+\define at key{LWR at hyperref}{pdfcenterwindow}[]{}
+\define at key{LWR at hyperref}{pdfdisplaydoctitle}[]{}
+\define at key{LWR at hyperref}{pdfpagelayout}[]{}
+\define at key{LWR at hyperref}{pdflang}[]{}
+\define at key{LWR at hyperref}{baseurl}[]{}
+\define at key{LWR at hyperref}{pdfusetitle}[]{}
+\define at key{LWR at hyperref}{pdfpagelabels}[]{}
+\define at key{LWR at hyperref}{hyperfootnotes}[]{}
+\define at key{LWR at hyperref}{hyperfigures}[]{}
+\define at key{LWR at hyperref}{hyperindex}[]{}
+\define at key{LWR at hyperref}{encap}[]{}
+\define at key{LWR at hyperref}{linkcolor}[]{}
+\define at key{LWR at hyperref}{anchorcolor}[]{}
+\define at key{LWR at hyperref}{citecolor}[]{}
+\define at key{LWR at hyperref}{filecolor}[]{}
+\define at key{LWR at hyperref}{urlcolor}[]{}
+\define at key{LWR at hyperref}{menucolor}[]{}
+\define at key{LWR at hyperref}{runcolor}[]{}
+\define at key{LWR at hyperref}{allcolors}[]{}
+
+\DeclareStringOption[false]{backref}[section]
+
+\DeclareBoolOption{pagebackref}
+
+\DeclareDefaultOption{}
+
+\ProcessKeyvalOptions*\relax
% \end{macrocode}
-% \changes{v0.68}{2019/02/28}{\pkg{hyperref}: Fix for options with braces.}
+%
+% Maybe load \pkg{backref}:
% \begin{macrocode}
-% \ProcessOptions\relax
-\let\ds@\@empty% from the original \ProcessOptions
-\edef\@curroptions{}% lwarp modification to \ProcessOptions
-\@process at ptions\relax% from the original \ProcessOptions
+\ifdefstring{\LWR at hyperref@backref}{section}
+ {\RequirePackage{backref}}
+ {}
+
+\ifdefstring{\LWR at hyperref@backref}{slide}
+ {\RequirePackage{backref}}
+ {}
+
+\ifdefstring{\LWR at hyperref@backref}{page}
+ {\RequirePackage{backref}}
+ {}
+
+\ifLWR at hyperref@pagebackref
+ \RequirePackage{backref}
+\fi
% \end{macrocode}
+%
+%
+% \changes{v0.86}{2020/05/07}{\pkg{hyperref}: Adjusted emulation.}
+% \begin{macrocode}
+\LetLtxMacro\href\LWR at href
+\LetLtxMacro\nolinkurl\LWR at nolinkurl
+\LetLtxMacro\url\LWR at url
+\LetLtxMacro\phantomsection\LWR at phantomsection
+% \end{macrocode}
+
% \begin{macrocode}
-\newcommand*{\hypersetup}[1]{}
\newcommand*{\hyperbaseurl}[1]{}
% \end{macrocode}
@@ -53725,12 +58906,17 @@
% \changes{v0.43}{2017/10/31}{\pkg{hyperref}: Made robust.}
% \changes{v0.45}{2017/12/29}{\pkg{hyperref}: Fix: Underscore in \URL.}
% \changes{v0.52}{2018/03/26}{\pkg{hyperref}: Fix: \progcode{\#}, \progcode{\%}, \progcode{\&}, \progcode{\~}, \progcode{\_} in \URL.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
\NewDocumentCommand{\LWR at hyperimageb}{m +m}{%
\LWR at ensuredoingapar%
\def\LWR at templink{#1}%
\@onelevel at sanitize\LWR at templink%
- \LWR at htmltag{img src="\LWR at templink" alt="#2" class="hyperimage"}%
+ \LWR at htmltag{%
+ img src=\textquotedbl\LWR at templink\textquotedbl\ %
+ alt=\textquotedbl#2\textquotedbl\ %
+ class=\textquotedbl{}hyperimage\textquotedbl%
+ }%
\LWR at ensuredoingapar%
\endgroup%
}
@@ -53754,7 +58940,7 @@
% \begin{macrocode}
\NewDocumentCommand{\LWR at hyperdefb}{m m +m}{%
\LWR at ensuredoingapar%
- \LWR at sublabel{#1.#2}%
+ \LWR at label@createtag{#1.#2}%
#3%
\endgroup%
}
@@ -53774,13 +58960,16 @@
% \changes{v0.45}{2018/01/02}{\pkg{hyperref}: Fix: Underscore in \URL.}
% \changes{v0.52}{2018/03/26}{\pkg{hyperref}: Fix: \progcode{\#}, \progcode{\%}, \progcode{\&}, \progcode{\~}, \progcode{\_} in \URL.}
% \changes{v0.57}{2018/06/05}{\pkg{subcaption}: Fix: \cs{subref}.}
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
%
% Creates an \HTML\ link to |URL#category.name| with the given text.
+%
+% To avoid nested links, \cs{ref} is temporarily redefined to the print version.
% \begin{macrocode}
\newcommand{\LWR at hyperreffinish}[1]{%
\begingroup%
- \RenewDocumentCommand{\ref}{}{\LWR at ref@ignorestar}%
- #1%
+ \RenewDocumentCommand{\ref}{s m}{\LWR at print@ref{##2}}%
+ #1%
\endgroup%
\LWR at htmltag{/a}%
}
@@ -53787,10 +58976,10 @@
\newcommand*{\LWR at hyperrefbb}[3]{%
\LWR at htmltag{%
- a href="%
+ a href=\textquotedbl%
\detokenize\expandafter{#1}\LWR at hashmark%
\detokenize\expandafter{#2}.\detokenize\expandafter{#3}%
- "%
+ \textquotedbl%
\LWR at addlinktitle%
}%
\endgroup%
@@ -53955,7 +59144,9 @@
% \begin{noindmacro}{\texorpdfstring} \marg{\TeX{}string} \marg{PDFstring}
%
% \changes{v0.48}{2018/02/02}{\pkg{hyperref}: \cs{texorpdfstring} now uses the \TeX\ string.}
+% \changes{v0.891}{2020/09/21}{\pkg{hyperref}: Fixed \cs{texorpdfstring} with \pkg{babel-french}.}
% \begin{macrocode}
+\let\texorpdfstring\relax
\newcommand{\texorpdfstring}[2]{#1}
% \end{macrocode}
% \end{noindmacro}
@@ -54229,16 +59420,24 @@
%
% \begin{macrocode}
\newcommand{\LWR at indexprenote}{}
+% \end{macrocode}
+%
+% \cs{AtBeginDocument} to help with package load order.
+% \changes{v0.85}{2020/04/29}{\pkg{idxlayout}: Fixed: \cs{AtBeginDocument} for load order.}
+% \begin{macrocode}
+\AtBeginDocument{
+ \preto\printindex{
-\preto\printindex{
+ \LWR at maybe@orignewpage
+ \LWR at startpars
-\LWR at orignewpage
-\LWR at startpars
+ \LWR at indexprenote
-\LWR at indexprenote
-
+ }
}
-
+% \end{macrocode}
+%
+% \begin{macrocode}
\newcommand{\setindexprenote}[1]{\renewcommand{\LWR at indexprenote}{#1}}
\newcommand*{\noindexprenote}{\renewcommand{\LWR at indexprenote}{}}
@@ -54340,7 +59539,7 @@
\catcode`\_=12%
\renewcommand*{\printindex}[1][\imki at jobname]{%
-\LWR at orignewpage%
+\LWR at maybe@orignewpage%
\LWR at startpars%
\ifstrequal{#1}{\imki at jobname}{%
\@ifundefined{#1 at idxfile}{%
@@ -54423,7 +59622,7 @@
% \begin{macrocode}
\renewcommand\imki at wrindexentrysplit[3]{%
\addtocounter{LWR at autoindex}{1}%
-\LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%
+\label{LWRindex-\arabic{LWR at autoindex}}%
\expandafter\protected at write\csname#1 at idxfile\endcsname{}%
{\string\indexentry{#2}{\arabic{LWR at autoindex}}}%
}
@@ -54430,7 +59629,7 @@
\renewcommand\imki at wrindexentryunique[3]{%
\addtocounter{LWR at autoindex}{1}%
-\LWR at new@label{LWRindex-\arabic{LWR at autoindex}}%
+\label{LWRindex-\arabic{LWR at autoindex}}%
\protected at write\@indexfile{}%
{\string\indexentry[#1]{#2}{\arabic{LWR at autoindex}}}%
}
@@ -54453,7 +59652,7 @@
%
% \begin{noindmacro}{\LWR at imki@setxdydefopts}
%
-% Sets the \pkg{xindy} \HTML\ options, ignoring the user's settings.
+% Sets the \prog{xindy} \HTML\ options, ignoring the user's settings.
% \begin{macrocode}
\newcommand*{\LWR at imki@setxdydefopts}{%
\edef\imki at options{ \space %
@@ -54468,7 +59667,7 @@
% \begin{noindmacro}{\LWR at imki@setdefopts} \marg{user options}
%
% Sets the \HTML\ options, added to the user's settings,
-% depending on whether \pkg{makeindex} or \pkg{xindy} are used.
+% depending on whether \prog{makeindex} or \prog{xindy} are used.
%
% For \prog{makeindex}, the user's choice is ignored, and only the \pkg{lwarp}
% version is used. (Only one style at a time is possible.)
@@ -54570,7 +59769,33 @@
%
%
%
+%
% \iffalse
+%<*impnattypo>
+% \fi
+%
+% \part{lwarp-impnattypo.sty}
+%
+% \section{impnattypo}
+%
+% \DescribePackage{impnattypo}
+% \pkg{impnattypo} is ignored.
+%
+% \changes{v0.895}{2021/01/13}{\pkg{impnattypo}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackageDrop{impnattypo}[2019/03/04]
+% \end{macrocode}
+%
+% \iffalse
+%</impnattypo>
+% \fi
+%
+%
+%
+% \iffalse
%<*index>
% \fi
%
@@ -54621,7 +59846,7 @@
{\begingroup}
{%
\addtocounter{LWR at autoindex}{1}% lwarp
- \LWR at new@label{LWRindex-\arabic{LWR at autoindex}}% lwarp
+ \label{LWRindex-\arabic{LWR at autoindex}}% lwarp
\begingroup%
}
{}
@@ -54740,7 +59965,7 @@
%
% \begin{macrocode}
\NewDocumentCommand{\attachandlink}{o m o m m}{%
- \href{#2}{#5}%
+ \LWR at href{#2}{#5}%
}
% \end{macrocode}
%
@@ -54751,8 +59976,243 @@
%
%
%
+% \iffalse
+%<*isomath>
+% \fi
%
+% \part{lwarp-isomath.sty}
+%
+% \section{isomath}
+%
+% \credits{Günter Milde}
+%
+% \DescribePackage{isomath}
+% \pkg{isomath} is used as-is for \SVG\ math, and
+% emulated for \brand{MathJax}.
+%
+% \brand{MathJax} does not provide a sans math font, so sans is typeset as roman.
+% \trouble[\brand{MathJax} sans]{isomath=\pkg{isomath}}
+%
+% \changes{v0.895}{2021/02/08}{\pkg{isomath}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{isomath}[2012/09/04]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\let\mathbfit\boldsymbol}
+\CustomizeMathJax{\let\mathsfbfit\mathbfit}% not sans
+\CustomizeMathJax{\let\mathsfit\mathit}% not sans
+\CustomizeMathJax{\let\vectorsym\mathbfit}
+\CustomizeMathJax{\let\matrixsym\mathbfit}
+\CustomizeMathJax{\let\tensorsym\mathsfbfit}
+\CustomizeMathJax{\let\mathboldsans\mathsfbfit}
+\CustomizeMathJax{\let\mathbold\mathbfit}
+\CustomizeMathJax{\let\mathsans\mathrm}% not sans
+\end{warpMathJax}
+% \end{macrocode}
+%
% \iffalse
+%</isomath>
+% \fi
+%
+%
+%
+%
+% \iffalse
+%<*isotope>
+% \fi
+%
+% \part{lwarp-isotope.sty}
+%
+% \section{isotope}
+%
+% \credits{Heiko Bauke}
+%
+% \DescribePackage{isotope}
+% \pkg{isotope} is patched for use by \pkg{lwarp} with \SVG\ math,
+% and emulated for \brand{MathJax}.
+%
+% \changes{v0.895}{2021/01/10}{\pkg{isotope}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{isotope}[2011/08/26]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand{\LWR at HTML@isotope at two}[2][]{%
+ \renewcommand{\isotope at atomicnumber}{#1}%
+ \edef\LWR at isotope@alttag{%
+ \textbackslash(
+ \textbackslash{}isotope
+ [\isotope at nucleonnumber]%
+ [\isotope at atomicnumber]%
+ \{#2\}
+ \textbackslash)%
+ }%
+ \ifbool{mathjax}%
+ {\LWR at isotope@alttag}%
+ {% SVG
+ \m at th%
+ \LWR at subsingledollar*%
+ {% alt tag
+ \LWR at isotope@alttag%
+ }%
+ {isotope}% add'l hashing
+ {% contents
+ \settowidth\@tempdimb{%
+ \ensuremath{\scriptstyle\isotope at nucleonnumber}%
+ }%
+ \settowidth\@tempdimc{%
+ \ensuremath{\scriptstyle\isotope at atomicnumber}%
+ }%
+ \ifdim\@tempdimb<\@tempdimc\@tempdimb=\@tempdimc\fi%
+ \ensuremath{
+ {}%
+ ^{\makebox[\@tempdimb][r]{%
+ \ensuremath{%
+ \scriptstyle\isotope at nucleonnumber%
+ }% ensuremath
+ }}%
+ _{\makebox[\@tempdimb][r]{%
+ \ensuremath{%
+ \scriptstyle\isotope at atomicnumber%
+ }% ensuremath
+ }}%
+ \isotopestyle{#2}%
+ }% ensuremath
+ }% contents
+ }% SVG
+ \endgroup%
+}%
+\LWR at formatted{isotope at two}
+
+\begin{warpMathJax}
+\CustomizeMathJax{%
+ \newcommand{\LWRisotopetwo}[2][]{%
+ {%
+ \vphantom{\mathrm{#2}}%
+ {}^{\LWRisotopenucleonnumber}_{#1}%
+ \mathrm{#2}%
+ }%
+ }%
+}
+
+\CustomizeMathJax{%
+ \newcommand{\isotope}[1][]{%
+ \def\LWRisotopenucleonnumber{#1}%
+ \LWRisotopetwo%
+ }%
+}
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</isotope>
+% \fi
+%
+%
+%
+%
+% \iffalse
+%<*jurabib>
+% \fi
+%
+% \part{lwarp-jurabib.sty}
+%
+% \section{jurabib}
+%
+% \credits{Jens Berger}
+%
+% \DescribePackage{jurabib}
+% \pkg{jurabib} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.87}{2020/05/18}{\pkg{jurabib}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{jurabib}[2004/01/25]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\renewrobustcmd{\jblangle}{\textless}
+
+\renewrobustcmd{\jbrangle}{\textgreater}
+
+\renewcommand*{\jb at biblaw@item}{%
+ \hspace{0.5em}%
+% $\triangleright$
+ \HTMLunicode{25B7}% lwarp
+ \hspace{0.5em}%
+}
+
+\renewrobustcmd{\jbarchsig}[2]{%
+ \ifjbweareinbib
+ \settowidth{\jb at subarchitemwidth}{\jbsamesubarchindent+#1}%
+ \setlength{\jb at subarchentrywidth}{\textwidth-\jb at subarchitemwidth-4em}%
+% \begin{tabular}{@{}p{\jb at subarchitemwidth}@{}j{\jb at subarchentrywidth}@{}}%
+ #1\ifjb at dot\unskip\unskip\unskip.\fi
+% &
+ \quad% lwarp
+ \ifthenelse{\equal{#2}{}}{}{\jbarchnameformat{#2}}%
+% \end{tabular}
+ \fi
+}%
+
+
+\xpatchcmd{\jb at do@post at item}
+ {\begin{tabular}{p{\jb at biblaw@item at width}j{\jb at biblaw@entry at width}}}
+ {}
+ {}
+ {\LWR at patcherror{jurabib}{jb at do@post at item 1}}
+
+\xpatchcmd{\jb at do@post at item}
+ {\multicolumn{2}{p{\columnwidth}}{\jb@@name}}
+ {\jb@@name}
+ {}
+ {\LWR at patcherror{jurabib}{jb at do@post at item 2}}
+
+\xpatchcmd{\jb at do@post at item}
+ {\jb at biblaw@item & \jb@@fulltitle}
+ {\jb at biblaw@item \quad \jb@@fulltitle}
+ {}
+ {\LWR at patcherror{jurabib}{jb at do@post at item 3}}
+
+\xpatchcmd{\jb at do@post at item}
+ {\end{tabular}}
+ {}
+ {}
+ {\LWR at patcherror{jurabib}{jb at do@post at item 4}}
+
+\xpatchcmd{\jb at do@post at item}
+ {\begin{minipage}[t]{\bibnumberwidth}}
+ {}
+ {}
+ {\LWR at patcherror{jurabib}{jb at do@post at item 5}}
+
+\xpatchcmd{\jb at do@post at item}
+ {\end{minipage}}
+ {\quad}
+ {}
+ {\LWR at patcherror{jurabib}{jb at do@post at item 6}}
+% \end{macrocode}
+%
+% \iffalse
+%</jurabib>
+% \fi
+%
+%
+%
+%
+%
+%
+% \iffalse
%<*karnaugh-map>
% \fi
%
@@ -54773,8 +60233,10 @@
\LWR at ProvidesPackagePass{karnaugh-map}[2017/02/20]
% \end{macrocode}
%
-% (It is hard to patch this macro, so the entire thing is redefined here,
-% with the \pkg{lwarp} modificaitions identified in comments.)
+% This patch is needed only because \pkg{lwarp} changes the definition of \cs{\&},
+% and the original uses \cs{ifnum} to compare |0| with \cs{\&}.
+% It is hard to patch this environment, so the entire thing is redefined here,
+% with the \pkg{lwarp} modifications identified in comments.
%
% \begin{macrocode}
\RenewDocumentEnvironment{karnaugh-map}{s O{4} O{4} O{1} O{$X_1X_0$} O{$X_3X_2$} O{$X_5X_4$}} {%
@@ -54867,12 +60329,15 @@
% \ifnum0=\@karnaughmap at local@matrixtemplate@% original
% print error if no template could be found
\PackageError{lwarp-karnaugh-map}{%
- Can not find a template fitting your specification (\@karnaughmap at var@mapsizex@\space x \@karnaughmap at var@mapsizey@\space x \@karnaughmap at var@mapsizez@)%
+ Can not find a template fitting your specification
+ (\@karnaughmap at var@mapsizex@\space x \@karnaughmap at var@mapsizey@\space x
+ \@karnaughmap at var@mapsizez@)%
}{%
- Existing templates have the following dimensions: 2x2x1, 2x4x1, 4x2x1, 4x4x1, 4x4x2, and 4x4x4.
+ Existing templates have the following dimensions:
+ 2x2x1, 2x4x1, 4x2x1, 4x4x1, 4x4x2, and 4x4x4.
}%
% \fi original
- }{}% lwarp
+ }{\relax}% lwarp
\begin{tikzpicture}
% grid
% for all dimensions
@@ -54956,7 +60421,7 @@
% \begin{macrocode}
\LWR at ProvidesPackagePass{keyfloat}[2019/09/23]
-\@ifpackagelater{keyfloat}{2019/09/23}{}{
+\@ifpackagelater{keyfloat}{2019/09/23}{\relax}{
\PackageError{lwarp-keyfloat}
{%
The keyfloat package is out of date.\MessageBreak
@@ -55217,7 +60682,7 @@
{float:right; width:2in; margin:10pt}%
{}%
{marginblock}%
- \captionsetup{type=#2}%
+ \renewcommand*{\@captype}{#2}%
\minipage{\LWR at usersmarginparwidth}%
\setlength{\marginparwidth}{.95\LWR at usersmarginparwidth}%
}
@@ -55278,6 +60743,295 @@
%
%
% \iffalse
+%<*keystroke>
+% \fi
+%
+% \part{lwarp-keystroke.sty}
+%
+% \section{keystroke}
+%
+% \credits{Werner Fink}
+%
+% \DescribePackage{keystroke}
+% \pkg{keystroke} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.893}{2020/10/18}{\pkg{keystroke}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{keystroke}[2010/04/23]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand*{\LWR at HTML@keystroke}[1]{
+ \InlineClass{keystroke}{#1}
+}
+\LWR at formatted{keystroke}
+
+
+\newcommand*{\LWR at HTML@Return}{\keystroke{\HTMLunicode{021A9}}}
+\LWR at formatted{Return}
+
+\newcommand*{\LWR at HTML@BSpace}{\keystroke{\HTMLunicode{027FB}}}
+\LWR at formatted{BSpace}
+
+\newcommand*{\LWR at HTML@Tab}{\keystroke{|\HTMLunicode{021C6}|}}
+\LWR at formatted{Tab}
+
+\newcommand*{\LWR at HTML@UArrow}{\keystroke{\HTMLunicode{02191}}}
+\LWR at formatted{UArrow}
+
+\newcommand*{\LWR at HTML@DArrow}{\keystroke{\HTMLunicode{02193}}}
+\LWR at formatted{DArrow}
+
+\newcommand*{\LWR at HTML@LArrow}{\keystroke{\HTMLunicode{02190}}}
+\LWR at formatted{LArrow}
+
+\newcommand*{\LWR at HTML@RArrow}{\keystroke{\HTMLunicode{02192}}}
+\LWR at formatted{RArrow}
+
+% Preserves the language options:
+\LetLtxMacro\LWR at HTML@Shift\Shift
+\xpatchcmd{\LWR at HTML@Shift}
+ {$\Uparrow$}
+ {\HTMLunicode{21D1}}
+ {}
+ {}
+\LWR at formatted{Shift}
+
+\LetLtxMacro\LWR at HTML@PgUp\PgUp
+\xpatchcmd{\LWR at HTML@PgUp}
+ {$\uparrow$}
+ {\HTMLunicode{2191}}
+ {}
+ {}
+\LWR at formatted{PgUp}
+
+\LetLtxMacro\LWR at HTML@PgDown\PgDown
+\xpatchcmd{\LWR at HTML@PgDown}
+ {$\downarrow$}
+ {\HTMLunicode{2193}}
+ {}
+ {}
+\LWR at formatted{PgDown}
+% \end{macrocode}
+%
+% \iffalse
+%</keystroke>
+% \fi
+%
+%
+%
+% \iffalse
+%<*kpfonts>
+% \fi
+%
+% \part{lwarp-kpfonts.sty}
+%
+% \section{kpfonts}
+%
+% \credits{Christophe Caignaert}
+%
+% \DescribePackage{kpfonts}
+% \pkg{kpfonts} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation honors the options
+% \trouble[limitations]{kpfonts=\pkg{kpfonts}}
+% \optn{uprightRoman} for \cs{D} only,
+% \optn{classicReIm},
+% \optn{frenchstyle} for Greek only,
+% \optn{upright} for Greek only,
+% \optn{uprightgreeks},
+% \optn{slantedGreeks},
+% and \optn{mathcalasscript}.
+%
+% The dedicated macros for Greek work correctly.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.891}{2020/09/19}{\pkg{kpfonts}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{kpfonts}[2010/08/20]
+
+\LWR at infoprocessingmathjax{kpfonts}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-newpxtxmath}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+\ifkp at calasscr
+ \CustomizeMathJax{\let\LWRorigmathscr\mathscr}
+ \CustomizeMathJax{\let\LWRorigmathcal\mathcal}
+ \CustomizeMathJax{\let\mathscr\LWRorigmathcal}
+ \CustomizeMathJax{\let\mathcal\LWRorigmathscr}
+\fi
+
+\ifkp at upgrk % lowercase
+ \LWR at mathjax@addgreek at l@up{}{}
+ \LWR at mathjax@addgreek at l@it{other}{}
+\else
+ \LWR at mathjax@addgreek at l@up{other}{}
+\fi
+
+\ifkp at slGrk
+ \LWR at mathjax@addgreek at u@it*{}{}
+ \LWR at mathjax@addgreek at u@up*{other}{}
+ \LWR at mathjax@addgreek at u@up*{var}{}
+\else
+ \LWR at mathjax@addgreek at u@it*{other}{}
+ \LWR at mathjax@addgreek at u@it*{var}{}
+\fi
+
+\LWR at mathjax@addgreek at u@up*{}{up}
+\LWR at mathjax@addgreek at l@up{}{up}
+
+\LWR at mathjax@addgreek at u@it*{}{sl}
+\LWR at mathjax@addgreek at l@it{}{sl}
+
+\CustomizeMathJax{\newcommand{\partialsl}{\mathord{\unicode{x1D715}}}}
+\CustomizeMathJax{\let\partialup\uppartial}% not upright
+
+\ifkp at oldReIm
+\else
+ \CustomizeMathJax{\renewcommand{\Re}{\mathfrak{Re}}}
+ \CustomizeMathJax{\renewcommand{\Im}{\mathfrak{Im}}}
+\fi
+
+\ifkp at Dcommand
+ \ifkp at upRm%
+ \CustomizeMathJax{
+ \def\D#1{\mathclose{\,\mathrm{d}}#1}
+ }
+ \else
+ \CustomizeMathJax{
+ \def\D#1{\mathclose{\,\mathit{d}}#1}
+ }
+ \fi
+\fi
+
+\CustomizeMathJax{\let\pounds\mathsterling}
+\CustomizeMathJax{\let\kppounds\mathsterling}
+
+\CustomizeMathJax{\newcommand{\mathup}[1]{\mathrm{#1}}}% never sans
+\CustomizeMathJax{\let\mathupright\mathup}
+
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</kpfonts>
+% \fi
+%
+%
+%
+% \iffalse
+%<*kpfonts-otf>
+% \fi
+%
+% \part{lwarp-kpfonts-otf.sty}
+%
+% \section{kpfonts-otf}
+%
+% \credits{Daniel Flipo}
+%
+% \DescribePackage{kpfonts-otf}
+% \pkg{kpfonts-otf} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation honors the options
+% \trouble[limitations]{kpfonts-otf=\pkg{kpfonts-otf}}
+% \optn{fancyReIm},
+% \optn{mathcal},
+% \optn{frenchstyle} for Greek only,
+% and \optn{mathcalasscript}.
+%
+% Also see the options for \pkg{unicode-math}, which is loaded by \pkg{kpfonts-otf}.
+%
+% The \pkg{unicode-math} dedicated macros for Greek work correctly.
+%
+% The \brand{MathJax} emulation does not change with the use of \cs{mathversion}.
+% \watchout[\cs{mathversion}]
+% Whatever emulation is established at the begin of the document will remain.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.891}{2020/09/20}{\pkg{kpfonts-otf}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{kpfonts-otf}[2020/06/20]
+
+\LWR at infoprocessingmathjax{kpfonts-otf}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-nonunicode}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+\ifkp at calasscr
+ \CustomizeMathJax{\let\mathscr\mathcal}
+\else
+ \CustomizeMathJax{\let\mathcal\mathscr}
+\fi
+
+\ifkp at frenchstyle
+ \LWR at mathjax@addgreek at l@up{}{}
+ \LWR at mathjax@addgreek at u@up*{}{}
+\fi
+
+\ifkp at oldReIm
+ \CustomizeMathJax{\renewcommand{\Re}{\mathfrak{Re}}}
+ \CustomizeMathJax{\renewcommand{\Im}{\mathfrak{Im}}}
+\else
+\fi
+
+\ifkp at Dcommand
+ \CustomizeMathJax{
+ \def\D#1{\mathclose{\,\mathrm{d}}#1}
+ }
+\fi
+
+\CustomizeMathJax{\let\varint\int}
+\CustomizeMathJax{\let\variint\iint}
+\CustomizeMathJax{\let\variiint\iiint}
+\CustomizeMathJax{\let\variiiint\iiiint}
+\CustomizeMathJax{\let\varidotsint\idotsint}
+
+\CustomizeMathJax{\newcommand{\varointctrclockwise}{\mathop{\unicode{x2939}\!\!\unicode{x0222E}}}}
+\CustomizeMathJax{\newcommand{\oiintclockwise}{\mathop{\unicode{x0222F}\!\!\unicode{x2938}}}}
+\CustomizeMathJax{\newcommand{\oiintctrclockwise}{\mathop{\unicode{x2939}\!\!\unicode{x0222F}}}}
+\CustomizeMathJax{\newcommand{\varoiintclockwise}{\mathop{\unicode{x0222F}\!\!\unicode{x2938}}}}
+\CustomizeMathJax{\newcommand{\varoiintctrclockwise}{\mathop{\unicode{x2939}\!\!\unicode{x0222F}}}}
+\CustomizeMathJax{\newcommand{\oiiintclockwise}{\mathop{\unicode{x02230}\!\!\unicode{x2938}}}}
+\CustomizeMathJax{\newcommand{\oiiintctrclockwise}{\mathop{\unicode{x2939}\!\!\unicode{x02230}}}}
+\CustomizeMathJax{\newcommand{\varoiiintclockwise}{\mathop{\unicode{x02230}\!\!\unicode{x2938}}}}
+\CustomizeMathJax{\newcommand{\varoiiintctrclockwise}{\mathop{\unicode{x2939}\!\!\unicode{x02230}}}}
+\CustomizeMathJax{\newcommand{\sqiint}{\mathop{\unicode{x2A16}\!\!\unicode{x2A16}}}}
+\CustomizeMathJax{\newcommand{\sqiiint}{\mathop{\unicode{x2A16}\!\!\unicode{x2A16}\!\!\unicode{x2A16}}}}
+
+\CustomizeMathJax{\let\widearc\overparen}
+\CustomizeMathJax{\let\widearcarrow\overrightarrow}
+\CustomizeMathJax{\let\overrightarc\overrightarrow}
+
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</kpfonts-otf>
+% \fi
+%
+%
+%
+% \iffalse
%<*layaureo>
% \fi
%
@@ -55634,7 +61388,7 @@
% \cs{lettrine} \oarg{keys} \marg{letter} \marg{additional text}
% \begin{macrocode}
\DeclareDocumentCommand{\lettrine}{o m m}{%
-\InlineClass{lettrine}{#2}\InlineClass{lettrinetext}{#3} % extra space
+ \InlineClass{lettrine}{#2}\InlineClass{lettrinetext}{#3} % extra space
}
\newcounter{DefaultLines}
@@ -55668,9 +61422,394 @@
%
%
%
+% \iffalse
+%<*libertinust1math>
+% \fi
%
+% \part{lwarp-libertinust1math.sty}
%
+% \section{libertinust1math}
+%
+% \credits{Michael Sharpe}
+%
+% \DescribePackage{libertinust1math}
+% \pkg{libertinust1math} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation honors
+% \optn{frenchmath} for Greek but not Latin characters,
+% and \optn{slantedGreek}, \optn{uprightGreek}, and \optn{ISO}
+% also adjust Greek characters.
+% \brand{MathJax} cannot yet honor options for adjusting Latin characters.
+%
+% The dedicated macros for upright and italic Greek letters do work correctly.
+%
+% Some of the symbol font macros such as \cs{mathsfbf} do not use a sans font
+% because \brand{MathJax} does not yet have sans Greek.
+%
+% \SVG\ math honors all font choices, and should appear the same as the printed output.
+%
+% \changes{v0.891}{2020/09/18}{\pkg{libertinust1math}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{libertinust1math}[2020/06/10]
+
+\LWR at infoprocessingmathjax{libertinust1math}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+
+\iflibus at slantedG
+ \LWR at mathjax@addgreek at u@it*{}{}
+\else
+ \LWR at mathjax@addgreek at u@up*{}{}
+\fi
+
+\LWR at mathjax@addgreek at u@it*{}{it}
+\LWR at mathjax@addgreek at u@up*{up}{}
+\LWR at mathjax@addgreek at u@up*{}{up}
+
+\iflibus at frenchm
+ \LWR at mathjax@addgreek at l@up{}{}
+\else
+ \LWR at mathjax@addgreek at l@it{}{}
+\fi
+
+\LWR at mathjax@addgreek at l@it{}{it}
+\LWR at mathjax@addgreek at l@up{}{up}
+\LWR at mathjax@addgreek at l@up{up}{}
+
+\CustomizeMathJax{\let\uppartial\partial}% not upright
+% \end{macrocode}
+%
+% \changes{v0.895}{2021/01/04}{\pkg{libertinust1math}: \brand{MathJax}: Fixed for Greek, ignoring sans.}
+% \begin{macrocode}
+\CustomizeMathJax{\let\mathsfbf\mathbf}% not sans
+% \CustomizeMathJax{\newcommand{\mathsfbf}[1]{%
+% \mmlToken{mi}[mathvariant="bold-sans-serif"]{#1}% not greek
+% }}% not sans
+
+% \CustomizeMathJax{\newcommand{\mathbfit}[1]{\boldsymbol{#1}}}
+\CustomizeMathJax{\let\mathbfit\boldsymbol}
+% \end{macrocode}
+%
+% \changes{v0.895}{2021/01/04}{\pkg{libertinust1math}: \brand{MathJax}: Fixed for Greek, ignoring sans.}
+% \begin{macrocode}
+% \CustomizeMathJax{\newcommand{\mathsfbfit}[1]{\boldsymbol{#1}}}% not sans
+\CustomizeMathJax{\let\mathsfbfit\mathbfit}% not sans
+% \CustomizeMathJax{\newcommand{\mathsfbfit}[1]{%
+% \mmlToken{mi}[mathvariant="sans-serif-bold-italic"]{#1}% not greek
+% }}%
+% \end{macrocode}
+%
+% \changes{v0.895}{2021/01/04}{\pkg{libertinust1math}: \brand{MathJax}: Fixed for Greek, ignoring sans.}
+% \begin{macrocode}
+\CustomizeMathJax{\let\mathsfit\mathit}% not sans
+% \CustomizeMathJax{\newcommand{\mathsfit}[1]{%
+% \mmlToken{mi}[mathvariant="sans-serif-italic"]{#1}% not greek
+% }}
+
+\CustomizeMathJax{\let\vectorsym\mathbfit}
+\CustomizeMathJax{\let\matrixsym\mathbfit}
+\CustomizeMathJax{\let\tensorsym\mathsfbfit}
+\CustomizeMathJax{\let\mathboldsans\mathsfbfit}
+\CustomizeMathJax{\let\mathbold\mathbfit}
+% \end{macrocode}
+%
+% \filenm{lwarp_mathjax.txt} adds \cs{left} \Slash \cs{right} support for
+% delimiters.
+% \changes{v0.892}{2020/09/26}{\pkg{libertinust1math}: Added \cs{left} \Slash \cs{right} support in \filenm{lwarp_mathjax.txt}.}
+% \begin{macrocode}
+\CustomizeMathJax{\let\dlb\lBrack}
+\CustomizeMathJax{\let\drb\rBrack}
+
+\CustomizeMathJax{\let\sqrtsign\sqrt}
+
+\CustomizeMathJax{\let\smallintsl\smallint}
+\CustomizeMathJax{\newcommand{\smalliintsl}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiintsl}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiiintsl}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\newcommand{\smallointsl}{\mathop{\unicode{x222E}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiintsl}{\mathop{\unicode{x222F}}\limits}}
+
+\CustomizeMathJax{\let\smallintup\smallint}
+\CustomizeMathJax{\newcommand{\smalliintup}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiintup}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiiintup}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\newcommand{\smallointup}{\mathop{\unicode{x222E}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiintup}{\mathop{\unicode{x222F}}\limits}}
+
+\CustomizeMathJax{\let\intslop\int}
+\CustomizeMathJax{\newcommand{\iintslop}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintslop}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\iiiintslop}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\let\ointslop\oint}
+\CustomizeMathJax{\newcommand{\oiintslop}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiintslop}{\mathop{\unicode{x2230}}\limits}}
+
+\CustomizeMathJax{\let\intupop\int}
+\CustomizeMathJax{\newcommand{\iintupop}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintupop}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\iiiintupop}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\let\ointupop\oint}
+\CustomizeMathJax{\newcommand{\oiintupop}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiintupop}{\mathop{\unicode{x2230}}\limits}}
+
+\CustomizeMathJax{\newcommand{\smalliint}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiint}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\smalliiiint}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloint}{\mathop{\unicode{x222E}}\limits}}
+\CustomizeMathJax{\newcommand{\smalloiint}{\mathop{\unicode{x222F}}\limits}}
+
+\CustomizeMathJax{\let\intop\int}
+\CustomizeMathJax{\newcommand{\iintop}{\mathop{\unicode{x222C}}\limits}}
+\CustomizeMathJax{\newcommand{\iiintop}{\mathop{\unicode{x222D}}\limits}}
+\CustomizeMathJax{\newcommand{\iiiintop}{\mathop{\unicode{x2A0C}}\limits}}
+\CustomizeMathJax{\let\ointop\oint}
+\CustomizeMathJax{\newcommand{\oiintop}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiintop}{\mathop{\unicode{x2230}}\limits}}
+
+\CustomizeMathJax{\newcommand{\oiint}{\mathop{\unicode{x222F}}\limits}}
+
+\CustomizeMathJax{\newcommand{\bigcupdot}{\mathop{\unicode{x2A03}}}}
+\CustomizeMathJax{\newcommand{\bigsqcap}{\mathop{\unicode{x2A05}}}}
+\CustomizeMathJax{\newcommand{\xsol}{\mathop{\unicode{x29F8}}}}
+\CustomizeMathJax{\newcommand{\xbsol}{\mathop{\unicode{x29F9}}}}
+\CustomizeMathJax{\let\prodop\prod}
+\CustomizeMathJax{\let\coprodop\coprod}
+\CustomizeMathJax{\let\sumop\sum}
+\CustomizeMathJax{\let\bigwedgeop\bigwedge}
+\CustomizeMathJax{\let\bigveeop\bigvee}
+\CustomizeMathJax{\let\bigcapop\bigcap}
+\CustomizeMathJax{\let\bigcupop\bigcup}
+\CustomizeMathJax{\let\xsolop\xsol}
+\CustomizeMathJax{\let\xbsolop\xbsol}
+\CustomizeMathJax{\let\bigodotop\bigodot}
+\CustomizeMathJax{\let\bigoplusop\bigoplus}
+\CustomizeMathJax{\let\bigotimesop\bigotimes}
+\CustomizeMathJax{\let\bigcupdotop\bigcupdot}
+\CustomizeMathJax{\let\biguplusop\biguplus}
+\CustomizeMathJax{\let\bigsqcapop\bigsqcap}
+\CustomizeMathJax{\let\bigsqcupop\bigsqcup}
+
+\CustomizeMathJax{\newcommand{\ovhook}[1]{\mathord{#1\unicode{x00309}}}}
+\CustomizeMathJax{\newcommand{\candra}[1]{\mathord{#1\unicode{x00310}}}}
+\CustomizeMathJax{\newcommand{\oturnedcomma}[1]{\mathord{#1\unicode{x00312}}}}
+\CustomizeMathJax{\newcommand{\ocommatopright}[1]{\mathord{#1\unicode{x00315}}}}
+\CustomizeMathJax{\newcommand{\droang}[1]{\mathord{#1\unicode{x0031A}}}}
+\CustomizeMathJax{\newcommand{\leftharpoonaccent}[1]{\mathord{#1\unicode{x020D0}}}}
+\CustomizeMathJax{\newcommand{\rightharpoonaccent}[1]{\mathord{#1\unicode{x020D1}}}}
+\CustomizeMathJax{\newcommand{\leftarrowaccent}[1]{\mathord{#1\unicode{x020D0}}}}
+\CustomizeMathJax{\let\rightarrowaccent\vec}
+
+\CustomizeMathJax{\newcommand{\leftrightarrowaccent}[1]{\mathord{#1\unicode{x020E1}}}}
+\CustomizeMathJax{\newcommand{\annuity}[1]{\mathord{#1\unicode{x020E7}}}}
+\CustomizeMathJax{\newcommand{\widebridgeabove}[1]{\mathord{#1\unicode{x020E9}}}}
+\CustomizeMathJax{\newcommand{\asteraccent}[1]{\mathord{#1\unicode{x020F0}}}}
+
+% neutralized:
+\CustomizeMathJax{\newcommand{\braceld}{}}
+\CustomizeMathJax{\newcommand{\bracerd}{}}
+\CustomizeMathJax{\newcommand{\bracelu}{}}
+\CustomizeMathJax{\newcommand{\braceru}{}}
+\CustomizeMathJax{\newcommand{\braceex}{}}
+\CustomizeMathJax{\newcommand{\bracemu}{}}
+\CustomizeMathJax{\newcommand{\bracemd}{}}
+\CustomizeMathJax{\newcommand{\parenld}{}}
+\CustomizeMathJax{\newcommand{\parenrd}{}}
+\CustomizeMathJax{\newcommand{\parenlu}{}}
+\CustomizeMathJax{\newcommand{\parenru}{}}
+\CustomizeMathJax{\newcommand{\bracketld}{}}
+\CustomizeMathJax{\newcommand{\bracketrd}{}}
+\CustomizeMathJax{\newcommand{\bracketlu}{}}
+\CustomizeMathJax{\newcommand{\bracketru}{}}
+\CustomizeMathJax{\newcommand{\bracketex}{}}
+\CustomizeMathJax{\newcommand{\parenex}{}}
+
+\CustomizeMathJax{\newcommand{lhook}{~}}
+\CustomizeMathJax{\newcommand{rhook}{~}}
+\CustomizeMathJax{\newcommand{relbar}{-}}
+\CustomizeMathJax{\newcommand{Relbar}{=}}
+
+\CustomizeMathJax{\newcommand{\mapstochar}{\mathrel{\unicode{x21A6}}}}
+
+\CustomizeMathJax{\newcommand{\Zbar}{\mathord{\unicode{x0001B5}}}}
+\CustomizeMathJax{\newcommand{\notchar}{\mathrel{\unicode{x000AC}}}}
+\CustomizeMathJax{\newcommand{\upbackepsilon}{\mathord{\unicode{x03F6}}}}
+\CustomizeMathJax{\newcommand{\smblkcircle}{\mathbin{\unicode{x02022}}}}
+\CustomizeMathJax{\newcommand{\enleadertwodots}{\mathord{\unicode{x02025}}}}
+\CustomizeMathJax{\newcommand{\unicodeellipsis}{\mathord{\unicode{x02026}}}}
+\CustomizeMathJax{\newcommand{\mathellipsis}{\mathinner{\unicode{x02026}}}}
+\CustomizeMathJax{\newcommand{\dprime}{\mathord{\unicode{x02033}}}}
+\CustomizeMathJax{\newcommand{\trprime}{\mathord{\unicode{x02034}}}}
+\CustomizeMathJax{\newcommand{\backdprime}{\mathord{\unicode{x02036}}}}
+\CustomizeMathJax{\newcommand{\backtrprime}{\mathord{\unicode{x02037}}}}
+\CustomizeMathJax{\newcommand{\caretinsert}{\mathord{\unicode{x02038}}}}
+\CustomizeMathJax{\newcommand{\Exclam}{\mathord{\unicode{x0203C}}}}
+
+\CustomizeMathJax{\newcommand{\hyphenbullet}{\mathord{\unicode{x02043}}}}
+\CustomizeMathJax{\newcommand{\fracslash}{\mathbin{\unicode{x02044}}}}
+\CustomizeMathJax{\newcommand{\Question}{\mathord{\unicode{x02047}}}}
+\CustomizeMathJax{\newcommand{\closure}{\mathrel{\unicode{x02050}}}}
+\CustomizeMathJax{\newcommand{\qprime}{\mathord{\unicode{x02057}}}}
+\CustomizeMathJax{\newcommand{\vertoverlay}{\mathrel{\unicode{x020D2}}}}
+\CustomizeMathJax{\newcommand{\enclosecircle}{\mathord{\unicode{x020DD}}}}
+\CustomizeMathJax{\newcommand{\enclosesquare}{\mathord{\unicode{x020DE}}}}
+\CustomizeMathJax{\newcommand{\enclosetriangle}{\mathord{\unicode{x020E4}}}}
+\CustomizeMathJax{\newcommand{\Eulerconst}{\mathord{\unicode{x02107}}}}
+\CustomizeMathJax{\newcommand{\turnediota}{\mathord{\unicode{x02129}}}}
+\CustomizeMathJax{\newcommand{\Angstrom}{\mathord{\unicode{x0212B}}}}
+
+\CustomizeMathJax{\newcommand{\sansLturned}{\mathord{\unicode{x02142}}}}
+\CustomizeMathJax{\newcommand{\sansLmirrored}{\mathord{\unicode{x02143}}}}
+\CustomizeMathJax{\newcommand{\Yup}{\mathord{\unicode{x02144}}}}
+\CustomizeMathJax{\newcommand{\upand}{\mathbin{\unicode{x0214B}}}}
+\CustomizeMathJax{\newcommand{\increment}{\mathord{\unicode{x02206}}}}
+\CustomizeMathJax{\newcommand{\smallin}{\mathrel{\unicode{x0220A}}}}
+\CustomizeMathJax{\newcommand{\nni}{\mathrel{\unicode{x0220C}}}}
+
+\CustomizeMathJax{\newcommand{\smallni}{\mathrel{\unicode{x0220D}}}}
+\CustomizeMathJax{\newcommand{\QED}{\mathord{\unicode{x0220E}}}}
+\CustomizeMathJax{\newcommand{\vysmwhtcircle}{\mathbin{\unicode{x02218}}}}
+\CustomizeMathJax{\newcommand{\vysmblkcircle}{\mathbin{\unicode{x02219}}}}
+\CustomizeMathJax{\newcommand{\rightangle}{\mathord{\unicode{x0221F}}}}
+
+\CustomizeMathJax{\newcommand{\Colon}{\mathrel{\unicode{x02237}}}}
+\CustomizeMathJax{\newcommand{\dotminus}{\mathbin{\unicode{x02238}}}}
+\CustomizeMathJax{\newcommand{\dashcolon}{\mathrel{\unicode{x02239}}}}
+\CustomizeMathJax{\newcommand{\dotsminusdots}{\mathrel{\unicode{x0223A}}}}
+\CustomizeMathJax{\newcommand{\kernelcontraction}{\mathrel{\unicode{x0223B}}}}
+\CustomizeMathJax{\newcommand{\invlazys}{\mathbin{\unicode{x0223E}}}}
+
+\CustomizeMathJax{\newcommand{\sinewave}{\mathord{\unicode{x0223F}}}}
+\CustomizeMathJax{\newcommand{\nsime}{\mathrel{\unicode{x02244}}}}
+\CustomizeMathJax{\newcommand{\simneqq}{\mathrel{\unicode{x02246}}}}
+\CustomizeMathJax{\newcommand{\napprox}{\mathrel{\unicode{x02249}}}}
+\CustomizeMathJax{\newcommand{\approxident}{\mathrel{\unicode{x0224B}}}}
+\CustomizeMathJax{\newcommand{\backcong}{\mathrel{\unicode{x0224C}}}}
+
+\CustomizeMathJax{\newcommand{\nasymp}{\mathrel{\unicode{x0226D}}}}
+\CustomizeMathJax{\newcommand{\nlesssim}{\mathrel{\unicode{x02274}}}}
+\CustomizeMathJax{\newcommand{\ngtrsim}{\mathrel{\unicode{x02275}}}}
+\CustomizeMathJax{\newcommand{\nlessgtr}{\mathrel{\unicode{x02278}}}}
+\CustomizeMathJax{\newcommand{\ngtrless}{\mathrel{\unicode{x02279}}}}
+
+\CustomizeMathJax{\newcommand{\nsubset}{\mathrel{\unicode{x02284}}}}
+\CustomizeMathJax{\newcommand{\nsupset}{\mathrel{\unicode{x02285}}}}
+
+\CustomizeMathJax{\newcommand{\cupleftarrow}{\mathbin{\unicode{x0228C}}}}
+\CustomizeMathJax{\newcommand{\cupdot}{\mathbin{\unicode{x0228D}}}}
+\CustomizeMathJax{\newcommand{\circledequal}{\mathbin{\unicode{x0229C}}}}
+
+\CustomizeMathJax{\newcommand{\assert}{\mathrel{\unicode{x022A6}}}}
+\CustomizeMathJax{\newcommand{\VDash}{\mathrel{\unicode{x022AB}}}}
+\CustomizeMathJax{\newcommand{\prurel}{\mathrel{\unicode{x022B0}}}}
+
+\CustomizeMathJax{\newcommand{\origof}{\mathrel{\unicode{x022B6}}}}
+\CustomizeMathJax{\newcommand{\smallprod}{\mathop{\unicode{x0220F}}}}% not small
+\CustomizeMathJax{\newcommand{\smallcoprod}{\mathop{\unicode{x02210}}}}% not small
+\CustomizeMathJax{\newcommand{\smallsum}{\mathop{\unicode{x02211}}}}% not small
+\CustomizeMathJax{\newcommand{\Hfraktur}{\mathord{\unicode{x1D525}}}}
+\CustomizeMathJax{\newcommand{\dsol}{\mathbin{\unicode{x029F6}}}}
+\CustomizeMathJax{\newcommand{\rsolbar}{\mathbin{\unicode{x029F7}}}}
+
+\CustomizeMathJax{\newcommand{\eqless}{\mathrel{\unicode{x022DC}}}}
+\CustomizeMathJax{\newcommand{\eqgtr}{\mathrel{\unicode{x022DD}}}}
+\CustomizeMathJax{\newcommand{\npreccurlyeq}{\mathrel{\unicode{x022E0}}}}
+\CustomizeMathJax{\newcommand{\nsucccurlyeq}{\mathrel{\unicode{x022E1}}}}
+\CustomizeMathJax{\newcommand{\nsqsubseteq}{\mathrel{\unicode{x022E2}}}}
+\CustomizeMathJax{\newcommand{\nsqsupseteq}{\mathrel{\unicode{x022E3}}}}
+\CustomizeMathJax{\newcommand{\sqsubsetneq}{\mathrel{\unicode{x022E4}}}}
+\CustomizeMathJax{\newcommand{\sqsupsetneq}{\mathrel{\unicode{x022E5}}}}
+\CustomizeMathJax{\newcommand{\nvartriangleleft}{\mathrel{\unicode{x022EA}}}}
+\CustomizeMathJax{\newcommand{\nvartriangleright}{\mathrel{\unicode{x022EB}}}}
+
+\CustomizeMathJax{\newcommand{\vdotsmath}{\mathrel{\unicode{x022EE}}}}
+\CustomizeMathJax{\newcommand{\unicodecdots}{\mathord{\unicode{x022EF}}}}
+\CustomizeMathJax{\newcommand{\adots}{\mathrel{\unicode{x022F0}}}}
+\CustomizeMathJax{\newcommand{\succneq}{\mathrel{\unicode{x02AB2}}}}
+\CustomizeMathJax{\newcommand{\preceqq}{\mathrel{\unicode{x02AB3}}}}
+\CustomizeMathJax{\newcommand{\succeqq}{\mathrel{\unicode{x02AB4}}}}
+\CustomizeMathJax{\newcommand{\precneq}{\mathrel{\unicode{x02AB1}}}}
+
+\CustomizeMathJax{\newcommand{\mapsfrom}{\mathrel{\unicode{x021A4}}}}
+
+\CustomizeMathJax{\newcommand{\longmapsfrom}{\mathrel{\unicode{x027FB}}}}
+
+\CustomizeMathJax{\newcommand{\diameter}{\mathord{\unicode{x02300}}}}
+\CustomizeMathJax{\newcommand{\coloneq}{\mathrel{\unicode{x02254}}}}
+\CustomizeMathJax{\newcommand{\eqcolon}{\mathrel{\unicode{x02255}}}}
+\CustomizeMathJax{\newcommand{\arceq}{\mathrel{\unicode{x02258}}}}
+\CustomizeMathJax{\newcommand{\wedgeq}{\mathrel{\unicode{x02259}}}}
+\CustomizeMathJax{\newcommand{\veeeq}{\mathrel{\unicode{x0225A}}}}
+
+\CustomizeMathJax{\newcommand{\stareq}{\mathrel{\unicode{x0225B}}}}
+\CustomizeMathJax{\newcommand{\eqdef}{\mathrel{\unicode{x0225D}}}}
+\CustomizeMathJax{\newcommand{\measeq}{\mathrel{\unicode{x0225E}}}}
+\CustomizeMathJax{\newcommand{\questeq}{\mathrel{\unicode{x0225F}}}}
+\CustomizeMathJax{\newcommand{\nequiv}{\mathrel{\unicode{x02262}}}}
+\CustomizeMathJax{\newcommand{\Equiv}{\mathrel{\unicode{x02263}}}}
+
+\CustomizeMathJax{\newcommand{\house}{\mathord{\unicode{x02302}}}}
+
+\CustomizeMathJax{\newcommand{\musicalnote}{\mathord{\unicode{x0266A}}}}
+\CustomizeMathJax{\newcommand{\degree}{\mathord{\unicode{x000B0}}}}
+\CustomizeMathJax{\newcommand{\mathsection}{\mathord{\unicode{x000A7}}}}
+\CustomizeMathJax{\newcommand{\mathparagraph}{\mathord{\unicode{x000B6}}}}
+\CustomizeMathJax{\newcommand{\checkmarkmath}{\mathord{\unicode{x02713}}}}
+\CustomizeMathJax{\newcommand{\invnot}{\mathord{\unicode{x02310}}}}
+
+\CustomizeMathJax{\newcommand{\mathvisiblespace}{\mathord{\unicode{x02423}}}}
+\CustomizeMathJax{\newcommand{\mdlgblksquare}{\mathord{\unicode{x025A0}}}}
+\CustomizeMathJax{\newcommand{\mdlgwhtsquare}{\mathord{\unicode{x025A1}}}}
+
+\CustomizeMathJax{\newcommand{\bigblacktriangleup}{\mathord{\unicode{x025B2}}}}
+\CustomizeMathJax{\newcommand{\varbigtriangleup}{\mathord{\unicode{x025B3}}}}
+
+\CustomizeMathJax{\newcommand{\bigblacktriangledown}{\mathord{\unicode{x025BC}}}}
+\CustomizeMathJax{\newcommand{\varbigtriangledown}{\mathord{\unicode{x025BD}}}}
+\CustomizeMathJax{\newcommand{\Longmapsfrom}{\mathrel{\unicode{x027FD}}}}
+
+% bug in print font:
+\CustomizeMathJax{\newcommand{\mdlgblkdiamond}{\mathord{\unicode{x025C6}}}}
+
+\CustomizeMathJax{\newcommand{\mdlgwhtdiamond}{\mathord{\unicode{x025C7}}}}
+\CustomizeMathJax{\newcommand{\Longmapsto}{\mathrel{\unicode{x027FE}}}}
+\CustomizeMathJax{\newcommand{\fisheye}{\mathord{\unicode{x025C9}}}}
+\CustomizeMathJax{\newcommand{\mdlgwhtlozenge}{\mathord{\unicode{x025CA}}}}
+\CustomizeMathJax{\newcommand{\mdlgwhtcircle}{\mathbin{\unicode{x025CB}}}}
+\CustomizeMathJax{\newcommand{\bullseye}{\mathord{\unicode{x025CE}}}}
+\CustomizeMathJax{\newcommand{\mdlgblkcircle}{\mathord{\unicode{x025CF}}}}
+
+\CustomizeMathJax{\newcommand{\Nwarrow}{\mathrel{\unicode{x021D6}}}}
+\CustomizeMathJax{\newcommand{\Nearrow}{\mathrel{\unicode{x021D7}}}}
+\CustomizeMathJax{\newcommand{\Searrow}{\mathrel{\unicode{x021D8}}}}
+\CustomizeMathJax{\newcommand{\Swarrow}{\mathrel{\unicode{x021D9}}}}
+
+\CustomizeMathJax{\newcommand{\Mapsfrom}{\mathord{\unicode{x02906}}}}
+\CustomizeMathJax{\newcommand{\smwhtcircle}{\mathord{\unicode{x025E6}}}}
+\CustomizeMathJax{\newcommand{\smwhtdiamond}{\mathbin{\unicode{x022C4}}}}
+\CustomizeMathJax{\newcommand{\Mapsto}{\mathord{\unicode{x02907}}}}
+
+\CustomizeMathJax{\let\ngets\nleftarrow}
+\CustomizeMathJax{\let\nsimeq\nsime}
+\CustomizeMathJax{\let\nle\nleq}
+\CustomizeMathJax{\let\nge\ngeq}
+
+\end{warpMathJax}
+% \end{macrocode}
+%
% \iffalse
+%</libertinust1math>
+% \fi
+%
+%
+% \iffalse
%<*lineno>
% \fi
%
@@ -55684,6 +61823,7 @@
% \pkg{lineno} is partly emulated, but mostly ignored.
%
% \changes{v0.49}{2018/02/19}{\pkg{lineno}: Added.}
+% \changes{v0.892}{2020/10/02}{\pkg{lineno}: Fix for \env{internallinenumbers*}.}
%
% \codehtml
%
@@ -55749,7 +61889,7 @@
\newcommand\internallinenumbers{}
\let\endinternallinenumbers\endlinenumbers
-\@namedef{internallinenumbers*}{\internallinenumbers*}
+\@namedef{internallinenumbers*}{\internallinenumbers}
\expandafter\let\csname endinternallinenumbers*\endcsname\endlinenumbers
\newcommand*{\linenoplaceholder}[1]{% redefine per language
@@ -55880,16 +62020,12 @@
%
% \changes{v0.20}{2017/01/01}{\pkg{listings}: Added.}
%
-% \codehtml
-% \begin{macrocode}
-\begin{warpHTML}
-% \end{macrocode}
%
-%
% \begin{macrocode}
\LWR at ProvidesPackagePass{listings}[2018/09/02]
% \end{macrocode}
+%
% ^^A For passing optional arguments to an environment, see:
% ^^A \href
% ^^A {http://tex.stackexchange.com/questions/9035/how-to-pass-an-optional-argument-to-an-environment-with-verbatim-content}
@@ -55920,6 +62056,7 @@
% Use the \pkg{listings} \optn{literate} option to replace
% \HTML\ entities:
% \changes{v0.60}{2018/09/12}{\pkg{listings}: Fix for \HTML\ entities.}
+% \changes{v0.891}{2020/09/21}{\pkg{listings}: Improved \HTML\ sanitizing.}
% \begin{macrocode}
\def\lstset@#1{\endgroup%
% \ifx\@empty#1%
@@ -55930,7 +62067,17 @@
,literate=%
{<}{\HTMLentity{lt}}{4}%
{>}{\HTMLentity{gt}}{4}%
- {\&}{\HTMLentity{amp}}{5}%
+ {'}{\HTMLentity{apos}}{6}%
+ {`}{\HTMLentity{grave}}{7}%
+% \end{macrocode}
+% The ampersand is not treated here, as the result is inconsistent spacing.
+% It is nevertheless converted to |&| elsewhere.
+% Sanitizing the double quote interferes with \pkg{listings}' conversion of
+% visible spaces inside strings.
+% \changes{v0.891}{2020/09/21}{\pkg{listings}: Improved spacing around ampersand.}
+% ^^A {"}{\HTMLentity{quot}}{6}%
+% ^^A {\&}{\HTMLentity{amp}}{5}% inconsistent spacing
+% \begin{macrocode}
}%
% \fi%
}
@@ -55949,6 +62096,15 @@
% \changes{v0.51}{2018/03/17}{\pkg{listings}: Forces cleared options.}
% \begin{macrocode}
\LWR at traceinfo{lst at Init}%
+% \end{macrocode}
+%
+% \cs{LWR at forcenewpage} is moved to the start to avoid a spurrious bug
+% with paragraph handling and conditionals.
+% \changes{v0.891}{2020/09/16}{\pkg{listings}: Fix for \brand{MathJax}: Moved \cs{LWR at forcenewpage} to start.}
+% \begin{macrocode}
+\lst at ifdisplaystyle%
+ \LWR at forcenewpage%
+\fi%
\renewcommand*{\@captype}{lstlisting}%
\let\lst at aboveskip\z@\let\lst at belowskip\z@%
\gdef\lst at boxpos{t}%
@@ -55976,18 +62132,24 @@
% produce the \element{pre}, then
% reenable line numbers.
% \begin{macrocode}
-\LWR at traceinfo{About to create verbatim.}%
-\let\lsthk at EveryPar\relax%
-\LWR at forcenewpage
-\LWR at atbeginverbatim{2}{programlisting}%
+ \LWR at traceinfo{About to create verbatim.}%
+ \let\lsthk at EveryPar\relax%
+% \end{macrocode}
+% \changes{v0.891}{2020/09/16}{\pkg{listings}: Fix for \brand{MathJax}: Moved \cs{LWR at forcenewpage} to start.}
+% \begin{macrocode}
+ \LWR at atbeginverbatim{programlisting}%
-\let\lsthk at EveryPar\LWR at origlsthkEveryPar%
+ \let\lsthk at EveryPar\LWR at origlsthkEveryPar%
\else%
% \end{macrocode}
% Inline, so open a \element{span}:
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
-\ifbool{LWR at verbtags}{\LWR at htmltag{span class="inlineprogramlisting"}}{}%
+ \ifbool{LWR at verbtags}{\LWR at htmltag{%
+ span class=\textquotedbl{}inlineprogramlisting\textquotedbl%
+ }}{}%
\fi%
+\LWR at traceinfo{lst at Init done}%
}
% \end{macrocode}
@@ -56005,14 +62167,14 @@
% produce the \element{/pre}, then
% reenable line numbers:
% \begin{macrocode}
-\let\lsthk at EveryPar\relax%
-\LWR at afterendverbatim{0}%
-\let\lsthk at EveryPar\LWR at origlsthkEveryPar%
+ \let\lsthk at EveryPar\relax%
+ \LWR at afterendverbatim%
+ \let\lsthk at EveryPar\LWR at origlsthkEveryPar%
\else%
% \end{macrocode}
% Inline, so create the closing \element{/span}:
% \begin{macrocode}
-\ifbool{LWR at verbtags}{\noindent\LWR at htmltag{/span}}{}%
+ \ifbool{LWR at verbtags}{\noindent\LWR at htmltag{/span}}{}%
\fi%
% \end{macrocode}
% Final \pkg{listings} deinit:
@@ -56030,6 +62192,7 @@
%
% Patched for \pkg{lwarp}.
% \begin{macrocode}
+
\def\lst at MakeCaption#1{%
\LWR at traceinfo{MAKING CAPTION at #1}%
\lst at ifdisplaystyle
@@ -56047,8 +62210,10 @@
\lst at ifnolol\else
\ifx\lst@@caption\@empty
\ifx\lst at caption\@empty
- \ifx\lst at intname\@empty \else \def\lst at temp{ }%
- \ifx\lst at intname\lst at temp \else
+ \ifx\lst at intname\@empty
+ \else
+ \def\lst at temp{ }%
+ \ifx\lst at intname\lst at temp \else
% \end{macrocode}
% This code places a contents entry for a non-float.
% This would have to be modified for \pkg{lwarp}:
@@ -56055,7 +62220,8 @@
% \begin{macrocode}
\LWR at traceinfo{addcontents lst at name: -\lst at name-}%
% \addcontentsline{lol}{lstlisting}{\lst at name}
- \fi\fi
+ \fi
+ \fi
\fi
\else
% \end{macrocode}
@@ -56094,9 +62260,9 @@
% \begin{macrocode}
% \lst at maketitle\lst at title % (AS)
\LWR at traceinfo{Making title: \lst at title}%
-\begin{BlockClass}{lstlistingtitle}% lwarp
-\lst at maketitle\lst at title% lwarp
-\end{BlockClass}% lwarp
+\begin{BlockClass}{lstlistingtitle}% lwarp
+\lst at maketitle\lst at title% lwarp
+\end{BlockClass}% lwarp
\fi
\LWR at traceinfo{About to assign label: !\lst at label!}%
\ifx\lst at label\@empty\else
@@ -56118,6 +62284,11 @@
\fi
\LWR at traceinfo{DONE WITH CAPTION at #1}%
}
+
+\renewcommand{\lst at maketitle}[1]{%
+ \LWR at isolate{#1}%
+}%
+
% \end{macrocode}
% \end{noindmacro}
%
@@ -56152,10 +62323,6 @@
}{\PackageError{lwarp-listings}{Numbers #1 unknown}\@ehc}}
% \end{macrocode}
%
-% \begin{macrocode}
-\end{warpHTML}
-% \end{macrocode}
-
% \iffalse
%</listings>
% \fi
@@ -56308,13 +62475,20 @@
% not at each caption.
%
% Options [c], [l], and [r] are ignored.
+%
+% \changes{v0.84}{2020/04/20}{\pkg{caption} now optional.}
+%
% \begin{macrocode}
\newenvironment{longtable*}[2][]{%
\LWR at floatbegin{table}%
- \setcaptiontype{\LTcaptype}%
- \caption at setoptions{longtable}%
- \caption at setoptions{@longtable}%
- \caption at LT@setup%
+ \ifdef{\setcaptiontype}{% caption package:
+ \setcaptiontype{\LTcaptype}%
+ \caption at setoptions{longtable}%
+ \caption at setoptions{@longtable}%
+ \caption at LT@setup%
+ }{% w/o caption package:
+ \renewcommand*{\@captype}{\LTcaptype}%
+ }%
\booltrue{LWR at starredlongtable}%
\boolfalse{LWR at longtable@havehead}%
\let\captionlistentry\LWR at LTcaptionlistentry%
@@ -56324,10 +62498,14 @@
\newenvironment{longtable}[2][]{%
\LWR at floatbegin{table}%
- \setcaptiontype{\LTcaptype}%
- \caption at setoptions{longtable}%
- \caption at setoptions{@longtable}%
- \caption at LT@setup%
+ \ifdef{\setcaptiontype}{% caption package:
+ \setcaptiontype{\LTcaptype}%
+ \caption at setoptions{longtable}%
+ \caption at setoptions{@longtable}%
+ \caption at LT@setup%
+ }{% w/o caption package:
+ \renewcommand*{\@captype}{\LTcaptype}%
+ }%
\refstepcounter{\LTcaptype}%
\boolfalse{LWR at longtable@havehead}%
\let\captionlistentry\LWR at LTcaptionlistentry%
@@ -56345,7 +62523,7 @@
% Error for heads which should have been in \cs{warpprintonly}:
% \begin{macrocode}
\newcommand*{\LWR at longtable@headerror}{%
- \PackageError{lwarp}
+ \PackageError{lwarp-longtable}
{For longtable:\MessageBreak
1: Keep either one of an \protect\endhead\space or
\protect\endfirsthead\space\MessageBreak
@@ -56430,9 +62608,45 @@
%
%
%
+% \iffalse
+%<*lpic>
+% \fi
%
+% \part{lwarp-lpic.sty}
%
+% \section{lpic}
+%
+% \credits{R. Matveyev}
+%
+% \DescribePackage{lpic}
+% \pkg{lpic} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.895}{2021/01/19}{\pkg{lpic}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{lpic}[2010/12/23]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\BeforeBeginEnvironment{lpic}{%
+ \begin{lateximage}[-lpic-~\PackageDiagramAltText]%
+}
+
+\AfterEndEnvironment{lpic}{\end{lateximage}}
+% \end{macrocode}
+%
% \iffalse
+%</lpic>
+% \fi
+%
+%
+%
+%
+%
+%
+% \iffalse
%<*lscape>
% \fi
@@ -56604,7 +62818,7 @@
%
% The print version does not seem to honor \env{longtable*} from the
% \trouble[table numbering]{ltxtable=\pkg{ltxtable}>numbering}
-% \trouble{table>numbering}
+% \trouble{table>numbering>ltextable=\pkg{ltxtable}}
% \pkg{caption} package, while \pkg{lwarp} does.
%
% \changes{v0.44}{2017/11/15}{\pkg{ltxtable}: Added.}
@@ -56937,7 +63151,7 @@
\let\LWRTODONOTES at orig@todototoc\todototoc
\renewcommand*{\todototoc}{%
-\phantomsection%
+\LWR at phantomsection%
\LWRTODONOTES at orig@todototoc%
}
@@ -57019,8 +63233,43 @@
%
%
%
+% \iffalse
+%<*luavlna>
+% \fi
%
+% \part{lwarp-luavlna.sty}
+%
+% \section{luavlna}
+%
+% \credits{Michal Hoftich, Miro Hrončok}
+%
+% \DescribePackage{luavlna}
+% \pkg{luavlna} is patched for use by \pkg{lwarp}.
+%
+% The package is disabled for \HTML\ output, due to incompatibilities with
+% \pkg{lwarp}'s handling of math \SVG\ images.
+%
+% \changes{v0.895}{2020/01/13}{\pkg{luavlna}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{luavlna}[2019/10/30]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\preventsingleoff
+\LetLtxMacro\preventsingleon\preventsingleoff
+% \end{macrocode}
+%
% \iffalse
+%</luavlna>
+% \fi
+%
+%
+%
+%
+% \iffalse
%<*lyluatex>
% \fi
%
@@ -57104,7 +63353,7 @@
% This allows for correct spacing in the musical score.
% \changes{v0.74}{2019/08/13}{\pkg{lyluatex}: Adapts to user's geometry.}
% \begin{macrocode}
- \LWR at orignewpage%
+ \LWR at maybe@orignewpage%
\LWR at origloadgeometry{LWR at usergeometry}%
\LWR at print@normalsize%
% \end{macrocode}
@@ -57161,7 +63410,7 @@
% \end{macrocode}
% Move to a new page and renew the regular page geometry:
% \begin{macrocode}
- \LWR at orignewpage%
+ \LWR at maybe@orignewpage%
\LWR at origrestoregeometry%
% \end{macrocode}
% End of the local group.
@@ -57257,7 +63506,7 @@
% \changes{v0.58}{2018/06/13}{Fix: Extra \cs{newpage} to flush pending \cs{index} writes.}
% \begin{macrocode}
\preto\printindex{%
- \LWR at orignewpage%
+ \LWR at maybe@orignewpage%
\LWR at startpars%
}
% \end{macrocode}
@@ -57596,6 +63845,122 @@
%
%
% \iffalse
+%<*mathalpha>
+% \fi
+%
+% \part{lwarp-mathalpha.sty}
+%
+% \section{mathalpha}
+%
+% \credits{Michael Sharpe}
+%
+% \DescribePackage{mathalpha}
+% \pkg{mathalpha} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation ignores all package options,
+% \trouble[limitations]{mathalpha=\pkg{mathalpha}}
+% and some bold fonts may not be not supported by \brand{MathJax}.
+%
+% \changes{v0.89}{2020/08/31}{\pkg{mathalpha}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{mathalpha}[2019/10/05]
+
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\mathbbb}[1]{\boldsymbol{\mathbb{#1}}}}% not bold
+\CustomizeMathJax{\newcommand{\mathbcal}[1]{\boldsymbol{\mathcal{#1}}}}
+\CustomizeMathJax{\newcommand{\mathbfrak}[1]{\boldsymbol{\mathfrak{#1}}}}
+\CustomizeMathJax{\newcommand{\mathbscr}[1]{\boldsymbol{\mathscr{#1}}}}% not bold
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</mathalpha>
+% \fi
+%
+%
+%
+%
+% \iffalse
+%<*mathastext>
+% \fi
+%
+% \part{lwarp-mathastext.sty}
+%
+% \section{mathastext}
+%
+% \credits{Jean-Fran\c{c}ois Burnol}
+%
+% \DescribePackage{mathastext}
+% \pkg{mathastext} is used as-is for \SVG\ math,
+% and emulated for \brand{MathJax}.
+%
+% \changes{v0.893}{2020/10/14}{\pkg{mathastext}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{mathastext}[2019/11/16]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+\ifmst at itgreek
+% \LWR at mathjax@addgreek at l@it{}{}
+\else
+ \ifmst at upgreek
+ \LWR at mathjax@addgreek at l@up{}{}
+ \else
+ \ifmst at frenchmath
+ \LWR at mathjax@addgreek at l@up{}{}
+ \else
+ \ifmst at italic
+% \LWR at mathjax@addgreek at l@it{}{}
+ \else
+ \LWR at mathjax@addgreek at l@up{}{}
+ \fi
+ \fi
+ \fi
+\fi
+
+\ifcase\mst at greek@select
+ \or{\LWR at mathjax@addgreek at u@it*{}{}}
+% \or{\LWR at mathjax@addgreek at u@up*{}{}}
+\fi
+
+\CustomizeMathJax{\newcommand{\mathnormalbold}[1]{\boldsymbol{#1}}}
+\CustomizeMathJax{\newcommand{\MathEulerBold}[1]{\boldsymbol{#1}}}
+\CustomizeMathJax{\newcommand{\MathEuler}[1]{{#1}}}
+\CustomizeMathJax{\newcommand{\MathPSymbol}[1]{{#1}}}
+\CustomizeMathJax{\let\fouriervec\vec}
+\CustomizeMathJax{\let\pmvec\vec}
+\CustomizeMathJax{\let\inodot\imath}
+\CustomizeMathJax{\let\jnodot\jmath}
+\CustomizeMathJax{\let\shortiff\iff}
+\CustomizeMathJax{\let\longto\longrightarrow}
+\CustomizeMathJax{\newcommand{\inftypsy}{\mathord{\unicode{x221E}}}}
+\CustomizeMathJax{\newcommand{\proptopsy}{\mathrel{\unicode{x221D}}}}
+\CustomizeMathJax{\let\prodpsy\prod}
+\CustomizeMathJax{\let\sumpsy\sum}
+\CustomizeMathJax{\let\MToriginalprod\prod}
+\CustomizeMathJax{\let\MToriginalsum\sum}
+\CustomizeMathJax{\newcommand{\DotTriangle}{\mathord{\unicode{x2234}}}}
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</mathastext>
+% \fi
+%
+%
+%
+%
+% \iffalse
%<*mathcomp>
% \fi
%
@@ -57636,7 +64001,131 @@
%
%
%
+%
% \iffalse
+%<*mathdesign>
+% \fi
+%
+% \part{lwarp-mathdesign.sty}
+%
+% \section{mathdesign}
+%
+% \credits{Paul Pichaureau}
+%
+% \DescribePackage{mathdesign}
+% \pkg{mathdesign} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation ignores all package options
+% \trouble[limitations]{mathdesign=\pkg{mathdesign}}
+% except \optn{greekuppercase} and \optn{greeklowercase}.
+% The dedicated macros for upright and italic greek letters work correctly,
+% although the user may wish to swap the definitions for
+% epsilon and phi.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.89}{2020/08/08}{\pkg{mathdesign}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{mathdesign}[2013/08/29]
+% \end{macrocode}
+%
+% For \brand{MathJax}:
+% \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\LWR at origRequirePackage{lwarp-common-mathjax-overlaysymbols}
+
+\begin{warpMathJax}
+\LWR at infoprocessingmathjax{mathdesign}
+% \end{macrocode}
+
+% Default greek upright or italicized:
+%
+% \changes{v0.891}{2020/09/06}{\pkg{mathdesign}: Honors \optn{greekuppercase},
+% \optn{greeklowercase}.}
+% \begin{macrocode}
+\if at MD@grupright
+\LWR at mathjax@addgreek at l@up{}{}
+\fi
+
+\if at MD@GRupright
+\else
+\LWR at mathjax@addgreek at u@it*{}{}
+\fi
+% \end{macrocode}
+%
+% Upright:
+% \begin{macrocode}
+\LWR at mathjax@addgreek at l@up{}{up}
+\LWR at mathjax@addgreek at u@up*{}{up}
+% \end{macrocode}
+%
+% Italicized:
+% \begin{macrocode}
+\LWR at mathjax@addgreek at l@it{}{it}
+\LWR at mathjax@addgreek at u@it*{}{it}
+% \end{macrocode}
+%
+% Adapt to \pkg{mathdesign} inconsistency:
+% \begin{macrocode}
+\CustomizeMathJax{\let\digammaup\Digammaup}
+\CustomizeMathJax{\renewcommand{\digammait}{\mathit{\digammaup}}}
+% \end{macrocode}
+%
+% Extra symbols:
+% \changes{v0.891}{2020/09/08}{\pkg{mathdesign}: Added \cs{mathrel}, \cs{mathord}.}
+% \begin{macrocode}
+\CustomizeMathJax{\newcommand{\smallin}{\mathrel{\unicode{x220A}}}}
+\CustomizeMathJax{\newcommand{\smallowns}{\mathrel{\unicode{x220D}}}}
+\CustomizeMathJax{\newcommand{\notsmallin}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x220A}}}}}
+\CustomizeMathJax{\newcommand{\notsmallowns}{\mathrel{\LWRoverlaysymbols{/}{\unicode{x220D}}}}}
+\CustomizeMathJax{\newcommand{\rightangle}{\mathord{\unicode{x221F}}}}
+% \end{macrocode}
+%
+% Integrals:
+% \changes{v0.891}{2020/09/08}{\pkg{mathdesign}: Added \cs{mathop}.}
+% \begin{macrocode}
+\CustomizeMathJax{\newcommand{\intclockwise}{\mathop{\unicode{x2231}}\limits}}
+\CustomizeMathJax{\newcommand{\ointclockwise}{\mathop{\unicode{x2232}}\limits}}
+\CustomizeMathJax{\newcommand{\ointctrclockwise}{\mathop{\unicode{x2233}}\limits}}
+\CustomizeMathJax{\newcommand{\oiint}{\mathop{\unicode{x222F}}\limits}}
+\CustomizeMathJax{\newcommand{\oiiint}{\mathop{\unicode{x2230}}\limits}}
+% \end{macrocode}
+%
+% Math and text mode:
+% \begin{macrocode}
+\CustomizeMathJax{\newcommand{\ddag}{\unicode{x2021}}}
+\CustomizeMathJax{\newcommand{\P}{\unicode{x00B6}}}
+\CustomizeMathJax{\newcommand{\copyright}{\unicode{x00A9}}}
+\CustomizeMathJax{\newcommand{\dag}{\unicode{x2020}}}
+\CustomizeMathJax{\newcommand{\pounds}{\unicode{x00A3}}}
+% \end{macrocode}
+%
+% Extra symbols:
+% \changes{v0.891}{2020/09/08}{\pkg{mathdesign}: Added \cs{mathinner}, \cs{mathbin}.}
+% \begin{macrocode}
+\CustomizeMathJax{\newcommand{\iddots}{\mathinner{\unicode{x22F0}}}}
+\CustomizeMathJax{\newcommand{\utimes}{\mathbin{\overline{\times}}}}
+\CustomizeMathJax{\newcommand{\dtimes}{\mathbin{\underline{\times}}}}
+\CustomizeMathJax{\newcommand{\udtimes}{\mathbin{\overline{\underline{\times}}}}}
+\CustomizeMathJax{\newcommand{\leftwave}{\left\{}}
+\CustomizeMathJax{\newcommand{\rightwave}{\right\}}}
+
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</mathdesign>
+% \fi
+%
+%
+%
+%
+% \iffalse
%<*mathdots>
% \fi
%
@@ -57651,6 +64140,7 @@
% emulated for \brand{MathJax}.
%
% \changes{v0.80}{2020/02/16}{\pkg{mathdots}: Added.}
+% \changes{v0.891}{2020/09/08}{\pkg{mathdots}: Added more macros, \cs{mathinner}.}
%
% \codehtml
%
@@ -57660,7 +64150,15 @@
%
% \begin{macrocode}
\begin{warpMathJax}
-\CustomizeMathJax{\newcommand{\iddots}{\unicode{x22F0}}}
+\CustomizeMathJax{\newcommand{\iddots}{\mathinner{\unicode{x22F0}}}}
+\CustomizeMathJax{\let\fixedddots\ddots}
+\CustomizeMathJax{\let\fixedvdots\vdots}
+\CustomizeMathJax{\let\fixediddots\iddots}
+\CustomizeMathJax{\let\originalddots\ddots}
+\CustomizeMathJax{\let\originalvdots\vdots}
+\CustomizeMathJax{\let\originaliddots\iddots}
+\CustomizeMathJax{\let\originaldddot\dddot}
+\CustomizeMathJax{\let\originalddddot\ddddot}
\end{warpMathJax}
% \end{macrocode}
%
@@ -57688,6 +64186,7 @@
% Greek letters are unchanged.\watchout
%
% \changes{v0.80}{2020/02/09}{\pkg{mathfixs}: Added.}
+% \changes{v0.891}{2020/09/08}{\pkg{mathfixs}: Added \cs{mathinner}.}
%
% \codehtml
%
@@ -57698,7 +64197,7 @@
% \begin{macrocode}
\begin{warpMathJax}
\CustomizeMathJax{\newcommand{\rfrac}[2]{\tfrac{#1}{#2}}}
-\CustomizeMathJax{\newcommand{\vfrac}[2]{{}^{#1}\!/{}_{#2}}}
+\CustomizeMathJax{\newcommand{\vfrac}[2]{\mathinner{{}^{#1}\!/{}_{#2}}}}
\CustomizeMathJax{\newcommand{\ProvideMathFix}[1]{}}
\CustomizeMathJax{\newcommand{\mathbold}[1]{\boldsymbol{#1}}}
\CustomizeMathJax{\newcommand{\.}{\,}}
@@ -57714,6 +64213,234 @@
%
%
% \iffalse
+%<*mathpazo>
+% \fi
+%
+% \part{lwarp-mathpazo.sty}
+%
+% \section{mathpazo}
+%
+% \credits{Walter Schmidt}
+%
+% \DescribePackage{mathpazo}
+% \pkg{mathpazo} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation ignores all package options.
+% \trouble[limitations]{mathpazo=\pkg{mathpazo}}
+% The dedicated macros for upright greek letters do work correctly.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.89}{2020/08/10}{\pkg{mathpazo}: Added.}
+% \changes{v0.891}{2020/09/06}{\pkg{mathpazo}: Honors \optn{slantedGreek}.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{mathpazo}[2020/03/25]
+% \end{macrocode}
+%
+% For \brand{MathJax}:
+% \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+\LWR at infoprocessingmathjax{mathpazo}
+
+\ifpazo at slGreek
+\LWR at mathjax@addgreek at u@it*{}{}
+\fi
+
+\LWR at mathjax@addgreek at u@up*{up}{}
+
+\CustomizeMathJax{\newcommand{\mathbold}[1]{\boldsymbol{#1}}}
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</mathpazo>
+% \fi
+%
+%
+%
+% \iffalse
+%<*mathptmx>
+% \fi
+%
+% \part{lwarp-mathptmx.sty}
+%
+% \section{mathptmx}
+%
+% \credits{Walter Schmidt}
+%
+% \DescribePackage{mathptmx}
+% \pkg{mathptmx} is used as-is for \SVG\ math, and is
+% emulated for \brand{MathJax}.
+%
+% The \brand{MathJax} emulation ignores all package options.
+% \trouble[limitations]{mathptmx=\pkg{mathptmx}}
+% The dedicated macros for upright greek letters do work correctly.
+%
+% \SVG\ math should appear the same as the printed output.
+%
+% \changes{v0.89}{2020/08/10}{\pkg{mathptmx}: Added.}
+% \changes{v0.891}{2020/09/06}{\pkg{mathptmx}: Honors \optn{slantedGreek}.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{mathptmx}[2020/03/25]
+% \end{macrocode}
+%
+% For \brand{MathJax}:
+% \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+\LWR at infoprocessingmathjax{mathptmx}
+
+\@ifpackagewith{mathptmx}{slantedGreek}
+ {\LWR at mathjax@addgreek at u@it*{}{}}
+ {}
+
+\LWR at mathjax@addgreek at u@up*{up}{}
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</mathptmx>
+% \fi
+%
+%
+%
+%
+% \iffalse
+%<*mathspec>
+% \fi
+%
+% \part{lwarp-mathspec.sty}
+%
+% \section{mathspec}
+%
+% \credits{Andrew Gilbert Moschou}
+%
+% \DescribePackage{mathspec}
+% \pkg{mathspec} is used as-is with \SVG\ math,
+% and is emulated for \brand{MathJax}.
+%
+% Double quotes (\cs{"} and the |"| character)
+% \trouble[quotes]{mathspec=\pkg{mathspec}}
+% are removed during \brand{MathJax} emulation,
+% but this also includes inside \cs{text}.
+%
+% \changes{v0.893}{2020/11/22}{\pkg{mathspec}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{mathspec}[2016/12/22]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\LWR at origRequirePackage{lwarp-common-mathjax-letters}
+
+\begin{warpMathJax}
+% \end{macrocode}
+%
+% Neutralize double quotes (|"| and \cs{"}):
+% \begin{macrocode}
+\booltrue{LWR at MathJax@silentquotes}
+% \end{macrocode}
+%
+% Sort options for out Greek emulation:
+% \begin{macrocode}
+\AtBeginDocument{
+\ifcase\eu at GreekUppercase@@value %% If Greek Uppercase Regular
+ \LWR at mathjax@addgreek at u@up*{}{}
+\or %% If Greek Uppercase Italic
+ \LWR at mathjax@addgreek at u@it*{}{}
+\or %% If Greek Uppercase Plain
+ \LWR at mathjax@addgreek at u@up*{}{}
+\fi
+\ifcase\eu at GreekLowercase@@value %% If Greek Lowercase Regular
+ \LWR at mathjax@addgreek at l@up{}{}
+\or %% If Greek Lowercase Italic
+ \LWR at mathjax@addgreek at l@it{}{}
+\or %% If Greek Lowercase Plain
+ \LWR at mathjax@addgreek at l@it{}{}
+\fi
+}
+% \end{macrocode}
+%
+% Swap definitions according the \pkg{mathspec} conditionals:
+% \begin{macrocode}
+\newcommand*{\LWR at mathspec@varforms}{%
+\eu at ifbooltrue{GreekLowercase}{
+ \eu at ifbooltrue{exchangebetaforms}{
+ \CustomizeMathJax{\let\LWRorigbeta\beta}
+ \CustomizeMathJax{\let\beta\varbeta}
+ \CustomizeMathJax{\let\varbeta\LWRorigbeta}
+ }
+ \eu at ifbooltrue{exchangeepsilonforms}{
+ \CustomizeMathJax{\let\LWRorigepsilon\epsilon}
+ \CustomizeMathJax{\let\epsilon\varepsilon}
+ \CustomizeMathJax{\let\varepsilon\LWRorigepsilon}
+ }
+ \eu at ifbooltrue{exchangethetaforms}{
+ \CustomizeMathJax{\let\LWRorigtheta\theta}
+ \CustomizeMathJax{\let\theta\vartheta}
+ \CustomizeMathJax{\let\vartheta\LWRorigtheta}
+ }
+ \eu at ifbooltrue{exchangekappaforms}{
+ \CustomizeMathJax{\let\LWRorigkappa\kappa}
+ \CustomizeMathJax{\let\kappa\varkappa}
+ \CustomizeMathJax{\let\varkappa\LWRorigkappa}
+ }
+ \eu at ifbooltrue{exchangepiforms}{
+ \CustomizeMathJax{\let\LWRorigpi\pi}
+ \CustomizeMathJax{\let\pi\varpi}
+ \CustomizeMathJax{\let\varpi\LWRorigpi}
+ }
+ \eu at ifbooltrue{exchangerhoforms}{
+ \CustomizeMathJax{\let\LWRorigrho\rho}
+ \CustomizeMathJax{\let\rho\varrho}
+ \CustomizeMathJax{\let\varrho\LWRorigrho}
+ }
+ \eu at ifbooltrue{exchangephiforms}{
+ \CustomizeMathJax{\let\LWRorigphi\phi}
+ \CustomizeMathJax{\let\phi\varphi}
+ \CustomizeMathJax{\let\varphi\LWRorigphi}
+ }
+}
+\eu at ifbooltrue{GreekUppercase}{
+ \eu at ifbooltrue{exhangeThetaforms}{
+ \CustomizeMathJax{\let\LWRorigTheta\Theta}
+ \CustomizeMathJax{\let\Theta\varTheta}
+ \CustomizeMathJax{\let\varTheta\LWRorigTheta}
+ }
+}
+}
+% \end{macrocode}
+%
+% Append new action to \pkg{mathspec}'s \cs{AtBeginDocument} code:
+% \begin{macrocode}
+\xapptocmd{\exchangeforms}
+ {\AtBeginDocument{\LWR at mathspec@varforms}}
+ {}
+ {\LWR at patcherror{mathspec}{exchangeforms}}
+
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</mathspec>
+% \fi
+%
+%
+%
+%
+% \iffalse
%<*mathtools>
% \fi
%
@@ -57777,6 +64504,9 @@
% For \brand{MathJax}:
%
% \changes{v0.79}{2020/01/26}{\pkg{mathtools}: Added \brand{MathJax} emulation.}
+% \changes{v0.87}{2020/05/20}{\pkg{mathtools}: Updated starred macros.}
+% \changes{v0.87}{2020/05/20}{\pkg{mathtools}: Improved \cs{underbraket}, \cs{overbracket}.}
+% \changes{v0.891}{2020/09/19}{\pkg{mathtools}: Improved \cs{underbraket}, \cs{overbracket}.}
% \begin{macrocode}
\begin{warpMathJax}
\LWR at infoprocessingmathjax{mathtools}
@@ -57794,7 +64524,16 @@
\CustomizeMathJax{\newcommand{\crampedclap}[2][]{{#1#2}}}
\CustomizeMathJax{\newenvironment{crampedsubarray}[1]{}{}}
\CustomizeMathJax{\newcommand{\crampedsubstack}{}}
-\CustomizeMathJax{\newcommand{\smashoperator}[2][]{#2}}
+% \end{macrocode}
+% \changes{v0.89}{2020/08/21}{\pkg{mathtools}: Minor improvements.}
+% \begin{macrocode}
+\CustomizeMathJax{\newcommand{\smashoperator}[2][]{#2\limits}}
+% \end{macrocode}
+% \changes{v0.89}{2020/08/21}{\pkg{mathtools}: Added \cs{adjustlimits}.}
+% \begin{macrocode}
+\CustomizeMathJax{\newcommand{\adjustlimits}{}}
+% \end{macrocode}
+% \begin{macrocode}
\CustomizeMathJax{\newcommand{\SwapAboveDisplaySkip}{}}
\CustomizeMathJax{\require{extpfeil}}
@@ -57812,10 +64551,14 @@
\CustomizeMathJax{\Newextarrow\xleftharpoonup{10,10}{0x21bc}}
\CustomizeMathJax{\Newextarrow\xleftrightharpoons{10,10}{0x21cb}}
-\CustomizeMathJax{\newcommand{\LWRdounderbracket}[1]{\underline{#1}}}
+\CustomizeMathJax{\newcommand{\LWRdounderbracket}[3]{%
+ \mathinner{\underset{#3}{\underline{\llcorner{#1}\lrcorner}}}%
+}}
\CustomizeMathJax{\newcommand{\LWRunderbracket}[2][]{\LWRdounderbracket{#2}}}
\CustomizeMathJax{\newcommand{\underbracket}[1][]{\LWRunderbracket}}
-\CustomizeMathJax{\newcommand{\LWRdooverbracket}[1]{\overline{#1}}}
+\CustomizeMathJax{\newcommand{\LWRdooverbracket}[3]{%
+ \mathinner{\overset{#3}{\overline{\ulcorner{#1}\urcorner}}}%
+}}
\CustomizeMathJax{\newcommand{\LWRoverbracket}[2][]{\LWRdooverbracket{#2}}}
\CustomizeMathJax{\newcommand{\overbracket}[1][]{\LWRoverbracket}}
@@ -57863,37 +64606,107 @@
\def\LWRAboxed#1!|!{\fbox{\(#1\)}&\fbox{\(#2\)}}
\newcommand{\Aboxed}[1]{\LWRAboxed#1&&!|!}
}
-
+% \end{macrocode}
+%
+% \changes{v0.86}{2020/05/09}{\pkg{mathtools}: Added \cs{ArrowBetweenLines*}.}
+% \begin{macrocode}
\CustomizeMathJax{
- \newcommand{\ArrowBetweenLines}[1][\Updownarrow]{#1}% no starred
+ \newcommand{\LWRABLines}[1][\Updownarrow]{#1 \notag \\}% star/nostar the same
+ \newcommand{\ArrowBetweenLines}{\ifstar\LWRABLines\LWRABLines}
}
+% \end{macrocode}
+%
+% \changes{v0.85}{2020/05/01}{\pkg{mathtools}: Fixed: \cs{shortintertext}.}
+% \changes{v0.86}{2020/05/09}{\pkg{mathtools}: Added starred delimited macros.}
+% \begin{macrocode}
+\CustomizeMathJax{\newcommand{\shortintertext}[1]{\text{#1}\notag \\}}
-\CustomizeMathJax{\newcommand{\shortintertext}[1]{\\ \text{#1}\notag \\}}
+\CustomizeMathJax{\newcommand{\vdotswithin}[1]{\hspace{.5em}\vdots}}
+% \end{macrocode}
+%
+% \changes{v0.86}{2020/05/09}{\pkg{mathtools}: Added \cs{shortvdotswithin*}.}
+% \begin{macrocode}
+\CustomizeMathJax{\newcommand{\LWRshortvdotswithinstar}[1]{\vdots \hspace{.5em} & \\}}
+\CustomizeMathJax{\newcommand{\LWRshortvdotswithinnostar}[1]{& \hspace{.5em}\vdots \\}}
+\CustomizeMathJax{%
+ \newcommand{\shortvdotswithin}%
+ {\ifstar\LWRshortvdotswithinstar\LWRshortvdotswithinnostar}%
+}
-\CustomizeMathJax{\newcommand{\vdotswithin}[1]{\hspace{.5em}\vdots}}
-\CustomizeMathJax{\newcommand{\shortvdotswithin}[1]{ & \hspace{.5em}\vdots \\}}
\CustomizeMathJax{\newcommand{\MTFlushSpaceAbove}{}}
\CustomizeMathJax{\newcommand{\MTFlushSpaceBelow}{\\}}
-% The following does not create a starred version of the macro:
\LetLtxMacro\LWR at mathtools@orig at DeclarePairedDelimiter\DeclarePairedDelimiter
\renewcommand{\DeclarePairedDelimiter}[3]{
\LWR at mathtools@orig at DeclarePairedDelimiter{#1}{#2}{#3}
- \CustomizeMathJax{\newcommand{#1}[2][]{{##1#2##2##1#3}}}
+% starred:
+ \appto\LWR at customizedMathJax{\LWRbackslash(}
+ \appto\LWR at customizedMathJax{%
+ \LWRbackslash{}newcommand\{\LWRbackslash\macrotocsname{#1}LWRsubstar\}%
+ }%
+ \appto\LWR at customizedMathJax{[2][]}%
+ \appto\LWR at customizedMathJax{\{\{}%
+ \LWR at subcustomizedmathjax{##1\left#2##2##1\right#3}%
+ \appto\LWR at customizedMathJax{\}\}}%
+ \appto\LWR at customizedMathJax{\LWRbackslash)\par}%
+% not starred:
+ \appto\LWR at customizedMathJax{\LWRbackslash(}
+ \appto\LWR at customizedMathJax{%
+ \LWRbackslash{}newcommand\{\LWRbackslash\macrotocsname{#1}LWRsubnostar\}%
+ }%
+ \appto\LWR at customizedMathJax{[2][]}%
+ \appto\LWR at customizedMathJax{\{\{}%
+ \LWR at subcustomizedmathjax{##1#2##2##1#3}%
+ \appto\LWR at customizedMathJax{\}\}}%
+ \appto\LWR at customizedMathJax{\LWRbackslash)\par}%
+% user macro:
+ \appto\LWR at customizedMathJax{\LWRbackslash(}
+ \appto\LWR at customizedMathJax{%
+ \LWRbackslash{}newcommand\{\LWRbackslash{}\macrotocsname{#1}\}%
+ \{\LWRbackslash{}ifstar%
+ \LWRbackslash{}\macrotocsname{#1}LWRsubstar%
+ \LWRbackslash{}\macrotocsname{#1}LWRsubnostar%
+ \}%
+ }%
+ \appto\LWR at customizedMathJax{\LWRbackslash)\par}%
}
\@onlypreamble\DeclareParedDelimiter
% (DeclarePairedDelimiterX is already defined to use \DeclarePairedDelimiterXPP.)
-% The following does not create a starred version of the macro.
\LetLtxMacro\LWR at mathtools@orig at DeclarePairedDelimiterXPP\DeclarePairedDelimiterXPP
\DeclareDocumentCommand{\DeclarePairedDelimiterXPP}{m O{1} m m m m m}{
\LWR at mathtools@orig at DeclarePairedDelimiterXPP{#1}[#2]{#3}{#4}{#5}{#6}{#7}
+% subsubstar, second opt arg
\appto\LWR at customizedMathJax{\LWRbackslash(}%
\appto\LWR at customizedMathJax{%
- \LWRbackslash{}newcommand\{\LWRbackslash\macrotocsname{#1}LWRsub\}%
+ \LWRbackslash{}newcommand\{\LWRbackslash\macrotocsname{#1}LWRsubsubstar\}%
}%
\appto\LWR at customizedMathJax{[#2]}%
+ \appto\LWR at customizedMathJax{\{\{\LWRbackslash{}left}%
+ \LWR at subcustomizedmathjax{#3#4#7}%
+ \appto\LWR at customizedMathJax{\LWRbackslash{}right}%
+ \LWR at subcustomizedmathjax{#5#6}%
+ \appto\LWR at customizedMathJax{\}\}}%
+ \appto\LWR at customizedMathJax{\LWRbackslash)\par}%
+% substar, first opt arg
+ \appto\LWR at customizedMathJax{\LWRbackslash(}%
+ \appto\LWR at customizedMathJax{%
+ \LWRbackslash{}newcommand\{\LWRbackslash\macrotocsname{#1}LWRsubstar\}[1][]%
+ }%
+ \appto\LWR at customizedMathJax{%
+ \{
+ \LWRbackslash{}def\LWRbackslash{}delimsize\{\#1\}
+ \LWRbackslash\macrotocsname{#1}LWRsubsubstar
+ \}%
+ }%
+ \appto\LWR at customizedMathJax{\LWRbackslash)\par}%
+% subsubnostar, second opt arg
+ \appto\LWR at customizedMathJax{\LWRbackslash(}%
+ \appto\LWR at customizedMathJax{%
+ \LWRbackslash{}newcommand\{\LWRbackslash\macrotocsname{#1}LWRsubsubnostar\}%
+ }%
+ \appto\LWR at customizedMathJax{[#2]}%
\appto\LWR at customizedMathJax{\{\{\LWRbackslash{}delimsize}%
\LWR at subcustomizedmathjax{#3#4#7}%
\appto\LWR at customizedMathJax{\LWRbackslash{}delimsize}%
@@ -57900,17 +64713,30 @@
\LWR at subcustomizedmathjax{#5#6}%
\appto\LWR at customizedMathJax{\}\}}%
\appto\LWR at customizedMathJax{\LWRbackslash)\par}%
+% subnostar, first opt arg
\appto\LWR at customizedMathJax{\LWRbackslash(}%
\appto\LWR at customizedMathJax{%
- \LWRbackslash{}newcommand\{\LWRbackslash\macrotocsname{#1}\}[1][]%
+ \LWRbackslash{}newcommand\{\LWRbackslash\macrotocsname{#1}LWRsubnostar\}[1][]%
}%
\appto\LWR at customizedMathJax{%
\{
\LWRbackslash{}def\LWRbackslash{}delimsize\{\#1\}
- \LWRbackslash\macrotocsname{#1}LWRsub
+ \LWRbackslash\macrotocsname{#1}LWRsubsubnostar
\}%
}%
\appto\LWR at customizedMathJax{\LWRbackslash)\par}%
+% user macro:
+ \appto\LWR at customizedMathJax{\LWRbackslash(}
+ \appto\LWR at customizedMathJax{%
+ \LWRbackslash{}newcommand\{%
+ \LWRbackslash{}\macrotocsname{#1}%
+ \}%
+ \{\LWRbackslash{}ifstar%
+ \LWRbackslash{}\macrotocsname{#1}LWRsubstar%
+ \LWRbackslash{}\macrotocsname{#1}LWRsubnostar%
+ \}%
+ }%
+ \appto\LWR at customizedMathJax{\LWRbackslash)\par}%
}
\@onlypreamble\DeclareParedDelimiterXPP
\@onlypreamble\DeclareParedDelimiterX
@@ -57917,28 +64743,35 @@
\CustomizeMathJax{\newcommand\lparen{(}}
\CustomizeMathJax{\newcommand\rparen{)}}
-\CustomizeMathJax{\newcommand{\vcentcolon}{:}}
\CustomizeMathJax{\newcommand{\ordinarycolon}{:}}
+% \end{macrocode}
+% \changes{v0.89}{2020/08/21}{\pkg{mathtools}: Minor improvements.}
+% \changes{v0.891}{2020/09/08}{\pkg{mathtools}: Uses Unicode and \cs{mathrel}.}
+% \begin{macrocode}
+\CustomizeMathJax{\newcommand{\vcentcolon}{\mathrel{\unicode{x2236}}}}
-\CustomizeMathJax{\newcommand\dblcolon{\vcentcolon\vcentcolon}}
-\CustomizeMathJax{\newcommand\coloneqq{\vcentcolon=}}
-\CustomizeMathJax{\newcommand\Coloneqq{\dblcolon=}}
-\CustomizeMathJax{\newcommand\coloneq{\vcentcolon{-}}}
-\CustomizeMathJax{\newcommand\Coloneq{\dblcolon{-}}}
+\CustomizeMathJax{\newcommand\dblcolon{\mathrel{\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand\coloneqq{\mathrel{\unicode{x2236}\!=}}}
+\CustomizeMathJax{\newcommand\Coloneqq{\mathrel{\unicode{x2237}\!=}}}
+\CustomizeMathJax{\newcommand\coloneq{\mathrel{\unicode{x2236}-}}}
+\CustomizeMathJax{\newcommand\Coloneq{\mathrel{\unicode{x2237}-}}}
-\CustomizeMathJax{\newcommand\eqqcolon{=\vcentcolon}}
-\CustomizeMathJax{\newcommand\Eqqcolon{=\dblcolon}}
-\CustomizeMathJax{\newcommand\eqcolon{\mathrel{-}\vcentcolon}}
-\CustomizeMathJax{\newcommand\Eqcolon{\mathrel{-}\dblcolon}}
+\CustomizeMathJax{\newcommand\eqqcolon{\mathrel{=\!\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand\Eqqcolon{\mathrel{=\!\unicode{x2237}}}}
+\CustomizeMathJax{\newcommand\eqcolon{\mathrel{-\unicode{x2236}}}}
+\CustomizeMathJax{\newcommand\Eqcolon{\mathrel{-\unicode{x2237}}}}
-\CustomizeMathJax{\newcommand\colonapprox{\vcentcolon\approx}}
-\CustomizeMathJax{\newcommand\Colonapprox{\dblcolon\approx}}
-\CustomizeMathJax{\newcommand\colonsim{\vcentcolon\sim}}
-\CustomizeMathJax{\newcommand\Colonsim{\dblcolon\sim}}
+\CustomizeMathJax{\newcommand\colonapprox{\mathrel{\unicode{x2236}\!\approx}}}
+\CustomizeMathJax{\newcommand\Colonapprox{\mathrel{\unicode{x2237}\!\approx}}}
+\CustomizeMathJax{\newcommand\colonsim{\mathrel{\unicode{x2236}\!\sim}}}
+\CustomizeMathJax{\newcommand\Colonsim{\mathrel{\unicode{x2237}\!\sim}}}
-\CustomizeMathJax{\newcommand{\nuparrow}{\cancel{\uparrow}}}
-\CustomizeMathJax{\newcommand{\ndownarrow}{\cancel{\downarrow}}}
-\CustomizeMathJax{\newcommand{\bigtimes}{{\Large\times}}}
+% \end{macrocode}
+% \changes{v0.89}{2020/08/21}{\pkg{mathtools}: Minor improvements.}
+% \begin{macrocode}
+\CustomizeMathJax{\newcommand{\nuparrow}{\mathrel{\cancel{\uparrow}}}}
+\CustomizeMathJax{\newcommand{\ndownarrow}{\mathrel{\cancel{\downarrow}}}}
+\CustomizeMathJax{\newcommand{\bigtimes}{\mathop{\Large\times}\limits}}
\CustomizeMathJax{\newcommand{\prescript}[3]{{}^{#1}_{#2}#3}}
@@ -57969,7 +64802,170 @@
%
%
%
+%
% \iffalse
+%<*mattens>
+% \fi
+%
+% \part{lwarp-mattens.sty}
+%
+% \section{mattens}
+%
+% \credits{Danie Els}
+%
+% \DescribePackage{mattens}
+% \pkg{mattens} is used as-is for \SVG\ math,
+% and is emulated for \brand{MathJax}.
+%
+% \changes{v0.895}{2021/02/11}{\pkg{mattens}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{mattens}[2010/03/26]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\LWRmattensnull}{}}
+
+\CustomizeMathJax{\newcommand{\LWRmattensnostar}[2][]{%
+ {#1{\LWRmattensundercmd{\LWRmattensovercmd{\LWRmattenscross{\boldsymbol{#2}}}}}}%
+}}
+
+\CustomizeMathJax{\newcommand{\LWRmattensstar}[2][]{%
+ {#1{\LWRmattensundercmd{\LWRmattensovercmd{\LWRmattenscross{#2}}}}}%
+}}
+
+\CustomizeMathJax{\newcommand{\LWRmattens}{
+ \ifstar\LWRmattensstar\LWRmattensnostar%
+}}
+
+\CustomizeMathJax{\newcommand{\aS}{%
+ \let\LWRmattenscross\LWRmattensnull%
+ \let\LWRmattensovercmd\overrightarrow%
+ \let\LWRmattensundercmd\LWRmattensnull%
+ \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\Sa}{%
+ \let\LWRmattenscross\LWRmattensnull%
+ \let\LWRmattensovercmd\underrightarrow%
+ \let\LWRmattensundercmd\LWRmattensnull%
+ \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\bS}{%
+ \let\LWRmattenscross\LWRmattensnull%
+ \let\LWRmattensovercmd\overline%
+ \let\LWRmattensundercmd\LWRmattensnull%
+ \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\Sb}{%
+ \let\LWRmattenscross\LWRmattensnull%
+ \let\LWRmattensovercmd\underline%
+ \let\LWRmattensundercmd\LWRmattensnull%
+ \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\aSa}{%
+ \let\LWRmattenscross\LWRmattensnull%
+ \let\LWRmattensovercmd\overrightarrow%
+ \let\LWRmattensundercmd\underrightarrow%
+ \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\aSb}{%
+ \let\LWRmattenscross\LWRmattensnull%
+ \let\LWRmattensovercmd\overrightarrow%
+ \let\LWRmattensundercmd\underline%
+ \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\bSa}{%
+ \let\LWRmattenscross\LWRmattensnull%
+ \let\LWRmattensovercmd\overline%
+ \let\LWRmattensundercmd\underrightarrow%
+ \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\bSb}{%
+ \let\LWRmattenscross\LWRmattensnull%
+ \let\LWRmattensovercmd\overline%
+ \let\LWRmattensundercmd\underline%
+ \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\aCSa}{%
+ \let\LWRmattenscross\tilde%
+ \let\LWRmattensovercmd\overrightarrow%
+ \let\LWRmattensundercmd\underrightarrow%
+ \LWRmattens%
+}}
+
+\CustomizeMathJax{\newcommand{\bCSb}{%
+ \let\LWRmattenscross\tilde%
+ \let\LWRmattensovercmd\overline%
+ \let\LWRmattensundercmd\underline%
+ \LWRmattens%
+}}
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</mattens>
+% \fi
+%
+%
+%
+% \iffalse
+%<*maybemath>
+% \fi
+%
+% \part{lwarp-maybemath.sty}
+%
+% \section{maybemath}
+%
+% \credits{Andy Buckley}
+%
+% \DescribePackage{maybemath}
+% \pkg{maybemath} is used as-is for \SVG\ math,
+% and is emulated for \brand{MathJax}.
+%
+% \brand{MathJax} is not able to detect the surrounding text font,
+% \trouble[no effect]{maybemath=\pkg{maybemath}}
+% so all \pkg{maybemath} macros are ignored.
+%
+% \changes{v0.0.895}{2021/01/08}{\pkg{maybemath}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{maybemath}[2005/2/22]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\mayberm}[1]{{#1}}}
+\CustomizeMathJax{\let\maybebm\mayberm}
+\CustomizeMathJax{\let\maybeit\mayberm}
+\CustomizeMathJax{\let\maybeitrm\mayberm}
+\CustomizeMathJax{\let\maybeitsubscript\mayberm}
+\CustomizeMathJax{\let\maybesf\mayberm}
+\CustomizeMathJax{\let\maybebmsf\mayberm}
+\end{warpMathJax}
+% \end{macrocode}
+%
+% \iffalse
+%</maybemath>
+% \fi
+%
+%
+%
+%
+%
+% \iffalse
%<*mcaption>
% \fi
@@ -58138,6 +65134,11 @@
\newcommand*{\LWR at mdframedstart}{%
\LWR at traceinfo{LWR at mdframedstart start}%
% \end{macrocode}
+% Warn if starting a frame inside a \element{span}:
+% \changes{v0.84}{2020/04/22}{\pkg{mdframed}: Warn inside a \element{span}.}
+% \begin{macrocode}
+ \LWR at spanwarninvalid{mdframe}%
+% \end{macrocode}
% Turn off paragraph handling during the generation of
% the encapsulating tags:
% \begin{macrocode}
@@ -58147,12 +65148,13 @@
% A \env{BlockClass} environment is not used because this \element{div} is
% created by the \pkg{mdframed} \optn{startcode} and \optn{endcode} settings,
% which do not properly nest the \element{div} inside the \env{mdframed} environment.
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
-\LWR at htmltagc{div class="%
+\LWR at htmltagc{div class=\textquotedbl%
mdframed%
\ifdefstring{\LWR at mdthisenv}{mdframed}{}{ \LWR at mdthisenv}%
-" \LWR at orignewline
-style=" \LWR at orignewline
+\textquotedbl \LWR at orignewline
+style=\textquotedbl\LWR at orignewline
% \end{macrocode}
% Convert and print the background color:
% \begin{macrocode}
@@ -58180,7 +65182,7 @@
\LWR at orignewline
% \end{macrocode}
% \begin{macrocode}
-"}
+\textquotedbl}
% \LWR at htmldivclass{\LWR at mdthisenv}
% \end{macrocode}
% \env{mdframed} environment may not work with the \HTML\ versions of the following,
@@ -58599,8 +65601,46 @@
% \addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
%
%
+% \iffalse
+%<*mdwmath>
+% \fi
%
+% \part{lwarp-mdwmath.sty}
+%
+% \section{mdwmath}
+%
+% \credits{Mark Wooding}
+%
+% \DescribePackage{mdwmath}
+% \pkg{mdwmath} is used as-is for \SVG\ math, and
+% is emulated for \brand{MathJax}.
+%
+% \changes{v0.895}{2021/01/11}{\pkg{mdwmath}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{mdwmath}[1996/04/11]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\let\LWRmdwmathsqrt\sqrt}
+\CustomizeMathJax{\renewcommand{\sqrt}{\ifstar\LWRmdwmathsqrt\LWRmdwmathsqrt}}
+\CustomizeMathJax{\newcommand{\bitand}{\mathbin\&}}
+\CustomizeMathJax{\def\bitor{\mathbin\mid}}
+\CustomizeMathJax{\def\dblor{\mathbin{\mid\mid}}}
+\CustomizeMathJax{\def\dbland{\mathbin{\mathrel\bitand\mathrel\bitand}}}
+\end{warpMathJax}
+% \end{macrocode}
+%
% \iffalse
+%</mdwmath>
+% \fi
+%
+%
+%
+% \iffalse
%<*media9>
% \fi
%
@@ -58752,9 +65792,66 @@
%
%
%
+% \iffalse
+%<*menukeys>
+% \fi
%
+% \part{lwarp-menukeys.sty}
%
+% \section{menukeys}
+%
+% \credits{Tobias Weh}
+%
+% \DescribePackage{menukeys}
+% \pkg{menukeys} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.893}{2020/11/07}{\pkg{menukeys}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{menukeys}[2020/12/19]
+% \end{macrocode}
+%
+% Patch to use a \env{lateximage} whose \attribute{alt} text
+% is the contents of this use of the macro.
+% A hash on these contents allows the reuse of the image for
+% each instance of the same contents.
+% \changes{v0.893}{2020/12/24}{\pkg{menukeys}: Updated to v1.6.1.}
+% \begin{macrocode}
+\xpatchcmd{\tw at define@menu at macro@}
+ {\@nameuse{tw at style@#4 at pre}}
+ {%
+ \begin{lateximage}*[\detokenize{##2}]%
+ \@nameuse{tw at style@#4 at pre}%
+ }
+ {}
+ {\LWR at patcherror{menukeys}{tw at define@menu at macro@}}
+
+\xpatchcmd{\tw at define@menu at macro@}
+ {\@nameuse{tw at style@#4 at post}}
+ {%
+ \@nameuse{tw at style@#4 at post}%
+ \end{lateximage}%
+ }
+ {}
+ {\LWR at patcherror{menukeys}{tw at define@menu at macro@ B}}
+% \end{macrocode}
+%
+% Patch the existing macros:
+% \begin{macrocode}
+\renewmenumacro{\menu}[>]{menus}
+\renewmenumacro{\directory}[/]{paths}
+\renewmenumacro{\keys}[+]{roundedkeys}
+% \end{macrocode}
+%
% \iffalse
+%</menukeys>
+% \fi
+%
+%
+%
+% \iffalse
%<*metalogo>
% \fi
%
@@ -58863,15 +65960,9 @@
% \begin{sourceverb}
% $\ce{C6H5-CHO}$
% \end{sourceverb}
-%
-% If \emph{not} used inside a math expression, \pkg{lwarp} converts standalone \pkg{mhchem}
-% \marginpar{not inside math}
-% expressions into \SVG\ math images.
-%
-% If the \brand{MathJax} \pkg{mhchem} extension is not used,
-% \margintag{\brand{MathJax} without \pkg{mhchem} extension}
-% expressions inside math must be placed
-% between \cs{displaymathother} and \cs{displaymathnormal}:
+% To force the use of \SVG\ math for an expression which does not work with
+% \brand{MathJax},
+% place the expression between \cs{displaymathother} and \cs{displaymathnormal}:
% \begin{sourcedisplay}
% \cs{displaymathother} \\
% \cs{[} \cs{ce}\{ \dots\ \} \cs{]} \qquad \dots \qquad \$ \cs{ce} \{ \dots\ \} \$ \\
@@ -58878,6 +65969,10 @@
% \cs{displaymathnormal}
% \end{sourcedisplay}
%
+% If \emph{not} used inside a math expression, \pkg{lwarp} converts standalone \pkg{mhchem}
+% \marginpar{not inside math}
+% expressions into \SVG\ math images.
+%
% When producing \HTML\ output without the \brand{MathJax} \pkg{mhchem} extension,
% \pkg{lwarp} does not support
% \trouble[nested math]{mhchem=\pkg{mhchem}>nested dollar signs}
@@ -58905,6 +66000,7 @@
%
% \changes{v0.51}{2018/03/04}{\pkg{mhchem}: Added.}
% \changes{v0.74}{2019/08/26}{\pkg{mhchem}: Modified for new \env{lateximage}.}
+% \changes{v0.87}{2020/06/02}{\pkg{mhchem}: Now uses \brand{MathJax} v3 extension.}
%
% \codehtml
%
@@ -59016,6 +66112,10 @@
\LetLtxMacro\ce\LWR at mhchem@origce%
\LetLtxMacro\cesplit\LWR at mhchem@origcesplit%
}
+
+\begin{warpMathJax}
+\CustomizeMathJax{\require{mhchem}}
+\end{warpMathJax}
% \end{macrocode}
% \iffalse
@@ -59255,6 +66355,85 @@
%
%
% \iffalse
+%<*minted>
+% \fi
+%
+% \part{lwarp-minted.sty}
+%
+% \section{minted}
+%
+% \credits{Geoffrey M. Poore}
+%
+% \DescribePackage{minted}
+% \pkg{minted} is patched for use by \pkg{lwarp}.
+%
+%
+% \optn{mathescape} and \optn{highlightlines} don't work.
+% \trouble[limitations]{minted=\pkg{minted}}
+% Line numbers on the right will not be aligned.
+% Due to \prog{pdftotext}, extra spaces may appear in broken lines
+% if other formatting is included.
+%
+% \changes{v0.892}{2020/10/07}{\pkg{minted}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{minted}[2017/07/19]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\xpatchcmd{\minted}
+ {\setkeys{minted at opt@cmd}{#1}}
+ {%
+ \setkeys{minted at opt@cmd}{%
+ #1,%
+ mathescape=false,breaklines,texcomments=false,highlightlines={}%
+ }%
+ }
+ {}
+ {\LWR at patcherror{minted}{minted}}
+
+\xpatchcmd{\mintinline}
+ {\setkeys{minted at opt@cmd}{#1}}
+ {\setkeys{minted at opt@cmd}{%
+ #1,%
+ mathescape=false,breaklines,texcomments=false,highlightlines={}%
+ }%
+ }
+ {}
+ {\LWR at patcherror{minted}{mintinline}}
+
+\xpatchcmd{\mint}
+ {\setkeys{minted at opt@cmd}{#1}}
+ {%
+ \setkeys{minted at opt@cmd}{%
+ #1,%
+ mathescape=false,breaklines,texcomments=false,highlightlines={}%
+ }%
+ }
+ {}
+ {\LWR at patcherror{minted}{mint}}
+
+\xpatchcmd{\inputminted}
+ {\setkeys{minted at opt@cmd}{#1}}
+ {\setkeys{minted at opt@cmd}{%
+ #1,%
+ mathescape=false,breaklines,texcomments=false,highlightlines={}%
+ }%
+ }
+ {}
+ {\LWR at patcherror{minted}{inputminted}}
+% \end{macrocode}
+%
+% \iffalse
+%</minted>
+% \fi
+%
+%
+%
+%
+% \iffalse
%<*mismath>
% \fi
%
@@ -59292,6 +66471,7 @@
% \cs{mathset} may be set with \cs{CustomizeMathJax} in the preamble.
%
% \changes{v0.80}{2020/02/14}{\pkg{mismath}: Added.}
+% \changes{v0.89}{2020/09/02}{\pkg{mismath}: Improved math operators.}
%
% \codehtml
%
@@ -59351,48 +66531,48 @@
\CustomizeMathJax{\newcommand{\V}{\operatorname{\probastyle{V}}}}
\CustomizeMathJax{\newcommand{\Par}{\unicode{x00B6}}}
-\CustomizeMathJax{\newcommand{\adj}{\mathrm{adj}}}
-\CustomizeMathJax{\newcommand{\Aut}{\mathrm{Aut}}}
-\CustomizeMathJax{\newcommand{\Conv}{\mathrm{Conv}}}
-\CustomizeMathJax{\newcommand{\cov}{\mathrm{cov}}}
-\CustomizeMathJax{\newcommand{\Cov}{\mathrm{Cov}}}
-\CustomizeMathJax{\newcommand{curl}{\operatorname{\vect{\mathrm{curl}}}}}
-\CustomizeMathJax{\newcommand{\divg}{\mathrm{div}}}
-\CustomizeMathJax{\newcommand{\End}{\mathrm{End}}}
+\CustomizeMathJax{\DeclareMathOperator{\adj}{adj}}
+\CustomizeMathJax{\DeclareMathOperator{\Aut}{Aut}}
+\CustomizeMathJax{\DeclareMathOperator{\Conv}{Conv}}
+\CustomizeMathJax{\DeclareMathOperator{\cov}{cov}}
+\CustomizeMathJax{\DeclareMathOperator{\Cov}{Cov}}
+\CustomizeMathJax{\newcommand{\curl}{\operatorname{\vect{\mathrm{curl}}}}}
+\CustomizeMathJax{\DeclareMathOperator{\divg}{div}}
+\CustomizeMathJax{\DeclareMathOperator{\End}{End}}
-\CustomizeMathJax{\newcommand{\erf}{\mathrm{erf}}}
-\CustomizeMathJax{\newcommand{grad}{\operatorname{\vect{\mathrm{grad}}}}}
-\CustomizeMathJax{\newcommand{\id}{\mathrm{id}}}
-\CustomizeMathJax{\newcommand{\Id}{\mathrm{Id}}}
-\CustomizeMathJax{\newcommand{\im}{\mathrm{im}}}
+\CustomizeMathJax{\DeclareMathOperator{\erf}{erf}}
+\CustomizeMathJax{\newcommand{\grad}{\operatorname{\vect{\mathrm{grad}}}}}
+\CustomizeMathJax{\DeclareMathOperator{\id}{id}}
+\CustomizeMathJax{\DeclareMathOperator{\Id}{Id}}
+\CustomizeMathJax{\DeclareMathOperator{\im}{im}}
\CustomizeMathJax{\let\oldIm\Im}
\CustomizeMathJax{\renewcommand{\Im}{\operatorname{Im}}}
-\CustomizeMathJax{\newcommand{\lb}{\mathrm{lb}}}
-\CustomizeMathJax{\newcommand{\lcm}{\mathrm{lcm}}}
+\CustomizeMathJax{\DeclareMathOperator{\lb}{lb}}
+\CustomizeMathJax{\DeclareMathOperator{\lcm}{lcm}}
-\CustomizeMathJax{\newcommand{\rank}{\mathrm{rank}}}
+\CustomizeMathJax{\DeclareMathOperator{\rank}{rank}}
\CustomizeMathJax{\let\oldRe\Re}
\CustomizeMathJax{\renewcommand{\Re}{\operatorname{Re}}}
-\CustomizeMathJax{\newcommand{rot}{\operatorname{\vect{\mathrm{rot}}}}}
-\CustomizeMathJax{\newcommand{\sgn}{\mathrm{sgn}}}
-\CustomizeMathJax{\newcommand{\spa}{\mathrm{span}}}
-\CustomizeMathJax{\newcommand{\tr}{\mathrm{tr}}}
-\CustomizeMathJax{\newcommand{\Var}{\mathrm{Var}}}
-\CustomizeMathJax{\newcommand{\Zu}{\mathrm{Z}}}
+\CustomizeMathJax{\newcommand{\rot}{\operatorname{\vect{\mathrm{rot}}}}}
+\CustomizeMathJax{\DeclareMathOperator{\sgn}{sgn}}
+\CustomizeMathJax{\DeclareMathOperator{\spa}{span}}
+\CustomizeMathJax{\DeclareMathOperator{\tr}{tr}}
+\CustomizeMathJax{\DeclareMathOperator{\Var}{Var}}
+\CustomizeMathJax{\DeclareMathOperator{\Zu}{Z}}
-\CustomizeMathJax{\newcommand{\arccot}{\mathrm{arccot}}}
-\CustomizeMathJax{\newcommand{\sech}{\mathrm{sech}}}
-\CustomizeMathJax{\newcommand{\csch}{\mathrm{csch}}}
-\CustomizeMathJax{\newcommand{\arsinh}{\mathrm{arsinh}}}
-\CustomizeMathJax{\newcommand{\arcosh}{\mathrm{arcosh}}}
-\CustomizeMathJax{\newcommand{\artanh}{\mathrm{artanh}}}
-\CustomizeMathJax{\newcommand{\arcoth}{\mathrm{arcoth}}}
-\CustomizeMathJax{\newcommand{\arsech}{\mathrm{arsech}}}
-\CustomizeMathJax{\newcommand{\arcsch}{\mathrm{arcsch}}}
+\CustomizeMathJax{\DeclareMathOperator{\arccot}{arccot}}
+\CustomizeMathJax{\DeclareMathOperator{\sech}{sech}}
+\CustomizeMathJax{\DeclareMathOperator{\csch}{csch}}
+\CustomizeMathJax{\DeclareMathOperator{\arsinh}{arsinh}}
+\CustomizeMathJax{\DeclareMathOperator{\arcosh}{arcosh}}
+\CustomizeMathJax{\DeclareMathOperator{\artanh}{artanh}}
+\CustomizeMathJax{\DeclareMathOperator{\arcoth}{arcoth}}
+\CustomizeMathJax{\DeclareMathOperator{\arsech}{arsech}}
+\CustomizeMathJax{\DeclareMathOperator{\arcsch}{arcsch}}
-\CustomizeMathJax{\newcommand{\bigO}{\mathcal{O}}}
-\CustomizeMathJax{\newcommand{\bigo}{\mathrm{O}}}
-\CustomizeMathJax{\newcommand{\lito}{\mathrm{o}}}
+\CustomizeMathJax{\DeclareMathOperator{\bigO}{\mathcal{O}}}
+\CustomizeMathJax{\DeclareMathOperator{\bigo}{O}}
+\CustomizeMathJax{\DeclareMathOperator{\lito}{o}}
\CustomizeMathJax{\newcommand{\R}{\mathset{R}}}
\CustomizeMathJax{\newcommand{\C}{\mathset{C}}}
@@ -59476,8 +66656,43 @@
%
%
%
+% \iffalse
+%<*mleftright>
+% \fi
%
+% \part{lwarp-mleftright.sty}
+%
+% \section{mleftright}
+%
+% \credits{Heiko Oberdiek}
+%
+% \DescribePackage{mleftright}
+% \pkg{mleftright} is used as-is, and is emulated for \brand{MathJax}.
+%
+% \changes{v0.88}{2020/07/22}{\pkg{mleftright}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{mleftright}[2019/12/03]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\begin{warpMathJax}
+\CustomizeMathJax{\newcommand{\mleft}{\left}}
+\CustomizeMathJax{\newcommand{\mright}{\right}}
+\CustomizeMathJax{\newcommand{\mleftright}{}}
+\CustomizeMathJax{\newcommand{\mleftrightrestore}{}}
+\end{warpMathJax}
+% \end{macrocode}
+%
% \iffalse
+%</mleftright>
+% \fi
+%
+%
+%
+% \iffalse
%<*morefloats>
% \fi
%
@@ -59520,22 +66735,18 @@
% \changes{v0.34}{2017/08/02}{\pkg{moreverb}: Added.}
% \changes{v0.42}{2017/10/27}{\pkg{moreverb}: Simplified formatting of listings.}
%
-% \codehtml
% \begin{macrocode}
-\begin{warpHTML}
-% \end{macrocode}
-%
-% \begin{macrocode}
\LWR at ProvidesPackagePass{moreverb}[2008/06/03]
% \end{macrocode}
%
+%
% \begin{macrocode}
\BeforeBeginEnvironment{verbatimtab}{%
\LWR at forcenewpage
-\LWR at atbeginverbatim{3}{Verbatim}%
+\LWR at atbeginverbatim{Verbatim}%
}
\AfterEndEnvironment{verbatimtab}{%
-\LWR at afterendverbatim{1}%
+\LWR at afterendverbatim%
}
@@ -59543,27 +66754,27 @@
\renewcommand{\@verbatimtabinput}[2][]{%
\LWR at forcenewpage
-\LWR at atbeginverbatim{3}{Verbatim}%
+\LWR at atbeginverbatim{Verbatim}%
\LWRMV at orig@verbatimtabinput[#1]{#2}%
-\LWR at afterendverbatim{1}%
+\LWR at afterendverbatim%
}
\BeforeBeginEnvironment{listing}{%
\LWR at forcenewpage
-\LWR at atbeginverbatim{3}{programlisting}%
+\LWR at atbeginverbatim{programlisting}%
}
\AfterEndEnvironment{listing}{%
-\LWR at afterendverbatim{1}%
+\LWR at afterendverbatim%
}
\BeforeBeginEnvironment{listingcont}{%
\LWR at forcenewpage
-\LWR at atbeginverbatim{3}{programlisting}%
+\LWR at atbeginverbatim{programlisting}%
}
\AfterEndEnvironment{listingcont}{%
-\LWR at afterendverbatim{1}%
+\LWR at afterendverbatim%
}
% \end{macrocode}
@@ -59592,9 +66803,9 @@
\renewcommand{\@listinginput}[3][]{
\LWR at forcenewpage
-\LWR at atbeginverbatim{3}{programlisting}%
+\LWR at atbeginverbatim{programlisting}%
\LWRMV@@listinginput[#1]{#2}{#3}%
-\LWR at afterendverbatim{1}%
+\LWR at afterendverbatim%
}
@@ -59601,19 +66812,15 @@
\renewenvironment*{boxedverbatim}
{
\LWR at forcenewpage
-\LWR at atbeginverbatim{3}{boxedverbatim}%
+\LWR at atbeginverbatim{boxedverbatim}%
\verbatim%
}
{
\endverbatim%
-\LWR at afterendverbatim{1}%
+\LWR at afterendverbatim%
}
% \end{macrocode}
%
-% \begin{macrocode}
-\end{warpHTML}
-% \end{macrocode}
-%
% \iffalse
%</moreverb>
% \fi
@@ -59705,8 +66912,44 @@
%
%
%
+% \iffalse
+%<*multibib>
+% \fi
%
+% \part{lwarp-multibib.sty}
+%
+% \section{multibib}
+%
+% \credits{Thorsten Hansen}
+%
+% \DescribePackage{multibib}
+% \pkg{multibib} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.87}{2020/05/17}{\pkg{multibib}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR at ProvidesPackagePass{multibib}[2008/12/10]
+% \end{macrocode}
+%
+% \begin{macrocode}
+\xpatchcmd{\newcites}
+ {{\@suffix}}
+ {{\@suffix_html}}
+ {}
+ {\LWR at patcherror{multibib}{newcites}}
+% \end{macrocode}
+%
% \iffalse
+%</multibib>
+% \fi
+%
+%
+%
+%
+%
+% \iffalse
%<*multicap>
% \fi
%
@@ -59767,9 +67010,6 @@
%
% The content is placed inside a \element{div} of class |multicols|.
-% \begin{macrocode}
-\begin{warpHTML}
-% \end{macrocode}
% \begin{noindenvironment}{multicols} * \marg{numcols} \oarg{heading}
% \begin{macrocode}
@@ -59829,9 +67069,6 @@
}
% \end{macrocode}
-% \begin{macrocode}
-\end{warpHTML}
-% \end{macrocode}
% \iffalse
%</multicol>
@@ -59941,8 +67178,11 @@
\CustomizeMathJax{\newcommand{\negdom}{\not\prec}}
\CustomizeMathJax{\newcommand{\weakdom}{\preccurlyeq}}
\CustomizeMathJax{\newcommand{\negweakdom}{\not\preccurlyeq}}
-\CustomizeMathJax{\newcommand{\strictdom}{\prec\!\!\!\prec}}
-\CustomizeMathJax{\newcommand{\negstrictdom}{\not\prec\!\!\!\prec}}
+% \end{macrocode}
+% \changes{v0.891}{2020/09/08}{\pkg{multiobjective}: Improved.}
+% \begin{macrocode}
+\CustomizeMathJax{\newcommand{\strictdom}{\mathord{\prec}\!\!\!\mathord{\prec}}}
+\CustomizeMathJax{\newcommand{\negstrictdom}{\mathord{\not\prec}\!\!\!\mathord{\prec}}}
\CustomizeMathJax{\newcommand{\multepsilondom}{\preccurlyeq_{\epsilon\cdot}}}
\CustomizeMathJax{\newcommand{\addiepsilondom}{\preccurlyeq_{\epsilon +}}}
\CustomizeMathJax{\newcommand{\better}{\triangleleft}}
@@ -59992,8 +67232,7 @@
%
% \limitsmultirow
%
-% In a \env{lateximage}, \cs{LWR at restoreorigformatting}
-% restores the original print-mode versions.
+% In a \env{lateximage}, the print versions are restored.
%
% See \cref{sec:printmultirow} for the print-mode versions.
%
@@ -60005,7 +67244,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\LWR at ProvidesPackagePass{multirow}[2018/08/03]
+\LWR at ProvidesPackagePass{multirow}[2021/01/29]
% \end{macrocode}
%
%
@@ -60020,6 +67259,12 @@
%
% \subsection{Multirow}
%
+% \begin{noindmacro}{\LWR at multirow@par} \cs{par} inside a \cs{multirow}.
+% \begin{macrocode}
+\newcommand*{\LWR at multirow@par}{\LWR at htmltag{br /}\LWR at origpar}%
+% \end{macrocode}
+% \end{noindmacro}
+%
% \DescribeMacro{\multirow}
% \oarg{vpos} \marg{numrows} \oarg{bigstruts} \marg{width} \oarg{fixup} \marg{text}
% \changes{v0.19}{2015/05/28}{\pkg{multirow}: Added optional args.}
@@ -60044,26 +67289,13 @@
\LWR at tabularleftedge%
% \end{macrocode}
% Print the start of a new table data cell:
+% \changes{v0.895}{2021/01/14}{Improved \HTML\ quotes.}
% \begin{macrocode}
-\LWR at htmltag{td rowspan="#2" %
+\LWR at htmltag{td rowspan=\textquotedbl#2\textquotedbl\ %
% \end{macrocode}
-% The vertical alignment, if given:
-% \changes{v0.79}{2020/01/17}{\pkg{multirow}: Fix: Centered vertical alignment.}
-% \begin{macrocode}
-\ifstrequal{#1}{c}{style="\LWR at print@mbox{vertical-align:middle}" }{}%
-\ifstrequal{#1}{b}{style="\LWR at print@mbox{vertical-align:bottom}" }{}%
-\ifstrequal{#1}{t}{style="\LWR at print@mbox{vertical-align:top}" }{}%
-% \end{macrocode}
-% The left/right border, if given:
-% \begin{macrocode}
-\ifdefvoid{\LWR at multirowborder}{}{%
-style="\LWR at print@mbox{border-\LWR at multirowborder:} 2px dotted black ; %
-\LWR at print@mbox{padding-\LWR at multirowborder:} 2px" %
-}%
-% \end{macrocode}
% A class adds the column spec and the rule:
% \begin{macrocode}
-class="td%
+class=\textquotedbl{}td%
% \end{macrocode}
% Append this column's spec:
% \changes{v0.60}{2018/09/17}{\env{tabular}: Improved memory management: Not using \pkg{xstring}.}
@@ -60077,11 +67309,32 @@
\LWR at addcmidruletrim%
\LWR at addleftmostbartag%
\LWR at printbartag{\arabic{LWR at tableLaTeXcolindex}}%
-"%
+\textquotedbl%
% \end{macrocode}
% \changes{v0.42}{2017/10/26}{\pkg{multirow}: If \pr