You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
tex-compiler/texmf-dist/tex/latex/lwarp/lwarp.sty

13912 lines
372 KiB

%%
%% This is file `lwarp.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% lwarp.dtx (with options: `package')
%% This is a generated file.
%% Copyright 2016-2020 Brian Dunn
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{lwarp}
[2020/07/19 v0.88 Allows LaTeX to directly produce HTML5 output.]
\RequirePackage{iftex}[2019/11/07]
\RequirePackage{ifpdf}
\RequirePackage{ifptex}
\newif\ifxetexorluatex
\ifXeTeX
\xetexorluatextrue
\else
\ifLuaTeX
\xetexorluatextrue
\else
\xetexorluatexfalse
\fi
\fi
\RequirePackage{etoolbox}[2011/01/03]% v2.6 for \BeforeBeginEnvironment, etc.
\RequirePackage{xpatch}
\RequirePackage{ifplatform}% sense op-system platform
\RequirePackage{letltxmacro}
\newcommand*{\LWR@loadafter}[1]{%
\@ifpackageloaded{#1}
{
\PackageError{lwarp}
{%
Package #1,\MessageBreak
or one which uses #1,\MessageBreak
must be loaded after Lwarp.\MessageBreak
Enter 'H' for possible solutions%
}
{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.}
}
{}
}
\@ifclassloaded{memoir}
{\newcommand*{\LWR@notmemoirloadafter}[1]{}}
{\LetLtxMacro\LWR@notmemoirloadafter\LWR@loadafter}
\LetLtxMacro\LWR@notltjloadafter\LWR@loadafter
\@ifclassloaded{ltjarticle}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
\@ifclassloaded{ltjbook}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
\@ifclassloaded{ltjreport}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
\@ifclassloaded{ltjsarticle}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
\@ifclassloaded{ltjsbook}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
\@ifclassloaded{ltjsreport}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
\@ifclassloaded{ltjspf}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
\@ifclassloaded{ltjskiyou}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
\@ifclassloaded{ltjtarticle}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
\@ifclassloaded{ltjtbook}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
\@ifclassloaded{ltjtreport}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
\newcommand*{\LWR@loadbefore}[1]{%
\@ifpackageloaded{#1}
{}
{
\PackageError{lwarp}
{%
Package #1 must be loaded before lwarp.\MessageBreak
Enter 'H' for possible solutions%
}
{Move ``\protect\usepackage{#1}'' before ``\protect\usepackage{lwarp}''.}
}
}
\newcommand*{\LWR@checkloadbefore}[2]{%
\edef\LWR@tempone{#1}%
\ifdefstring{\LWR@tempone}{#2}{%
\LWR@loadbefore{#1}%
}{}%
}
\newcommand*{\LWR@loadnever}[2]{%
\PackageError{lwarp}
{%
Package #1 is not supported\MessageBreak
by lwarp's HTML conversion.\MessageBreak
Package(s)\MessageBreak
\space\space#2\MessageBreak
may be useful instead%
}
{%
Package #1 might conflict with lwarp in some way,\MessageBreak
or is superceded by another package.\MessageBreak
For a possible alternative, see package(s) #2.
}
}
\newcommand*{\LWR@checkloadnever}[3]{%
\edef\LWR@tempone{#1}%
\ifdefstring{\LWR@tempone}{#2}{%
\LWR@loadnever{#2}{#3}%
}{}%
}
\newcommand*{\LWR@earlyloadnever}[2]{%
\@ifpackageloaded{#1}{%
\LWR@loadnever{#1}{#2}%
}{}%
}
\newcommand*{\LWR@earlyclassloadnever}[2]{%
\@ifclassloaded{#1}{%
\PackageError{lwarp}
{%
Class #1 is not supported\MessageBreak
by lwarp's HTML conversion.\MessageBreak
Class(es) #2 may be useful instead
}
{%
Class #1 might conflict with lwarp in some way,\MessageBreak
or is superceded by another class.\MessageBreak
For a possible alternative, see class(es) #2.
}
}{}%
}
\LWR@earlyclassloadnever{jarticle}{ujarticle}
\LWR@earlyclassloadnever{jbook}{ujbook}
\LWR@earlyclassloadnever{jreport}{ujreport}
\LWR@earlyclassloadnever{tarticle}{utarticle}
\LWR@earlyclassloadnever{tbook}{utbook}
\LWR@earlyclassloadnever{treport}{utreport}
\LWR@earlyloadnever{ae}{cm-super, lmodern}
\LWR@earlyloadnever{aecompl}{cm-super, lmodern}
\LWR@earlyloadnever{aecc}{cm-super, lmodern}
\LWR@earlyloadnever{alg}{algorithm2e, algorithmicx}
\LWR@earlyloadnever{algorithmic}{algorithm2e, algorithmicx}
\LWR@earlyloadnever{bitfield}{bytefield}
\LWR@earlyloadnever{caption2}{caption}
\LWR@earlyloadnever{colortab}{colortbl}
\LWR@earlyloadnever{csvtools}{datatool}
\LWR@earlyloadnever{doublespace}{setspace}
\LWR@earlyloadnever{epsf}{graphicx}
\LWR@earlyloadnever{fancyheadings}{fancyhdr}
\LWR@earlyloadnever{fncylab}{cleveref}
\LWR@earlyloadnever{formula}{siunitx}
\LWR@earlyloadnever{glossary}{glossaries}
\LWR@earlyloadnever{hyper}{hyperref}
\LWR@earlyloadnever{newthm}{ntheorem}
\LWR@earlyloadnever{pdfcprot}{microtype}
\LWR@earlyloadnever{picinpar}{floatflt, wrapfig}
\LWR@earlyloadnever{picins}{floatflt, wrapfig}
\LWR@earlyloadnever{rplain}{fancyhdr}
\LWR@earlyloadnever{si}{siunitx}
\LWR@earlyloadnever{sistyle}{siunitx}
\LWR@earlyloadnever{slashbox}{diagbox}
\LWR@earlyloadnever{statex}{statex2}
\LWR@earlyloadnever{t1enc}{fontenc, inputenc, inputenx}
\LWR@earlyloadnever{ucs}{inputenc, inputencx}
\LWR@earlyloadnever{wasysym}{textcomp, amssymb, amsfonts, mnsymbol, fdsymbol}
\@ifpackageloaded{xeCJK}{}{
\LWR@earlyloadnever{CJK}{ctex, xeCJK}
\LWR@earlyloadnever{CJKutf8}{ctex, xeCJK}
}
\LWR@earlyloadnever{bxcjkjatype}{upLaTeX, bxjsarticle, ujarticle, utarticle}
\LWR@earlyloadnever{hangul}{kotex, xetexko, luatexko}
\LWR@loadafter{2in1}
\LWR@loadafter{2up}
\LWR@loadafter{a4}
\LWR@loadafter{a4wide}
\LWR@loadafter{a5comb}
\LWR@notmemoirloadafter{abstract}
\LWR@loadafter{academicons}
\LWR@loadafter{accessibility}
\LWR@loadafter{accsupp}
\LWR@loadafter{acro}
\LWR@loadafter{acronym}
\LWR@loadafter{adjmulticol}
\LWR@loadafter{addlines}
\LWR@loadafter{afterpage}
\LWR@loadafter{algorithm2e}
\LWR@loadafter{algorithmicx}
\LWR@loadafter{alltt}
\LWR@loadafter{amsmath}
\LWR@loadafter{amsthm}
\LWR@loadafter{anonchap}
\LWR@loadafter{anysize}
\LWR@notmemoirloadafter{appendix}
\LWR@loadafter{ar}
\LWR@loadafter{arabicfront}
\LWR@notmemoirloadafter{array}
\LWR@loadafter{arydshln}
\LWR@loadafter{asymptote}
\LWR@loadafter{attachfile}
\LWR@loadafter{attachfile2}
\LWR@loadafter{authblk}
\LWR@loadafter{autobreak}
\LWR@loadafter{autonum}
\LWR@loadafter{awesomebox}
\LWR@loadafter{axessibility}
\LWR@loadafter{axodraw2}
\LWR@loadafter{backnaur}
\LWR@loadafter{backref}
\LWR@loadafter{balance}
\LWR@loadafter{bbding}
\LWR@loadafter{bigdelim}
\LWR@loadafter{bigfoot}
\LWR@loadafter{bigstrut}
\LWR@loadafter{bitpattern}
\LWR@loadafter{blowup}
\LWR@loadafter{bm}
\LWR@loadafter{booklet}
\LWR@loadafter{bookmark}
\LWR@notmemoirloadafter{booktabs}
\LWR@loadafter{bophook}
\LWR@loadafter{bounddvi}
\LWR@loadafter{boxedminipage}
\LWR@loadafter{boxedminipage2e}
\LWR@loadafter{braket}
\LWR@loadafter{breakurl}
\LWR@loadafter{breqn}
\LWR@loadafter{bsheaders}
\LWR@loadafter{bxpapersize}
\LWR@loadafter{bytefield}
\LWR@loadafter{cancel}
\LWR@loadafter{canoniclayout}
\LWR@loadafter{caption}
\LWR@loadafter{caption2}
\LWR@loadafter{cases}
\LWR@loadafter{centernot}
\LWR@loadafter{changebar}
\LWR@loadafter{changelayout}
\LWR@notmemoirloadafter{changepage}
\LWR@loadafter{changes}
\LWR@loadafter{chappg}
\LWR@loadafter{chapterbib}
\LWR@loadafter{chemfig}
\LWR@loadafter{chemformula}
\LWR@loadafter{chemgreek}
\LWR@loadafter{chemmacros}
\LWR@loadafter{chemnum}
\LWR@loadafter{chkfloat}
\LWR@notmemoirloadafter{chngpage}
\LWR@loadafter{cite}
\LWR@loadafter{citeref}
\LWR@loadafter{cleveref}
\LWR@loadafter{cmdtrack}
\LWR@loadafter{colonequals}
\LWR@loadafter{color}
\LWR@loadafter{colortbl}
\LWR@loadafter{continue}
\LWR@loadafter{copyrightbox}
\LWR@notmemoirloadafter{crop}
\LWR@loadafter{ctable}
\LWR@loadafter{cuted}
\LWR@loadafter{cutwin}
\LWR@loadafter{dblfloatfix}
\LWR@loadafter{dblfnote}
\LWR@notmemoirloadafter{dcolumn}
\LWR@loadafter{decimal}
\LWR@loadafter{diagbox}
\LWR@loadafter{dingbat}
\LWR@loadafter{DotArrow}
\LWR@loadafter{dotlessi}
\LWR@loadafter{dprogress}
\LWR@loadafter{draftcopy}
\LWR@loadafter{draftfigure}
\LWR@loadafter{draftwatermark}
\LWR@loadafter{drftcite}
\LWR@loadafter{easy-todo}
\LWR@loadafter{ebook}
\LWR@loadafter{econometrics}
\LWR@loadafter{ed}
\LWR@loadafter{ellipsis}
\LWR@loadafter{embrac}
\LWR@loadafter{emptypage}
\LWR@loadafter{endfloat}
\LWR@loadafter{endheads}
\LWR@loadafter{endnotes}
\LWR@loadafter{engtlc}
\LWR@notmemoirloadafter{enumerate}
\LWR@loadafter{enumitem}
\LWR@notmemoirloadafter{epigraph}
\LWR@loadafter{epsfig}
\LWR@loadafter{epstopdf}
\LWR@loadafter{epstopdf-base}
\LWR@loadafter{eqlist}
\LWR@loadafter{eqparbox}
\LWR@loadafter{errata}
\LWR@loadafter{eso-pic}
\LWR@loadafter{etoc}
\LWR@loadafter{eurosym}
\LWR@loadafter{everypage}
\LWR@loadafter{everyshi}
\LWR@loadafter{extarrows}
\LWR@loadafter{extramarks}
\LWR@loadafter{fancybox}
\LWR@loadafter{fancyhdr}
\LWR@loadafter{fancyref}
\LWR@loadafter{fancytabs}
\LWR@loadafter{fancyvrb}
\LWR@loadafter{fbox}
\LWR@loadafter{fewerfloatpages}
\LWR@loadafter{figcaps}
\LWR@loadafter{figsize}
\LWR@loadafter{fitbox}
\LWR@loadafter{fix2col}
\LWR@loadafter{fixme}
\LWR@loadafter{fixmetodonotes}
\LWR@loadafter{flafter}
\LWR@loadafter{flippdf}
\LWR@loadafter{float}
\LWR@loadafter{floatflt}
\LWR@loadafter{floatpag}
\LWR@loadafter{floatrow}
\LWR@loadafter{fltrace}
\LWR@loadafter{flushend}
\LWR@loadafter{fnbreak}
\LWR@loadafter{fncychap}
\LWR@loadafter{fnlineno}
\LWR@loadafter{fnpara}
\LWR@loadafter{fnpos}
\LWR@loadafter{fontawesome}
\LWR@loadafter{fontawesome5}
\LWR@loadafter{footmisc}
\LWR@loadafter{footnote}
\LWR@loadafter{footnotebackref}
\LWR@loadafter{footnotehyper}
\LWR@loadafter{footnoterange}
\LWR@loadafter{footnpag}
\LWR@loadafter{foreign}
\LWR@loadafter{forest}
\LWR@loadafter{fouridx}
\LWR@loadafter{framed}
\LWR@loadafter{ftcap}
\LWR@loadafter{ftnright}
\LWR@loadafter{fullminipage}
\LWR@loadafter{fullpage}
\LWR@loadafter{fullwidth}
\LWR@loadafter{fwlw}
\LWR@loadafter{gensymb}
\LWR@loadafter{gentombow}
\LWR@loadafter{ghsystem}
\LWR@loadafter{gindex}
\LWR@loadafter{glossaries}
\LWR@loadafter{gmeometric}
\LWR@loadafter{gloss}
\LWR@loadafter{glossary}
\LWR@loadafter{grffile}
\LWR@loadafter{grid}
\LWR@loadafter{grid-system}
\LWR@loadafter{gridset}
\LWR@loadafter{hang}
\LWR@loadafter{hanging}
\LWR@loadafter{hhline}
\LWR@loadafter{hypbmsec}
\LWR@loadafter{hypcap}
\LWR@loadafter{hypdestopt}
\LWR@loadafter{hypernat}
\LWR@loadafter{hyperref}
\LWR@loadafter{hyperxmp}
\LWR@loadafter{hyphenat}
\LWR@loadafter{idxlayout}
\LWR@loadafter{ifoddpage}
\LWR@loadafter{imakeidx}
\LWR@notmemoirloadafter{index}
\LWR@loadafter{intopdf}
\LWR@loadafter{jurabib}
\LWR@loadafter{karnaugh-map}
\LWR@loadafter{keyfloat}
\LWR@loadafter{layaureo}
\LWR@loadafter{layout}
\LWR@loadafter{layouts}
\LWR@loadafter{leading}
\LWR@loadafter{leftidx}
\LWR@loadafter{letterspace}
\LWR@loadafter{lettrine}
\LWR@loadafter{lineno}
\LWR@loadafter{lips}
\LWR@loadafter{listings}
\LWR@loadafter{listliketab}
\LWR@loadafter{longtable}
\LWR@loadafter{lscape}
\LWR@loadafter{ltablex}
\LWR@loadafter{ltcaption}
\LWR@loadafter{ltxgrid}
\LWR@loadafter{ltxtable}
\LWR@loadafter{lua-check-hyphen}
\LWR@loadafter{lua-visual-debug}
\LWR@loadafter{luacolor}
\LWR@loadafter{luamplib}
\LWR@loadafter{luatodonotes}
\LWR@loadafter{lyluatex}
\LWR@loadafter{magaz}
\LWR@notmemoirloadafter{makeidx}
\LWR@loadafter{manyfoot}
\LWR@loadafter{marginfit}
\LWR@loadafter{marginfix}
\LWR@loadafter{marginnote}
\LWR@loadafter{marvosym}
\LWR@loadafter{mathcomp}
\LWR@loadafter{mathdots}
\LWR@loadafter{mathfixs}
\LWR@loadafter{mathtools}
\LWR@loadafter{mcaption}
\LWR@loadafter{mdframed}
\LWR@loadafter{media9}
\LWR@loadafter{memhfixc}
\LWR@loadafter{metalogo}
\LWR@loadafter{metalogox}
\LWR@loadafter{mhchem}
\LWR@loadafter{microtype}
\LWR@loadafter{midfloat}
\LWR@loadafter{midpage}
\LWR@loadafter{minibox}
\LWR@loadafter{minitoc}
\LWR@loadafter{mismath}
\LWR@notmemoirloadafter{moreverb}
\LWR@notmemoirloadafter{movie15}
\LWR@notmemoirloadafter{mparhack}
\LWR@loadafter{multibib}
\LWR@loadafter{multicap}
\LWR@loadafter{multicolrule}
\LWR@loadafter{multimedia}
\LWR@loadafter{multiobjective}
\LWR@loadafter{multirow}
\LWR@loadafter{multitoc}
\LWR@loadafter{musicography}
\LWR@loadafter{nameauth}
\LWR@loadafter{nameref}
\LWR@loadafter{natbib}
\LWR@notmemoirloadafter{nccfancyhdr}
\LWR@loadafter{nccfoots}
\LWR@loadafter{nccmath}
\LWR@notmemoirloadafter{needspace}
\LWR@loadafter{newtxmath}
\LWR@notmemoirloadafter{nextpage}
\LWR@loadafter{nicefrac}
\LWR@loadafter{niceframe}
\LWR@loadafter{noitcrul}
\LWR@loadafter{nolbreaks}
\LWR@loadafter{nomencl}
\LWR@loadafter{nonfloat}
\LWR@loadafter{nonumonpart}
\LWR@loadafter{nopageno}
\LWR@loadafter{notes}
\LWR@loadafter{notespages}
\LWR@loadafter{nowidow}
\LWR@loadafter{ntheorem}
\LWR@loadafter{octave}
\LWR@loadafter{overpic}
\LWR@loadafter{pagegrid}
\LWR@notmemoirloadafter{pagenote}
\LWR@loadafter{pagesel}
\LWR@loadafter{paralist}
\LWR@loadafter{parallel}
\LWR@loadafter{parcolumns}
\LWR@loadafter{parnotes}
\LWR@notmemoirloadafter{parskip}
\LWR@loadafter{pbox}
\LWR@loadafter{pdfcol}
\LWR@loadafter{pdfcolfoot}
\LWR@loadafter{pdfcolmk}
\LWR@loadafter{pdfcolparallel}
\LWR@loadafter{pdfcolparcolumns}
\LWR@loadafter{pdfcomment}
\LWR@loadafter{pdfcrypt}
\LWR@loadafter{pdflscape}
\LWR@loadafter{pdfmarginpar}
\LWR@loadafter{pdfpages}
\LWR@loadafter{pdfprivacy}
\LWR@loadafter{pdfrender}
\LWR@loadafter{pdfsync}
\LWR@loadafter{pdftricks}
\LWR@loadafter{pdfx}
\LWR@loadafter{perpage}
\LWR@loadafter{pfnote}
\LWR@loadafter{phfqit}
\LWR@loadafter{physics}
\LWR@loadafter{physunits}
\LWR@loadafter{pifont}
\LWR@loadafter{placeins}
\LWR@loadafter{plarray}
\LWR@loadafter{plarydshln}
\LWR@loadafter{plextarray}
\LWR@loadafter{plextarydshln}
\LWR@loadafter{plcolortbl}
\LWR@loadafter{plextdelarray}
\LWR@loadafter{prelim2e}
\LWR@loadafter{prettyref}
\LWR@loadafter{preview}
\LWR@loadafter{psfrag}
\LWR@loadafter{psfragx}
\LWR@loadafter{pst-eps}
\LWR@loadafter{pstool}
\LWR@loadafter{pstricks}
\LWR@loadafter{pxeveryshi}
\LWR@loadafter{pxftnright}
\LWR@loadafter{pxjahyper}
\LWR@loadafter{quotchap}
\LWR@loadafter{quoting}
\LWR@loadafter{ragged2e}
\LWR@loadafter{realscripts}
\LWR@loadafter{refcheck}
\LWR@loadafter{register}
\LWR@loadafter{relsize}
\LWR@loadafter{repeatindex}
\LWR@loadafter{resizegather}
\LWR@loadafter{returntogrid}
\LWR@loadafter{rmathbr}
\LWR@loadafter{rmpage}
\LWR@loadafter{romanbar}
\LWR@loadafter{romanbarpagenumber}
\LWR@loadafter{rotating}
\LWR@loadafter{rotfloat}
\LWR@loadafter{rviewport}
\LWR@loadafter{savetrees}
\LWR@loadafter{schemata}
\LWR@loadafter{scrextend}
\LWR@loadafter{scrhack}
\LWR@loadafter{scrlayer}
\LWR@loadafter{scrlayer-notecolumn}
\LWR@loadafter{scrlayer-scrpage}
\LWR@loadafter{scrpage2}
\LWR@loadafter{section}
\LWR@loadafter{sectionbreak}
\LWR@loadafter{sectsty}
\LWR@loadafter{semantic-markup}
\LWR@notmemoirloadafter{setspace}
\LWR@loadafter{shadow}
\LWR@loadafter{shapepar}
\LWR@notmemoirloadafter{showidx}
\LWR@loadafter{showkeys}
\LWR@loadafter{showtags}
\LWR@loadafter{sidecap}
\LWR@loadafter{sidenotes}
\LWR@loadafter{SIunits}
\LWR@loadafter{siunitx}
\LWR@loadafter{slantsc}
\LWR@loadafter{slashed}
\LWR@loadafter{soul}
\LWR@loadafter{soulpos}
\LWR@loadafter{soulutf8}
\LWR@loadafter{splitbib}
\LWR@loadafter{splitidx}
\LWR@loadafter{srcltx}
\LWR@loadafter{srctex}
\LWR@loadafter{stabular}
\LWR@loadafter{stackengine}
\LWR@loadafter{stackrel}
\LWR@loadafter{statex2}
\LWR@loadafter{statmath}
\LWR@loadafter{steinmetz}
\LWR@notltjloadafter{stfloats}
\LWR@loadafter{struktex}
\LWR@loadafter{subcaption}
\LWR@loadafter{subfig}
\LWR@loadafter{subfigure}
\LWR@loadafter{subsupscripts}
\LWR@loadafter{supertabular}
\LWR@loadafter{svg}
\LWR@loadafter{syntonly}
\LWR@loadafter{t1inc}
\LWR@loadafter{tabfigures}
\LWR@loadafter{tabls}
\LWR@loadafter{tablefootnote}
\LWR@notmemoirloadafter{tabularx}
\LWR@loadafter{tabulary}
\LWR@loadafter{tagpdf}
\LWR@loadafter{tascmac}
\LWR@loadafter{tcolorbox}
\LWR@loadafter{termcal}
\LWR@loadafter{textarea}
\LWR@loadafter{textfit}
\LWR@loadafter{textpos}
\LWR@loadafter{theorem}
\LWR@loadafter{thinsp}
\LWR@loadafter{thm-listof}
\LWR@loadafter{thm-restate}
\LWR@loadafter{thmbox}
\LWR@loadafter{threadcol}
\LWR@loadafter{threeparttable}
\LWR@loadafter{threeparttablex}
\LWR@loadafter{thumb}
\LWR@loadafter{thumbs}
\LWR@loadafter{tikz}
\LWR@loadafter{titleps}
\LWR@loadafter{titlesec}
\LWR@loadafter{titletoc}
\LWR@notmemoirloadafter{titling}
\LWR@notmemoirloadafter{tocbibind}
\LWR@loadafter{tocdata}
\LWR@loadafter{tocenter}
\LWR@notmemoirloadafter{tocloft}
\LWR@loadafter{tocstyle}
\LWR@loadafter{todo}
\LWR@loadafter{todonotes}
\LWR@loadafter{topcapt}
\LWR@loadafter{tram}
\LWR@loadafter{transparent}
\LWR@loadafter{trimclip}
\LWR@loadafter{trivfloat}
\LWR@loadafter{truncate}
\LWR@loadafter{turnthepage}
\LWR@loadafter{twoup}
\LWR@loadafter{typicons}
\LWR@loadafter{umoline}
\LWR@loadafter{underscore}
\LWR@loadafter{unicode-math}
\LWR@loadafter{units}
\LWR@loadafter{unitsdef}
\LWR@loadafter{upref}
\LWR@loadafter{url}
\LWR@loadafter{uspace}
\LWR@loadafter{varioref}
\LWR@notmemoirloadafter{verse}
\LWR@loadafter{versonotes}
\LWR@loadafter{vertbars}
\LWR@loadafter{vmargin}
\LWR@loadafter{vowel}
\LWR@loadafter{vpe}
\LWR@loadafter{vwcol}
\LWR@loadafter{wallpaper}
\LWR@loadafter{watermark}
\LWR@loadafter{widetable}
\LWR@loadafter{widows-and-orphans}
\LWR@loadafter{witharrows}
\LWR@loadafter{wrapfig}
\LWR@loadafter{xbmks}
\LWR@loadafter{xcolor}
\LWR@loadafter{xechangebar}
\LWR@loadafter{xellipsis}
\LWR@loadafter{xfakebold}
\LWR@loadafter{xfrac}
\LWR@loadafter{xltabular}
\LWR@loadafter{xltxtra}
\LWR@loadafter{xmpincl}
\LWR@loadafter{xpiano}
\LWR@loadafter{xpinyin}
\LWR@loadafter{xr}
\LWR@loadafter{xr-hyper}
\LWR@loadafter{xtab}
\LWR@loadafter{xurl}
\LWR@loadafter{xy}
\LWR@loadafter{zwpagelayout}
\newcommand{\LWR@mdfive}[1]{%
\PackageError{lwarp}
{No MD5 macro was found}
{%
Lwarp must find the macros \protect\pdfmdfivesum\space
or \protect\mdfivesum.%
}
}
\let\LWR@mdfive\pdfmdfivesum
\ifLuaTeX
\RequirePackage{pdftexcmds}
\let\LWR@mdfive\pdf@mdfivesum
\fi
\ifXeTeX
\@ifundefined{pdffivesum}{}
{\let\LWR@mdfive\pdfmdfivesum}
\@ifundefined{mdfivesum}{}
{\let\LWR@mdfive\mdfivesum}
\fi
\newcommand*{\LWR@pdfencoding}{%
\RequirePackage[T1]{fontenc}
\@ifpackageloaded{inputenc}{}{
\@ifpackageloaded{inputenx}{}{
\RequirePackage[utf8]{inputenc}
}
}
}
\ifPDFTeX% pdflatex or dvi latex
\LWR@pdfencoding
\fi
\ifpTeX
\LWR@pdfencoding
\fi
\ifpTeX
\else
\RequirePackage{newunicodechar}
\newunicodechar{}{\texttimes}
\ifPDFTeX% pdflatex or dvi latex
\newunicodechar{}{ff}% Here, the first arguments are ligatures.
\newunicodechar{}{fi}
\newunicodechar{}{fl}
\newunicodechar{}{ffi}
\newunicodechar{}{ffl}
\newunicodechar{}{---}
\newunicodechar{}{--}
\fi
\fi
\ifxetexorluatex
\else
\ifdefstring{\f@family}{cmr}{
\IfFileExists{type1ec.sty}% found in cm-super
{}
{% cm-super not installed
\IfFileExists{lmodern.sty}{
\PackageInfo{lwarp}{cm-super not installed, loading lmodern}
\RequirePackage{lmodern}
}{
\PackageError{lwarp}
{%
Lwarp requires a vector font.\MessageBreak
Install and load cm-super, lmodern, or another\MessageBreak
Type-1 vector font before loading lwarp.\MessageBreak
Enter 'H' for possible solutions%
}
{%
Install cm-super or lmodern.\MessageBreak
If lmodern, load it before lwarp:\MessageBreak
\space\space\protect\usepackage{lmodern}\MessageBreak
\space\space\protect\usepackage{lwarp}%
}
}
}% cm-super not installed
}{}% f@family
\fi
\ifPDFTeX
\RequirePackage{upquote}
\fi
\ifpTeX
\RequirePackage{upquote}
\fi
\newlength{\LWR@templengthone}
\newlength{\LWR@templengthtwo}
\newlength{\LWR@templengththree}
\newcounter{LWR@tempcountone}
\newcommand*\LWR@providelength[1]{%
\ifdeflength{#1}{}{\newlength{#1}}%
}
\newcommand*{\LWR@convertto}[2]{\strip@pt\dimexpr #2*65536/\number\dimexpr 1#1}
\newcommand*{\LWR@printpercentlength}[2]{%
\setcounter{LWR@tempcountone}{100*\ratio{#1}{#2}}%
\arabic{LWR@tempcountone}%
}
\providecommand*{\defaddtocounter}[2]{%
\defcounter{#1}{\value{#1}+#2}%
}
\newcommand*{\LWR@patcherror}[2]{%
\PackageError{lwarp}%
{%
Unable to patch package #1, macro #2.\MessageBreak
Lwarp may need to be updated%
}%
{Please contact the maintainer of the Lwarp package.}%
}
\newcommand{\LWR@isolate}[1]{#1}%
\@ifpackageloaded{ctexpatch}{
\renewcommand{\LWR@isolate}[1]{\null#1\null}%
}{}
\@ifpackageloaded{xeCJK}{
\renewcommand{\LWR@isolate}[1]{\null#1\null}%
}{}
\newcommand*{\LWR@disablepinyin}{}
\newcommand*{\LWR@forceemptyline}{%
\LWR@origrule{0pt}{1\baselineskip}%
\LWR@orignewline%
}
\long\def\LWR@firstoffour#1#2#3#4{#1}
\long\def\LWR@secondoffour#1#2#3#4{#2}
\long\def\LWR@thirdoffour#1#2#3#4{#3}
\long\def\LWR@fourthoffour#1#2#3#4{#4}
\newcounter{LWR@texboxdepth}
\setcounter{LWR@texboxdepth}{0}
\newcommand*{\LWR@maybe@orignewpage}{%
\ifnumgreater{\value{LWR@texboxdepth}}{0}{}{\LWR@orignewpage}%
}
\DeclareRobustCommand\LWR@gsavebox[1]{%
\@ifnextchar(%)
{\LWR@@gsavepicbox#1}{\@ifnextchar[{\LWR@@gsavebox#1}{\LWR@gsbox#1}}}%
\long\def\LWR@gsbox#1#2{\global\setbox#1\hbox{%
\color@setgroup#2\color@endgroup}}
\def\LWR@@gsavebox#1[#2]{%
\@ifnextchar [{\LWR@@igsavebox#1[#2]}{\LWR@@igsavebox#1[#2][c]}}
\long\def\LWR@@igsavebox#1[#2][#3]#4{%
\LWR@gsbox#1{\@imakebox[#2][#3]{#4}}}
\def\LWR@@gsavepicbox#1(#2,#3){%
\@ifnextchar[%]
{\LWR@@igsavepicbox#1(#2,#3)}{\LWR@@igsavepicbox#1(#2,#3)[]}}
\long\def\LWR@@igsavepicbox#1(#2,#3)[#4]#5{%
\LWR@gsbox#1{\@imakepicbox(#2,#3)[#4]{#5}}}
\def\LWR@glrbox#1{%
\edef\reserved@a{%
\endgroup
\global\setbox#1\hbox{%
\begingroup\aftergroup}%
\def\noexpand\@currenvir{\@currenvir}%
\def\noexpand\@currenvline{\on@line}}%
\reserved@a
\@endpefalse
\color@setgroup
\ignorespaces}
\let\LWR@endglrbox\LWR@endlrbox
\newcommand*{\macrotocsname}[1]{%
\ifcat\relax\noexpand#1%
\expandafter\expandafter\expandafter\@gobble\expandafter\string
\fi
#1%
}
\newcommand*{\LWR@LetLtxMacrocs}[2]{%
\expandafter\LetLtxMacro\csname #1\expandafter\endcsname%
\csname#2\endcsname%
}
\newcommand*{\LWR@absorbstar}[1]{%
\LWR@LetLtxMacrocs{LWR@origns@#1}{#1}%
\csdef{#1}{\@ifstar{\csuse{LWR@origns@#1}}{\csuse{LWR@origns@#1}}}
\expandafter\robustify\csname #1\endcsname
}
\let\LWRpercent\@percentchar
\catcode`\$=12
\def\LWRdollar{$}
\catcode`\$=3
\catcode`\&=12
\def\LWRamp{&}
\catcode`\&=4
\catcode`\&=0
&catcode`&\=12
&def&LWRbackslash{\}
&catcode`&\=0
\catcode`\&=4
\catcode`\&=1
\catcode`\{=12
\def\LWRleftbrace&{}
\catcode`\{=1
\catcode`\&=4
\catcode`\&=2
\catcode`\}=12
\def\LWRrightbrace{}&
\catcode`\}=2
\catcode`\&=4
\catcode`\#=12
\def\LWRhash{#}
\catcode`\#=6
\def\LWRopquote{'}
\def\LWRopseq{\space\LWRamp\LWRamp\space\space}
\newbool{usingOSWindows}
\boolfalse{usingOSWindows}
\newcommand*{\OSPathSymbol}{/}
\newcommand*{\LWR@setOSWindows}
{
\booltrue{usingOSWindows}
\renewcommand*{\OSPathSymbol}{\@backslashchar}
\def\LWRopquote{"}
\def\LWRopseq{\space\LWRamp\space\space}
}
\ifwindows
\LWR@setOSWindows
\fi
\RequirePackage{kvoptions}
\SetupKeyvalOptions{family=LWR,prefix=LWR@}
\newcommand{\lwarpsetup}[1]{\setkeys{LWR}{#1}}
\newbool{warpingprint}
\newbool{warpingHTML}
\newbool{mathjax}
\newbool{LWR@origmathjax}
\booltrue{warpingprint}%
\boolfalse{warpingHTML}%
\boolfalse{mathjax}%
\DeclareVoidOption{warpprint}{%
\PackageInfo{lwarp}{Using option 'warpprint'}
\booltrue{warpingprint}%
\boolfalse{warpingHTML}%
}
\DeclareVoidOption{warpHTML}{%
\PackageInfo{lwarp}{Using option 'warpHTML'}%
\booltrue{warpingHTML}%
\boolfalse{warpingprint}%
}
\DeclareVoidOption{mathsvg}{%
\PackageInfo{lwarp}{Using option 'mathsvg'}
\boolfalse{mathjax}%
\boolfalse{LWR@origmathjax}%
}
\DeclareVoidOption{mathjax}{%
\PackageInfo{lwarp}{Using option 'mathjax'}
\booltrue{mathjax}%
\booltrue{LWR@origmathjax}%
}
\DeclareStringOption[\jobname]{BaseJobname}
\DeclareStringOption[\BaseJobname-images]{ImagesDirectory}
\DeclareStringOption[image-]{ImagesName}
\DeclareStringOption[lwarp.ist]{makeindexStyle}
\DeclareStringOption[lwarp.xdy]{xindyStyle}
\DeclareStringOption[english]{xindyLanguage}
\DeclareStringOption[utf8]{xindyCodepage}
\DeclareStringOption[]{xindexConfig}
\DeclareStringOption[UTF-8]{pdftotextEnc}
\newbool{LWR@creatinglwarpmk}
\boolfalse{LWR@creatinglwarpmk}
\DeclareVoidOption{lwarpmk}{
\PackageInfo{lwarp}{Using option 'lwarpmk'}
\booltrue{LWR@creatinglwarpmk}
}
\DeclareVoidOption{OSWindows}{
\PackageInfo{lwarp}{Using option 'OSWindows'}
\LWR@setOSWindows
}
\DeclareStringOption[]{HomeHTMLFilename}
\DeclareStringOption[]{HTMLFilename}
\DeclareStringOption[]{PrintLatexCmd}
\DeclareStringOption[]{HTMLLatexCmd}
\DeclareStringOption[]{PrintIndexCmd}
\DeclareStringOption[]{HTMLIndexCmd}
\DeclareStringOption[]{LatexmkIndexCmd}
\DeclareBoolOption[false]{makeindex}
\DeclareBoolOption[false]{xindy}
\DeclareBoolOption[false]{xindex}
\DeclareStringOption[cref]{IndexRef}
\DeclareStringOption[makeglossaries]{GlossaryCmd}
\DeclareBoolOption[false]{latexmk}
\DeclareBoolOption[false]{dvips}
\DeclareBoolOption[false]{dvipdfm}
\DeclareBoolOption[false]{dvipdfmx}
\ProcessKeyvalOptions*\relax
\providecommand*{\BaseJobname}{\LWR@BaseJobname}
\ifcsempty{LWR@HomeHTMLFilename}{
\newcommand*{\HomeHTMLFilename}{\BaseJobname}
}{
\csedef{HomeHTMLFilename}{\LWR@HomeHTMLFilename}
}
\csedef{HTMLFilename}{\LWR@HTMLFilename}
\newcommand*{\LWR@sanitized}{}
\newcommand*{\LWR@sanitize}[1]{%
\edef\LWR@sanitized{#1}%
\edef\LWR@sanitized{\detokenize\expandafter{\LWR@sanitized}}%
}
\LWR@sanitize{\LWR@BaseJobname}
\edef\LWR@BaseJobname{\LWR@sanitized}
\LWR@sanitize{\LWR@ImagesDirectory}
\edef\LWR@ImagesDirectory{\LWR@sanitized}
\LWR@sanitize{\LWR@ImagesName}
\edef\LWR@ImagesName{\LWR@sanitized}
\ifdefempty{\LWR@PrintIndexCmd}{
\renewcommand{\LWR@PrintIndexCmd}{%
makeindex -s \LWR@makeindexStyle \space \jobname.idx%
}
\ifbool{LWR@xindy}{
\renewcommand{\LWR@PrintIndexCmd}{%
xindy
-M \LWR@xindyStyle \space
-L \LWR@xindyLanguage \space
-C \LWR@xindyCodepage \space
\jobname.idx%
}
}{}
\ifbool{LWR@xindex}{
\ifdefvoid{\LWR@xindexConfig}{
\renewcommand{\LWR@PrintIndexCmd}{%
xindex
\jobname.idx%
}
}{
\renewcommand{\LWR@PrintIndexCmd}{%
xindex
-c \LWR@xindexConfig \space
\jobname.idx%
}
}
}{}
}{}
\ifdefempty{\LWR@HTMLIndexCmd}{
\renewcommand{\LWR@HTMLIndexCmd}{%
makeindex -s \LWR@makeindexStyle \space \jobname_html.idx%
}
\ifbool{LWR@xindy}{
\renewcommand{\LWR@HTMLIndexCmd}{%
xindy
-M \LWR@xindyStyle \space
-L \LWR@xindyLanguage \space
-C \LWR@xindyCodepage \space
\jobname_html.idx%
}
}{}
\ifbool{LWR@xindex}{
\ifdefvoid{\LWR@xindexConfig}{
\renewcommand{\LWR@HTMLIndexCmd}{%
xindex
\jobname_html.idx%
}
}{
\renewcommand{\LWR@HTMLIndexCmd}{%
xindex
-c \LWR@xindexConfig \space
\jobname_html.idx%
}
}
}{}
}{}
\ifdefempty{\LWR@LatexmkIndexCmd}{
\renewcommand{\LWR@LatexmkIndexCmd}{%
makeindex -s \LWR@makeindexStyle%
}
\ifbool{LWR@xindy}{
\renewcommand{\LWR@LatexmkIndexCmd}{%
xindy
-M \LWR@xindyStyle \space
-L \LWR@xindyLanguage \space
-C \LWR@xindyCodepage%
}
}{}
\ifbool{LWR@xindex}{
\ifdefvoid{\LWR@xindexConfig}{
\renewcommand{\LWR@LatexmkIndexCmd}{%
xindex
}
}{
\renewcommand{\LWR@LatexmkIndexCmd}{%
xindex
-c \LWR@xindexConfig
}
}
}{}
}{}
\newcommand{\warpprintonly}[1]{\ifbool{warpingprint}{#1}{}}
\newcommand{\warpHTMLonly}[1]{\ifbool{warpingHTML}{#1}{}}
\RequirePackage{comment}
\def\LWR@includecomment
#1#2{\message{Lwarp: Including comment '#1'}%
\csarg\def{After#1Comment}{\CloseAndInputCutFile}
\csarg\def{#1}{\endgroup \message{Including '#1' comment.}%
\def\CommentCutFile{comment_#2.cut} \SetUpCutFile \ProcessComment{#1}}%
\CommentEndDef{#1}}
\def\LWR@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}}
\LWR@includecomment{warpall}{all}
\ifbool{warpingHTML}
{\LWR@includecomment{warpHTML}{html}}
{\LWR@excludecomment{warpHTML}{html}}
\ifbool{warpingprint}
{\LWR@includecomment{warpprint}{print}}
{\LWR@excludecomment{warpprint}{print}}
\begin{warpprint}
\LWR@excludecomment{warpMathJax}{mathjax}
\end{warpprint}
\begin{warpHTML}
\ifbool{mathjax}
{\LWR@includecomment{warpMathJax}{mathjax}}
{\LWR@excludecomment{warpMathJax}{mathjax}}
\end{warpHTML}
\ifbool{LWR@creatinglwarpmk}
{\LWR@includecomment{LWRcreatelwarpmk}{lwarpmk}}
{\LWR@excludecomment{LWRcreatelwarpmk}{lwarpmk}}
\begin{warpHTML}
\ifxetexorluatex
\@ifpackageloaded{fontspec}{}{
\usepackage[no-math]{fontspec}
}
\defaultfontfeatures[\rmfamily]{Ligatures={NoCommon,TeX}}
\defaultfontfeatures[\sffamily]{Ligatures={NoCommon,TeX}}
\defaultfontfeatures[\ttfamily]{Ligatures=NoCommon}
\else
\RequirePackage {microtype}
\microtypesetup{
protrusion=false,
expansion=false,
tracking=false,
kerning=false,
spacing=false}
\DisableLigatures[f,q,t,T,Q]{encoding = *,family = *}
\fi
\end{warpHTML}
\begin{warpHTML}
\@ifpackageloaded{geometry}
{}{
\RequirePackage[
reset,
paperwidth=\paperwidth,
paperheight=\paperheight,
textwidth=\textwidth,
textheight=\textheight,
left=\oddsidemargin,
top=\topmargin,
marginparsep=\marginparsep,
marginparwidth=\marginparwidth,
]{geometry}
}
\LetLtxMacro\LWR@origgeometry\geometry
\LetLtxMacro\LWR@orignewgeometry\newgeometry
\LetLtxMacro\LWR@origrestoregeometry\restoregeometry
\LetLtxMacro\LWR@origsavegeometry\savegeometry
\LetLtxMacro\LWR@origloadgeometry\loadgeometry
\newbool{LWR@allowanothergeometry}
\booltrue{LWR@allowanothergeometry}
\AtEndPreamble{
\LWR@origsavegeometry{LWR@usergeometry}
%% \begin{macrocode}
\newlength{\LWR@userspaperwidth}
\setlength{\LWR@userspaperwidth}{\paperwidth}
\newlength{\LWR@userspaperheight}
\setlength{\LWR@userspaperheight}{\paperheight}
\newlength{\LWR@usersmarginparwidth}
\setlength{\LWR@usersmarginparwidth}{\marginparwidth}
\newlength{\LWR@userstextwidth}
\setlength{\LWR@userstextwidth}{\textwidth}
\newlength{\LWR@userstextheight}
\setlength{\LWR@userstextwidth}{\textheight}
\LWR@origgeometry{
reset,
paperheight=190in,
paperwidth=20in,
left=2in,
right=6in,
top=1in,
bottom=1in,
heightrounded,%
}
\LWR@origsavegeometry{LWR@lwarpgeometry}
\boolfalse{LWR@allowanothergeometry}%
\setlength{\textheight}{0.8\paperheight}
\setlength{\textwidth}{0.7\paperwidth}
\@twosidefalse
\@mparswitchfalse
}% \AtEndPreamble
\end{warpHTML}
\begin{warpall}
\RequirePackage{xparse}
\RequirePackage{calc}
\end{warpall}
\begin{warpHTML}
\RequirePackage{expl3}
\RequirePackage{gettitlestring}
\@ifundefined{bxjs@everypar}{}{\let\everypar\bxjs@everypar}
\RequirePackage{everyhook}
\end{warpHTML}
\begin{warpall}
\@ifundefined{filec@ntents@opt}{% older kernel, discard optional args
\RequirePackage{filecontents}
\LetLtxMacro\LWR@orig@filec@ntents\filec@ntents
\@ifpackagelater{filecontents}{2011/10/08}
{
\renewcommand*{\filec@ntents}[1][]{\LWR@orig@filec@ntents}
}
{% patch older package for morewrites
\newwrite\fcwrite
\renewcommand*{\filec@ntents}[1][]{%
\def\chardef##1\write{\let\reserved@c\fcwrite}%
\LWR@orig@filec@ntents%
}
}
}% older kernel
{% newer kernel
}% newer kernel, filecontents env accepts optional args, do not load package
\end{warpall}
\begin{warpHTML}
\RequirePackage{xifthen}
\RequirePackage{verbatim}
\RequirePackage{refcount}
\RequirePackage{newfloat}
\end{warpHTML}
\begin{warpall}
\RequirePackage{xstring}[2019/02/01]
\RequirePackage{environ}
\end{warpall}
\begin{warpHTML}
\RequirePackage{printlen}
\newrobustcmd*{\LWR@printlength}[1]{%
\begingroup%
\uselengthunit{PT}%
\renewcommand*{\unitspace}{}%
\ifdimless{#1}{10pt}{%
\printlength{#1}%
}{%
\rndprintlength{#1}%
}%
\endgroup%
}
\end{warpHTML}
\begin{warpprint}
\RequirePackage{varwidth}
\end{warpprint}
\begin{warpall}
\LetLtxMacro\LWR@origRequirePackage\RequirePackage
\LetLtxMacro\LWR@origRequirePackageWithOptions\RequirePackageWithOptions
\newcommand*{\LWR@requirepackagenames}{}
\newcommand*{\LWR@parsedrequirepackagenames}{}
\newcommand*{\LWR@nullifycomment}{%
\PackageInfo{lwarp}%
{Nullifying the comment environment before loading \LWR@strresulttwo,}%
\let\comment\relax%
\let\endcomment\relax%
}
\newcommand*\LWR@findword[3][,]{%
\StrBetween[#3,\numexpr#3+1]{#1#2#1}{#1}{#1}%
}
\newcommand*{\LWR@checkloadfilename}[1]{%
\LWR@checkloadnever{#1}{ae}{cm-super, lmodern}
\LWR@checkloadnever{#1}{aecc}{cm-super, lmodern}
\LWR@checkloadnever{#1}{aecompl}{cm-super, lmodern}
\LWR@checkloadnever{#1}{alg}{algorithm2e, algorithmicx}
\LWR@checkloadnever{#1}{algorithmic}{algorithm2e, algorithmicx}
\LWR@checkloadnever{#1}{bitfield}{bytefield}
\LWR@checkloadnever{#1}{caption2}{caption}
\LWR@checkloadnever{#1}{ccaption}{caption}% might be preloaded by memoir
\LWR@checkloadnever{#1}{colortab}{colortbl}
\LWR@checkloadnever{#1}{csvtools}{datatool}
\LWR@checkloadnever{#1}{doublespace}{setspace}
\LWR@checkloadnever{#1}{epsf}{graphicx}
\LWR@checkloadnever{#1}{fancyheadings}{fancyhdr}
\LWR@checkloadnever{#1}{fncylab}{cleveref}
\LWR@checkloadnever{#1}{formula}{siunitx}
\LWR@checkloadnever{#1}{glossary}{glossaries}
\LWR@checkloadnever{#1}{hyper}{hyperref}
\LWR@checkloadnever{#1}{newthm}{ntheorem}
\LWR@checkloadnever{#1}{pdfcprot}{microtype}
\LWR@checkloadnever{#1}{picinpar}{floatflt, wrapfig}
\LWR@checkloadnever{#1}{picins}{floatflt, wrapfig}
\LWR@checkloadnever{#1}{rplain}{fancyhdr}
\LWR@checkloadnever{#1}{si}{siunitx}
\LWR@checkloadnever{#1}{sistyle}{siunitx}
\LWR@checkloadnever{#1}{slashbox}{diagbox}
\LWR@checkloadnever{#1}{statex}{statex2}
\LWR@checkloadnever{#1}{t1enc}{fontenc, inputenc, inputenx}
\LWR@checkloadnever{#1}{ucs}{inputenc, inputencx}
\LWR@checkloadnever{#1}{wasysym}{textcomp, amssymb, amsfonts, mnsymbol, fdsymbol}
\LWR@checkloadnever{#1}{bxcjkjatype}{upLaTeX, bxjsarticle, ujarticle, utarticle}
\LWR@checkloadnever{#1}{hangul}{kotex, xetexko, luatexko}
\LWR@checkloadbefore{#1}{ctex}
\LWR@checkloadbefore{#1}{fontspec}
\LWR@checkloadbefore{#1}{inputenc}
\LWR@checkloadbefore{#1}{inputenx}
\LWR@checkloadbefore{#1}{nfssext-cfr}
\LWR@checkloadbefore{#1}{fontaxes}
\LWR@checkloadbefore{#1}{kotex}
\LWR@checkloadbefore{#1}{luatexja}
\LWR@checkloadbefore{#1}{luatexja-fontspec}
\LWR@checkloadbefore{#1}{luatexko}
\LWR@checkloadbefore{#1}{morewrites}
\LWR@checkloadbefore{#1}{newclude}
\LWR@checkloadbefore{#1}{newunicodechar}
\LWR@checkloadbefore{#1}{plext}
\LWR@checkloadbefore{#1}{xeCJK}
\LWR@checkloadbefore{#1}{xetexko}
\LWR@checkloadbefore{#1}{zxjatype}
}
\newcommand*{\LWR@lookforpackagename}[1]{%
\LWR@findword{\LWR@requirepackagenames}{#1}[\LWR@strresult]%
\StrSubstitute[100]{\LWR@strresult}{ }{}[\LWR@strresulttwo]%
\IfStrEq{\LWR@strresulttwo}{}%
{}% no filename
{% yes filename was found
\ifdefstring{\LWR@strresulttwo}{easyReview}{\LWR@nullifycomment}{}%
\ifdefstring{\LWR@strresulttwo}{changes}{\LWR@nullifycomment}{}%
\ifbool{warpingHTML}{\LWR@checkloadfilename{\LWR@strresulttwo}}{}%
\ifboolexpr{
bool{warpingHTML} and
test{\IfFileExists{lwarp-\LWR@strresulttwo.sty}}
}%
{% lwarp-* file found
\ifdefvoid{\LWR@parsedrequirepackagenames}{%
\edef\LWR@parsedrequirepackagenames{lwarp-\LWR@strresulttwo}%
}{%
\edef\LWR@parsedrequirepackagenames{%
\LWR@parsedrequirepackagenames,lwarp-\LWR@strresulttwo%
}%
}%
}%
{%
\ifdefvoid{\LWR@parsedrequirepackagenames}{%
\edef\LWR@parsedrequirepackagenames{\LWR@strresulttwo}%
}{%
\edef\LWR@parsedrequirepackagenames{%
\LWR@parsedrequirepackagenames,\LWR@strresulttwo%
}%
}%
}% no lwarp-* file
}% yes filename
}
\RenewDocumentCommand{\RequirePackage}{o m o}{%
\renewcommand*{\LWR@requirepackagenames}{#2}%
\renewcommand*{\LWR@parsedrequirepackagenames}{}%
\LWR@lookforpackagename{1}%
\LWR@lookforpackagename{2}%
\LWR@lookforpackagename{3}%
\LWR@lookforpackagename{4}%
\LWR@lookforpackagename{5}%
\LWR@lookforpackagename{6}%
\LWR@lookforpackagename{7}%
\LWR@lookforpackagename{8}%
\LWR@lookforpackagename{9}%
\LWR@lookforpackagename{10}%
\LWR@lookforpackagename{11}%
\LWR@lookforpackagename{12}%
\LWR@lookforpackagename{13}%
\LWR@lookforpackagename{14}%
\LWR@lookforpackagename{15}%
\LWR@lookforpackagename{16}%
\LWR@lookforpackagename{17}%
\LWR@lookforpackagename{18}%
\LWR@lookforpackagename{19}%
\LWR@lookforpackagename{20}%
\IfValueTF{#1}%
{% options given
\IfValueTF{#3}% version given?
{\LWR@origRequirePackage[#1]{\LWR@parsedrequirepackagenames}[#3]}%
{\LWR@origRequirePackage[#1]{\LWR@parsedrequirepackagenames}}%
}%
{% no options given
\IfValueTF{#3}% version given?
{\LWR@origRequirePackage{\LWR@parsedrequirepackagenames}[#3]}%
{\LWR@origRequirePackage{\LWR@parsedrequirepackagenames}}%
}%
}
\LetLtxMacro\usepackage\RequirePackage
\end{warpall}
\begin{warpHTML}
\NewDocumentCommand{\LWR@ProvidesPackagePass}{m o}{
\PackageInfo{lwarp}{%
Using package `#1',\MessageBreak
and adding lwarp modifications, including options,\MessageBreak%
}%
\IfValueTF{#2}%
{\ProvidesPackage{lwarp-#1}[#2]}%
{\ProvidesPackage{lwarp-#1}}%
\DeclareOption*{%
\PassOptionsToPackage{\CurrentOption}{#1}%
}%
\ProcessOptions\relax%
\@ifpackageloaded{#1}{%
\edef\LWR@tempone{\csuse{opt@#1.sty}}%
\IfValueTF{#2}%
{%
\expandafter\LWR@origRequirePackage%
\expandafter[\LWR@tempone]{#1}[#2]%
}%
{%
\expandafter\LWR@origRequirePackage%
\expandafter[\LWR@tempone]{#1}%
}%
}{%
\IfValueTF{#2}%
{\LWR@origRequirePackage{#1}[#2]}%
{\LWR@origRequirePackage{#1}}%
}%
\DeclareOption*{}%
\ProcessOptions\relax%
}
\newcommand*{\LWR@ProvidesPackageDropA}[2]{%
\PackageInfo{lwarp}{%
Replacing package `#1' with the lwarp version,\MessageBreak
and discarding options,%
}%
\IfValueTF{#2}
{\ProvidesPackage{lwarp-#1}[#2]}
{\ProvidesPackage{lwarp-#1}}
}
\newcommand*{\LWR@ProvidesPackageDropB}{%
\let\ds@\@empty% from the original \ProcessOptions
\edef\@curroptions{}% lwarp modification to \ProcessOptions
\@process@ptions\relax% from the original \ProcessOptions
}
\NewDocumentCommand{\LWR@ProvidesPackageDrop}{m o}{
\LWR@ProvidesPackageDropA{#1}{#2}
\DeclareOption*{}
\LWR@ProvidesPackageDropB
}
\end{warpHTML}
\begin{warpall}
\newwrite\LWR@quickfile%
\end{warpall}
\begin{warpHTML}
\newwrite\LWR@lateximagesfile
\end{warpHTML}
\begin{warpHTML}
\def\@include#1 {%
\immediate\openout\LWR@quickfile #1_html_inc.tex% lwarp
\immediate\write\LWR@quickfile{\string\input{#1.tex}}% lwarp
\immediate\closeout\LWR@quickfile% lwarp
\LWR@maybe@orignewpage% changed from clearpage
\if@filesw
\immediate\write\@mainaux{\string\@input{#1_html_inc.aux}}% changed
\fi
\@tempswatrue
\if@partsw
\@tempswafalse
\edef\reserved@b{#1}%
\@for\reserved@a:=\@partlist\do
{\ifx\reserved@a\reserved@b\@tempswatrue\fi}%
\fi
\if@tempswa
\let\@auxout\@partaux
\if@filesw
\immediate\openout\@partaux #1_html_inc.aux % changed
\immediate\write\@partaux{\relax}%
\fi
\@input@{#1_html_inc.tex}% changed
\LWR@maybe@orignewpage% changed from clearpage
\@writeckpt{#1}%
\if@filesw
\immediate\closeout\@partaux
\fi
\else
\deadcycles\z@
\@nameuse{cp@#1}%
\fi
\let\@auxout\@mainaux%
}
\end{warpHTML}
\begin{warpHTML}
\newwrite\LWR@copyoutfile % open the file to write to
\newread\LWR@copyinfile % open the file to read from
\newcommand*{\LWR@copyfile}[2]{%
\LWR@traceinfo{LWR@copyfile: copying #1 to #2}
\immediate\openout\LWR@copyoutfile=#2
\openin\LWR@copyinfile=#1
\begingroup\endlinechar=-1
\makeatletter
\LWR@traceinfo{LWR@copyfile: about to loop}
\loop\unless\ifeof\LWR@copyinfile
\LWR@traceinfo{LWR@copyfile: one line}
\read\LWR@copyinfile to\LWR@fileline % Read one line and store it into \LWR@fileline
\immediate\write\LWR@copyoutfile{\unexpanded\expandafter{\LWR@fileline}}%
\repeat
\immediate\closeout\LWR@copyoutfile
\LWR@traceinfo{LWR@copyfile: done}
\endgroup
}
\end{warpHTML}
\begin{warpall}
\newbool{LWR@tracinglwarp}
\newcommand{\tracinglwarp}{\booltrue{LWR@tracinglwarp}}
\newcommand{\LWR@traceinfo}[1]{%
\ifbool{LWR@tracinglwarp}%
{%
\typeout{*** lwarp: #1}%
}%
{}%
}
\newbool{HTMLDebugComments}
\boolfalse{HTMLDebugComments}
\AfterEndPreamble{
\LWR@traceinfo{AfterEndPreamble}
}
\AtBeginDocument{
\LWR@traceinfo{AtBeginDocument}
}
\end{warpall}
\begin{warpHTML}
\newcommand*{\LWR@formatting}{HTML}
\newcommand*{\LWR@formatted}[1]{%
\ifcsundef{LWR@print@#1}{%
\expandafter\LetLtxMacro\csname LWR@print@#1\expandafter\endcsname%
\csname#1\endcsname%
}{}%
\ifcsundef{#1}{%
\expandafter\newrobustcmd\csname #1\endcsname{%
\@nameuse{LWR@\LWR@formatting @#1}%
}%
}{%
\expandafter\renewrobustcmd\csname #1\endcsname{%
\@nameuse{LWR@\LWR@formatting @#1}%
}%
}%
}
\newcommand*{\LWR@expandableformatted}[1]{%
\ifcsundef{LWR@print@#1}{%
\expandafter\LetLtxMacro\csname LWR@print@#1\expandafter\endcsname%
\csname#1\endcsname%
}{}%
\ifcsundef{#1}{%
\expandafter\newcommand\csname #1\endcsname{%
\@nameuse{LWR@\LWR@formatting @#1}%
}%
}{%
\expandafter\renewcommand\csname #1\endcsname{%
\@nameuse{LWR@\LWR@formatting @#1}%
}%
}%
}
\newcommand*{\LWR@formattedenv}[1]{%
\ifcsundef{LWR@print@#1}{%
\expandafter\LetLtxMacro\csname LWR@print@#1\expandafter\endcsname%
\csname#1\endcsname%
\csletcs{endLWR@print@#1}{end#1}%
}{}%
\DeclareDocumentEnvironment{#1}{}%
{%
\@nameuse{LWR@\LWR@formatting @#1}%
}%
{%
\@nameuse{endLWR@\LWR@formatting @#1}%
}%
}
\newcommand*{\LWR@expandableformattedenv}[1]{%
\ifcsundef{LWR@print@#1}{%
\expandafter\LetLtxMacro\csname LWR@print@#1\expandafter\endcsname%
\csname#1\endcsname%
\csletcs{endLWR@print@#1}{end#1}%
}{}%
\DeclareExpandableDocumentEnvironment{#1}{}%
{%
\@nameuse{LWR@\LWR@formatting @#1}%
}%
{%
\@nameuse{endLWR@\LWR@formatting @#1}%
}%
}
\end{warpHTML}
\begin{warpall}
\newbool{FormatEPUB}
\boolfalse{FormatEPUB}
\newbool{FormatWP}
\boolfalse{FormatWP}
\newbool{WPMarkFloats}
\boolfalse{WPMarkFloats}
\newbool{WPMarkMinipages}
\boolfalse{WPMarkMinipages}
\newbool{WPMarkTOC}
\booltrue{WPMarkTOC}
\newbool{WPMarkLOFT}
\boolfalse{WPMarkLOFT}
\newbool{WPMarkMath}
\boolfalse{WPMarkMath}
\newbool{WPTitleHeading}
\boolfalse{WPTitleHeading}
\end{warpall}
\begin{warpHTML}
\AtBeginDocument{
\ifbool{FormatWP}{
\@ifundefined{chapter}{
\ifbool{WPTitleHeading}{% part and section starting at h2
\renewcommand*{\LWR@tagtitle}{h1}
\renewcommand*{\LWR@tagtitleend}{/h1}
\renewcommand*{\LWR@tagpart}{h2}
\renewcommand*{\LWR@tagpartend}{/h2}
\renewcommand*{\LWR@tagsection}{h3}
\renewcommand*{\LWR@tagsectionend}{/h3}
\renewcommand*{\LWR@tagsubsection}{h4}
\renewcommand*{\LWR@tagsubsectionend}{/h4}
\renewcommand*{\LWR@tagsubsubsection}{h5}
\renewcommand*{\LWR@tagsubsubsectionend}{/h5}
\renewcommand*{\LWR@tagparagraph}{h6}
\renewcommand*{\LWR@tagparagraphend}{/h6}
\renewcommand*{\LWR@tagsubparagraph}{span class="subparagraph"}
\renewcommand*{\LWR@tagsubparagraphend}{/span}
}% WPTitleHeading
{% not WPTitleHeading, part and section starting at h1
\renewcommand*{\LWR@tagtitle}{div class="title"}
\renewcommand*{\LWR@tagtitleend}{/div}
\renewcommand*{\LWR@tagpart}{h1}
\renewcommand*{\LWR@tagpartend}{/h1}
\renewcommand*{\LWR@tagsection}{h2}
\renewcommand*{\LWR@tagsectionend}{/h2}
\renewcommand*{\LWR@tagsubsection}{h3}
\renewcommand*{\LWR@tagsubsectionend}{/h3}
\renewcommand*{\LWR@tagsubsubsection}{h4}
\renewcommand*{\LWR@tagsubsubsectionend}{/h4}
\renewcommand*{\LWR@tagparagraph}{h5}
\renewcommand*{\LWR@tagparagraphend}{/h5}
\renewcommand*{\LWR@tagsubparagraph}{h6}
\renewcommand*{\LWR@tagsubparagraphend}{/h6}
}% not WPTitleHeading
}% chapter undefined
{% chapter defined
\ifbool{WPTitleHeading}{}
{% not WPTitleHeading, part and chapter starting at h1
\renewcommand*{\LWR@tagtitle}{div class="title"}
\renewcommand*{\LWR@tagtitleend}{/div}
\renewcommand*{\LWR@tagpart}{h1}
\renewcommand*{\LWR@tagpartend}{/h1}
\renewcommand*{\LWR@tagchapter}{h2}
\renewcommand*{\LWR@tagchapterend}{/h2}
\renewcommand*{\LWR@tagsection}{h3}
\renewcommand*{\LWR@tagsectionend}{/h3}
\renewcommand*{\LWR@tagsubsection}{h4}
\renewcommand*{\LWR@tagsubsectionend}{/h4}
\renewcommand*{\LWR@tagsubsubsection}{h5}
\renewcommand*{\LWR@tagsubsubsectionend}{/h5}
\renewcommand*{\LWR@tagparagraph}{h6}
\renewcommand*{\LWR@tagparagraphend}{/h6}
\renewcommand*{\LWR@tagsubparagraph}{span class="subparagraph"}
\renewcommand*{\LWR@tagsubparagraphend}{/span}
}% not WPTitleHeading
}% chapter defined
}{}% FormatWP
}% AtBeginDocument
\end{warpHTML}
\begin{warpHTML}
\chardef\LWR@origpound=`\#
\let\LWR@origcomma\,
\let\LWR@origthinspace\thinspace
\let\LWR@orignegthinspace\negthinspace
\let\LWR@origtilde~
\let\LWR@origenskip\enskip
\let\LWR@origquad\quad
\let\LWR@origqquad\qquad
\let\LWR@orighfil\hfil
\let\LWR@orighss\hss
\let\LWR@origllap\llap
\let\LWR@origrlap\rlap
\let\LWR@orighfilneg\hfilneg
\let\LWR@orighspace\hspace
\let\LWR@origrule\rule
\let\LWR@origmedskip\medskip
\let\LWR@origbigskip\bigskip
\let\LWR@origtextellipsis\textellipsis
\let\LWR@origvdots\vdots
\let\LWR@orig@textquotedbl\textquotedbl
\LetLtxMacro\LWR@origttfamily\ttfamily
\LetLtxMacro\LWR@origem\em
\LetLtxMacro\LWR@orignormalfont\normalfont
\let\LWR@origonecolumn\onecolumn
\let\LWR@origsp\sp
\let\LWR@origsb\sb
\LetLtxMacro\LWR@origunderline\underline
\let\LWR@orignewpage\newpage
\let\LWR@origpagestyle\pagestyle
\let\LWR@origthispagestyle\thispagestyle
\LetLtxMacro\LWR@origpagenumbering\pagenumbering
\let\LWR@orignewline\newline
\AtBeginDocument{% in case packages change definition
\let\LWR@orig@trivlist\@trivlist
\let\LWR@origtrivlist\trivlist
\let\LWR@origendtrivlist\endtrivlist
\LetLtxMacro\LWR@origitem\item
\LetLtxMacro\LWR@origitemize\itemize
\LetLtxMacro\LWR@endorigitemize\enditemize
\LetLtxMacro\LWR@origenumerate\enumerate
\LetLtxMacro\LWR@endorigenumerate\endenumerate
\LetLtxMacro\LWR@origdescription\description
\LetLtxMacro\LWR@endorigdescription\enddescription
\let\LWR@orig@mklab\@mklab
\let\LWR@origmakelabel\makelabel
\let\LWR@orig@donoparitem\@donoparitem
\LetLtxMacro\LWR@orig@item\@item
\let\LWR@orig@nbitem\@nbitem
}
\let\LWR@origpar\par
\LetLtxMacro\LWR@origfootnote\footnote
\let\LWR@orig@mpfootnotetext\@mpfootnotetext
\AtBeginDocument{% in case packages change definition
\LetLtxMacro\LWR@orighline\hline%
\LetLtxMacro\LWR@origcline\cline%
}
\end{warpHTML}
\begin{warpHTML}
\AtBeginDocument{
\LetLtxMacro\LWR@origtie\t
\ifPDFTeX% pdflatex or dvi latex
\LetLtxMacro\LWR@origgraveaccent\`
\LetLtxMacro\LWR@origacuteaccent\'
\LetLtxMacro\LWR@origcircumflexaccent\^
\LetLtxMacro\LWR@origtildeaccent\~
\LetLtxMacro\LWR@origmacronaccent\=
\LetLtxMacro\LWR@origbreve\u
\LetLtxMacro\LWR@origdotaccent\.
\LetLtxMacro\LWR@origdiaeresisaccent\"
\LetLtxMacro\LWR@origdoubleacuteaccent\H
\LetLtxMacro\LWR@origcaronaccent\v
\LetLtxMacro\LWR@origdotbelowaccent\d
\LetLtxMacro\LWR@origcedillaaccent\c
\LetLtxMacro\LWR@origmacronbelowaccent\b
\renewcommand*{\`}[1]{#1\HTMLunicode{0300}}
\renewcommand*{\'}[1]{#1\HTMLunicode{0301}}
\renewcommand*{\^}[1]{#1\HTMLunicode{0302}}
\renewcommand*{\~}[1]{#1\HTMLunicode{0303}}
\renewcommand*{\=}[1]{#1\HTMLunicode{0304}}
\renewcommand*{\u}[1]{#1\HTMLunicode{0306}}
\renewcommand*{\.}[1]{#1\HTMLunicode{0307}}
\renewcommand*{\"}[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*{\b}[1]{#1\HTMLunicode{0331}}
\fi
\def\LWR@t#1#2{#1\HTMLunicode{0361}#2}
\renewcommand*{\t}[1]{\LWR@t#1}
\ifPDFTeX% pdflatex or dvi latex
\newcommand*{\LWR@restoreorigaccents}{%
\LetLtxMacro\`\LWR@origgraveaccent%
\LetLtxMacro\'\LWR@origacuteaccent%
\LetLtxMacro\^\LWR@origcircumflexaccent%
\LetLtxMacro\~\LWR@origtildeaccent%
\LetLtxMacro\=\LWR@origmacronaccent%
\LetLtxMacro\u\LWR@origbreve%
\LetLtxMacro\.\LWR@origdotaccent%
\LetLtxMacro\"\LWR@origdiaeresisaccent%
\LetLtxMacro\H\LWR@origdoubleacuteaccent%
\LetLtxMacro\v\LWR@origcaronaccent%
\LetLtxMacro\t\LWR@origtie%
\LetLtxMacro\d\LWR@origdotbelowaccent%
\LetLtxMacro\c\LWR@origcedillaaccent%
\LetLtxMacro\b\LWR@origmacronbelowaccent%
}%
\else% XeLaTeX, LuaLaTeX:
\newcommand*{\LWR@restoreorigaccents}{%
\LetLtxMacro\t\LWR@origtie%
}%
\fi%
}% AtBeginDocument
\end{warpHTML}
\LWR@excludecomment{LWRwriteconf}{writeconf}
\begin{warpprint}
\fullexpandarg%
\IfSubStr*{\jobname}{-pstool}
{
\PackageInfo{lwarp}{%
Jobname with -pstool is found.\MessageBreak
Not generating lwarp configuration files,%
}
}
{
\PackageInfo{lwarp}{Generating lwarp configuration files,}%
\LWR@includecomment{LWRwriteconf}{writeconf}
}
\end{warpprint}
\begin{LWRwriteconf}
\immediate\openout\LWR@quickfile=\jobname_html.tex
\immediate\write\LWR@quickfile{%
\detokenize{\PassOptionsToPackage}%
{warpHTML,BaseJobname=\jobname}{lwarp}%
}
\immediate\write\LWR@quickfile{%
\detokenize{\input}\string{\jobname.tex\string }%
}
\immediate\closeout\LWR@quickfile
\end{LWRwriteconf}
\begin{LWRwriteconf}
\newcommand*{\LWR@lwarpconfversion}{2}% also in lwarpmk.lua
\ifshellescape
\def\LWR@shellescapecmd{--shell-escape }
\else
\def\LWR@shellescapecmd{}
\fi
\newcommand*{\LWR@compilecmd}[2]{%
#1 \LWR@shellescapecmd \jobname#2%
}
\newcommand*{\LWR@addcompilecmd}[2]{%
\LWRopseq
#1 \jobname#2%
}
\newcommand*{\LWR@unknownengine}{%
\PackageError{lwarp}%
{Unknown LaTeX engine}%
{%
Lwarp only knows about pdflatex, dvi latex,
xelatex, lualatex, and upLateX.%
}%
}
\newcommand*{\LWR@latexmkvar}[2]{%
-e
\LWRopquote%
\LWRdollar #1=q/#2/%
\LWRopquote
}
\newcommand*{\LWR@latexmkcmd}[1]{%
latexmk \space \LWR@shellescapecmd \space #1 \space
-recorder \space
\LWR@latexmkvar{makeindex}{\LWR@LatexmkIndexCmd}%
}
\newcommand*{\LWR@latexmkdvipdfm}[1]{%
-pdfdvi \space
\LWR@latexmkvar{dvipdf}{%
#1
\@percentchar O
-o \@percentchar D
\@percentchar S%
}
}
\newcommand*{\LWR@compileuplatex}{
\def\LWR@tempprintlatexcmd{%
\LWR@compilecmd{uplatex}{}
\LWR@addcompilecmd{dvipdfmx}{}
}
\def\LWR@tempHTMLlatexcmd{%
\LWR@compilecmd{uplatex}{_html}
\LWR@addcompilecmd{dvipdfmx}{_html}
}
}
\ifbool{LWR@latexmk}{
\ifpdf
\ifPDFTeX
\def\LWR@latexcmd{\LWR@latexmkcmd{-pdf -dvi- -ps-}}
\else
\ifLuaTeX
\def\LWR@latexcmd{\LWR@latexmkcmd{-lualatex}}
\else
\LWR@unknownengine
\fi
\fi
\else% \ifpdf
\ifXeTeX
\def\LWR@latexcmd{\LWR@latexmkcmd{-xelatex}}
\else% \ifXeTeX
\ifbool{LWR@dvipdfm}{
\def\LWR@latexcmd{%
\LWR@latexmkcmd{%
\LWR@latexmkdvipdfm{dvipdfm}%
}
}
}{
\ifbool{LWR@dvipdfmx}{
\def\LWR@latexcmd{%
\LWR@latexmkcmd{%
\LWR@latexmkdvipdfm{dvipdfmx}%
}
}
}{
\def\LWR@latexcmd{\LWR@latexmkcmd{-pdfps}}
}
}
\fi
\fi% \ifpdf
\def\LWR@tempprintlatexcmd{\LWR@latexcmd \space \jobname}
\def\LWR@tempHTMLlatexcmd{\LWR@latexcmd \space \jobname_html}
}% latexmk
{% not latexmk
\ifpdf
\ifPDFTeX
\def\LWR@tempprintlatexcmd{\LWR@compilecmd{pdflatex}{}}
\def\LWR@tempHTMLlatexcmd{\LWR@compilecmd{pdflatex}{_html}}
\else
\ifLuaTeX
\def\LWR@tempprintlatexcmd{\LWR@compilecmd{lualatex}{}}
\def\LWR@tempHTMLlatexcmd{\LWR@compilecmd{lualatex}{_html}}
\else
\LWR@unknownengine
\fi
\fi
\else% \ifpdf
\ifXeTeX
\def\LWR@tempprintlatexcmd{\LWR@compilecmd{xelatex}{}}
\def\LWR@tempHTMLlatexcmd{\LWR@compilecmd{xelatex}{_html}}
\else
\ifbool{LWR@dvipdfm}{
\def\LWR@tempprintlatexcmd{%
\LWR@compilecmd{latex}{}
\LWR@addcompilecmd{dvipdfm}{}
}
\def\LWR@tempHTMLlatexcmd{%
\LWR@compilecmd{latex}{_html}
\LWR@addcompilecmd{dvipdfm}{_html}
}
}{
\ifbool{LWR@dvipdfmx}{
\def\LWR@tempprintlatexcmd{%
\LWR@compilecmd{latex}{}
\LWR@addcompilecmd{dvipdfmx}{}
}
\def\LWR@tempHTMLlatexcmd{%
\LWR@compilecmd{latex}{_html}
\LWR@addcompilecmd{dvipdfmx}{_html}
}
}{% dvips
\def\LWR@tempprintlatexcmd{%
\LWR@compilecmd{latex}{}
\LWR@addcompilecmd{dvips}{}
\LWR@addcompilecmd{ps2pdf}{}.ps
}
\def\LWR@tempHTMLlatexcmd{%
\LWR@compilecmd{latex}{_html}
\LWR@addcompilecmd{dvips}{_html}
\LWR@addcompilecmd{ps2pdf}{_html}.ps
}
}
}
\fi% \ifXeTeX
\fi% \ifpdf
}% latexmk
\@ifclassloaded{ujarticle}{\LWR@compileuplatex}{}
\@ifclassloaded{ujbook}{\LWR@compileuplatex}{}
\@ifclassloaded{ujreport}{\LWR@compileuplatex}{}
\@ifclassloaded{utarticle}{\LWR@compileuplatex}{}
\@ifclassloaded{utbook}{\LWR@compileuplatex}{}
\@ifclassloaded{utreport}{\LWR@compileuplatex}{}
\ifdefempty{\LWR@PrintLatexCmd}{
\def\LWR@PrintLatexCmd{\LWR@tempprintlatexcmd}
}{}
\ifdefempty{\LWR@HTMLLatexCmd}{
\def\LWR@HTMLLatexCmd{\LWR@tempHTMLlatexcmd}
}{}
\newcommand{\LWR@writeconf}[1]{
\ifcsdef{LWR@quickfile}{}{\newwrite{\LWR@quickfile}}
\immediate\openout\LWR@quickfile=#1
\immediate\write\LWR@quickfile{confversion = [[\LWR@lwarpconfversion]]}
\ifbool{usingOSWindows}{
\immediate\write\LWR@quickfile{opsystem = [[Windows]]}
}{
\immediate\write\LWR@quickfile{opsystem = [[Unix]]}
}
\immediate\write\LWR@quickfile{sourcename = [[\jobname]]}
\immediate\write\LWR@quickfile{homehtmlfilename = [[\HomeHTMLFilename]]}
\immediate\write\LWR@quickfile{htmlfilename = [[\HTMLFilename]]}
\immediate\write\LWR@quickfile{imagesdirectory = [[\LWR@ImagesDirectory]]}
\immediate\write\LWR@quickfile{imagesname = [[\LWR@ImagesName]]}
\immediate\write\LWR@quickfile{latexmk = [[\ifbool{LWR@latexmk}{true}{false}]]}
\immediate\write\LWR@quickfile{printlatexcmd = [[\LWR@PrintLatexCmd]]}
\immediate\write\LWR@quickfile{HTMLlatexcmd = [[\LWR@HTMLLatexCmd]]}
\immediate\write\LWR@quickfile{printindexcmd = [[\LWR@PrintIndexCmd]]}
\immediate\write\LWR@quickfile{HTMLindexcmd = [[\LWR@HTMLIndexCmd]]}
\immediate\write\LWR@quickfile{latexmkindexcmd = [[\LWR@LatexmkIndexCmd]]}
\immediate\write\LWR@quickfile{glossarycmd = [[\LWR@GlossaryCmd]]}
\immediate\write\LWR@quickfile{pdftotextenc = [[\LWR@pdftotextEnc]]}
\immediate\closeout\LWR@quickfile
}
\end{LWRwriteconf}
\begin{LWRwriteconf}
\AtBeginDocument{\LWR@writeconf{lwarpmk.conf}}
\end{LWRwriteconf}
\begin{LWRwriteconf}
\AtBeginDocument{\LWR@writeconf{\jobname.lwarpmkconf}}
\end{LWRwriteconf}
\begin{LWRwriteconf}
\begin{filecontents*}[overwrite]{lwarp.css}
/*
CSS stylesheet for the LaTeX Lwarp package
Copyright 2016-2020 Brian Dunn — BD Tech Concepts LLC
*/
/* a fix for older browsers: */
header, section, footer, aside, nav, main,
article, figure { display: block; }
A:link {color:#000080 ; text-decoration: none ; }
A:visited {color:#800000 ; }
A:hover {color:#000080 ; text-decoration: underline ;}
A:active {color:#800000 ; }
a.tocbook {display: inline-block ; margin-left: 0em ;
font-weight: bold ; margin-top: 1ex ; margin-bottom: 1ex ; }
a.tocpart {display: inline-block ; margin-left: 0em ;
font-weight: bold ;}
a.tocchapter {display: inline-block ; margin-left: 0em ;
font-weight: bold ;}
a.tocsection {display: inline-block ; margin-left: 1em ;
text-indent: -.5em ; font-weight: bold ; }
a.tocsubsection {display: inline-block ; margin-left: 2em ;
text-indent: -.5em ; }
a.tocsubsubsection {display: inline-block ; margin-left: 3em ;
text-indent: -.5em ; }
a.tocparagraph {display: inline-block ; margin-left: 4em ;
text-indent: -.5em ; }
a.tocsubparagraph {display: inline-block ; margin-left: 5em ;
text-indent: -.5em ; }
a.tocfigure {margin-left: 0em}
a.tocsubfigure {margin-left: 2em}
a.toctable {margin-left: 0em}
a.tocsubtable {margin-left: 2em}
a.toctheorem {margin-left: 0em}
a.toclstlisting {margin-left: 0em}
body {
font-family: "DejaVu Serif", "Bitstream Vera Serif",
"Lucida Bright", Georgia, serif;
background: #FAF7F4 ;
color: black ;
margin:0em ;
padding:0em ;
font-size: 100% ;
line-height: 1.2 ;
}
p {margin: 1.5ex 0em 1.5ex 0em ;}
table p {margin: .5ex 0em .5ex 0em ;}
/* Holds a section number */
span.sectionnumber { margin-right: 0em }
/* Inserted in front of index lines */
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 {
font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console",
"Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono",
"Courier New", monospace;
font-size: 100% ;
}
pre { padding: 3pt ; }
span.strong, span.textbf, div.strong, div.textbf { font-weight: bold; }
span.textit, div.textit { font-style: italic; }
span.textmd, div.textmd { font-weight: normal; }
span.textup, div.textup {
font-style: normal;
font-variant: normal;
font-variant-numeric: normal ;
}
span.textsc, div.textsc {
font-variant: small-caps;
font-variant-numeric: oldstyle-nums ;
}
span.textulc, div.textulc {
font-variant: normal ;
font-variant-numeric: normal ;
}
span.textsl, div.textsl { font-style: oblique; }
span.textrm, div.textrm {
font-family: "DejaVu Serif", "Bitstream Vera Serif",
"Lucida Bright", Georgia, serif;
}
span.textsf, div.textsf {
font-family: "DejaVu Sans", "Bitstream Vera Sans",
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 {
text-decoration: underline ;
text-decoration-skip: auto ;
}
span.overline {
text-decoration: overline ;
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 }
/* for diagbox */
div.diagboxtitleN { border-bottom: 1px solid gray }
div.diagboxtitleS { border-top: 1px solid gray }
div.diagboxE {
padding-left: 2em ;
text-align: right ;
}
div.diagboxW {
padding-right: 2em ;
text-align: left ;
}
/* For realscripts */
.supsubscript {
display: inline-block;
text-align:left ;
}
.supsubscript sup,
.supsubscript sub {
position: relative;
display: block;
font-size: .7em;
line-height: 1;
}
.supsubscript sup {
top: .3em;
}
.supsubscript sub {
top: .3em;
}
div.attribution p {
text-align: right ;
font-size: 80%
}
span.poemtitle {
font-size: 120% ; font-weight: bold;
}
pre.tabbing {
font-family: "Linux Libertine Mono O", "Lucida Console",
"Droid Sans Mono", "DejaVu Mono", "Bitstream Vera Mono",
"Liberation Mono", "FreeMono", "Andale Mono",
"Nimbus Mono L", "Courier New", monospace;
}
blockquote {
display: block ;
margin-left: 2em ;
margin-right: 2em ;
}
/* quotchap is for the quotchap package */
div.quotchap {
display: block ;
font-style: oblique ;
overflow-x: auto ;
margin-left: 2em ;
margin-right: 2em ;
}
blockquote p, div.quotchap p {
line-height: 1.5;
text-align: left ;
font-size: .85em ;
}
/* qauthor is for the quotchap package */
div.qauthor {
display: block ;
text-align: right ;
margin-left: auto ;
margin-right: 2em ;
font-size: 80% ;
font-variant: small-caps;
}
div.qauthor p {
text-align: right ;
}
div.epigraph, div.dictum {
line-height: 1.2;
text-align: left ;
padding: 3ex 1em 0ex 1em ;
/* margin: 3ex auto 3ex auto ; */ /* Epigraph centered */
margin: 3ex 1em 3ex auto ; /* Epigraph to the right */
/* margin: 3ex 1em 3ex 1em ; */ /* Epigraph to the left */
font-size: .85em ;
max-width: 27em ;
}
div.epigraphsource, div.dictumauthor {
text-align:right ;
margin-left:auto ;
/* max-width: 50% ; */
border-top: 1px solid #A0A0A0 ;
padding-bottom: 3ex ;
line-height: 1.2;
}
div.epigraph p, div.dictum p { padding: .5ex ; margin: 0ex ;}
div.epigraphsource p, div.dictumauthor p { padding: .5ex 0ex 0ex 0ex ; margin: 0ex ;}
div.dictumauthor { font-style:italic }
/* copyrightbox package */
div.copyrightbox { margin: .5ex .5em }
div.copyrightbox p {margin: 0px .5em ; padding: 0px}
div.copyrightboxnote {text-align: left ; font-size: 60%}
/* lettrine package: */
span.lettrine { font-size: 4ex ; float: left ; }
span.lettrinetext { font-variant: small-caps ; }
/* ulem, soul, umoline packages: */
span.uline {
text-decoration: underline ;
text-decoration-skip: auto ;
}
span.uuline {
text-decoration: underline ;
text-decoration-skip: auto ;
text-decoration-style: double ;
}
span.uwave {
text-decoration: underline ;
text-decoration-skip: auto ;
text-decoration-style: wavy ;
}
span.sout {
text-decoration: line-through ;
}
span.oline {
text-decoration: overline ;
text-decoration-skip: auto ;
}
span.xout {
text-decoration: line-through ;
}
span.dashuline {
text-decoration: underline ;
text-decoration-skip: auto ;
text-decoration-style: dashed ;
}
span.dotuline {
text-decoration: underline ;
text-decoration-skip: auto ;
text-decoration-style: dotted ;
}
span.letterspacing { letter-spacing: .2ex ; }
span.capsspacing {
font-variant: small-caps ;
letter-spacing: .1ex ;
}
span.highlight { background: #F8E800 ; }
html body {
margin: 0 ;
line-height: 1.2;
}
body div {
margin: 0ex;
}
div.book, h1, h2, h3, h4, h5, h6, span.paragraph, span.subparagraph
{
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
"Times New Roman", serif;
font-style: normal ;
font-weight: bold ;
text-align: left ;
}
h1 { /* title of the entire website, used on each page */
text-align: center ;
font-size: 2.5em ;
padding: .4ex 0em 0ex 0em ;
}
div.book {
text-align: center ;
font-size: 2.325em ;
padding: .4ex 0em 0ex 0em ;
}
h2 { font-size: 2.25em }
h3 { font-size: 2em }
h4 { font-size: 1.75em }
h5 { font-size: 1.5em }
h6 { font-size: 1.25em }
span.paragraph {font-size: 1em ; font-variant: normal ;
margin-right: 1em ; }
span.subparagraph {font-size: 1em ; font-variant: normal ;
margin-right: 1em ; }
div.minisec {
font-family: "DejaVu Sans", "Bitstream Vera Sans",
Geneva, Verdana, sans-serif ;
font-style: normal ;
font-weight: bold ;
text-align: left ;
}
h1 {
margin: 0ex 0em 0ex 0em ;
line-height: 1.3;
text-align: center ;
}
h2 {
margin: 1ex 0em 1ex 0em ;
line-height: 1.3;
text-align: center ;
}
h3 {
margin: 3ex 0em 1ex 0em ;
line-height: 1.3;
}
h4 {
margin: 3ex 0em 1ex 0em ;
line-height: 1.3;
}
h5 {
margin: 3ex 0em 1ex 0em ;
line-height: 1.3;
}
h6 {
margin: 3ex 0em 1ex 0em ;
line-height: 1.3;
}
div.titlepage {
text-align: center ;
}
.footnotes {
text-align: left ;
font-size: .85em ;
margin: 3ex 2em 0ex 2em ;
border-top: 1px solid silver ;
}
.marginpar, .marginparblock {
max-width: 50%;
float: right ;
clear: both ;
text-align: left ;
margin: 1ex 0.5em 1ex 1em ;
padding: 1ex 0.5em 1ex 0.5em ;
font-size: 85% ;
border-top: 1px solid silver ;
border-bottom: 1px solid silver ;
overflow-x: auto ;
}
.marginpar br { margin-bottom: 2ex ; }
div.marginblock, div.marginparblock {
max-width:50%;
min-width: 10em; /* room for caption */
float:right;
text-align:left;
margin: 1ex 0.5em 1ex 1em ;
padding: 1ex 0.5em 1ex 0.5em ;
overflow-x: auto;
}
div.marginblock div.minipage,
div.marginparblock div.minipage {
display: inline-block ;
margin: 0pt auto 0pt auto ;
}
div.marginblock div.minipage p ,
div.marginparblock div.minipage p
{ font-size: 85%}
div.marginblock br ,
div.marginparblock br
{ margin-bottom: 2ex ; }
div.bodycontainer {
float: left ;
width: 80% ;
}
div.bodywithoutsidetoc div.bodycontainer {
float: none ;
width: 100% ;
}
section.textbody div.footnotes{
margin: 3ex 2em .5ex 2em ;
border-bottom: 2px solid silver ;
}
.footnoteheader {
border-top: 2px solid silver ;
margin-top: 3ex ;
padding-top: 1ex ;
font-weight: bold ;
}
.mpfootnotes {
text-align: left ;
font-size: .85em ;
margin-left: 1em ;
border-top: 1px solid silver ;
}
/* Remove footnote top border in the title page. */
div.titlepage div.mpfootnotes {
border-top: none ;
}
ul, ol {
margin: 1ex 1em 1ex 0em;
line-height: 1.2;
}
body dir, body menu {
margin: 3ex 1em 3ex 0em;
line-height: 1.2;
}
li { margin: 0ex 0em 1ex 0em; }
html {
margin: 0;
padding: 0;
}
.programlisting {
font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console",
"Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono",
"Courier New", monospace;
margin: 1ex 0ex 1ex 0ex ;
padding: .5ex 0pt .5ex 0pt ;
overflow-x: auto;
}
section.textbody>pre.programlisting {
border-top: 1px solid silver ;
border-bottom: 1px solid silver ;
}
div.displaymath {
text-align: center ;
}
div.displaymathnumbered {
text-align: right ;
margin-left: 5% ;
margin-right: 5% ;
min-width: 2.5in ;
}
@media all and (min-width: 400px) {
div.displaymathnumbered {
margin-left: 10% ;
margin-right: 10% ;
}
}
@media all and (min-width: 800px) {
div.displaymathnumbered {
margin-right: 20% ;
}
}
@media all and (min-width: 1200px) {
div.displaymathnumbered {
margin-right: 30% ;
}
}
.inlineprogramlisting {
font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console",
"Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono",
"Courier New", monospace;
overflow-x: auto;
}
span.listinglabel {
display: inline-block ;
font-size: 70% ;
width: 4em ;
text-align: right ;
margin-right: 2em ;
}
div.abstract {
margin: 2em 5% 2em 5% ;
padding: 1ex 1em 1ex 1em ;
/* font-weight: bold ; */
font-size: 90% ;
text-align: left ;
}
div.abstract dl {line-height:1.5;}
div.abstract dt {color:#304070;}
div.abstracttitle{
font-family: "URW Classico", Optima, "Linux Biolinum O",
"Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L",
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
font-weight:bold;
font-size:1.25em;
text-align: center ;
}
span.abstractrunintitle{
font-family: "URW Classico", Optima, "Linux Biolinum O",
"Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L",
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
font-weight:bold;
}
.verbatim {
overflow-x: auto ;
}
.alltt {
overflow-x: auto ;
}
.bverbatim {
margin: 1ex 0pt 1ex 0pt ;
padding: .5ex 0pt .5ex 0pt ;
overflow-x: auto ;
}
.lverbatim {
margin: 1ex 0pt 1ex 0pt ;
padding: .5ex 0pt .5ex 0pt ;
overflow-x: auto ;
}
.fancyvrb {
font-size:.85em ;
margin: 3ex 0pt 3ex 0pt
}
.fancyvrblabel {
font-size: .85em ;
text-align: center ;
font-weight: bold ;
margin-top: 1ex ;
margin-bottom: 1ex ;
}
.verse {
font-family: "Linux Libertine Mono O", "Lucida Console",
"Droid Sans Mono", "DejaVu Mono", "Bitstream Vera Mono",
"Liberation Mono", "FreeMono", "Andale Mono",
"Nimbus Mono L", "Courier New", monospace;
margin-left: 1em ;
}
div.singlespace { line-height: 1.2 ; }
div.onehalfspace { line-height: 1.5 ; }
div.doublespace { line-height: 2 ; }
/* Word processor format output: */
div.wpfigure { border: 1px solid red ; margin: .5ex ; padding: .5ex ; }
div.wptable { border: 1px solid blue ; margin: .5ex ; padding: .5ex ; }
div.wpminipage { border: 1px solid green ; margin: .5ex ; padding: .5ex ;}
/* Minipage environments, vertically aligned to top, center, bottom: */
.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;
flex-direction: column ;
overflow: auto;
}
.inlineminipage {
display: inline-block ;
text-align: left
}
/* Paragraphs in the flexbox did not collapse their margins. */
/* Have not yet researched this. */
.minipage p {margin: .75ex 0em .75ex 0em ;}
.fboxBlock .minipage, .colorbox .minipage, .colorboxBlock .minipage,
.fcolorbox .minipage, .fcolorboxBlock .minipage
{border: none ; background: none;}
.fbox, .fboxBlock { border: 1px solid black ; }
.fbox, .fboxBlock, .fcolorbox, .fcolorboxBlock, .colorbox, .colorboxBlock,
.fminipage, .fcolorminipage
{display: inline-block}
.shadowbox, .shabox {
border: 1px solid black;
box-shadow: 3px 3px 3px #808080 ;
border-radius: 0px ;
padding: .4ex .3em .4ex .3em ;
margin: 0pt .3ex 0pt .3ex ;
display: inline-block ;
}
.doublebox {
border: 3px double black;
border-radius: 0px ;
padding: .4ex .3em .4ex .3em ;
margin: 0pt .3ex 0pt .3ex ;
display: inline-block ;
}
.ovalbox, .Ovalbox {
border: 1px solid black;
border-radius: 1ex ;
padding: .4ex .3em .4ex .3em ;
margin: 0pt .3ex 0pt .3ex ;
display: inline-block ;
}
.Ovalbox { border-width: 2px ; }
.framebox {
border: 1px solid black;
border-radius: 0px ;
padding: .3ex .2em 0ex .2em ;
margin: 0pt .1ex 0pt .1ex ;
display: inline-block ;
}
/* mdframed, tcolorbox packages */
.mdframed, .tcolorbox {
padding: 0ex ;
margin: 2ex 0em 2ex 0em ;
border: 1px solid black ;
}
.tcolorbox {
border-radius: 10pt ;
margin: 2ex 1em 2ex 1em ;
}
.mdframed p, .tcolorbox p { padding: 0ex .5em 0ex .5em ; }
.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 ;
}
.mdframedsubsubtitle {
display: block ;
}
.mdtheorem {
padding: 0ex .5em 0ex .5em ;
margin: 3ex 5% 3ex 5% ;
}
/* framed package */
.framed, pre.boxedverbatim, fcolorbox {
margin: 3ex 0em 3ex 0em ;
border: 1px solid black;
border-radius: 0px ;
padding: .3ex 1em 0ex 1em ;
display: block ;
}
.shaded {
margin: 3ex 0em 3ex 0em ;
padding: .3ex 1em .3ex 1em ;
display: block ;
}
.snugframed {
margin: 3ex 0em 3ex 0em ;
border: 1px solid black;
border-radius: 0px ;
display: block ;
}
.framedleftbar {
margin: 3ex 0em 3ex 0em ;
border-left: 3pt solid black;
border-radius: 0px ;
padding: .3ex .2em .3ex 1em ;
display: block ;
}
.framedtitle {
margin: 0em ;
padding: 0em ;
font-size: 130%
}
.framedtitle p { padding: .3em }
/* For the niceframe package: */
div.niceframe, div.curlyframe, div.artdecoframe, div.generalframe {
padding: 1ex ;
margin: 2ex auto ;
border-radius: 2ex ;
}
div.niceframe {
border: 6px groove black ;
}
div.curlyframe {
border-left: 3px dotted black ;
border-right: 3px dotted black ;
border-radius: 6ex ;
}
div.artdecoframe {
border-left: 10px double black ;
border-right: 10px double black ;
border-radius: 6ex ;
}
div.generalframe {
border: 6px groove black ;
}
dl {
margin: 1ex 2em 1ex 0em;
line-height: 1.3;
}
dl dt {
display: block ;
float:left ;
font-weight: bold;
padding-right: 1em ;
}
dl dd { display: block ; }
dl dd:after { content: "" ; display: block ; clear: both }
dl dd p { margin-top: 0em; }
dd ul, dd ol, dd dl { clear: both ; padding-top: 1ex }
nav {
font-family: "URW Classico", Optima, "Linux Biolinum O",
"DejaVu Sans", "Bitstream Vera Sans",
Geneva, Verdana, sans-serif ;
margin-bottom: 4ex ;
}
nav p {
line-height: 1.2 ;
margin-top:.5ex ;
margin-bottom:.5ex;
font-size: .9em ;
}
img, img.hyperimage, img.borderimage {
max-width: 600px;
border: 1px solid silver;
box-shadow: 3px 3px 3px #808080 ;
padding: .5% ;
margin: .5% ;
background: none ;
}
img.inlineimage{
padding: 0px ;
box-shadow: none ;
border: none ;
background: none ;
margin: 0px ;
display: inline-block ;
border-radius: 0px ;
}
img.logoimage{
max-width: 300px ;
box-shadow: 3px 3px 3px #808080 ;
border: 1px solid black ;
background:none ;
padding:0 ;
margin:.5ex ;
border-radius: 10px ;
}
.section {
/*
To have each section float relative to each other:
*/
/*
display: block ;
float: left ;
position: relative ;
background: white ;
border: 1px solid silver ;
padding: .5em ;
*/
margin: 0ex .5em 0ex .5em ;
padding: 0 ;
}
figure {
margin: 5ex auto 5ex auto ;
padding: 1ex 1em 1ex 1em ;
overflow-x: auto ;
}
/* To automatically center images in figures: */
/*
figure img.inlineimage {
margin: 0ex auto 0ex auto ;
display: block ;
}
*/
/* To automatically center minipages in figures: */
/*
figure div.minipage, figure div.minipage div.minipage {
margin: 1ex auto 1ex auto ;
display: block ;
}
*/
figure figure { margin: 0pt }
figure div.minipage p { font-size: 85% ; }
figure.subfigure, figure.subtable {
display: inline-block ; margin: 3ex 1em 3ex 1em ;
}
div.figurecaption .minipage { margin:0 ; padding: 0 }
div.minipage figure { border: none ; box-shadow: none ; }
div.minipage figure.table { margin: 0ex }
div.minipage div.footnotes { margin: 1ex 2em 0ex 2em }
div.floatrow { text-align: center; }
div.floatrow figure { display: inline-block ; margin: 1ex 2% ; }
div.floatfoot { font-size: .85em ;
border-top: 1px solid silver ; line-height: 1.2 ; }
div.figurecaption , .lstlistingtitle {
font-size: .85em ;
text-align: center ;
font-weight: bold ;
margin-top: 1ex ;
margin-bottom: 1ex ;
}
figure.subfigure div.figurecaption, figure.subtable div.figurecaption {
border-bottom: none ; background: none ;
}
div.nonfloatcaption {
margin: 1ex auto 1ex auto ;
font-size: .85em ;
text-align: center ;
font-weight: bold ;
}
/* For a \RawCaption inside a minipage inside a figure's floatrow: */
figure div.floatrow div.minipage div.figurecaption {
border: none ;
background: none ;
}
/* For packages such as float, rotfloat, and algorithm2e: */
figure.boxed, figure.boxruled {
border: 1px solid black ;
}
figure.ruled {
border-top: 1px solid black ;
border-bottom: 1px solid black ;
border-left: 0px ;
border-right: 0px ;
border-radius: 0px ;
background: none ;
box-shadow: none ;
}
figure.ruled div.figurecaption, figure.boxruled div.figurecaption {
border-top: 1px solid silver ;
border-bottom: 1px solid silver ;
}
table {
margin: 1ex auto 1ex auto ;
border-collapse: separate ;
border-spacing: 0px ;
line-height: 1.3 ;
}
table > tbody > tr.hline > td {border-top: 1px solid #808080 ; margin-top: 0ex ;
margin-bottom: 0ex ; } /* for \hline */
tr.tbrule td {border-top: 1px solid black ; margin-top: 0ex ;
margin-bottom: 0ex ; } /* for \toprule, \bottomrule */
td {padding: .5ex .5em .5ex .5em ;}
table td.tdl { text-align: left ; vertical-align: middle ; }
table td.tdc { text-align: center ; vertical-align: middle ; }
table td.tdat { text-align: center ; vertical-align: middle ; padding: 0px ; margin: 0px ; }
table td.tdbang { text-align: center ; vertical-align: middle ; }
table td.tdr { text-align: right ; vertical-align: middle ; }
table td.tdp { text-align: left ; vertical-align: bottom ; }
table td.tdm { text-align: left ; vertical-align: middle ; }
table td.tdb { text-align: left ; vertical-align: top ; }
table td.tdP { text-align: center ; vertical-align: bottom ; }
table td.tdM { text-align: center ; vertical-align: middle ; }
table td.tdB { text-align: center ; vertical-align: top ; }
table td.tvertbarl { border-left: 1px solid black }
table td.tvertbarldouble { border-left: 4px double black }
table td.tvertbarr { border-right: 1px solid black }
table td.tvertbarrdouble { border-right: 4px double black }
table td.tvertbarldash { border-left: 1px dashed black }
table td.tvertbarldoubledash { border-left: 2px dashed black }
table td.tvertbarrdash { border-right: 1px dashed black }
table td.tvertbarrdoubledash { border-right: 2px dashed black }
/* for cmidrules: */
table td.tdrule {
border-top: 1px solid #A0A0A0 ;
}
table td.tdrulel {
border-top-left-radius:.5em ;
border-top: 1px solid #A0A0A0 ;
}
table td.tdruler {
border-top-right-radius:.5em ;
border-top: 1px solid #A0A0A0 ;
}
table td.tdrulelr {
border-top-left-radius:.5em ;
border-top-right-radius:.5em ;
border-top: 1px solid #A0A0A0 ;
}
/* Margins of paragraphs inside table cells: */
td.tdp p , td.tdprule p , td.tdP p , td.tdPrule p { padding-top: 1ex ;
padding-bottom: 1ex ; margin: 0ex ; }
td.tdm p , td.tmbrule p , td.tdM p , td.tdMrule p { padding-top: 1ex ;
padding-bottom: 1ex ; margin: 0ex ; }
td.tdb p , td.tdbrule p , td.tdB p , td.tdBrule p { padding-top: 1ex ;
padding-bottom: 1ex ; margin: 0ex ; }
td.tdp , td.tdprule , td.tdP , td.tdPrule
{ padding: 0ex .5em 0ex .5em ; }
td.tdm , td.tdmrule , td.tdM , td.tdMrule
{ padding: 0ex .5em 0ex .5em ; }
td.tdb , td.tdbrule , td.tdB , td.tdBrule
{ padding: 0ex .5em 0ex .5em ; }
/* table notes: */
.tnotes {
margin: 0ex 5% 1ex 5% ;
padding: 0.5ex 1em 0.5ex 1em;
font-size:.80em;
text-align: left ;
}
.minipage .tnotes {
margin: 0pt ;
padding: 0pt ;
}
.tnotes dl dt p {margin-bottom:0px;}
.tnoteitemheader {margin-right: 1em;}
/* for colortbl and cell color */
div.cellcolor {
width: 100% ;
padding: .5ex .5em .5ex .5em ;
margin: -.5ex -.5em -.5ex -.5em ;
}
/* for lyluatex */
span.lyluatex {
display: inline-block ;
}
div.lyluatex p span.lateximagesource img {
display: block ;
margin-top: 3ex ;
margin-bottom: 3ex ;
}
/* for bigdelim */
.ldelim, .rdelim { font-size: 200% }
/* center, flushleft, flushright environments */
div.center{text-align:center;}
div.center table {margin-left:auto;margin-right:auto;}
div.flushleft{text-align:left;}
div.flushleft table {margin-left:0em ; margin-right:auto;}
div.flushright{text-align:right;}
div.flushright table {margin-left:auto ; margin-right: 0em ;}
/* Fancybox */
div.Btrivlist table tr td {
padding: .2ex 0em ;
}
/* program listing callouts: */
span.callout {
font-family: "DejaVu Sans", "Bitstream Vera Sans",
Geneva, Verdana, sans-serif ;
border-radius: .5em;
background-color:black;
color:white;
padding:0px .25em 0px .25em;
margin: 0 ;
font-weight: bold;
font-size:.72em ;
}
div.programlisting pre.verbatim span.callout{
font-size: .85em ;
}
span.verbatim {
font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console",
"Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono",
"Courier New", monospace;
}
div.titlehead
{
text-align: left ;
font-style: normal ;
font-weight: normal ;
font-style: normal ;
font-size: .8em ;
margin: 1ex 0em 1ex 0em ;
}
div.subject
{
text-align: center ;
font-style: normal ;
font-weight: bold ;
font-style: normal ;
font-size: .8em ;
margin: 1ex 0em 1ex 0em ;
}
div.published
{
text-align: center ;
font-variant: normal ;
font-style: italic ;
font-size: 1em ;
margin: 1ex 0em 1ex 0em ;
}
div.subtitle
{
text-align: center ;
font-variant: normal ;
font-style: italic ;
font-size: 1.25em ;
margin: 1ex 0em 1ex 0em ;
}
div.subtitle p { margin: 1ex ; }
div.author
{
font-variant: normal ;
font-style: normal ;
font-size: 1em ;
margin: 1ex 0em 1ex 0em ;
}
div.oneauthor {
display: inline-block ;
margin: 0ex 1em 0ex 1em ;
}
/*
div.author table {
margin: 1ex auto 0ex auto ;
background: none ;
}
div.author table tbody tr td { padding: .25ex ; }
*/
span.affiliation {font-size: .85em ; font-variant: small-caps; }
div.titledate {
text-align: center ;
font-size: .85em ;
font-style: italic;
margin: 1ex 0em 1ex 0em ;
}
nav.topnavigation{
text-align: left ;
padding: 0.5ex 1em 0.5ex 1em ;
/* margin: 2ex 0em 3ex 0em ; */
margin: 0 ;
border-bottom: 1px solid silver ;
border-top: 1px solid silver ;
clear:both ;
}
nav.botnavigation{
text-align: left ;
padding: 0.5ex 1em 0.5ex 1em ;
/* margin: 3ex 0em 2ex 0em ; */
margin: 0 ;
border-top: 1px solid silver ;
border-bottom: 1px solid silver ;
clear:both ;
}
header {
line-height: 1.2 ;
font-size: 1em ;
border-bottom: 1px solid silver ;
margin: 0px ;
padding: 2ex 1em 2ex 1em ;
text-align:left ;
}
footer {
font-size: .85em ;
line-height: 1.2 ;
margin-top: 1ex ;
border-top: 1px solid silver ;
padding: 2ex 1em 2ex 1em ;
clear:both ;
text-align:left ;
}
/* for \LinkHome, \LinkPrevious, and \LinkNext: */
a.linkhome { font-weight:bold ; font-size: 1em ;}
div.lateximagesource { padding: 0px ; margin: 0px ; display: none; }
img.lateximage{
padding: 0pt ;
margin: 0pt ;
box-shadow: none ;
border: none ;
background: none ;
max-width: 100% ;
border-radius: 0ex ;
border: none ;
}
/* The -1px right margin compensates for the 1px right border. */
/* Without this -1px margin, the body container appears below instead */
/* of floating to the side. */
div.sidetoccontainer {
font-family: "DejaVu Serif", "Bitstream Vera Serif",
"Lucida Bright", Georgia, serif;
float: left ;
width: 20%;
margin: 0pt -1px 3ex 0pt ;
border-right: 1px solid silver;
border-bottom: 1px solid silver;
background: #FAF7F4 ;
font-size:.9em ;
border-radius: 0px 0px 20px 0px ;
}
div.sidetoccontents {
overflow-y: auto ;
width: 100% ;
text-align: left ;
}
nav.sidetoc p {line-height:1.2 ; margin: 1ex .5em 1ex .5em ;
text-indent: 0 ; }
nav.sidetoc p a {color:black ; font-size: .7em ;}
div.sidetoctitle {font-size: 1.2em; font-weight:bold; text-align:center;
border-bottom: 1px solid silver ; }
nav.sidetoc a:hover {text-decoration: underline ; }
section.textbody { margin: 0ex 1em 0ex 1em ;}
div.multicolsheading { -webkit-column-span: all;
-moz-column-span: all; column-span: all; }
div.multicols { -webkit-columns: 3 380px ;
-moz-columns: 3 380px ; columns: 3 380px ; }
div.multicols p {margin-top: 0ex}
/* Used for xfrac and nicefrac: */
span.numerator {
font-size: 60% ;
vertical-align: .4em ;
}
span.denominator {
font-size: 60%
}
/* Used for algorithm2e: */
div.alg2evline{
margin-left: 1em ;
padding-left: 1em ;
border-left: 1px solid black ;
border-radius: 0px 0px 0px 1ex ;
}
div.alg2evsline{
margin-left: 1em ;
padding-left: 1em ;
border-left: 1px solid black ;
}
div.alg2enoline{
margin-left: 1em ;
padding-left: 1em ;
}
span.alg2elinenumber{
margin-right: .5em ;
font-size: 50% ;
color: red ;
}
/* Used for algorithmicx: */
span.floatright { float: right ; }
/* keyfloat and tocdata: */
.floatnotes {
margin: 0ex 5% 0ex 5% ;
padding: 0ex 1em 0ex 1em ;
font-size:.80em ;
text-align: left ;
}
.authorartist{
display:block ;
font-size:.70em ;
font-style: italic;
}
nav .authorartist{ display:inline; }
/* Native LaTeX theorems: */
.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,
span.theoremheaderplain,
span.theoremheaderdefinition,
span.theoremheaderbreak,
span.theoremheadermarginbreak,
span.theoremheaderchangebreak,
span.theoremheaderchange,
span.theoremheadermargin
{
font-style:normal ; font-weight: bold ; margin-right: 1em ;
}
span.amsthmnameplain,
span.amsthmnamedefinition,
span.amsthmnumberplain,
span.amsthmnumberdefinition
{
font-style:normal ; font-weight: bold ;
}
span.amsthmnameremark,
span.amsthmnumberremark
{font-style:italic ; font-weight: normal ; }
span.amsthmnoteplain,
span.amsthmnotedefinition
{font-style:normal ;}
span.theoremheaderremark,
span.theoremheaderproof,
span.amsthmproofname
{font-style:italic ; font-weight: normal ; margin-right: 1em ; }
span.theoremheadersc
{
font-style:normal ;
font-variant: small-caps ;
font-weight: normal ;
margin-right: 1em ;
}
.theoremendmark {float:right}
div.amsthmbodyplain, div.theorembodyplain, div.theorembodynonumberplain,
div.theorembodybreak, div.theorembodynonumberbreak,
div.theorembodymarginbreak,
div.theorembodychangebreak,
div.theorembodychange,
div.theorembodymargin
{
font-style:italic;
margin-top: 3ex ; margin-bottom: 3ex ;
}
div.theorembodydefinition, div.theorembodyremark, div.theorembodyproof,
div.theorembodyplainupright, nonumberplainuprightsc,
div.amsthmbodydefinition, div.amsthmbodyremark,
div.amsthmproof
{
font-style: normal ;
margin-top: 3ex ; margin-bottom: 3ex ;
}
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 ;
margin: 2ex 2em 2ex 2em ;
}
div.backnaur p {
margin: .25ex 0ex .25ex 0ex ;
}
div.backnaurprod {
display: inline-block ;
min-width: 8em ;
text-align:right ;
}
div.backnaurdesc {
display: inline-block ;
}
/* For the notes package: */
div.notesimportantnote, div.noteswarningnote, div.notesinformationnote {
clear: both ;
margin: 2ex 2em 2ex 2em ;
border: 1px solid silver ;
}
div.notesicon {
float:left ;
display: inline-block ;
background: gold ;
padding: 0ex 1em 0ex 1em ;
margin-right: 1em ;
font-weight: bold ;
}
div.notescontents { font-style: italic }
/* nolbreaks package: */
span.nolbreaks { white-space: nowrap ; }
/*
For CSS LaTeX and related logos:
Based on spacing demonstrated by the metafont package.
*/
.latexlogofont {
font-family: "Linux Libertine O", "Nimbus Roman No 9 L",
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
font-variant: normal ;
}
.latexlogo {
font-family: "Linux Libertine O", "Nimbus Roman No 9 L",
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
font-size: 1.1em;
}
.latexlogosup {
text-transform: uppercase;
letter-spacing: .03em ;
font-size: 0.7em;
vertical-align: 0.25em;
margin-left: -0.4em;
margin-right: -0.15em;
}
.latexlogosub {
text-transform: uppercase;
vertical-align: -0.27ex;
margin-left: -0.08em;
margin-right: -0.07em;
font-size: 1em;
}
.latexlogotwoe {
text-transform: none ;
font-variant-numeric: oldstyle-nums ;
}
.latexlogotwoesub {
font-style:italic ;
vertical-align: -0.27ex;
margin-left: -0.11em;
margin-right: -0.1em;
font-size: 1em;
}
.xelatexlogo {
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;
margin-left: -0.0667em;
margin-right: -.05em;
font-size: 1em;
letter-spacing: .03em ;
}
.amslogo {
font-family: "TeXGyreChorus","URW Chancery L",
"Apple Chancery","ITC Zapf Chancery","Monotype Corsiva",
"Linux Libertine O", "Nimbus Roman No 9 L", "FreeSerif",
"Hoefler Text", Times, "Times New Roman", serif ;
font-style: italic ;
}
.lyxlogo {
font-family: "URW Classico", Optima, "Linux Biolinum O",
"DejaVu Sans", "Bitstream Vera Sans", Geneva,
Verdana, sans-serif ;
}
/* Only display top and bottom navigation if a small screen: */
/* Hide the sidetoc if a small screen: */
nav.topnavigation { display:none; }
nav.botnavigation { display:none; }
/* Only display the sidetoc's webpage title if a small screen */
span.sidetocthetitle { display: none }
@media screen and (max-width: 50em) {
div.sidetoccontainer {
float: none ;
width: 100% ;
padding: 0 ;
border-radius: 0 ;
border-bottom: 1px solid black ;
border-top: 1px solid black ;
box-shadow: none ;
}
span.sidetocthetitle { display: inline }
nav.topnavigation { display:block }
nav.botnavigation { display:block }
div.bodycontainer { width: 100% }
.marginpar {
max-width: 100%;
float: none;
display:block ;
margin: 1ex 1em 1ex 1em ;
}
}
@media print {
body {
font-family: "Linux Libertine O",
"DejaVu Serif", "Bitstream Vera Serif",
"Liberation Serif", "Nimbus Roman No 9 L",
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
}
div.sidetoccontainer { display:none; }
nav.topnavigation { display: none; }
nav.botnavigation { display: none; }
div.bodycontainer { width: 100% }
}
@media handheld {
div.sidetoccontainer { display:none; }
nav.topnavigation { display:block }
nav.botnavigation { display:block }
div.bodycontainer { width: 100% }
}
@media projection {
div.sidetoccontainer { display:none; }
nav.topnavigation { display:block }
nav.botnavigation { display:block }
div.bodycontainer { width: 100% }
}
\end{filecontents*}
\end{LWRwriteconf}
\begin{LWRwriteconf}
\begin{filecontents*}[overwrite]{lwarp_sagebrush.css}
@import url("lwarp.css") ;
A:link {color:#105030 ; text-decoration: none ; }
A:visited {color:#705030 ; text-shadow:1px 1px 2px #a0a0a0;}
A:hover {color:#006000 ; text-decoration: underline ; text-shadow:0px 0px 2px #a0a0a0;}
A:active {color:#00C000 ; text-shadow:1px 1px 2px #a0a0a0;}
div.book, h1, h2, h3, h4, h5, h6, span.paragraph, span.subparagraph
{
font-family: "URW Classico", Optima, "Linux Biolinum O",
"Linux Libertine O", "Liberation Serif",
"Nimbus Roman No 9 L", "FreeSerif",
"Hoefler Text", Times, "Times New Roman", serif;
font-variant: small-caps ;
font-weight: normal ;
color: #304070 ;
text-shadow: 2px 2px 3px #808080;
}
h1 { /* title of the entire website, used on each page */
font-variant: small-caps ;
color: #304070 ;
text-shadow: 2px 2px 3px #808080;
background-color: #F7F7F0 ;
background-image: linear-gradient(to bottom, #F7F7F0, #C0C0C4);
}
h1 {
border-bottom: 1px solid #304070;
/* border-top: 2px solid #304070; */
}
h2 {
border-bottom: 1px solid #304070;
/* border-top: 2px solid #304070; */
background-color: #F7F7F0 ;
background-image: linear-gradient(to bottom, #F7F7F0, #DAD0C0);
}
div.abstract {
background: #f5f5eb ;
background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8);
border: 1px solid silver;
border-radius: 1em ;
}
div.abstract dl {line-height:1.5;}
div.abstract dt {color:#304070;}
div.abstracttitle{
font-family: "URW Classico", Optima, "Linux Biolinum O",
"Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L",
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
font-weight:bold;
font-variant: small-caps ;
font-size:1.5em;
border-bottom: 1px solid silver ;
color: #304070 ;
text-align: center ;
text-shadow: 1px 1px 2px #808080;
}
span.abstractrunintitle{
font-family: "URW Classico", Optima, "Linux Biolinum O",
"Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L",
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
font-weight:bold;
}
div.epigraph, div.dictum {
background: #f5f5eb ;
background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8);
border: 1px solid silver ;
border-radius: 1ex ;
box-shadow: 3px 3px 3px #808080 ;
}
.example {
background-color: #f5f5eb ;
background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8);
}
div.exampletitle{
font-family: "URW Classico", Optima, "Linux Biolinum O",
"Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L",
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
font-weight:bold;
font-variant: small-caps ;
border-bottom: 1px solid silver ;
color: #304070 ;
text-align: center ;
text-shadow: 1px 1px 2px #808080;
}
.sidebar {
background-color: #f5f5eb ;
background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8);
}
div.sidebartitle{
font-family: "URW Classico", Optima, "Linux Biolinum O",
"Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L",
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
font-weight:bold;
font-variant: small-caps ;
border-bottom: 1px solid silver ;
color: #304070 ;
text-align: center ;
text-shadow: 1px 1px 2px #808080;
}
.fancyvrblabel {
font-family: "URW Classico", Optima, "Linux Biolinum O",
"Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L",
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
font-weight:bold;
font-variant: small-caps ;
font-size: 1.5em ;
color: #304070 ;
text-align: center ;
text-shadow: 1px 1px 2px #808080;
}
div.minipage {
background-color: #eeeee7 ;
border: 1px solid silver ;
border-radius: 1ex ;
}
table div.minipage { background: none ; border: none ; }
div.framebox div.minipage {border:none ; background:none}
section.textbody > div.minipage {
box-shadow: 3px 3px 3px #808080 ;
}
div.fboxBlock div.minipage { box-shadow: none ; }
.framed .minipage , .framedleftbar .minipage {
border: none ;
background: none ;
padding: 0ex ;
margin: 0ex ;
}
figure.figure .minipage, div.figurecaption .minipage { border: none; }
div.marginblock div.minipage ,
div.marginparblock div.minipage
{ border: none; }
figure , div.marginblock {
background-color: #eeeee7 ;
border: 1px solid silver ;
border-radius: 1ex ;
box-shadow: 3px 3px 3px #808080 ;
}
figure figure {
border: 1px solid silver ;
margin: 0em ;
box-shadow: none ;
}
/*
div.figurecaption {
border-top: 1px solid silver ;
border-bottom: 1px solid silver ;
background-color: #e8e8e8 ;
}
*/
div.table {
box-shadow: 3px 3px 3px #808080 ;
}
/*
.tnotes {
background: #e8e8e8;
border: 1px solid silver;
}
*/
nav.topnavigation{
background-color: #b0b8b0 ;
background-image: linear-gradient(to bottom,#e0e0e0,#b0b8b0) ;
}
nav.botnavigation{
background-color: #b0b8b0 ;
background-image: linear-gradient(to top,#e0e0e0,#b0b8b0) ;
}
header{
background-color: #F7F7F0 ;
background-image: linear-gradient(to top, #F7F7F0, #b0b8b0);
}
footer{
background-color: #F7F7F0 ;
background-image: linear-gradient(to bottom, #F7F7F0, #b0b8b0);
}
div.sidetoccontainer {
background-color: #F7F7F0 ;
background-image: linear-gradient(to bottom, #F7F7F0, #C0C0C0);
box-shadow: 3px 3px 3px #808080 ;
}
div.sidetoctitle {color: #304070 ; }
nav.sidetoc a:hover {
color:#006000 ;
text-decoration: none ;
text-shadow:0px 0px 2px #a0a0a0;
}
@media screen and (max-width: 45em) {
div.sidetoccontainer { border-radius: 0 ; }
}
\end{filecontents*}
\end{LWRwriteconf}
\begin{LWRwriteconf}
\begin{filecontents*}[overwrite]{lwarp_formal.css}
@import url("lwarp.css") ;
A:link {color:#802020 ; text-decoration:none; }
A:visited {color:#802020 ; text-shadow:none ;}
A:hover {color:#400000 ; text-shadow:none ;}
A:active {color:#C00000 ; text-shadow:none ;}
body {
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
"Times New Roman", serif;
background: #fffcf5;
}
span.textrm {
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
"Times New Roman", serif;
}
span.textsf {
font-family: "DejaVu Sans", "Bitstream Vera Sans",
Geneva, Verdana, sans-serif ;
}
div.book, h1, h2, h3, h4, h5, h6, span.paragraph, span.subparagraph
{
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
"Times New Roman", serif;
color: #800000 ;
text-shadow: none ;
}
h1, h2 {
background-color: #fffcf5 ;
background-image: none ;
border-bottom: 1px solid #808080;
/* border-top: 2px solid #808080; */
}
div.abstracttitle {
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
"Times New Roman", serif;
color: black ;
text-shadow: none ;
}
span.abstractrunintitle {
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
"Times New Roman", serif;
color: black ;
text-shadow: none ;
}
div.abstract { font-size: 100% }
.sidebar {
background: #fffcf5;
background-image: none ;
margin: 2em 5% 2em 5%;
padding: 0.5em 1em;
border: none ;
border-top : 1px solid silver;
border-bottom : 1px solid silver;
font-size: 90% ;
}
div.sidebartitle{
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
"Times New Roman", serif;
color: #800000 ;
text-shadow: none ;
border: none ;
}
.example {
background: #fffcf5;
background-image: none ;
margin: 2em 5% 2em 5%;
padding: 0.5em 1em;
border: none ;
border-top : 1px solid silver;
border-bottom : 1px solid silver;
}
div.exampletitle{
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
"Times New Roman", serif;
color: #800000 ;
text-shadow: none ;
border: none ;
}
div.fancyvrblabel{
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
"Times New Roman", serif;
color: #800000 ;
text-shadow: none ;
border: none ;
}
figure {
margin: 5ex 5% 5ex 5% ;
padding: 1ex 1em 1ex 1em ;
background-color: #fffcf5 ;
overflow-x: auto ;
border: none ;
/* border-top: 1px solid silver; */
/* border-bottom: 1px solid silver; */
}
div.figurecaption , .lstlisting {
border: none ;
/* border-top: 1px solid silver ; */
/* border-bottom: 1px solid silver ; */
background-color: #fffcf5 ;
}
.tnotes {
background: #fffcf5 ;
border-top: 1px solid silver ;
border-bottom: 1px solid silver ;
}
.theorem {
background: none ;
}
.minipage {
background-color: #fffcf5 ;
border: none ;
}
div.floatrow figure { border: none ; }
figure figure { border: none ; }
nav.toc, nav.lof, nav.lot, nav.lol {
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
"Times New Roman", serif;
}
div.sidetoccontainer {
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
"Times New Roman", serif;
background-image: linear-gradient(to bottom, #fffcf5, #C0C0C0);
}
div.sidetoctitle{
color: #800000 ;
}
header{
background-color: #e0e0e0 ;
background-image: linear-gradient(to top, #fffcf5, #b0b0b0);
text-align:center ;
}
footer{
background-color: #e0e0e0 ;
background-image: linear-gradient(to bottom, #fffcf5, #b0b0b0);
padding: 2ex 1em 2ex 1em ;
text-align:left ;
}
nav.botnavigation {
background: #dedcd5 ;
border-top: 1px solid black ;
}
\end{filecontents*}
\end{LWRwriteconf}
\begin{LWRwriteconf}
\begin{filecontents*}[overwrite]{sample_project.css}
/* ( --- Start of project.css --- ) */
/* ( --- A sample project-specific CSS file for lwarp --- ) */
/* Uncomment one of the following: */
@import url("lwarp.css") ;
/* @import url("lwarp_formal.css") ; */
/* @import url("lwarp_sagebrush.css") ; */
/* Project-specific CSS setting follow here. */
/* . . . */
/* ( --- End of project.css --- ) */
\end{filecontents*}
\end{LWRwriteconf}
\begin{LWRwriteconf}
\begin{filecontents*}[overwrite]{lwarp.ist}
preamble
"\\begin{theindex}
\\providecommand*\\lettergroupDefault[1]{}
\\providecommand*\\lettergroup[1]{%
\\par\\textbf{#1}\\par
\\nopagebreak
}
"
headings_flag 1
heading_prefix "
\\lettergroup{"
heading_suffix "}"
delim_0 ", \\hyperindexref{"
delim_1 ", \\hyperindexref{"
delim_2 ", \\hyperindexref{"
delim_n "}, \\hyperindexref{"
delim_r "} -- \\hyperindexref{"
delim_t "}"
page_compositor "."
\end{filecontents*}
\end{LWRwriteconf}
\begin{LWRwriteconf}
\begin{filecontents*}[overwrite]{lwarp.xdy}
(require "tex/inputenc/latin.xdy")
(merge-rule "\\PS *" "Postscript")
(require "texindy.xdy")
(require "page-ranges.xdy")
(require "book-order.xdy")
(define-location-class "arabic-page-numbers"
("arabic-numbers") :min-range-length 1)
(require "makeindex.xdy")
(define-attributes (("hyperindexref")))
(markup-locref :open "\hyperindexref{" :close "}")
(markup-locref :open "\hyperindexref{" :close "}" :attr "hyperpage")
(markup-locref :open "\textbf{\hyperindexref{" :close "}}" :attr "textbf")
(markup-locref :open "\textit{\hyperindexref{" :close "}}" :attr "textit")
(define-location-class-order ("roman-page-numbers"
"arabic-page-numbers"
"alpha-page-numbers"
"Roman-page-numbers"
"Alpha-page-numbers"
"see"
"seealso"))
\end{filecontents*}
\end{LWRwriteconf}
\begin{LWRwriteconf}
\immediate\openout\LWR@quickfile=lwarp_one_limage.txt
\immediate\write\LWR@quickfile{%
pdfseparate -f \LWRpercent 1 -l \LWRpercent 1 \LWRpercent 4_html.pdf %
\LWR@ImagesDirectory\OSPathSymbol lateximagetemp-\LWRpercent\LWRpercent d.pdf%
}
\immediate\write\LWR@quickfile{%
pdfcrop --hires \LWR@ImagesDirectory\OSPathSymbol lateximagetemp-\LWRpercent 1.pdf %
\LWR@ImagesDirectory\OSPathSymbol\LWRpercent 3.pdf%
}
\immediate\write\LWR@quickfile{%
pdftocairo -svg -noshrink \LWR@ImagesDirectory\OSPathSymbol\LWRpercent 3.pdf %
\LWR@ImagesDirectory\OSPathSymbol\LWRpercent 3.svg%
}
\immediate\write\LWR@quickfile{%
del \LWR@ImagesDirectory\OSPathSymbol\LWRpercent 3.pdf%
}
\immediate\write\LWR@quickfile{%
del \LWR@ImagesDirectory\OSPathSymbol lateximagetemp-\LWRpercent 1.pdf%
}
\immediate\write\LWR@quickfile{exit}
\immediate\closeout\LWR@quickfile
\end{LWRwriteconf}
\begin{LWRwriteconf}
\begin{filecontents*}[overwrite]{lwarp_mathjax.txt}
<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
//
// 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']
},
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;
// 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?');
}
}
// Create the command map for \ifstar, \ifnextchar, \seteqnumber
new CommandMap('ifstar-ifnextchar-setequnumber', {
ifstar: 'IfstarFunction',
ifnextchar: 'IfnextcharFunction',
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 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 ;
}
});
// Create the ifstar-ifnextchar-setequnumber package
Configuration.create('ifstar-ifnextchar-setequnumber', {
handler: {macro: ['ifstar-ifnextchar-setequnumber']}
});
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;
}
});
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;
}
});
} // ready
}, // startup
tex: {
packages: {'[+]': ['tagFormat', 'ifstar-ifnextchar-setequnumber']},
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>
<script
id="MathJax-script"
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"
></script>
\end{filecontents*}
\end{LWRwriteconf}
\begin{LWRcreatelwarpmk}
\begin{filecontents*}[overwrite]{lwarpmk.lua}
#!/usr/bin/env texlua
-- Copyright 2016-2020 Brian Dunn
printversion = "v0.88"
requiredconfversion = "2" -- also at *lwarpmk.conf
function printhelp ()
print ("lwarpmk: Use lwarpmk -h or lwarpmk --help for help.") ;
end
function printusage ()
--
-- Print the usage of the lwarpmk command:
--
print ( [[
lwarpmk print [-p project]: Compile the print version if necessary.
lwarpmk print1 [-p project]: Forced single compile of the print version.
lwarpmk printindex [-p project]: Process print indexes.
lwarpmk printglossary [-p project]: Process the glossary for the print version.
lwarpmk html [-p project]: Compile the HTML version if necessary.
lwarpmk html1 [-p project]: Forced single compile of the HTML version.
lwarpmk htmlindex [-p project]: Process HTML indexes.
lwarpmk htmlglossary [-p project]: Process the glossary for the html version.
lwarpmk again [-p project]: Touch the source code to trigger recompiles.
lwarpmk limages [-p project]: Process the "lateximages" created by lwarp.sty.
lwarpmk pdftohtml [-p project]:
For use with latexmk or a Makefile:
Converts project_html.pdf to project_html.html and individual HTML files.
Finishes the HTML conversion even if there was a compile error.
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*,
*_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.
]] )
-- printconf ()
end
function splitfilename ( pathandfilename )
--
-- Separates out the path and extension from a filename.
-- Returns path, filename with extension, and extension.
-- Ex: thispath, thisfilename, thisextension = splitfilename ("path/to/filename.ext")
--
-- https://www.fhug.org.uk/wiki/wiki/doku.php?id=plugins:code_snippets:
-- split_filename_in_to_path_filename_and_extension
--
if lfs.attributes(pathandfilename,"mode") == "directory" then
local strPath = pathandfilename:gsub("[\\/]$","") -- $ (syntax highlighting)
return strPath.."\\","",""
end
pathandfilename = pathandfilename.."."
return pathandfilename:match("^(.-)([^\\/]-)%.([^\\/%.]-)%.?$")
end
function splitfile (destfile,sourcefile)
--
-- Split one large sourcefile into a number of files,
-- starting with destfile.
-- The file is split at each occurance of <!--|Start file|newfilename|*
--
print ("lwarpmk: Splitting " .. sourcefile .. " into " .. destfile) ;
local sfile = io.open(sourcefile)
io.output(destfile)
for line in sfile:lines() do
i,j,copen,cstart,newfilename = string.find (line,"(.*)|(.*)|(.*)|") ;
if ( (i~= nil) and (copen == "<!--") and (cstart == "Start file")) then
-- split the file
io.output(newfilename) ;
else
-- not a splitpoint
io.write (line .. "\n") ;
end
end -- do
io.close(sfile)
end -- function
function cvalueerror ( line, linenum , cvalue )
--
-- Incorrect value, so print an error and exit.
--
print ("lwarpmk: ===")
print ("lwarpmk: " .. linenum .. " : " .. line ) ;
print (
"lwarpmk: incorrect variable value \"" .. cvalue ..
"\" in lwarpmk.conf.\n"
) ;
print ("lwarpmk: ===")
-- printconf () ;
os.exit(1) ;
end
function printhowtorecompile ()
-- Tells the user how to recompile to regenerate the configuration files.
print ("lwarpmk: The configuration files lwarpmk.conf and "..sourcename..".lwarpmkconf" )
print ("lwarpmk: must be updated. To do so, recompile" )
print ("lwarpmk: " , sourcename..".tex" )
if ( printlatexcmd == "" ) then
print ("lwarpmk: using xe/lua/pdflatex," )
else
print ("lwarpmk: using the command:")
print ("lwarpmk: " , printlatexcmd )
end
print ("lwarpmk: then use lwarpmk again.")
end -- printhowtorecompile
function ignoreconf ()
-- Global argument index
argindex = 2
end
function loadconf ()
--
-- Load settings from the project's "lwarpmk.conf" file:
--
-- Default configuration filename:
local conffile = "lwarpmk.conf"
local confroot = "lwarpmk"
-- Global argument index
argindex = 2
-- Optional configuration filename:
if ( arg[argindex] == "-p" ) then
argindex = argindex + 1
confroot = arg[argindex]
conffile = confroot..".lwarpmkconf"
argindex = argindex + 1
end
-- Additional defaults:
confversion = "0"
opsystem = "Unix"
imagesdirectory = "lateximages"
imagesname = "image-"
latexmk = "false"
printlatexcmd = ""
HTMLlatexcmd = ""
printindexcmd = ""
HTMLindexcmd = ""
latexmkindexcmd = ""
-- to be removed:
-- indexprog = "makeindex"
-- makeindexstyle = "lwarp.ist"
-- xindylanguage = "english"
-- xindycodepage = "utf8"
-- xindystyle = "lwarp.xdy"
-- pdftotextenc = "UTF-8"
glossarycmd = "makeglossaries"
-- Verify the file exists:
if (lfs.attributes(conffile,"mode")==nil) then
-- file not exists
print ("lwarpmk: ===")
print ("lwarpmk: File \"" .. conffile .."\" does not exist.")
print ("lwarpmk: Move to the project's source directory,")
print ("lwarpmk: recompile using pdflatex, xelatex, or lualatex,")
print ("lwarpmk: then try using lwarpmk again.")
if ( arg[argindex] ~= nil ) then
print (
"lwarpmk: (\"" .. confroot ..
"\" does not appear to be a project name.)"
)
end
print ("lwarpmk: ===")
printhelp () ;
os.exit(1) -- exit the entire lwarpmk script
else -- file exists
-- Read the file:
print ("lwarpmk: Reading " .. conffile ..".")
local cfile = io.open(conffile)
-- Scan each line, parsing each line as: name = [[string]]
local linenum = 0
for line in cfile:lines() do -- scan lines
linenum = linenum + 1
i,j,cvarname,cvalue = string.find (line,"([%w-_]*)%s*=%s*%[%[([^%]]*)%]%]") ;
-- Error if incorrect enclosing characters:
if ( i == nil ) then
print ("lwarpmk: ===")
print ("lwarpmk: " .. linenum .. " : " .. line ) ;
print ("lwarpmk: Incorrect entry in " .. conffile ..".\n" ) ;
print ("lwarpmk: ===")
-- printconf () ;
os.exit(1) ;
end -- nil
if ( cvarname == "confversion" ) then
confversion = cvalue
elseif ( cvarname == "opsystem" ) then
-- Verify choice of opsystem:
if ( (cvalue == "Unix") or (cvalue == "Windows") ) then
opsystem = cvalue
else
cvalueerror ( line, linenum , cvalue )
end
elseif ( cvarname == "sourcename" ) then sourcename = cvalue
elseif ( cvarname == "homehtmlfilename" ) then homehtmlfilename = cvalue
elseif ( cvarname == "htmlfilename" ) then htmlfilename = cvalue
elseif ( cvarname == "imagesdirectory" ) then imagesdirectory = cvalue
elseif ( cvarname == "imagesname" ) then imagesname = cvalue
elseif ( cvarname == "latexmk" ) then latexmk = cvalue
elseif ( cvarname == "printlatexcmd" ) then printlatexcmd = cvalue
elseif ( cvarname == "HTMLlatexcmd" ) then HTMLlatexcmd = cvalue
elseif ( cvarname == "printindexcmd" ) then printindexcmd = cvalue
elseif ( cvarname == "HTMLindexcmd" ) then HTMLindexcmd = cvalue
elseif ( cvarname == "latexmkindexcmd" ) then latexmkindexcmd = cvalue
elseif ( cvarname == "glossarycmd" ) then glossarycmd = cvalue
elseif ( cvarname == "pdftotextenc" ) then pdftotextenc = cvalue
else
print ("lwarpmk: ===")
print ("lwarpmk: " .. linenum .. " : " .. line ) ;
print (
"lwarpmk: Incorrect variable name \"" .. cvarname .. "\" in " ..
conffile ..".\n"
) ;
print ("lwarpmk: ===")
-- printconf () ;
os.exit(1) ;
end -- cvarname
end -- do scan lines
io.close(cfile)
end -- file exists
-- Error if sourcename is "lwarp".
-- This could happen if a local copy of lwarp has recently been recompiled.
if sourcename=="lwarp" then
print ("lwarpmk: ===")
print ("lwarpmk: lwarp.sty has recently been recompiled in this directory,")
print ("lwarpmk: and \"lwarpmk.conf\" is no longer set for your own project.")
print ("lwarpmk: (Perhaps you are not in your project's directory?)")
print ("lwarpmk: In your project directory, recompile your project")
print ("lwarpmk: using pdf/lua/xelatex <projectname>.")
print ("lwarpmk: After a recompile, \"lwarpmk.conf\" will be set for your project,")
print ("lwarpmk: and you may again use lwarpmk.")
print ("lwarpmk: ===")
os.exit(1)
end -- sourcename of "lwarp"
-- Select some operating-system commands:
if opsystem=="Unix" then -- For Unix / Linux / Mac OS:
rmname = "rm"
mvname = "mv"
cpname = "cp"
touchnamepre = "touch"
touchnamepost = ""
newtouchname = "touch"
dirslash = "/"
opquote= "\'"
cmdgroupopenname = " ( "
cmdgroupclosename = " ) "
seqname = " && "
bgname = " &"
elseif opsystem=="Windows" then -- For Windows
rmname = "DEL"
mvname = "MOVE"
cpname = "COPY"
touchnamepre = "COPY /b"
touchnamepost = "+,,"
newtouchname = "echo empty >"
dirslash = "\\"
opquote= "\""
cmdgroupopenname = ""
cmdgroupclosename = ""
seqname = " & "
bgname = ""
else
print ("lwarpmk: ===")
print ("lwarpmk: Select Unix or Windows for opsystem." )
print ("lwarpmk: ===")
os.exit(1)
end --- for Windows
-- Warning if the operating system does not appear to be correct,
-- in case files were transferred to another system.
if ( (package.config:sub(1,1)) ~= dirslash ) then
print ("lwarpmk: ===")
print ("lwarpmk: It appears that lwarpmk.conf is for a different operating system." )
printhowtorecompile ()
print ("lwarpmk: ===")
os.exit(1)
end
-- Error if the configuration file's version is not current:
if ( confversion ~= requiredconfversion ) then
print ("lwarpmk: ===")
printhowtorecompile ()
print ("lwarpmk: ===")
os.exit(1)
end
end -- loadconf
function executecheckerror ( executecommands , errormessage )
--
-- Execute an operating system call,
-- and maybe exit with an error message.
--
local err
err = os.execute ( executecommands )
if ( err ~= 0 ) then
print ("lwarpmk: ===")
print ("lwarpmk: " .. errormessage )
print ("lwarpmk: ===")
os.exit(1)
end
end -- executecheckerror
function refreshdate ()
os.execute(touchnamepre .. " " .. sourcename .. ".tex " .. touchnamepost)
end
function reruntoget (filesource)
--
-- Scan the LaTeX log file for the phrase "Rerun to get",
-- indicating that the file should be compiled again.
-- Return true if found.
--
local fsource = io.open(filesource)
for line in fsource:lines() do
if ( string.find(line,"Rerun to get") ~= nil ) then
io.close(fsource)
return true
end -- if
end -- do
io.close(fsource)
return false
end
function onetime (latexcmd, fsuffix)
--
-- Compile one time, return true if should compile again.
-- fsuffix is "" for print, "_html" for HTML output.
--
print("lwarpmk: Compiling with: " .. latexcmd)
executecheckerror (
latexcmd ,
"Compile error."
)
return (reruntoget(sourcename .. fsuffix .. ".log") ) ;
end
function manytimes (latexcmd, fsuffix)
--
-- Compile up to five times.
-- fsuffix is "" for print, "_html" for HTML output
--
if onetime(latexcmd, fsuffix) == true then
if onetime(latexcmd, fsuffix) == true then
if onetime(latexcmd, fsuffix) == true then
if onetime(latexcmd, fsuffix) == true then
if onetime(latexcmd, fsuffix) == true then
end end end end end
end
function verifyfileexists (filename)
--
-- Exit if the given file does not exist.
--
if (lfs.attributes ( filename , "modification" ) == nil ) then
print ("lwarpmk: ===")
print ("lwarpmk: " .. filename .. " not found." ) ;
print ("lwarpmk: ===")
os.exit (1) ;
end
end
function pdftohtml ()
--
-- Convert <project>_html.pdf into HTML files:
--
-- Convert to text:
print ("lwarpmk: Converting " .. sourcename
.."_html.pdf to " .. sourcename .. "_html.html")
os.execute("pdftotext -enc " .. pdftotextenc .. " -nopgbrk -layout "
.. sourcename .. "_html.pdf " .. sourcename .. "_html.html")
-- Split the result into individual HTML files:
splitfile (homehtmlfilename .. ".html" , sourcename .. "_html.html")
end
function removeaux ()
--
-- 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, plus comment_*.cut.
--
os.execute ( rmname .. " *.aux " ..
sourcename ..".toc " .. sourcename .. "_html.toc " ..
sourcename ..".lof " .. sourcename .. "_html.lof " ..
sourcename ..".lot " .. sourcename .. "_html.lot " ..
" *.idx " ..
" *.ind " ..
sourcename ..".ps " .. sourcename .."_html.ps " ..
sourcename ..".log " .. sourcename .. "_html.log " ..
sourcename ..".gl* " .. sourcename .. "_html.gl* " ..
sourcename .. "_html.pdf " ..
sourcename .. "_html.html " ..
sourcename .. "_html.sidetoc " ..
" *_html_inc.* " ..
" comment_*.cut"
)
end
function checkhtmlpdfexists ()
--
-- Error if the HTML document does not exist.
-- The lateximages are drawn from the HTML PDF version of the document,
-- so "lwarpmk html" must be done before "lwarpmk limages".
--
local htmlpdffile = io.open(sourcename .. "_html.pdf", "r")
if ( htmlpdffile == nil ) then
print ("")
print ("lwarpmk: ===")
print ("lwarpmk: The HTML version of the document does not exist.")
print ("lwarpmk: Enter \"lwarpmk html\" to compile the HTML version.")
print ("lwarpmk: ===")
os.exit(1)
end
io.close (htmlpdffile)
end -- checkhtmlpdfexists
function warnlimages ()
--
-- Warning of a missing <sourcename>-images.txt file:
print ("lwarpmk: ===")
print ("lwarpmk: \"" .. sourcename .. "-images.txt\" does not exist.")
print ("lwarpmk: Your project does not use SVG math or other lateximages,")
print ("lwarpmk: or the file has been deleted somehow.")
print ("lwarpmk: Use \"lwarpmk html1\" to recompile your project")
print ("lwarpmk: and recreate \"" .. sourcename .. "-images.txt\".")
print ("lwarpmk: If your project does not use SVG math or other lateximages,")
print ("lwarpmk: then \"" .. sourcename .. "-images.txt\" will never exist, and")
print ("lwarpmk: \"lwarpmk limages\" will not be necessary.")
print ("lwarpmk: ===")
end -- warnlimages
function warnlimagesrecompile ()
-- Warning if must recompile before creating limages:
print ("")
print ("lwarpmk: ===")
print ("lwarpmk: Cross-references are not yet correct.")
print ("lwarpmk: The document must be recompiled before creating the lateximages.")
print ("lwarpmk: Enter \"lwarpmk html1\" again, then try \"lwarpmk limages\" again.")
print ("lwarpmk: ===")
end --warnlimagesrecompile
function checklimages ()
--
-- Check <sourcename>.txt to see if need to recompile first.
-- If any entry has a page number of zero, then there were incorrect images.
--
print ("lwarpmk: Checking for a valid " .. sourcename .. "-images.txt file.")
local limagesfile = io.open(sourcename .. "-images.txt", "r")
if ( limagesfile == nil ) then
warnlimages ()
os.exit(1)
end
-- Track warning to recompile if find a page 0
local pagezerowarning = false
-- Scan <sourcename>.txt
for line in limagesfile:lines() do
-- lwimgpage is the page number in the PDF which has the image
-- lwimghash is true if this filename is a hash
-- lwimgname is the lateximage filename root to assign for the image
i,j,lwimgpage,lwimghash,lwimgname = string.find (line,"|(.*)|(.*)|(.*)|")
-- For each entry:
if ( (i~=nil) ) then
-- If the page number is 0, image references are incorrect
-- and must recompile the soure document:
if ( lwimgpage == "0" ) then
pagezerowarning = true
end
end -- if i~=nil
end -- do
-- The last line should be |end|end|end|.
-- If not, the compile must have aborted, and the images are incomplete.
if ( lwimgpage ~= "end" ) then
warnlimagesrecompile()
os.exit(1) ;
end
if ( pagezerowarning ) then
warnlimagesrecompile()
os.exit(1) ;
end -- pagezerowarning
end -- checklimages
function createuniximage ( lwimgfullname )
--
-- Create one lateximage for Unix / Linux / Mac OS.
--
executecheckerror (
cmdgroupopenname ..
"pdfseparate -f " .. lwimgpage .. " -l " .. lwimgpage .. " " ..
sourcename .."_html.pdf " ..
imagesdirectory .. dirslash .."lateximagetemp-%d" .. ".pdf" ..
seqname ..
-- Crop the image:
"pdfcrop --hires " .. imagesdirectory .. dirslash .. "lateximagetemp-" ..
lwimgpage .. ".pdf " ..
imagesdirectory .. dirslash .. lwimgname .. ".pdf" ..
seqname ..
-- Convert the image to svg:
"pdftocairo -svg -noshrink " .. imagesdirectory .. dirslash .. lwimgname .. ".pdf " ..
imagesdirectory .. dirslash .. lwimgname ..".svg" ..
seqname ..
-- Remove the temporary files:
rmname .. " " .. imagesdirectory .. dirslash .. lwimgname .. ".pdf" .. seqname ..
rmname .. " " .. imagesdirectory .. dirslash .. "lateximagetemp-" .. lwimgpage .. ".pdf" ..
cmdgroupclosename .. " >/dev/null " .. bgname
,
"File error trying to convert " .. lwimgfullname
)
-- Every 32 images, wait for completion at below normal priority,
-- allowing other image tasks to catch up.
numimageprocesses = numimageprocesses + 1
if ( numimageprocesses > 32 ) then
numimageprocesses = 0
print ( "lwarpmk: waiting" )
executecheckerror ( "wait" , "File error trying to wait.")
end
end -- createuniximage
function createwindowsimage ( lwimgfullname )
--
-- Create one lateximage for Windows.
--
-- Every 32 images, wait for completion at below normal priority,
-- allowing other image tasks to catch up.
numimageprocesses = numimageprocesses + 1
if ( numimageprocesses > 32 ) then
numimageprocesses = 0
thiswaitcommand = "/WAIT /BELOWNORMAL"
print ( "lwarpmk: waiting" )
else
thiswaitcommand = ""
end
-- Execute the image generation command
executecheckerror (
"start /B " .. thiswaitcommand .. " \"\" lwarp_one_limage " ..
lwimgpage .. " " ..
lwimghash .. " " ..
lwimgname .. " " ..
sourcename .. " <nul >nul"
,
"File error trying to create image."
)
end -- createwindowsimage
function createonelateximage ( line )
--
-- Given the next line of <sourcename>.txt, convert a single image.
--
-- lwimgpage is the page number in the PDF which has the image
-- lwimghash is true if this filename is a hash
-- lwimgname is the lateximage filename root to assign for the image
i,j,lwimgpage,lwimghash,lwimgname = string.find (line,"|(.*)|(.*)|(.*)|")
-- For each entry:
if ( (i~=nil) ) then
-- Skip if the page number is 0:
if ( lwimgpage == "0" ) then
pagezerowarning = true
-- Skip if the page number is "end":
else if ( lwimgpage == "end" ) then
else
-- Skip is this image is hashed and already exists:
local lwimgfullname = imagesdirectory .. dirslash .. lwimgname .. ".svg"
if (
(lwimghash ~= "true") or
(lfs.attributes(lwimgfullname,"mode")==nil) -- file not exists
)
then -- not hashed or not exists:
-- Print the name of the file being generated:
print ( "lwarpmk: " .. lwimgname )
-- Touch/create the dest so that only once instance tries to build it:
executecheckerror (
newtouchname .. " " .. lwimgfullname ,
"File error trying to touch " .. lwimgfullname
)
-- Separate out the image into its own single-page pdf:
if opsystem=="Unix" then
createuniximage (lwimgfullname)
elseif opsystem=="Windows" then
createwindowsimage (lwimgfullname)
end
end -- not hashed or not exists
end -- not page "end"
end -- not page 0
end -- not nil
end -- createonelateximage
function createlateximages ()
--
-- Create lateximages based on <sourcename>-images.txt:
--
-- See if the document must be recompiled first:
checklimages ()
-- See if the HTML version exists:
checkhtmlpdfexists ()
-- Attempt to create the lateximages:
print ("lwarpmk: Creating lateximages.")
local limagesfile = io.open(sourcename .. "-images.txt", "r")
if ( limagesfile == nil ) then
warnlimages ()
os.exit(1)
end
-- Create the lateximages directory, ignore error if already exists
err = os.execute("mkdir " .. imagesdirectory)
-- For Windows, create lwarp_one_limage.cmd from lwarp_one_limage.txt:
if opsystem=="Windows" then
executecheckerror (
cpname .. " lwarp_one_limage.txt lwarp_one_limage.cmd" ,
"File error trying to copy lwarp_one_limage.txt to lwarp_one_limage.cmd"
)
end -- create lwarp_one_limage.cmd
-- Track the number of parallel processes
numimageprocesses = 0
-- Track warning to recompile if find a page 0
pagezerowarning = false
-- Scan <sourcename>.txt
for line in limagesfile:lines() do
createonelateximage ( line )
end -- do
io.close(limagesfile)
print ( "lwarpmk limages: ===")
print ( "lwarpmk limages: Wait a moment for the images to complete" )
print ( "lwarpmk limages: before reloading the page." )
print ( "lwarpmk limages: ===")
print ( "lwarpmk limages: Done." )
if ( pagezerowarning == true ) then
print ( "lwarpmk limages: WARNING: Images will be incorrect." )
print ( "lwarpmk limages: Enter \"lwarpmk cleanlimages\", then" )
print ( "lwarpmk limages: recompile the document one more time, then" )
print ( "lwarpmk limages: repeat \"lwarpmk images\" again." )
end -- pagezerowarning
end -- function
function convertepstopdf ()
--
-- Converts EPS files to PDF files.
-- The filenames are arg[argindex] and up.
-- arg[1] is the command "epstopdf".
--
ignoreconf ()
for i = argindex , #arg do
if (lfs.attributes(arg[i],"mode")==nil) then
print ("lwarpmk: File \"" .. arg[i] .. "\" does not exist.")
else
print ("lwarpmk: Converting \"" .. arg[i] .. "\"")
thispath, thisfilename, thisextension = splitfilename(arg[i])
if ( thispath == nil ) then
os.execute ( "epstopdf " .. arg[i] )
else
os.execute (
"epstopdf " ..
thispath .. thisfilename .. "." .. thisextension .. " " ..
thispath .. thisfilename .. ".pdf"
)
end
end -- if
end -- do
end --function
function convertpdftosvg ()
--
-- Converts PDF files to SVG files.
-- The filenames are arg[argindex] and up.
-- arg[1] is the command "pdftosvg".
--
ignoreconf ()
for i = argindex , #arg do
if (lfs.attributes(arg[i],"mode")==nil) then
print ("lwarpmk: File \"" .. arg[i] .. "\" does not exist.")
else
print ("lwarpmk: Converting \"" .. arg[i] .. "\"")
thispath, thisfilename, thisextension = splitfilename(arg[i])
if ( thispath == nil ) then
os.execute ( "pdftocairo -svg " .. arg[i] )
else
os.execute (
"pdftocairo -svg " ..
thispath .. thisfilename .. "." .. thisextension .. " " ..
thispath .. thisfilename .. ".svg"
)
end
end -- if
end -- do
end --function
-- Force an update and conclude processing:
function updateanddone ()
print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.")
refreshdate ()
print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.")
print ("lwarpmk: Done.")
end -- function
-- Start of the main code: --
-- lwarpmk --version :
if (arg[1] == "--version") then
print ( "lwarpmk: " .. printversion )
else -- not --version
-- print intro:
print ("lwarpmk: " .. printversion .. " Automated make for the LaTeX Lwarp package.")
-- lwarpmk print:
if arg[1] == "print" then
loadconf ()
if ( latexmk == "true" ) then
print ("lwarpmk: Compiling with: " .. printlatexcmd)
executecheckerror (
printlatexcmd ,
"Compile error."
)
print ("lwarpmk: Done.")
else -- not latexmk
verifyfileexists (sourcename .. ".tex") ;
-- See if up to date:
if (
( lfs.attributes ( sourcename .. ".pdf" , "modification" ) == nil ) or
(
lfs.attributes ( sourcename .. ".tex" , "modification" ) >
lfs.attributes ( sourcename .. ".pdf" , "modification" )
)
) then
-- Recompile if not yet up to date:
manytimes(printlatexcmd, "")
print ("lwarpmk: Done.") ;
else
print ("lwarpmk: " .. sourcename .. ".pdf is up to date.") ;
end
end -- not latexmk
-- lwarpmk print1:
elseif arg[1] == "print1" then
loadconf ()
verifyfileexists (sourcename .. ".tex") ;
onetime(printlatexcmd, "")
print ("lwarpmk: Done.") ;
-- lwarpmk printindex:
-- Compile the index then touch the source
-- to trigger a recompile of the document:
elseif arg[1] == "printindex" then
loadconf ()
os.execute ( printindexcmd )
print ("lwarpmk: -------")
updateanddone ()
-- lwarpmk printglossary:
-- Compile the glossary then touch the source
-- to trigger a recompile of the document:
elseif arg[1] == "printglossary" then
loadconf ()
print ("lwarpmk: Processing the glossary.")
os.execute(glossarycmd .. " " .. sourcename)
updateanddone ()
-- lwarpmk html:
elseif arg[1] == "html" then
loadconf ()
if ( latexmk == "true" ) then
print ("lwarpmk: Compiling with: " .. HTMLlatexcmd)
executecheckerror (
HTMLlatexcmd ,
"Compile error."
)
pdftohtml ()
print ("lwarpmk: Done.")
else -- not latexmk
verifyfileexists ( sourcename .. ".tex" ) ;
-- See if exists and is up to date:
if (
( lfs.attributes ( homehtmlfilename .. ".html" , "modification" ) == nil ) or
(
lfs.attributes ( sourcename .. ".tex" , "modification" ) >
lfs.attributes ( homehtmlfilename .. ".html" , "modification" )
)
) then
-- Recompile if not yet up to date:
manytimes(HTMLlatexcmd, "_html")
pdftohtml ()
print ("lwarpmk: Done.")
else
print ("lwarpmk: " .. homehtmlfilename .. ".html is up to date.")
end
end -- not latexmk
-- lwarpmk html1:
elseif arg[1] == "html1" then
loadconf ()
verifyfileexists ( sourcename .. ".tex" ) ;
onetime(HTMLlatexcmd, "_html")
pdftohtml ()
print ("lwarpmk: Done.")
-- lwarpmk pdftohtml:
elseif arg[1] == "pdftohtml" then
loadconf ()
pdftohtml ()
-- lwarpmk htmlindex:
-- Compile the index then touch the source
-- to trigger a recompile of the document:
elseif arg[1] == "htmlindex" then
loadconf ()
os.execute ( HTMLindexcmd )
print ("lwarpmk: -------")
updateanddone ()
-- lwarpmk htmlglossary:
-- Compile the glossary then touch the source
-- to trigger a recompile of the document.
-- The <sourcename>.xdy file is created by the glossaries package.
elseif arg[1] == "htmlglossary" then
loadconf ()
print ("lwarpmk: Processing the glossary.")
os.execute(glossarycmd .. " " .. sourcename .. "_html")
updateanddone ()
-- lwarpmk limages:
-- Scan the <sourcename>.txt file to create lateximages.
elseif arg[1] == "limages" then
loadconf ()
print ("lwarpmk: Processing images.")
createlateximages ()
print ("lwarpmk: Done.")
-- lwarpmk again:
-- Touch the source to trigger a recompile.
elseif arg[1] == "again" then
loadconf ()
updateanddone ()
-- lwarpmk clean:
-- Remove project.aux, .toc, .lof, .lot, .log, *.idx, *.ind, *_html_inc.*, .gl*
elseif arg[1] == "clean" then
loadconf ()
removeaux ()
print ("lwarpmk: Done.")
-- lwarpmk cleanall
-- Remove project.aux, .toc, .lof, .lot, .log, *.idx, *.ind, *_html_inc.*, .gl*
-- and also project.pdf, project.dvi, *.html
elseif arg[1] == "cleanall" then
loadconf ()
removeaux ()
os.execute ( rmname .. " " ..
sourcename .. ".pdf " .. sourcename .. "_html.pdf " ..
sourcename .. ".dvi " .. sourcename .. "_html.dvi " ..
"*.html"
)
print ("lwarpmk: Done.")
-- lwarpmk cleanlimages
-- Remove images from the imagesdirectory.
elseif arg[1] == "cleanlimages" then
loadconf ()
os.execute ( rmname .. " " .. imagesdirectory .. dirslash .. "*" )
print ("lwarpmk: Done.")
-- lwarpmk epstopdf <list of file names>
-- Convert EPS files to PDF using epstopdf
elseif arg[1] == "epstopdf" then
convertepstopdf ()
print ("lwarpmk: Done.")
-- lwarpmk pdftosvg <list of file names>
-- Convert PDF files to SVG using pdftocairo
elseif arg[1] == "pdftosvg" then
convertpdftosvg ()
print ("lwarpmk: Done.")
-- lwarpmk with no argument :
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
printusage ()
-- Unknown command:
else
printhelp ()
print ("\nlwarpmk: ****** Unknown command \""..arg[1].."\". ******\n")
end
end -- not --version
\end{filecontents*}
\end{LWRcreatelwarpmk}
\begin{warpHTML}
\newcommand*{\LWR@depthnone}{-5}
\newcommand*{\LWR@depthfinished}{-4}
\newcommand*{\LWR@depthbook}{-2}
\newcommand*{\LWR@depthpart}{-1}
\newcommand*{\LWR@depthchapter}{0}
\newcommand*{\LWR@depthsection}{1}
\newcommand*{\LWR@depthsubsection}{2}
\newcommand*{\LWR@depthsubsubsection}{3}
\newcommand*{\LWR@depthparagraph}{4}
\newcommand*{\LWR@depthsubparagraph}{5}
\newcommand*{\LWR@depthlist}{6}
\newcommand*{\LWR@depthlistitem}{7}
\let\LWR@depthdescitem\LWR@depthlistitem
\newcommand*{\LWR@closeone}{}% top of the stack
\newcommand*{\LWR@closetwo}{}
\newcommand*{\LWR@closethree}{}
\newcommand*{\LWR@closefour}{}
\newcommand*{\LWR@closefive}{}
\newcommand*{\LWR@closesix}{}
\newcommand*{\LWR@closeseven}{}
\newcommand*{\LWR@closeeight}{}
\newcommand*{\LWR@closenine}{}
\newcommand*{\LWR@closeten}{}
\newcommand*{\LWR@closeeleven}{}
\newcommand*{\LWR@closetwelve}{}
\newcommand*{\LWR@closedepthone}{\LWR@depthnone}% top of the stack
\newcommand*{\LWR@closedepthtwo}{\LWR@depthnone}
\newcommand*{\LWR@closedepththree}{\LWR@depthnone}
\newcommand*{\LWR@closedepthfour}{\LWR@depthnone}
\newcommand*{\LWR@closedepthfive}{\LWR@depthnone}
\newcommand*{\LWR@closedepthsix}{\LWR@depthnone}
\newcommand*{\LWR@closedepthseven}{\LWR@depthnone}
\newcommand*{\LWR@closedeptheight}{\LWR@depthnone}
\newcommand*{\LWR@closedepthnine}{\LWR@depthnone}
\newcommand*{\LWR@closedepthten}{\LWR@depthnone}
\newcommand*{\LWR@closedeptheleven}{\LWR@depthnone}
\newcommand*{\LWR@closedepthtwelve}{\LWR@depthnone}
\NewDocumentCommand{\LWR@pushclose}{m}
{%
\global\let\LWR@closetwelve\LWR@closeeleven%
\global\let\LWR@closeeleven\LWR@closeten%
\global\let\LWR@closeten\LWR@closenine%
\global\let\LWR@closenine\LWR@closeeight%
\global\let\LWR@closeeight\LWR@closeseven%
\global\let\LWR@closeseven\LWR@closesix%
\global\let\LWR@closesix\LWR@closefive%
\global\let\LWR@closefive\LWR@closefour%
\global\let\LWR@closefour\LWR@closethree%
\global\let\LWR@closethree\LWR@closetwo%
\global\let\LWR@closetwo\LWR@closeone%
\global\csletcs{LWR@closeone}{LWR@printclose#1}%
\global\let\LWR@closedepthtwelve\LWR@closedeptheleven%
\global\let\LWR@closedeptheleven\LWR@closedepthten%
\global\let\LWR@closedepthten\LWR@closedepthnine%
\global\let\LWR@closedepthnine\LWR@closedeptheight%
\global\let\LWR@closedeptheight\LWR@closedepthseven%
\global\let\LWR@closedepthseven\LWR@closedepthsix%
\global\let\LWR@closedepthsix\LWR@closedepthfive%
\global\let\LWR@closedepthfive\LWR@closedepthfour%
\global\let\LWR@closedepthfour\LWR@closedepththree%
\global\let\LWR@closedepththree\LWR@closedepthtwo%
\global\let\LWR@closedepthtwo\LWR@closedepthone%
\global\csletcs{LWR@closedepthone}{LWR@depth#1}%
}
\newcommand*{\LWR@popclose}
{%
\global\let\LWR@closeone\LWR@closetwo%
\global\let\LWR@closetwo\LWR@closethree%
\global\let\LWR@closethree\LWR@closefour%
\global\let\LWR@closefour\LWR@closefive%
\global\let\LWR@closefive\LWR@closesix%
\global\let\LWR@closesix\LWR@closeseven%
\global\let\LWR@closeseven\LWR@closeeight%
\global\let\LWR@closeeight\LWR@closenine%
\global\let\LWR@closenine\LWR@closeten%
\global\let\LWR@closeten\LWR@closeeleven%
\global\let\LWR@closeeleven\LWR@closetwelve%
\global\let\LWR@closedepthone\LWR@closedepthtwo%
\global\let\LWR@closedepthtwo\LWR@closedepththree%
\global\let\LWR@closedepththree\LWR@closedepthfour%
\global\let\LWR@closedepthfour\LWR@closedepthfive%
\global\let\LWR@closedepthfive\LWR@closedepthsix%
\global\let\LWR@closedepthsix\LWR@closedepthseven%
\global\let\LWR@closedepthseven\LWR@closedeptheight%
\global\let\LWR@closedeptheight\LWR@closedepthnine%
\global\let\LWR@closedepthnine\LWR@closedepthten%
\global\let\LWR@closedepthten\LWR@closedeptheleven%
\global\let\LWR@closedeptheleven\LWR@closedepthtwelve%
}
\end{warpHTML}
\begin{warpHTML}
\NewDocumentCommand{\LWR@setexparray}{m m m}{%
\let\LWR@temp@par\par%
\let\par\relax%
\edef\LWR@thisexparrayname{#1#2}%
\ifstrempty{#3}%
{\csdef{\LWR@thisexparrayname}{}}%
{\csedef{\LWR@thisexparrayname}{#3}}%
\let\par\LWR@temp@par%
}
\newcommand*{\LWR@getexparray}[2]{%
\@nameuse{#1#2}%
}
\end{warpHTML}
\begin{warpall}
\newcommand{\StartDefiningTabulars}{%
\LWR@traceinfo{StartDefiningTabulars}%
\warpHTMLonly{\catcode`\&=\active}%
}
\newcommand{\StopDefiningTabulars}{%
\LWR@traceinfo{StopDefiningTabulars}%
\warpHTMLonly{\catcode`\&=4}%
}
\newbool{LWR@mathmacro}
\boolfalse{LWR@mathmacro}
\newcommand{\StartDefiningMath}{%
\LWR@traceinfo{StartDefiningMath}%
\warpHTMLonly{\catcode`\$=\active}%
}
\newcommand{\StopDefiningMath}{%
\LWR@traceinfo{StopDefiningMath}%
\warpHTMLonly{\catcode`\$=3}% math shift
}
\end{warpall}
\begin{warpall}
\newbool{LWR@dynamicmath}
\boolfalse{LWR@dynamicmath}
\newcommand{\inlinemathother}{%
\LWR@traceinfo{inlinemathother}%
\booltrue{LWR@dynamicmath}%
}
\newcommand{\inlinemathnormal}{%
\LWR@traceinfo{inlinemathnormal}%
\boolfalse{LWR@dynamicmath}%
}
\end{warpall}
\begin{warpHTML}
\let\LWR@origampersand\&
\newcommand*{\HTMLentity}[1]{%
\begingroup%
\LWR@FBcancel%
\LWR@origampersand#1;%
\endgroup%
}
\newcommand*{\HTMLunicode}[1]{\HTMLentity{\LWR@origpound{}x#1}}
\renewrobustcmd*{\&}{\HTMLentity{amp}}
\let\LWR@origtextless\textless
\renewrobustcmd*{\textless}{\HTMLentity{lt}}
\let\LWR@origtextgreater\textgreater
\renewrobustcmd*{\textgreater}{\HTMLentity{gt}}
\end{warpHTML}
\begin{warpall}
\providecommand*{\BaseJobname}{\jobname}
\providecommand*{\HTMLFilename}{}
\providecommand*{\HomeHTMLFilename}{\BaseJobname}
\newcommand*{\SetHTMLFileNumber}[1]{%
\setcounter{LWR@htmlfilenumber}{#1}%
}
\newbool{FileSectionNames}
\booltrue{FileSectionNames}
\end{warpall}
\begin{warpHTML}
\newcounter{LWR@HTMLpagenum}
\setcounter{LWR@HTMLpagenum}{0}
\newcounter{LWR@htmlseqfilenumber}
\setcounter{LWR@htmlseqfilenumber}{0}
\newbool{LWR@setseqfilelabel}
\setbool{LWR@setseqfilelabel}{false}
\newcounter{LWR@htmlfilenumber}
\setcounter{LWR@htmlfilenumber}{0}
\newcommand*{\LWR@htmlsectionfilename}[1]{%
\LWR@traceinfo{LWR@htmlsectionfilename A !\detokenize{#1}!}%
\begingroup%
\LWR@disablepinyin%
\LWR@sanitize{#1}%
\LWR@traceinfo{about to compare with ??}%
\ifdefstring{\LWR@sanitized}{??}
{\LWR@traceinfo{found ??}}%
{\LWR@traceinfo{not found ??}}%
\LWR@traceinfo{about to compare with zero or empty}%
\ifboolexpr{
test {\ifdefstring{\LWR@sanitized}{0}} or
test {\ifdefstring{\LWR@sanitized}{}} or
test {\ifdefstring{\LWR@sanitized}{??}}
}
{%
\LWR@traceinfo{LWR@htmlsectionfilename B \HomeHTMLFilename.html}%
\HomeHTMLFilename.html%
}%
{%
\LWR@traceinfo{LWR@htmlsectionfilename C \LWR@sanitized}%
\ifboolexpr{
test{\ifdefvoid{\HTMLFilename}} and
(
test{\ifdefstring{\LWR@sanitized}{Index}} or
test{\ifdefstring{\LWR@sanitized}{index}}
)
}%
{%
\LWR@traceinfo{Adding a zero to the index filename.}%
\LWR@sanitized-0.html%
}%
{%
\HTMLFilename\LWR@isolate{\LWR@sanitized}.html%
}%
}%
\LWR@traceinfo{LWR@htmlsectionfilename Z}%
\endgroup%
}
\newcommand*{\LWR@htmlrefsectionfilename}[1]{%
\LWR@traceinfo{LWR@htmlrefsectionfilename: !\detokenize{#1}!}%
\begingroup%
\LWR@nullfonts%
\LWR@htmlsectionfilename{\LWR@htmlfileref{#1}}%
\endgroup%
\LWR@traceinfo{LWR@htmlrefsectionfilename: done}%
}
\end{warpHTML}
\begin{warpall}
\newcommand{\linkhomename}{Home}
\end{warpall}
\begin{warpHTML}
\newcommand*{\LinkHome}{%
\LWR@subhyperrefclass{\HomeHTMLFilename.html}{\linkhomename}{linkhome}%
}
\end{warpHTML}
\begin{warpprint}
\AtBeginDocument{
\@ifundefined{hyperref}{
\newcommand*{\LinkHome}{%
\linkhomename\ --- page \pageref{\BaseJobname-page-LWRfirstpage}%
}
}{
\newcommand*{\LinkHome}{%
\hyperref[\BaseJobname-page-LWRfirstpage]{\linkhomename}%
}
}
}
\AfterEndPreamble{\label{\BaseJobname-page-LWRfirstpage}}
\end{warpprint}
\begin{warpHTML}
\newcommand*{\LWR@topnavigation}{%
\LWR@htmlelementclassline{nav}{topnavigation}{\LinkHome}
}
\newcommand*{\LWR@botnavigation}{%
\LWR@htmlelementclassline{nav}{botnavigation}{\LinkHome}
}
\end{warpHTML}
\begin{warpall}
\newcommand*{\linkpreviousname}{Previous}
\newcommand*{\linknextname}{Next}
\end{warpall}
\begin{warpprint}
\newcommand*{\LinkPrevious}{}
\newcommand*{\LinkNext}{}
\end{warpprint}
\begin{warpHTML}
\newcommand*{\LinkPrevious}{%
\ifnumless{\value{LWR@htmlseqfilenumber}}{1}{}{%
\setcounter{LWR@tempcountone}{\value{LWR@htmlseqfilenumber}-1}%
\LWR@subhyperrefclass{%
\LWR@htmlrefsectionfilename{%
\BaseJobname-autofile-\arabic{LWR@tempcountone}%
}%
}{\linkpreviousname}{linkhome}%
}%
}
\newcommand*{\LinkNext}{%
\ifcsdef{r@\BaseJobname-autofile-last@lwarp}{%
\edef\LWR@tempone{%
\LWR@htmlfileref{\BaseJobname-autofile-\arabic{LWR@htmlseqfilenumber}}%
}%
\edef\LWR@temptwo{%
\LWR@htmlfileref{\BaseJobname-autofile-last}%
}%
\ifdefequal{\LWR@tempone}{\LWR@temptwo}{}{%
\setcounter{LWR@tempcountone}{\value{LWR@htmlseqfilenumber}+1}%
\LWR@subhyperrefclass{%
\LWR@htmlrefsectionfilename{%
\BaseJobname-autofile-\arabic{LWR@tempcountone}%
}%
}{\linknextname}{linkhome}%
}%
}{}%
}
\end{warpHTML}
\begin{warpHTML}
\newcommand*{\LWR@subprintstack}{
\LWR@closedepthone\ \LWR@closedepthtwo\ \LWR@closedepththree\
\LWR@closedepthfour\ \LWR@closedepthfive\ \LWR@closedepthsix\
\LWR@closedepthseven\ \LWR@closedeptheight\ \LWR@closedepthnine\
\LWR@closedepthten\ \LWR@closedeptheleven\ \LWR@closedepthtwelve\
}
\newcommand*{\LWRPrintStack}{
\LWR@startpars
\LWR@subprintstack
}
\end{warpHTML}
\begin{warpprint}
\newcommand*{\LWRPrintStack}{}
\end{warpprint}
\begin{warpHTML}
\newcommand*{\LWR@closeoneprevious}{%
\LWR@closeone
\LWR@popclose
}
\newcommand*{\LWR@closeprevious}[1]{
\LWR@traceinfo{%
LWR@closeprevious to depth \csuse{LWR@depth#1}, %
depths are \LWR@subprintstack%
}%
\LWR@stoppars%
\whileboolexpr{test{\ifnumcomp{\LWR@closedepthone}{>}{\csuse{LWR@depth#1}}}}%
{%
\LWR@traceinfo{LWR@closeprevious: closing out depth \LWR@closedepthone}%
\LWR@closeoneprevious%
}%
\ifboolexpr{test{\ifnumcomp{\LWR@closedepthone}{=}{\csuse{LWR@depth#1}}}}%
{%
\LWR@traceinfo{LWR@closeprevious: closing out depth \LWR@closedepthone}%
\LWR@closeoneprevious%
}{}%
\LWR@traceinfo{LWR@closeprevious: done, depths are \LWR@subprintstack}%
}
\end{warpHTML}
\begin{warpHTML}
\newcommand{\LWR@forcenewpage}{%
\LWR@traceinfo{LWR@forcenewpage}%
\ifinner\else%
\LWR@stoppars\LWR@maybe@orignewpage\LWR@startpars%
\fi%
}
\renewcommand*{\pagestyle}[1]{}
\renewcommand*{\thispagestyle}[1]{}
\renewcommand*{\markboth}[2]{}
\renewcommand*{\markright}[1]{}
\renewcommand*{\raggedbottom}{}
\renewcommand*{\flushbottom}{}
\renewcommand*{\sloppy}{}
\renewcommand*{\fussy}{}
\RenewDocumentCommand{\pagenumbering}{s m}{}
\end{warpHTML}
\begin{warpHTML}
\newcommand*{\LWR@tagtitle}{h1}
\newcommand*{\LWR@tagtitleend}{/h1}
\newcommand*{\LWR@tagbook}{div class="book"}
\newcommand*{\LWR@tagbookend}{/div}
\newcommand*{\LWR@tagpart}{h2}
\newcommand*{\LWR@tagpartend}{/h2}
\newcommand*{\LWR@tagchapter}{h3}
\newcommand*{\LWR@tagchapterend}{/h3}
\newcommand*{\LWR@tagsection}{h4}
\newcommand*{\LWR@tagsectionend}{/h4}
\newcommand*{\LWR@tagsubsection}{h5}
\newcommand*{\LWR@tagsubsectionend}{/h5}
\newcommand*{\LWR@tagsubsubsection}{h6}
\newcommand*{\LWR@tagsubsubsectionend}{/h6}
\newcommand*{\LWR@tagparagraph}{span class="paragraph"}
\newcommand*{\LWR@tagparagraphend}{/span}
\newcommand*{\LWR@tagsubparagraph}{span class="subparagraph"}
\newcommand*{\LWR@tagsubparagraphend}{/span}
\newcommand*{\LWR@tagregularparagraph}{p}
\providecommand*{\LWR@FBcancel}{}
\AtBeginDocument{%
\@ifundefined{NoAutoSpacing}%
{}%
{%
\LetLtxMacro\LWR@FBcancel\NoAutoSpacing%
}%
\@ifundefined{frenchbsetup}%
{}%
{%
\frenchbsetup{FrenchFootnotes=false}%
\renewrobustcmd*{\FBcolonspace}{%
\begingroup%
\LWR@FBcancel%
\LWR@origampersand{}nbsp;%
\endgroup%
}%
\renewrobustcmd*{\FBthinspace}{%
\begingroup%
\LWR@FBcancel%
\LWR@origampersand\LWR@origpound{}x202f;% \,
\endgroup%
}%
\renewrobustcmd*{\FBguillspace}{%
\begingroup%
\LWR@FBcancel%
\LWR@origampersand{}nbsp;% ~, for \og xyz \fg{}
\endgroup%
}%
\DeclareDocumentCommand{\FBmedkern}{}{%
\begingroup%
\LWR@FBcancel%
\LWR@origampersand\LWR@origpound{}x202f;% \,
\endgroup%
}%
\DeclareDocumentCommand{\FBthickkern}{}{%
\begingroup%
\LWR@FBcancel%
\LWR@origampersand{}nbsp;% ~
\endgroup%
}%
\renewrobustcmd*{~}{\HTMLentity{nbsp}}% was overwritten by babel-french
\ifFBunicode%
\else%
\DeclareTextSymbol{\FBtextellipsis}{LY1}{133}%
\DeclareTextCommandDefault{\FBtextellipsis}{\textellipsis\xspace}%
\fi%
}%
}
\newcommand*{\LWR@indentHTML}{%
\LWR@orignewline\LWR@origrule{2em}{0pt}%
}
\newcommand*{\LWR@indentHTMLtwo}{%
\LWR@orignewline\LWR@origrule{4em}{0pt}%
}
\newcommand*{\LWR@htmltagc}[1]{%
\LWR@traceinfo{LWR@htmltagc !\detokenize{#1}!}%
\begingroup%
\LWR@FBcancel%
\ifmmode\else\protect\LWR@print@normalfont\protect\LWR@origttfamily\fi%
\protect\LWR@origtextless%
\LWR@isolate{#1}%
\protect\LWR@origtextgreater%
\endgroup%
}
\newcommand*{\LWR@spanwarnformat}[1]{%
\ifnumcomp{\value{LWR@spandepth}}{>}{0}{%
\PackageWarning{lwarp}{%
A #1 is being used inside a span.\MessageBreak
Formatting may be lost,%
}%
}{}%
}
\newcommand*{\LWR@spanwarninvalid}[1]{%
\ifnumcomp{\value{LWR@spandepth}}{>}{0}{%
\PackageWarning{lwarp}{%
A #1 is being used inside a span.\MessageBreak
This generates invalid HTML,%
}%
}{}%
}
\newcommand*{\LWR@nestspanitem}{%
\if@newlist\else{\LWR@htmltagc{br /}}\fi%
\LWR@origitem%
}
\newenvironment*{LWR@nestspan}
{%
\LWR@traceinfo{LWR@nestspan starting}%
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
{%
\LWR@traceinfo{LWR@nestspan: inside a lateximage}%
}%
{% not in a lateximage
\LWR@traceinfo{LWR@nestspan: NOT inside a lateximage}%
\addtocounter{LWR@spandepth}{1}%
\RenewDocumentEnvironment{minipage}{O{t} o O{t} m}%
{\LWR@spanwarnformat{minipage or \protect\parbox}}%
{}%
\RenewDocumentEnvironment{BlockClass}{o m}%
{\LWR@spanwarnformat{multi-paragraph object}}%
{}%
\renewcommand{\BlockClassSingle}[2]{%
{\LWR@spanwarnformat{multi-paragraph object}}%
##2%
}%
\renewcommand{\LWR@forcenewpage}{}%
\renewcommand{\LWR@liststart}{%
\let\item\LWR@nestspanitem%
}%
\renewcommand{\LWR@listend}{\LWR@htmltagc{br /}\LWR@htmltagc{br /}}%
\renewenvironment{quote}{\LWR@htmltagc{br /}}{\LWR@htmltagc{br /}}%
\renewenvironment{quotation}{\LWR@htmltagc{br /}}{\LWR@htmltagc{br /}}%
}% not in a lateximage
\LWR@traceinfo{LWR@nestspan starting: done}%
}% starting env
{% ending env
\LWR@traceinfo{LWR@nestspan ending}%
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
{}%
{\addtocounter{LWR@spandepth}{-1}}%
\LWR@traceinfo{LWR@nestspan ending: done}%
}
\AfterEndEnvironment{LWR@nestspan}{\global\let\par\LWR@closeparagraph}
\NewDocumentCommand{\LWR@htmlspan}{m +m}{%
\LWR@ensuredoingapar%
\LWR@htmltagc{#1}%
\begin{LWR@nestspan}%
#2%
\LWR@htmltagc{/#1}%
\end{LWR@nestspan}%
}
\NewDocumentCommand{\LWR@htmlspanclass}{o m +m}{%
\LWR@traceinfo{LWR@htmlspanclass |#1|#2|}%
\LWR@ensuredoingapar%
\LWR@subhtmlelementclass{span}[#1]{#2}%
\begin{LWR@nestspan}%
#3%
\LWR@htmltagc{/span}%
\LWR@traceinfo{LWR@htmlspanclass done}%
\end{LWR@nestspan}%
}
\newcommand*{\LWR@htmltag}[1]{%
\LWR@htmltagc{#1}%
}
\newcommand*{\LWR@htmlopencomment}{%
{%
\begingroup%
\LWR@FBcancel%
\ifmmode\else\protect\LWR@print@normalfont\protect\LWR@origttfamily\fi%
\LWR@print@mbox{\LWR@origtextless{}!-\/-}%
\endgroup%
}%
}
\newcommand*{\LWR@htmlclosecomment}{%
{%
\begingroup%
\LWR@FBcancel%
\ifmmode\else\protect\LWR@print@normalfont\protect\LWR@origttfamily\fi%
\LWR@print@mbox{-\/-\LWR@origtextgreater}%
\endgroup%
}%
}
\newcommand{\LWR@htmlcomment}[1]{%
\LWR@htmlopencomment{}%
{%
\LWR@print@normalfont%
\LWR@origttfamily% break ligatures
#1%
}%
\LWR@htmlclosecomment{}}
\newcommand{\LWR@htmlblockcomment}[1]
{\LWR@stoppars\LWR@htmlcomment{#1}\LWR@startpars}
\newcommand*{\LWR@htmlblocktag}[1]{%
\LWR@stoppars%
\LWR@htmltag{#1}%
\LWR@startpars%
}
\NewDocumentCommand{\LWR@subhtmlelementclass}{m O{} m}{%
\LWR@traceinfo{LWR@subhtmlelementclass !#1!#2!#3!}%
\ifblank{#2}%
{% empty option
\LWR@htmltag{%
#1 % space
class=\textquotedbl#3\textquotedbl\ % space
}%
}%
{% non-empty option
\LWR@htmltag{%
#1\LWR@indentHTML%
class=\textquotedbl#3\textquotedbl\LWR@indentHTML%
style=\textquotedbl#2\textquotedbl\LWR@orignewline%
}%
}%
\LWR@traceinfo{LWR@subhtmlelementclass done}%
}
\NewDocumentCommand{\LWR@htmlelementclass}{m o m}{%
\LWR@stoppars%
\LWR@forceemptyline%
\LWR@subhtmlelementclass{#1}[#2]{#3}%
\LWR@startpars%
}
\newcommand*{\LWR@htmlelementclassend}[2]{%
\LWR@stoppars%
\LWR@htmltag{/#1}%
\ifbool{HTMLDebugComments}{%
\LWR@htmlcomment{End of #1 ``#2''}%
}{}%
\LWR@startpars%
}
\NewDocumentCommand{\LWR@htmldivclass}{o m}{%
\LWR@htmlelementclass{div}[#1]{#2}%
}
\newcommand*{\LWR@htmldivclassend}[1]{%
\LWR@htmlelementclassend{div}{#1}%
}
\NewDocumentCommand{\LWR@htmlelementclassline}{m o m +m}{%
\LWR@stoppars
\LWR@forceemptyline%
\LWR@subhtmlelementclass{#1}[#2]{#3}%
#4%
\LWR@htmltag{/#1}
\LWR@startpars
}
\newcommand*{\LWR@htmlelement}[1]{%
\LWR@htmlblocktag{#1}
}
\newcommand*{\LWR@htmlelementend}[1]{%
\LWR@stoppars
\LWR@htmltag{/#1}
\LWR@startpars
}
\end{warpHTML}
\begin{warpprint}
\NewDocumentEnvironment{BlockClass}{o m}{}{}%
\end{warpprint}
\begin{warpHTML}
\NewDocumentEnvironment{LWR@print@BlockClass}{o m}{}{}%
\NewDocumentEnvironment{LWR@HTML@BlockClass}{o m}%
{\LWR@htmldivclass[#1]{#2}}
{\LWR@htmldivclassend{#2}}
\LWR@formattedenv{BlockClass}
\end{warpHTML}
\begin{warpall}
\newcommand{\BlockClassSingle}[2]{#2}
\end{warpall}
\begin{warpHTML}
\newcommand{\LWR@HTML@BlockClassSingle}[2]{%
\LWR@htmlelementclassline{div}{#1}{#2}%
}
\LWR@formatted{BlockClassSingle}
\end{warpHTML}
\begin{warpprint}
\NewDocumentCommand{\InlineClass}{D{(}{)}{} o m +m}{#4}%
\end{warpprint}
\begin{warpHTML}
\NewDocumentCommand{\LWR@print@InlineClass}{D{(}{)}{} o m +m}{#4}%
\NewDocumentCommand{\LWR@HTML@InlineClass}{D{(}{)}{} o m +m}{%
\ifbool{FormatWP}{%
\LWR@htmlspanclass[#1]{#3}{#4}%
}{%
\LWR@htmlspanclass[#2]{#3}{#4}%
}%
}
\LWR@formatted{InlineClass}
\end{warpHTML}
\begin{warpprint}
\NewDocumentEnvironment{LWR@BlockClassWP}{m m m}{}{}%
\end{warpprint}
\begin{warpHTML}
\NewDocumentEnvironment{LWR@print@LWR@BlockClassWP}{m m m}{}{}%
\NewDocumentEnvironment{LWR@HTML@LWR@BlockClassWP}{m m m}%
{%
\LWR@stoppars%
\ifbool{FormatWP}%
{%
\addtocounter{LWR@thisautoidWP}{1}%
\LWR@htmltag{%
div class=\textquotedbl#3\textquotedbl\ % space
id=\textquotedbl%
\LWR@print@mbox{autoidWP-\arabic{LWR@thisautoidWP}}%
\textquotedbl%
\ifblank{#1}{}{ style=\textquotedbl#1\textquotedbl}%
}%
}% FormatWP
{% not FormatWP
\LWR@htmltag{%
div class=\textquotedbl#3\textquotedbl%
\ifblank{#2}{}{ style=\textquotedbl#2\textquotedbl}%
}%
}% not FormatWP
\LWR@startpars%
}
{\LWR@htmldivclassend{#3}}
\LWR@formattedenv{LWR@BlockClassWP}
\end{warpHTML}
\begin{warpHTML}
\newcommand*{\LWR@printclosebook}
{\ifbool{HTMLDebugComments}{\LWR@htmlcomment{Closing book}}{}}
\newcommand*{\LWR@printclosepart}
{\ifbool{HTMLDebugComments}{\LWR@htmlcomment{Closing part}}{}}
\newcommand*{\LWR@printclosechapter}
{\ifbool{HTMLDebugComments}{\LWR@htmlcomment{Closing chapter}}{}}
\newcommand*{\LWR@printclosesection}
{\ifbool{HTMLDebugComments}{\LWR@htmlcomment{Closing section}}{}}
\newcommand*{\LWR@printclosesubsection}
{\ifbool{HTMLDebugComments}{\LWR@htmlcomment{Closing subsection}}{}}
\newcommand*{\LWR@printclosesubsubsection}
{\ifbool{HTMLDebugComments}{\LWR@htmlcomment{Closing subsubsection}}{}}
\newcommand*{\LWR@printcloseparagraph}
{\ifbool{HTMLDebugComments}{\LWR@htmlcomment{Closing paragraph}}{}}
\newcommand*{\LWR@printclosesubparagraph}
{\ifbool{HTMLDebugComments}{\LWR@htmlcomment{Closing subparagraph}}{}}
\newcommand*{\LWR@printcloselistitem}
{\LWR@htmltag{/li}}
\newcommand*{\LWR@printclosedescitem}
{\LWR@htmltag{/dd}}
\newcommand*{\LWR@printcloseitemize}
{\LWR@htmltag{/ul}}
\newcommand*{\LWR@printcloseenumerate}
{\LWR@htmltag{/ol}}
\newcommand*{\LWR@printclosedescription}
{\LWR@htmltag{/dl}}
\end{warpHTML}
\begin{warpHTML}
\newcounter{LWR@spandepth}
\setcounter{LWR@spandepth}{0}
\newbool{LWR@doingstartpars}
\boolfalse{LWR@doingstartpars}
\newbool{LWR@doingapar}
\global\boolfalse{LWR@doingapar}
\newcommand*{\LWR@ensuredoingapar}{%
\ifbool{LWR@doingstartpars}%
{\global\booltrue{LWR@doingapar}}%
{}%
}
\def\PN@parnotes@auto{}%
\newcommand*{\LWR@openparagraph}
{%
\ifbool{LWR@doingstartpars}%
{% handling pars
\ifboolexpr{
test {\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}} or
test {\ifnumcomp{\value{LWR@spandepth}}{>}{0}}
}% nested par tags?
{}% no nested par tags
{% yes nest par tags
\PN@parnotes@auto%
\LWR@htmltagc{\LWR@tagregularparagraph}\LWR@orignewline%
\global\booltrue{LWR@doingapar}%
\let\par\LWR@closeparagraph%
}% end of yes nest par tags
}% end of handling pars
{}% not handling pars
}
\newcommand*{\LWR@closeparagraph@br}
{%
\ifboolexpr{
test {\ifnumcomp{\value{LWR@spandepth}}{>}{0}} and
test {\ifnumcomp{\value{LWR@lateximagedepth}}{=}{0}} and
not bool {LWR@intabularmetadata}
}%
{\unskip\LWR@htmltagc{br /}}%
{}%
}
\newcommand*{\LWR@closeparagraph}
{%
\ifbool{LWR@doingapar}%
{% handling pars
\ifboolexpr{
test {\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}} or
test {\ifnumcomp{\value{LWR@spandepth}}{>}{0}}
}%
{% no nested par tags
\LWR@closeparagraph@br%
}% no nested par tags
{% yes nest par tags
\@hspacer{\fill}% \hspace*{\fill}
\leavevmode\LWR@orignewline%
\LWR@htmltagc{/\LWR@tagregularparagraph}%
\global\boolfalse{LWR@doingapar}%
\global\boolfalse{LWR@minipagethispar}%
\PN@parnotes@auto%
}% end of yes nest par tags
}% end of handling pars
{% not handling pars
\LWR@closeparagraph@br%
}% not handling pars
\ifboolexpr{%
not bool {LWR@doingapar} and
test {\ifnumcomp{\value{LWR@tabulardepth}}{>}{0}} and
test {
\ifnumcomp{\value{LWR@tabulardepth}}{=}{\value{LWR@tabularpardepth}}
} and
bool {LWR@intabularmetadata} and
not bool {LWR@tableparcell} and
test {\ifnumcomp{\value{LWR@lateximagedepth}}{=}{0}}
}%
{%
\LWR@getmynexttoken%
}{%
\LWR@origpar%
}%
}
\end{warpHTML}
\begin{warpHTML}
\newcommand*{\LWR@startpars}%
{%
\ifboolexpr{
test {\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}} or
test {\ifnumcomp{\value{LWR@spandepth}}{>}{0}}
}%
{}%
{%
\ifbool{LWR@doingstartpars}%
{}%
{%
\PushPreHook{par}{\LWR@openparagraph}%
\let\par\LWR@closeparagraph
}% an intentionally blank line
\global\setbool{LWR@doingstartpars}{true}%
\global\boolfalse{LWR@doingapar}%
}% nestspan
}
\newcommand*{\LWR@stoppars}%
{%
\ifboolexpr{
test {\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}} or
test {\ifnumcomp{\value{LWR@spandepth}}{>}{0}}
}%
{}%
{%
\ifbool{LWR@doingapar}%
{%
\leavevmode\LWR@orignewline%
\LWR@htmltagc{/\LWR@tagregularparagraph}%
\LWR@orignewline%
\global\boolfalse{LWR@doingapar}%
\global\boolfalse{LWR@minipagethispar}
}%
{}%
\ifbool{LWR@doingstartpars}%
{\ClearPreHook{par}}%
{}%
\global\setbool{LWR@doingstartpars}{false}%
\global\boolfalse{LWR@doingapar}%
}% nestspan
}
\end{warpHTML}
\begin{warpHTML}
\AtBeginDocument{
\def\@afterindentfalse{\let\if@afterindent\iffalse}
\@afterindentfalse
}
\let\LWR@afterindent@syntaxhighlight\fi% syntax highlighting
\end{warpHTML}
\begin{warpall}
\newcommand{\LWR@firstpagetop}{} % for the home page alone
\newcommand{\LWR@firstpagebottom}{} % for the home page alone
\newcommand{\LWR@pagetop}{} % for all other pages
\newcommand{\LWR@pagebottom}{}
\newcommand{\HTMLFirstPageTop}[1]{%
\renewcommand{\LWR@firstpagetop}{#1}%
}
\newcommand{\HTMLFirstPageBottom}[1]{%
\renewcommand{\LWR@firstpagebottom}{#1}%
}
\newcommand{\HTMLPageTop}[1]{%
\renewcommand{\LWR@pagetop}{#1}%
}
\newcommand{\HTMLPageBottom}[1]{%
\renewcommand{\LWR@pagebottom}{#1}%
}
\end{warpall}
\begin{warpHTML}
\newcommand*{\LWR@currentcss}{lwarp.css}
\newcommand*{\CSSFilename}[1]{%
\renewcommand*{\LWR@currentcss}{#1}%
\@onelevel@sanitize\LWR@currentcss%
}
\end{warpHTML}
\begin{warpprint}
\newcommand*{\CSSFilename}[1]{}
\end{warpprint}
\begin{warpHTML}
\newcommand*{\LWR@mathjaxfilename}{lwarp_mathjax.txt}
\newcommand*{\MathJaxFilename}[1]{%
\renewcommand*{\LWR@mathjaxfilename}{#1}%
\@onelevel@sanitize\LWR@mathjaxfilename%
}
\end{warpHTML}
\begin{warpprint}
\newcommand*{\MathJaxFilename}[1]{}
\end{warpprint}
\begin{warpHTML}
\let\LWR@origtitle\title
\renewcommand*{\title}[1]{%
\LWR@origtitle{#1}%
\begingroup%
\renewcommand{\thanks}[1]{}%
\protected@xdef\thetitle{#1}%
\endgroup%
}
\end{warpHTML}
\begin{warpall}
\providecommand{\thetitle}{\BaseJobname}
\newcommand{\theHTMLTitle}{\thetitle}
\newcommand{\HTMLTitle}[1]{\renewcommand{\theHTMLTitle}{#1}}
\providecommand{\theauthor}{}
\newcommand{\theHTMLAuthor}{\theauthor}
\newcommand{\HTMLAuthor}[1]{\renewcommand{\theHTMLAuthor}{#1}}
\newcommand{\LWR@currentHTMLDescription}{}
\newcommand{\HTMLDescription}[1]{%
\renewcommand{\LWR@currentHTMLDescription}{#1}
}
\end{warpall}
\begin{warpall}
\newcounter{FootnoteDepth}
\setcounter{FootnoteDepth}{3}
\newcounter{footnoteReset}
\setcounter{footnoteReset}{0}
\end{warpall}
\begin{warpHTML}
\newbox\LWR@footnotebox
\long\def\@makefntext#1{\textsuperscript{\@thefnmark}~#1}
\def\@makefnmark{%
\textsuperscript{\@thefnmark}%
}
\long\def\LWR@@footnotetext#1#2{%
\LWR@traceinfo{LWR@footnotetext}%
\global\setbox\csname #2\endcsname=\vbox{%
\unvbox\csname #2\endcsname%
\protected@edef\@currentlabel{%
\csname p@footnote\endcsname\@thefnmark%
}% @currentlabel
\color@begingroup%
\LWR@disablepinyin%
\renewrobustcmd{\textsuperscript}[1]{\LWR@htmlspan{sup}{##1}}%
\ifthenelse{%
\boolean{LWR@doingstartpars} \AND%
\cnttest{\value{LWR@lateximagedepth}}{=}{0}%
}%
{}%
{\LWR@htmltagc{\LWR@tagregularparagraph}\LWR@orignewline}%
\@makefntext{#1}%
\ifthenelse{%
\boolean{LWR@doingstartpars} \AND%
\cnttest{\value{LWR@lateximagedepth}}{=}{0}%
}%
{\par}%
{%
\LWR@htmltagc{/\LWR@tagregularparagraph}%
\LWR@orignewline%
}%
\color@endgroup%
}% vbox
\LWR@ensuredoingapar%
}%
\long\def\LWR@footnotetext#1{\LWR@@footnotetext{#1}{LWR@footnotebox}}
\LetLtxMacro\@footnotetext\LWR@footnotetext
\newbox\LWR@mpfootnotes
\long\def\@mpfootnotetext#1{%
\LWR@traceinfo{@mpfootnotetext}%
\global\setbox\LWR@mpfootnotes\vbox{%
\unvbox\LWR@mpfootnotes%
\reset@font\footnotesize%
\hsize\columnwidth%
\@parboxrestore%
\protected@edef\@currentlabel%
{\csname p@mpfootnote\endcsname\@thefnmark}%
\color@begingroup%
\ifthenelse{%
\boolean{LWR@doingstartpars} \AND%
\cnttest{\value{LWR@lateximagedepth}}{=}{0}%
}%
{}%
{\LWR@htmltagc{\LWR@tagregularparagraph}\LWR@orignewline}%
\@makefntext{%
\ignorespaces#1%
}%
\ifthenelse{\cnttest{\value{LWR@lateximagedepth}}{>}{0}}%
{}%
{%
\leavevmode\LWR@orignewline%
\LWR@htmltagc{/\LWR@tagregularparagraph}%
\LWR@origpar%
}%
\color@endgroup%
}% vbox
\LWR@ensuredoingapar%
\LWR@traceinfo{@mpfootnotetext: done}%
}
\AtBeginDocument{
\def\thempfootnote{\@alph\c@mpfootnote}
}
\newcommand*{\LWR@@printpendingfootnotes}[1]{%
\expandafter\ifvoid\csname LWR@#1box\endcsname\else
\LWR@forcenewpage
\begin{BlockClass}{footnotes}
\null
\unvbox\csuse{LWR@#1box}
\setbox\csuse{LWR@#1box}=\vbox{}
\end{BlockClass}
\ifltxcounter{#1Reset}{%
\ifnumgreater{\value{#1Reset}}{0}{%
\setcounter{#1}{\value{#1Reset}}%
\addtocounter{#1}{-1}%
}{}%
}{}%
\fi
}
\newcommand*{\LWR@printpendingfootnotes}{%
\LWR@@printpendingfootnotes{footnote}%
}
\newcommand*{\LWR@maybeprintpendingfootnotes}[1]{%
\ifboolexpr{
not test{\ifnumcomp{#1}{>}{\value{FootnoteDepth}}} or
bool{FormatEPUB} or
bool{FormatWP}
}%
{\LWR@printpendingfootnotes}%
{}%
}
\newcommand*{\LWR@printpendingmpfootnotes}{%
\ifvoid\LWR@mpfootnotes\else
\LWR@forcenewpage
\begin{BlockClass}{footnotes}
\null
\unvbox\LWR@mpfootnotes
\setbox\LWR@mpfootnotes=\vbox{}
\end{BlockClass}
\fi
}
\end{warpHTML}
\begin{warpHTML}
\renewcommand{\marginpar}[2][]{%
\ifbool{FormatWP}%
{%
\begin{LWR@BlockClassWP}{width:2in; float:right; margin:10pt}{}{marginblock}
#2
\end{LWR@BlockClassWP}
}%
{%
\LWR@htmlspanclass{marginpar}{#2}%
}%
}
\newcommand{\marginparBlock}[2][]{%
\LWR@stoppars%
\ifbool{FormatWP}%
{%
\begin{LWR@BlockClassWP}{width:2in; float:right; margin:10pt}{}{marginblock}
#2
\end{LWR@BlockClassWP}
}{%
\begin{BlockClass}[width:2in; float:right; margin:10pt]{marginparblock}
#2
\end{BlockClass}
}%
\LWR@startpars%
}
\renewcommand*{\reversemarginpar}{}
\renewcommand*{\normalmarginpar}{}
\end{warpHTML}
\begin{warpprint}
\LetLtxMacro\marginparBlock\marginpar
\end{warpprint}
\begin{warpall}
\newcounter{FileDepth}
\setcounter{FileDepth}{-5}
\newbool{CombineHigherDepths}
\booltrue{CombineHigherDepths}
\newcommand*{\FilenameLimit}{80}
\end{warpall}
\begin{warpHTML}
\AtBeginDocument{
\ifbool{FileSectionNames}%
{\newcommand*{\LWR@thisfilename}{\HomeHTMLFilename}}
{\newcommand*{\LWR@thisfilename}{0}}
}
\newcommand*{\LWR@thisnewfilename}{}
\NewDocumentCommand{\LWR@simplifyname}{s m}{%
\IfBooleanTF{#1}{%
\StrSubstitute{\LWR@thisnewfilename}%
{\detokenize{#2}}%
{\detokenize{-}}[\LWR@thisnewfilename]%
}{%
\StrSubstitute{\LWR@thisnewfilename}%
{#2}%
{\detokenize{-}}[\LWR@thisnewfilename]%
}
}
\newcommand*{\LWR@simplifycustom}{}
\NewDocumentCommand{\FilenameSimplify}{s m}{%
\IfBooleanTF{#1}{%
\appto{\LWR@simplifycustom}{%
\LWR@simplifyname*{#2}%
}%
}{%
\appto{\LWR@simplifycustom}{%
\LWR@simplifyname{#2}%
}%
}%
}
\newcommand*{\LWR@avoiddupfilenames}{%
To avoid duplicate filenames, use the optional\MessageBreak
short Table of Contents entry:\MessageBreak
\space\space\protect\section[Unique name, no math]{Name with math}%
\MessageBreak
or use \protect\texorpdfstring, from the hyperref package:\MessageBreak
\space\space%
\protect\section{\MessageBreak
\space\space\space\space\protect\texorpdfstring\MessageBreak
\space\space\space\space\space\space%
{Name with math}{Unique name, no math}\MessageBreak
\space\space}
}
\newcommand*{\LWR@filenamenoblanks}[1]{%
\begingroup
\LWR@nullfonts%
\renewcommand*{\LWR@htmltagc}[1]{}%
\edef\LWR@thisnewfilename{#1}%
\RenewDocumentCommand{\LWR@subsingledollar}{s m m m}{}%
\LWR@simplifyname{\_}
\LWR@simplifyname{\#}
\LWR@simplifyname{\textbackslash}
\LWR@simplifyname{\protect}
\LWR@simplifyname{\ }
\LWR@simplifyname{\textless}
\LWR@simplifyname{\textgreater}
\edef\LWR@thisnewfilename{\detokenize\expandafter{\LWR@thisnewfilename}}%
\ifbool{FileSectionNames}{%
\IfSubStr{\LWR@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@avoiddupfilenames%
\MessageBreak
This section is found before or%
}
}{}%
}{}
\LWR@traceinfo{LWR@filenamenoblanks edef: !\LWR@thisnewfilename!}%
\fullexpandarg%
\LWR@simplifyname*{ }
\LWR@simplifyname*{*}
\LWR@simplifyname*{(}
\LWR@simplifyname*{)}
\LWR@simplifyname*{.}
\LWR@simplifyname*{!}
\LWR@simplifyname*{,}
\LWR@simplifyname*{'}
\LWR@simplifyname*{+}
\LWR@simplifyname*{/}
\LWR@simplifyname*{:}
\LWR@simplifyname*{;}
\LWR@simplifyname*{=}
\LWR@simplifyname*{?}
\LWR@simplifyname*{@}
\LWR@simplifyname*{^}
\LWR@simplifyname*{&}
\LWR@simplifyname*{"}
\LWR@simplifyname*{<}
\LWR@simplifyname*{>}
\LWR@simplifyname{\LWRbackslash}
\StrSubstitute{\LWR@thisnewfilename}%
{\LWRleftbrace}{}[\LWR@thisnewfilename]%
\StrSubstitute{\LWR@thisnewfilename}%
{\LWRrightbrace}{}[\LWR@thisnewfilename]%
\LWR@simplifyname{\LWRpercent}
\LWR@simplifyname{\LWRdollar}
\LWR@simplifyname*{|}
\LWR@simplifyname*{^}
\LWR@simplifyname*{~}
\LWR@simplifyname*{[}
\LWR@simplifyname*{]}
\LWR@simplifyname*{`}
\LWR@simplifyname*{-s-}
\LWR@simplifyname*{-S-}
\LWR@simplifyname*{-a-}
\LWR@simplifyname*{-A-}
\LWR@simplifyname*{-an-}
\LWR@simplifyname*{-AN-}
\LWR@simplifyname*{-to-}
\LWR@simplifyname*{-TO-}
\LWR@simplifyname*{-by-}
\LWR@simplifyname*{-BY-}
\LWR@simplifyname*{-of-}
\LWR@simplifyname*{-OF-}
\LWR@simplifyname*{-and-}
\LWR@simplifyname*{-AND-}
\LWR@simplifyname*{-for-}
\LWR@simplifyname*{-FOR-}
\LWR@simplifyname*{-the-}
\LWR@simplifyname*{-THE-}
\LWR@simplifycustom%
\ifPDFTeX% pdflatex or dvi latex
\ifdefstring{\inputencodingname}{utf8}{%
\LWR@simplifyname*{}
\LWR@simplifyname*{}
}{}%
\else% not PDFTeX
\LWR@simplifyname*{}
\LWR@simplifyname*{}
\fi%
\LWR@simplifyname*{-----}
\LWR@simplifyname*{----}
\LWR@simplifyname*{---}
\LWR@simplifyname*{--}
\IfBeginWith{\LWR@thisnewfilename}{\detokenize{-}}{%
\StrGobbleLeft{\LWR@thisnewfilename}{1}[\LWR@thisnewfilename]%
}{}%
\IfEndWith{\LWR@thisnewfilename}{\detokenize{-}}{%
\StrGobbleRight{\LWR@thisnewfilename}{1}[\LWR@thisnewfilename]%
}{}%
\StrLeft{\LWR@thisnewfilename}{\FilenameLimit}[\LWR@thisnewfilename]%
\global\let\LWR@thisfilename\LWR@thisnewfilename%
\endgroup%
\LWR@traceinfo{LWR@filenamenoblanks: result is \LWR@thisfilename}%
}
\newcounter{LWR@previousautopagelabel}
\setcounter{LWR@previousautopagelabel}{-1}
\newcommand*{\LWR@newautopagelabel}[1]{%
\ifnumequal{\value{LWR@previousautopagelabel}}{\value{page}}%
{}% no action if this autopage label has already been defined
{%
\label{\BaseJobname-autopage-\arabic{#1}}%
\setcounter{LWR@previousautopagelabel}{\value{page}}
}%
}
\bgroup
\catcode`!=3 \catcode`?=3
\long\gdef\LWR@replacestrings@addto#1#2{%
\expandafter\def\expandafter#1\expandafter{#1#2}%
}
\gdef\LWR@replacestrings#1#2{%
\long\def\LWR@replacestringsA##1#1{\def\tmpb{##1}\LWR@replacestringsB}%
\long\def\LWR@replacestringsB##1#1{%
\ifx!##1\relax \else\LWR@replacestrings@addto\tmpb{#2##1}%
\expandafter\LWR@replacestringsB\fi%
}% improved version <May 2016> inspired
\expandafter\LWR@replacestringsA\tmpb?#1!#1% from pysyntax.tex by Petr Krajnik
\long\def\LWR@replacestringsA##1?{%
\def\tmpb{##1}%
}\expandafter\LWR@replacestringsA\tmpb%
}
\egroup
\catcode`\#=12
\catcode`\&=12
\newcommand{\LWR@subHTMLsanitize}{%
\edef\tmpb{\detokenize\expandafter{\LWR@strresult}}%
\LWR@replacestrings{&}{&amp;}%
\LWR@replacestrings{<}{&lt;}%
\LWR@replacestrings{>}{&gt;}%
\LWR@replacestrings{"}{&quot;}%
\LWR@replacestrings{##}{#}%
\edef\LWR@strresult{\detokenize\expandafter{\tmpb}}%
}
\catcode`\#=6
\catcode`\&=4
\newrobustcmd{\LWR@HTMLsanitize}[1]{%
\begingroup%
\LWR@FBcancel%
\fullexpandarg%
\protect\StrSubstitute{\detokenize{#1}}%
{\detokenize{\&}}{\detokenize{&}}[\LWR@strresult]%
\LWR@subHTMLsanitize%
\LWR@strresult%
\endgroup%
}
\newrobustcmd{\LWR@HTMLsanitizeexpand}[1]{%
\begingroup%
\LWR@FBcancel%
\fullexpandarg%
\protect\StrSubstitute{\detokenize\expandafter{#1}}%
{\detokenize{\&}}{\detokenize{&}}[\LWR@strresult]%
\LWR@subHTMLsanitize%
\LWR@strresult%
\endgroup%
}
\newcommand*{\LWR@customizedMathJax}{}
\newbool{LWR@warnedcustomizemathjax}
\boolfalse{LWR@warnedcustomizemathjax}
\newcommand*{\LWR@subcustomizedmathjax}[1]{%
\begingroup%
\LWR@FBcancel%
\fullexpandarg%
\protect\StrSubstitute{\detokenize{#1}}%
{\detokenize{\&}}{\detokenize{&}}[\LWR@strresult]%
\LWR@subHTMLsanitize%
\xdef\LWR@customizedMathJax{%
\LWR@customizedMathJax%
\LWR@strresult%
}%
\endgroup%
}
\@onlypreamble\LWR@subcustomizedmathjax
\newcommand*{\CustomizeMathJax}[1]{%
\ifbool{LWR@warnedcustomizemathjax}{}{%
\StrLen{\detokenize{#1}}[\LWR@tempone]%
\ifnumgreater{\LWR@tempone}{200}{%
\AtEndDocument{%
\PackageWarningNoLine{lwarp}{%
To ensure faster MathJax compilation, place each\MessageBreak
custom macro in its own \protect\CustomizeMathJax.\MessageBreak
See the Lwarp documentation regarding customizing\MessageBreak
MathJax%
}%
}%
\booltrue{LWR@warnedcustomizemathjax}%
}{}%
}%
\appto\LWR@customizedMathJax{\LWRbackslash(}%
\LWR@subcustomizedmathjax{#1}%
\appto\LWR@customizedMathJax{\LWRbackslash)\par}%
}
\@onlypreamble\CustomizeMathJax
\newcommand*{\LWR@infoprocessingmathjax}[1]{%
\typeout{---}
\typeout{Package lwarp: Processing MathJax customizations for #1.}
\typeout{\space\space This may take a moment.}
\typeout{---}
}
\providecommand{\footnotename}{footnote}
\end{warpHTML}
\begin{warpMathJax}
\xdef\LWR@customizedMathJax{\LWR@customizedMathJax%
\LWRbackslash(%
\LWRbackslash{}newcommand%
\{\LWRbackslash{}footnotename\}%
\{\footnotename\}%
\LWRbackslash)\par%
}
\end{warpMathJax}
\begin{warpMathJax}
\CustomizeMathJax{\def\LWRfootnote{1}}
\CustomizeMathJax{\newcommand{\footnote}[2][\LWRfootnote]{{}^{\mathrm{#1}}}}
\CustomizeMathJax{\newcommand{\footnotemark}[1][\LWRfootnote]{{}^{\mathrm{#1}}}}
\end{warpMathJax}
\begin{warpMathJax}
\CustomizeMathJax{\newcommand\ensuremath[1]{#1}}
\CustomizeMathJax{% absorb two optional arguments
\newcommand{\LWRframebox}[2][]{\fbox{#2}}
\newcommand{\framebox}[1][]{\LWRframebox}
}
\CustomizeMathJax{\newcommand{\setlength}[2]{}}
\CustomizeMathJax{\newcommand{\addtolength}[2]{}}
\CustomizeMathJax{\newcommand{\setcounter}[2]{}}
\CustomizeMathJax{\newcommand{\addtocounter}[2]{}}
\CustomizeMathJax{\newcommand{\cline}[1]{}}
\CustomizeMathJax{\newcommand{\directlua}[1]{\text{(directlua)}}}
\CustomizeMathJax{\newcommand{\luatexdirectlua}[1]{\text{(directlua)}}}
\end{warpMathJax}
\begin{warpHTML}% due to warpMathJax
\newcommand{\LWR@customizeMathJax}{%
\ifbool{mathjax}{
\LWR@stoppars
\LWR@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@stoppars
\LWR@customizedMathJax
\LWR@startpars
\end{BlockClass}
\typeout{Done.}
\typeout{---}
\LWR@startpars
}{}
}
\end{warpHTML}
\begin{warpprint}
\newcommand*{\CustomizeMathJax}[1]{}
\NewDocumentCommand{\FilenameSimplify}{s m}{}
\end{warpprint}
\begin{warpHTML}
\newcommand*{\LWR@createfooter}{%
\ifnumless{\value{LWR@htmlseqfilenumber}}{1}{%
\ifdefempty{\LWR@firstpagebottom}{}{%
\LWR@htmlelement{footer}
\LWR@firstpagebottom
\LWR@htmlelementend{footer}
}%
}{%
\ifdefempty{\LWR@pagebottom}{}{%
\LWR@htmlelement{footer}
\LWR@pagebottom
\LWR@htmlelementend{footer}
}%
}%
}
\newcommand*{\LWR@newhtmlfile}[1]{
\LWR@traceinfo{LWR@newhtmlfile}
\LWR@htmlelementclassend{section}{textbody}
\LWR@htmlelementclassend{div}{bodycontainer}
\LWR@htmlelementclassend{div}{bodyandsidetoc}
\LWR@printpendingfootnotes
\ifbool{FormatEPUB}{}{\LWR@createfooter}
\ifthenelse{\boolean{FormatEPUB}\OR\boolean{FormatWP}}
{}
{\ifnumcomp{\value{LWR@htmlfilenumber}}{>}{0}{\LWR@botnavigation}{}}
\LWR@stoppars
\LWR@htmltag{/body}\LWR@orignewline
\LWR@htmltag{/html}\LWR@orignewline
\LWR@traceinfo{LWR@newhtmlfile: about to LWR@orignewpage}
\LWR@maybe@orignewpage
\addtocounter{LWR@htmlfilenumber}{1}%
\addtocounter{LWR@htmlseqfilenumber}{1}%
\ifbool{FileSectionNames}%
{%
\LWR@filenamenoblanks{#1}%
\edef\LWR@hashedname{\LWR@mdfive{\LWR@thisfilename}}%
\ifcsundef{LWR@filename\LWR@hashedname}{%
\csdef{LWR@filename\LWR@hashedname}{}%
}{%
\PackageError{lwarp}%
{%
The section name:\MessageBreak
``#1'',\MessageBreak
at the line number listed below,\MessageBreak
generates the filename\MessageBreak
``\LWR@thisfilename'',\MessageBreak
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%
}%
{%
\LWR@avoiddupfilenames%
}%
}%
}%
{\renewcommand*{\LWR@thisfilename}{\arabic{LWR@htmlfilenumber}}}
\LWR@traceinfo{LWR@newhtmlfile: about to print start file}%
\begingroup%
\LWR@nullfonts%
\LWR@htmlblockcomment{%
|Start file|%
\LWR@htmlsectionfilename{\LWR@thisfilename}|%
}
\endgroup%
\LWR@stoppars
\LWR@filestart[#1]
\setcounter{LWR@latestautopage}{\value{page}}%
\LWR@newautopagelabel{LWR@latestautopage}%
\ifthenelse{\boolean{FormatEPUB}\OR\boolean{FormatWP}}
{}
{\LWR@topnavigation}
\ifthenelse{\boolean{FormatEPUB}\OR\boolean{FormatWP}}
{}
{
\ifdefempty{\LWR@pagetop}{}{
\LWR@htmlelement{header}
\LWR@pagetop
\LWR@htmlelementend{header}
}
}
\LWR@htmlelementclass{div}{bodyandsidetoc}
\ifthenelse{\boolean{FormatEPUB}\OR\boolean{FormatWP}}
{}
{\LWR@sidetoc}
\LWR@htmlelementclass{div}{bodycontainer}
\LWR@htmlelementclass{section}{textbody}
\boolfalse{LWR@setseqfilelabel}
\ifthenelse{\boolean{FormatEPUB}\OR\boolean{FormatWP}}%
{}%
{%
\ifcsvoid{thetitle}{}{%
\LWR@printthetitle%
}%
}%
\LWR@stoppars
\LWR@customizeMathJax
\LWR@traceinfo{LWR@newhtmlfile: done}
}
\end{warpHTML}
\begin{warpHTML}
\newbool{LWR@forcinghtmlpage}
\boolfalse{LWR@forcinghtmlpage}
\newcommand*{\ForceHTMLPage}{%
\global\booltrue{LWR@forcinghtmlpage}%
}
\newbool{LWR@forcinghtmltoc}
\boolfalse{LWR@forcinghtmltoc}
\newcommand*{\ForceHTMLTOC}{%
\global\booltrue{LWR@forcinghtmltoc}%
}
\end{warpHTML}
\begin{warpprint}
\newcommand*{\ForceHTMLPage}{}
\newcommand*{\ForceHTMLTOC}{}
\end{warpprint}
\begin{warpHTML}
\newbool{LWR@mainmatter}
\DeclareDocumentCommand{\mainmatter}{}{%
\booltrue{LWR@mainmatter}%
}
\DeclareDocumentCommand{\frontmatter}{}{%
\boolfalse{LWR@mainmatter}%
}
\DeclareDocumentCommand{\backmatter}{}{%
\boolfalse{LWR@mainmatter}
}
\newcommand*{\LWR@sectionnumber}[1]{%
\InlineClass{sectionnumber}{#1}%
}
\newcommand*{\LWR@createautosec}[1]{%
\LWR@htmltag{%
#1 % space
id=\textquotedbl\LWR@print@mbox{autosec-\arabic{page}}\textquotedbl%
}%
}
\NewDocumentCommand{\LWR@pushoneclose}{m}{%
\LWR@traceinfo{LWR@pushoneclose #1}%
\LWR@pushclose{#1}%
}
\NewDocumentCommand{\LWR@startnewdepth}{m}{%
\LWR@closeprevious{#1}%
\LWR@pushoneclose{#1}%
}
\newcounter{LWR@prevFileDepth}
\setcounter{LWR@prevFileDepth}{\LWR@depthsubparagraph}
\def\@seccntformat#1{\csname the#1\endcsname\quad}
\newcommand*{\simplechapterdelim}{}
\let\@chapcntformat\@seccntformat
\let\@partcntformat\@seccntformat
\newcommand*{\@partnameformat}{\LWR@isolate{\partname}~}%
\newcommand*{\LWR@printchaptername}{%
\ifdefvoid{\chaptername}{}{\chaptername~}%
}
\newcounter{LWR@currentautosec}
\setcounter{LWR@currentautosec}{1}
\DeclareDocumentCommand{\LWR@section}{m m m m}{%
\IfValueTF{#2}%
{\LWR@traceinfo{LWR@section: starting #4 #2}}%
{\LWR@traceinfo{LWR@section: starting #4 #3}}%
\LWR@spanwarninvalid{section}%
\LWR@maybeprintpendingfootnotes{\csuse{LWR@depth#4}}%
\LWR@stoppars%
\LWR@startnewdepth{#4}%
\global\boolfalse{LWR@minipagethispar}%
\LWR@traceinfo{LWR@section: testing whether to start a new HTML file}%
\IfBooleanT{#1}{\LWR@traceinfo{LWR@section: starred}}%
\ifbool{LWR@forcinghtmlpage}{\LWR@traceinfo{LWR@section: forcinghtmlpage}}{}%
\ifthenelse{%
\(%
\(\NOT\equal{#1}{\BooleanTrue}\)\OR%
\(\cnttest{\@nameuse{LWR@depth#4}}{=}{\LWR@depthpart}\)\OR%
\(\boolean{LWR@forcinghtmlpage}\)%
\)%
\AND%
\cnttest{\@nameuse{LWR@depth#4}}{<=}{\value{FileDepth}}%
\AND%
\(%
\NOT\boolean{CombineHigherDepths}\OR%
\cnttest{\@nameuse{LWR@depth#4}}{<=}{\value{LWR@prevFileDepth}}%
\)%
\AND%
\(% phantomsection
\NOT\isempty{#3}%
\OR%
\(\NOT\equal{#1}{\BooleanTrue}\)%
\)%
}%
{% new file
\LWR@traceinfo{LWR@section: new HTML file}%
\IfNoValueTF{#2}%
{\LWR@newhtmlfile{#3}}%
{\LWR@newhtmlfile{#2}}%
}% new file
{% not new file
\LWR@traceinfo{LWR@section: not a new HTML file, about to LWR@orignewpage}%
\LWR@maybe@orignewpage%
}% not new file
\IfValueT{#3}{%
\LWR@traceinfo{LWR@section: about to LWR@setlatestname}%
\IfValueTF{#2}{\LWR@setlatestname{#2}}{\LWR@setlatestname{#3}}%
}%
\ifbool{HTMLDebugComments}{%
\begingroup%
\LWR@nullfonts%
\IfBooleanTF{#1}% starred
{\LWR@htmlcomment{Opening #4*}}%
{%
\IfNoValueTF{#2}% short TOC
{\LWR@htmlcomment{Opening #4 ``#3''}}%
{\LWR@htmlcomment{Opening #4 ``#2''}}%
}\LWR@orignewline%
\endgroup%
}{}
\ifthenelse{%
\cnttest{\@nameuse{LWR@depth#4}}{>=}{\LWR@depthparagraph}%
}%
{\LWR@startpars}%
{}%
\LWR@traceinfo{LWR@section: about to LWR@createautosec}%
\LWR@createautosec{\@nameuse{LWR@tag#4}}%
\setcounter{LWR@currentautosec}{\value{page}}%
\IfBooleanTF{#1}%
{%
\LWR@traceinfo{LWR@section: starred}%
\ifbool{LWR@forcinghtmltoc}%
{%
\addcontentsline{toc}{#4}{%
\IfValueTF{#2}{\LWR@isolate{#2}}{\LWR@isolate{#3}}%
}%
}%
{}%
}% starred
{% not starred
\ifthenelse{%
\cnttest{\@nameuse{LWR@depth#4}}{<=}{\value{secnumdepth}}%
}%
{% if secnumdepth
\LWR@traceinfo{LWR@section: about to test main matter}%
\ifbool{LWR@mainmatter}%
{%
\LWR@traceinfo{LWR@section: yes mainmatter}%
\refstepcounter{#4}%
\LWR@traceinfo{LWR@section: about to addcontentsline}%
\addcontentsline{toc}{#4}%
{%
\protect\numberline{%
\@nameuse{pre#4name}%
\@nameuse{the#4}%
\@nameuse{post#4name}%
}%
{%
\ignorespaces%
\IfValueTF{#2}{\LWR@isolate{#2}}{\LWR@isolate{#3}}\protect\relax%
}%
}%
\LWR@traceinfo{LWR@section: finished addcontentsline}%
}% end of if main matter
{% not main matter
\LWR@traceinfo{LWR@section: no main matter}%
\addcontentsline{toc}{#4}{%
\IfValueTF{#2}{\LWR@isolate{#2}}{\LWR@isolate{#3}}%
}%
}% end of not main matter
}% end of secnumdepth
{%
\addcontentsline{toc}{#4}{%
\IfValueTF{#2}{\LWR@isolate{#2}}{\LWR@isolate{#3}}%
}%
}%
\ifbool{LWR@mainmatter}%
{%
\ifthenelse{%
\(\cnttest{\@nameuse{LWR@depth#4}}{<=}%
{\value{secnumdepth}}\) \AND%
\(\cnttest{\@nameuse{LWR@depth#4}}{=}{\LWR@depthpart}\)%
}%
{\@partnameformat}%
{}%
\LWR@traceinfo{LWR@section: about to print section number}%
\ifthenelse{%
\cnttest{\@nameuse{LWR@depth#4}}{<=}{\value{secnumdepth}}%
}%
{%
\ifstrequal{#4}{part}%
{\protect\LWR@sectionnumber{\@partcntformat{#4}}}%
{%
\ifstrequal{#4}{chapter}%
{%
\LWR@printchaptername%
\protect\LWR@sectionnumber{\@chapcntformat{#4}}%
}%
{\protect\LWR@sectionnumber{\@seccntformat{#4}}}%
}%
}%
{}%
\LWR@traceinfo{LWR@section: finished print section number}%
}{}%
}% not starred
\LWR@traceinfo{LWR@section: about to print the section name}%
\LWR@isolate{#3}%
\LWR@traceinfo{LWR@section: about to close the heading tag}%
\LWR@htmltag{\@nameuse{LWR@tag#4end}}%
\LWR@orignewline%
\LWR@traceinfo{LWR@section: about to create the LaTeX label}%
\setcounter{LWR@latestautopage}{\value{page}}%
\LWR@newautopagelabel{LWR@currentautosec}\LWR@orignewline%
\ifbool{LWR@setseqfilelabel}{}{%
\label{\BaseJobname-autofile-\arabic{LWR@htmlseqfilenumber}}%
\booltrue{LWR@setseqfilelabel}%
}%
\ifthenelse{%
\cnttest{\@nameuse{LWR@depth#4}}{<}{\LWR@depthparagraph}%
}%
{\LWR@startpars}%
{}%
\ifthenelse{%
\NOT\equal{#1}{\BooleanTrue}\OR%
\cnttest{\@nameuse{LWR@depth#4}}{=}{\LWR@depthpart}%
}%
{% not starred
\setcounter{LWR@prevFileDepth}{\@nameuse{LWR@depth#4}}%
}% not starred
{}%
\ifstrempty{#3}%
{}%
{%
\global\boolfalse{LWR@forcinghtmlpage}%
\global\boolfalse{LWR@forcinghtmltoc}%
}%
\LWR@traceinfo{LWR@section: done}%
}
\providecommand*{\prebookname}{}
\providecommand*{\postbookname}{}
\providecommand*{\prepartname}{}
\providecommand*{\postpartname}{}
\providecommand*{\prechaptername}{}
\providecommand*{\postchaptername}{}
\providecommand*{\presectionname}{}
\let\postsectionname\presectionname
\let\presubsectionname\presectionname
\let\postsubsectionname\postsectionname
\let\presubsubsectionname\presectionname
\let\postsubsubsectionname\postsectionname
\let\preparagraphname\presectionname
\let\postparagraphname\postsectionname
\let\presubparagraphname\presectionname
\let\postsubparagraphname\postsectionname
\newcommand{\part@preamble}{}% for koma-script
\DeclareDocumentCommand{\part}{s d() o o d() m}{%
\LWR@section{#1}{#3}{#6}{part}%
\part@preamble% for koma-script
\renewcommand{\part@preamble}{}%
}
\let\@printcites\relax% for quotchap package
\newcommand{\chapter@preamble}{}% for koma-script
\@ifundefined{chapter}
{}
{%
\DeclareDocumentCommand{\chapter}{s d() o o d() m}{%
\LWR@section{#1}{#3}{#6}{chapter}%
\@printcites% for quotchap package
\chapter@preamble% for koma-script
\renewcommand{\chapter@preamble}{}%
}
}
\DeclareDocumentCommand{\section}{s d() o o d() m}{%
\LWR@section{#1}{#3}{#6}{section}%
}
\DeclareDocumentCommand{\subsection}{s d() o o d() m}{%
\LWR@section{#1}{#3}{#6}{subsection}%
}
\DeclareDocumentCommand{\subsubsection}{s d() o o d() m}{%
\LWR@section{#1}{#3}{#6}{subsubsection}%
}
\DeclareDocumentCommand{\paragraph}{s d() o o d() m}{%
\LWR@section{#1}{#3}{#6}{paragraph}%
}
\DeclareDocumentCommand{\subparagraph}{s d() o o d() m}{%
\LWR@section{#1}{#3}{#6}{subparagraph}%
}
\end{warpHTML}
\begin{warpall}
\newcommand*{\LWR@currentHTMLLanguage}{en-US}
\newcommand*{\HTMLLanguage}[1]{%
\renewcommand*{\LWR@currentHTMLLanguage}{#1}%
}
\ifPDFTeX% pdflatex or dvi latex
\ifdefstring{\inputencodingname}{utf8}{%
\newcommand*{\theHTMLTitleSeparator}{\ }% EMdash
}{%
\newcommand*{\theHTMLTitleSeparator}{ -\ }% hyphen
}%
\else%
\ifpTeX
\newcommand*{\theHTMLTitleSeparator}{ -\ }% hyphen
\else
\newcommand*{\theHTMLTitleSeparator}{\ }% EMdash
\fi%
\fi%
\newcommand*{\HTMLTitleBeforeSection}{%
\def\theHTMLTitleSection{%
\theHTMLTitle\theHTMLTitleSeparator\theHTMLSection%
}%
}
\newcommand*{\HTMLTitleAfterSection}{%
\def\theHTMLTitleSection{%
\theHTMLSection\theHTMLTitleSeparator\theHTMLTitle%
}%
}
\HTMLTitleBeforeSection
\newcommand*{\theHTMLSection}{}
\end{warpall}
\begin{warpHTML}
\newcommand*{\LWR@filestart}[1][]{%
\LWR@traceinfo{LWR@filestart !#1!}%
\begingroup%
\LWR@nullfonts%
\edef\theHTMLSection{#1}%
\StrSubstitute{\theHTMLSection}{\protect}{\detokenize{-}}[\theHTMLSection]
\StrSubstitute{\theHTMLSection}{\detokenize{-----}}{\detokenize{-}}[\theHTMLSection]
\StrSubstitute{\theHTMLSection}{\detokenize{----}}{\detokenize{-}}[\theHTMLSection]
\StrSubstitute{\theHTMLSection}{\detokenize{---}}{\detokenize{-}}[\theHTMLSection]
\StrSubstitute{\theHTMLSection}{\detokenize{--}}{\detokenize{-}}[\theHTMLSection]
\IfBeginWith{\theHTMLSection}{\detokenize{-}}{%
\StrGobbleLeft{\theHTMLSection}{1}[\theHTMLSection]%
}{}%
\LWR@htmltag{!DOCTYPE html}\LWR@orignewline
\LWR@htmltag{%
html lang=\LWR@orig@textquotedbl\LWR@currentHTMLLanguage\LWR@orig@textquotedbl%
}\LWR@orignewline
\LWR@htmltag{head}\LWR@orignewline
\LWR@htmltag{%
meta charset=\LWR@orig@textquotedbl{}UTF-8\LWR@orig@textquotedbl\ /%
}\LWR@orignewline
\ifthenelse{\equal{\theHTMLAuthor}{}}%
{}%
{%
\LWR@htmltag{%
meta name=\LWR@orig@textquotedbl{}author\LWR@orig@textquotedbl\ % space
content=\LWR@orig@textquotedbl\theHTMLAuthor\LWR@orig@textquotedbl\ /%
}\LWR@orignewline%
}%
\LWR@htmltag{%
meta % space
name=\LWR@orig@textquotedbl{}generator\LWR@orig@textquotedbl\ % space
content=\LWR@orig@textquotedbl{}LaTeX Lwarp package\LWR@orig@textquotedbl\ /%
}\LWR@orignewline%
\ifdefempty{\LWR@currentHTMLDescription}{}{%
\LWR@htmltag{%
meta name=\LWR@orig@textquotedbl{}description\LWR@orig@textquotedbl\ % space
content=\LWR@orig@textquotedbl\LWR@currentHTMLDescription\LWR@orig@textquotedbl\ /%
}\LWR@orignewline
}%
\LWR@htmltag{%
meta % space
name=\LWR@orig@textquotedbl{}viewport\LWR@orig@textquotedbl\ % space
content=\LWR@orig@textquotedbl{}width=device-width, initial-scale=1.0\LWR@orig@textquotedbl\ /%
}\LWR@orignewline
\LWR@htmltag{!-\/-[if lt IE 9]}\LWR@orignewline
\LWR@htmltag{%
script % space
src=\LWR@orig@textquotedbl{}%
http://html5shiv.googlecode.com/svn/trunk/html5.js%
\LWR@orig@textquotedbl%
}%
\LWR@htmltag{/script}\LWR@orignewline
\LWR@htmltag{![endif]-\/-}\LWR@orignewline
\ifthenelse{\equal{\theHTMLTitle}{}}%
{}%
{%
\LWR@htmltag{title}%
\ifdefempty{\theHTMLSection}%
{\theHTMLTitle}%
{\theHTMLTitleSection}%
\LWR@htmltag{/title}\LWR@orignewline%
}%
\LWR@htmltag{%
link % space
rel=\LWR@orig@textquotedbl{}stylesheet\LWR@orig@textquotedbl\ % space
type=\LWR@orig@textquotedbl{}text/css\LWR@orig@textquotedbl\ % space
href=\LWR@orig@textquotedbl\LWR@currentcss\LWR@orig@textquotedbl\ /%
}%
\LWR@orignewline
\ifbool{mathjax}%
{%
\begingroup%
\LWR@restoreoriglists%
\boolfalse{LWR@verbtags}%
\IfFileExists{\LWR@mathjaxfilename}%
{\verbatiminput{\LWR@mathjaxfilename}}%
{%
\PackageError{lwarp}%
{%
\protect\MathJaxFilename\space specified the file\MessageBreak
\space\space\LWR@mathjaxfilename\MessageBreak
which does not exist%
}%
{Specify an existing file, or remove \protect\MathJaxFilename.}%
}%
\booltrue{LWR@verbtags}%
\endgroup%
\LWR@stoppars%
}% end of mathjax
{}%
\LWR@htmltag{/head}\LWR@orignewline
\LWR@htmltag{body}\LWR@orignewline
\endgroup
\LWR@traceinfo{LWR@filestart: done}
}
\end{warpHTML}
\begin{warpHTML}
\catcode`\$=\active
\newcommand*{\LWR@LwarpStart}
{%
\LWR@traceinfo{LWR@lwarpStart}
\ifbool{FormatWP}{%
\setcounter{FileDepth}{-5}%
\boolfalse{HTMLDebugComments}%
}{}
\edef\LWR@strresult{\HomeHTMLFilename}
\edef\HomeHTMLFilename{\detokenize\expandafter{\LWR@strresult}}
\edef\LWR@strresult{\HTMLFilename}
\edef\HTMLFilename{\detokenize\expandafter{\LWR@strresult}}
\LWR@origonecolumn%
\LWR@origpagestyle{empty}%
\overfullrule=0pt
\LWR@print@footnotesize%
\LWR@print@raggedright%
\LetLtxMacro{\\}{\LWR@endofline}%
\linespread{1.3}%
\setlength{\parindent}{0pt}
\setlength{\parskip}{2ex}
\immediate\openout\LWR@lateximagesfile=\BaseJobname-images.txt
\setlength{\belowcaptionskip}{0ex}
\setlength{\abovecaptionskip}{0ex}
\renewcommand{\ps@plain}{}
\let\LWR@origcaption\caption
\global\boolfalse{LWR@doingapar}
\global\boolfalse{LWR@doingstartpars}
\mainmatter
\LWR@origpagenumbering{arabic}
\LWR@traceinfo{LWR@lwarpStart: Starting new file.}
\LWR@filestart
\LWR@traceinfo{LWR@lwarpStart: Generating first header.}
\ifdefempty{\LWR@firstpagetop}{}{%
\LWR@htmltag{header}\LWR@orignewline
\LWR@startpars
\LWR@firstpagetop
\LWR@stoppars
\LWR@htmltag{/header}\LWR@orignewline
}%
\LWR@htmlelementclass{div}{bodywithoutsidetoc}
\LWR@htmlelementclass{div}{bodycontainer}
\LWR@traceinfo{LWR@lwarpStart: Generating textbody.}
\LWR@htmlelementclass{section}{textbody}
\booltrue{LWR@setseqfilelabel}%
\label{\BaseJobname-autofile-\arabic{LWR@htmlseqfilenumber}}
\LWR@patchlists
\catcode`\$=\active
\immediate\write\@mainaux{\catcode`\string$\active}%
\LetLtxMacro\LWR@syntaxhighlightone$% balance for editor syntax highlighting
\LWR@startpars
\LWR@customizeMathJax
\setcounter{LWR@latestautopage}{\value{page}}%
\LWR@newautopagelabel{LWR@currentautosec}%
\LWR@traceinfo{LWR@lwarpStart: done}
}
\catcode`\$=3% math shift until lwarp starts
\end{warpHTML}
\begin{warpHTML}
\newcommand*{\LWR@requesttoc}[2]{%
\ifbool{#1}
{
\expandafter\newwrite\@nameuse{tf@#2}
\immediate\openout \@nameuse{tf@#2} \jobname.#2\relax
}{}
}
\newcommand*{\LWR@LwarpEnd}
{
\LWR@stoppars
\LWR@closeprevious{finished}
\label{\BaseJobname-autofile-last}
\LWR@htmlelementclassend{section}{textbody}
\LWR@htmlelementclassend{div}{bodycontainer}
\LWR@htmlelementclassend{div}{bodyandsidetoc}
\LWR@printpendingfootnotes
\ifbool{FormatEPUB}{}{\LWR@createfooter}
\ifthenelse{\boolean{FormatEPUB}\OR\boolean{FormatWP}}
{}
{
\ifnumcomp{\value{LWR@htmlfilenumber}}{>}{0}{\LWR@botnavigation}{}
}
\LWR@stoppars% final stop of all paragraphs
\LWR@htmltag{/body}\LWR@orignewline
\LWR@htmltag{/html}\LWR@orignewline
\LWR@maybe@orignewpage
}
\xpatchcmd{\enddocument}
{%
\if@tempswa
\@latex@warning@no@line{Label(s) may have changed.
Rerun to get cross-references right}%
\fi
}
{%
\if@tempswa
\@latex@warning@no@line{Label(s) may have changed.
Rerun to get cross-references right}%
\else
\immediate\write\LWR@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%
}
}
}
\end{warpHTML}
\begin{warpall}
\ifcsvoid{@titlepagefalse}{
\newif\if@titlepage
\@titlepagefalse
}{}
\end{warpall}
\begin{warpall}
\providerobustcmd{\affiliation}[1]{}
\end{warpall}
\begin{warpprint}
\AtBeginEnvironment{titlepage}{
\renewrobustcmd{\affiliation}[1]{\\ \textsc{\small#1}}
}
\AtBeginDocument{
\@ifpackageloaded{titling}{
\AtBeginEnvironment{titlingpage}{
\renewrobustcmd{\affiliation}[1]{\\ \textsc{\small#1}}
}
}{}% titling loaded
}% AtBeginDocument
\end{warpprint}
\begin{warpHTML}
\DeclareDocumentEnvironment{titlepage}{}
{
\renewrobustcmd{\affiliation}[1]{\\ \InlineClass{affiliation}{##1}}
\LWR@printpendingfootnotes
\LWR@forcenewpage
\BlockClass{titlepage}
}
{
\endBlockClass
\LWR@printpendingfootnotes
}
\end{warpHTML}
\begin{warpprint}
\newcommand*{\printthanks}{\@thanks}
\end{warpprint}
\begin{warpHTML}
\newcommand*{\printthanks}{\LWR@stoppars\@thanks\LWR@startpars}
\end{warpHTML}
\begin{warpHTML}
\newcommand*{\printtitle}
{%
\LWR@stoppars%
\LWR@htmltag{\LWR@tagtitle}%
\@title%
\LWR@htmltag{\LWR@tagtitleend}%
\LWR@startpars%
}
\newcommand*{\LWR@printthetitle}
{%
\LWR@stoppars%
\LWR@htmltag{\LWR@tagtitle}%
\thetitle%
\LWR@htmltag{\LWR@tagtitleend}%
\LWR@startpars%
}
\newcommand*{\printauthor}{
\begin{BlockClass}{author}
\renewcommand{\and}{%
\end{BlockClass}
\begin{BlockClass}{oneauthor}
}
\begin{BlockClass}{oneauthor}
\@author
\end{BlockClass}
\end{BlockClass}
}
\newcommand*{\printdate}{%
\begin{BlockClass}{titledate}
\@date
\end{BlockClass}
}
\end{warpHTML}
\begin{warpprint}
\newcommand*{\printtitle}{{\Huge\@title}}
\newcommand*{\printauthor}
{{\large\begin{tabular}[t]{c}\@author\end{tabular}}}
\newcommand*{\printdate}{{\small\textit{\@date}}}
\end{warpprint}
\begin{warpHTML}
\@ifclassloaded{memoir}
{
\newcommand{\LWR@setfootnoteseries}{%
\renewcommand\thefootnote{\@arabic\c@footnote}%
}
}{% not memoir
\if@titlepage
\newcommand{\LWR@setfootnoteseries}{%
\renewcommand\thefootnote{\@arabic\c@footnote}%
}
\else
\newcommand{\LWR@setfootnoteseries}{%
\renewcommand\thefootnote{\@fnsymbol\c@footnote}%
}
\fi
}% not memoir
\newcommand*{\LWR@maketitlesetup}{%
\LWR@setfootnoteseries%
\def\@makefnmark{\textsuperscript{\thefootnote}}
\long\def\@makefntext##1{%
\textsuperscript{\@thefnmark}~%
##1%
}%
}
\def\LWR@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@formatted{@fnsymbol}
\renewcommand*{\maketitle}{%
\begin{titlepage}
\LWR@maketitlesetup
\@maketitle
\LWR@stoppars\@thanks\LWR@startpars
\end{titlepage}
\setcounter{footnote}{0}%
\global\let\thanks\relax
\global\let\maketitle\relax
\global\let\@maketitle\relax
\global\let\@thanks\@empty
\global\let\@author\@empty
\global\let\@date\@empty
\global\let\@title\@empty
\global\let\title\relax
\global\let\author\relax
\global\let\date\relax
\global\let\and\relax
}
\DeclareDocumentCommand{\@maketitle}{}{%
\LWR@stoppars%
\LWR@htmltag{\LWR@tagtitle}%
\@title%
\LWR@htmltag{\LWR@tagtitleend}%
\LWR@startpars%
\begin{BlockClass}{author}%
\renewcommand*{\cr}{}%
\renewcommand*{\crcr}{}%
\renewcommand*{\noalign}{}%
\renewcommand{\and}{%
\end{BlockClass}%
\begin{BlockClass}{oneauthor}%
}%
\begin{BlockClass}{oneauthor}%
\@author%
\end{BlockClass}%
\end{BlockClass}%
\begin{BlockClass}{titledate}%
\@date%
\end{BlockClass}%
}
\newcommand*{\LWR@titlingmaketitle}{%
\LWR@stoppars\@thanks\LWR@startpars
\LWR@maketitlesetup
\@maketitle
\LWR@stoppars\@thanks\LWR@startpars
}
\end{warpHTML}
\begin{warpall}
\newcommand*{\AddSubtitlePublished}{%
\@ifpackageloaded{titling}{% yes titling package
\newcommand{\@published}{}%
\newcommand{\published}[1]{\gdef\@published{##1}}%
\renewcommand*{\maketitlehooka}{\printpublished}%
\newcommand*{\printpublished}{%
\warpprintonly{\begin{center}\unskip}%
\begin{BlockClass}{published}%
\warpprintonly{\large\itshape}%
\@published%
\end{BlockClass}%
\warpprintonly{\end{center}}%
}%
\newcommand{\@subtitle}{}%
\newcommand{\subtitle}[1]{\gdef\@subtitle{##1}}%
\renewcommand*{\maketitlehookb}{\printsubtitle}%
\newcommand*{\printsubtitle}{%
\warpprintonly{\begin{center}\unskip}%
\begin{BlockClass}{subtitle}%
\warpprintonly{\Large\itshape}%
\@subtitle%
\end{BlockClass}%
\warpprintonly{\end{center}}%
}%
}% yes titling package
{% no titling package
\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{warpall}
\begin{warpHTML}
\providecommand*{\abstractname}{Abstract}
\DeclareDocumentEnvironment{abstract}{O{\abstractname}}
{
\LWR@forcenewpage
\BlockClass{abstract}
\BlockClassSingle{abstracttitle}{#1}
}
{
\endBlockClass
}
\end{warpHTML}
\begin{warpall}
\newcommand{\attribution}[1]{
\begin{flushright}
\unskip
#1
\end{flushright}%
}
\end{warpall}
\begin{warpHTML}
\newcommand{\LWR@HTML@attribution}[1]{%
\LWR@stoppars%
\begin{BlockClass}{attribution}
#1
\end{BlockClass}
\LWR@startpars%
}
\LWR@formatted{attribution}
\end{warpHTML}
\begin{warpHTML}
\newenvironment*{LWR@HTML@quote}
{
\LWR@forcenewpage
\LWR@htmlblocktag{blockquote}
}
{\LWR@htmlblocktag{/blockquote}}
\LWR@formattedenv{quote}
\newenvironment*{LWR@HTML@quotation}
{
\LWR@forcenewpage
\LWR@htmlblocktag{blockquote}
}
{\LWR@htmlblocktag{/blockquote}}
\LWR@formattedenv{quotation}
\end{warpHTML}
\begin{warpHTML}
\newenvironment{LWR@HTML@verse}
{\let\\\newline% lwarp
\list{}{\itemsep \z@
\itemindent -1.5em%
\listparindent\itemindent
\rightmargin \leftmargin
\advance\leftmargin 1.5em}%
\item\relax}
{\endlist}
\LWR@formattedenv{verse}
\end{warpHTML}
\begin{warpall}
\newlength{\HTMLvleftskip}
\setlength{\HTMLvleftskip}{1em}
\newlength{\HTMLleftmargini}
\setlength{\HTMLleftmargini}{4.5em}
\end{warpall}
\begin{warpall}
\newlength{\VerbatimHTMLWidth}
\setlength{\VerbatimHTMLWidth}{4in}
\end{warpall}
\begin{warpHTML}
\newbool{LWR@verbtags}
\booltrue{LWR@verbtags}
\newcommand*{\LWR@atbeginverbatim}[3][]
{%
\setlength{\parskip}{0ex}%
\LWR@stoppars%
\ifbool{LWR@verbtags}{%
\LWR@htmltag{pre class=\textquotedbl#3\textquotedbl%
\ifthenelse{\equal{#1}{}}{}{ style=\textquotedbl#1\textquotedbl}%
}%
\LWR@orignewline% pre
\leavevmode\unskip\LWR@print@vspace*{-#2\baselineskip}%
}{}%
\begingroup%
\LWR@print@normalfont%
\LWR@origttfamily%
\LWR@print@small%
\LWR@restoreoriglists%
\LWR@FBcancel%
\LWR@select@print@hspace%
}
\newcommand*{\LWR@afterendverbatim}[1]{%
\endgroup%
\par%
\ifbool{LWR@verbtags}{%
\LWR@print@vspace*{-#1\baselineskip}%
\noindent\LWR@htmltag{/pre}\LWR@orignewline% pre
}{}%
\LWR@startpars%
}
\newcommand{\LWR@HTML@verbatim@input}[2]{%
\ifbool{LWR@verbtags}{\LWR@forcenewpage}{}%
\LWR@atbeginverbatim{2.5}{Verbatim}%
\LWR@print@verbatim@input{#1}{#2}%
\LWR@afterendverbatim{1.5}%
}
\LWR@formatted{verbatim@input}
\AfterEndPreamble{
\LWR@traceinfo{Patching verbatim.}
\AtBeginEnvironment{verbatim}{%
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
{}%
{%
\LWR@forcenewpage%
\LWR@atbeginverbatim{2.5}{verbatim}%
}%
}
\AfterEndEnvironment{verbatim}{%
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
{}%
{%
\LWR@afterendverbatim{1}%
}%
}
}
\newcommand*{\LWR@HTML@tabbing}{%
\LWR@forcenewpage%
\LWR@atbeginverbatim{3}{tabbing}%
\let\enskip\LWR@origenskip%
\let\quad\LWR@origquad%
\let\qquad\LWR@origqquad%
\let~\LWR@origtilde%
\let\,\LWR@origcomma%
\let\thinspace\LWR@origthinspace%
\let\negthinspace\LWR@orignegthinspace%
\LWR@print@tabbing%
}
\newcommand*{\LWR@HTML@endtabbing}{%
\LWR@print@endtabbing%
\LWR@afterendverbatim{1}%
}
\LWR@formatted{tabbing}
\LWR@formatted{endtabbing}
\end{warpHTML}
\begin{warpHTML}
\renewcommand{\@begintheorem}[2]{%
\LWR@forcenewpage
\BlockClass{theoremcontents}
\trivlist
\item[\InlineClass{theoremlabel}{#1\ #2\ }]\itshape
}
\renewcommand{\@opargbegintheorem}[3]{%
\LWR@forcenewpage
\BlockClass{theoremcontents}
\trivlist
\item[\InlineClass{theoremlabel}{#1\ #2\ (#3)\ }]\itshape
}
\renewcommand*{\@endtheorem}{%
\endtrivlist
\endBlockClass% theoremcontents
}
\end{warpHTML}
\begin{warpHTML}
\newcommand*{\LWR@printcloselist}{\LWR@printcloseitemize}
\newcommand*{\LWR@printopenlist}{ul style="\LWR@print@mbox{list-style-type:none}"}
\AtBeginDocument{
\def\@mklab#1{%
#1}
\let\makelabel\@mklab
}
\def\@donoparitem{%
\@noparitemfalse
}
\def\LWR@HTML@item[#1]{%
\LWR@traceinfo{@item}
\if@noparitem
\@donoparitem
\else
\par
\ifhmode
\par
\fi
\if@newlist
\if@nobreak
\@nbitem
\else
\fi
\else
\fi
\global\@inlabeltrue
\fi
\@minipagefalse
\global\@newlistfalse
\if@noitemarg
\@noitemargfalse
\if@nmbrlist
\refstepcounter\@listctr
\fi
\fi
\makelabel{#1} % extra space
\ignorespaces%
}
\def\@nbitem{%
}
\newcommand*{\LWR@listitem}{%
\LWR@stoppars%
\LWR@startnewdepth{listitem}%
\LWR@htmltag{li}%
\LWR@startpars%
\LWR@origitem%
}
\newcommand*{\LWR@nulllistfills}{%
\renewcommand*{\hss}{}%
\renewcommand*{\llap}[1]{##1}%
\renewcommand*{\rlap}[1]{##1}%
\renewcommand*{\hfil}{}%
\renewcommand*{\hfilneg}{}%
\renewcommand*{\hfill}{}%
}
\newcommand*{\LWR@liststart}{%
\LWR@traceinfo{LWR@liststart}%
\LWR@stoppars%
\LWR@pushoneclose{list}%
\LWR@htmltag{\LWR@printopenlist}\LWR@orignewline%
\LWR@startpars%
\setlength{\topsep}{0pt}%
\setlength{\partopsep}{0pt}%
\setlength{\itemsep}{0pt}%
\setlength{\parsep}{0pt}%
\setlength{\leftmargin}{0pt}%
\setlength{\rightmargin}{0pt}%
\setlength{\listparindent}{0pt}%
\setlength{\itemindent}{0pt}%
\setlength{\labelsep}{1em}%
\LWR@nulllistfills%
}
\newcommand*{\LWR@listend}{%
\LWR@traceinfo{LWR@listend}%
\LWR@stoppars%
\LWR@closeprevious{list}%
\LWR@startpars%
}
\newcommand*{\LWR@itemizeitem}{%
\LWR@stoppars%
\LWR@startnewdepth{listitem}%
\LWR@htmltag{li}%
\LWR@startpars%
\LWR@origitem%
}
\newcommand*{\LWR@itemizestart}{%
\renewcommand*{\LWR@printcloselist}{\LWR@printcloseitemize}
\renewcommand*{\LWR@printopenlist}{ul style="\LWR@print@mbox{list-style-type:none}"}
\let\item\LWR@itemizeitem%
\LWR@nulllistfills%
}
\newcommand*{\LWR@enumeratestart}{%
\renewcommand*{\LWR@printcloselist}{\LWR@printcloseitemize}
\renewcommand*{\LWR@printopenlist}{ul style="\LWR@print@mbox{list-style-type:none}"}
\let\item\LWR@itemizeitem%
\LWR@nulllistfills%
}
\newcommand*{\LWR@descitem}[1][]%
{%
\LWR@stoppars%
\LWR@setlatestname{#1}%
\LWR@startnewdepth{descitem}%
\begingroup%
\let\LWR@orig@desc@makelabel\makelabel
\renewcommand*{\makelabel}[1]{%
\LWR@htmltag{dt}%
\LWR@orig@desc@makelabel{#1}%
\LWR@htmltag{/dt}%
}
\LWR@select@html@nohspace%
\LWR@origitem[#1]%
\endgroup%
\LWR@orignewline%
\LWR@htmltag{dd}%
\LWR@startpars%
}
\newcommand*{\LWR@descriptionstart}{%
\renewcommand*{\LWR@printcloselist}{\LWR@printclosedescription}
\renewcommand*{\LWR@printopenlist}{dl}
\let\item\LWR@descitem%
\LWR@nulllistfills%
}
\newcommand*{\LWR@patchlists}{%
\LetLtxMacro\item\LWR@listitem%
\LetLtxMacro\@item\LWR@HTML@item%
\renewcommand*{\@trivlist}{%
\LWR@traceinfo{@trivlist start}%
\LWR@liststart%
\LWR@orig@trivlist%
\LWR@traceinfo{@trivlist done}%
}%
\renewcommand*{\trivlist}{%
\LWR@traceinfo{trivlist}%
\LWR@origtrivlist%
}%
\renewcommand*{\endtrivlist}{%
\LWR@traceinfo{endtrivlist start}%
\LWR@origendtrivlist\LWR@listend%
\LWR@traceinfo{endtrivlist done}%
}%
\renewcommand*{\itemize}{%
\LWR@itemizestart\LWR@origitemize%
}%
\renewcommand*{\enumerate}{%
\LWR@enumeratestart\LWR@origenumerate%
}%
\renewcommand*{\description}{%
\LWR@descriptionstart\LWR@origdescription%
}%
}
\newcommand*{\LWR@restoreoriglists}{%
\LWR@traceinfo{LWR@restoreoriglists}%
\LetLtxMacro\item\LWR@origitem%
\LetLtxMacro\@item\LWR@orig@item%
\let\@trivlist\LWR@orig@trivlist%
\let\trivlist\LWR@origtrivlist%
\let\endtrivlist\LWR@origendtrivlist%
\LetLtxMacro\itemize\LWR@origitemize%
\LetLtxMacro\enditemize\LWR@endorigitemize%
\LetLtxMacro\enumerate\LWR@origenumerate%
\LetLtxMacro\endenumerate\LWR@endorigenumerate%
\LetLtxMacro\description\LWR@origdescription%
\LetLtxMacro\enddescription\LWR@endorigdescription%
\let\@mklab\LWR@orig@mklab%
\let\makelabel\LWR@origmakelabel%
\let\@donoparitem\LWR@orig@donoparitem%
\let\@nbitem\LWR@orig@nbitem%
}
\end{warpHTML}
\begin{warpHTML}
\LetLtxMacro\hdashline\hline
\LetLtxMacro\cdashline\cline
\LetLtxMacro\firsthdashline\hline
\LetLtxMacro\lasthdashline\hline
\newcommand\LWR@mynexttoken\relax
\def\LWR@futurenonspacelet#1{\def\LWR@cs{#1}%
\afterassignment\LWR@fnslone\let\nexttoken= }
\def\LWR@fnslone{\expandafter\futurelet\LWR@cs\LWR@fnsltwo}
\def\LWR@fnsltwo{%
\expandafter\ifx\LWR@cs\@sptoken\let\next=\LWR@fnslthree%
\else\let\next=\nexttoken\fi\next}
\def\LWR@fnslthree{\afterassignment\LWR@fnslone\let\next= }
\newcommand*{\LWR@getmynexttoken}{%
\LWR@traceinfo{LWR@getmynexttoken}%
\LWR@futurenonspacelet\LWR@mynexttoken\LWR@tabledatacolumntag
}
\newbool{LWR@startedrow}
\boolfalse{LWR@startedrow}
\newbool{LWR@tabularcelladded}
\boolfalse{LWR@tabularcelladded}
\newcounter{LWR@hlines}
\newcounter{LWR@hdashedlines}
\newbool{LWR@doingtbrule}
\boolfalse{LWR@doingtbrule}
\newbool{LWR@doingcmidrule}
\boolfalse{LWR@doingcmidrule}
\newbool{LWR@tableparcell}
\newbool{LWR@skippingmrowcell}
\newbool{LWR@skippingmcolrowcell}
\newbool{LWR@usedmultirow}
\newbool{LWR@foundmrowcell}
\newbool{LWR@skipatbang}
\newbool{LWR@emptyatbang}
\newbool{LWR@intabularmetadata}
\boolfalse{LWR@intabularmetadata}
\newbool{LWR@exitingtabular}
\newbool{LWR@tabularmutemods}
\newbool{LWR@validtablecol}
\newbool{LWR@opttablecol}
\newbool{LWR@tdhavecellstyle}
\newcounter{LWR@tabulardepth}
\setcounter{LWR@tabulardepth}{0}
\newcounter{LWR@tabularpardepth}
\setcounter{LWR@tabularpardepth}{0}
\newcommand*{\LWR@colsresult}{}%temp storage for column format results
\newcommand*{\LWR@pposition}{}
\newcommand*{\LWR@pleft}{}
\newcommand*{\LWR@pright}{}
\providecommand*{\LWR@strresult}{}
\providecommand*{\LWR@strresulttwo}{}
\newcommand*{\LWR@origcolspec}{}
\newcounter{LWR@tablecolspecwidth}
\newcounter{LWR@tablecolspecindex}
\newcounter{LWR@tableLaTeXcolindex}
\newcounter{LWR@tabletotalLaTeXcols}
\newcounter{LWR@tabletotalLaTeXcolsnext}
\newcounter{LWR@cellcolordepth}
\newcounter{LWR@tablemulticolswidth}
\newcounter{LWR@tablemulticolspos}
\newcounter{LWR@mcolvertbarsl}
\newcounter{LWR@mcolvertbarsr}
\newcounter{LWR@mcolvertbarsldash}
\newcounter{LWR@mcolvertbarsrdash}
\newbool{LWR@mcolvertbaronleft}
\newbool{LWR@starredlongtable}
\boolfalse{LWR@starredlongtable}
\newcounter{LWR@midrulecounter}
\newcommand*{\LWR@insertatbangcols}{%
\ifbool{LWR@skipatbang}%
{}%
{%
\LWR@printatbang{at}{\arabic{LWR@tableLaTeXcolindex}}%
\LWR@printatbang{bang}{\arabic{LWR@tableLaTeXcolindex}}%
}%
}
\newcommand*{\LWR@closetabledatacell}{%
\booltrue{LWR@intabularmetadata}%
\ifbool{LWR@exitingtabular}%
{%
\LWR@stoppars%
}%
{% not exiting tabular
\ifboolexpr{bool{LWR@skippingmrowcell} or bool{LWR@skippingmcolrowcell}}%
{%
\LWR@stoppars%
\ifbool{LWR@skippingmcolrowcell}%
{}%
{\LWR@insertatbangcols}%
}%
{% not skippingmrowcell
\unskip%
\ifboolexpr{%
bool{LWR@tabularmutemods} or
bool{LWR@skipatbang} or
bool{LWR@emptyatbang}
}%
{}%
{%
\LWR@getexparray{LWR@colafterspec}%
{\arabic{LWR@tableLaTeXcolindex}}%
}%
\LWR@stoppars%
\boolfalse{LWR@tableparcell}%
\whileboolexpr{test {\ifnumcomp{\value{LWR@cellcolordepth}}{>}{0}}}{%
\LWR@htmltag{/div}\LWR@orignewline%
\defaddtocounter{LWR@cellcolordepth}{-1}%
}%
\leavevmode\unskip\LWR@htmltag{/td}\LWR@orignewline%
\global\booltrue{LWR@tabularcelladded}%
\LWR@insertatbangcols%
}% not skipping mrowcell
}% not exiting tabular
\boolfalse{LWR@skippingmrowcell}%
\boolfalse{LWR@skippingmcolrowcell}%
\boolfalse{LWR@skipatbang}%
\def\LWR@cellHTMLcolor{}%
\def\LWR@columnHTMLcolor{}%
\defcounter{LWR@cellcolordepth}{0}%
}
\let\LWR@origampmacro&
\end{warpHTML}
\begin{warpHTML}
\newcommand*{\LWR@tabularampersand}{%
\LWR@traceinfo{LWR@tabularampersand}%
\ifnumcomp{\value{LWR@tabulardepth}}{>}{0}%
{%
\unskip%
\LWR@closetabledatacell%
\defaddtocounter{LWR@tableLaTeXcolindex}{1}%
\global\boolfalse{LWR@tabularcelladded}%
\LWR@getmynexttoken%
}%
{%
\LWR@origampmacro%
}%
}
\newcommand*{\LWR@tabularfinishrow}{%
\ifboolexpr{%
not bool {LWR@exitingtabular} or%
bool{LWR@doingtbrule} or%
bool{LWR@doingcmidrule} or%
test{\ifnumcomp{\value{LWR@hlines}}{>}{0}} or%
test{\ifnumcomp{\value{LWR@hdashedlines}}{>}{0}} or%
bool{LWR@startedrow}%
}{%
\ifbool{LWR@exitingtabular}{%
\booltrue{LWR@tabularmutemods}%
}{%
\boolfalse{LWR@tabularmutemods}%
}%
\boolfalse{LWR@exitingtabular}%
\whileboolexpr{%
test {
\ifnumcomp{\value{LWR@tableLaTeXcolindex}}{<}
{\value{LWR@tabletotalLaTeXcols}}
} or %
(%
bool{LWR@intabularmetadata} and%
not bool{LWR@tabularcelladded} and%
test {
\ifnumcomp{\value{LWR@tableLaTeXcolindex}}{=}
{\value{LWR@tabletotalLaTeXcols}}
}%
)%
}%
{%
\LWR@tabledatasinglecolumntag%
\LWR@closetabledatacell%
\defaddtocounter{LWR@tableLaTeXcolindex}{1}%
\global\boolfalse{LWR@tabularcelladded}%
\booltrue{LWR@emptyatbang}%
\ifnumcomp{\value{LWR@tableLaTeXcolindex}}{<}
{\value{LWR@tabletotalLaTeXcols}}%
{\LWR@getmynexttoken}%
{}%
}%
\ifbool{LWR@tabularmutemods}{%
\booltrue{LWR@exitingtabular}%
}{%
\boolfalse{LWR@exitingtabular}%
}%
\boolfalse{LWR@tabularmutemods}%
\boolfalse{LWR@emptyatbang}%
}{}% ifboolexpr
}
\NewDocumentCommand{\LWR@tabularendofline}{s o}{%
\ifnumcomp{\value{LWR@tableLaTeXcolindex}}{<}
{\value{LWR@tabletotalLaTeXcols}}%
{\LWR@tabularfinishrow}%
{\LWR@closetabledatacell}%
\LWR@htmltag{/tr}\LWR@orignewline%
\@rowc@lors%
\booltrue{LWR@intabularmetadata}%
\boolfalse{LWR@startedrow}%
\defcounter{LWR@hlines}{0}%
\defcounter{LWR@hdashedlines}{0}%
\boolfalse{LWR@doingtbrule}%
\boolfalse{LWR@doingcmidrule}%
\LWR@clearmidrules%
\def\LWR@rowHTMLcolor{}%
\defcounter{LWR@tableLaTeXcolindex}{1}%
\global\boolfalse{LWR@tabularcelladded}%
\LWR@stoppars%
\LWR@origpar%
\LWR@getmynexttoken%
}
\newcommand*{\LWR@columnspeclookahead}[1]{%
\setcounter{LWR@tempcountone}{\value{LWR@tablecolspecindex}}%
\addtocounter{LWR@tempcountone}{#1}%
\fullexpandarg%
\StrChar{\LWR@origcolspec}{\arabic{LWR@tempcountone}}[\LWR@strresulttwo]%
\exploregroups%
\StrChar{\LWR@strresulttwo}{1}[\LWR@strresulttwo]%
\noexploregroups%
}
\newcommand*{\LWR@colparameter}{}
\newcommand*{\LWR@parseatcolumn}{%
\LWR@traceinfo{at column}%
\defaddtocounter{LWR@tablecolspecindex}{1}%
\LWR@traceinfo{about to read the next token:}%
\expandarg%
\StrChar{\LWR@origcolspec}%
{\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]%
\fullexpandarg%
\LWR@traceinfo{have now read the next token}%
\ifnumcomp{\value{LWR@tabletotalLaTeXcols}}{=}{0}%
{% left edge of the table:
\LWR@traceinfo{at the left edge}%
\LWR@setexparray{LWR@colatspec}%
{leftedge}%
{\expandafter\@firstofone\LWR@colparameter}%
\LWR@traceinfo{at the left edge: %
\LWR@getexparray{LWR@colatspec}{leftedge}}%
}%
{% not at the left edge:
\LWR@traceinfo{not at the left edge}%
\LWR@setexparray{LWR@colatspec}%
{\arabic{LWR@tabletotalLaTeXcols}}%
{\expandafter\@firstofone\LWR@colparameter}%
\LWR@traceinfo{at \arabic{LWR@tabletotalLaTeXcols}: %
\LWR@getexparray{LWR@colatspec}{\arabic{LWR@tabletotalLaTeXcols}}}%
}%
\let\LWR@colparameter\relax%
\booltrue{LWR@validtablecol}%
}
\newcommand*{\LWR@parsebangcolumn}{%
\LWR@traceinfo{bang column}%
\defaddtocounter{LWR@tablecolspecindex}{1}%
\LWR@traceinfo{about to read the next token:}%
\expandarg%
\StrChar{\LWR@origcolspec}%
{\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]%
\fullexpandarg%
\LWR@traceinfo{have now read the next token}%
\ifnumcomp{\value{LWR@tabletotalLaTeXcols}}{=}{0}%
{% left edge of the table:
\LWR@traceinfo{at the left edge}%
\LWR@setexparray{LWR@colbangspec}%
{leftedge}%
{\expandafter\@firstofone\LWR@colparameter}%
}%
{% not at the left edge:
\LWR@traceinfo{not at the left edge}%
\LWR@setexparray{LWR@colbangspec}%
{\arabic{LWR@tabletotalLaTeXcols}}%
{\expandafter\@firstofone\LWR@colparameter}%
\LWR@traceinfo{bang \arabic{LWR@tabletotalLaTeXcols}: \LWR@colparameter!}%
}%
\let\LWR@colparameter\relax%
\booltrue{LWR@validtablecol}%
}
\newcommand*{\LWR@parsebeforecolumn}{%
\defaddtocounter{LWR@tablecolspecindex}{1}%
\expandarg%
\StrChar{\LWR@origcolspec}%
{\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]%
\fullexpandarg%
\LWR@setexparray{LWR@colbeforespec}%
{\arabic{LWR@tabletotalLaTeXcolsnext}}%
{\expandafter\@firstofone\LWR@colparameter}%
\let\LWR@colparameter\relax%
\booltrue{LWR@validtablecol}%
}
\newcommand*{\LWR@parseaftercolumn}{%
\defaddtocounter{LWR@tablecolspecindex}{1}%
\expandarg%
\StrChar{\LWR@origcolspec}%
{\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]%
\fullexpandarg%
\LWR@setexparray{LWR@colafterspec}%
{\arabic{LWR@tabletotalLaTeXcols}}%
{\expandafter\@firstofone\LWR@colparameter}%
\let\LWR@colparameter\relax%
\booltrue{LWR@validtablecol}%
}
\newcommand*{\LWR@parsebarcolumn}{%
\LWR@traceinfo{LWR@parsebarcolumn}%
\ifnumcomp{\value{LWR@tabletotalLaTeXcols}}{=}{0}%
{% left edge of the table:
\edef\LWR@tempone{\LWR@getexparray{LWR@colbarspec}{leftedge}}%
\ifdefstring{\LWR@tempone}{tvertbarl}%
{\LWR@setexparray{LWR@colbarspec}{leftedge}{tvertbarldouble}}%
{\LWR@setexparray{LWR@colbarspec}{leftedge}{tvertbarl}}%
}%
{% not at the left edge:
\edef\LWR@tempone{%
\LWR@getexparray{LWR@colbarspec}{\arabic{LWR@tabletotalLaTeXcols}}%
}%
\ifdefstring{\LWR@tempone}{tvertbarr}%
{%
\LWR@setexparray{LWR@colbarspec}%
{\arabic{LWR@tabletotalLaTeXcols}}{tvertbarrdouble}%
}%
{%
\LWR@setexparray{LWR@colbarspec}%
{\arabic{LWR@tabletotalLaTeXcols}}{tvertbarr}%
}%
}%
\booltrue{LWR@validtablecol}%
}
\newcommand*{\LWR@parsecoloncolumn}{%
\LWR@traceinfo{LWR@parsecoloncolumn}%
\ifnumcomp{\value{LWR@tabletotalLaTeXcols}}{=}{0}%
{% left edge of the table:
\edef\LWR@tempone{\LWR@getexparray{LWR@colbarspec}{leftedge}}%
\ifdefstring{\LWR@tempone}{tvertbarldash}%
{\LWR@setexparray{LWR@colbarspec}{leftedge}{tvertbarldoubledash}}%
{\LWR@setexparray{LWR@colbarspec}{leftedge}{tvertbarldash}}%
}%
{% not at the left edge:
\edef\LWR@tempone{%
\LWR@getexparray{LWR@colbarspec}{\arabic{LWR@tabletotalLaTeXcols}}%
}%
\ifdefstring{\LWR@tempone}{tvertbarrdash}%
{\LWR@setexparray{LWR@colbarspec}%
{\arabic{LWR@tabletotalLaTeXcols}}{tvertbarrdoubledash}}%
{\LWR@setexparray{LWR@colbarspec}%
{\arabic{LWR@tabletotalLaTeXcols}}{tvertbarrdash}}%
}%
\booltrue{LWR@validtablecol}%
}
\newcommand*{\LWR@parsesemicoloncolumn}{%
\LWR@parsecoloncolumn%
\defaddtocounter{LWR@tablecolspecindex}{1}%
}
\newcommand*{\LWR@parsenormalcolumn}[1]{%
\defaddtocounter{LWR@tabletotalLaTeXcols}{1}%
\defaddtocounter{LWR@tabletotalLaTeXcolsnext}{1}%
\LWR@setexparray{LWR@tablecolspec}{\arabic{LWR@tabletotalLaTeXcols}}{#1}%
\LWR@traceinfo{normal column \arabic{LWR@tabletotalLaTeXcols}: #1}%
\LWR@setexparray{LWR@colatspec}{\arabic{LWR@tabletotalLaTeXcolsnext}}{}%
\LWR@setexparray{LWR@colbangspec}{\arabic{LWR@tabletotalLaTeXcolsnext}}{}%
\LWR@setexparray{LWR@colbeforespec}{\arabic{LWR@tabletotalLaTeXcolsnext}}{}%
\LWR@setexparray{LWR@colafterspec}{\arabic{LWR@tabletotalLaTeXcolsnext}}{}%
\LWR@setexparray{LWR@colbarspec}{\arabic{LWR@tabletotalLaTeXcolsnext}}{}%
\booltrue{LWR@validtablecol}%
}
\newcommand*{\LWR@parsepcolumn}[1]{%
\LWR@parsenormalcolumn{#1}%
\defaddtocounter{LWR@tablecolspecindex}{1}%
}
\newcommand*{\LWR@parsewcolumn}{%
\LWR@columnspeclookahead{1}%
\expandafter\LWR@parsenormalcolumn\expandafter{\LWR@strresulttwo}%
\defaddtocounter{LWR@tablecolspecindex}{2}%
}
\newcommand*{\LWR@parsestarcolumn}{%
\defaddtocounter{LWR@tablecolspecindex}{2}%
}
\newcommand*{\LWR@parseDcolumn}[1]{%
\LWR@parsenormalcolumn{#1}%
\defaddtocounter{LWR@tablecolspecindex}{3}%
}
\newcount\LWR@starcount
\newcommand*{\LWR@expcolspec}{}
\newcounter{LWR@splitstarindex}
\newcounter{LWR@splitstarcopies}
\newcommand*{\LWR@splitstarcontents}{}
\newcommand*{\expandcolspec}{%
\StrPosition{\LWR@origcolspec}{*}[\LWR@tempone]%
\whileboolexpr{ test {\ifnumgreater{\LWR@tempone}{0}}}%
{%
\setcounter{LWR@splitstarindex}{\LWR@tempone}%
\addtocounter{LWR@splitstarindex}{-1}%
\StrLeft{\LWR@origcolspec}{\value{LWR@splitstarindex}}[\LWR@expcolspec]%
\addtocounter{LWR@splitstarindex}{2}%
\StrChar{\LWR@origcolspec}{\value{LWR@splitstarindex}}[\LWR@tempone]%
\setcounter{LWR@splitstarcopies}{\expandafter\@firstofone\LWR@tempone}%
\addtocounter{LWR@splitstarindex}{1}%
\StrChar{\LWR@origcolspec}{\value{LWR@splitstarindex}}[\LWR@splitstarcontents]%
\ifnumgreater{\value{LWR@splitstarcopies}}{0}%
{%
\LWR@starcount=\value{LWR@splitstarcopies}%
\loop
\appto\LWR@expcolspec{%
\expandafter\@firstofone\LWR@splitstarcontents%
}%
\advance \LWR@starcount -1
\ifnum \LWR@starcount>0 \repeat
}{}%
\StrGobbleLeft{\LWR@origcolspec}{\value{LWR@splitstarindex}}[\colspecremainder]%
\appto{\LWR@expcolspec}{\colspecremainder}%
\edef\LWR@origcolspec{\LWR@expcolspec}%
\StrPosition{\LWR@origcolspec}{*}[\LWR@tempone]%
}%
}
\newcommand*{\LWR@parsetablecols}[1]{%
\LWR@traceinfo{LWR@parsetablecols}%
\renewcommand*{\LWR@origcolspec}{#1}%
\expandarg%
\StrSubstitute{\LWR@origcolspec}{ }{}[\LWR@origcolspec]%
\expandcolspec%
\defcounter{LWR@tabletotalLaTeXcols}{0}%
\defcounter{LWR@tabletotalLaTeXcolsnext}{1}%
\LWR@setexparray{LWR@colatspec}{leftedge}{}%
\LWR@setexparray{LWR@colatspec}{1}{}%
\LWR@setexparray{LWR@colatspec}{2}{}%
\LWR@setexparray{LWR@colatspec}{3}{}%
\LWR@setexparray{LWR@colbangspec}{leftedge}{}%
\LWR@setexparray{LWR@colbangspec}{1}{}%
\LWR@setexparray{LWR@colbangspec}{2}{}%
\LWR@setexparray{LWR@colbangspec}{3}{}%
\LWR@setexparray{LWR@colbeforespec}{1}{}%
\LWR@setexparray{LWR@colbeforespec}{2}{}%
\LWR@setexparray{LWR@colbeforespec}{3}{}%
\LWR@setexparray{LWR@colafterspec}{1}{}%
\LWR@setexparray{LWR@colafterspec}{2}{}%
\LWR@setexparray{LWR@colafterspec}{3}{}%
\LWR@setexparray{LWR@colbarspec}{leftedge}{}%
\LWR@setexparray{LWR@colbarspec}{1}{}%
\LWR@setexparray{LWR@colbarspec}{2}{}%
\LWR@setexparray{LWR@colbarspec}{3}{}%
\defcounter{LWR@tablecolspecindex}{1}%
\expandarg%
\StrLen{\LWR@origcolspec}[\LWR@strresult]%
\fullexpandarg%
\LWR@traceinfo{original column spec length: \LWR@strresult}%
\defcounter{LWR@tablecolspecwidth}{\LWR@strresult}%
\boolfalse{LWR@opttablecol}%
\whileboolexpr{%
not test{%
\ifnumcomp{\value{LWR@tablecolspecindex}}{>}%
{\value{LWR@tablecolspecwidth}}%
}%
}%
{%
\expandarg%
\StrChar{\LWR@origcolspec}{\arabic{LWR@tablecolspecindex}}[\LWR@strresult]%
\LWR@traceinfo{position \arabic{LWR@tablecolspecindex}: \LWR@strresult}%
\fullexpandarg%
\boolfalse{LWR@validtablecol}%
\IfStrEq{\LWR@strresult}{[}{\booltrue{LWR@opttablecol}}{}%
\ifbool{LWR@opttablecol}%
{}% inside an optional argument
{% not an optional tabular argument
\IfStrEq{\LWR@strresult}{l}{\LWR@parsenormalcolumn{l}}{}%
\IfStrEq{\LWR@strresult}{c}{\LWR@parsenormalcolumn{c}}{}%
\IfStrEq{\LWR@strresult}{r}{\LWR@parsenormalcolumn{r}}{}%
\IfStrEq{\LWR@strresult}{L}{\LWR@parsenormalcolumn{l}}{}%
\IfStrEq{\LWR@strresult}{C}{\LWR@parsenormalcolumn{c}}{}%
\IfStrEq{\LWR@strresult}{R}{\LWR@parsenormalcolumn{r}}{}%
\IfStrEq{\LWR@strresult}{J}{\LWR@parsenormalcolumn{l}}{}%
\IfStrEq{\LWR@strresult}{S}{\LWR@parsenormalcolumn{c}}{}%
\IfStrEq{\LWR@strresult}{s}{\LWR@parsenormalcolumn{c}}{}%
\IfStrEq{\LWR@strresult}{\detokenize{@}}{\LWR@parseatcolumn}{}%
\IfStrEq{\LWR@strresult}{!}{\LWR@parsebangcolumn}{}%
\IfStrEq{\LWR@strresult}{>}{\LWR@parsebeforecolumn}{}%
\IfStrEq{\LWR@strresult}{<}{\LWR@parseaftercolumn}{}%
\IfStrEq{\LWR@strresult}{|}{\LWR@parsebarcolumn}{}%
\IfStrEq{\LWR@strresult}{:}{\LWR@parsecoloncolumn}{}%
\IfStrEq{\LWR@strresult}{;}{\LWR@parsesemicoloncolumn}{}%
\IfStrEq{\LWR@strresult}{p}{\LWR@parsepcolumn{p}}{}%
\IfStrEq{\LWR@strresult}{m}{\LWR@parsepcolumn{m}}{}%
\IfStrEq{\LWR@strresult}{b}{\LWR@parsepcolumn{b}}{}%
\IfStrEq{\LWR@strresult}{w}{\LWR@parsewcolumn}{}%
\IfStrEq{\LWR@strresult}{W}{\LWR@parsewcolumn}{}%
\IfStrEq{\LWR@strresult}{*}{\LWR@parsestarcolumn}{}%
\IfStrEq{\LWR@strresult}{D}{\LWR@parseDcolumn{c}}{}%
\IfStrEq{\LWR@strresult}{X}{\LWR@parsenormalcolumn{X}}{}%
\IfStrEq{\LWR@strresult}{P}{\LWR@parsepcolumn{P}}{}%
\IfStrEq{\LWR@strresult}{M}{\LWR@parsepcolumn{M}}{}%
\IfStrEq{\LWR@strresult}{B}{\LWR@parsepcolumn{B}}{}%
\ifbool{LWR@validtablecol}{}{%
\LWR@traceinfo{invalid column type: \LWR@strresult}%
\LWR@parsenormalcolumn{l}%
}%
}% not an optional column argument
\IfStrEq{\LWR@strresult}{]}{\boolfalse{LWR@opttablecol}}{}%
\defaddtocounter{LWR@tablecolspecindex}{1}%
}% whiledo
}%
\@ifundefined{rownum}{\newcount\rownum}{}
\newcommand*{\@rowcolors}{}
\newcommand*{\@rowc@lors}{}
\newcommand*{\LWR@xcolorrowHTMLcolor}{}
\def\LWR@columnHTMLcolor{}
\def\LWR@rowHTMLcolor{}
\def\LWR@cellHTMLcolor{}
\newcommand*{\LWR@ruleHTMLcolor}{}
\newcommand*{\rowcolor}{\LWR@getmynexttoken}%
\newcommand{\arrayrulecolor}[2][named]{}
\newcommand{\arrayrulecolornexttoken}[2][named]{\LWR@getmynexttoken}
\newcommand{\doublerulesepcolor}[2][named]{}
\newcommand{\doublerulesepcolornexttoken}[2][named]{\LWR@getmynexttoken}
\newcommand*{\LWR@maybenewtablerow}
{%
\ifbool{LWR@startedrow}%
{}% started the row
{% not started the row
\booltrue{LWR@startedrow}%
\booltrue{LWR@intabularmetadata}%
\ifboolexpr{%
test{\ifnumcomp{\value{LWR@hlines}}{>}{0}} or%
test{\ifnumcomp{\value{LWR@hdashedlines}}{>}{0}}%
}%
{%
\LWR@htmltag{tr class="hline" }%
\LWR@orignewline%
}%
{% not doing hline
\ifbool{LWR@doingtbrule}%
{%
\ifdefvoid{\LWR@ruleHTMLcolor}{%
\LWR@htmltag{tr class="tbrule"}%
}{%
\LWR@htmltag{%
tr class="tbrule" % space
style="border-top: 1px solid % space
\LWR@origpound\LWR@ruleHTMLcolor "%
}%
}%
\LWR@orignewline%
}%
{\LWR@htmltag{tr}\LWR@orignewline}%
}% end of not doing hline
}% end of not started the row
}
\newcommand*{\LWR@printbartag}[1]{%
\LWR@traceinfo{LWR@printbartag !#1!}%
\ifboolexpr{bool{LWR@tabularmutemods} or bool{LWR@emptyatbang}}%
{}% muting or empty
{% not muting
\edef\LWR@tempone{\LWR@getexparray{LWR@colbarspec}{#1}}%
\ifdefempty{\LWR@tempone}{}{ \LWR@tempone}%
}% not muting
\LWR@traceinfo{LWR@printbartag done}%
}
\newcommand*{\LWR@printatbang}[2]{%
\xdef\LWR@atbangspec{\LWR@getexparray{LWR@col#1spec}{#2}}%
\LWR@traceinfo{atbang: #2 !\LWR@atbangspec!}%
\ifdefempty{\LWR@atbangspec}%
{}%
{% not empty
\LWR@htmltag{%
td class="td#1%
\LWR@subaddcmidruletrim{}{}%
\LWR@printbartag{#2}%
"%
\LWR@tdstartstyles%
\LWR@addcmidrulewidth%
\LWR@addcdashline%
\LWR@addtabularrulecolors%
\LWR@tdendstyles%
}%
\ifboolexpr{bool{LWR@tabularmutemods} or bool{LWR@emptyatbang}}%
{}%
{\LWR@atbangspec}%
\LWR@htmltag{/td}\LWR@orignewline%
\global\booltrue{LWR@tabularcelladded}%
}% not empty
}%
\newcommand*{\LWR@addleftmostbartag}{%
\ifnumcomp{\value{LWR@tableLaTeXcolindex}}{=}{1}{%
\LWR@printbartag{leftedge}%
}{}%
}
\newcommand*{\LWR@tabularleftedge}{%
\ifnumcomp{\value{LWR@tableLaTeXcolindex}}{=}{1}%
{%
\LWR@printatbang{at}{leftedge}%
\LWR@printatbang{bang}{leftedge}%
}% left edge
{}% not left edge
}
\newcommand*{\LWR@thiscolspec}{}
\newcommand*{\LWR@tabledatasinglecolumntag}%
{%
\LWR@traceinfo{LWR@tabledatasinglecolumntag}%
\LWR@maybenewtablerow%
\ifbool{LWR@intabularmetadata}%
{%
\ifbool{LWR@exitingtabular}{}%
{% not exiting tabular
\LWR@tabularleftedge%
\xdef\LWR@strresult{%
\LWR@getexparray{LWR@tablecolspec}{\arabic{LWR@tableLaTeXcolindex}}%
}%
\LWR@traceinfo{LWR@tabledatasinglecolumntag: about to print td tag}%
\LWR@htmltag{%
td class="td%
\LWR@strresult%
\LWR@addcmidruletrim%
\LWR@addleftmostbartag%
\LWR@printbartag{\arabic{LWR@tableLaTeXcolindex}}%
"%
\LWR@tdstartstyles%
\LWR@addcmidrulewidth%
\LWR@addcdashline%
\xdef\LWR@thiscolspec{%
\LWR@getexparray{LWR@tablecolspec}%
{\arabic{LWR@tableLaTeXcolindex}}%
}%
\LWR@addformatwpalignment{\LWR@thiscolspec}%
\LWR@addtabularrowcolor%
\LWR@addtabularrulecolors%
\LWR@tdendstyles%
}% HTML td
\LWR@traceinfo{LWR@tabledatasinglecolumntag: done printing td tag}%
\ifboolexpr{%
test{ \ifdefstring{\LWR@strresult}{p} } or
test{ \ifdefstring{\LWR@strresult}{m} } or
test{ \ifdefstring{\LWR@strresult}{b} } or
test{ \ifdefstring{\LWR@strresult}{P} } or
test{ \ifdefstring{\LWR@strresult}{M} } or
test{ \ifdefstring{\LWR@strresult}{B} } or
test{ \ifdefstring{\LWR@strresult}{X} }
}%
{% allow pars
\LWR@traceinfo{LWR@tabledatasinglecolumntag: about to LWR@startpars}%
\booltrue{LWR@tableparcell}%
\LWR@startpars%
\LWR@traceinfo{LWR@tabledatasinglecolumntag: done with LWR@startpars}%
}% allow pars
{}% no pars
\ifboolexpr{bool{LWR@tabularmutemods} or bool{LWR@emptyatbang}}%
{}%
{%
\LWR@getexparray{LWR@colbeforespec}{\arabic{LWR@tableLaTeXcolindex}}%
}%
\boolfalse{LWR@intabularmetadata}%
}% not exiting tabular
}{}% in tabular metadata
\LWR@traceinfo{LWR@tabledatasinglecolumntag: done}%
}%
\newlength{\LWR@heavyrulewidth}
\setlength{\LWR@heavyrulewidth}{.08em}
\newlength{\LWR@lightrulewidth}
\setlength{\LWR@lightrulewidth}{.05em}
\newlength{\LWR@cmidrulewidth}
\setlength{\LWR@cmidrulewidth}{.03em}
\newlength{\LWR@thiscmidrulewidth}
\setlength{\LWR@thiscmidrulewidth}{\LWR@cmidrulewidth}
\newcommand*{\LWR@clearmidrules}
{%
\defcounter{LWR@midrulecounter}{1}%
\whileboolexpr{%
not test{%
\ifnumcomp{\value{LWR@midrulecounter}}{>}%
{\value{LWR@tabletotalLaTeXcols}}%
}%
}%
{%
\LWR@setexparray{LWR@midrules}{\arabic{LWR@midrulecounter}}{0pt}%
\setlength{\LWR@thiscmidrulewidth}{\LWR@cmidrulewidth}%
\LWR@setexparray{LWR@trimlrules}{\arabic{LWR@midrulecounter}}{}%
\LWR@setexparray{LWR@trimrrules}{\arabic{LWR@midrulecounter}}{}%
\LWR@setexparray{LWR@cdashlines}{\arabic{LWR@midrulecounter}}{N}%
\defaddtocounter{LWR@midrulecounter}{1}%
}%
}
\newcommand*{\LWR@subcmidrule}[4]{%
\defcounter{LWR@midrulecounter}{#3}%
\whileboolexpr{%
not test {%
\ifnumcomp{\value{LWR@midrulecounter}}{>}{#4}%
}%
}%
{%
\LWR@setexparray{LWR@midrules}{\arabic{LWR@midrulecounter}}{#1}%
\defaddtocounter{LWR@midrulecounter}{1}%
}% whiledo
\IfSubStr{#2}{l}{\LWR@setexparray{LWR@trimlrules}{#3}{l}}{}%
\IfSubStr{#2}{r}{\LWR@setexparray{LWR@trimrrules}{#4}{r}}{}%
\booltrue{LWR@doingcmidrule}%
}
\NewDocumentCommand{\LWR@docmidrule}
{O{\LWR@cmidrulewidth} D(){} >{\SplitArgument{1}{-}}m}
{\LWR@subcmidrule{#1}{#2}#3}
\newcommand*{\LWR@subcdashline}[2]{%
\defcounter{LWR@midrulecounter}{#1}%
\whileboolexpr{%
not test {%
\ifnumcomp{\value{LWR@midrulecounter}}{>}{#2}%
}%
}%
{%
\LWR@setexparray{LWR@cdashlines}{\arabic{LWR@midrulecounter}}{Y}%
\defaddtocounter{LWR@midrulecounter}{1}%
}% whiledo
\booltrue{LWR@doingcmidrule}%
}
\NewDocumentCommand{\LWR@docdashline}
{>{\SplitArgument{1}{-}}m}%
{%
\LWR@subcdashline#1%
}
\newcommand*{\LWR@tdstartstyles}{\boolfalse{LWR@tdhavecellstyle}}
\newcommand*{\LWR@tdaddstyle}{%
\ifbool{LWR@tdhavecellstyle}%
{; }%
{ style="}%
\booltrue{LWR@tdhavecellstyle}%
}
\newcommand*{\LWR@tdendstyles}{%
\ifbool{LWR@tdhavecellstyle}%
{%
"%
\boolfalse{LWR@tdhavecellstyle}%
}{}%
}
\newcommand*{\LWR@subaddcmidruletrim}[2]{%
\setlength{\LWR@templengthone}{%
\LWR@getexparray{LWR@midrules}{\arabic{LWR@tableLaTeXcolindex}}%
}%
\ifdimcomp{\LWR@templengthone}{>}{0pt}%
{%
\LWR@origtilde tdrule#1#2%
\setlength{\LWR@thiscmidrulewidth}{\LWR@templengthone}%
}%
{%
\setlength{\LWR@thiscmidrulewidth}{0pt}%
}%
}
\newcommand*{\LWR@addcmidruletrim}{%
\LWR@subaddcmidruletrim%
{\LWR@getexparray{LWR@trimlrules}{\arabic{LWR@tableLaTeXcolindex}}}%
{\LWR@getexparray{LWR@trimrrules}{\arabic{LWR@tableLaTeXcolindex}}}%
}
\newcommand{\LWR@addrulewidth}[2]{%
\ifboolexpr{%
test{\ifdimcomp{#1}{=}{0pt}} or
(
( test{\ifdimcomp{#1}{=}{#2}} and not bool{FormatWP} )
and ( test {\ifdefvoid{\LWR@ruleHTMLcolor}} )
)
}%
{}% default width and color
{% custom width and/or color
\LWR@forceminwidth{#1}%
\LWR@tdaddstyle%
border-top:\LWR@printlength{\LWR@atleastonept} solid % space
\ifdefvoid{\LWR@ruleHTMLcolor}{%
\ifdimcomp{#1}{<}{\LWR@lightrulewidth}%
{\LWR@origpound{}A0A0A0}%
{% lightrule or heaver
\ifdimcomp{#1}{<}{\LWR@heavyrulewidth}%
{\LWR@origpound{}808080}%
{black}%
}% lightrule or heavier
}{%
\LWR@origpound\LWR@ruleHTMLcolor%
}%
}% custom width and/or color
}
\newcommand{\LWR@addcmidrulewidth}{%
\LWR@addrulewidth{\LWR@thiscmidrulewidth}{\LWR@cmidrulewidth}%
}
\newcommand{\LWR@addcdashline}{%
\edef\LWR@tempone{%
\LWR@getexparray{LWR@cdashlines}{\arabic{LWR@tableLaTeXcolindex}}%
}%
\ifdefstring{\LWR@tempone}{Y}{%
\LWR@tdaddstyle%
border-top: 1pt dashed %
\ifdefvoid{\LWR@ruleHTMLcolor}%
{black}%
{\LWR@origpound\LWR@ruleHTMLcolor}%
}{}%
}
\newcommand*{\LWR@WPcell}[2]{%
\LWR@tdaddstyle%
\LWR@print@mbox{text-align:#1}; \LWR@print@mbox{vertical-align:#2}%
}
\newcommand*{\LWR@addformatwpalignment}[1]{%
\ifbool{FormatWP}{%
\IfSubStr{#1}{l}{\LWR@WPcell{left}{middle}}{}%
\IfSubStr{#1}{c}{\LWR@WPcell{center}{middle}}{}%
\IfSubStr{#1}{r}{\LWR@WPcell{right}{middle}}{}%
\IfSubStr{#1}{p}{\LWR@WPcell{left}{bottom}}{}%
\IfSubStr{#1}{m}{\LWR@WPcell{left}{middle}}{}%
\IfSubStr{#1}{b}{\LWR@WPcell{left}{top}}{}%
\IfSubStr{#1}{P}{\LWR@WPcell{center}{bottom}}{}%
\IfSubStr{#1}{M}{\LWR@WPcell{center}{middle}}{}%
\IfSubStr{#1}{B}{\LWR@WPcell{center}{top}}{}%
}{}%
}
\newcommand*{\LWR@addtabularrowcolor}{%
\ifbool{LWR@tabularmutemods}{}{%
\ifdefvoid{\LWR@rowHTMLcolor}{%
\ifdefvoid{\LWR@xcolorrowHTMLcolor}{}%
{% xcolor row color
\LWR@tdaddstyle%
background:\LWR@origpound\LWR@xcolorrowHTMLcolor%
}%
}%
{% explicit row color
\LWR@tdaddstyle%
background:\LWR@origpound\LWR@rowHTMLcolor%
}%
}%
}
\newcommand*{\LWR@addtabularhrulecolor}{%
\ifboolexpr{%
test{\ifnumcomp{\value{LWR@hlines}}{>}{0}} or%
test{\ifnumcomp{\value{LWR@hdashedlines}}{>}{0}} or%
bool{LWR@doingtbrule}%
}{%
\ifdefvoid{\LWR@ruleHTMLcolor}%
{%
\ifnumcomp{\value{LWR@hlines}}{>}{1}%
{%
\LWR@tdaddstyle%
border-top: 4px double%
}{% else
\ifnumcomp{\value{LWR@hdashedlines}}{>}{1}%
{%
\LWR@tdaddstyle%
border-top: 2px dashed%
}{% else
\ifnumcomp{\value{LWR@hdashedlines}}{=}{1}%
{%
\LWR@tdaddstyle%
border-top: 1px dashed%
}{}}}%
}%
{%
\ifnumcomp{\value{LWR@hlines}}{>}{1}%
{%
\LWR@tdaddstyle%
border-top: 4px double \LWR@origpound\LWR@ruleHTMLcolor%
}{% else
\ifnumcomp{\value{LWR@hdashedlines}}{>}{1}%
{%
\LWR@tdaddstyle%
border-top: 2px dashed \LWR@origpound\LWR@ruleHTMLcolor%
}{% else
\ifnumcomp{\value{LWR@hdashedlines}}{=}{1}%
{%
\LWR@tdaddstyle%
border-top: 1px dashed \LWR@origpound\LWR@ruleHTMLcolor%
}{% else
\LWR@tdaddstyle%
border-top: 1px solid \LWR@origpound\LWR@ruleHTMLcolor%
}}}%
}%
}{}%
}
\newcommand*{\LWR@addtabularrulecolors}{%
\LWR@addtabularhrulecolor%
\ifbool{LWR@tabularmutemods}{}{%
\ifnumequal{\value{LWR@tableLaTeXcolindex}}{1}{%
\edef\LWR@tempone{\LWR@getexparray{LWR@colbarspec}{leftedge}}%
\ifdefstring{\LWR@tempone}{tvertbarl}{%
\LWR@tdaddstyle%
border-left: 1px solid % space
\LWR@vertruleHTMLcolor%
}{}%
\ifdefstring{\LWR@tempone}{tvertbarldouble}{%
\LWR@tdaddstyle%
border-left: 4px double % space
\LWR@vertruleHTMLcolor%
}{}%
\ifdefstring{\LWR@tempone}{tvertbarldash}{%
\LWR@tdaddstyle%
border-left: 1px dashed % space
\LWR@vertruleHTMLcolor%
}{}%
\ifdefstring{\LWR@tempone}{tvertbarldoubledash}{%
\LWR@tdaddstyle%
border-left: 2px dashed % space
\LWR@vertruleHTMLcolor%
}{}%
}{}%
\edef\LWR@tempone{%
\LWR@getexparray{LWR@colbarspec}{\arabic{LWR@tableLaTeXcolindex}}%
}%
\ifdefstring{\LWR@tempone}{tvertbarr}{%
\LWR@tdaddstyle%
border-right: 1px solid \LWR@vertruleHTMLcolor%
}{}%
\ifdefstring{\LWR@tempone}{tvertbarrdouble}{%
\LWR@tdaddstyle%
border-right: 4px double \LWR@vertruleHTMLcolor%
}{}%
\ifdefstring{\LWR@tempone}{tvertbarrdash}{%
\LWR@tdaddstyle%
border-right: 1px dashed \LWR@vertruleHTMLcolor%
}{}%
\ifdefstring{\LWR@tempone}{tvertbarrdoubledash}{%
\LWR@tdaddstyle%
border-right: 2px dashed \LWR@vertruleHTMLcolor%
}{}%
}%
}
\newcommand*{\LWR@subaddtabularcellcolor}[1]{%
\LWR@htmltag{div class="cellcolor" style="%
background:\LWR@origpound{}{}#1 %
" }%
\defaddtocounter{LWR@cellcolordepth}{1}%
}
\newcommand*{\LWR@addtabularcellcolor}{%
\ifdefvoid{\LWR@cellHTMLcolor}%
{%
\ifdefvoid{\LWR@rowHTMLcolor}%
{%
\ifdefvoid{\LWR@xcolorrowHTMLcolor}%
{%
\ifdefvoid{\LWR@columnHTMLcolor}%
{}%
{\LWR@subaddtabularcellcolor{\LWR@columnHTMLcolor}}%
}%
{\LWR@subaddtabularcellcolor{\LWR@xcolorrowHTMLcolor}}%
}%
{\LWR@subaddtabularcellcolor{\LWR@rowHTMLcolor}}%
}%
{\LWR@subaddtabularcellcolor{\LWR@cellHTMLcolor}}%
}
\newcommand*{\LWR@printmccoltype}[1]{%
\LWR@traceinfo{lwr@printmccoltype -#1-}%
\StrChar{#1}{\arabic{LWR@tablemulticolspos}}[\LWR@strresult]%
\IfStrEq{\LWR@strresult}{l}{l}{}%
\IfStrEq{\LWR@strresult}{c}{c}{}%
\IfStrEq{\LWR@strresult}{r}{r}{}%
\IfStrEq{\LWR@strresult}{p}{p}{}%
\IfStrEq{\LWR@strresult}{m}{m}{}%
\IfStrEq{\LWR@strresult}{b}{b}{}%
\IfStrEq{\LWR@strresult}{P}{P}{}%
\IfStrEq{\LWR@strresult}{M}{M}{}%
\IfStrEq{\LWR@strresult}{B}{B}{}%
\IfStrEq{\LWR@strresult}{w}{w}{}%
\IfStrEq{\LWR@strresult}{W}{W}{}%
\IfStrEq{\LWR@strresult}{S}{c}{}%
\IfStrEq{\LWR@strresult}{s}{c}{}%
\IfStrEq{\LWR@strresult}{X}{p}{}%
\IfStrEq{\LWR@strresult}{|}%
{%
\ifbool{LWR@mcolvertbaronleft}%
{\defaddtocounter{LWR@mcolvertbarsl}{1}}% left edge
{\defaddtocounter{LWR@mcolvertbarsr}{1}}% not left edge
}%
{%
\IfStrEq{\LWR@strresult}{:}%
{%
\ifbool{LWR@mcolvertbaronleft}%
{\defaddtocounter{LWR@mcolvertbarsldash}{1}}% left edge
{\defaddtocounter{LWR@mcolvertbarsrdash}{1}}% not left edge
}%
{%
\IfStrEq{\LWR@strresult}{;}%
{%
\ifbool{LWR@mcolvertbaronleft}%
{\defaddtocounter{LWR@mcolvertbarsldash}{1}}% left edge
{\defaddtocounter{LWR@mcolvertbarsrdash}{1}}% not left edge
}%
{\boolfalse{LWR@mcolvertbaronleft}}%
}%
}%
\LWR@traceinfo{lwr@printmccoltype done}%
}
\newcommand*{\LWR@multicolpartext}[1]{%
\LWR@startpars%
\LWR@multicoltext%
\defaddtocounter{LWR@tablemulticolspos}{#1}%
\LWR@stoppars%
}
\newcommand*{\LWR@multicolother}[1]{%
\defaddtocounter{LWR@tablemulticolspos}{1}%
\StrChar{#1}{\arabic{LWR@tablemulticolspos}}[\LWR@strresult]%
\LWR@strresult%
\booltrue{LWR@validtablecol}%
}
\newcommand*{\LWR@multicolskip}{%
\booltrue{LWR@validtablecol}%
}
\newcommand*{\LWR@printmccoldata}[1]{%
\LWR@traceinfo{lwr@printmccoldata -#1}%
\boolfalse{LWR@validtablecol}%
\StrChar{#1}{\arabic{LWR@tablemulticolspos}}[\LWR@strresult]%
\edef\LWR@printmccoldatatoken{\LWR@strresult}%
\IfStrEq{\LWR@printmccoldatatoken}{l}{\LWR@multicoltext}{}%
\IfStrEq{\LWR@printmccoldatatoken}{c}{\LWR@multicoltext}{}%
\IfStrEq{\LWR@printmccoldatatoken}{r}{\LWR@multicoltext}{}%
\IfStrEq{\LWR@printmccoldatatoken}{D}{%
\defaddtocounter{LWR@tablemulticolspos}{3}% skip parameters
\LWR@multicoltext%
}{}%
\IfStrEq{\LWR@printmccoldatatoken}{p}{\LWR@multicolpartext{2}}{}%
\IfStrEq{\LWR@printmccoldatatoken}{m}{\LWR@multicolpartext{2}}{}%
\IfStrEq{\LWR@printmccoldatatoken}{b}{\LWR@multicolpartext{2}}{}%
\IfStrEq{\LWR@printmccoldatatoken}{P}{\LWR@multicolpartext{2}}{}%
\IfStrEq{\LWR@printmccoldatatoken}{M}{\LWR@multicolpartext{2}}{}%
\IfStrEq{\LWR@printmccoldatatoken}{B}{\LWR@multicolpartext{2}}{}%
\IfStrEq{\LWR@printmccoldatatoken}{w}{\LWR@multicolpartext{3}}{}%
\IfStrEq{\LWR@printmccoldatatoken}{W}{\LWR@multicolpartext{3}}{}%
\IfStrEq{\LWR@printmccoldatatoken}{S}{\LWR@multicoltext}{}%
\IfStrEq{\LWR@printmccoldatatoken}{s}{\LWR@multicoltext}{}%
\IfStrEq{\LWR@printmccoldatatoken}{X}{\LWR@multicolpartext{1}}{}%
\IfStrEq{\LWR@printmccoldatatoken}{|}{\LWR@multicolskip}{}%
\IfStrEq{\LWR@printmccoldatatoken}{:}{\LWR@multicolskip}{}%
\IfStrEq{\LWR@printmccoldatatoken}{;}{%
\LWR@multicolskip%
\defaddtocounter{LWR@tablemulticolspos}{1}% skip parameter
}{}%
\IfStrEq{\LWR@printmccoldatatoken}{\detokenize{@}}{\LWR@multicolother{#1}}{}%
\IfStrEq{\LWR@printmccoldatatoken}{\detokenize{!}}{\LWR@multicolother{#1}}{}%
\IfStrEq{\LWR@printmccoldatatoken}{\detokenize{>}}{\LWR@multicolother{#1}}{}%
\IfStrEq{\LWR@printmccoldatatoken}{\detokenize{<}}{\LWR@multicolother{#1}}{}%
\ifbool{LWR@validtablecol}{}{\LWR@multicoltext{}}%
\LWR@traceinfo{lwr@printmccoldata done}%
}
\newcommand*{\LWR@parsemulticolumnalignment}[2]{%
\defcounter{LWR@tablemulticolspos}{1}%
\StrLen{#1}[\LWR@strresult]%
\defcounter{LWR@tablemulticolswidth}{\LWR@strresult}%
\whileboolexpr{%
not test {%
\ifnumcomp{\value{LWR@tablemulticolspos}}{>}%
{\value{LWR@tablemulticolswidth}}%
}%
}%
{%
#2{#1}%
\defaddtocounter{LWR@tablemulticolspos}{1}%
}%
}
\newcommand*{\LWR@addmulticolvertrulecolor}{%
\ifbool{LWR@tabularmutemods}{}{%
\ifnumcomp{\value{LWR@mcolvertbarsl}}{=}{1}{%
\LWR@tdaddstyle%
border-left: 1px solid \LWR@vertruleHTMLcolor%
}{}%
\ifnumcomp{\value{LWR@mcolvertbarsl}}{>}{1}{%
\LWR@tdaddstyle%
border-left: 4px double \LWR@vertruleHTMLcolor%
}{}%
\ifnumcomp{\value{LWR@mcolvertbarsldash}}{=}{1}{%
\LWR@tdaddstyle%
border-left: 1px dashed \LWR@vertruleHTMLcolor%
}{}%
\ifnumcomp{\value{LWR@mcolvertbarsldash}}{>}{1}{%
\LWR@tdaddstyle%
border-left: 2px dashed \LWR@vertruleHTMLcolor%
}{}%
\ifnumcomp{\value{LWR@mcolvertbarsr}}{=}{1}{%
\LWR@tdaddstyle%
border-right: 1px solid \LWR@vertruleHTMLcolor%
}{}%
\ifnumcomp{\value{LWR@mcolvertbarsr}}{>}{1}{%
\LWR@tdaddstyle%
border-right: 4px double \LWR@vertruleHTMLcolor%
}{}%
\ifnumcomp{\value{LWR@mcolvertbarsrdash}}{=}{1}{%
\LWR@tdaddstyle%
border-right: 1px dashed \LWR@vertruleHTMLcolor%
}{}%
\ifnumcomp{\value{LWR@mcolvertbarsrdash}}{>}{1}{%
\LWR@tdaddstyle%
border-right: 2px dashed \LWR@vertruleHTMLcolor%
}{}%
}%
}
\newcommand{\LWR@multicoltext}{}
\newcounter{LWR@lastmulticolumn}
\NewDocumentCommand{\LWR@domulticolumn}{o o m m m +m}{%
\LWR@traceinfo{LWR@domulticolumn -#1- -#2- -#4- -#5-}%
\renewcommand{\LWR@multicoltext}{%
#6%
\booltrue{LWR@validtablecol}%
}%
\defcounter{LWR@lastmulticolumn}{\value{LWR@tableLaTeXcolindex}}%
\defaddtocounter{LWR@lastmulticolumn}{#3}%
\defaddtocounter{LWR@lastmulticolumn}{-1}%
\LWR@maybenewtablerow%
\LWR@htmltag{%
td colspan="#4" %
\IfValueT{#2}{ % rows?
rowspan="#2" %
}%
class="td%
\defcounter{LWR@mcolvertbarsl}{0}%
\defcounter{LWR@mcolvertbarsr}{0}%
\defcounter{LWR@mcolvertbarsldash}{0}%
\defcounter{LWR@mcolvertbarsrdash}{0}%
\booltrue{LWR@mcolvertbaronleft}%
\LWR@parsemulticolumnalignment{#5}{\LWR@printmccoltype}%
\LWR@subaddcmidruletrim%
{%
\LWR@getexparray{LWR@trimlrules}%
{\arabic{LWR@tableLaTeXcolindex}}%
}%
{%
\LWR@getexparray{LWR@trimrrules}%
{\arabic{LWR@lastmulticolumn}}%
}%
\ifnumcomp{\value{LWR@mcolvertbarsl}}{=}{1}{ tvertbarl}{}%
\ifnumcomp{\value{LWR@mcolvertbarsl}}{>}{1}{ tvertbarldouble}{}%
\ifnumcomp{\value{LWR@mcolvertbarsr}}{=}{1}{ tvertbarr}{}%
\ifnumcomp{\value{LWR@mcolvertbarsr}}{>}{1}{ tvertbarrdouble}{}%
\ifnumcomp{\value{LWR@mcolvertbarsldash}}{=}{1}{ tvertbarldash}{}%
\ifnumcomp{\value{LWR@mcolvertbarsldash}}{>}{1}%
{ tvertbarldoubledash}{}%
\ifnumcomp{\value{LWR@mcolvertbarsrdash}}{=}{1}{ tvertbarrdash}{}%
\ifnumcomp{\value{LWR@mcolvertbarsrdash}}{>}{1}%
{ tvertbarrdoubledash}{}%
"%
\LWR@tdstartstyles%
\IfValueT{#1}{% vpos?
\ifstrequal{#1}{b}%
{%
\LWR@tdaddstyle%
\LWR@print@mbox{vertical-align:bottom}%
}{}%
\ifstrequal{#1}{t}%
{%
\LWR@tdaddstyle%
\LWR@print@mbox{vertical-align:top}%
}{}%
}% vpos?
\LWR@addtabularrowcolor%
\LWR@addcmidrulewidth%
\LWR@addcdashline%
\LWR@addtabularhrulecolor%
\LWR@addmulticolvertrulecolor%
\LWR@addformatwpalignment{#5}%
\LWR@tdendstyles%
}% end of the opening table data tag
\boolfalse{LWR@intabularmetadata}%
\LWR@parsemulticolumnalignment{#5}{\LWR@printmccoldata}%
}
\NewDocumentCommand{\LWR@htmlmulticolumn}{m m +m}%
{%
\LWR@tabularhtmlcolumns{\arabic{LWR@tableLaTeXcolindex}}{#1}%
\LWR@domulticolumn{#1}{\arabic{LWR@tabhtmlcoltotal}}{#2}{#3}%
\defaddtocounter{LWR@tableLaTeXcolindex}{#1}%
\defaddtocounter{LWR@tableLaTeXcolindex}{-1}%
\booltrue{LWR@skipatbang}%
}
\providecommand*{\LTcaptype}{table}
\NewDocumentCommand{\LWR@longtabledatacaptiontag}{s o +m}
{%
\IfValueTF{#2}{% optional given?
\ifblank{#2}% optional empty?
{\LWR@setlatestname{#3}}% empty
{\LWR@setlatestname{#2}}% given and non-empty
}% optional given
{\LWR@setlatestname{#3}}% no optional
\LWR@tabularhtmlcolumns{1}{\arabic{LWR@tabletotalLaTeXcols}}%
\LWR@domulticolumn{\arabic{LWR@tabletotalLaTeXcols}}%
{\arabic{LWR@tabhtmlcoltotal}}%
{P}%
{% \LWR@domulticolumn
\IfBooleanTF{#1}% star?
{% yes star
\LWR@figcaption%
\LWR@isolate{#3}%
\endLWR@figcaption%
}%
{% No star:
\ifbool{LWR@starredlongtable}%
{%
\ifblank{#2}% TOC entry
{}%
{%
\refstepcounter{\LTcaptype}%
\protected@edef\@currentlabel{%
\@nameuse{p@\LTcaptype}\@nameuse{the\LTcaptype}%
}%
}%
}{}%
\LWR@figcaption%
\LWR@isolate{\@nameuse{fnum@\LTcaptype}}%
\CaptionSeparator%
\LWR@isolate{#3}%
\endLWR@figcaption%
\ifblank{#2}% TOC entry empty
{}%
{% TOC entry not empty
\IfNoValueTF{#2}% No TOC entry?
{% No TOC entry
\addcontentsline%
{\@nameuse{ext@\LTcaptype}}%
{\LTcaptype}%
{%
\protect\numberline%
{\LWR@isolate{\@nameuse{p@\LTcaptype}}\@nameuse{the\LTcaptype}}%
{\ignorespaces \LWR@isolate{#3}\protect\relax}%
}%
}% end of No TOC entry
{% yes TOC entry
\addcontentsline%
{\@nameuse{ext@\LTcaptype}}%
{\LTcaptype}%
{%
\protect\numberline%
{\LWR@isolate{\@nameuse{p@\LTcaptype}}\@nameuse{the\LTcaptype}}%
{\ignorespaces \LWR@isolate{#2}\protect\relax}%
}%
}% end of yes TOC entry
}% end of TOC entry not empty
}% end of no star
\booltrue{LWR@skipatbang}%
}% end of \LWR@domulticolumn
\defaddtocounter{LWR@tableLaTeXcolindex}{\value{LWR@tabletotalLaTeXcols}}%
\defaddtocounter{LWR@tableLaTeXcolindex}{-1}
}
\newcounter{LWR@tabhtmlcolindex}
\newcounter{LWR@tabhtmlcolend}
\newcounter{LWR@tabhtmlcoltotal}
\newcommand*{\LWR@subtabularhtmlcolumns}[1]{%
\edef\LWR@atbangspec{\LWR@getexparray{LWR@colatspec}{#1}}%
\ifdefempty{\LWR@atbangspec}%
{}%
{\defaddtocounter{LWR@tabhtmlcoltotal}{1}}%
\edef\LWR@atbangspec{\LWR@getexparray{LWR@colbangspec}{#1}}%
\ifdefempty{\LWR@atbangspec}%
{}%
{\defaddtocounter{LWR@tabhtmlcoltotal}{1}}%
}
\newcommand*{\LWR@tabularhtmlcolumns}[2]{%
\defcounter{LWR@tabhtmlcolindex}{#1}%
\defcounter{LWR@tabhtmlcoltotal}{#2}%
\defcounter{LWR@tabhtmlcolend}{#1}%
\defaddtocounter{LWR@tabhtmlcolend}{#2}%
\ifnumcomp{\value{LWR@tabhtmlcolindex}}{=}{1}{%
\LWR@subtabularhtmlcolumns{leftedge}%
}{}%
\whileboolexpr{%
test {%
\ifnumcomp{\value{LWR@tabhtmlcolindex}}{<}{\value{LWR@tabhtmlcolend}}%
}%
}%
{%
\LWR@subtabularhtmlcolumns{\arabic{LWR@tabhtmlcolindex}}%
\defaddtocounter{LWR@tabhtmlcolindex}{1}%
}% whiledo
}
\end{warpHTML}
\begin{warpHTML}
\newcommand{\multirow}[2][c]{}
\end{warpHTML}
\begin{warpall}
\AtBeginDocument{
\@ifundefined{@xmultirow}
{
\DeclareExpandableDocumentCommand{\LWR@print@multicolumnrow}%
{+m +m +O{c} +m +O{0} +m +O{0pt} +m}%
{}%
}% no version of multirow was loaded
{% \@xmultirow defined, so some version of multirow was loaded
\@ifpackageloaded{multirow}{% v2.0 or newer
\@ifpackagelater{multirow}{2016/09/01}% 2016/09/27 for v2.0
{% v2.0+:
\DeclareExpandableDocumentCommand{\LWR@print@multicolumnrow}%
{+m +m +O{c} +m +O{0} +m +O{0pt} +m}%
{\multicolumn{#1}{#2}{\@xmultirow[#3]{#4}[#5]{#6}[#7]{#8}}}%
}
{% loaded but older, probably not executed:
\DeclareExpandableDocumentCommand{\LWR@print@multicolumnrow}%
{+m +m +O{c} +m +O{0} +m +O{0pt} +m}%
{\multicolumn{#1}{#2}{\@xmultirow{#4}[#5]{#6}[#7]{#8}}}%
}
}% packageloaded{multirow}
{% v1.6 or older did not \ProvidePackage
\DeclareExpandableDocumentCommand{\LWR@print@multicolumnrow}%
{+m +m +O{c} +m +O{0} +m +O{0pt} +m}%
{\multicolumn{#1}{#2}{\@xmultirow{#4}[#5]{#6}[#7]{#8}}}%
}
}% \@ifundefined{@xmultirow}
\providecommand*{\multicolumnrow}{\LWR@print@multicolumnrow}
}% AtBeginDocument
\end{warpall}
\begin{warpHTML}
\newcommand*{\LWR@donothing}{}
\let\firsthline\relax
\let\lasthline\relax
\newcommand*{\firsthline}{}
\newcommand*{\lasthline}{}
\newcommand*{\ldelim}{}
\newcommand*{\rdelim}{}
\end{warpHTML}
\begin{warpall}
\newcommand*{\TabularMacro}{}
\end{warpall}
\begin{warpHTML}
\newcommand*{\ResumeTabular}{%
\boolfalse{LWR@exitingtabular}%
\boolfalse{LWR@tabularmutemods}%
\LWR@getmynexttoken%
}
\end{warpHTML}
\begin{warpprint}
\newcommand*{\ResumeTabular}{}
\end{warpprint}
\begin{warpHTML}
\newcommand*{\LWR@tabledatacolumntag}%
{%
\LWR@traceinfo{LWR@tabledatacolumntag}%
\global\let\LWR@mynextaction\LWR@tabledatasinglecolumntag%
\ifdefequal{\LWR@mynexttoken}{\end}%
{\booltrue{LWR@exitingtabular}}{}%
\ifdefequal{\LWR@mynexttoken}{\caption}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\multicolumn}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\multirow}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\multicolumnrow}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\noalign}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\mrowcell}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\mcolrowcell}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\TabularMacro}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\hline}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\firsthline}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\lasthline}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\toprule}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\midrule}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\cmidrule}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\morecmidrules}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\specialrule}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\cline}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\bottomrule}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\hhline}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\rowcolor}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\arrayrulecolor}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\doublerulesepcolor}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\warpprintonly}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\warpHTMLonly}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\ldelim}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\rdelim}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\hdashline}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\cdashline}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\firsthdashline}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\lasthdashline}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\ifdefequal{\LWR@mynexttoken}{\par}%
{\global\let\LWR@mynextaction\LWR@donothing}{}%
\LWR@traceinfo{LWR@tabledatacolumntag: about to do mynext}%
\LWR@mynextaction%
\LWR@traceinfo{LWR@tabledatacolumntag: done}%
}
\end{warpHTML}
\begin{warpall}
\newcommand*{\mrowcell}{}
\end{warpall}
\begin{warpall}
\newcommand*{\mcolrowcell}{}
\end{warpall}
\begin{warpHTML}
\providecommand*{\toprule}[1][]{\hline}
\providecommand*{\midrule}[1][]{\hline}
\providecommand*{\cmidrule}{\cline}
\providecommand*{\bottomrule}[1][]{\hline}
\providecommand*{\addlinespace}[1][]{}
\providecommand*{\morecmidrules}{}
\providecommand*{\specialrule}[3]{\hline}
\LetLtxMacro\LWR@orignoalign\noalign
\newcommand{\LWR@tabularnoalign}[1]{%
\advance\rownum\m@ne%
\LetLtxMacro\LWR@save@xcolorrowHTMLcolor\LWR@xcolorrowHTMLcolor%
\renewcommand*{\LWR@xcolorrowHTMLcolor}{}%
\multicolumn{\value{LWR@tabletotalLaTeXcols}}{l}{#1} \\
\LetLtxMacro\LWR@xcolorrowHTMLcolor\LWR@save@xcolorrowHTMLcolor%
% \@rowc@lors%
\LWR@getmynexttoken%
}
\AtBeginDocument{
\@ifpackageloaded{lwarp-tabls}
{
\newcommand*{\LWR@HTMLhline}[1][]{%
\ifbool{FormatWP}%
{\LWR@docmidrule{1-\arabic{LWR@tabletotalLaTeXcols}}}%
{\defaddtocounter{LWR@hlines}{1}}%
\LWR@getmynexttoken}%
}
{
\newcommand*{\LWR@HTMLhline}{%
\ifbool{FormatWP}%
{\LWR@docmidrule{1-\arabic{LWR@tabletotalLaTeXcols}}}%
{\defaddtocounter{LWR@hlines}{1}}%
\LWR@getmynexttoken}%
}
}% AtBeginDocument
\NewDocumentCommand{\LWR@HTMLcline}{m}%
{\LWR@docmidrule{#1}\LWR@getmynexttoken}%
\newcommand{\LWR@tabular@warpprintonly}[1]{%
\ifbool{warpingprint}{#1}{}%
\LWR@getmynexttoken%
}
\AtBeginDocument{
\@ifundefined{NoAutoSpacing}%
{% no babel-french
\newcommand*{\LWR@nullifyNoAutoSpacing}{}
}% no babel-french
{% yes babel-french
\newcommand*{\LWR@nullifyNoAutoSpacing}{%
\NoAutoSpacing%
\renewcommand*{\NoAutoSpacing}{}%
\renewcommand*{\LWR@FBcancel}{}%
}
}% yes babel-french
}% AtBeginDocument
\StartDefiningTabulars
\NewDocumentCommand{\LWR@HTML@@tabular}{d<> o m}
{%
\LWR@traceinfo{LWR@HTML@@tabular started}%
\LWR@spanwarnformat{tabular}%
\addtocounter{LWR@tabulardepth}{1}%
\boolfalse{LWR@startedrow}%
\defcounter{LWR@hlines}{0}%
\defcounter{LWR@hdashedlines}{0}%
\boolfalse{LWR@doingtbrule}%
\boolfalse{LWR@doingcmidrule}%
\LWR@nullifyNoAutoSpacing%
\boolfalse{LWR@exitingtabular}%
\boolfalse{LWR@tabularmutemods}%
\boolfalse{LWR@usedmultirow}%
\boolfalse{LWR@foundmrowcell}%
\renewcommand*{\LWR@multicoltext}{}%
\booltrue{LWR@intabularmetadata}%
\LWR@traceinfo{LWR@@tabular: About to LWR@forecenewpage.}%
\LWR@forcenewpage
\LWR@htmlblocktag{table}%
\LWR@parsetablecols{#3}%
\LWR@stoppars%
\defcounter{LWR@tableLaTeXcolindex}{1}%
\global\boolfalse{LWR@tabularcelladded}%
\LWR@clearmidrules%
\LetLtxMacro{\\}{\LWR@tabularendofline}%
\LetLtxMacro\warpprintonly\LWR@tabular@warpprintonly%
\LetLtxMacro\arrayrulecolor\arrayrulecolornexttoken%
\LetLtxMacro\doublerulesepcolor\doublerulesepcolornexttoken%
\def\LWR@columnHTMLcolor{}%
\def\LWR@rowHTMLcolor{}%
\def\LWR@cellHTMLcolor{}%
\@rowcolors%
\ifdefvoid{\LWR@ruleHTMLcolor}%
{\edef\LWR@vertruleHTMLcolor{black}}%
{\edef\LWR@vertruleHTMLcolor{\LWR@origpound\LWR@ruleHTMLcolor}}%
\defcounter{LWR@cellcolordepth}{0}%
\LWR@traceinfo{LWR@@HTML@tabular: redefining macros}%
\LetLtxMacro\noalign\LWR@tabularnoalign%
\LetLtxMacro\hline\LWR@HTMLhline%
\LetLtxMacro\cline\LWR@HTMLcline%
\DeclareDocumentCommand{\hdashline}{o}{%
\ifbool{FormatWP}%
{\LWR@docdashline{1-\arabic{LWR@tabletotalLaTeXcols}}}%
{\defaddtocounter{LWR@hdashedlines}{1}}%
\LWR@getmynexttoken%
}%
\DeclareDocumentCommand{\cdashline}{m}{%
\LWR@docdashline{##1}\LWR@getmynexttoken%
}%
\DeclareDocumentCommand{\firsthdashline}{o}{%
\ifbool{FormatWP}%
{\LWR@docdashline{1-\arabic{LWR@tabletotalLaTeXcols}}}%
{\defaddtocounter{LWR@hdashedlines}{1}}%
\LWR@getmynexttoken%
}%
\DeclareDocumentCommand{\lasthdashline}{o}{%
\ifbool{FormatWP}%
{\LWR@docdashline{1-\arabic{LWR@tabletotalLaTeXcols}}}%
{\defaddtocounter{LWR@hdashedlines}{1}}%
\LWR@getmynexttoken%
}%
\renewcommand{\multicolumn}{\LWR@htmlmulticolumn}%
\renewcommand*{\mrowcell}{%
\LWR@maybenewtablerow%
\LWR@tabularleftedge%
\booltrue{LWR@skippingmrowcell}%
\booltrue{LWR@foundmrowcell}%
}%
\renewcommand*{\mcolrowcell}{%
\LWR@maybenewtablerow%
\booltrue{LWR@skippingmcolrowcell}%
\booltrue{LWR@foundmrowcell}%
}%
\LetLtxMacro\caption\LWR@longtabledatacaptiontag%
\boolfalse{LWR@tableparcell}%
\boolfalse{LWR@skippingmrowcell}%
\boolfalse{LWR@skippingmcolrowcell}%
\boolfalse{LWR@skipatbang}%
\boolfalse{LWR@emptyatbang}%
\StartDefiningTabulars%
\protected\gdef&{\LWR@tabularampersand}%
\booltrue{LWR@forceminipagefullwidth}%
\addtocounter{LWR@tabularpardepth}{1}%
\LWR@traceinfo{LWR@@HTML@tabular: about to LWR@getmynexttoken}%
\LWR@getmynexttoken%
}%
\newcommand*{\LWR@HTML@endtabular}
{%
\LWR@traceinfo{LWR@HTML@endtabular}%
\addtocounter{LWR@tabularpardepth}{-1}%
\ifboolexpr{%
test {%
\ifnumcomp{\value{LWR@tableLaTeXcolindex}}{<}%
{\value{LWR@tabletotalLaTeXcols}}
} or %
(%
bool{LWR@intabularmetadata} and%
not bool{LWR@tabularcelladded} and%
test {%
\ifnumcomp{\value{LWR@tableLaTeXcolindex}}{=}%
{\value{LWR@tabletotalLaTeXcols}}%
}%
)%
}%
{%
\LWR@tabularfinishrow%
}%
{%
\LWR@closetabledatacell%
}%
\LWR@htmlblocktag{/tr}%
\@rowc@lors%
\LWR@htmlblocktag{/table}%
\boolfalse{LWR@intabularmetadata}%
\addtocounter{LWR@tabulardepth}{-1}%
\ifnumequal{\value{LWR@tabulardepth}}{0}{%
\protected\gdef&{\LWR@origampmacro}%
\StopDefiningTabulars%
}{}%
\ifbool{LWR@usedmultirow}{%
\ifbool{LWR@foundmrowcell}%
{}%
{%
\PackageError{lwarp}%
{%
When using \protect\multirow, \protect\multicolumnrow,\MessageBreak
or the bigdelim package,\MessageBreak
place \protect\mrowcell\space or \protect\mcolrowcell\MessageBreak
in empty cells which are to be skipped.\MessageBreak
See the Lwarp package documentation:\MessageBreak
"Special cases and limitations" -> "Tabular"
}%
{%
See the Lwarp package documentation:\MessageBreak
"Special cases and limitations" -> "Tabular".
}%
}%
}{}%
\LWR@traceinfo{LWR@HTML@endtabular finished}%
}
\csletcs{LWR@HTML@endtabular*}{LWR@HTML@endtabular}
\StopDefiningTabulars
\AtBeginDocument{
\LetLtxMacro\LWR@origendtabular\endtabular
\csletcs{LWR@origendtabular*}{endtabular*}
\LWR@formatted{@tabular}
\LWR@formatted{endtabular}
\LWR@formatted{endtabular*}
}
\end{warpHTML}
\begin{warpHTML}
\def\@currentlabelname{\linkhomename}%
\def\LWR@stripperiod#1.\ltx@empty#2\@nil{#1}%
\newcommand*{\LWR@setlatestname}[1]{%
\GetTitleStringExpand{#1}%
\edef\@currentlabelname{\detokenize\expandafter{\GetTitleStringResult}}%
\edef\@currentlabelname{%
\expandafter\LWR@stripperiod\@currentlabelname%
\ltx@empty.\ltx@empty\@nil%
}%
}
\def\LWR@setref#1#2#3{%
\ifx#1\relax%
??%
\else%
\expandafter#2#1%
\fi}
\newcommand*{\LWR@nameref}[1]{%
\expandafter\LWR@setref\csname r@#1@lwarp\endcsname\LWR@firstoffour{#1}%
}
\newcommand*{\LWR@htmlfileref}[1]{%
\expandafter\LWR@setref\csname r@#1@lwarp\endcsname\LWR@secondoffour{#1}%
}
\newcommand*{\LWR@lateximagedepthref}[1]{%
\expandafter\LWR@setref\csname r@#1@lwarp\endcsname\LWR@thirdoffour{#1}%
}
\newcommand*{\LWR@lateximagenumberref}[1]{%
\expandafter\LWR@setref\csname r@#1@lwarp\endcsname\LWR@fourthoffour{#1}%
}
\newcommand*{\LWR@write@lwarplabel}[1]{%
\LWR@traceinfo{LWR@write@lwarplabel !#1!}%
\LWR@setlatestname{\@currentlabelname}%
\@bsphack%
\protected@write\@auxout{}%
{%
\string\newlabel{#1@lwarp}{%
{\@currentlabelname}%
{%
\ifbool{FileSectionNames}%
{\LWR@thisfilename}%
{\arabic{LWR@htmlfilenumber}}%
}%
{\arabic{LWR@lateximagedepth}}%
{\arabic{LWR@lateximagenumber}}%
}%
}%
\@esphack%
}
\newcommand*{\LWR@label@subcreatetag}{%
\LWR@htmltag{a \LWR@print@mbox{id="\LWR@sanitized"}}%
\LWR@htmltag{/a}%
}
\newcommand*{\LWR@label@inmathcomment}{%
\ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
{%
\mbox{%
\ifdef{\totwidth@}{\ifbool{LWR@amsmultline}{}{\hspace*{\totwidth@}}}{}%
\LWR@htmlclosecomment%
\LWR@label@subcreatetag%
\LWR@htmlopencomment%
}% mbox
}% mathjax
{%
\LWR@label@subcreatetag%
}%
}
\newcommand*{\LWR@label@createtag}[1]{%
\LWR@traceinfo{LWR@label@createtag !#1!}%
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
{}%
{% not lateximage
\LWR@sanitize{#1}%
\ifbool{LWR@insidemathcomment}%
{% inside HTML math comment
\LWR@label@inmathcomment%
}% inside HTML math comment
{% not inside HTML math comment
\ifbool{LWR@doingstartpars}%
{% pars allowed
\ifbool{LWR@doingapar}%
{% par started
\LWR@label@subcreatetag%
}% par started
{% par not started
\LWR@stoppars%
\LWR@label@subcreatetag%
\LWR@startpars%
}% par not started
}% pars allowed
{% pars not allowed
\LWR@label@subcreatetag%
}% pars not allowed
}% not inside HTML math comment
}% not lateximage
}
\NewDocumentCommand{\LWR@new@label}{m}{%
\LWR@traceinfo{LWR@new@label: starting}%
\LWR@traceinfo{LWR@new@label: !#1!}%
\LWR@orig@label{#1}%
\LWR@traceinfo{%
LWR@new@label: filesectionnames is %
\ifbool{FileSectionNames}{true}{false}%
}%
\LWR@traceinfo{%
LWR@new@label: LWR@thisfilename is !\LWR@thisfilename!%
}%
\LWR@traceinfo{%
LWR@new@label: LWR@htmlfilenumber is \arabic{LWR@htmlfilenumber}%
}%
\LWR@write@lwarplabel{#1}%
\LWR@label@createtag{#1}%
% \@esphack%
\LWR@traceinfo{LWR@new@label: done}%
}
\newcommand*{\LWR@addlinktitle}{%
\ifdefvoid{\LWR@ThisAltText}{}{ % space
title="\LWR@ThisAltText" % space
\gdef\LWR@ThisAltText{}%
}%
}
\newcommand*{\LWR@startref}[1]
{%
\LWR@sanitize{#1}%
\LWR@traceinfo{LWR@startref A: !#1!}%
\LWR@htmltag{a href="%
\LWR@traceinfo{LWR@startref B}%
\LWR@print@mbox{\LWR@htmlrefsectionfilename{#1}}%
\LWR@traceinfo{LWR@startref C}%
\LWR@origpound%
\LWR@traceinfo{LWR@startref D: !#1!}%
\ifcsundef{r@#1@lwarp}%
{%
\LWR@traceinfo{LWR@startref D0: ??}%
??%
}%
{%
\ifthenelse{\cnttest{\LWR@lateximagedepthref{#1}}{>}{0}}%
{%
lateximage-\BaseJobname-\LWR@lateximagenumberref{#1}%
}%
{%
\LWR@traceinfo{LWR@startref D3}%
\LWR@print@mbox{\LWR@sanitized}%
}%
}%
\LWR@traceinfo{LWR@startref E}%
"%
\LWR@addlinktitle%
}%
\LWR@traceinfo{LWR@startref F}%
}
\NewDocumentCommand{\LWR@subnewref}{m m}{%
\LWR@traceinfo{LWR@subnewref #1 #2}%
\LWR@startref{#1}%
\LWR@print@ref{#2}%
\LWR@htmltag{/a}%
}
\LWR@absorbstar{ref}%
\NewDocumentCommand{\LWR@HTML@ref}{s m}{%
\LWR@traceinfo{LWR@HTML@ref !#2!}%
\IfBooleanTF{#1}%
{\LWR@print@ref{#2}}%
{\LWR@subnewref{#2}{#2}}%
}
\LWR@formatted{ref}
\CustomizeMathJax{\let\LWRref\ref}
\CustomizeMathJax{\renewcommand{\ref}{\ifstar\LWRref\LWRref}}
\newcommand*{\pagerefPageFor}{see }
\NewDocumentCommand{\LWR@new@pageref}{s m}{%
\IfBooleanTF{#1}%
{(\pagerefPageFor\LWR@print@ref{#2})}%
{(\cpageref{#2})}%
}
\newrobustcmd*{\nameref}[1]{%
\LWR@traceinfo{nameref}%
\LWR@startref{#1}%
\LWR@traceinfo{nameref B}%
\LWR@nameref{#1}%
\LWR@traceinfo{nameref C}%
\LWR@htmltag{/a}%
\LWR@traceinfo{nameref: done}%
}
\LetLtxMacro\Nameref\nameref
\AtBeginDocument{
\def\@currentHref{\BaseJobname-autopage-\theLWR@currentautosec}
}
\newcommand*{\LWR@linkcatcodes}{%
\catcode`\#=12%
\catcode`\%=12%
\catcode`\&=12%
\catcode`\~=12%
\catcode`\_=12%
\LWR@FBcancel%
}
\newcommand*{\LWR@linkmediacatcodes}{%
\catcode`\#=12%
\catcode`\%=12%
\catcode`\~=12%
\catcode`\_=12%
\LWR@FBcancel%
}
\NewDocumentCommand{\LWR@subhyperref}{m}{%
\LWR@traceinfo{LWR@subhyperref !#1!}%
\LWR@sanitize{#1}%
\LWR@htmltag{%
a href="\LWR@sanitized" % space
\LWR@addlinktitle % space
target="\_{}blank" % space
}%
}
\newcommand{\LWR@subhyperreftext}[1]{%
#1%
\LWR@htmltag{/a}%
\LWR@ensuredoingapar%
}
\NewDocumentCommand{\LWR@subhyperrefclass}{m +m m}{%
\LWR@htmltag{%
a % space
href="\begingroup\@sanitize#1\endgroup" % space
class="#3" % space
\LWR@addlinktitle % space
}\LWR@orignewline%
#2%
\LWR@htmltag{/a}%
\LWR@ensuredoingapar%
}
\DeclareDocumentCommand{\LWR@hrefb}{O{} m}{%
\LWR@ensuredoingapar%
\LWR@subhyperref{#2}%
\endgroup% restore catcodes
\LWR@subhyperreftext%
}
\newrobustcmd*{\LWR@href}{%
\begingroup%
\LWR@linkcatcodes%
\LWR@hrefb%
}
\newcommand*{\LWR@nolinkurlb}[1]{%
\LWR@ensuredoingapar%
\def\LWR@templink{#1}%
\@onelevel@sanitize\LWR@templink%
\LWR@templink%
\endgroup%
}
\newrobustcmd*{\LWR@nolinkurl}{%
\begingroup%
\LWR@linkcatcodes%
\LWR@nolinkurlb%
}
\DeclareDocumentCommand{\LWR@urlb}{m}{%
\LWR@ensuredoingapar%
\def\LWR@templink{#1}%
\@onelevel@sanitize\LWR@templink%
\LWR@href{\LWR@templink}{\LWR@templink}%
\endgroup%
}
\newrobustcmd*{\LWR@url}{%
\begingroup%
\LWR@linkcatcodes%
\LWR@urlb%
}
\newcommand*{\LWR@subinlineimage}[5]{%
\ifblank{#1}%
{%
\LWR@htmltag{img \LWR@indentHTML
src="#3.#4" \LWR@indentHTML
alt="#3" \LWR@indentHTML
style="#5" \LWR@indentHTML
class="#2" \LWR@orignewline
}%
}%
{%
\LWR@htmltag{img \LWR@indentHTML
src="#3.#4" \LWR@indentHTML
alt="#1" \LWR@indentHTML
style="#5" \LWR@indentHTML
class="#2" \LWR@orignewline
}%
}%
}
\end{warpHTML}
\begin{warpHTML}
\NewDocumentCommand{\LWR@floatbegin}{m o}{%
\LWR@spanwarninvalid{float}%
\ifbool{FormatWP}{\newline}{}%
\LWR@stoppars%
\addtocounter{LWR@thisautoid}{1}%
\booltrue{LWR@freezethisautoid}%
\begingroup%
\LWR@print@raggedright%
\LWR@htmltag{%
figure id="\LWR@print@mbox{autoid-\arabic{LWR@thisautoid}}" % space
class="#1 \@nameuse{LWR@floatstyle@#1}"%
}%
\ifbool{FormatWP}{%
\LWR@orignewline%
\LWR@BlockClassWP{}{}{wp#1}%
}{}%
\renewcommand*{\@captype}{#1}%
\LWR@startpars%
\ifboolexpr{bool{FormatWP} and bool{WPMarkFloats}}{%
=== begin #1 ===
}{}%
}
\AtBeginDocument{
\@ifpackageloaded{tocbasic}{
\appto\figure@atbegin{%
\LWR@futurenonspacelet\LWR@mynexttoken\LWR@floatalignment%
}
}{}% tocbasic
}% AtBeginDocument
\AtBeginDocument{
\def\@xfloat #1[#2]{%
\LWR@floatbegin{#1}[#2]
\LWR@futurenonspacelet\LWR@mynexttoken\LWR@floatalignment%
}
\def\@xdblfloat #1[#2]{%
\LWR@floatbegin{#1}[#2]
\LWR@futurenonspacelet\LWR@mynexttoken\LWR@floatalignment%
}
}
\newcommand*{\LWR@floatend}{%
\LWR@endfloatalignment%
\ifboolexpr{bool{FormatWP} and bool{WPMarkFloats}}{%
=== end ===
}{}%
\LWR@stoppars%
\ifbool{FormatWP}{\endLWR@BlockClassWP}{}%
\LWR@htmlelementend{figure}%
\endgroup%
\boolfalse{LWR@freezethisautoid}%
\LWR@startpars%
\ifbool{FormatWP}{\newline}{}%
}
\AtBeginDocument{
\let\end@float\LWR@floatend
\let\end@dblfloat\LWR@floatend
}
\newcounter{LWR@thisautoid}
\newcounter{LWR@thisautoidWP}
\newbool{LWR@freezethisautoid}
\boolfalse{LWR@freezethisautoid}
\newcommand*{\LWR@forcenewautoidanchor}{%
\addtocounter{LWR@thisautoid}{1}%
\ifbool{LWR@doingapar}%
{%
\LWR@htmltag{a id="\LWR@print@mbox{autoid-\arabic{LWR@thisautoid}}" }%
\LWR@htmltag{/a }%
}%
{%
\LWR@stoppars%
\LWR@htmltag{a id="\LWR@print@mbox{autoid-\arabic{LWR@thisautoid}}" }%
\LWR@htmltag{/a }%
\LWR@startpars%
}%
}
\newcommand*{\LWR@newautoidanchor}{%
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
{}%
{\ifbool{LWR@freezethisautoid}{}{\LWR@forcenewautoidanchor}}%
}
\newcommand*{\@captype}{}
\newcommand*{\LWR@floatalignmentname}{}
\newcommand*{\LWR@floatalignment}{%
\ifdefstrequal{\LWR@mynexttoken}{\centering}{%
\center%
\renewcommand*{\LWR@floatalignmentname}{center}%
}{}%
\ifdefstrequal{\LWR@mynexttoken}{\raggedright}{%
\flushleft%
\renewcommand*{\LWR@floatalignmentname}{flushleft}%
}{}%
\ifdefstrequal{\LWR@mynexttoken}{\raggedleft}{%
\flushright%
\renewcommand*{\LWR@floatalignmentname}{flushright}%
}{}%
}
\newcommand*{\LWR@endfloatalignment}{%
\ifdefvoid{\LWR@floatalignmentname}%
{}%
{\@nameuse{end\LWR@floatalignmentname}}%
\renewcommand*{\LWR@floatalignmentname}{}%
}
\AtBeginDocument{\providecommand*{\CaptionSeparator}{:~}}
\AtBeginDocument{
\@ifpackageloaded{caption}{}{
\let\LWR@orig@caption\@caption%
\long\def\@caption#1[#2]{%
\LWR@spanwarnformat{caption}%
\LWR@setlatestname{#2}%
\LWR@orig@caption{#1}[{#2}]% also takes third argument
}%
\renewcommand{\@makecaption}[2]{%
\LWR@traceinfo{@makecaption}%
\caption@begin{\@captype}%
\LWR@isolate{#1}%
\edef\LWR@tempone{#1}%
\ifdefvoid{\LWR@tempone}{}{\CaptionSeparator}%
\LWR@isolate{#2}%
\caption@end%
\LWR@traceinfo{@makecaption: done}%
}%
}
}
\newcounter{LWR@nextautoid}
\newcounter{LWR@nextautopage}
\newcommand*{\LWRsetnextfloat}[2]{%
\setcounter{LWR@nextautopage}{#1}%
\setcounter{LWR@nextautoid}{#2}%
}
\newcounter{LWR@latestautopage}
\setcounter{LWR@latestautopage}{1}
\newenvironment*{LWR@figcaption}
{%
\ifbool{FormatWP}{%
\BlockClass[font-style:italic]{figurecaption}%
}{%
\BlockClass{figurecaption}%
}%
}%
{\endBlockClass}
\newcommand*{\LWR@HTML@caption@begin}[1]
{%
\LWR@traceinfo{LWR@HTML@caption@begin}%
\begingroup%
\RenewDocumentEnvironment{minipage}{O{t} o O{t} m}{}{}%
\RenewDocumentCommand{\parbox}{O{t} O{} O{t} m +m}{##5}%
\LWR@figcaption%
\LWR@traceinfo{LWR@HTML@caption@begin: about to LWR@origcaption@begin}%
\LWR@print@caption@begin{#1}%
\LWR@traceinfo{LWR@HTML@caption@begin: done}%
}
\newcommand*{\LWR@HTML@caption@end}
{%
\LWR@traceinfo{LWR@HTML@caption@end}%
\LWR@print@caption@end%
\endLWR@figcaption%
\endgroup%
% \leavevmode% avoid bad space factor (0) error
\LWR@traceinfo{LWR@HTML@caption@end: done}%
}
\AtBeginDocument{
\providecommand{\caption@begin}[1]{}
\LWR@formatted{caption@begin}
\providecommand{\caption@end}{}
\LWR@formatted{caption@end}
}
\AtBeginDocument{%
\@ifpackageloaded{caption}{
\let\LWR@origcaptionlistentry\captionlistentry
\renewcommand*{\captionlistentry}{%
\LWR@ensuredoingapar%
\LWR@origcaptionlistentry%
}
\def\LWR@LTcaptionlistentry{%
\LWR@ensuredoingapar%
\LWR@forcenewautoidanchor%
\bgroup%
\@ifstar{\egroup\LWR@LT@captionlistentry}% gobble *
{\egroup\LWR@LT@captionlistentry}%
}%
\def\LWR@LT@captionlistentry#1{%
\caption@listentry\@firstoftwo[\LTcaptype]{#1}%
}%
}% caption loaded
{% caption not loaded
\newcommand{\captionlistentry}[2][]{}%
\newcommand{\LWR@LT@captionlistentry}[2][]{}%
}
}% AtBeginDocument
\let\LWR@origaddcontentsline\addcontentsline
\renewcommand*{\addcontentsline}[3]{%
\ifstrequal{#1}{toc}{}{% not TOC
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
{}%
{\LWR@newautoidanchor}%
\ifcsvoid{ext@#2}{\csdef{ext@#2}{#1}}{}%
\addtocontents{\@nameuse{ext@#2}}{%
\protect\LWRsetnextfloat%
{\arabic{LWR@latestautopage}}%
{\arabic{LWR@thisautoid}}%
}%
}% not TOC
\LWR@origaddcontentsline{#1}{#2}{#3}%
}
\RequirePackage{capt-of}
\AtBeginDocument{
\let\LWR@origcaptionof\captionof
\renewcommand*{\captionof}{%
\LWR@stoppars%
\LWR@origcaptionof%
}
}% AtBeginDocument
\end{warpHTML}
\begin{warpHTML}
\newcommand*{\LWR@myshorttoc}[1]{%
\LWR@traceinfo{LWR@myshorttoc: #1}%
\LWR@ensuredoingapar%
\IfFileExists{\jobname.#1}{%
\LWR@traceinfo{LWR@myshorttoc: loading}%
\begingroup%
\makeatletter%
\LWR@disablepinyin%
\@input{\jobname.#1}%
\endgroup%
}%
{}%
\LWR@traceinfo{LWR@myshorttoc: done}%
}
\NewDocumentCommand{\LWR@subtableofcontents}{m m}{%
\@ifundefined{chapter}%
{\LWR@closeprevious{section}}%
{\LWR@closeprevious{chapter}}%
\LWR@printpendingfootnotes%
\@ifundefined{chapter}{\section*{#2}}{\chapter*{#2}}%
\LWR@htmlelementclass{nav}{#1}%
\LWR@myshorttoc{#1}%
\LWR@htmlelementclassend{nav}{#1}%
}
\let\LWR@orig@starttoc\@starttoc
\renewcommand{\@starttoc}[1]{
\LWR@htmlelementclass{nav}{#1}%
\LWR@orig@starttoc{#1}%
\LWR@htmlelementclassend{nav}{#1}%
}
\newbool{LWR@copiedsidetoc}
\boolfalse{LWR@copiedsidetoc}
\AtBeginDocument{
\let\LWR@origtableofcontents\tableofcontents
\renewcommand*{\tableofcontents}{%
\ifboolexpr{bool{FormatWP} and bool{WPMarkTOC}}{
=== table of contents ===
}
{
\ifbool{LWR@copiedsidetoc}{}{%
\LWR@copyfile{\jobname.toc}{\jobname.sidetoc}%
\booltrue{LWR@copiedsidetoc}%
}%
\LWR@printpendingfootnotes
\LWR@origtableofcontents
}
}% \tableofcontents
}% AtBeginDocument
\let\LWR@origlistoffigures\listoffigures
\renewcommand*{\listoffigures}{
\ifboolexpr{bool{FormatWP} and bool{WPMarkLOFT}}{
=== list of figures ===
}
{
\LWR@printpendingfootnotes
\LWR@origlistoffigures
}
}
\let\LWR@origlistoftables\listoftables
\renewcommand*{\listoftables}{
\ifboolexpr{bool{FormatWP} and bool{WPMarkLOFT}}{
=== list of tables ===
}
{
\LWR@printpendingfootnotes
\LWR@origlistoftables
}
}
\NewDocumentCommand{\listof}{m +m}{%
\@ifundefined{l@#1}{%
\csdef{l@#1}##1##2{\hypertocfloat{1}{#1}{\@nameuse{ext@#1}}{##1}{##2}}%
}{}%
\LWR@subtableofcontents{\@nameuse{ext@#1}}{#2}%
\expandafter\newwrite\csname tf@\csname ext@#1\endcsname\endcsname%
\immediate\openout \csname tf@\csname ext@#1\endcsname\endcsname%
\jobname.\@nameuse{ext@#1}\relax%
}
\end{warpHTML}
\begin{warpall}
\newcounter{SideTOCDepth}
\setcounter{SideTOCDepth}{1}
\AtEndDocument{%
\ifnumcomp{\value{SideTOCDepth}}{<}{\value{FileDepth}}{
\PackageWarningNoLine{lwarp}
{%
SideTOCDepth is less than FileDepth,\MessageBreak
so some website pages may be inaccessible%
}
}{}
}
\newcommand{\sidetocname}{Contents}
\end{warpall}
\begin{warpHTML}
\newcommand*{\LWR@sidetoc}{%
\LWR@forcenewpage
\LWR@stoppars
\LWR@htmlelementclass{div}{sidetoccontainer}
\LWR@htmlelementclass{nav}{sidetoc}
\setcounter{tocdepth}{\value{SideTOCDepth}}
\begin{BlockClass}{sidetoctitle}
\ifcsvoid{thetitle}{}{\InlineClass{sidetocthetitle}{\thetitle}\par}
\sidetocname
\end{BlockClass}
\begin{BlockClass}{sidetoccontents}
\LinkHome
\LWR@myshorttoc{sidetoc}
\end{BlockClass}
\LWR@htmlelementclassend{nav}{sidetoc}
\LWR@htmlelementclassend{div}{sidetoccontainer}
}
\newcommand*{\LWR@numberline}[1]{%
\LWR@sectionnumber{#1}\quad%
}
\LetLtxMacro\numberline\LWR@numberline
\newcommand*{\LWR@maybetocdata}{}
\NewDocumentCommand{\hypertoc}{m m +m m}{%
\LWR@traceinfo{hypertoc !#1!#2!#3!#4!}%
\ifnumcomp{#1}{>}{\value{tocdepth}}%
{}%
{%
\LWR@startpars%
\LWR@subhyperrefclass{%
\LWR@htmlrefsectionfilename{\BaseJobname-autopage-#4}%
\LWR@origpound\LWR@print@mbox{autosec-#4}%
}{#3}{toc#2}%
\LWR@maybetocdata%
\LWR@stoppars%
}%
\LWR@traceinfo{hypertoc done}%
}
\@ifclassloaded{memoir}{}{
\newcounter{lofdepth}
\setcounter{lofdepth}{1}
}
\@ifclassloaded{memoir}{}{
\newcounter{lotdepth}
\setcounter{lotdepth}{1}
}
\newcommand{\hypertocfloat}[5]{%
\@ifundefined{c@#3depth}{%
\newcounter{#3depth}%
\setcounter{#3depth}{1}%
}{}%
\LWR@traceinfo{hypertocfloat depth is #1 #3depth is \arabic{#3depth}}%
\ifthenelse{\cnttest{#1}{<=}{\arabic{#3depth}}}%
{%
\LWR@startpars%
\LWR@subhyperrefclass{%
\LWR@htmlrefsectionfilename{%
\BaseJobname-autopage-\arabic{LWR@nextautopage}%
}%
\LWR@origpound\LWR@print@mbox{autoid-\arabic{LWR@nextautoid}}}%
{#4}{toc#2}%
\LWR@maybetocdata%
\LWR@stoppars%
}%
{}%
}
\DeclareDocumentCommand{\l@book}{m m}{\hypertoc{-2}{book}{#1}{#2}}
\DeclareDocumentCommand{\l@part}{m m}{\hypertoc{-1}{part}{#1}{#2}}
\@ifundefined{chapter}
{}
{
\DeclareDocumentCommand{\l@chapter}{m m}
{\hypertoc{0}{chapter}{#1}{#2}}
}
\renewcommand{\l@section}[2]{\hypertoc{1}{section}{#1}{#2}}
\renewcommand{\l@subsection}[2]{\hypertoc{2}{subsection}{#1}{#2}}
\renewcommand{\l@subsubsection}[2]{\hypertoc{3}{subsubsection}{#1}{#2}}
\renewcommand{\l@paragraph}[2]{\hypertoc{4}{paragraph}{#1}{#2}}
\renewcommand{\l@subparagraph}[2]{\hypertoc{5}{subparagraph}{#1}{#2}}
\renewcommand{\l@figure}[2]{\hypertocfloat{1}{figure}{lof}{#1}{#2}}
\renewcommand{\l@table}[2]{\hypertocfloat{1}{table}{lot}{#1}{#2}}
\end{warpHTML}
\begin{warpHTML}
\newcounter{LWR@autoindex}
\setcounter{LWR@autoindex}{0}
\newcounter{LWR@autoglossary}
\setcounter{LWR@autoglossary}{0}
\newcommand*{\IndexPageSeparator}{, }
\newcommand*{\IndexRangeSeparator}{--}
\@ifundefined{chapter}
{\newcommand*{\LWR@indexsection}[1]{\section*{#1}}}
{\newcommand*{\LWR@indexsection}[1]{\chapter*{#1}}}
\AtBeginDocument{
\renewenvironment*{theindex}{%
\LWR@indexsection{\indexname}%
\let\item\LWR@indexitem%
\let\subitem\LWR@indexsubitem%
\let\subsubitem\LWR@indexsubsubitem%
}{}
}% AtBeginDocument
\newcommand{\LWR@indexitem}[1][\@empty]{
\InlineClass{indexitem}{\LWR@htmlcomment{}}#1%
}
\newcommand{\LWR@indexsubitem}{
\InlineClass{indexsubitem}{\LWR@htmlcomment{}}%
}
\newcommand{\LWR@indexsubsubitem}{
\InlineClass{indexsubsubitem}{\LWR@htmlcomment{}}%
}
\NewDocumentCommand{\LWR@xindex@modifyentry}{>{\SplitArgument{1}{|}}m}
{\LWR@xindex@modifyentrysub#1}
\newcommand*{\LWR@xindex@modifyentrysub}[2]{%
\edef\LWR@tempone{#1}%
\edef\LWR@temptwo{#2}%
\IfValueTF{#2}{%
\ifx#2(%
\appto\LWR@tempone{|(}%
\else%
\ifx#2)%
\appto\LWR@tempone{|)}%
\else%
\appto\LWR@tempone{%
|hyperindexformat\LWRleftbrace%
\LWRbackslash#2%
\LWRrightbrace%
}%
\fi%
\fi%
}%
{}%
}
\newbool{LWR@xindex@tricked}
\boolfalse{LWR@xindex@tricked}
\def\LWR@wrindex#1{%
\ifbool{LWR@xindex}{%
\ifbool{LWR@xindex@tricked}{}{%
\protected@write\@indexfile{}%
{%
\LWRpercent\space hyperpage\LWRrightbrace%
\LWRpercent\space trick xindex to assume hyperref%
}%
\global\booltrue{LWR@xindex@tricked}%
}%
\LWR@xindex@modifyentry{#1}%
}{%
\def\LWR@tempone{#1}%
}%
\addtocounter{LWR@autoindex}{1}%
\label{LWRindex-\arabic{LWR@autoindex}}%
\protected@write\@indexfile{}%
{\string\indexentry{\LWR@tempone}{\arabic{LWR@autoindex}}}%
\endgroup%
\@esphack%
}
\AtBeginDocument{
\let\@wrindex\LWR@wrindex
}
\def\@wrglossary#1{%
\addtocounter{LWR@autoglossary}{1}%
\LWR@new@label{LWRglossary-\theLWR@autoglossary}%
\protected@write\@glossaryfile{}%
{\string\glossaryentry{#1}{\theLWR@autoglossary}}%
\endgroup%
\@esphack%
}
\newcommand*{\LWR@indexnameref@anonref}[1]{%
\LWR@startref{LWRindex-#1}%
(*)%
\LWR@htmltag{/a}%
}
\newcommand*{\LWR@indexnameref@ref}[1]{%
\edef\LWR@thisref{\csuse{r@LWRindex-#1}}%
\ifdefvoid{\LWR@thisref}{}{%
\edef\LWR@thisref{\expandafter\@firstoftwo\LWR@thisref}%
\ifdefvoid{\LWR@thisref}%
{\LWR@indexnameref@anonref{#1}}%
{\ref{LWRindex-#1}}%
}%
}
\newcommand*{\LWR@indexnameref@refnameref}[1]{%
\edef\LWR@thisref{\csuse{r@LWRindex-#1}}%
\ifdefvoid{\LWR@thisref}{}{%
\edef\LWR@thisref{\expandafter\@firstoftwo\LWR@thisref}%
\ifdefvoid{\LWR@thisref}{}{%
\ifdefstring{\LWR@thisref}{(*)}%
{}%
{\ref{LWRindex-#1} }% space
}%
}%
\nameref{LWRindex-#1}%
}
\newcommand*{\LWR@indexnameref@cref}[1]{%
\edef\LWR@thisref{\csuse{r@LWRindex-#1}}%
\ifdefvoid{\LWR@thisref}{%
\nameref{LWRindex-#1}%
}{%
\edef\LWR@thisref{\expandafter\@firstoftwo\LWR@thisref}%
\ifdefvoid{\LWR@thisref}{%
\nameref{LWRindex-#1}%
}{%
\ifdefstring{\LWR@thisref}{(*)}{%
\LWR@indexnameref@anonref{#1}%
}{%
\cref{LWRindex-#1}%
}%
}%
}%
}
\newcommand*{\LWR@indexnameref@crefnameref}[1]{%
\edef\LWR@thisref{\csuse{r@LWRindex-#1}}%
\ifdefvoid{\LWR@thisref}%
{}%
{%
\edef\LWR@thisref{\expandafter\@firstoftwo\LWR@thisref}%
\ifdefvoid{\LWR@thisref}%
{}%
{%
\ifdefstring{\LWR@thisref}{(*)}%
{}%
{\cref{LWRindex-#1}} % space
}%
}%
\nameref{LWRindex-#1}%
}
\newcommand*{\LWR@indexnameref}[1]{%
{% group
\ifdef{\caption@xref}{%
\renewcommand*{\caption@xref}[2]{(*)}%
}{}%
\ifdefstring{\LWR@IndexRef}{ref}{%
\LWR@indexnameref@ref{#1}%
}{%
\ifdefstring{\LWR@IndexRef}{nameref}{%
\nameref{LWRindex-#1}%
}{%
\ifdefstring{\LWR@IndexRef}{refnameref}{%
\LWR@indexnameref@refnameref{#1}%
}{%
\ifdefstring{\LWR@IndexRef}{cref}{%
\LWR@indexnameref@cref{#1}%
}{%
\ifdefstring{\LWR@IndexRef}{crefnameref}{%
\LWR@indexnameref@crefnameref{#1}%
}{%
\ifdefstring{\LWR@IndexRef}{autoref}{%
\LWR@indexnameref@cref{#1}%
}{% text string
\LWR@startref{LWRindex-#1}%
\LWR@IndexRef%
\LWR@htmltag{/a}%
}}}}}}%
}% group
}
\newrobustcmd{\LWR@doindexentrysubsub}[2]{%
\IfInteger{#1}%
{\LWR@indexnameref{#1}}%
{#1}%
\IfValueT{#2}{%
\IndexRangeSeparator%
\IfInteger{#2}%
{\LWR@indexnameref{#2}}%
{#2}%
}%
}
\NewDocumentCommand{\LWR@doindexentrysub}{m >{\SplitArgument{1}{#1}}m}
{\LWR@doindexentrysubsub#2}
\newcommand*{\LWR@doindexentry}[1]{%
\relax% required
\expandafter\LWR@doindexentrysub\expandafter{\IndexRangeSeparator}{#1}%
}
\newcommand{\LWR@hyperindexrefnullified}{%
\renewrobustcmd{\emph}[1]{\LWR@HTML@emph{\LWR@doindexentry{##1}}}%
\renewrobustcmd{\textbf}[1]{\LWR@HTML@textbf{\LWR@doindexentry{##1}}}%
\renewrobustcmd{\texteb}[1]{\LWR@HTML@texteb{\LWR@doindexentry{##1}}}%
\renewrobustcmd{\textlg}[1]{\LWR@HTML@textlg{\LWR@doindexentry{##1}}}%
\renewrobustcmd{\textrm}[1]{\LWR@HTML@textrm{\LWR@doindexentry{##1}}}%
\renewrobustcmd{\textsf}[1]{\LWR@HTML@textsf{\LWR@doindexentry{##1}}}%
\renewrobustcmd{\texttt}[1]{\LWR@HTML@texttt{\LWR@doindexentry{##1}}}%
\renewrobustcmd{\textup}[1]{\LWR@HTML@textup{\LWR@doindexentry{##1}}}%
\renewrobustcmd{\textsc}[1]{\LWR@HTML@textsc{\LWR@doindexentry{##1}}}%
\renewrobustcmd{\textulc}[1]{\LWR@HTML@textulc{\LWR@doindexentry{##1}}}%
\renewrobustcmd{\textsi}[1]{\LWR@HTML@textsi{\LWR@doindexentry{##1}}}%
\renewrobustcmd{\textit}[1]{\LWR@HTML@textit{\LWR@doindexentry{##1}}}%
\renewrobustcmd{\textsl}[1]{\LWR@HTML@textsl{\LWR@doindexentry{##1}}}%
}
\newcommand*{\hyperindexref}[1]{%
\relax% required
\expandafter\LWR@hyperindexref@comma\expandafter{\IndexPageSeparator}{#1}%
}
\NewDocumentCommand{\LWR@hyperindexref@comma}
{m >{\SplitList{#1}} m}
{%
\def\LWR@hyperindexref@thiscomma{}%
\def\LWR@hyperindexref@nextcomma{#1}%
\ProcessList{#2}\LWR@hyperindexref@@comma%
}
\newcommand*{\LWR@hyperindexref@@comma}[1]{%
\LWR@hyperindexref@thiscomma%
\renewcommand{\LWR@hyperindexref@thiscomma}{\LWR@hyperindexref@nextcomma}%
\expandafter\LWR@hyperindexref@range\expandafter{\IndexRangeSeparator}{#1}%
}
\NewDocumentCommand{\LWR@hyperindexref@range}
{m >{\SplitArgument{1}{#1}} m}
{\LWR@hyperindexrefsub#2}
\newcommand*{\LWR@hyperindexrefsub}[2]{%
\LWR@hyperindexrefsubtwo{#1}%
\IfValueT{#2}{%
\IndexRangeSeparator%
\LWR@hyperindexrefsubtwo{#2}%
}%
}
\newcommand*{\LWR@hyperindexrefsubtwo}[1]{%
\edef\LWR@tempone{#1}%
\IfBeginWith{\LWR@tempone}{ }{%
\StrGobbleLeft{\LWR@tempone}{1}[\LWR@tempone]%
}{}%
\IfInteger{\LWR@tempone}%
{\LWR@indexnameref{\LWR@tempone}}%
{%
\begingroup%
\LWR@hyperindexrefnullified%
#1%
\endgroup%
}%
}
\LetLtxMacro\hyperpage\hyperindexref
\def\nohyperpage#1{}
\def\hyperindexformat#1#2{%
#1{\hyperpage{#2}}%
}%
\end{warpHTML}
\begin{warpprint}
\newcommand{\hyperindexref}[1]{#1}
\end{warpprint}
\begin{warpall}
\providecommand{\glo@name}{}
\end{warpall}
\begin{warpHTML}
\renewcommand{\@biblabel}[1]{[#1]\quad}
\AtBeginDocument{
\AtBeginEnvironment{thebibliography}{
\providecommand*{\LWR@newem}[1]{\textit{#1}}
\renewrobustcmd{\em}{%
\begingroup
\gdef\LWR@em@after{\LWR@em@finish\LWR@newem}%
\afterassignment\LWR@em@after
\toks@\bgroup
}
\def\LWR@em@finish#1{%
\xdef\LWR@em@after{\noexpand#1{\the\toks@}}%
\endgroup
\LWR@em@after\egroup
}
}% \AtBeginEnvironment{thebibliography}
}% \AtBeginDocument
\end{warpHTML}
\begin{warpHTML}
\newcommand*{\LWR@restoreMathJaxformatting}{}
\newcommand*{\LWR@restoreorigformatting}{%
\LWR@traceinfo{LWR@restoreorigformatting}%
\renewcommand*{\LWR@formatting}{print}%
\linespread{1}%
\let\par\LWR@origpar%
\LWR@select@print@hspace%
\LetLtxMacro\hfil\LWR@orighfil%
\let\hss\LWR@orighss%
\let\llap\LWR@origllap%
\let\rlap\LWR@origrlap%
\let\hfilneg\LWR@orighfilneg%
\let\,\LWR@origcomma% disable HTML short unbreakable space
\let\thinspace\LWR@origthinspace% disable HTML short unbreakable space
\let\negthinspace\LWR@orignegthinspace% disable HTML negative short unbreakable space
\let\textellipsis\LWR@origtextellipsis%
\let\vdots\LWR@origvdots%
\let\textless\LWR@origtextless%
\let\textgreater\LWR@origtextgreater%
\let\&\LWR@origampersand%
\LetLtxMacro\em\LWR@origem%
\LetLtxMacro\normalfont\LWR@orignormalfont%
\let\sp\LWR@origsp%
\let\sb\LWR@origsb%
\LetLtxMacro\underline\LWR@origunderline%
\let~\LWR@origtilde%
\let\enskip\LWR@origenskip%
\let\quad\LWR@origquad%
\let\qquad\LWR@origqquad%
\LetLtxMacro\endtabular\LWR@origendtabular%
\csletcs{endtabular*}{LWR@origendtabular*}%
\LetLtxMacro\noalign\LWR@orignoalign%
\LetLtxMacro\hline\LWR@orighline%
\let\newline\LWR@orignewline%
\LetLtxMacro\includegraphics\LWR@origincludegraphics%
\LetLtxMacro\@ensuredmath\LWR@origensuredmath%
\let\math\LWR@orig@math%
\let\endmath\LWR@orig@endmath%
\let\displaymath\LWR@orig@displaymath%
\let\enddisplaymath\LWR@orig@enddisplaymath%
\LWR@restoreorigaccents%
\LWR@restoreoriglists%
\LWR@FBcancel%
\ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
{\LWR@restoreMathJaxformatting}%
{}%
}
\end{warpHTML}
\begin{warpHTML}
\newcommand*{\LWR@dash}{-}
\catcode`\$=\active% redefining $ below
\catcode`\_=12% redefining \_ below
\newcommand*{\LWR@nullfonts}{%
\renewcommand*{\$}{-}%
\renewcommand*{\%}{-}%
\renewcommand*{\_}{-}%
\renewcommand*{\}}{-}%
\renewcommand*{\{}{-}%
\renewcommand*{\&}{-}% used to be 'and'
\renewcommand*{\#}{-}%
\renewcommand*{\,}{-}%
\renewcommand*{~}{-}%
\renewcommand*{\`}[1]{##1}%
\renewcommand*{\'}[1]{##1}%
\renewcommand*{\^}[1]{##1}%
\renewcommand*{\~}[1]{##1}%
\renewcommand*{\=}[1]{##1}%
\renewcommand*{\u}[1]{##1}%
\renewcommand*{\.}[1]{##1}%
\renewcommand*{\"}[1]{##1}%
\renewcommand*{\H}[1]{##1}%
\renewcommand*{\v}[1]{##1}%
\renewcommand*{\d}[1]{##1}%
\renewcommand*{\c}[1]{##1}%
\renewcommand*{\b}[1]{##1}%
\renewcommand*{\t}[1]{##1}%
\let\newline\LWR@dash%
\let\textasciicircum\LWR@dash%
\let\textasciitilde\LWR@dash%
\let\textasteriskcentered\LWR@dash%
\let\textbackslash\LWR@dash%
\let\textbar\LWR@dash%
\let\textbardbl\LWR@dash%
\let\textbigcircle\LWR@dash%
\let\textbraceleft\LWR@dash%
\let\textbraceright\LWR@dash%
\let\textbullet\LWR@dash%
\let\textcopyright\LWR@dash%
\let\textdagger\LWR@dash%
\let\textdaggerdbl\LWR@dash%
\let\textdollar\LWR@dash%
\let\textellipsis\LWR@dash%
\let\textemdash\LWR@dash%
\let\textendash\LWR@dash%
\let\textexclamdown\LWR@dash%
\let\textgreater\LWR@dash%
\let\textless\LWR@dash%
\let\textordfeminine\LWR@dash%
\let\textordmasculine\LWR@dash%
\let\textparagraph\LWR@dash%
\let\textperiodcentered\LWR@dash%
\let\textpertenthousand\LWR@dash%
\let\textperthousand\LWR@dash%
\let\textquestiondown\LWR@dash%
\let\textquotedblleft\LWR@dash%
\let\textquotedblright\LWR@dash%
\let\textquoteleft\LWR@dash%
\let\textquoteright\LWR@dash%
\let\textregistered\LWR@dash%
\let\textsection\LWR@dash%
\let\textsterling\LWR@dash%
\let\texttrademark\LWR@dash%
\let\textunderscore\LWR@dash%
\let\textvisiblespace\LWR@dash%
\let\copyright\LWR@dash%
\let\dag\LWR@dash%
\let\ddag\LWR@dash%
\let\dots\LWR@dash%
\let\P\LWR@dash%
\let\pounds\LWR@dash%
\let\S\LWR@dash%
\renewcommand*{\aa}{a}%
\renewcommand*{\AA}{A}%
\renewcommand*{\AE}{AE}%
\renewcommand*{\ae}{ae}%
\renewcommand*{\dh}{d}%
\renewcommand*{\DH}{D}%
\renewcommand*{\DJ}{D}%
\renewcommand*{\dj}{d}%
\renewcommand*{\IJ}{IJ}%
\renewcommand*{\ij}{ij}%
\renewcommand*{\L}{L}%
\renewcommand*{\l}{l}%
\renewcommand*{\NG}{NG}%
\renewcommand*{\ng}{ng}%
\renewcommand*{\O}{O}%
\renewcommand*{\o}{o}%
\renewcommand*{\oe}{oe}%
\renewcommand*{\OE}{OE}%
\renewcommand*{\ss}{ss}%
\renewcommand*{\SS}{SS}%
\renewcommand*{\th}{th}%
\renewcommand*{\TH}{TH}%
\let\guillemotleft\@empty%
\let\guilsinglleft\@empty%
\let\quotedblbase\@empty%
\let\textquotedbl\@empty%
\let\guillemotright\@empty%
\let\guilsinglright\@empty%
\let\quotesinglbase\@empty%
\renewcommand*{\HTMLunicode}[1]{}%
\renewcommand*{\HTMLentity}[1]{}%
\renewcommand{\textsuperscript}[1]{##1}%
\renewcommand{\textsubscript}[1]{##1}%
\renewcommand{\underline}[1]{##1}%
\RenewDocumentCommand{\hspace}{s m}{}%
\RenewDocumentCommand{\LWR@htmlspanclass}{o m +m}{##3}%
\DeclareExpandableDocumentCommand{\InlineClass}{D{(}{)}{} o m +m}{##4}%
\def\(##1\){}%
\def\[##1\]{}%
\RenewDocumentCommand{\LWR@subsingledollar}{s m m m}{}%
\renewcommand*{\TeX}{TeX}%
\renewcommand*{\LaTeX}{LaTeX}%
\renewcommand*{\LaTeXe}{LaTeX2e}%
\renewcommand*{\LuaTeX}{LuaTeX}%
\renewcommand*{\LuaLaTeX}{LuaLaTeX}%
\renewcommand*{\XeTeX}{XeTeX}%
\renewcommand*{\XeLaTeX}{XeLaTeX}%
\renewcommand*{\ConTeXt}{ConTeXt}%
\renewcommand*{\BibTeX}{BibTeX}%
\renewcommand*{\MakeIndex}{MakeIndex}%
\renewcommand*{\AmS}{AmS}%
\renewcommand*{\MiKTeX}{MiKTeX}%
\renewcommand*{\LyX}{LyX}%
\def\texorpdfstring{\expandafter\@secondoftwo}%
}
\catcode`\$=3%
\catcode`\_=8%
\newcommand*{\FilenameNullify}[1]{%
\appto{\LWR@nullfonts}{#1}%
}
\end{warpHTML}
\begin{warpall}
\newcommand*{\AltTextOpen}{(}
\newcommand*{\AltTextClose}{)}
\newcommand*{\ImageAltText}{image}
\newcommand*{\MathImageAltText}{math image}
\newcommand*{\LWR@ThisAltText}{}
\newcommand*{\ThisAltText}[1]{%
\renewcommand{\LWR@ThisAltText}{#1}%
}
\newcommand*{\PackageDiagramAltText}{diagram}
\end{warpall}
\begin{warpHTML}
\newcounter{LWR@externalfilecnt}
\newbool{LWR@indisplaymathimage}
\newbool{LWR@insidemathcomment}
\boolfalse{LWR@insidemathcomment}
\newbool{LWR@xfakebold}
\boolfalse{LWR@xfakebold}
\newcommand*{\LWR@orig@setBold}{}
\newcommand*{\LWR@orig@unsetBold}{}
\newcommand*{\LWR@applyxfakebold}{}
\newcommand*{\LWR@setcurrentfont}{%
\LWR@traceinfo{Using font family \LWR@f@family}%
\@nameuse{LWR@print@\LWR@f@family family}%
\LWR@traceinfo{Using font series \LWR@f@series}%
\@nameuse{LWR@print@\LWR@f@series series}%
\LWR@traceinfo{Using font shape \LWR@f@shape}%
\@nameuse{LWR@print@\LWR@f@shape shape}%
\LWR@traceinfo{Using font caps shape \LWR@f@shapecaps}%
\@nameuse{LWR@print@\LWR@f@shapecaps shape}%
}
\let\LWR@origtextdollar\$
\renewcommand*{\$}{%
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
{\LWR@origtextdollar}%
{\HTMLunicode{00024}}%
}
\AtBeginDocument{
\ifpdf
\newcommand*{\LWR@baselinename}{lwarp_baseline_marker.png}
\else
\ifXeTeX
\newcommand*{\LWR@baselinename}{lwarp_baseline_marker.png}
\else
\newcommand*{\LWR@baselinename}{lwarp_baseline_marker.eps}
\fi
\fi
\IfFileExists{\LWR@baselinename}%
{
\@ifpackageloaded{graphicx}{
\newcommand*{\LWR@addbaselinemarker}{%
\LWR@origincludegraphics{\LWR@baselinename}%
}
}{
\@ifpackageloaded{graphics}{
\newcommand*{\LWR@addbaselinemarker}{%
\LWR@origincludegraphics{\LWR@baselinename}%
}
}{
\newcommand*{\LWR@addbaselinemarker}{%
\global\booltrue{LWR@warnbaselinemarker}%
}
\AtEndDocument{
\ifbool{LWR@warnbaselinemarker}{
\PackageWarningNoLine{lwarp}{%
Load graphicx or graphics for improved\MessageBreak
SVG math sizing and baselines%
}
}{}
}
}
}
}{% lwarp_baseline_marker.png or .eps is not present
\newcommand*{\LWR@addbaselinemarker}{%
\global\booltrue{LWR@warnbaselinemarker}%
}
\AtEndDocument{
\ifbool{LWR@warnbaselinemarker}{
\PackageWarningNoLine{lwarp}{%
File \LWR@baselinename\space is not installed\MessageBreak
alongside the lwarp-*.sty files, so\MessageBreak
SVG math sizing and baselines may not be accurate}
}{}
}
}
}% AtBeginDocument
\newbool{LWR@warnbaselinemarker}
\boolfalse{LWR@warnbaselinemarker}
\newbool{LWR@unknownmathsize}
\newcommand*{\LWR@singledollarmeasure}[1]{%
\begingroup%
\LWR@restoreorigformatting%
\RenewDocumentEnvironment{lateximage}{s o s o o}{}{}% inside group
\LWR@print@normalsize%
\LWR@setcurrentfont%
\global\advance\c@LWR@lateximagedepth 1\relax%
\boolfalse{LWR@unknownmathsize}%
\ifmmode%
\global\sbox{\LWR@singledollarbox}{#1}%
\else%
\ifbool{LWR@dynamicmath}{%
\ifbool{mathjax}{%
\global\sbox{\LWR@singledollarbox}%
{\LWR@origensuredmath{#1}}%
}{%
\global\sbox{\LWR@singledollarbox}{#1}%
}%
}{%
\global\sbox{\LWR@singledollarbox}{#1}%
}%
\fi%
\global\sbox{\LWR@singledollarbox}{%
\usebox{\LWR@singledollarbox}%
\raisebox{-\dp\LWR@singledollarbox}{%
\LWR@addbaselinemarker%
}%
}%
\global\advance\c@LWR@lateximagedepth -1\relax% Due to AmS \text macro.
\setlength{\LWR@singledollardepth}{%
\LateximageFontScale\dp\LWR@singledollarbox%
}%
\global\LWR@singledollardepth=\LWR@singledollardepth%
\setlength{\LWR@singledollarwidth}{%
\LateximageFontScale\wd\LWR@singledollarbox%
}%
\global\LWR@singledollarwidth=\LWR@singledollarwidth%
\setlength{\LWR@singledollarheight}{%
\LateximageFontScale\ht\LWR@singledollarbox%
}%
\addtolength{\LWR@singledollarheight}{%
\LateximageFontScale\dp\LWR@singledollarbox%
}%
\global\LWR@singledollarheight=\LWR@singledollarheight%
\endgroup%
}
\newcommand*{\LWR@subsingledollarsvg}[4]{%
\LWR@singledollarmeasure{#4}%
\ifdimgreater{\LWR@singledollarwidth}{.7\LWR@singledollarheight}{%
\def\LWR@singledollarstyle{%
width:\LWR@convertto{em}{\the\LWR@singledollarwidth} em%
}%
}{%
\def\LWR@singledollarstyle{%
height:\LWR@convertto{em}{\the\LWR@singledollarheight} em%
}%
}%
\ifdimless{\LWR@singledollarwidth}{.2em}%
{%
\def\LWR@singledollarstyle{%
height:\LWR@convertto{em}{\the\LWR@singledollarheight} em%
}%
}%
{}%
\ifdimless{\LWR@singledollarheight}{.2em}%
{%
\def\LWR@singledollarstyle{%
width:\LWR@convertto{em}{\the\LWR@singledollarwidth} em%
}%
}%
{}%
\ifdimgreater{\LWR@singledollardepth}{0.05ex}{%
\def\LWR@singledollardepthstyle{%
\ ; % extra space
\LWR@print@mbox{%
vertical-align:-\LWR@convertto{em}{\the\LWR@singledollardepth} em%
} % extra space
}%
}{%
\def\LWR@singledollardepthstyle{}%
}%
\ifbool{LWR@unknownmathsize}{%
\def\LWR@singledollarstyle{}%
\def\LWR@singledollardepthstyle{}%
}{}%
\ifbool{LWR@dynamicmath}{%
\LWR@traceinfo{subsingledollar: dynamic}%
\begin{lateximage}% no hashing
[\MathImageAltText]% alt tag
[]% no add'l hashing
[\LWR@singledollarstyle \LWR@singledollardepthstyle]% CSS
}{% not dynamic math
\LWR@traceinfo{subsingledollar: static}%
\IfValueTF{#1}{% #1 True
\LWR@findcurrenttextcolor% sets \LWR@tempcolor
\ifbool{LWR@xfakebold}%
{\def\LWR@tempone{Y}}%
{\def\LWR@tempone{N}}%
\begin{lateximage}*% use hashing
[#2]% alt
*% do not add open/closing braces
[% addl' hashing
#3%
FM\LWR@f@family%
SR\LWR@f@series%
SH\LWR@f@shape%
SHC\LWR@f@shapecaps%
CL\LWR@tempcolor%
FB\LWR@tempone% xfakebold
]%
[\LWR@singledollarstyle \LWR@singledollardepthstyle]% CSS
}{% #1 False
\begin{lateximage}% no hashing
[#2]% alt
[]% no add'l hashing
[\LWR@singledollarstyle \LWR@singledollardepthstyle]% CSS
}%
}% not dynamic math
\LWR@addbaselinemarker%
\LWR@applyxfakebold%
\usebox{\LWR@singledollarbox}%
\LWR@addbaselinemarker%
\end{lateximage}%
}
\newlength{\LWR@singledollarwidth}
\newlength{\LWR@singledollarheight}
\newlength{\LWR@singledollardepth}
\newsavebox{\LWR@singledollarbox}
\NewDocumentCommand{\LWR@subsingledollar}{s m m m}{%
\LWR@traceinfo{LWR@subsingledollar}%
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
{%
\LWR@traceinfo{LWR@subsingledollar: already in a lateximage}%
#4% contents
}%
{% not in a lateximage
\begingroup%
\LWR@applyxfakebold%
\ifboolexpr{%
(
bool{mathjax} or
( bool{FormatWP} and bool{WPMarkMath} )
) and
( not test {
\ifstrequal {#2}% from \ensuredmath
{\AltTextOpen\MathImageAltText\AltTextClose}
}
) and
( not bool{LWR@dynamicmath} )
}%
{%
\LWR@traceinfo{LWR@subsingledollar: Mathjax}%
{%
\textbackslash(%
\LWR@HTMLsanitize{#4}%
\textbackslash)%
}%
}% mathjax
{% not mathjax
\LWR@traceinfo{%
LWR@subsingledollar: NOT mathjax, or is ensuremath, or is dynamic%
}%
\LWR@subsingledollarsvg{#1}{#2}{#3}{#4}%
}% not mathjax
\endgroup%
}% not in a lateximage
\gdef\LWR@ThisAltText{}%
\LWR@traceinfo{LWR@subsingledollar: done}%
}
\LetLtxMacro\LWR@origdollar$
\LetLtxMacro\LWR@secondorigdollar$% balance for editor syntax highlighting
\LetLtxMacro\LWR@origopenparen\(
\LetLtxMacro\LWR@origcloseparen\)
\LetLtxMacro\LWR@origopenbracket\[
\LetLtxMacro\LWR@origclosebracket\]
\begingroup
\catcode`\$=\active%
\protected\gdef${\@ifnextchar$\LWR@doubledollar\LWR@singledollar}%
\protected\gdef\LWR@newsingledollar{\@ifnextchar$\LWR@doubledollar\LWR@singledollar}%
\protected\gdef\LWR@doubledollar$#1$${%
\ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
{
\textbackslash[%
\LWR@HTMLsanitize{#1}%
\textbackslash]
}% mathjax
{% not mathjax
\begin{BlockClass}{displaymath}%
\LWR@newautoidanchor%
\booltrue{LWR@indisplaymathimage}%
\begin{lateximage}%
[%
\textbackslash{[} % extra space
\LWR@HTMLsanitize{#1} % extra space
\textbackslash{]}%
]%
*% do not add open/closing braces
\LWR@applyxfakebold%
\LWR@origdollar\LWR@origdollar#1\LWR@origdollar\LWR@origdollar%
\end{lateximage}%
\end{BlockClass}%
}% not mathjax
\gdef\LWR@ThisAltText{}%
}%
\protected\gdef\LWR@singledollar#1${%
\ifbool{mathjax}{%
\LWR@subsingledollar*%
{% alt tag
\textbackslash( %
\LWR@HTMLsanitize{#1} % extra space
\textbackslash)%
}%
{singledollar}% add'l hashing
{#1}% contents
}{% not mathjax
\LWR@subsingledollar*%
{% alt tag
\textbackslash( %
\LWR@HTMLsanitize{#1} % extra space
\textbackslash)%
}%
{singledollar}% add'l hashing
{\LWR@origensuredmath{#1}}% contents
}% not mathjax
\gdef\LWR@ThisAltText{}%
}
\AtBeginDocument{
\protected\gdef\(#1\){$#1$}
\protected\gdef\[#1\]{$$#1$$}
}
\endgroup
\AtBeginDocument{
\LetLtxMacro\LWR@openbracketnormal\[
\LetLtxMacro\LWR@closebracketnormal\]
}
\LetLtxMacro\LWR@origensuredmath\@ensuredmath
\renewcommand{\@ensuredmath}[1]{%
\ifbool{mathjax}{%
\LWR@subsingledollar*{\AltTextOpen\MathImageAltText\AltTextClose}%
{%
\protect\LWR@HTMLsanitize{\detokenize\expandafter{#1}}%
}%
{%
\relax%
\LWR@origensuredmath{#1}%
}%
}{% SVG math
\ifmmode%
\LWR@origensuredmath{#1}%
\else%
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
{\LWR@origensuredmath{#1}}%
{%
\LWR@subsingledollar*%
{\AltTextOpen\MathImageAltText\AltTextClose}%
{\protect\LWR@HTMLsanitize{\detokenize\expandafter{#1}}}%
{\LWR@origensuredmath{#1}}%
}%
\fi%
}%
\gdef\LWR@ThisAltText{}%
}
\let\LWR@orig@math\math
\let\LWR@orig@endmath\endmath
\let\LWR@orig@displaymath\displaymath
\let\LWR@orig@enddisplaymath\enddisplaymath
\let\math\relax
\let\endmath\relax
\let\displaymath\relax
\let\enddisplaymath\relax
\NewEnviron{math}{\expandafter\(\BODY\)}
\NewEnviron{LWR@displaymathnormal}{\expandafter\[\BODY\]\@ignoretrue}
\LetLtxMacro\[\LWR@openbracketnormal%
\LetLtxMacro\]\LWR@closebracketnormal%
\LetLtxMacro\displaymath\LWR@displaymathnormal%
\LetLtxMacro\enddisplaymath\endLWR@displaymathnormal%
\newenvironment{LWR@displaymathother}
{%
\begin{BlockClass}{displaymath}%
\LWR@newautoidanchor%
\booltrue{LWR@indisplaymathimage}%
\begin{lateximage}%
[\MathImageAltText]%
\LWR@origdollar\LWR@origdollar%
}
{%
\LWR@origdollar\LWR@origdollar%
\end{lateximage}%
\end{BlockClass}%
}
\newenvironment{LWR@equationother}
{%
\begin{BlockClass}{displaymathnumbered}%
\LWR@newautoidanchor%
\booltrue{LWR@indisplaymathimage}%
\begin{lateximage}[\MathImageAltText]%
\LWR@origequation%
}
{%
\LWR@origendequation%
\end{lateximage}%
\end{BlockClass}%
}
\newcounter{LWR@nextequation}
\newcommand\LWR@article@theequation{\@arabic\c@equation}
\newcommand\LWR@book@theequation
{\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@equation}
\newcommand\LWR@chapter@theequation{\thechapter.\arabic{equation}}
\newcommand\LWR@section@thequation{\thesection.\arabic{equation}}
\newcommand\LWR@subsection@thequation{\thesubsection.\arabic{equation}}
\AtBeginDocument{
% default per article class:
\newcommand*{\theMathJaxsubequations}{0}
\newcommand*{\theMathJaxsection}{}
\newcommand*{\theMathJaxequation}{\arabic{equation}}
\ifdefstrequal{\theequation}{\LWR@article@theequation}
{}{
\ifdefstrequal{\theequation}{\LWR@book@theequation}{
\renewcommand*{\theMathJaxsection}{\ifnum \c@chapter>\z@ \thechapter.\fi}
}{
\ifdefstrequal{\theequation}{\LWR@subsection@thequation}{
\renewcommand*{\theMathJaxsection}{\thesubsection{}.}
}{
\ifdefstrequal{\theequation}{\LWR@section@thequation}{
\renewcommand*{\theMathJaxsection}{\thesection{}.}
}{
\ifdefstrequal{\theequation}{\LWR@chapter@theequation}{
\renewcommand*{\theMathJaxsection}{\thechapter{}.}
}{% unknown format
\PackageWarningNoLine{lwarp}
{%
Unknown equation tag format for \protect\theequation.\MessageBreak
Article-style equation numbering will be used%
}
}}}}}
}
\newcommand*{\LWR@syncmathjax}{%
\LWR@stoppars%
\InlineClass{hidden}{
\textbackslash(%
\textbackslash{}seteqnumber%
\{\theMathJaxsubequations\}%
\{\theMathJaxsection\}%
\{\theMathJaxequation\}%
\textbackslash)%
}
\LWR@startpars%
}
\NewDocumentCommand{\LWR@hidelatexequation}{m +m}{%
\LWR@stoppars
\LWR@htmlopencomment
\begingroup
\@nameuse{LWR@orig#1}
\LWR@restoreorigformatting
\booltrue{LWR@insidemathcomment}
#2
\@nameuse{LWR@origend#1}
\endgroup
\LWR@htmlclosecomment
\boolfalse{LWR@insidemathcomment}
\LWR@startpars
}
\NewDocumentCommand{\LWR@addmathjax}{m +m}{%
\LWR@origtilde\LWR@orignewline
\textbackslash{}begin\{#1\}
\LWR@HTMLsanitizeexpand{\detokenize\expandafter{#2}}
\textbackslash{}end\{#1\}
\LWR@orignewline
}
\AtBeginDocument{
\let\LWR@origequation\equation
\let\LWR@origendequation\endequation
\csletcs{LWR@origequation*}{equation*}
\csletcs{LWR@origendequation*}{endequation*}
}
\newcommand*{\LWR@doequation}[2]{%
\ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
{
\LWR@syncmathjax%
\LWR@hidelatexequation{#2}{#1}
}
{% not mathjax
\ifstrequal{#2}{equation*}{%
\begin{BlockClass}{displaymath}%
}{%
\begin{BlockClass}{displaymathnumbered}%
}%
\LWR@newautoidanchor%
\booltrue{LWR@indisplaymathimage}%
\begin{lateximage}[%
\ifstrequal{#2}{equation*}{%
\ifdefequal{\LWR@equationtag}{\theequation}{%
% no tag was given
}{%
(\LWR@equationtag) % tag was given
}%
}{%
(\LWR@equationtag) % automatic numbering
}%
\textbackslash{begin\{#2\}} % extra space
\LWR@HTMLsanitizeexpand{\detokenize\expandafter{#1}} % extra space
\textbackslash{end\{#2\}}%
]*% alt tag
\LWR@applyxfakebold%
\@nameuse{LWR@orig#2}%
#1% contents collected by \collect@body
\@nameuse{LWR@origend#2}%
\end{lateximage}%
\end{BlockClass}%
}% not mathjax
\gdef\LWR@ThisAltText{}%
}
\newcommand*{\LWR@doendequation}[1]{%
\ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
{%
\IfSubStr{\detokenize\expandafter{\BODY}}{\detokenize{note}}{%
\InlineClass{hidden}{\LWR@syncnotenumbers}%
\LWR@addmathjax{#1}{\BODY}%
\InlineClass{hidden}{\LWR@syncnotenames}%
}{%
\LWR@addmathjax{#1}{\BODY}%
}%
}{}%
\gdef\LWR@ThisAltText{}%
}
\newcommand*{\LWR@synconenotenumber}[2]{%
\textbackslash(
\textbackslash{}def\textbackslash{}#1\{#2\}
\textbackslash)
}
\newcommand*{\LWR@syncnotenumbers}{\LWR@synconenotenumber{LWRfootnote}{\thefootnote}}
\newcommand*{\LWR@synconenotename}[2]{%
\textbackslash(
\textbackslash{}def\textbackslash{}#1\{#2\}
\textbackslash)
}
\newcommand*{\LWR@syncnotenames}{\LWR@synconenotename{LWRfootnote}{\footnotename}}
\AtBeginDocument{
\let\equation\relax
\let\endequation\relax
\csletcs{equation*}{relax}
\csletcs{endequation*}{relax}
}
\AtBeginDocument{
\NewEnviron{equation}%
{\LWR@doequation{\BODY}{equation}}%
[\LWR@doendequation{equation}]
\LetLtxMacro\LWR@equationnormal\equation
\LetLtxMacro\endLWR@equationnormal\endequation
}% AtBeginDocument
\AtBeginDocument{
\NewEnviron{equation*}%
{\LWR@doequation{\BODY}{equation*}}%
[\LWR@doendequation{equation*}]
\csletcs{LWR@equationnormalstar}{equation*}
\csletcs{LWR@endequationnormalstar}{endequation*}
}% AtBeginDocument
\AtBeginDocument{
\LetLtxMacro\LWR@equationless\equation
\LetLtxMacro\endLWR@equationless\endequation
\csletcs{LWR@equationlessstar}{equation*}
\csletcs{LWR@endequationlessstar}{endequation*}
}
\newcommand*{\displaymathnormal}{%
\ifbool{LWR@origmathjax}{\booltrue{mathjax}}{\boolfalse{mathjax}}%
\LetLtxMacro\[\LWR@openbracketnormal%
\LetLtxMacro\]\LWR@closebracketnormal%
\LetLtxMacro\displaymath\LWR@displaymathnormal%
\LetLtxMacro\enddisplaymath\endLWR@displaymathnormal%
\LetLtxMacro\equation\LWR@equationnormal%
\LetLtxMacro\endequation\endLWR@equationnormal%
\csletcs{equation*}{LWR@equationnormalstar}%
\csletcs{endequation*}{LWR@endequationnormalstar}%
}
\newcommand*{\displaymathother}{%
\boolfalse{mathjax}%
\LetLtxMacro\displaymath\LWR@displaymathother%
\LetLtxMacro\enddisplaymath\endLWR@displaymathother%
\LetLtxMacro\[\LWR@displaymathother%
\LetLtxMacro\]\endLWR@displaymathother%
\LetLtxMacro\equation\LWR@equationother%
\LetLtxMacro\endequation\endLWR@equationother%
\csletcs{equation*}{displaymath}%
\csletcs{endequation*}{enddisplaymath}%
}
\end{warpHTML}
\begin{warpprint}
\newcommand*{\displaymathnormal}{}
\newcommand*{\displaymathother}{}
\end{warpprint}
\begin{warpHTML}
\newbool{LWR@amsmultline}
\boolfalse{LWR@amsmultline}
\newcommand*{\LWR@beginhideamsmath}{
\LWR@stoppars
\LWR@origtilde\LWR@orignewline
\LWR@htmlopencomment
\begingroup
\LWR@restoreorigformatting
\booltrue{LWR@insidemathcomment}
}
\newcommand*{\LWR@endhideamsmath}{
\endgroup
\LWR@htmlclosecomment
\boolfalse{LWR@insidemathcomment}
\LWR@orignewline
\LWR@startpars
}
\let\LWR@origeqnarray\eqnarray
\let\LWR@origendeqnarray\endeqnarray
\newbool{LWR@numbereqnarray}
\booltrue{LWR@numbereqnarray}
\newcommand{\LWR@eqnarrayfactor}{%
\ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
{%
\LWR@syncmathjax%
\boolfalse{LWR@amsmultline}%
\ifbool{LWR@numbereqnarray}%
{%
\LWR@beginhideamsmath%
\LWR@origeqnarray%
\BODY%
\LWR@origendeqnarray%
\LWR@endhideamsmath%
\LWR@addmathjax{eqnarray}{\BODY}%
}%
{% not LWR@numbereqnarray
\LWR@addmathjax{eqnarray*}{\BODY}%
}% LWR@numbereqnarray
}% mathjax
{% not mathjax
\ifbool{LWR@numbereqnarray}%
{%
\begin{BlockClass}{displaymathnumbered}%
\LWR@newautoidanchor%
\booltrue{LWR@indisplaymathimage}%
\begin{lateximage}[(\LWR@startingequationtag--\LWR@equationtag)%
\LWR@addmathjax{eqnarray}{\BODY}]*%
\LWR@applyxfakebold%
\LWR@origeqnarray%
\BODY%
\LWR@origendeqnarray%
\end{lateximage}%
\end{BlockClass}%
}%
{% not LWR@numbereqnarray
\begin{BlockClass}{displaymath}%
\LWR@newautoidanchor%
\booltrue{LWR@indisplaymathimage}%
\begin{lateximage}[\LWR@addmathjax{eqnarray*}{\BODY}]*%
\LWR@applyxfakebold%
\def\@eqncr{\nonumber\@seqncr}
\csuse{LWR@origeqnarray}%
\BODY%
\nonumber\csuse{LWR@origendeqnarray}%
\end{lateximage}%
\end{BlockClass}%
}% LWR@numbereqnarray
}% not mathjax
\booltrue{LWR@numbereqnarray}%
\gdef\LWR@ThisAltText{}%
}
\RenewEnviron{eqnarray}
{%
\LWR@eqnarrayfactor
}
\csgpreto{eqnarray*}{\boolfalse{LWR@numbereqnarray}}
\end{warpHTML}
\begin{warpHTML}
\newcounter{LWR@lateximagenumber}
\setcounter{LWR@lateximagenumber}{0}
\newcounter{LWR@lateximagedepth}
\setcounter{LWR@lateximagedepth}{0}
\edef\LWR@hashmark{\string#} % for use in \write
\edef\LWR@percent{\@percentchar} % for use in \write
\newcounter{LWR@LIpage}
\end{warpHTML}
\begin{warpall}
\newcommand*{\LateximageFontSizeName}{normalsize}
\newcommand*{\LateximageFontScale}{1}
\end{warpall}
\begin{warpHTML}
\newcounter{LWR@startingequation}
\@ifundefined{chapter}
{
\renewcommand{\theLWR@startingequation}{%
\arabic{LWR@startingequation}%
}
}
{% chapter defined
\renewcommand{\theLWR@startingequation}{%
\ifnumcomp{\value{chapter}}{>}{0}{\arabic{chapter}.}{}%
\arabic{LWR@startingequation}%
}
}
\newbool{LWR@isstartingequation}
\let\LWR@startingequationtag\theLWR@startingequation
\newcommand*{\LWR@equationtag}{}
\AtBeginDocument{
\ifbool{mathjax}{}{% not mathjax
\NewDocumentCommand{\LWR@remembertag}{m}{%
\ifbool{LWR@isstartingequation}%
{%
\global\boolfalse{LWR@isstartingequation}%
\xdef\LWR@startingequationtag{#1}%
}{}%
\xdef\LWR@equationtag{#1}%
}%
}% not mathjax
}% AtBeginDocument
\newcommand*{\LWR@amsmathbody}[1]
{%
\textbackslash\{begin\}\{#1\} % extra space
\LWR@HTMLsanitizeexpand{\detokenize\expandafter{\the\@envbody}}%
\textbackslash\{end\}\{#1\}%
}
\newcommand*{\LWR@amsmathbodynumbered}[1]
{%
\ifnumcomp{\value{LWR@startingequation}}{=}{\value{equation}}%
{(\LWR@equationtag)}%
{(\LWR@startingequationtag--\LWR@equationtag)} % extra space
\LWR@amsmathbody{#1} % extra space
}
\newcommand{\LWR@lateximage@oneimageb}[3]{%
\LWR@subinlineimage{#1}{lateximage}%
{%
\LWR@print@mbox{%
\LWR@ImagesDirectory\OSPathSymbol%
#2%
}%
}{svg}{#3}%
}
\newcommand{\LWR@lateximage@oneimage}[4]{%
\ifdefvoid{\LWR@ThisAltText}{%
\IfBooleanTF{#4}{%
\LWR@lateximage@oneimageb{#1}{#2}{#3}%
}{%
\LWR@lateximage@oneimageb%
{\AltTextOpen#1\AltTextClose}%
{#2}{#3}%
}%
}{%
\LWR@lateximage@oneimageb%
{\AltTextOpen\LWR@ThisAltText\AltTextClose}%
{#2}{#3}%
}%
}
\catcode`\$=\active%
\NewDocumentEnvironment{lateximage}{s O{\ImageAltText} s O{} O{}}
{%
\LWR@traceinfo{lateximage: starting on \jobname.pdf page \arabic{page}}%
\LWR@traceinfo{lateximage: entering depth is \arabic{LWR@lateximagedepth}}%
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
{%
\global\advance\c@LWR@lateximagedepth 1\relax% Due to AmS \text macro.
}%
{% start of outer-most lateximage
\LWR@traceinfo{lateximage: starting outer-most lateximage}%
\setcounter{LWR@startingequation}{\value{equation}}%
\addtocounter{LWR@startingequation}{1}%
\booltrue{LWR@isstartingequation}%
\let\LWR@startingequationtag\theLWR@startingequation%
\let\LWR@equationtag\theequation%
\addtocounter{LWR@lateximagenumber}{1}%
\LWR@traceinfo{lateximage: LWR@lateximagenumber is \arabic{LWR@lateximagenumber}}%
\boolfalse{mathjax}%
\LWR@ensuredoingapar%
\addtocounter{LWR@externalfilecnt}{1}%
\LWR@traceinfo{lateximage: LWR@externalfilecnt is \arabic{LWR@externalfilecnt}}%
\setcounterpageref{LWR@LIpage}{%
LWRlateximage-\BaseJobname-\arabic{LWR@lateximagenumber}%
}%
\LWR@traceinfo{lateximage: LWR@LIpage is \arabic{LWR@LIpage}}%
\LWR@htmltag{span\LWR@indentHTML%
id="lateximage-\BaseJobname-\arabic{LWR@lateximagenumber}"\LWR@indentHTML
class="lateximagesource"\LWR@orignewline
}%
\LWR@traceinfo{lateximage: about to write to \BaseJobname-images.txt}%
\IfBooleanTF{#1}% starred
{% hash
\ifdefvoid{\LWR@ThisAltText}{%
\IfBooleanTF{#3}{%
\edef\LWR@hashedname{%
\LWR@mdfive{\detokenize\expandafter{#2}-!-#4}%
}%
}{%
\edef\LWR@hashedname{%
\LWR@mdfive{\detokenize\expandafter{\AltTextOpen#2\AltTextClose}-!-#4}%
}%
}%
}{%
\edef\LWR@hashedname{%
\LWR@mdfive{\detokenize\expandafter{\AltTextOpen\LWR@ThisAltText\AltTextClose}-!-#4}%
}%
}%
\LWR@traceinfo{lateximage: hash is \LWR@hashedname}%
\immediate\write\LWR@lateximagesfile{%
|\arabic{LWR@LIpage}|true|\LWR@hashedname|%
}%
}% hash
{% no hash
\LWR@traceinfo{lateximage: hash false}%
\immediate\write\LWR@lateximagesfile{%
|\arabic{LWR@LIpage}|false|\LWR@ImagesName\arabic{LWR@externalfilecnt}|%
}%
}% no hash
\LWR@traceinfo{lateximage: about to create open comment}%
\LWR@htmlopencomment%
\addtocounter{LWR@lateximagedepth}{1}%
\LWR@traceinfo{lateximage: about to create a new page}%
\LWR@maybe@orignewpage%
\LWR@traceinfo{lateximage: about to create minipage}%
\ifdimless{\linewidth}{6in}{%
\LWR@print@minipage{\linewidth}%
}{%
\LWR@print@minipage{6in}%
}%
\@nameuse{LWR@print@\LateximageFontSizeName}%
\LWR@traceinfo{lateximage: about to temporarily restore formatting}%
\LWR@restoreorigformatting%
\def\@mpfn{footnote}%
\def\thempfn{\thefootnote}%
\LetLtxMacro\@footnotetext\LWR@footnotetext%
\LWR@traceinfo{lateximage: about to create label}%
\LWR@orig@label{LWRlateximage-\BaseJobname-\arabic{LWR@lateximagenumber}}%
\LWR@traceinfo{lateximage: finished creating the label}%
\ifdefvoid{\LWR@ruleHTMLcolor}{}{%
\LWR@print@arrayrulecolor[HTML]{\LWR@ruleHTMLcolor}%
}%
\LetLtxMacro$\LWR@origdollar%
\catcode`\$=3% math shift
\LetLtxMacro\(\LWR@origopenparen%
\LetLtxMacro\)\LWR@origcloseparen%
\ifbool{LWR@indisplaymathimage}{}{% not in display math
\LetLtxMacro\[\LWR@origopenbracket%
\LetLtxMacro\]\LWR@origclosebracket%
\let\equation\LWR@origequation%
\let\endequation\LWR@origendequation%
\csletcs{equation*}{LWR@origequation*}%
\csletcs{endequation*}{LWR@origendequation*}%
}% not in display math
\LetLtxMacro\LWR@newsingledollar$%
\LetLtxMacro\LWR@newsingledollar$% syntax highlighting
}% end of outer-most lateximage
\LWR@traceinfo{lateximage: finished start of environment}%
}% end of \begin{lateximage}
{% start of \end{lateximage}
\LWR@traceinfo{lateximage: starting end of lateximage}%
\LWR@traceinfo{lateximage: internal depth was \arabic{LWR@lateximagedepth}}%
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{1}%
{%
\LWR@traceinfo{lateximage: unnesting}%
\global\advance\c@LWR@lateximagedepth -1\relax%
}%
{% end of outer-most lateximage
\LWR@traceinfo{lateximage: ending outer-most lateximage}%
\endLWR@print@minipage%
\LWR@maybe@orignewpage%
\LWR@print@vspace*{.5\baselineskip}%
\LWR@htmlclosecomment%
\LWR@traceinfo{lateximage: The page after the image is \arabic{page}}%
\IfBooleanTF{#1}% starred
{% hash
\LWR@lateximage@oneimage{#2}{\LWR@hashedname}{#5}{#3}%
}% hash
{% no hash
\LWR@lateximage@oneimage{#2}{\LWR@ImagesName\theLWR@externalfilecnt}{#5}{#3}%
}% no hash
\LWR@ensuredoingapar%
\LWR@htmltag{/span}%
\ifbool{HTMLDebugComments}{%
\LWR@htmlcomment{End of lateximage}%
}{}%
\addtocounter{LWR@lateximagedepth}{-1}%
\gdef\LWR@ThisAltText{}%
}% end of outer-most lateximage
\LWR@traceinfo{lateximage: exiting depth is \arabic{LWR@lateximagedepth}}%
\LWR@traceinfo{lateximage: done}%
}%
\catcode`\$=3% math shift
\end{warpHTML}
\begin{warpprint}
\NewDocumentEnvironment{lateximage}{s o s o o}
{\begin{varwidth}[b]{\linewidth}}
{\end{varwidth}}
\end{warpprint}
\begin{warpHTML}
\newenvironment*{LWR@HTML@center}
{
\LWR@forcenewpage
\ifbool{FormatWP}
{\BlockClass[\LWR@print@mbox{text-align:center}]{center}}
{\BlockClass{center}}
}
{\endBlockClass}
\LWR@formattedenv{center}
\newenvironment*{LWR@HTML@flushright}
{
\LWR@forcenewpage
\ifbool{FormatWP}
{\BlockClass[\LWR@print@mbox{text-align:right}]{flushright}}
{\BlockClass{flushright}}
}
{\endBlockClass}
\LWR@formattedenv{flushright}
\newenvironment*{LWR@HTML@flushleft}
{
\LWR@forcenewpage
\ifbool{FormatWP}
{\BlockClass[\LWR@print@mbox{text-align:left}]{flushleft}}
{\BlockClass{flushleft}}
}
{\endBlockClass}
\LWR@formattedenv{flushleft}
\newcommand*{\LWR@HTML@centering}{%
\ifbool{HTMLDebugComments}{%
\LWR@htmlcomment{centering}%
}{}%
}
\LWR@formatted{centering}
\newcommand*{\LWR@HTML@raggedleft}{%
\ifbool{HTMLDebugComments}{%
\LWR@htmlcomment{raggedleft}%
}{}%
}
\LWR@formatted{raggedleft}
\newcommand*{\LWR@HTML@raggedright}{%
\ifbool{HTMLDebugComments}{%
\LWR@htmlcomment{raggedright}%
}{}%
}
\LWR@formatted{raggedright}
\renewcommand{\leftline}[1]{\begin{flushleft}#1\end{flushleft}}
\renewcommand{\centerline}[1]{\begin{center}#1\end{center}}
\renewcommand{\rightline}[1]{\begin{flushright}#1\end{flushright}}
\end{warpHTML}
\begin{warpHTML}
\newcommand*{\LWR@PreloadedPackage}[1]{%
\@ifpackageloaded{#1}%
{%
\AtBeginDocument{
\LWR@origRequirePackage{lwarp-#1}%
}
}%
{}%
}
\LWR@PreloadedPackage{inputtrc}
\LWR@PreloadedPackage{textcomp}
\LWR@PreloadedPackage{xunicode}
\LWR@PreloadedPackage{graphics}
\LWR@PreloadedPackage{graphicx}
\LWR@PreloadedPackage{fontaxes}
\LWR@PreloadedPackage{nfssext-cfr}
\LWR@PreloadedPackage{ulem}
\LWR@PreloadedPackage{xetexko-vertical}
\LWR@PreloadedPackage{geometry}
\LWR@PreloadedPackage{plext}
\LWR@PreloadedPackage{stfloats}
\LWR@PreloadedPackage{lltjext}
\LWR@PreloadedPackage{luatexko}
\end{warpHTML}
\begin{warpHTML}
\newrobustcmd{\LWR@siunitx@textcelsius}{\HTMLentity{deg}C}
\newrobustcmd{\LWR@siunitx@textdegree}{\HTMLentity{deg}}
\newrobustcmd{\LWR@siunitx@textprime}{\HTMLunicode{2032}}
\newrobustcmd{\LWR@siunitx@textdblprime}{\HTMLunicode{2033}}
\newrobustcmd{\LWR@siunitx@textplanckbar}{\text{\textit{\HTMLunicode{0127}}}}
\appto\LWR@restoreorigformatting{%
\renewrobustcmd{\LWR@siunitx@textcelsius}{\text{\ensuremath{^\circ}C}}%
\renewrobustcmd{\LWR@siunitx@textdegree}{\text{\ensuremath{^\circ}}}%
\renewrobustcmd{\LWR@siunitx@textprime}{\text{\ensuremath{^\prime}}}%
\renewrobustcmd{\LWR@siunitx@textdblprime}{\text{\ensuremath{^{\prime\prime}}}}%
\renewrobustcmd{\LWR@siunitx@textplanckbar}{\text{\ensuremath{\hbar}}}%
}
\PassOptionsToPackage{
detect-mode=true,
per-mode=symbol, % fraction is not seen by pdftotext
text-celsius = {\LWR@siunitx@textcelsius},
text-degree = {\LWR@siunitx@textdegree},
text-arcminute = {\LWR@siunitx@textprime} ,
text-arcsecond = {\LWR@siunitx@textdblprime} ,
}{siunitx}
\end{warpHTML}
\begin{warpprint}
\define@key{Gin}{class}{}
\define@key{Gin}{alt}{}
\AtBeginDocument{
\@ifpackageloaded{overpic}{
\newcommand*{\overpicfontsize}{12}
\newcommand*{\overpicfontskip}{14}
}{}
}
\end{warpprint}
\begin{warpall}
\AtBeginDocument{
\@ifpackageloaded{xcolor}{
\LWR@traceinfo{patching xcolor}
\LetLtxMacro\colorboxBlock\colorbox
\LetLtxMacro\LWR@orig@print@fcolorbox\fcolorbox
\newsavebox{\LWR@colorminipagebox}
\NewDocumentCommand{\LWR@print@fcolorbox}{o m o m +m}{%
\LWR@traceinfo{LWR@print@fcolorbox #2 #4}%
\begin{lrbox}{\LWR@colorminipagebox}%
#5%
\end{lrbox}%
\ifstrequal{#4}{none}%
{% #4 none
\LWR@traceinfo{background is none}%
{% scope the \colorlet
\colorlet{LWR@currentcolor}{.}%
\color{#2}%
\fbox{%
\color{LWR@currentcolor}%
\usebox{\LWR@colorminipagebox}%
}% fbox
}% colorlet
}% #4 none
{% #4 not none
\LWR@traceinfo{background not none}%
\IfValueTF{#1}%
{%
\IfValueTF{#3}%
{\LWR@orig@print@fcolorbox[#1]{#2}[#3]{#4}{\usebox{\LWR@colorminipagebox}}}%
{\LWR@orig@print@fcolorbox[#1]{#2}{#4}{\usebox{\LWR@colorminipagebox}}}%
}%
{% no value #1
\IfValueTF{#3}%
{\LWR@orig@print@fcolorbox{#2}[#3]{#4}{\usebox{\LWR@colorminipagebox}}}%
{\LWR@orig@print@fcolorbox{#2}{#4}{\usebox{\LWR@colorminipagebox}}}%
}% no value #1
}% #4 not none
\LWR@traceinfo{LWR@print@fcolorbox done}%
}
\renewrobustcmd*{\fcolorbox}{\LWR@print@fcolorbox}%
\newcommand*{\LWR@print@fcolorboxBlock}{\LWR@print@fcolorbox}
\newrobustcmd*{\fcolorboxBlock}{\LWR@print@fcolorboxBlock}
\NewDocumentEnvironment{LWR@print@fcolorminipage}{o m o m O{c} O{} o m}
{%
\LWR@traceinfo{*** fcolorminipage: #2 #4 #8}%
\begin{lrbox}{\LWR@colorminipagebox}%
\IfValueTF{#7}%
{\begin{minipage}[#5][#6][#7]{#8}}%
{\begin{minipage}[#5][#6][#5]{#8}}%
}%
{%
\end{minipage}%
\end{lrbox}%
\LWR@traceinfo{*** starting end fcolorminipage #1 #2 #3 #4 #8}%
\ifstrequal{#4}{none}%
{% #4 none
{% scope the \colorlet
\colorlet{LWR@currentcolor}{.}%
\color{#2}%
\fbox{%
\color{LWR@currentcolor}%
\usebox{\LWR@colorminipagebox}%
}% fbox
}% colorlet
}% #4 none
{% #4 not none
\IfValueTF{#1}%
{%
\IfValueTF{#3}%
{\LWR@orig@print@fcolorbox[#1]{#2}[#3]{#4}{\usebox{\LWR@colorminipagebox}}}%
{\LWR@orig@print@fcolorbox[#1]{#2}{#4}{\usebox{\LWR@colorminipagebox}}}%
}%
{% no value #1
\IfValueTF{#3}%
{\LWR@orig@print@fcolorbox{#2}[#3]{#4}{\usebox{\LWR@colorminipagebox}}}%
{\LWR@orig@print@fcolorbox{#2}{#4}{\usebox{\LWR@colorminipagebox}}}%
}% no value #1
}% #4 not none
\LWR@traceinfo{*** finished end fcolorminipage}%
}
\NewDocumentEnvironment{fcolorminipage}{}
{\LWR@print@fcolorminipage}
{\endLWR@print@fcolorminipage}
\LWR@traceinfo{xcolor patches done}
}{}% xcolor loaded
}% AtBeginDocument
\end{warpall}
\begin{warpprint}
\AtBeginDocument{
\@ifpackageloaded{chemmacros}{
\DeclareDocumentEnvironment{polymerdelims}{}
{}{}
\DeclareDocumentEnvironment{redoxreaction}{m m}
{\rule{0pt}{#1}}{\rule[-#2]{0pt}{#2}}
}{}% chemmacros
}% AtBeginDocument
\end{warpprint}
\begin{warpHTML}
\AtEndPreamble{
\RequirePackage{cleveref}
}
\end{warpHTML}
\begin{warpHTML}
\LetLtxMacro\LWR@orig@label\label% includes memoir, before cleveref
\LetLtxMacro\label\LWR@new@label
\LetLtxMacro\LWR@orig@pageref\pageref
\LetLtxMacro\pageref\LWR@new@pageref
\end{warpHTML}
\begin{warpHTML}
\BeforeBeginEnvironment{picture}{\begin{lateximage}[picture]}
\AfterEndEnvironment{picture}{\end{lateximage}}
\end{warpHTML}
\begin{warpHTML}
\newlength{\LWR@minipagewidth}
\newlength{\LWR@minipageheight}
\newcounter{LWR@virtualpagedepth}
\setcounter{LWR@virtualpagedepth}{0}
\NewDocumentEnvironment{LWR@setvirtualpage}{s O{1}}{%
\ifnumequal{\value{LWR@virtualpagedepth}}{0}{%
\IfBooleanT{#1}{\LWR@maybe@orignewpage}%
\setlength{\linewidth}{6in/#2}%
\setlength{\textwidth}{6in}%
\setlength{\textheight}{9in}%
}{}%
\addtocounter{LWR@virtualpagedepth}{1}%
}
{\addtocounter{LWR@virtualpagedepth}{-1}}
\newbool{LWR@minipagefullwidth}
\boolfalse{LWR@minipagefullwidth}
\newbool{LWR@forceminipagefullwidth}
\boolfalse{LWR@forceminipagefullwidth}
\newcommand*{\minipagefullwidth}{\global\booltrue{LWR@minipagefullwidth}}
\newcommand*{\UseMinipageWidths}{\boolfalse{LWR@forceminipagefullwidth}}
\newcommand*{\IgnoreMinipageWidths}{\booltrue{LWR@forceminipagefullwidth}}
\end{warpHTML}
\begin{warpprint}
\newcommand*{\minipagefullwidth}{}
\newcommand*{\UseMinipageWidths}{}
\newcommand*{\IgnoreMinipageWidths}{}
\end{warpprint}
\begin{warpHTML}
\newbool{LWR@minipagethispar}
\boolfalse{LWR@minipagethispar}
\NewDocumentEnvironment{LWR@HTML@sub@minipage}{m m m m}
{%
\LWR@traceinfo{minipage}%
\begin{LWR@setvirtualpage}*%
\setlength{\LWR@minipagewidth}{#4}%
\ifnumequal{\value{LWR@virtualpagedepth}}{1}{%
\addtolength{\LWR@minipagewidth}{3em}% room for frames
}{}%
\LWR@traceinfo{computed width is \LWR@printlength{\LWR@minipagewidth}}%
\setlength{\LWR@minipageheight}{\textheight}% default unless specified
\ifblank{#2}{}{\setlength{\LWR@minipageheight}{#2}}%
\ifbool{FormatWP}{\newline}{}%
\LWR@stoppars%
\ifbool{FormatWP}{%
\addtocounter{LWR@thisautoidWP}{1}%
\LWR@htmltag{%
div id="\LWR@print@mbox{autoidWP-\arabic{LWR@thisautoidWP}}" %
class="wpminipage"%
}%
}{}%
\LWR@traceinfo{minipage: creating div class}%
\LWR@htmltag{div class="minipage" style="%
\ifthenelse{\equal{#1}{t}}{\LWR@print@mbox{vertical-align:bottom} ; }{}%
\ifthenelse{\equal{#1}{c}}{\LWR@print@mbox{vertical-align:middle} ; }{}%
\ifthenelse{\equal{#1}{b}}{\LWR@print@mbox{vertical-align:top} ; }{}%
\ifthenelse{\equal{#3}{t}}{\LWR@print@mbox{justify-content:flex-start} ; }{}%
\ifthenelse{\equal{#3}{c}}{\LWR@print@mbox{justify-content:center} ; }{}%
\ifthenelse{\equal{#3}{b}}{\LWR@print@mbox{justify-content:flex-end} ; }{}%
\ifthenelse{\equal{#3}{s}}{\LWR@print@mbox{justify-content:space-between} ; }{}%
\LWR@traceinfo{minipage: about to print the width of \LWR@printlength{\LWR@minipagewidth}}%
\ifbool{LWR@minipagefullwidth}%
{\global\boolfalse{LWR@minipagefullwidth}}%
{%
\ifbool{LWR@forceminipagefullwidth}%
{}%
{%
\ifdimequal{#4}{\linewidth}%
{}%
{width:\LWR@printlength{\LWR@minipagewidth} ; }%
}%
}%
\LWR@traceinfo{minipage: about to print the height}%
\ifblank{#2}{}{height:\LWR@printlength{\LWR@minipageheight} ; }%
"}%
\ifnumequal{\value{LWR@virtualpagedepth}}{1}{%
\addtolength{\LWR@minipagewidth}{-3em}% undo frame padding
}{}%
\setlength{\linewidth}{\LWR@minipagewidth}%
\LWR@print@raggedright%
\def\@mpfn{mpfootnote}%
\def\thempfn{\thempfootnote}\c@mpfootnote\z@%
\let\@footnotetext\@mpfootnotetext%
\LWR@startpars%
\ifboolexpr{bool{FormatWP} and bool{WPMarkMinipages}}{%
=== begin minipage ===
}{}%
\LWR@traceinfo{minipage: finished starting the minipage}%
}% finished \minipage
{% \endminipage
\LWR@printpendingmpfootnotes%
\ifboolexpr{bool{FormatWP} and bool{WPMarkMinipages}}{%
=== end minipage ===
}{}%
\LWR@stoppars%
\ifbool{FormatWP}{%
\LWR@htmlelementend{div}%
}{}%
\LWR@htmldivclassend{minipage}%
\end{LWR@setvirtualpage}%
\LWR@startpars%
\ifbool{FormatWP}{\newline}{}%
\global\booltrue{LWR@minipagethispar}%
\LWR@traceinfo{LWR@minipage: done}%
}
\NewDocumentEnvironment{LWR@HTML@minipage}{O{t} O{} O{t} m}
{\LWR@HTML@sub@minipage{#1}{#2}{#3}{#4}}
{\endLWR@HTML@sub@minipage}
\LWR@formattedenv{minipage}
\NewDocumentCommand{\LWR@HTML@parbox}{O{t} O{} O{t} m +m}
{
\LWR@traceinfo{parbox of width #4}%
\begin{minipage}[#1][#2][#3]{#4}%
#5
\end{minipage}%
}
\LWR@formatted{parbox}
\newcommand*{\LWR@HTML@mbox}[1]{#1}
\LWR@formatted{mbox}
\NewDocumentCommand{\LWR@@makebox@paren}{m m}{%
\IfValueTF{#2}{%
\setlength{\LWR@tempwidth}{#1\unitlength}%
\setlength{\LWR@tempheight}{#2\unitlength}%
\appto{\LWR@temptwo}{%
\LWR@print@mbox{width:\LWR@printlength{\LWR@tempwidth}} ; % space
\LWR@print@mbox{height:\LWR@printlength{\LWR@tempheight}} ; % space
}%
}{%
\PackageError{lwarp}%
{(width,height) is missing a comma ',' character}%
{\protect\makebox\space and \protect\framebox\space accept
a size in the format (width,height).}%
}%
}
\newcommand*{\LWR@@makebox@align}[1]{%
\def\LWR@align{center}%
\ifstrequal{#1}{l}{\def\LWR@align{left}}{}%
\ifstrequal{#1}{r}{\def\LWR@align{right}}{}%
\ifstrequal{#1}{s}{\def\LWR@align{justify}}{}%
\appto{\LWR@temptwo}{%
\LWR@print@mbox{text-align:\LWR@align} ; %
}%
}
\NewDocumentCommand{\LWR@HTML@makebox}{>{\SplitArgument{1}{,}}d() o o +m}{%
\begin{LWR@setvirtualpage}%
\def\LWR@temptwo{}%
\IfValueTF{#1}%
{% (width,height) ..
\LWR@@makebox@paren #1%
\IfValueT{#2}%
{% (width,height) [posn]
\LWR@@makebox@align{#2}%
}%
}%
{% [width]
\IfValueT{#2}% [width]
{%
\setlength{\LWR@tempwidth}{#2}%
\ifdimgreater{\LWR@tempwidth}{0pt}{%
\appto{\LWR@temptwo}{%
width:\LWR@printlength{\LWR@tempwidth} ; % space
}%
}{}%
}%
}%
\IfValueT{#3}%
{% [width] [posn]
\LWR@@makebox@align{#3}%
}%
\InlineClass[%
\LWR@print@mbox{display:inline-block} ; %
\LWR@temptwo%
]%
{makebox}%
{#4}%
\end{LWR@setvirtualpage}%
}
\LWR@formatted{makebox}
\NewDocumentCommand{\LWR@HTML@framebox}{d() o o +m}{%
\fbox{\makebox(#1)[#2][#3]{#4}}%
}
\LWR@formatted{framebox}
\newlength{\LWR@atleastonept}
\newcommand*{\LWR@forceminwidth}[1]{%
\setlength{\LWR@atleastonept}{#1}%
\ifthenelse{%
\lengthtest{\LWR@atleastonept>0pt}\AND%
\lengthtest{\LWR@atleastonept<1pt}%
}%
{\setlength{\LWR@atleastonept}{1pt}}%
{}%
}
\newcommand*{\LWR@fboxstyle}{%
\LWR@findcurrenttextcolor%
border:\LWR@printlength{\LWR@atleastonept} solid \LWR@origpound\LWR@tempcolor ; %
padding:\LWR@printlength{\fboxsep} ; %
color:\LWR@origpound\LWR@tempcolor%
}
\newcommand{\LWR@HTML@fbox}[1]{%
\LWR@traceinfo{HTML fbox}%
\LWR@forceminwidth{\fboxrule}%
\InlineClass[%
\LWR@print@mbox{display:inline-block} ; %
\LWR@fboxstyle%
]{fbox}{#1}%
}
\AtBeginDocument{\LWR@formatted{fbox}}
\end{warpHTML}
\begin{warpall}
\let\fboxBlock\fbox
\end{warpall}
\begin{warpHTML}
\newcommand{\LWR@HTML@fboxBlock}[1]{%
\LWR@forceminwidth{\fboxrule}%
\LWR@stoppars%
\begin{BlockClass}[%
\LWR@fboxstyle%
]{fboxBlock}
#1
\end{BlockClass}
\LWR@startpars%
}
\LWR@formatted{fboxBlock}
\end{warpHTML}
\begin{warpall}
\newsavebox{\LWR@fminipagebox}
\NewDocumentEnvironment{LWR@print@fminipage}{O{t} o O{t} m}
{%
\IfValueTF{#3}%
{\def\LWR@thisalign{#3}}
{\def\LWR@thisalign{#1}}%
\IfValueTF{#2}%
{\minipage[#1][#2+2\fboxsep+2\fboxrule][\LWR@thisalign]{#4+2\fboxsep+2\fboxrule}}%
{\minipage[#1]{#4+2\fboxsep+2\fboxrule}}%
\begin{lrbox}{\LWR@fminipagebox}%
\IfValueTF{#2}%
{\minipage[#1][#2][\LWR@thisalign]{#4}}%
{\minipage[#1]{#4}}%
}
{%
\endminipage%
\end{lrbox}%
\fbox{\usebox{\LWR@fminipagebox}}%
\endminipage%
}
\LetLtxMacro\fminipage\LWR@print@fminipage
\LetLtxMacro\endfminipage\endLWR@print@fminipage
\end{warpall}
\begin{warpHTML}
\NewDocumentEnvironment{LWR@HTML@fminipage}{O{t} o O{t} m}
{%
\LWR@traceinfo{fminipage #1 #2 #3 #4}%
\begin{LWR@setvirtualpage}*%
\setlength{\LWR@tempwidth}{#4}%
\IfValueT{#2}{\setlength{\LWR@tempheight}{#2}}%
\LWR@forceminwidth{\fboxrule}%
\LWR@stoppars%
\begin{BlockClass}[%
\LWR@fboxstyle ; %
\IfValueT{#2}{height:\LWR@printlength{\LWR@tempheight} ; }%
\ifbool{LWR@minipagefullwidth}%
{\global\boolfalse{LWR@minipagefullwidth}}%
{%
\ifbool{LWR@forceminipagefullwidth}%
{}%
{%
\ifdimequal{\LWR@tempwidth}{\linewidth}%
{}%
{width:\LWR@printlength{\LWR@tempwidth} ; }%
}%
}%
]{fminipage}%
}
{%
\end{BlockClass}%
\end{LWR@setvirtualpage}%
\global\booltrue{LWR@minipagethispar}%
\LWR@traceinfo{fminipage done}%
}
\LWR@formattedenv{fminipage}
\NewDocumentCommand{\LWR@HTML@raisebox}{m o o m}{%
#4%
}
\LWR@formatted{raisebox}
\end{warpHTML}
\begin{warpall}
\newbool{FixSmallCaps}
\boolfalse{FixSmallCaps}
\end{warpall}
\begin{warpHTML}
\DeclareRobustCommand{\LWR@HTML@emph}[1]{%
{%
\LWR@HTML@itshape%
\LWR@htmlspan{em}{#1}%
}%
}
\LWR@formatted{emph}
\DeclareRobustCommand{\LWR@HTML@textmd}[1]{%
{%
\LWR@HTML@mdseries%
\InlineClass(font-weight:normal){textmd}{#1}%
}%
}
\LWR@formatted{textmd}
\DeclareRobustCommand{\LWR@HTML@textbf}[1]{%
{%
\LWR@HTML@bfseries%
\LWR@htmlspan{b}{#1}%
}%
}
\LWR@formatted{textbf}
\DeclareRobustCommand{\LWR@HTML@texteb}[1]{%
{%
\LWR@HTML@ebweight%
\InlineClass{texteb}{#1}%
}%
}
\LWR@formatted{texteb}
\DeclareRobustCommand{\LWR@HTML@textlg}[1]{%
{%
\LWR@HTML@lgweight%
\InlineClass{textlg}{#1}%
}%
}
\LWR@formatted{textlg}
\DeclareRobustCommand{\LWR@HTML@textrm}[1]{%
{%
\LWR@HTML@rmfamily%
\InlineClass(font-family:serif){textrm}{#1}%
}%
}
\LWR@formatted{textrm}
\DeclareRobustCommand{\LWR@HTML@textsf}[1]{%
{%
\LWR@HTML@sffamily%
\InlineClass(font-family:sans){textsf}{#1}%
}%
}
\LWR@formatted{textsf}
\DeclareRobustCommand{\LWR@HTML@texttt}[1]{%
{%
\LWR@HTML@ttfamily%
\LWR@htmlspan{kbd}{#1}%
}%
}
\LWR@formatted{texttt}
\DeclareRobustCommand{\LWR@HTML@textup}[1]{%
{%
\LWR@HTML@upshape%
\InlineClass(font-style:normal){textup}{#1}%
}%
}
\LWR@formatted{textup}
\DeclareRobustCommand{\LWR@HTML@textit}[1]{%
{%
\LWR@HTML@itshape%
\LWR@htmlspan{i}{#1}%
}%
}
\LWR@formatted{textit}
\DeclareRobustCommand{\LWR@HTML@textsc}[1]{%
{%
\LWR@HTML@scshape%
\InlineClass{textsc}{#1}%
}%
}
\LWR@formatted{textsc}
\DeclareRobustCommand{\LWR@HTML@textulc}[1]{%
{%
\LWR@HTML@ulcshape%
\InlineClass{textulc}{#1}%
}%
}
\LWR@formatted{textulc}
\@ifundefined{textsi}{
\LetLtxMacro\LWR@print@textsi\LWR@print@textsc
}{}
\DeclareRobustCommand{\LWR@HTML@textsi}[1]{%
{%
\LWR@HTML@sishape%
\textsc{\textit{#1}}%
}%
}
\LWR@formatted{textsi}
\DeclareRobustCommand{\LWR@HTML@textsl}[1]{%
{%
\slshape%
\InlineClass(font-style:oblique){textsl}{#1}%
}%
}
\LWR@formatted{textsl}
\newrobustcmd{\LWR@HTML@textssc}[1]{\textsc{#1}}
\LWR@formatted{textssc}
\DeclareRobustCommand{\LWR@HTML@textnormal}[1]{\textmd{\textrm{\textup{#1}}}}
\LWR@formatted{textnormal}
\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%
}
\newcommand*{\LWR@f@family}{rm}
\newcommand*{\LWR@f@series}{md}
\newcommand*{\LWR@f@shape}{up}
\newcommand*{\LWR@f@shapecaps}{ulc}
\newcounter{LWR@textcurrentfontdepth}
\setcounter{LWR@textcurrentfontdepth}{0}
\newcommand*{\LWR@textcurrentfont}[1]{%
\ifnumcomp{\value{LWR@textcurrentfontdepth}}{>}{0}%
{%
\addtocounter{LWR@textcurrentfontdepth}{1}%
#1%
\addtocounter{LWR@textcurrentfontdepth}{-1}%
}%
{%
\addtocounter{LWR@textcurrentfontdepth}{1}%
\InlineClass{%
text\LWR@f@family\LWR@origtilde{}%
text\LWR@f@series\LWR@origtilde{}%
text\LWR@f@shape\LWR@origtilde{}%
text\LWR@f@shapecaps%
}%
{#1}%
\addtocounter{LWR@textcurrentfontdepth}{-1}%
}%
}
\newenvironment*{LWR@blocktextcurrentfont}{%
\LWR@stoppars%
\BlockClass{%
text\LWR@f@family\LWR@origtilde{}%
text\LWR@f@series\LWR@origtilde{}%
text\LWR@f@shape\LWR@origtilde{}%
text\LWR@f@shapecaps%
}%
}{\endBlockClass\LWR@startpars}
\newrobustcmd*{\LWR@HTML@mdseries}{%
\LWR@print@mdseries%
\renewcommand*{\LWR@f@series}{md}%
}
\LWR@formatted{mdseries}
\newrobustcmd*{\LWR@HTML@bfseries}{%
\LWR@print@bfseries%
\renewcommand*{\LWR@f@series}{bf}%
}
\LWR@formatted{bfseries}
\newrobustcmd*{\LWR@HTML@ebweight}{%
\LWR@print@ebweight%
\renewcommand*{\LWR@f@series}{eb}%
}
\LWR@formatted{ebweight}
\newrobustcmd*{\LWR@HTML@lgweight}{%
\LWR@print@lgweight%
\renewcommand*{\LWR@f@series}{lg}%
}
\LWR@formatted{lgweight}
\newrobustcmd*{\LWR@HTML@rmfamily}{%
\LWR@print@rmfamily%
\renewcommand*{\LWR@f@family}{rm}%
}
\LWR@formatted{rmfamily}
\newrobustcmd*{\LWR@HTML@sffamily}{%
\LWR@print@sffamily%
\renewcommand*{\LWR@f@family}{sf}%
}
\LWR@formatted{sffamily}
\newrobustcmd*{\LWR@HTML@ttfamily}{%
\LWR@print@ttfamily%
\renewcommand*{\LWR@f@family}{tt}%
}
\LWR@formatted{ttfamily}
\newrobustcmd*{\LWR@HTML@upshape}{%
\LWR@print@upshape%
\renewcommand*{\LWR@f@shape}{up}%
}
\AtBeginDocument{\LWR@formatted{upshape}}
\newrobustcmd*{\LWR@HTML@itshape}{%
\LWR@print@itshape%
\renewcommand*{\LWR@f@shape}{it}%
}
\AtBeginDocument{\LWR@formatted{itshape}}
\newrobustcmd*{\LWR@HTML@scshape}{%
\ifbool{FixSmallCaps}{}{%
\LWR@print@scshape%
}%
\renewcommand*{\LWR@f@shapecaps}{sc}%
}
\AtBeginDocument{\LWR@formatted{scshape}}
\@ifundefined{ulcshape}{
\LetLtxMacro\ulcshape\upshape
}{}
\newrobustcmd*{\LWR@HTML@ulcshape}{%
\LWR@print@ulcshape%
\renewcommand*{\LWR@f@shapecaps}{ulc}%
}
\AtBeginDocument{\LWR@formatted{ulcshape}}
\@ifundefined{sishape}{
\LetLtxMacro\sishape\scshape
}{}
\newrobustcmd*{\LWR@HTML@sishape}{%
\ifbool{FixSmallCaps}{}{%
\LWR@print@sishape%
}%
\renewcommand*{\LWR@f@shape}{it}
\renewcommand*{\LWR@f@shapecaps}{sc}%
}
\AtBeginDocument{\LWR@formatted{sishape}}
\newrobustcmd*{\LWR@HTML@slshape}{%
\LWR@print@slshape%
\renewcommand*{\LWR@f@shape}{sl}%
}
\AtBeginDocument{\LWR@formatted{slshape}}
\newrobustcmd{\LWR@HTML@sscshape}{\LWR@HTML@scshape}
\AtBeginDocument{\LWR@formatted{sscshape}}
\newrobustcmd*{\LWR@HTML@normalfont}{\rmfamily\mdseries\upshape\ulcshape}
\LWR@formatted{normalfont}
\FilenameNullify{%
\LetLtxMacro\rmfamily\@empty%
\LetLtxMacro\sffamily\@empty%
\LetLtxMacro\ttfamily\@empty%
\LetLtxMacro\bfseries\@empty%
\LetLtxMacro\ebweight\@empty%
\LetLtxMacro\lgweight\@empty%
\LetLtxMacro\mdseries\@empty%
\LetLtxMacro\upshape\@empty%
\LetLtxMacro\slshape\@empty%
\LetLtxMacro\sishape\@empty%
\LetLtxMacro\scshape\@empty%
\LetLtxMacro\itshape\@empty%
\LetLtxMacro\ulcshape\@empty%
\LetLtxMacro\sscshape\@empty%
\LetLtxMacro\normalfont\@empty%
}
\renewcommand{\sp}[1]{\text{<sup>#1</sup>}{}}
\renewcommand{\sb}[1]{\text{<sub>#1</sub>}{}}
\newrobustcmd{\LWR@HTML@textsuperscript}[1]{\LWR@htmlspan{sup}{#1}}
\LWR@formatted{textsuperscript}
\newcommand{\LWR@HTML@@textsuperscript}[1]{\LWR@htmlspan{sup}{#1}}
\LWR@formatted{@textsuperscript}
\newrobustcmd{\LWR@HTML@textsubscript}[1]{\LWR@htmlspan{sub}{#1}}
\LWR@formatted{textsubscript}
\newcommand{\LWR@HTML@@textsubscript}[1]{\LWR@htmlspan{sub}{#1}}
\LWR@formatted{@textsubscript}
\AtBeginDocument{\let\up\textsuperscript}
\AtBeginDocument{\let\fup\textsuperscript}
\renewcommand{\underline}[1]{%
\InlineClass%
(text-decoration:underline; text-decoration-skip: auto)%
{underline}{#1}%
}
\newcommand{\LWR@overline}[1]{%
\InlineClass%
(text-decoration:overline; text-decoration-skip: auto)%
{overline}{#1}%
}
\newcommand*{\LWR@currenttextcolor}{black}
\newcommand*{\LWR@tempcolor}{}
\newcommand*{\LWR@tempcolortwo}{}
\newcommand*{\LWR@findcurrenttextcolor}{%
\renewcommand{\LWR@tempcolor}{000000}%
}
\NewDocumentCommand{\LWR@textcurrentcolor}{m}{%
\renewcommand*{\LWR@currenttextcolor}{black}%
#1%
}
\end{warpHTML}
\begin{warpprint}
\newcommand*{\LWR@textcurrentfont}[1]{#1}
\newenvironment*{LWR@blocktextcurrentfont}{}{}
\newcommand*{\FilenameNullify}[1]{}
\end{warpprint}
\begin{warpHTML}
\AtBeginDocument{
\renewrobustcmd*{\,}{\HTMLunicode{202f}} % HTML thin non-breakable space
\renewrobustcmd*{\thinspace}{\HTMLunicode{202f}} % HTML thin non-breakable space
\renewrobustcmd*{\negthinspace}{\HTMLunicode{202f}} % HTML thin non-breakable space
\renewrobustcmd*{~}{\HTMLentity{nbsp}}
\renewrobustcmd*{\textellipsis}{\HTMLunicode{2026}}
\renewrobustcmd*{\vdots}{\HTMLunicode{22EE}}
}
\newcommand*{\LWR@font@size}{normalsize}
\newrobustcmd*{\LWR@HTML@normalsize}{\renewcommand*{\LWR@font@size}{normalsize}}
\LWR@formatted{normalsize}
\newrobustcmd*{\LWR@HTML@small}{\renewcommand*{\LWR@font@size}{small}}
\LWR@formatted{small}
\newrobustcmd*{\LWR@HTML@footnotesize}{\renewcommand*{\LWR@font@size}{footnotesize}}
\LWR@formatted{footnotesize}
\newrobustcmd*{\LWR@HTML@scriptsize}{\renewcommand*{\LWR@font@size}{scriptsize}}
\LWR@formatted{scriptsize}
\newrobustcmd*{\LWR@HTML@tiny}{\renewcommand*{\LWR@font@size}{tiny}}
\LWR@formatted{tiny}
\newrobustcmd*{\LWR@HTML@large}{\renewcommand*{\LWR@font@size}{large}}
\LWR@formatted{large}
\newrobustcmd*{\LWR@HTML@Large}{\renewcommand*{\LWR@font@size}{Large}}
\LWR@formatted{Large}
\newrobustcmd*{\LWR@HTML@LARGE}{\renewcommand*{\LWR@font@size}{LARGE}}
\LWR@formatted{LARGE}
\newrobustcmd*{\LWR@HTML@huge}{\renewcommand*{\LWR@font@size}{huge}}
\LWR@formatted{huge}
\newrobustcmd*{\LWR@HTML@Huge}{\renewcommand*{\LWR@font@size}{Huge}}
\LWR@formatted{Huge}
\DeclareDocumentCommand{\onecolumn}{}{}
\DeclareDocumentCommand{\twocolumn}{O{}}{
#1
}
\newcommand*{\LWR@HTML@hfill}{\qquad}
\LWR@formatted{hfill}
\newcommand*{\LWR@HTML@hrulefill}{%
\ifbool{LWR@doingapar}%
{\rule{1in}{1pt}}%
{%
\LWR@findcurrenttextcolor%
\ifdefstring{\LWR@tempcolor}{000000}%
{%
\begin{BlockClass}{hrule}%
\end{BlockClass}%
}%
{%
\begin{BlockClass}[%
border-top: 1px solid \LWR@origpound\LWR@tempcolor % space
]{hrule}%
\end{BlockClass}%
}%
}%
}%
\LWR@formatted{hrulefill}
\newcommand*{\LWR@HTML@dotfill}{\dots}
\LWR@formatted{dotfill}
\renewcommand*{\newpage}{
}
\newrobustcmd*{\LWR@newlinebr}{\unskip\LWR@htmltag{br /}\LWR@orignewline}%
\LetLtxMacro\newline\LWR@newlinebr
\LetLtxMacro\LWR@origendofline\\
\NewDocumentCommand{\LWR@endofline}{s O{0pt}}
{%
\newline%
\setlength{\LWR@templengthone}{#2}%
\ifdimgreater{\LWR@templengthone}{0pt}{\newline}{}%
}
\newcommand*{\LWR@minipagestartpars}{%
\ifbool{LWR@minipagethispar}{\LWR@startpars}{}%
}
\newcommand*{\LWR@minipagestoppars}{%
\ifbool{LWR@minipagethispar}{\LWR@stoppars}{}%
}
\renewrobustcmd*{\quad}{%
\LWR@minipagestoppars%
\HTMLunicode{2003}%
\LWR@minipagestartpars%
}
\renewrobustcmd*{\qquad}{\quad\quad}
\renewrobustcmd*{\enskip}{%
\LWR@minipagestoppars%
\HTMLunicode{2002}%
\LWR@minipagestartpars%
}
\newlength{\LWR@tempwidth}
\newlength{\LWR@tempheight}
\newlength{\LWR@tempraise}
\newcommand{\LWR@select@html@hspace}{%
\RenewDocumentCommand{\hspace}{s m}{%
\setlength{\LWR@tempwidth}{##2}%
\ifnum\gluestretchorder\LWR@tempwidth>0%
\setlength{\LWR@tempwidth}{2em}%
\fi%
\ifdimcomp{\LWR@tempwidth}{>}{0pt}{%
\LWR@minipagestoppars%
\ifdimcomp{\LWR@tempwidth}{=}{.16667em}%
{%
\HTMLunicode{2009}% thin breakable space
}%
{%
\LWR@htmltagc{%
span style="width:\LWR@printlength{\LWR@tempwidth}; % extra space
display:inline-block"%
}%
\ifbool{FormatWP}{%
\setlength{\LWR@templengthone}{\LWR@tempwidth}%
\whiledo{\lengthtest{\LWR@templengthone>1em}}{%
\quad%
\addtolength{\LWR@templengthone}{-1em}%
}%
}%
{\LWR@htmlcomment{}}%
\LWR@htmltagc{/span}%
}%
\LWR@minipagestartpars%
}{}% width greater than 0
}%
}
\newcommand{\LWR@select@html@nohspace}{%
\RenewDocumentCommand{\hspace}{s m}{}%
}
\newcommand*{\LWR@select@print@hspace}{%
\renewrobustcmd\hspace{\@ifstar\@hspacer\@hspace}%
}
\LWR@select@html@hspace
\NewDocumentCommand{\LWR@HTML@vspace}{s m}{}
\LWR@formatted{vspace}
\renewcommand*{\linebreak}[1][]{\newline}
\renewcommand*{\nolinebreak}[1][]{}
\renewcommand*{\pagebreak}[1][]{
}
\renewcommand*{\nopagebreak}[1][]{}
\RenewDocumentCommand{\enlargethispage}{s m}{}
\renewcommand*{\clearpage}{}
\renewcommand*{\cleardoublepage}{}
\newcommand*{\LWR@HTML@rule}[3][]{%
\setlength{\LWR@tempwidth}{#2}%
\ifthenelse{\lengthtest{\LWR@tempwidth=0pt}}%
{}% zero- width
{% non-zero width
\ifthenelse{%
\lengthtest{\LWR@tempwidth>0pt}\AND%
\lengthtest{\LWR@tempwidth<1pt}%
}%
{\setlength{\LWR@tempwidth}{1pt}}%
{}%
\setlength{\LWR@tempheight}{#3}%
\ifthenelse{%
\lengthtest{\LWR@tempheight>0pt}\AND%
\lengthtest{\LWR@tempheight<1pt}%
}%
{\setlength{\LWR@tempheight}{1pt}}%
{}%
\LWR@minipagestoppars%
\LWR@findcurrenttextcolor%
\LWR@htmltagc{%
span\LWR@indentHTML%
style="%
\ifbool{FormatWP}{}{background:\LWR@currenttextcolor ; }%
width:\LWR@printlength{\LWR@tempwidth} ; %
height:\LWR@printlength{\LWR@tempheight} ; %
\ifblank{#1}%
{}%
{%
\setlength{\LWR@tempraise}{0pt-#1}%
\setlength{\LWR@tempraise}{\LWR@tempraise*2}%
\LWR@indentHTML%
-ms-transform: translate(0pt,\LWR@printlength{\LWR@tempraise}); %
\LWR@indentHTML%
-webkit-transform: translate(0pt,\LWR@printlength{\LWR@tempraise}); %
\LWR@indentHTML%
transform: translate(0pt,\LWR@printlength{\LWR@tempraise}); %
\LWR@indentHTML%
}%
display:inline-block;"\LWR@orignewline%
}%
\ifbool{FormatWP}{%
\setlength{\LWR@templengthone}{\LWR@tempwidth}%
\whiledo{\lengthtest{\LWR@templengthone>1em}}{%
\_{}%
\addtolength{\LWR@templengthone}{-1em}%
}%
}%
{\LWR@htmlcomment{}}%
\LWR@htmltagc{/span}%
\LWR@minipagestartpars%
}% non-zero width
}
\LWR@formatted{rule}
\end{warpHTML}
\begin{warpHTML}
\newrobustcmd*{\LWR@phantomsection}{%
\begingroup%
\boolfalse{LWR@forcinghtmltoc}%
\section*{}%
\endgroup%
}
\end{warpHTML}
\begin{warpall}
\newbool{LWR@warnXe}
\boolfalse{LWR@warnXe}
\newrobustcmd*{\Xe}
{%
X\hspace{-.1667em}\raisebox{-.5ex}{E}%
\global\booltrue{LWR@warnXe}%
}
\AtBeginDocument{
\@ifpackageloaded{graphics}{
\@ifpackageloaded{metalogo}{}{
\renewrobustcmd*{\Xe}
{X\hspace{-.1667em}\raisebox{-.5ex}{\reflectbox{E}}}
}
}{}
}
\AtEndDocument{
\ifbool{LWR@warnXe}{
\PackageWarningNoLine{lwarp}{Load graphicx or graphics
for improved XeTeX logo}
}{}
}
\providerobustcmd*{\XeTeX}{\mbox{\Xe\hspace{-.125em}\TeX}}
\providerobustcmd*{\XeLaTeX}{\mbox{\Xe\hspace{-.125em}\LaTeX}}
\providerobustcmd*{\AmS}{%
\leavevmode\hbox{$\mathcal A\kern-.2em\lower.376ex%
\hbox{$\mathcal M$}\kern-.2em\mathcal S$}%
}
\newrobustcmd*{\LyX}{\textsf{LyX}}
\providerobustcmd*{\LuaTeX}{\mbox{Lua\TeX}}
\providerobustcmd*{\LuaLaTeX}{\mbox{Lua\LaTeX}}
\providerobustcmd*{\BibTeX}{\mbox{B\textsc{ib}\TeX}}
\providerobustcmd*{\MakeIndex}{\mbox{\textit{MakeIndex}}}
\providerobustcmd*{\ConTeXt}{\mbox{Con\TeX{}t}}
\providerobustcmd*{\MiKTeX}{\mbox{MiK\TeX}}
\end{warpall}
\begin{warpHTML}
\newrobustcmd*{\LWR@HTML@TeX}
{%
\InlineClass{latexlogofont}%
{%
\InlineClass{latexlogo}%
{%
T%
\InlineClass{latexlogosub}{e}%
X%
}%
}%
}
\AtBeginDocument{\LWR@formatted{TeX}}% may have been patched by metalogo
\newrobustcmd*{\LWR@HTML@LaTeX}
{%
\InlineClass{latexlogofont}%
{%
\InlineClass{latexlogo}%
{%
L%
\InlineClass{latexlogosup}{a}%
T%
\InlineClass{latexlogosub}{e}%
X%
}%
}%
}
\AtBeginDocument{\LWR@formatted{LaTeX}}% may have been patched by metalogo
\newrobustcmd*{\LWR@HTML@LaTeXe}
{%
\LaTeX%
\InlineClass{latexlogofont}{%
\InlineClass{latexlogotwoe}{%
2%
\InlineClass{latexlogotwoesub}{\HTMLunicode{03B5}}%
}%
}%
}
\AtBeginDocument{\LWR@formatted{LaTeXe}}% may have been patched by metalogo
\newrobustcmd*{\LWR@HTML@LuaTeX}{\InlineClass{latexlogofont}{Lua}\TeX}
\AtBeginDocument{\LWR@formatted{LuaTeX}}% may have been patched by metalogo
\newrobustcmd*{\LWR@HTML@LuaLaTeX}{\InlineClass{latexlogofont}{Lua}\LaTeX}
\AtBeginDocument{\LWR@formatted{LuaLaTeX}}% may have been patched by metalogo
\newrobustcmd*{\LWR@HTML@Xe}
{%
X%
\InlineClass{xelatexlogosub}{\HTMLunicode{18e}}%
}
\AtBeginDocument{\LWR@formatted{Xe}}% may have been patched by metalogo
\newrobustcmd*{\LWR@HTML@XeTeX}{\InlineClass{xelatexlogo}{\Xe}\TeX}
\AtBeginDocument{\LWR@formatted{XeTeX}}% may have been patched by metalogo
\newrobustcmd*{\LWR@HTML@XeLaTeX}{\InlineClass{xelatexlogo}{\Xe}\LaTeX}
\AtBeginDocument{\LWR@formatted{XeLaTeX}}% may have been patched by metalogo
\newrobustcmd*{\LWR@HTML@ConTeXt}{%
\InlineClass{latexlogofont}{Con}\TeX{}%
\InlineClass{latexlogofont}{t}%
}
\LWR@formatted{ConTeXt}
\newrobustcmd*{\LWR@HTML@BibTeX}
{\InlineClass{latexlogofont}{B\textsc{ib}}\TeX}
\LWR@formatted{BibTeX}
\newrobustcmd*{\LWR@HTML@MakeIndex}
{\InlineClass{latexlogofont}{\textit{MakeIndex}}}
\LWR@formatted{MakeIndex}
\AtBeginDocument{%
\newrobustcmd*{\LWR@HTML@AmS}
{%
\InlineClass{amslogo}{%
\textit{%
A%
\InlineClass{latexlogosub}{M}%
S%
}%
}%
}%
\LWR@formatted{AmS}
}
\newrobustcmd*{\LWR@HTML@MiKTeX}{\InlineClass{latexlogofont}{MiK}\TeX}
\LWR@formatted{MiKTeX}
\newrobustcmd*{\LWR@HTML@LyX}{\InlineClass{lyxlogo}{LyX}}
\LWR@formatted{LyX}
\end{warpHTML}
\begin{warpHTML}
\AfterEndPreamble{\LWR@LwarpStart}
\AtEndDocument{\LWR@LwarpEnd}
\end{warpHTML}
\begin{warpHTML}
\RequirePackage{lwarp-textcomp}
\end{warpHTML}
\begin{warpHTML}
\@ifclassloaded{scrbook}{\RequirePackage{lwarp-patch-komascript}}{}
\@ifclassloaded{scrartcl}{\RequirePackage{lwarp-patch-komascript}}{}
\@ifclassloaded{scrreprt}{\RequirePackage{lwarp-patch-komascript}}{}
\end{warpHTML}
\begin{warpprint}
\@ifclassloaded{memoir}{\LWR@origRequirePackage{xcolor}}{}
\end{warpprint}
\begin{warpHTML}
\@ifclassloaded{memoir}{\RequirePackage{lwarp-patch-memoir}}{}
\end{warpHTML}
\begin{warpHTML}
\newcommand*{\LWR@patchujtclasses}{
\def\@partnameformat{}
\def\@partcntformat##1{%
\prepartname%
\csname the##1\endcsname%
\postpartname%
\quad%
}
\@ifundefined{chapter}{}{
\def\@chapcntformat##1{%
\prechaptername%
\csname the##1\endcsname%
\postchaptername%
\quad%
}
}
\renewcommand*{\LWR@printchaptername}{}
\renewcommand{\thepart}{\@Roman\c@part}
\@ifundefined{chapter}{
\renewcommand{\thesection}{\@arabic\c@section}
}{
\renewcommand{\thechapter}{\@arabic\c@chapter}
\renewcommand{\thesection}{\thechapter.\@arabic\c@section}
}
\renewcommand{\thesubsection}{\thesection.\@arabic\c@subsection}
\renewcommand{\thesubsubsection}{%
\thesubsection.\@arabic\c@subsubsection}
\renewcommand{\theparagraph}{%
\thesubsubsection.\@arabic\c@paragraph}
\renewcommand{\thesubparagraph}{%
\theparagraph.\@arabic\c@subparagraph}
\@ifundefined{chapter}{
\renewcommand{\thefigure}{\@arabic\c@figure}
\renewcommand{\thetable}{\@arabic\c@table}
}{
\renewcommand{\thefigure}{%
\ifnum\c@chapter>\z@\thechapter.\fi\@arabic\c@figure}
\renewcommand{\thetable}{%
\ifnum\c@chapter>\z@\thechapter.\fi\@arabic\c@table}
}
}
\@ifclassloaded{ujarticle}{\LWR@patchujtclasses}{}
\@ifclassloaded{ujbook}{\LWR@patchujtclasses}{}
\@ifclassloaded{ujreport}{\LWR@patchujtclasses}{}
\@ifclassloaded{utarticle}{\LWR@patchujtclasses}{}
\@ifclassloaded{utbook}{\LWR@patchujtclasses}{}
\@ifclassloaded{utreport}{\LWR@patchujtclasses}{}
\@ifclassloaded{ltjarticle}{\LWR@patchujtclasses}{}
\@ifclassloaded{ltjbook}{\LWR@patchujtclasses}{}
\@ifclassloaded{ltjreport}{\LWR@patchujtclasses}{}
\@ifclassloaded{ltjsarticle}{\LWR@patchujtclasses}{}
\@ifclassloaded{ltjsbook}{\LWR@patchujtclasses}{}
\@ifclassloaded{ltjsreport}{\LWR@patchujtclasses}{}
\@ifclassloaded{ltjskiyou}{\LWR@patchujtclasses}{}
\@ifclassloaded{ltjspf}{\LWR@patchujtclasses}{}
\@ifclassloaded{ltjtarticle}{\LWR@patchujtclasses}{}
\@ifclassloaded{ltjtbook}{\LWR@patchujtclasses}{}
\@ifclassloaded{ltjtreport}{\LWR@patchujtclasses}{}
\end{warpHTML}
\begin{warpHTML}
\AtBeginDocument{
\@ifpackageloaded{ctexpatch}{%
\def\@partcntformat#1{%
\LWR@isolate{\CTEX@partname}~%
\CTEX@part@aftername%
}%
\def\@partnameformat{}
\def\@chapcntformat#1{%
\LWR@isolate{\CTEX@chaptername}~%
\CTEX@chapter@aftername%
}%
\renewcommand*{\LWR@printchaptername}{}
}{}
}
\end{warpHTML}
\begin{warpHTML}
\AtBeginDocument{
\@ifpackageloaded{kotexutf}{%
\def\LWR@kotexutf@setref#1#2#3{%
\@setref@dhucs@orig{#1}{#2}{#3}%
\ifx#1\relax\else
\bgroup
\dhucs@make@cjkchar@null
\edef\@temp{\expandafter#2#1}\global\josatoks\expandafter{\@temp}%
\egroup
\fi%
}%
\ifdefequal{\@setref}{\LWR@kotexutf@setref}{
\let\@setref\@setref@dhucs@orig
}{}
}{}
}
\end{warpHTML}
\begin{warpHTML}
\AtBeginDocument{
\@ifpackageloaded{polyglossia}{
\PackageWarningNoLine{lwarp}
{%
Polyglossia has been loaded. Lwarp also uses cleveref.\MessageBreak
See the cleveref documentation regarding\MessageBreak
polyglossia support. Some languages are not supported%
}
\typeout{---}
\typeout{Package lwarp:}
\typeout{If the error}
\typeout{\space\space``! Undefined control sequence.
\space ... \space \protect\@begindocumenthook''}
\typeout{occurs here, use the polyglossia macro:}
\typeout{\space\space\protect\setmainlanguage\protect{...\protect}}
\typeout{---}
}{
\@ifpackageloaded{babel}{
\PackageWarningNoLine{lwarp}
{%
Babel has been loaded. Lwarp also uses cleveref.\MessageBreak
See the cleveref documentation regarding\MessageBreak
babel support. Some languages are not supported%
}
}{}
}
}
\end{warpHTML}
\newcommand*{\LWR@mathjaxwarn}[2]{%
\@ifpackageloaded{lwarp-#1}{%
\ifblank{#2}{%
\PackageWarningNoLine{lwarp}
{%
Lwarp provides emulation for MathJax when used\MessageBreak
with the #1 package%
}
}{%
\PackageWarningNoLine{lwarp}
{%
Lwarp provides emulation for MathJax when used\MessageBreak
with the #1 package.\MessageBreak
#2%
}
}%
}{}%
}
\AtBeginDocument{
\ifbool{mathjax}{
\LWR@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@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@mathjaxwarn{backnaur}
{You may enclose its uses inside\MessageBreak
lateximage environments to force SVG output,\MessageBreak
but this also changes the print output}
\LWR@mathjaxwarn{bigdelim}
{Delimiters appear only of the first line}
\LWR@mathjaxwarn{booktabs}
{In a math array, do not use (trim) for \protect\cmidrule}
\LWR@mathjaxwarn{breqn}
{Each environment becomes an SVG image}
\LWR@mathjaxwarn{delarray}
{Enclose its uses inside lateximage\MessageBreak
environments to force SVG output}
\LWR@mathjaxwarn{jkmath}{}
\LWR@mathjaxwarn{mathtools}
{See the Lwarp manual regarding the disallowspaces\MessageBreak
and showonlyrefs options, the alignat environment,\MessageBreak
and \protect\DeclarePairedDelimiter\space and related%
}
\LWR@mathjaxwarn{mathspec}{}
\LWR@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@mathjaxwarn{pb-diagram}
{Enclose its uses inside lateximage environments\MessageBreak
to force SVG output}
\LWR@mathjaxwarn{unicode-math}
{Not all characters are encoded correctly.\MessageBreak
Some symbol fonts are not supported by MathJax,\MessageBreak
and are only approximated}
\LWR@mathjaxwarn{witharrows}
{Arrows can only point to the next line.\MessageBreak
Text is only placed on a single line}
\LWR@mathjaxwarn{xy}
{xy works in text, but in math you must\MessageBreak
enclose its uses inside lateximage\MessageBreak
environments to force SVG output}
}{}
}
\endinput
%%
%% End of file `lwarp.sty'.