JezK
Edit File: lwarp.sty
%% %% 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-2022 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} [2023/01/03 v0.910 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. \long\def\etb@carsquare#1#2#3\@nil{#1#2} \RequirePackage{xpatch} \RequirePackage{ifplatform}% sense op-system platform \RequirePackage{letltxmacro} \newcommand*{\LWR@loadafter}[1]{% \IfPackageLoadedTF{#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.% } } {\relax} } \IfClassLoadedTF{memoir} {\newcommand*{\LWR@notmemoirloadafter}[1]{}} {\LetLtxMacro\LWR@notmemoirloadafter\LWR@loadafter} \LetLtxMacro\LWR@notltjloadafter\LWR@loadafter \IfClassLoadedTF{ltjarticle}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{} \IfClassLoadedTF{ltjbook}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{} \IfClassLoadedTF{ltjreport}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{} \IfClassLoadedTF{ltjsarticle}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{} \IfClassLoadedTF{ltjsbook}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{} \IfClassLoadedTF{ltjsreport}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{} \IfClassLoadedTF{ltjspf}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{} \IfClassLoadedTF{ltjskiyou}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{} \IfClassLoadedTF{ltjtarticle}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{} \IfClassLoadedTF{ltjtbook}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{} \IfClassLoadedTF{ltjtreport}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{} \newcommand*{\LWR@loadbefore}[1]{% \IfPackageLoadedTF{#1} {\relax} { \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}[1]{% \ifdefstring{\LWR@tempone}{#1}{% \LWR@loadbefore{#1}% }{}% } \newcommand*{\LWR@loadnever}[2]{% \PackageError{lwarp} {% Package #1 is not yet supported\MessageBreak by lwarp's HTML conversion% \ifblank{#2}{}{% .\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.% \ifblank{#2}{}{% \MessageBreak For possible alternatives, see package(s) #2.% }% } } \newcommand*{\LWR@afterloadnever}[2]{% \ifdefstring{\LWR@tempone}{#1}{% \LWR@loadnever{#1}{#2}% }{}% } \newcommand*{\LWR@earlyloadnever}[2]{% \IfPackageLoadedTF{#1}{% \LWR@loadnever{#1}{#2}% }{}% } \newcommand*{\LWR@earlyclassloadnever}[2]{% \IfClassLoadedTF{#1}{% \PackageError{lwarp} {% Class #1 is not supported\MessageBreak by lwarp's HTML conversion% \ifblank{#2}{}{% .\MessageBreak #2 may be useful instead% }% } {% Class #1 might conflict with lwarp in some way,\MessageBreak or is superceded by another class.% \ifblank{#2}{}{% \MessageBreak For a possible alternative, see #2.% }% } }{\relax}% } \newcommand*{\LWR@checkloadnevers}{ \LWR@checkloadnever{ae}{cm-super, lmodern} \LWR@checkloadnever{aecompl}{cm-super, lmodern} \LWR@checkloadnever{aecc}{cm-super, lmodern} \LWR@checkloadnever{alg}{algorithm2e, algorithmicx} \LWR@checkloadnever{algorithmic}{algorithm2e, algorithmicx} \LWR@checkloadnever{bitfield}{bytefield} \LWR@checkloadnever{bxcjkjatype}{upLaTeX, bxjsarticle, ujarticle, utarticle} \LWR@checkloadnever{caption2}{caption} \LWR@checkloadnever{colortab}{colortbl} \LWR@checkloadnever{csvtools}{datatool} \LWR@checkloadnever{doublespace}{setspace} \LWR@checkloadnever{fancyheadings}{fancyhdr} \LWR@checkloadnever{fncylab}{cleveref} \LWR@checkloadnever{formula}{siunitx} \LWR@checkloadnever{glossary}{glossaries} \LWR@checkloadnever{hangul}{kotex, xetexko, luatexko} \LWR@checkloadnever{hyper}{hyperref} \LWR@checkloadnever{libgreek}{libertinust1math, newtx} \LWR@checkloadnever{newthm}{ntheorem} \LWR@checkloadnever{pdfcprot}{microtype} \LWR@checkloadnever{picins}{floatflt, wrapfig, wrapfig2} \LWR@checkloadnever{rplain}{fancyhdr} \LWR@checkloadnever{si}{siunitx} \LWR@checkloadnever{sistyle}{siunitx} \LWR@checkloadnever{slashbox}{diagbox} \LWR@checkloadnever{statex}{statex2} \LWR@checkloadnever{t1enc}{fontenc, inputenc, inputenx} \LWR@checkloadnever{ucs}{inputenc, inputencx} \LWR@checkloadnever{wasysym}{textcomp, amssymb, amsfonts, mnsymbol, fdsymbol} \LWR@checkloadnever{animate}{} \LWR@checkloadnever{auto-pst-pdf}{} \LWR@checkloadnever{auto-pst-pdf-lua}{} \LWR@checkloadnever{algorithms}{} \LWR@checkloadnever{arraycols}{} \LWR@checkloadnever{bidi}{} \LWR@checkloadnever{cals}{} \LWR@checkloadnever{cellspace}{tabls} \LWR@checkloadnever{cgloss4e}{} \LWR@checkloadnever{collcell}{} \LWR@checkloadnever{colophon}{} \LWR@checkloadnever{cooltooltips}{} \LWR@checkloadnever{covington}{} \LWR@checkloadnever{crbox}{} \LWR@checkloadnever{decision-table}{} \LWR@checkloadnever{dvgloss}{} \LWR@checkloadnever{ednotes}{} \LWR@checkloadnever{edfnotes}{} \LWR@checkloadnever{eledform}{} \LWR@checkloadnever{eledmac}{} \LWR@checkloadnever{embedfile}{} \LWR@checkloadnever{endnotes-hy}{endnotes} \LWR@checkloadnever{expex}{} \LWR@checkloadnever{fancytooltips}{} \LWR@checkloadnever{fixocgx}{} \LWR@checkloadnever{flowfram}{} \LWR@checkloadnever{gb4e}{} \LWR@checkloadnever{gmverse}{} \LWR@checkloadnever{graphbox}{} \LWR@checkloadnever{graphicxbox}{} \LWR@checkloadnever{hvfloat}{} \LWR@checkloadnever{inline-images}{} \LWR@checkloadnever{isorot}{rotating} \LWR@checkloadnever{ledmac}{} \LWR@checkloadnever{linguex}{} \LWR@checkloadnever{longdiv}{} \LWR@checkloadnever{longfigure}{} \LWR@checkloadnever{longtabu}{} \LWR@checkloadnever{mdwenv}{} \LWR@checkloadnever{mdwlist}{} \LWR@checkloadnever{mdwtab}{} \LWR@checkloadnever{navigator}{} \LWR@checkloadnever{nccpic}{} \LWR@checkloadnever{nccsect}{} \LWR@checkloadnever{newvbtm}{} \LWR@checkloadnever{ocg-p}{} \LWR@checkloadnever{ocgtools}{} \LWR@checkloadnever{ocgx}{} \LWR@checkloadnever{ocgx2}{} \LWR@checkloadnever{parrun}{} \LWR@checkloadnever{poemscol}{} \LWR@checkloadnever{poetry}{} \LWR@checkloadnever{program}{} \LWR@checkloadnever{proofread}{} \LWR@checkloadnever{pst-pdf}{} \LWR@checkloadnever{refstyle}{} \LWR@checkloadnever{robustindex}{} \LWR@checkloadnever{robustglossary}{} \LWR@checkloadnever{semioneside}{} \LWR@checkloadnever{slemph}{} \LWR@checkloadnever{snotez}{sidenotes} \LWR@checkloadnever{spacingtricks}{} \LWR@checkloadnever{sverb}{verbatim, fancyvrb} \LWR@checkloadnever{syntax}{} \LWR@checkloadnever{tablists}{} \LWR@checkloadnever{tabto}{} \LWR@checkloadnever{tabu}{} \LWR@checkloadnever{tabularht}{} \LWR@checkloadnever{tabularkv}{} \LWR@checkloadnever{thumby}{} \LWR@checkloadnever{titles}{} \LWR@checkloadnever{typehtml}{} \LWR@checkloadnever{unicode-bidi}{} \LWR@checkloadnever{vcell}{} \LWR@checkloadnever{xhfill}{} } \LetLtxMacro\LWR@checkloadnever\LWR@earlyloadnever \LWR@checkloadnevers \IfPackageLoadedTF{xeCJK}{}{ \LWR@checkloadnever{CJK}{ctex, xeCJK} \LWR@checkloadnever{CJKutf8}{ctex, xeCJK} } \LWR@earlyclassloadnever{beamer}{beamerarticle} \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@earlyclassloadnever{novel}{} \LWR@earlyclassloadnever{powerdot}{} \LWR@loadafter{2in1} \LWR@loadafter{2up} \LWR@loadafter{a4} \LWR@loadafter{a4wide} \LWR@loadafter{a5comb} \LWR@notmemoirloadafter{abstract} \LWR@loadafter{academicons} \LWR@loadafter{accents} \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{amscdx} \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{authoraftertitle}% Supported as-is, but must be loaded after. \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{beamerarticle} \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{bussproofs} \LWR@loadafter{bxpapersize} \LWR@loadafter{bytefield} \LWR@loadafter{ccicons} \LWR@loadafter{cancel} \LWR@loadafter{canoniclayout} \LWR@loadafter{caption} \LWR@loadafter{caption2} \LWR@loadafter{caption3} \LWR@loadafter{cases} \LWR@loadafter{centerlastline} \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{classicthesis} \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{decorule} \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@loadafter{enotez} \LWR@notmemoirloadafter{enumerate} \LWR@loadafter{enumitem} \LWR@notmemoirloadafter{epigraph} \LWR@loadafter{epsf} \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{esvect} \LWR@loadafter{etoc} \LWR@loadafter{eurosym} \LWR@loadafter{everypage} \LWR@loadafter{extarrows} \LWR@loadafter{extramarks} \LWR@loadafter{fancybox} \LWR@loadafter{fancyhdr} \LWR@loadafter{fancypar} \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{fixmath} \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{froufrou} \LWR@loadafter{ftcap} \LWR@loadafter{ftnright} \LWR@loadafter{fullminipage} \LWR@loadafter{fullpage} \LWR@loadafter{fullwidth} \LWR@loadafter{fvextra} \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{hepunits} \LWR@loadafter{hhline} \LWR@loadafter{hhtensor} \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@loadafter{impnattypo} \LWR@notmemoirloadafter{index} \LWR@loadafter{intopdf} \LWR@loadafter{isomath} \LWR@loadafter{isotope} \LWR@loadafter{jurabib} \LWR@loadafter{karnaugh-map} \LWR@loadafter{keyfloat} \LWR@loadafter{keystroke} \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{lltjp-siunitx} \LWR@loadafter{lltjp-tascmac} \LWR@loadafter{longtable} \LWR@loadafter{lpic} \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{luavlna} \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{mathastext} \LWR@loadafter{mathcomp} \LWR@loadafter{mathdesign} \LWR@loadafter{mathdots} \LWR@loadafter{mathfixs} \LWR@loadafter{mathpazo} \LWR@loadafter{mathptmx} \LWR@loadafter{mathspec} \LWR@loadafter{mathtools} \LWR@loadafter{mattens} \LWR@loadafter{maybemath} \LWR@loadafter{mcaption} \LWR@loadafter{mdframed} \LWR@loadafter{mdwmath} \LWR@loadafter{media9} \LWR@loadafter{memhfixc} \LWR@loadafter{menukeys} \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{minted} \LWR@loadafter{mismath} \LWR@loadafter{mleftright} \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{mwe} \LWR@loadafter{nameauth} \LWR@loadafter{nameref} \LWR@loadafter{natbib} \LWR@notmemoirloadafter{nccfancyhdr} \LWR@loadafter{nccfoots} \LWR@loadafter{nccmath} \LWR@notmemoirloadafter{needspace} \LWR@notmemoirloadafter{nextpage} \LWR@loadafter{nicefrac} \LWR@loadafter{niceframe} \LWR@loadafter{nicematrix} \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{orcidlink} \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{pbalance} \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{picinpar} \LWR@loadafter{pifont} \LWR@loadafter{pinlabel} \LWR@loadafter{placeins} \LWR@loadafter{plarray} \LWR@loadafter{plarydshln} \LWR@loadafter{plextarray} \LWR@loadafter{plextarydshln} \LWR@loadafter{plcolortbl} \LWR@loadafter{plextdelarray} \LWR@loadafter{plimsoll} \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{refcheck} \LWR@loadafter{register} \LWR@loadafter{relsize} \LWR@loadafter{repeatindex} \LWR@loadafter{resizegather} \LWR@loadafter{returntogrid} \LWR@loadafter{rlepsf} \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{scalerel} \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{selectp} \LWR@loadafter{semantic-markup} \LWR@notmemoirloadafter{setspace} \LWR@loadafter{shadow} \LWR@loadafter{shapepar} \LWR@notmemoirloadafter{showidx} \LWR@loadafter{showlabels} \LWR@loadafter{showkeys} \LWR@loadafter{showtags} \LWR@loadafter{shuffle} \LWR@loadafter{sidecap} \LWR@loadafter{sidenotes} \LWR@loadafter{simplebnf} \LWR@loadafter{SIunits} \LWR@loadafter{siunitx} \LWR@loadafter{siunitx-v2} \LWR@loadafter{skmath} \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{statistics} \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{swfigure} \LWR@loadafter{sympytex} \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{tagpdf-mc-code-generic} \LWR@loadafter{tagpdf-mc-code-lua} \LWR@loadafter{tascmac} \LWR@loadafter{tcolorbox} \LWR@loadafter{tensor} \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{thmtools} \LWR@loadafter{threadcol} \LWR@loadafter{threeparttable} \LWR@loadafter{threeparttablex} \LWR@loadafter{thumb} \LWR@loadafter{thumbs} \LWR@loadafter{tikz} \LWR@loadafter{tikz-imagelabels} \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{units} \LWR@loadafter{unitsdef} \LWR@loadafter{upgreek} \LWR@loadafter{upref} \LWR@loadafter{url} \LWR@loadafter{ushort} \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{wrapfig2} \LWR@loadafter{xbmks} \LWR@loadafter{xcolor} \LWR@loadafter{xechangebar} \LWR@loadafter{xellipsis} \LWR@loadafter{xevlna} \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} \IfPackageLoadedTF{inputenc}{}{ \IfPackageLoadedTF{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}{ff}% Here, the first arguments are ligatures. \newunicodechar{fi}{fi} \newunicodechar{fl}{fl} \newunicodechar{ffi}{ffi} \newunicodechar{ffl}{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 \ifxetexorluatex \AtBeginDocument{ \IfPackageLoadedTF{kpfonts}{ \PackageError{lwarp} {% When using XeLaTeX or LuaLaTeX,\MessageBreak use kpfonts-otf instead of kpfonts% } {% Replace: \protect\usepackage{kpfonts}\MessageBreak with: \protect\usepackage{kpfonts-otf} } }{} } \fi \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,\MessageBreak macro \LWRbackslash #2.\MessageBreak Lwarp or #1 may need to be updated% }% {Please contact the maintainer of the Lwarp package.}% } \providecommand*{\csNewCommandCopycs}[2]{% \expandafter\NewCommandCopy\csname#1\expandafter\endcsname% \csname#2\endcsname% } \providecommand*{\NewEnvironmentCopy}[2]{% \csNewCommandCopycs{#1}{#2}% \csNewCommandCopycs{end#1}{end#2}% } \newcommand{\LWR@isolate}[1]{#1}% \IfPackageLoadedTF{ctexpatch}{ \renewcommand{\LWR@isolate}[1]{\null#1\null}% }{} \IfPackageLoadedTF{xeCJK}{ \renewcommand{\LWR@isolate}[1]{\null#1\null}% }{} \newcommand*{\LWR@disablepinyin}{} \newcommand*{\LWR@forceemptyline}{% \LWR@origrule{0pt}{1\baselineskip}% \LWR@orignewline% } \long\def\LWR@thirdofthree#1#2#3{#3}% \long\def\LWR@fourthoffour#1#2#3#4{#4}% \long\def\LWR@firstoffive#1#2#3#4#5{#1} \long\def\LWR@secondoffive#1#2#3#4#5{#2} \long\def\LWR@thirdoffive#1#2#3#4#5{#3} \long\def\LWR@fourthoffive#1#2#3#4#5{#4} \long\def\LWR@fifthoffive#1#2#3#4#5{#5} \newcounter{LWR@texboxdepth} \setcounter{LWR@texboxdepth}{0} \newcommand*{\LWR@maybe@orignewpage}{% \LWR@traceinfo{LWR@maybe@orignewpage}% \ifnumgreater{\value{LWR@texboxdepth}}{0} {}% {\LWR@orignewpage}% \LWR@traceinfo{LWR@maybe@orignewpage done}% } \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% } \ExplSyntaxOn \newcommand*{\LWRtexttitlecase}[1]{% \text_titlecase:n{#1}% } \ExplSyntaxOff \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{$} \def\LWRdollar{$}% syntax highlighting \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{warpdisable}{% \PackageInfo{lwarp}{Using option 'warpdisable'} \boolfalse{warpingprint}% \boolfalse{warpingHTML}% } \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% \csundef{LWR@#1commentused}% } \csarg\def{#1}{% \endgroup \ifcsdef{LWR@#1commentused}{ \PackageError{lwarp}% {Nested #1 environment}% {% Environment #1 cannot be nested.\MessageBreak This can happen when a package is loaded from inside a\MessageBreak #1 environment.% }% }{\relax} \csdef{LWR@#1commentused}{} \message{Including '#1' comment.}% \def\CommentCutFile{comment_#2.cut} \SetUpCutFile \ProcessComment{#1} }% \CommentEndDef{#1} } \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}} \ifboolexpr{bool {warpingprint} or bool {warpingHTML}} {} { \LWR@excludecomment{warpHTML}{html} \LWR@excludecomment{warpprint}{print} \LWR@excludecomment{warpMathJax}{mathjax} } \begin{warpprint} \LWR@excludecomment{warpMathJax}{mathjax} \end{warpprint} \begin{warpHTML} \ifbool{mathjax} {\LWR@includecomment{warpMathJax}{mathjax}} {\LWR@excludecomment{warpMathJax}{mathjax}} \end{warpHTML} \begin{warpprint} \LWR@includecomment{warpsvg}{mathsvg} \end{warpprint} \begin{warpHTML} \ifbool{mathjax} {\LWR@excludecomment{warpsvg}{mathsvg}} {\LWR@includecomment{warpsvg}{mathsvg}} \end{warpHTML} \ifbool{LWR@creatinglwarpmk} {\LWR@includecomment{LWRcreatelwarpmk}{lwarpmk}} {\LWR@excludecomment{LWRcreatelwarpmk}{lwarpmk}} \begin{warpHTML} \ifxetexorluatex \IfPackageLoadedTF{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{encoding = *,family = tt*} \fi \end{warpHTML} \begin{warpHTML} \IfPackageLoadedTF{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} \end{warpHTML} \begin{warpall} \@ifundefined{filec@ntents@opt}{% older kernel, discard optional args \RequirePackage{filecontents} \LetLtxMacro\LWR@orig@filec@ntents\filec@ntents \IfPackageAtLeastTF{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{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}% } \LetLtxMacro\LWR@checkloadnever\LWR@afterloadnever \newcommand*{\LWR@checkloadfilename}[1]{% \edef\LWR@tempone{#1}% \LWR@checkloadnevers \LWR@checkloadbefore{ctex} \LWR@checkloadbefore{fontspec} \LWR@checkloadbefore{inputenc} \LWR@checkloadbefore{inputenx} \LWR@checkloadbefore{nfssext-cfr} \LWR@checkloadbefore{fontaxes} \LWR@checkloadbefore{kotex} \LWR@checkloadbefore{kpfonts}% textcomp option clash \LWR@checkloadbefore{luatexja} \LWR@checkloadbefore{luatexja-fontspec} \LWR@checkloadbefore{luatexko} \LWR@checkloadbefore{morewrites} \LWR@checkloadbefore{newclude} \LWR@checkloadbefore{newunicodechar} \LWR@checkloadbefore{plext} \LWR@checkloadbefore{xeCJK} \LWR@checkloadbefore{xetexko} \LWR@checkloadbefore{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}% \IfSubStr{\detokenize\expandafter{#1}}{\LWRleftbrace}% {% \PackageError{lwarp}{% You used:\MessageBreak \protect\usepackage[#1]{#2}\MessageBreak Braces in the package options will fail with Lwarp.\MessageBreak Instead, use:\MessageBreak \protect\PassOptionsToPackage{#1}{#2}\MessageBreak \protect\usepackage{#2}\MessageBreak near the line number given below.\MessageBreak Enter 'h' for more info% }% {% See the Lwarp manual troubleshooting index entry for\MessageBreak ``package, options with braces''% }% }% {}% no brace \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 \@onlypreamble\RequirePackage \@onlypreamble\usepackage \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% \IfPackageLoadedTF{#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{warpall} \newcommand*{\LWR@formatted}[1]{} \newcommand*{\LWR@expandableformatted}[1]{} \newcommand*{\LWR@formattedenv}[1]{} \newcommand*{\LWR@expandableformattedenv}[1]{} \end{warpall} \begin{warpHTML} \newcommand*{\LWR@formatting}{HTML} \newcommand*{\LWR@formatted@checkname}[1]{% \ifcsundef{#1}{% \ifcsundef{LWR@print@#1}{% \PackageError{lwarp} {% \LWRbackslash#1 or \protect\LWR@print@#1\MessageBreak must be defined before using \protect\LWR@formatted, etc% } {Perhaps #1 is misspelled.} }{\relax}% }{\relax}% \ifcsundef{LWR@HTML@#1}{% \PackageError{lwarp} {% \protect\LWR@HTML@#1 must be defined before using \protect\LWR@formatted, etc% } {Perhaps #1 is misspelled.} }{\relax}% } \newcommand*{\LWR@formatted@checkendname}[1]{% \ifcsundef{end#1}{% \ifcsundef{endLWR@print@#1}{% \PackageError{lwarp} {% \protect\end#1 or \protect\endLWR@print@#1\MessageBreak must be defined before using \protect\LWR@formatted, etc% } {Perhaps #1 is misspelled.} }{\relax}% }{\relax}% \ifcsundef{endLWR@HTML@#1}{% \PackageError{lwarp} {% \protect\endLWR@HTML@#1 must be defined before using \protect\LWR@formatted, etc% } {Perhaps #1 is misspelled.} }{\relax}% } \renewcommand*{\LWR@formatted}[1]{% \LWR@formatted@checkname{#1}% \ifcsundef{LWR@print@#1}{% \csNewCommandCopycs{LWR@print@#1}{#1}% }{}% \ifcsundef{#1}{% \expandafter\newrobustcmd\csname #1\endcsname{% \@nameuse{LWR@\LWR@formatting @#1}% }% }{% \expandafter\renewrobustcmd\csname #1\endcsname{% \@nameuse{LWR@\LWR@formatting @#1}% }% }% } \renewcommand*{\LWR@expandableformatted}[1]{% \LWR@formatted@checkname{#1}% \ifcsundef{LWR@print@#1}{% \csNewCommandCopycs{LWR@print@#1}{#1}% }{}% \ifcsundef{#1}{% \expandafter\newcommand\csname #1\endcsname{% \@nameuse{LWR@\LWR@formatting @#1}% }% }{% \expandafter\renewcommand\csname #1\endcsname{% \@nameuse{LWR@\LWR@formatting @#1}% }% }% } \renewcommand*{\LWR@formattedenv}[1]{% \LWR@formatted@checkname{#1}% \LWR@formatted@checkendname{#1}% \ifcsundef{LWR@print@#1}{% \NewEnvironmentCopy{LWR@print@#1}{#1}% }{}% \DeclareDocumentEnvironment{#1}{}% {% \@nameuse{LWR@\LWR@formatting @#1}% }% {% \@nameuse{endLWR@\LWR@formatting @#1}% }% } \renewcommand*{\LWR@expandableformattedenv}[1]{% \LWR@formatted@checkname{#1}% \LWR@formatted@checkendname{#1}% \ifcsundef{LWR@print@#1}{% \NewEnvironmentCopy{LWR@print@#1}{#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=\textquotedbl{}subparagraph\textquotedbl} \renewcommand*{\LWR@tagsubparagraphend}{/span} }% WPTitleHeading {% not WPTitleHeading, part and section starting at h1 \renewcommand*{\LWR@tagtitle}{div class=\textquotedbl{}title\textquotedbl} \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=\textquotedbl{}title\textquotedbl} \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=\textquotedbl{}subparagraph\textquotedbl} \renewcommand*{\LWR@tagsubparagraphend}{/span} }% not WPTitleHeading }% chapter defined }{}% FormatWP }% AtBeginDocument \end{warpHTML} \begin{warpHTML} \chardef\LWR@origpound=`\# \let\LWR@origcomma\, \let\LWR@origtilde~ \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 \LetLtxMacro\LWR@orig@@textquotedbl\textquotedbl \LetLtxMacro\LWR@orig@textquotedbl\LWR@orig@@textquotedbl \AtEndPreamble{ \IfPackageLoadedTF{libertinus-otf}{ \renewcommand{\LWR@orig@textquotedbl}{\LWR@orig@@textquotedbl\kern-.15em} \LetLtxMacro\textquotedbl\LWR@orig@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 -dALLOWPSTRANSPARENCY}{}.ps } \def\LWR@tempHTMLlatexcmd{% \LWR@compilecmd{latex}{_html} \LWR@addcompilecmd{dvips}{_html} \LWR@addcompilecmd{ps2pdf -dALLOWPSTRANSPARENCY}{_html}.ps } } } \fi% \ifXeTeX \fi% \ifpdf }% latexmk \IfClassLoadedTF{ujarticle}{\LWR@compileuplatex}{} \IfClassLoadedTF{ujbook}{\LWR@compileuplatex}{} \IfClassLoadedTF{ujreport}{\LWR@compileuplatex}{} \IfClassLoadedTF{utarticle}{\LWR@compileuplatex}{} \IfClassLoadedTF{utbook}{\LWR@compileuplatex}{} \IfClassLoadedTF{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-2022 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, p 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, table td.tdbfseries { font-weight: bold; } span.textit, div.textit, table td.tditshape { font-style: italic; } table td.tdbfit { font-weight: bold ; font-style:italic } span.textnormal, div.textnormal { font-weight: normal; font-style: normal; font-variant: normal; font-variant-numeric: normal ; font-family: "DejaVu Serif", "Bitstream Vera Serif", "Lucida Bright", Georgia, serif; } 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 ; } /* keystroke package: */ span.keystroke { border-style: outset ; padding: 0pt .5em 0pt .5em ; } 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 ; } main.bodycontainer { float: left ; width: 80% ; } div.bodywithoutsidetoc main.bodycontainer { float: none ; width: 100% ; } section.textbody div.footnotes{ margin: 1ex 2em 2ex 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; } li.p { display: inline ; } 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 ; padding: 4pt } .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, shadebox packages */ .mdframed, .tcolorbox, .shadebox { 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 ; } /* For beamerarticle: */ div.beamerframe { margin: 3ex 1em 3ex 1em ; border: 1px solid gray; border-radius: 0px ; padding: .3ex 1em 0ex 1em ; display: block ; } 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 } /* for subcaptions: */ figure div.minipage div.figurecaption { max-width: 100% ; /* fallback if min() does not work */ max-width: min(30em,100%) } 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 ; } /* Center if only one line, "start" align if more than one line: */ div.figurecaption , .lstlistingtitle { font-size: .85em ; font-weight: bold ; text-align: start ; margin: 1ex auto; width: max-content; max-width: 100%; } /* A marginblock is small, so always center and don't mess with the width. */ div.marginblock div.figurecaption { width: 100% ; text-align: center ; } 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.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 } table td.tdcenter { text-align: center} table td.tdleft { text-align: left} table td.tdright { text-align: right} /* 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 { text-align: center ; 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 ; } div.sidetoccontainer { font-family: "DejaVu Serif", "Bitstream Vera Serif", "Lucida Bright", Georgia, serif; float: left ; width: 19%; /* room for border-right next to 80% main */ margin: 0pt 0em 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 auto ; -moz-columns: 3 auto ; columns: 3 auto ; } 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: 60% ; 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. The subscripts are shrunk instead of lowered below the baseline, to avoid browser rendering errors with the line height in lists, etc. */ .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; } .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; */ font-size: .7em ; } .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; */ font-size: .7em ; } .xelatexlogo { font-family: "Linux Libertine O", "Nimbus Roman No 9 L", "FreeSerif", "Hoefler Text", Times, "Times New Roman", serif; letter-spacing: .03em ; } .xelatexlogosub { /* vertical-align: -0.27ex; */ margin-left: -0.0667em; margin-right: -.05em; /* font-size: 1em; */ font-size: .7em ; 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: 100em) { div.multicols { -webkit-columns: 2 auto ; -moz-columns: 2 auto ; columns: 2 auto ; } } @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 } main.bodycontainer { width: 100% } .marginpar { max-width: 100%; float: none; display:block ; margin: 1ex 1em 1ex 1em ; } div.multicols { -webkit-columns: 1 auto ; -moz-columns: 1 auto ; columns: 1 auto ; } } @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; } main.bodycontainer { width: 100% } } @media handheld { div.sidetoccontainer { display:none; } nav.topnavigation { display:block } nav.botnavigation { display:block } main.bodycontainer { width: 100% } } @media projection { div.sidetoccontainer { display:none; } nav.topnavigation { display:block } nav.botnavigation { display:block } main.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 --margins \LWRopquote0 1 0 0\LWRopquote\space % \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 // \left, \right delimiters: https://github.com/mathjax/MathJax/issues/2535 // // Modified by Brian Dunn to adjust equation numbering and add subequations. // // LaTeX can use \seteqnumber{subequations?}{section}{number} before each equation. // subequations? is 0 usually, 1 if inside subequations. // section is a string printed as-is, or empty. // number is auto-incremented by MathJax between equations. // MathJax = { subequations: "0", section: "", loader: { load: ['[tex]/tagformat', '[tex]/textmacros'], }, startup: { ready() { // These would be replaced by import commands if you wanted to make // a proper extension. const Configuration = MathJax._.input.tex.Configuration.Configuration; const CommandMap = MathJax._.input.tex.SymbolMap.CommandMap; const Macro = MathJax._.input.tex.Symbol.Macro; const TexError = MathJax._.input.tex.TexError.default; const ParseUtil = MathJax._.input.tex.ParseUtil.default; const expandable = MathJax._.util.Options.expandable; // 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, \ifblank, \ifstrequal, \gsub, \seteqnumber new CommandMap('Lwarp-macros', { ifstar: 'IfstarFunction', ifnextchar: 'IfnextcharFunction', ifblank: 'IfblankFunction', ifstrequal: 'IfstrequalFunction', gsubstitute: 'GsubstituteFunction', seteqnumber: 'SeteqnumberFunction' }, { // This function implements an ifstar macro. IfstarFunction(parser, name) { const resultstar = parser.GetArgument(name); const resultnostar = parser.GetArgument(name); const star = parser.GetStar(); // true if there is a * useArgument(parser, star ? resultstar : resultnostar); }, // This function implements an ifnextchar macro. IfnextcharFunction(parser, name) { let whichchar = parser.GetArgument(name); if (whichchar.match(/^(?:0x[0-9A-F]+|[0-9]+)$/i)) { // $ syntax highlighting whichchar = String.fromCodePoint(parseInt(whichchar)); } const resultnextchar = parser.GetArgument(name); const resultnotnextchar = parser.GetArgument(name); const gotchar = (parser.GetNext() === whichchar); useArgument(parser, gotchar ? resultnextchar : resultnotnextchar); }, // This function implements an ifblank macro. IfblankFunction(parser, name) { const blankarg = parser.GetArgument(name); const resultblank = parser.GetArgument(name); const resultnotblank = parser.GetArgument(name); const isblank = (blankarg.trim() == ""); useArgument(parser, isblank ? resultblank : resultnotblank); }, // This function implements an ifstrequal macro. IfstrequalFunction(parser, name) { const strequalfirst = parser.GetArgument(name); const strequalsecond = parser.GetArgument(name); const resultequal = parser.GetArgument(name); const resultnotequal = parser.GetArgument(name); const isequal = (strequalfirst == strequalsecond); useArgument(parser, isequal ? resultequal : resultnotequal); }, // This function implements a gsub macro. GsubstituteFunction(parser, name) { const gsubfirst = parser.GetArgument(name); const gsubsecond = parser.GetArgument(name); const gsubthird = parser.GetArgument(name); let gsubresult=gsubfirst.replace(gsubsecond, gsubthird); useArgument(parser, gsubresult); }, // 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 Lwarp-macros package Configuration.create('Lwarp-macros', { handler: {macro: ['Lwarp-macros']} }); MathJax.startup.defaultReady(); // For forward references: MathJax.startup.input[0].preFilters.add(({math}) => { if (math.inputData.recompile){ MathJax.config.subequations = math.inputData.recompile.subequations; MathJax.config.section = math.inputData.recompile.section; } }); 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; } }); // For \left, \right with unicode-math: const {DelimiterMap} = MathJax._.input.tex.SymbolMap; const {Symbol} = MathJax._.input.tex.Symbol; const {MapHandler} = MathJax._.input.tex.MapHandler; const delimiter = MapHandler.getMap('delimiter'); delimiter.add('\\lBrack', new Symbol('\\lBrack', '\u27E6')); delimiter.add('\\rBrack', new Symbol('\\rBrack', '\u27E7')); delimiter.add('\\lAngle', new Symbol('\\lAngle', '\u27EA')); delimiter.add('\\rAngle', new Symbol('\\rAngle', '\u27EB')); delimiter.add('\\lbrbrak', new Symbol('\\lbrbrak', '\u2772')); delimiter.add('\\rbrbrak', new Symbol('\\rbrbrak', '\u2773')); delimiter.add('\\lbag', new Symbol('\\lbag', '\u27C5')); delimiter.add('\\rbag', new Symbol('\\rbag', '\u27C6')); delimiter.add('\\llparenthesis', new Symbol('\\llparenthesis', '\u2987')); delimiter.add('\\rrparenthesis', new Symbol('\\rrparenthesis', '\u2988')); delimiter.add('\\llangle', new Symbol('\\llangle', '\u2989')); delimiter.add('\\rrangle', new Symbol('\\rrangle', '\u298A')); delimiter.add('\\Lbrbrak', new Symbol('\\Lbrbrak', '\u27EC')); delimiter.add('\\Rbrbrak', new Symbol('\\Rbrbrak', '\u27ED')); delimiter.add('\\lBrace', new Symbol('\\lBrace', '\u2983')); delimiter.add('\\rBrace', new Symbol('\\rBrace', '\u2984')); delimiter.add('\\lParen', new Symbol('\\lParen', '\u2985')); delimiter.add('\\rParen', new Symbol('\\rParen', '\u2986')); delimiter.add('\\lbrackubar', new Symbol('\\lbrackubar', '\u298B')); delimiter.add('\\rbrackubar', new Symbol('\\rbrackubar', '\u298C')); delimiter.add('\\lbrackultick', new Symbol('\\lbrackultick', '\u298D')); delimiter.add('\\rbracklrtick', new Symbol('\\rbracklrtick', '\u298E')); delimiter.add('\\lbracklltick', new Symbol('\\lbracklltick', '\u298F')); delimiter.add('\\rbrackurtick', new Symbol('\\rbrackurtick', '\u2990')); delimiter.add('\\langledot', new Symbol('\\langledot', '\u2991')); delimiter.add('\\rangledot', new Symbol('\\rangledot', '\u2992')); delimiter.add('\\lparenless', new Symbol('\\lparenless', '\u2993')); delimiter.add('\\rparengtr', new Symbol('\\rparengtr', '\u2994')); delimiter.add('\\Lparengtr', new Symbol('\\Lparengtr', '\u2995')); delimiter.add('\\Rparenless', new Symbol('\\Rparenless', '\u2996')); delimiter.add('\\lblkbrbrak', new Symbol('\\lblkbrbrak', '\u2997')); delimiter.add('\\rblkbrbrak', new Symbol('\\rblkbrbrak', '\u2998')); delimiter.add('\\lvzigzag', new Symbol('\\lvzigzag', '\u29D8')); delimiter.add('\\rvzigzag', new Symbol('\\rvzigzag', '\u29D9')); delimiter.add('\\Lvzigzag', new Symbol('\\Lvzigzag', '\u29DA')); delimiter.add('\\Rvzigzag', new Symbol('\\Rvzigzag', '\u29DB')); delimiter.add('\\lcurvyangle', new Symbol('\\lcurvyangle', '\u29FC')); delimiter.add('\\rcurvyangle', new Symbol('\\rcurvyangle', '\u29FD')); delimiter.add('\\Vvert', new Symbol('\\Vvert', '\u2980')); } // ready }, // startup tex: { packages: {'[+]': ['tagformat', 'Lwarp-macros', 'textmacros']}, tags: "ams", tagformat: { number: function (n) { if(MathJax.config.subequations==0) return(MathJax.config.section + n); else return(MathJax.config.section + String.fromCharCode(96+n)); }, }, } } </script> <script id="MathJax-script" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js" ></script> \end{filecontents*} \end{LWRwriteconf} \begin{LWRcreatelwarpmk} \begin{filecontents*}[overwrite]{lwarpmk.lua} #!/usr/bin/env texlua -- Copyright 2016-2022 Brian Dunn printversion = "v0.910" 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, *.bbl, *.log, *_html_inc.*, .gl*, *_html.pdf, *_html.html, *_html.sidetoc lwarpmk cleanall [-p project]: Remove auxiliary files, project.pdf, *.html lwarpmk cleanlimages: Removes all images from the "lateximages" directory. lwarpmk -v: Print the version number. lwarpmk -h: Print this help message. lwarpmk --help: Print this help message. ]] ) -- 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|* -- If lwarp is in use, sets usinglwarp. -- usinglwarp = false ; 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 if ( (i~= nil) and (copen == "<!--") and (cstart == "Using lwarp")) then -- verified the use of \usepackage{lwarp} usinglwarp = true ; else -- not a splitpoint io.write (line .. "\n") ; end end end -- do io.close(sfile) if ( usinglwarp == false ) then print ("lwarpmk: ===") print ("lwarpmk: \\usepackage{lwarp} was not detected.") print ("lwarpmk: The HTML output will not be correct.") print ("lwarpmk: Ensured that \\usepackage{lwarp} is enabled,") print ("lwarpmk: then lwarpmk print and lwarpmk html again.") print ("lwarpmk: ===") end 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") err = os.execute("pdftotext -enc " .. pdftotextenc .. " -nopgbrk -layout " .. sourcename .. "_html.pdf " .. sourcename .. "_html.html") if ( err ~= 0 ) then print ("lwarpmk: ===") print ("lwarpmk: Ensure that the Poppler utilities are installed." ) print ("lwarpmk: See the Lwarp manual: `Installing additional utilities'." ) print ("lwarpmk: ===") os.exit(1) end -- 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 " .. sourcename ..".bbl " .. sourcename .. "_html.bbl " .. " *.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 --margins \"0 1 0 0\" " .. 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@closethirteen}{} \newcommand*{\LWR@closefourteen}{} \newcommand*{\LWR@closefifteen}{} \newcommand*{\LWR@closesixteen}{} \newcommand*{\LWR@closeseventeen}{} \newcommand*{\LWR@closeeighteen}{} \newcommand*{\LWR@closenineteen}{} \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} \newcommand*{\LWR@closedepththirteen}{\LWR@depthnone} \newcommand*{\LWR@closedepthfourteen}{\LWR@depthnone} \newcommand*{\LWR@closedepthfifteen}{\LWR@depthnone} \newcommand*{\LWR@closedepthsixteen}{\LWR@depthnone} \newcommand*{\LWR@closedepthseventeen}{\LWR@depthnone} \newcommand*{\LWR@closedeptheighteen}{\LWR@depthnone} \newcommand*{\LWR@closedepthnineteen}{\LWR@depthnone} \NewDocumentCommand{\LWR@pushclose}{m} {% \global\let\LWR@closenineteen\LWR@closeeighteen% \global\let\LWR@closeeighteen\LWR@closeseventeen% \global\let\LWR@closeseventeen\LWR@closesixteen% \global\let\LWR@closesixteen\LWR@closefifteen% \global\let\LWR@closefifteen\LWR@closefourteen% \global\let\LWR@closefourteen\LWR@closethirteen% \global\let\LWR@closethirteen\LWR@closetwelve% \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@closedepthnineteen\LWR@closedeptheighteen% \global\let\LWR@closedeptheighteen\LWR@closedepthseventeen% \global\let\LWR@closedepthseventeen\LWR@closedepthsixteen% \global\let\LWR@closedepthsixteen\LWR@closedepthfifteen% \global\let\LWR@closedepthfifteen\LWR@closedepthfourteen% \global\let\LWR@closedepthfourteen\LWR@closedepththirteen% \global\let\LWR@closedepththirteen\LWR@closedepthtwelve% \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}% \ifdefstring{\LWR@closedepthnineteen}{\LWR@depthnone}% {}% {% \PackageError{lwarp}% {The document is nested too deeply for Lwarp}% {PLEASE inform the Lwarp maintainer!}% }% } \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@closetwelve\LWR@closethirteen% \global\let\LWR@closethirteen\LWR@closefourteen% \global\let\LWR@closefourteen\LWR@closefifteen% \global\let\LWR@closefifteen\LWR@closesixteen% \global\let\LWR@closesixteen\LWR@closeseventeen% \global\let\LWR@closeseventeen\LWR@closeeighteen% \global\let\LWR@closeeighteen\LWR@closenineteen% \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% \global\let\LWR@closedepthtwelve\LWR@closedepththirteen% \global\let\LWR@closedepththirteen\LWR@closedepthfourteen% \global\let\LWR@closedepthfourteen\LWR@closedepthfifteen% \global\let\LWR@closedepthfifteen\LWR@closedepthsixteen% \global\let\LWR@closedepthsixteen\LWR@closedepthseventeen% \global\let\LWR@closedepthseventeen\LWR@closedeptheighteen% \global\let\LWR@closedeptheighteen\LWR@closedepthnineteen% } \end{warpHTML} \begin{warpHTML} \newbool{LWR@setexparray@doingparhooks} \NewDocumentCommand{\LWR@setexparray}{m m m}{% \let\ifLWR@setexparray@doingparhooks\ifLWR@doingparhooks% \setbool{LWR@doingparhooks}{false}% \let\LWR@setexparray@par\par% \let\par\relax% \xdef\LWR@thisexparrayname{#1#2}% \ifstrempty{#3}% {\csdef{\LWR@thisexparrayname}{}}% {\csedef{\LWR@thisexparrayname}{#3}}% \let\ifLWR@doingparhooks\ifLWR@setexparray@doingparhooks% \let\par\LWR@setexparray@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{warpHTML} \StartDefiningTabulars \protected\gdef&{% \PackageWarning{lwarp}{% An ampersand is being used inside a tabular\MessageBreak }% }% \StopDefiningTabulars \end{warpHTML} \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\& \newrobustcmd*{\LWR@fontfortags}[2]{% \ifmmode% \PackageError{lwarp}% {% An HTML tag was generated inside math.\MessageBreak This should never occur.\MessageBreak Something is broken in Lwarp.\MessageBreak Enter `h' for details% }% {(Using #1{#2}.)}% \else% \ifdef{\romanencoding}% {% \romanencoding{\encodingdefault}% }% {% \ifdef{\latintext} {\latintext} {\fontencoding\encodingdefault}% }% \LWR@print@normalfont% \LWR@origttfamily% \fi% } \newcommand*{\HTMLentity}[1]{% \begingroup% \LWR@hook@processingtags% \LWR@fontfortags{HTMLentity}{\detokenize{#1}}% \protect\LWR@origampersand\LWR@isolate{#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\ \LWR@closedepththirteen\ \LWR@closedepthfourteen\ \LWR@closedepthfifteen\ \LWR@closedepthsixteen\ \LWR@closedepthseventeen\ \LWR@closedeptheighteen\ \LWR@closedepthnineteen\ } \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@traceinfo{LWR@forcenewpage A}% \LWR@stoppars% \LWR@traceinfo{LWR@forcenewpage B}% \LWR@maybe@orignewpage% \LWR@traceinfo{LWR@forcenewpage C}% \LWR@startpars% \fi% \LWR@traceinfo{LWR@forcenewpage done}% } \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=\textquotedbl{}book\textquotedbl} \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=\textquotedbl{}paragraph\textquotedbl} \newcommand*{\LWR@tagparagraphend}{/span} \newcommand*{\LWR@tagsubparagraph}{span class=\textquotedbl{}subparagraph\textquotedbl} \newcommand*{\LWR@tagsubparagraphend}{/span} \newcommand*{\LWR@tagregularparagraph}{p} \newcommand*{\LWR@hook@processingtags}{} \providecommand*{\LWR@FBcancel}{} \AtBeginDocument{% \@ifundefined{NoAutoSpacing}% {}% {% \LetLtxMacro\LWR@FBcancel\NoAutoSpacing% \appto{\LWR@hook@processingtags}{\LWR@FBcancel}% }% \@ifundefined{frenchbsetup}% {}% {% \frenchbsetup{FrenchFootnotes=false}% \renewrobustcmd*{\FBcolonspace}{% \begingroup% \LWR@hook@processingtags% \LWR@origampersand{}nbsp;% \endgroup% }% \renewrobustcmd*{\FBthinspace}{% \begingroup% \LWR@hook@processingtags% \LWR@origampersand\LWR@origpound{}x202f;% \, \endgroup% }% \renewrobustcmd*{\FBguillspace}{% \begingroup% \LWR@hook@processingtags% \LWR@origampersand{}nbsp;% ~, for \og xyz \fg{} \endgroup% }% \DeclareDocumentCommand{\FBmedkern}{}{% \begingroup% \LWR@hook@processingtags% \LWR@origampersand\LWR@origpound{}x202f;% \, \endgroup% }% \DeclareDocumentCommand{\FBthickkern}{}{% \begingroup% \LWR@hook@processingtags% \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@hook@processingtags% \LWR@fontfortags{LWR@htmltagc}{\detokenize{#1}}% \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 /}% \LWR@orignewline% }\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}}% {}% \RenewDocumentEnvironment{LWR@BlockClassWP}{m m D(){} m}% {\LWR@spanwarnformat{multi-paragraph object}}% {}% \renewcommand{\BlockClassSingle}[2]{% {\LWR@spanwarnformat{multi-paragraph object}}% ##2% }% \renewcommand{\LWR@forcenewpage}{}% \renewcommand{\LWR@liststart}{\LetLtxMacro\item\LWR@nestspanitem}% \renewcommand{\LWR@listend}{\leavevmode}% \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}% } \NewDocumentCommand{\LWR@htmlspan}{m +m}{% \LWR@ensuredoingapar% \LWR@htmltagc{#1}% \begin{LWR@nestspan}% #2% \LWR@htmltagc{/#1}% \end{LWR@nestspan}% } \NewDocumentCommand{\LWR@htmlspanclass}{o D(){} m +m}{% \LWR@traceinfo{LWR@htmlspanclass |#1|#2|#3|}% \LWR@ensuredoingapar% \ifblank{#2}% {\LWR@subhtmlelementclass{span}[#1]{#3}}% {\LWR@subhtmlelementclass{span}[#1](#2){#3}}% \begin{LWR@nestspan}% #4% \LWR@htmltagc{/span}% \LWR@traceinfo{LWR@htmlspanclass done}% \end{LWR@nestspan}% } \newcommand*{\LWR@htmltag}[1]{% \LWR@htmltagc{#1}% } \newcommand*{\LWR@htmlopencomment}{% \begingroup% \LWR@hook@processingtags% \LWR@fontfortags{LWR@htmlopencomment}{}% \LWR@print@mbox{\LWR@origtextless{}!-\/-}% \endgroup% } \newcommand*{\LWR@htmlclosecomment}{% \begingroup% \LWR@hook@processingtags% \LWR@fontfortags{LWr@htmlclosecomment}{}% \LWR@print@mbox{-\/-\LWR@origtextgreater}% \endgroup% } \newcommand{\LWR@htmlcomment}[1]{% \ifmmode% \else% \LWR@htmlopencomment{}% {% \LWR@print@normalfont% \LWR@origttfamily% break ligatures #1% }% \LWR@htmlclosecomment{}% \fi% } \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{} D(){} m}{% \LWR@traceinfo{LWR@subhtmlelementclass !#1!#2!#3!#4!}% \ifblank{#2}% {% empty style \LWR@htmltag{% #1% \ifblank{#3}{}{ role=\textquotedbl#3\textquotedbl}% spaces \ifblank{#4}{}{ class=\textquotedbl#4\textquotedbl}% spaces }% }% {% non-empty style \LWR@htmltag{% #1\LWR@indentHTML% \ifblank{#3}{}{role=\textquotedbl#3\textquotedbl\LWR@indentHTML}% \ifblank{#4}{}{class=\textquotedbl#4\textquotedbl\LWR@indentHTML}% style=\textquotedbl#2\textquotedbl\LWR@orignewline% }% }% \LWR@traceinfo{LWR@subhtmlelementclass done}% } \NewDocumentCommand{\LWR@htmlelementclass}{m o D(){} m}{% \LWR@stoppars% \LWR@forceemptyline% \ifblank{#3}% {\LWR@subhtmlelementclass{#1}[#2]{#4}}% {\LWR@subhtmlelementclass{#1}[#2](#3){#4}}% \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 D(){} m}{% \ifblank{#2} {\LWR@htmlelementclass{div}[#1]{#3}}% {\LWR@htmlelementclass{div}[#1](#2){#3}}% } \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{warpall} \NewDocumentEnvironment{BlockClass}{o D(){} m}{}{} \end{warpall} \begin{warpHTML} \NewDocumentEnvironment{LWR@HTML@BlockClass}{o D(){} m}% {\LWR@htmldivclass[#1](#2){#3}}% {\LWR@htmldivclassend{#3}} \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{warpall} \NewDocumentCommand{\InlineClass}{D{(}{)}{} o m +m}{#4}% \end{warpall} \begin{warpHTML} \NewDocumentCommand{\LWR@HTML@InlineClass}{D{(}{)}{} o m +m}{% \LWR@traceinfo{LWR@HTML@InlineClass #3}% \ifbool{FormatWP}{% \LWR@traceinfo{LWR@HTML@InlineClass: FormatWP}% \LWR@htmlspanclass[#1]{#3}{#4}% }{% \LWR@traceinfo{LWR@HTML@InlineClass: not FormatWP}% \LWR@htmlspanclass[#2]{#3}{#4}% }% \LWR@traceinfo{LWR@HTML@InlineClass: done}% } \LWR@formatted{InlineClass} \end{warpHTML} \begin{warpall} \NewDocumentEnvironment{LWR@BlockClassWP}{m m D(){} m}{}{} \end{warpall} \begin{warpHTML} \NewDocumentEnvironment{LWR@HTML@LWR@BlockClassWP}{m m D(){} m}% {% \LWR@stoppars% \ifbool{FormatWP}% {% \addtocounter{LWR@thisautoidWP}{1}% \LWR@htmltag{% div class=\textquotedbl#4\textquotedbl\ % space id=\textquotedbl% \LWR@print@mbox{autoidWP-\arabic{LWR@thisautoidWP}}% \textquotedbl% \ifblank{#3}{}{ role=\textquotedbl#3\textquotedbl}% \ifblank{#1}{}{ style=\textquotedbl#1\textquotedbl}% }% }% FormatWP {% not FormatWP \LWR@htmltag{% div class=\textquotedbl#4\textquotedbl% \ifblank{#3}{}{ role=\textquotedbl#3\textquotedbl}% \ifblank{#2}{}{ style=\textquotedbl#2\textquotedbl}% }% }% not FormatWP \LWR@startpars% } {\LWR@htmldivclassend{#4}} \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@doingparhooks} \boolfalse{LWR@doingparhooks} \newbool{LWR@in@multirow@par} \boolfalse{LWR@in@multirow@par} \newbool{LWR@starting@fancybox} \boolfalse{LWR@starting@fancybox} \newbool{LWR@doingstartpars} \boolfalse{LWR@doingstartpars} \newbool{LWR@doingapar} \global\boolfalse{LWR@doingapar} \newbool{LWR@algocf@dopars} \boolfalse{LWR@algocf@dopars} \def\PN@parnotes@auto{}% \newcommand*{\LWR@openparagraph} {% \ifboolexpr{ bool{LWR@doingparhooks} and bool{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 \ifbool{LWR@doingapar}{}{% \PN@parnotes@auto% \global\booltrue{LWR@doingapar}% \ifbool{LWR@algocf@dopars}{}{% \ifbool{LWR@in@multirow@par}% {}% {\LWR@htmltagc{\LWR@tagregularparagraph}\LWR@orignewline}% }% }% }% end of yes nest par tags }% end of handling pars {}% not handling pars } \let\LWR@ensuredoingapar\LWR@openparagraph \newcommand*{\LWR@closeparagraph@br} {% \ifboolexpr{ test {\ifnumcomp{\value{LWR@spandepth}}{>}{0}} and test {\ifnumcomp{\value{LWR@lateximagedepth}}{=}{0}} and not bool {LWR@starting@fancybox} and not bool {LWR@intabularmetadata} or bool {LWR@in@multirow@par} }% {\unskip\LWR@htmltagc{br /}}% {}% } \newcommand*{\LWR@closeparagraph} {% \ifbool{LWR@doingparhooks}{% \ifbool{LWR@doingapar}% {% handling pars \ifboolexpr{ test {\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}} or test {\ifnumcomp{\value{LWR@spandepth}}{>}{0}} or bool{LWR@in@multirow@par} }% {% 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 }% LWR@doingapar: end of handling pars {% not LWR@doingapar: 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@doingparhooks {}% not LWR@doingparhooks } \AddToHook{para/begin}[lwarp]{\LWR@openparagraph} \AddToHook{para/end}[lwarp]{\LWR@closeparagraph} \end{warpHTML} \begin{warpHTML} \newcommand*{\LWR@startpars}% {% \ifboolexpr{ test {\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}} or test {\ifnumcomp{\value{LWR@spandepth}}{>}{0}} }% {}% nesting {% not nesting \ifboolexpr {bool{LWR@doingparhooks} and bool{LWR@doingstartpars}}% {}% {\par}% \global\booltrue{LWR@doingstartpars}% \global\boolfalse{LWR@doingapar}% }% not nesting } \newcommand*{\LWR@stoppars}% {% \ifboolexpr{ test {\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}} or test {\ifnumcomp{\value{LWR@spandepth}}{>}{0}} }% {}% nesting {% not nesting \ifboolexpr{bool{LWR@doingparhooks} and bool{LWR@doingapar}}% {% \leavevmode\LWR@orignewline% \LWR@htmltagc{/\LWR@tagregularparagraph}% \LWR@orignewline% \global\boolfalse{LWR@doingapar}% \global\boolfalse{LWR@minipagethispar}% }% {}% \global\setbool{LWR@doingstartpars}{false}% \global\boolfalse{LWR@doingapar}% }% not nesting } \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} \AtBeginDocument{ \robustify{\footnote} \robustify{\footnotemark} } \newbox\LWR@footnotebox \newbool{LWR@spewingnotes}% For the footnote package. \long\def\@makefntext#1{\textsuperscript{\@thefnmark}~{#1}} \def\@makefnmark{% \textsuperscript{\@thefnmark}% } \long\def\LWR@@footnotetext#1#2{% \LWR@traceinfo{LWR@footnotetext}% \LWR@newautopagelabel{page}% \LWR@ensuredoingapar% \begingroup% \let\LWR@newautopagelabel\LWR@null@newautopagelabel% \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}}% \ifbool{LWR@spewingnotes}{}{% \LWR@htmltagc{\LWR@tagregularparagraph}\LWR@orignewline% }% \@makefntext{#1}% \ifbool{LWR@spewingnotes}{}{% \LWR@origtilde\LWR@orignewline% \LWR@htmltagc{/\LWR@tagregularparagraph}% \LWR@orignewline% }% \color@endgroup% }% vbox \endgroup% }% \long\def\LWR@footnotetext#1{\LWR@@footnotetext{#1}{LWR@footnotebox}}% \LetLtxMacro\@footnotetext\LWR@footnotetext \newbox\LWR@mpfootnotes \long\def\@mpfootnotetext#1{% \LWR@traceinfo{@mpfootnotetext}% \LWR@ensuredoingapar% \global\setbox\LWR@mpfootnotes\vbox{% \unvbox\LWR@mpfootnotes% \reset@font\footnotesize% \hsize\columnwidth% \@parboxrestore% \protected@edef\@currentlabel% {\csname p@mpfootnote\endcsname\@thefnmark}% \color@begingroup% \LWR@htmltagc{\LWR@tagregularparagraph}\LWR@orignewline% \@makefntext{% \ignorespaces#1% }% \leavevmode\LWR@orignewline% \LWR@htmltagc{/\LWR@tagregularparagraph}% \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}(note){footnotes}% \LWR@newautopagelabel{page}% \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}(note){footnotes}% \null \unvbox\LWR@mpfootnotes \setbox\LWR@mpfootnotes=\vbox{} \end{BlockClass} \fi } \newcommand*{\LWR@nullifyfootnotes}{% \renewcommand{\footnote}[2][]{}% \renewcommand{\footnotemark}[1][]{}% } \end{warpHTML} \begin{warpHTML} \renewcommand{\marginpar}[2][]{% \ifbool{FormatWP}% {% \begin{LWR@BlockClassWP}% {width:2in; float:right; margin:10pt}{}(note){marginblock}% #2 \end{LWR@BlockClassWP}% }% {% \LWR@htmlspanclass(note){marginpar}{#2}% }% } \newcommand{\marginparBlock}[2][]{% \LWR@stoppars% \ifbool{FormatWP}% {% \begin{LWR@BlockClassWP}% {width:2in; float:right; margin:10pt}{}% (note){marginblock}% #2 \end{LWR@BlockClassWP} }% {% \begin{BlockClass}[width:2in; float:right; margin:10pt]% (note){marginparblock}% #2 \end{BlockClass} }% \LWR@startpars% } \renewcommand*{\reversemarginpar}{} \renewcommand*{\normalmarginpar}{} \end{warpHTML} \begin{warpprint} \LetLtxMacro\marginparBlock\marginpar \end{warpprint} \newcounter{LWR@currentautosecpage} \setcounter{LWR@currentautosecpage}{1} \newcounter{LWR@currentautosecfloatpage} \setcounter{LWR@currentautosecfloatpage}{1} \newcounter{LWR@previousautopagelabel} \setcounter{LWR@previousautopagelabel}{-1} \newcommand*{\LWR@newautopagelabel}[1]{% \ifnumequal{\value{LWR@previousautopagelabel}}{\value{page}}% {}% {% \label{\BaseJobname-autopage-\csuse{the#1}}% \ifnumequal{\value{#1}}{\value{page}}% {}% {\label{\BaseJobname-autopage-\csuse{thepage}}}% \setcounter{LWR@previousautopagelabel}{\value{page}}% }% } \newcommand*{\LWR@null@newautopagelabel}[1]{} \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}% } \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 \newbool{LWR@MathJax@silentquotes} \boolfalse{LWR@MathJax@silentquotes} \catcode`\#=12 \catcode`\&=12 \newcommand{\LWR@subHTMLsanitize}{% \edef\tmpb{\detokenize\expandafter{\LWR@strresult}}% \LWR@replacestrings{&}{&}% \LWR@replacestrings{<}{<}% \LWR@replacestrings{>}{>}% \ifbool{LWR@MathJax@silentquotes} {% \expandafter\LWR@replacestrings\expandafter{\LWRbackslash"}{}% \LWR@replacestrings{"}{}% }% {\LWR@replacestrings{"}{"}}% \LWR@replacestrings{'}{'}% \LWR@replacestrings{`}{`}% \LWR@replacestrings{##}{#}% \edef\LWR@strresult{\detokenize\expandafter{\tmpb}}% } \catcode`\#=6 \catcode`\&=4 \newrobustcmd{\LWR@HTMLsanitizedetokenized}[1]{% \LWR@traceinfo{LWR@HTMLsanitizedetokenized !#1!}% \begingroup% \LWR@hook@processingtags% \edef\LWR@strresult{#1}% \LWR@subHTMLsanitize% \LWR@strresult% \endgroup% \LWR@traceinfo{LWR@HTMLsanitize done}% } \edef\LWR@beginspaceleftbrace{begin \LWRleftbrace} \edef\LWR@beginspaceleftbrace{\detokenize\expandafter{\LWR@beginspaceleftbrace}} \edef\LWR@beginleftbrace{begin\LWRleftbrace} \edef\LWR@beginleftbrace{\detokenize\expandafter{\LWR@beginleftbrace}} \edef\LWR@endspacerightbrace{end \LWRrightbrace} \edef\LWR@endspacerightbrace{\detokenize\expandafter{\LWR@endspacerightbrace}} \edef\LWR@endrightbrace{end\LWRrightbrace} \edef\LWR@endrightbrace{\detokenize\expandafter{\LWR@endrightbrace}} \newrobustcmd{\LWR@HTMLsanitizeexpanded}[1]{% \begingroup% \LWR@hook@processingtags% \edef\LWR@strresult{#1}% \protect\StrSubstitute{\LWR@strresult}% {\LWR@beginspaceleftbrace}{\LWR@beginleftbrace}[\LWR@strresult]% \protect\StrSubstitute{\LWR@strresult}% {\LWR@endspacerightbrace}{\LWR@endrightbrace}[\LWR@strresult]% \LWR@subHTMLsanitize% \LWR@strresult% \endgroup% } \newcommand*{\LWR@customizedMathJax}{} \newbool{LWR@warnedcustomizemathjax} \boolfalse{LWR@warnedcustomizemathjax} \newcommand*{\LWR@subcustomizedmathjax}[1]{% \begingroup% \LWR@hook@processingtags% \edef\LWR@strresult{\detokenize{#1}}% \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}{350}{% \AtEndDocument{% \PackageNoteNoLine{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}}}} \CustomizeMathJax{\let\LWRorighspace\hspace} \CustomizeMathJax{\renewcommand{\hspace}{\ifstar\LWRorighspace\LWRorighspace}} \CustomizeMathJax{\newcommand{\mathnormal}[1]{{#1}}} \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{\arabic}[1]{}} \CustomizeMathJax{\newcommand{\number}[1]{}} \CustomizeMathJax{\newcommand{\noalign}[1]{\text{#1}\notag \\}} \CustomizeMathJax{\newcommand{\cline}[1]{}} \CustomizeMathJax{\newcommand{\directlua}[1]{\text{(directlua)}}} \CustomizeMathJax{\newcommand{\luatexdirectlua}[1]{\text{(directlua)}}} \CustomizeMathJax{\newcommand{\protect}{}} \CustomizeMathJax{\def\LWRabsorbnumber#1 {}} \CustomizeMathJax{\def\LWRabsorbquotenumber"#1 {}} \CustomizeMathJax{\newcommand{\LWRabsorboption}[1][]{}} \CustomizeMathJax{\newcommand{\LWRabsorbtwooptions}[1][]{\LWRabsorboption}} \CustomizeMathJax{\def\mathchar{\ifnextchar"\LWRabsorbquotenumber\LWRabsorbnumber}} \CustomizeMathJax{\def\mathcode#1={\mathchar}} \CustomizeMathJax{\let\delcode\mathcode} \CustomizeMathJax{\let\delimiter\mathchar} \CustomizeMathJax{\def\oe{\unicode{x0153}}} \CustomizeMathJax{\def\OE{\unicode{x0152}}} \CustomizeMathJax{\def\ae{\unicode{x00E6}}} \CustomizeMathJax{\def\AE{\unicode{x00C6}}} \CustomizeMathJax{\def\aa{\unicode{x00E5}}} \CustomizeMathJax{\def\AA{\unicode{x00C5}}} \CustomizeMathJax{\def\o{\unicode{x00F8}}} \CustomizeMathJax{\def\O{\unicode{x00D8}}} \CustomizeMathJax{\def\l{\unicode{x0142}}} \CustomizeMathJax{\def\L{\unicode{x0141}}} \CustomizeMathJax{\def\ss{\unicode{x00DF}}} \CustomizeMathJax{\def\SS{\unicode{x1E9E}}} \CustomizeMathJax{\def\dag{\unicode{x2020}}} \CustomizeMathJax{\def\ddag{\unicode{x2021}}} \CustomizeMathJax{\def\P{\unicode{x00B6}}} \CustomizeMathJax{\def\copyright{\unicode{x00A9}}} \CustomizeMathJax{\def\pounds{\unicode{x00A3}}} \end{warpMathJax} \begin{warpHTML}% due to warpMathJax \newcommand{\LWR@customizeMathJax}{% \ifbool{mathjax}{ \LWR@stoppars \LWR@htmlcomment{MathJax customizations:} \begin{BlockClass}{hidden} \LWR@stoppars { \LWR@print@ttfamily \LWR@customizedMathJax } \LWR@startpars \end{BlockClass} \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{main}{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@currentautosecfloatpage}{\value{page}}% \LWR@newautopagelabel{LWR@currentautosecfloatpage}% \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{main}{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~}% } \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}}% }% \begingroup% \LWR@nullfonts% \LWR@nullifyfootnotes% \LWR@htmlcomment{% \LWR@orignewline% \IfValueTF{#2}% {...... #4 #2 ......}% {...... #4 #3 ......}% \LWR@orignewline% }% \LWR@orignewline% \ifbool{HTMLDebugComments}% {% \IfBooleanTF{#1}% starred {% \IfNoValueTF{#2}% short TOC {\LWR@htmlcomment{Opening #4* ``#3''}}% {\LWR@htmlcomment{Opening #4* ``#2''}}% }% {% \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@currentautosecpage}{\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@currentautosecfloatpage}{\value{page}}% \LWR@newautopagelabel{LWR@currentautosecpage}\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\booltrue{LWR@doingparhooks} \global\boolfalse{LWR@doingapar} \global\boolfalse{LWR@doingstartpars} \let\color@endgroup\endgroup \mainmatter \LWR@origpagenumbering{arabic} \LWR@traceinfo{LWR@lwarpStart: Starting new file.} \LWR@filestart% \begingroup% \LWR@nullfonts% \LWR@htmlblockcomment{% |Using lwarp|% \LWR@htmlsectionfilename{\LWR@thisfilename}|% } \endgroup% \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{main}{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 \ifbool{mathjax}{ \typeout{---} \typeout{Package lwarp:} \typeout{Processing MathJax customizations for the first HTML page.} \typeout{Later HTML pages will take the same amount of time.} \typeout{If this takes too long, see the Lwarp manual regarding customizing MathJax.} }{} \LWR@customizeMathJax \ifbool{mathjax}{ \typeout{Done.} \typeout{---} }{} \setcounter{LWR@currentautosecfloatpage}{\value{page}}% \LWR@newautopagelabel{LWR@currentautosecpage}% \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} \LWR@printpendingfootnotes \label{\BaseJobname-autofile-last}\LWR@origtilde\LWR@orignewline \LWR@htmlelementclassend{section}{textbody} \LWR@htmlelementclassend{main}{bodycontainer} \LWR@htmlelementclassend{div}{bodyandsidetoc} \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 } \ifdef{\AddToHook}{% newer kernel \AddToHook{enddocument/info}{% \if@filesw \ifx \@multiplelabels \relax \if@tempswa \else \immediate\write\LWR@lateximagesfile{% |end|end|end|% }% \fi \fi\fi } }% newer kernel {% older kernel \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% } } } }% older kernel \ifdef{\RemoveFromHook}{ \AfterEndPreamble{ \IfHookEmptyTF{shipout/background}{}{ \PackageInfo{lwarp}{Removing background hook} \RemoveFromHook{shipout/background}[*] } \IfHookEmptyTF{shipout/foreground}{}{ \PackageInfo{lwarp}{Removing foreground hook} \RemoveFromHook{shipout/foreground}[*] } } }{} \end{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{ \IfPackageLoadedTF{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} \IfClassLoadedTF{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} \newcommand*{\LWR@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 } \LetLtxMacro\maketitle\LWR@maketitle \providecommand*{\@maketitle}{} \renewrobustcmd{\@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}{% \IfPackageLoadedTF{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} \LetLtxMacro\LWR@orig@verb@egroup\verb@egroup \def\LWR@verb@egroup@endspan{% \LWR@orig@verb@egroup% \LWR@htmltag{/span}% \endgroup% } \xpretocmd{\verb} {% \begingroup% \LWR@htmltag{span class=\textquotedbl{}texttt\textquotedbl}% \let\verb@egroup\LWR@verb@egroup@endspan% } {} {\LWR@patcherror{LaTeX}{verb}} \newcommand*{\LWR@atbeginverbatim}[2][] {% \LWR@stoppars% \setlength{\parskip}{0ex}% \setlength{\topsep}{0pt}% \setlength{\partopsep}{0pt}% \hbadness=10000\relax% \ifbool{LWR@verbtags}{% \LWR@htmltag{pre class=\textquotedbl#2\textquotedbl% \ifthenelse{\equal{#1}{}}{}{ style=\textquotedbl#1\textquotedbl}% }% \par% }{}% \begingroup% \LWR@print@normalfont% \LWR@origttfamily% \LWR@print@scriptsize% \LWR@restoreoriglists% \LWR@hook@processingtags% \let\hspace\LWR@print@hspace% } \newcommand*{\LWR@afterendverbatim}{% \endgroup% \par% \ifbool{LWR@verbtags}{% \noindent\LWR@htmltag{/pre}\par% pre }{}% \LWR@startpars% } \newcommand{\LWR@HTML@verbatim@input}[2]{% \ifbool{LWR@verbtags}{\LWR@forcenewpage}{}% \LWR@atbeginverbatim{Verbatim}% \LWR@print@verbatim@input{#1}{#2}% \LWR@afterendverbatim% } \LWR@formatted{verbatim@input} \AfterEndPreamble{ \LWR@traceinfo{Patching verbatim.} \AtBeginEnvironment{verbatim}{% \ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}% {}% {% \LWR@forcenewpage% \LWR@atbeginverbatim{verbatim}% }% } \AfterEndEnvironment{verbatim}{% \ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}% {}% {% \LWR@afterendverbatim% }% } \AtBeginEnvironment{verbatim*}{% \ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}% {}% {% \LWR@forcenewpage% \LWR@atbeginverbatim{verbatim}% }% } \AfterEndEnvironment{verbatim*}{% \ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}% {}% {% \LWR@afterendverbatim% }% } } \newenvironment*{LWR@HTML@tabbing} {% \LWR@forcenewpage% \LWR@atbeginverbatim{tabbing}% \let\enskip\LWR@print@enskip% \let\quad\LWR@print@quad% \let\qquad\LWR@print@qquad% \let~\LWR@origtilde% \let\,\LWR@origcomma% \let\thinspace\LWR@print@thinspace% \let\negthinspace\LWR@print@negthinspace% \LWR@print@tabbing% } {% \endLWR@print@tabbing% \LWR@afterendverbatim% } \LWR@formattedenv{tabbing} \end{warpHTML} \begin{warpHTML} \renewcommand{\@begintheorem}[2]{% \LWR@forcenewpage \LWR@printpendingfootnotes% lwarp \BlockClass{theoremcontents} \trivlist \item[\InlineClass{theoremlabel}{#1\ #2\ }]\itshape } \ifundef{\@opargbegintheorem}{}{ \renewcommand{\@opargbegintheorem}[3]{% \LWR@forcenewpage \BlockClass{theoremcontents} \trivlist \item[\InlineClass{theoremlabel}{#1\ #2\ (#3)\ }]\itshape } } \renewcommand*{\@endtheorem}{% \endtrivlist \LWR@printpendingfootnotes% lwarp \endBlockClass% theoremcontents } \end{warpHTML} \begin{warpHTML} \newcommand*{\LWR@printcloselist}{\LWR@printcloseitemize} \newcommand*{\LWR@printopenlist}{% ul style=\textquotedbl\LWR@print@mbox{list-style-type:none}\textquotedbl{}% } \AtBeginDocument{ \def\@mklab#1{% #1} \let\makelabel\@mklab } \def\@donoparitem{% \@noparitemfalse } \def\LWR@HTML@item[#1]{% \LWR@traceinfo{@item}% \if@noparitem \@donoparitem \else \ifhmode \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@orignewline% \LWR@startpars% \LWR@ensuredoingapar% \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@orignewline% \LWR@startpars% \LWR@ensuredoingapar% \LWR@origitem% } \newcommand*{\LWR@itemizestart}{% \renewcommand*{\LWR@printcloselist}{\LWR@printcloseitemize}% \renewcommand*{\LWR@printopenlist}{% ul style=\textquotedbl\LWR@print@mbox{list-style-type:none}\textquotedbl{}% }% \LetLtxMacro\item\LWR@itemizeitem% \LWR@nulllistfills% } \newcommand*{\LWR@enumeratestart}{% \renewcommand*{\LWR@printcloselist}{\LWR@printcloseitemize}% \renewcommand*{\LWR@printopenlist}{% ul style=\textquotedbl\LWR@print@mbox{list-style-type:none}\textquotedbl{}% }% \LetLtxMacro\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}% } \RenewDocumentCommand{\hspace}{s m}{}% \LWR@origitem[#1]% \endgroup% \LWR@orignewline% \LWR@htmltag{dd}% \LWR@startpars% } \newcommand*{\LWR@descriptionstart}{% \renewcommand*{\LWR@printcloselist}{\LWR@printclosedescription} \renewcommand*{\LWR@printopenlist}{dl} \LetLtxMacro\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% \expandafter\ifx\LWR@cs\par% \let\next=\LWR@fnslthree% \else% \let\next=\nexttoken% \fi% \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@tabularfinalrow} \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@forceemptyline% \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}[1]{% \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}% : % space \LWR@getexparray{LWR@colatspec}{\arabic{LWR@tabletotalLaTeXcols}}}% }% \let\LWR@colparameter\relax% \booltrue{LWR@validtablecol}% } \newcommand*{\LWR@parsebangcolumn}[1]{% \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@checkbeforeaddclass}[2]{% \ifcsstrequal{LWR@tempone}{#1}% {% \LWR@setexparray{LWR@coladdclass}% {\arabic{LWR@tabletotalLaTeXcolsnext}}% { #2}% space is intentional }{}% } \newcommand*{\LWR@checkmathcolpar}{% \IfSubStr{\detokenize\expandafter{\LWR@colparameter}}{\LWRdollar}% {% \PackageError{lwarp}% {% Lwarp does not support `$' in column specifiers.\MessageBreak Specify `$' math for each cell in the column.\MessageBreak Enter 'h' for more info% }% {% For example, replace `>{$}c<{$}' with `c', and then\MessageBreak use `$cell contents$' for each cell in the column.% }% }{}% } \newcommand*{\LWR@parsebeforecolumn}[1]{% \defaddtocounter{LWR@tablecolspecindex}{1}% \expandarg% \StrChar{\LWR@origcolspec}% {\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]% \fullexpandarg% \LWR@checkmathcolpar% \LWR@setexparray{LWR@colbeforespec}% {\arabic{LWR@tabletotalLaTeXcolsnext}}% {\expandafter\@firstofone\LWR@colparameter}% \edef\LWR@tempone{\expandafter\@firstofone\LWR@colparameter}% \LWR@checkbeforeaddclass{LWR@detect@centeringarraybackslash}{tdcenter} \LWR@checkbeforeaddclass{LWR@detect@raggedrightarraybackslash}{tdleft} \LWR@checkbeforeaddclass{LWR@detect@raggedleftarraybackslash}{tdright} \LWR@checkbeforeaddclass{LWR@detect@itshape}{tditshape} \LWR@checkbeforeaddclass{LWR@detect@bfseries}{tdbfseries} \LWR@checkbeforeaddclass{LWR@detect@bfit}{tdbfit} \let\LWR@colparameter\relax% \booltrue{LWR@validtablecol}% } \newcommand*{\LWR@parseaftercolumn}[1]{% \defaddtocounter{LWR@tablecolspecindex}{1}% \expandarg% \StrChar{\LWR@origcolspec}% {\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]% \fullexpandarg% \LWR@checkmathcolpar% \LWR@setexparray{LWR@colafterspec}% {\arabic{LWR@tabletotalLaTeXcols}}% {\expandafter\@firstofone\LWR@colparameter}% \let\LWR@colparameter\relax% \booltrue{LWR@validtablecol}% } \newcommand*{\LWR@parsebarcolumn}[1]{% \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}[1]{% \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}[1]{% \LWR@parsecoloncolumn{}% } \newcommand*{\LWR@HTML@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}}{}% \LWR@setexparray{LWR@coladdclass}{\arabic{LWR@tabletotalLaTeXcolsnext}}{}% \booltrue{LWR@validtablecol}% } \newcommand*{\LWR@print@LWR@parsenormalcolumn}[1]{} \LWR@formatted{LWR@parsenormalcolumn} \newcommand*{\LWR@parsestarcolumn}[1]{} \newcommand*{\LWR@expandpreamble}[1]{% \edef\@tempa{\@temptokena={#1}}% \@tempa% \@tempswatrue% \@whilesw\if@tempswa\fi{% \@tempswafalse\the\NC@list% }% } \newcommand*{\LWR@modifycolumntype}[5]{% \LWR@traceinfo{LWR@modifycolumntype !#1!#2!#3!#4!#5!}% \LWR@traceinfo{LWR@modifycolumntype #1}% \edef\@tempa{% \noexpand\csdef{LWR@columntype@#1}{% \noexpand\@nameuse{#3}{#1}% \noexpand\defaddtocounter{LWR@tablecolspecindex}{#2}% }% \noexpand\csdef{LWR@columntype@mctype@#1}{% \noexpand\@nameuse{#4}{#1}% }% \noexpand\csdef{LWR@columntype@mcdata@#1}{% \noexpand\@nameuse{#5}{#2}% }% }% \@tempa% \LWR@traceinfo{LWR@modifycolumntype done}% } \LWR@modifycolumntype{l}{0}{LWR@parsenormalcolumn} {LWR@printmccoltype@normal}{LWR@printmccoldata@normal} \LWR@modifycolumntype{c}{0}{LWR@parsenormalcolumn} {LWR@printmccoltype@normal}{LWR@printmccoldata@normal} \LWR@modifycolumntype{r}{0}{LWR@parsenormalcolumn} {LWR@printmccoltype@normal}{LWR@printmccoldata@normal} \LWR@modifycolumntype{@}{0}{LWR@parseatcolumn} {LWR@printmccoltype@ignore}{LWR@printmccoldata@other} \LWR@modifycolumntype{!}{0}{LWR@parsebangcolumn} {LWR@printmccoltype@ignore}{LWR@printmccoldata@other} \LWR@modifycolumntype{>}{0}{LWR@parsebeforecolumn} {LWR@printmccoltype@ignore}{LWR@printmccoldata@other} \LWR@modifycolumntype{<}{0}{LWR@parseaftercolumn} {LWR@printmccoltype@ignore}{LWR@printmccoldata@other} \LWR@modifycolumntype{|}{0}{LWR@parsebarcolumn} {LWR@printmccoltype@vertbar}{LWR@printmccoldata@skip} \LWR@modifycolumntype{:}{0}{LWR@parsecoloncolumn} {LWR@printmccoltype@colon}{LWR@printmccoldata@skip} \LWR@modifycolumntype{;}{1}{LWR@parsesemicoloncolumn} {LWR@printmccoltype@semicolon}{LWR@printmccoldata@skip} \LWR@modifycolumntype{p}{1}{LWR@parsenormalcolumn} {LWR@printmccoltype@normal}{LWR@printmccoldata@paragraph} \LWR@modifycolumntype{m}{1}{LWR@parsenormalcolumn} {LWR@printmccoltype@normal}{LWR@printmccoldata@paragraph} \LWR@modifycolumntype{b}{1}{LWR@parsenormalcolumn} {LWR@printmccoltype@normal}{LWR@printmccoldata@paragraph} \LWR@modifycolumntype{*}{2}{LWR@parsestarcolumn} {LWR@printmccoltype@ignore}{LWR@printmccoldata@skip} \NewDocumentCommand{\HTMLnewcolumntype}{m O{0} o m}{% \IfValueTF{#3} { \expandafter\newcommand\expandafter*% \csname LWR@HTML@NC@rewrite@#1\endcsname[#2][#3]{\NC@find #4}% \LWR@formatted{NC@rewrite@#1}% } { \expandafter\newcommand\expandafter*% \csname LWR@HTML@NC@rewrite@#1\endcsname[#2]{\NC@find #4}% \LWR@formatted{NC@rewrite@#1}% } } \end{warpHTML} \begin{warpprint} \NewDocumentCommand{\HTMLnewcolumntype}{m O{0} o m}{} \end{warpprint} \begin{warpHTML} \newcommand*{\LWR@parsetablecols}[1]{% \LWR@traceinfo{LWR@parsetablecols}% \renewcommand*{\LWR@origcolspec}{#1}% \expandarg% \StrSubstitute{\LWR@origcolspec}{ }{}[\LWR@origcolspec]% \LWR@expandpreamble{\LWR@origcolspec}% \edef\LWR@origcolspec{\the\@temptokena}% \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}{}% \LWR@setexparray{LWR@coladdclass}{1}{}% \LWR@setexparray{LWR@coladdclass}{2}{}% \LWR@setexparray{LWR@coladdclass}{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 \ifcsdef{LWR@columntype@\LWR@strresult}% {\csuse{LWR@columntype@\LWR@strresult}}% {}% \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 \ifbool{LWR@tabularfinalrow}% {% \renewcommand*{\LWR@tempone}% { aria-hidden=\textquotedbl{}true\textquotedbl}% }% {% \renewcommand*{\LWR@tempone}{}% }% \ifboolexpr{% test{\ifnumcomp{\value{LWR@hlines}}{>}{0}} or% test{\ifnumcomp{\value{LWR@hdashedlines}}{>}{0}}% }% {% \LWR@htmltag{% tr % class=\textquotedbl{}hline\textquotedbl% \LWR@tempone% aria-hidden }% \LWR@orignewline% \booltrue{LWR@startedrow}% \booltrue{LWR@intabularmetadata}% }% {% not doing hline \ifbool{LWR@doingtbrule}% {% \ifdefvoid{\LWR@ruleHTMLcolor}{% \LWR@htmltag{% tr % class=\textquotedbl{}tbrule\textquotedbl% \LWR@tempone% aria-hidden }% }{% \LWR@htmltag{% tr class=\textquotedbl{}tbrule\textquotedbl\ % space style=\textquotedbl{}border-top: 1px solid % space \LWR@origpound\LWR@ruleHTMLcolor \textquotedbl{}% \LWR@tempone% aria-hidden }% }% \LWR@orignewline% \booltrue{LWR@startedrow}% \booltrue{LWR@intabularmetadata}% }% {% \ifbool{LWR@tabularfinalrow}% {}% {% \LWR@htmltag{tr}\LWR@orignewline% \booltrue{LWR@startedrow}% \booltrue{LWR@intabularmetadata}% }% }% }% 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=\textquotedbl{}td#1% \LWR@subaddcmidruletrim{}{}% \LWR@printbartag{#2}% \textquotedbl{}% \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=\textquotedbl{}td% \LWR@strresult% \LWR@addcmidruletrim% \LWR@addleftmostbartag% \LWR@printbartag{\arabic{LWR@tableLaTeXcolindex}}% \LWR@getexparray{LWR@coladdclass}% {\arabic{LWR@tableLaTeXcolindex}}% \textquotedbl{}% \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} } }% {% 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=\textquotedbl}% \booltrue{LWR@tdhavecellstyle}% } \newcommand*{\LWR@tdendstyles}{% \ifbool{LWR@tdhavecellstyle}% {% \textquotedbl% \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}}{}% }{}% } \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=\textquotedbl{}cellcolor\textquotedbl\ % space style=\textquotedbl{}% background:\LWR@origpound{}{}#1 % \textquotedbl\ % }% space \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@normal}[1]{% #1% \boolfalse{LWR@mcolvertbaronleft}% } \newcommand*{\LWR@printmccoltype@ignore}[1]{}% \newcommand*{\LWR@printmccoltype@vertbar}[1]{% \ifbool{LWR@mcolvertbaronleft}% {\defaddtocounter{LWR@mcolvertbarsl}{1}}% left edge {\defaddtocounter{LWR@mcolvertbarsr}{1}}% not left edge } \newcommand*{\LWR@printmccoltype@colon}[1]{% \ifbool{LWR@mcolvertbaronleft}% {\defaddtocounter{LWR@mcolvertbarsldash}{1}}% left edge {\defaddtocounter{LWR@mcolvertbarsrdash}{1}}% not left edge } \let\LWR@printmccoltype@semicolon\LWR@printmccoltype@colon \newcommand*{\LWR@printmccoltype}[1]{% \LWR@traceinfo{lwr@printmccoltype -#1-}% \StrChar{#1}{\arabic{LWR@tablemulticolspos}}[\LWR@strresult]% \edef\LWR@strresult{\detokenize\expandafter{\LWR@strresult}}% \ifcsdef{LWR@columntype@mctype@\LWR@strresult}% {\csuse{LWR@columntype@mctype@\LWR@strresult}}% {\boolfalse{LWR@mcolvertbaronleft}}% \LWR@traceinfo{lwr@printmccoltype done}% } \newcommand*{\LWR@printmccoldata@other}[2]{% \defaddtocounter{LWR@tablemulticolspos}{1}% \StrChar{#2}{\arabic{LWR@tablemulticolspos}}[\LWR@strresult]% \LWR@strresult% \booltrue{LWR@validtablecol}% } \newcommand*{\LWR@printmccoldata@skip}[2]{% \defaddtocounter{LWR@tablemulticolspos}{#1}% \booltrue{LWR@validtablecol}% } \newcommand*{\LWR@printmccoldata@normal}[2]{% \LWR@multicoltext% \defaddtocounter{LWR@tablemulticolspos}{#1}% } \newcommand*{\LWR@printmccoldata@paragraph}[2]{% \LWR@startpars% \LWR@multicoltext% \defaddtocounter{LWR@tablemulticolspos}{#1}% \LWR@stoppars% } \newcommand*{\LWR@printmccoldata}[1]{% \LWR@traceinfo{lwr@printmccoldata -#1}% \boolfalse{LWR@validtablecol}% \StrChar{#1}{\arabic{LWR@tablemulticolspos}}[\LWR@strresult]% \edef\LWR@printmccoldatatoken{\LWR@strresult}% \ifcsdef{LWR@columntype@mcdata@\LWR@printmccoldatatoken}% {\csuse{LWR@columntype@mcdata@\LWR@printmccoldatatoken}{#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}}% }% }% {% \csuse{#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}% }% \LWR@expandpreamble{#5}% \edef\LWR@origmccolspec{\the\@temptokena}% \defcounter{LWR@lastmulticolumn}{\value{LWR@tableLaTeXcolindex}}% \defaddtocounter{LWR@lastmulticolumn}{#3}% \defaddtocounter{LWR@lastmulticolumn}{-1}% \LWR@maybenewtablerow% \LWR@htmltag{% td colspan=\textquotedbl#4\textquotedbl\ % \IfValueT{#2}{ % rows? rowspan=\textquotedbl#2\textquotedbl\ % }% class=\textquotedbl{}td% \defcounter{LWR@mcolvertbarsl}{0}% \defcounter{LWR@mcolvertbarsr}{0}% \defcounter{LWR@mcolvertbarsldash}{0}% \defcounter{LWR@mcolvertbarsrdash}{0}% \booltrue{LWR@mcolvertbaronleft}% \LWR@parsemulticolumnalignment{\LWR@origmccolspec}{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}{}% \textquotedbl{}% \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{\LWR@origmccolspec}% \LWR@tdendstyles% }% end of the opening table data tag \boolfalse{LWR@intabularmetadata}% \LWR@parsemulticolumnalignment{\LWR@origmccolspec}{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 \IfPackageLoadedTF{multirow}{% v2.0 or newer \IfPackageAtLeastTF{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}% \boolfalse{LWR@tabularfinalrow}% \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@tabularfinalrow}% \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: done, about to do LWR@mynextaction}% \LWR@mynextaction% } \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{ \IfPackageLoadedTF{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@maybenewtablerow% \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@tabularfinalrow}% \boolfalse{LWR@usedmultirow}% \boolfalse{LWR@foundmrowcell}% \renewcommand*{\LWR@multicoltext}{}% \booltrue{LWR@intabularmetadata}% \ifbool{LWR@in@multirow@par}% {\leavevmode\LWR@orignewline}% {\LWR@forcenewpage}% \boolfalse{LWR@in@multirow@par}% \LWR@htmlblocktag{table}% \LWR@parsetablecols{#3}% \LWR@stoppars% \LWR@htmltag{tr style="display:none"}% \LWR@htmltag{th}.\LWR@htmltag{/th}% \LWR@htmltag{/tr}% \LWR@orignewline% \LWR@forceemptyline% \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}}% }% )% }% {% \booltrue{LWR@tabularfinalrow}% \LWR@tabularfinishrow% \boolfalse{LWR@tabularfinalrow}% }% {% \LWR@closetabledatacell% }% \ifbool{LWR@startedrow}% {\LWR@htmltag{/tr}\LWR@orignewline}% {}% \@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}% {\relax}% {% \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]{% \begingroup% \LWR@nullifyfootnotes% \expandafter\LWR@setref\csname r@#1@lwarp\endcsname\LWR@firstoffive{#1}% \endgroup% } \newcommand*{\LWR@currentautosecpageref}[1]{% \expandafter\LWR@setref\csname r@#1@lwarp\endcsname\LWR@secondoffive{#1}% } \newcommand*{\LWR@htmlfileref}[1]{% \expandafter\LWR@setref\csname r@#1@lwarp\endcsname\LWR@thirdoffive{#1}% } \newcommand*{\LWR@lateximagedepthref}[1]{% \expandafter\LWR@setref\csname r@#1@lwarp\endcsname\LWR@fourthoffive{#1}% } \newcommand*{\LWR@lateximagenumberref}[1]{% \expandafter\LWR@setref\csname r@#1@lwarp\endcsname\LWR@fifthoffive{#1}% } \newcommand*{\LWR@write@lwarplabel}[1]{% \LWR@traceinfo{LWR@write@lwarplabel !#1!}% \LWR@setlatestname{\@currentlabelname}% \@bsphack% \protected@write\@auxout{}% {% \string\newlabel{#1@lwarp}{% {\@currentlabelname}% {\theLWR@currentautosecpage}% {% \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=\textquotedbl\LWR@sanitized\textquotedbl}}% \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 } \newcommand*{\LWR@new@label}[1]{% \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=\textquotedbl\LWR@ThisAltText\textquotedbl\ % space \gdef\LWR@ThisAltText{}% }% } \newcommand*{\LWR@startref}[1] {% \LWR@sanitize{#1}% \LWR@traceinfo{LWR@startref A: !#1!}% \LWR@htmltag{a href=\textquotedbl% \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: ??}% ??% }% {% \ifnumgreater{\LWR@lateximagedepthref{#1}}{0}% {% lateximage-\BaseJobname-\LWR@lateximagenumberref{#1}% }% {% \LWR@traceinfo{LWR@startref D3}% \LWR@print@mbox{\LWR@sanitized}% }% }% \LWR@traceinfo{LWR@startref E}% \textquotedbl% \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}% } \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} \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} \NewDocumentCommand{\LWR@refwithsection}{s m}{% \LWR@traceinfo{LWR@refwithsection !#2!}% \IfBooleanTF{#1}% {\LWR@print@ref{\BaseJobname-autopage-\LWR@currentautosecpageref{#2}}}% {% \LWR@startref{#2}% \edef\@tempa{\LWR@currentautosecpageref{#2}}% \ifdefstring{\@tempa}{??}% {??}% {% \edef\@tempa{% \csname r@\BaseJobname-autopage-\LWR@currentautosecpageref{#2}% \endcsname% }% \edef\@tempa{\expandafter\@firstoftwo\@tempa}% \expandafter\ifblank\expandafter{\@tempa}% {*} {% \LWR@print@ref{% \BaseJobname-autopage-\LWR@currentautosecpageref{#2}% }% }% }% \LWR@htmltag{/a}% }% } \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@previousautopagelabel}% } \newcommand*{\LWR@linkcatcodes}{% \catcode`\#=12% \catcode`\%=12% \catcode`\&=12% \catcode`\~=12% \catcode`\_=12% \LWR@hook@processingtags% } \newcommand*{\LWR@linkmediacatcodes}{% \catcode`\#=12% \catcode`\%=12% \catcode`\~=12% \catcode`\_=12% \LWR@hook@processingtags% } \NewDocumentCommand{\LWR@subhyperref}{m}{% \LWR@traceinfo{LWR@subhyperref !#1!}% \LWR@sanitize{#1}% \LWR@htmltag{% a href=\textquotedbl\LWR@sanitized\textquotedbl\ % space \LWR@addlinktitle % space target=\textquotedbl\_{}blank\textquotedbl\ % space }% } \newcommand{\LWR@subhyperreftext}[1]{% #1% \LWR@htmltag{/a}% \LWR@ensuredoingapar% } \NewDocumentCommand{\LWR@subhyperrefclass}{m +m m}{% \LWR@htmltag{% a % space href=\textquotedbl\begingroup\@sanitize#1\endgroup\textquotedbl\ % space class=\textquotedbl#3\textquotedbl\ % 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}[6]{% \ifblank{#6}% {\renewcommand*{\LWR@tempone}{}}% {\renewcommand*{\LWR@tempone}{role="#6"\LWR@indentHTML}}% \ifblank{#1}% {% \LWR@htmltag{img \LWR@indentHTML src=\textquotedbl#3.#4\textquotedbl \LWR@indentHTML alt=\textquotedbl#3\textquotedbl \LWR@indentHTML \LWR@tempone style=\textquotedbl#5\textquotedbl \LWR@indentHTML class=\textquotedbl#2\textquotedbl \LWR@orignewline }% }% {% \LWR@htmltag{img \LWR@indentHTML src=\textquotedbl#3.#4\textquotedbl \LWR@indentHTML alt=\textquotedbl#1\textquotedbl \LWR@indentHTML \LWR@tempone style=\textquotedbl#5\textquotedbl \LWR@indentHTML class=\textquotedbl#2\textquotedbl \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=\textquotedbl% \LWR@print@mbox{autoid-\arabic{LWR@thisautoid}}% \textquotedbl\ % space class=\textquotedbl#1 \@nameuse{LWR@floatstyle@#1}\textquotedbl% }% \ifbool{FormatWP}{% \LWR@orignewline% \LWR@BlockClassWP{}{}{wp#1}% }{}% \renewcommand*{\@captype}{#1}% \LWR@startpars% \ifboolexpr{bool{FormatWP} and bool{WPMarkFloats}}{% === begin #1 === }{}% } \AtBeginDocument{ \IfPackageLoadedTF{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=\textquotedbl% \LWR@print@mbox{autoid-\arabic{LWR@thisautoid}}% \textquotedbl\ }% space \LWR@htmltag{/a }% }% {% \LWR@stoppars% \LWR@htmltag{a id=\textquotedbl% \LWR@print@mbox{autoid-\arabic{LWR@thisautoid}}% \textquotedbl\ }% space \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{ \IfPackageLoadedTF{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}% } \newenvironment*{LWR@figcaption} {% \ifbool{FormatWP}{% \BlockClass[font-style:italic]{figurecaption}% }{% \BlockClass{figurecaption}% }% \hbadness=10000\relax% }% {\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{% \IfPackageLoadedTF{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@currentautosecfloatpage}}% {\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}% \IfFileExists{\jobname.#1}{% \LWR@traceinfo{LWR@myshorttoc: loading}% \begingroup% \makeatletter% \LetLtxMacro\ref\LWR@print@ref% \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{ \LetLtxMacro\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 \begingroup% \LetLtxMacro\ref\LWR@print@ref% \LWR@disablepinyin% \LWR@origtableofcontents% \endgroup% } }% \tableofcontents }% AtBeginDocument \let\LWR@origlistoffigures\listoffigures \renewcommand*{\listoffigures}{ \ifboolexpr{bool{FormatWP} and bool{WPMarkLOFT}}{ === list of figures === } { \LWR@printpendingfootnotes \begingroup% \LetLtxMacro\ref\LWR@print@ref% \LWR@disablepinyin% \LWR@origlistoffigures% \endgroup% } } \let\LWR@origlistoftables\listoftables \renewcommand*{\listoftables}{ \ifboolexpr{bool{FormatWP} and bool{WPMarkLOFT}}{ === list of tables === } { \LWR@printpendingfootnotes \begingroup% \LetLtxMacro\ref\LWR@print@ref% \LWR@disablepinyin% \LWR@origlistoftables% \endgroup% } } \NewDocumentCommand{\LWR@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}% } \IfClassLoadedTF{memoir}{}{ \newcounter{lofdepth} \setcounter{lofdepth}{1} } \IfClassLoadedTF{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}% \LetLtxMacro\item\LWR@indexitem% \LetLtxMacro\subitem\LWR@indexsubitem% \LetLtxMacro\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}% \protected@write\@indexfile{}% {\string\indexentry{\LWR@tempone}{\arabic{LWR@autoindex}}}% \label{LWRindex-\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}% \setbool{LWR@doingparhooks}{false}% \def\color@endgroup{\endgraf\endgroup}% \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\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% \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% \let\@mpfootnotetext\LWR@orig@mpfootnotetext% \LWR@hook@processingtags% \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 D(){} m +m}{{##4}}% \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}% { \IfPackageLoadedTF{graphicx}{ \newcommand*{\LWR@addbaselinemarker}{% \LWR@origincludegraphics{\LWR@baselinename}% } }{ \IfPackageLoadedTF{graphics}{ \newcommand*{\LWR@addbaselinemarker}{% \LWR@origincludegraphics{\LWR@baselinename}% } }{ \newcommand*{\LWR@addbaselinemarker}{% \global\booltrue{LWR@warnbaselinemarker}% } \AtEndDocument{ \ifbool{LWR@warnbaselinemarker}{ \PackageNoteNoLine{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 d()}{}{}% 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@traceinfo{LWR@subsingledollartsvg}% \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{subsingledollarsvg: dynamic}% \begin{lateximage}% no hashing [\MathImageAltText]% alt tag []% no add'l hashing [\LWR@singledollarstyle \LWR@singledollardepthstyle]% CSS (math)% ARIA }{% not dynamic math \LWR@traceinfo{subsingledollarsvg: static}% \IfValueTF{#1}{% #1 True \LWR@findcurrenttextcolor% sets \LWR@tempcolor \ifbool{LWR@xfakebold}% {\def\LWR@tempone{Y}}% {\def\LWR@tempone{N}}% \LWR@traceinfo{subsingledollarsvg about to lateximage}% \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 (math)% ARIA \LWR@traceinfo{subsingledollar did lateximage}% }{% #1 False \begin{lateximage}% no hashing [#2]% alt []% no add'l hashing [\LWR@singledollarstyle \LWR@singledollardepthstyle]% CSS (math)% ARIA }% }% 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 !#2!}% \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(% {% \ifmmode\else\LWR@print@ttfamily\fi% \LWR@HTMLsanitizedetokenized{\detokenize{#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} ) }% {% intentional blank line: \IfSubStr{\detokenize\expandafter{#1}}{\detokenize{note}}{% \LWR@hidelatexequation{math}{#1}% \InlineClass{hidden}{\LWR@syncnotenumbers}% \textbackslash[% {% \LWR@print@ttfamily% \LWR@HTMLsanitizedetokenized{\detokenize{#1}}% }% \textbackslash] \InlineClass{hidden}{\LWR@syncnotenames}% }{% \textbackslash[% {% \LWR@print@ttfamily% \LWR@HTMLsanitizedetokenized{\detokenize{#1}}% }% \textbackslash] }% }% mathjax {% not mathjax \begin{BlockClass}{displaymath}% \LWR@newautoidanchor% \booltrue{LWR@indisplaymathimage}% \begin{lateximage}% [% \textbackslash{[} % extra space \LWR@HTMLsanitizedetokenized{\detokenize{#1}} % extra space \textbackslash{]}% ]% *% do not add open/closing braces (math)% ARIA \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${% \LWR@traceinfo{LWR@singledollar}% \ifbool{mathjax}{% \LWR@subsingledollar*% {% alt tag \textbackslash( % \LWR@HTMLsanitizedetokenized{\detokenize{#1}} % extra space \textbackslash)% }% {singledollar}% add'l hashing {#1}% contents }{% not mathjax \LWR@subsingledollar*% {% alt tag \textbackslash( % \LWR@HTMLsanitizedetokenized{\detokenize{#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% active $ \AtBeginDocument{ \LetLtxMacro\LWR@openbracketnormal\[ \LetLtxMacro\LWR@closebracketnormal\] } \LetLtxMacro\LWR@origensuredmath\@ensuredmath \renewcommand{\@ensuredmath}[1]{% \ifbool{mathjax}{% \LWR@subsingledollar*{\AltTextOpen\MathImageAltText\AltTextClose}% {% \protect\LWR@HTMLsanitizedetokenized{\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@HTMLsanitizedetokenized{% \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\displaymath\LWR@displaymathnormal% \LetLtxMacro\enddisplaymath\endLWR@displaymathnormal% \newenvironment{LWR@displaymathother} {% \begin{BlockClass}{displaymath}% \LWR@newautoidanchor% \booltrue{LWR@indisplaymathimage}% \begin{lateximage}[\MathImageAltText](math)% [alt](ARIA) \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](math)% [alt](ARIA) \LWR@orig@equation% } {% \LWR@orig@endequation% \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} \hbadness=10000\relax% #2 \@nameuse{LWR@orig@end#1} \endgroup \LWR@htmlclosecomment \boolfalse{LWR@insidemathcomment} \LWR@startpars } \NewDocumentCommand{\LWR@addmathjax}{m +m}{% \LWR@origtilde\LWR@orignewline {% \LWR@print@ttfamily% \textbackslash{}begin\{#1\} \ifboolexpr{ test {\ifstrequal{#1}{alignat}} or test {\ifstrequal{#1}{alignat*}} or test {\ifstrequal{#1}{alignat+}} }% {\{\arabic{LWR@maxfields@}\}}% {}% \LWR@orignewline% \LWR@HTMLsanitizeexpanded{\detokenize\expandafter{#2}}% \LWR@orignewline% \textbackslash{}end\{#1\} }% \LWR@orignewline } \AtBeginDocument{ \let\LWR@orig@equation\equation \let\LWR@orig@endequation\endequation \csletcs{LWR@orig@equation*}{equation*} \csletcs{LWR@orig@endequation*}{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@HTMLsanitizeexpanded{\detokenize\expandafter{#1}} % extra space \textbackslash{end\{#2\}}% ]*(math)% alt tag, ARIA \LWR@applyxfakebold% \@nameuse{LWR@orig@#2}% #1% contents collected by \collect@body \@nameuse{LWR@orig@end#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{}#1name\{#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}{} \newcommand*{\theMathJaxsubequations}{0} \newcommand*{\theMathJaxsection}{} \newcommand*{\theMathJaxequation}{\arabic{equation}} \end{warpprint} \begin{warpHTML} \newbool{LWR@amsmultline} \boolfalse{LWR@amsmultline} \newcommand*{\LWR@beginhideamsmath}{ \LWR@stoppars \LWR@origtilde\LWR@orignewline \LWR@htmlopencomment \begingroup \LWR@restoreorigformatting \hbadness=10000\relax% \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\textendash\LWR@equationtag)% \LWR@addmathjax{eqnarray}{\BODY}]*(math)% \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}]*(math)% \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@HTMLsanitizeexpanded{\detokenize\expandafter{\the\@envbody}}% \textbackslash\{end\}\{#1\}% } \newcommand*{\LWR@amsmathbodynumbered}[1] {% \ifnumcomp{\value{LWR@startingequation}}{=}{\value{equation}}% {(\LWR@equationtag)}% {(\LWR@startingequationtag\textendash\LWR@equationtag)} % extra space \LWR@amsmathbody{#1} % extra space } \newcommand{\LWR@lateximage@oneimageb}[4]{% \LWR@subinlineimage{#1}{lateximage}% {% \LWR@print@mbox{% \LWR@ImagesDirectory\OSPathSymbol% #2% }% }{svg}{#3}{#4}% } \newcommand{\LWR@lateximage@oneimage}[5]{% \LWR@traceinfo{LWR@lateximage@oneimage !#1!#2!#3!#4!#5!}% \ifdefvoid{\LWR@ThisAltText}{% \IfBooleanTF{#4}{% \LWR@lateximage@oneimageb{#1}{#2}{#3}{#5}% }{% \LWR@lateximage@oneimageb% {\AltTextOpen#1\AltTextClose}% {#2}{#3}{#5}% }% }{% \LWR@lateximage@oneimageb% {\AltTextOpen\LWR@ThisAltText\AltTextClose}% {#2}{#3}{#5}% }% } \catcode`\$=\active% \NewDocumentEnvironment{lateximage}{s O{\ImageAltText} s O{} O{} D(){}}% {% \LWR@traceinfo{lateximage !#1!#2!#3!#4!#5!#6!}% \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% \hbadness=10000\relax% \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=\textquotedbl{}% lateximage-\BaseJobname-\arabic{LWR@lateximagenumber}% \textquotedbl\LWR@indentHTML class=\textquotedbl{}lateximagesource\textquotedbl\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}% \setcounter{LWR@mpfootnote@store}{\value{mpfootnote}} \ifdimless{\linewidth}{6in}{% \LWR@print@minipage{\linewidth}% }{% \LWR@print@minipage{6in}% }% \ifnumgreater{\value{LWR@minipage@depth}}{0}% {\setcounter{mpfootnote}{\value{LWR@mpfootnote@store}}}% {}% \@nameuse{LWR@print@\LateximageFontSizeName}% \LWR@traceinfo{lateximage: about to temporarily restore formatting}% \LWR@restoreorigformatting% \ifnumgreater{\value{LWR@minipage@depth}}{0}% {}% {% \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@orig@equation% \let\endequation\LWR@orig@endequation% \csletcs{equation*}{LWR@orig@equation*}% \csletcs{endequation*}{LWR@orig@endequation*}% }% 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}}% \LWR@traceinfo{about to LWR@lateximage@oneimage !#2!}% \IfBooleanTF{#1}% starred {% hash \LWR@lateximage@oneimage{#2}{\LWR@hashedname}{#5}{#3}{#6}% }% hash {% no hash \LWR@lateximage@oneimage{#2}{\LWR@ImagesName\theLWR@externalfilecnt}{#5}{#3}{#6}% }% 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 d()} {}{} \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]{% \IfPackageLoadedTF{#1}% {% \AtBeginDocument{ \LWR@origRequirePackage{lwarp-#1}% } }% {}% } \LWR@PreloadedPackage{inputtrc} \LWR@PreloadedPackage{textcomp} \LWR@PreloadedPackage{xunicode} \LWR@PreloadedPackage{graphics} \LWR@PreloadedPackage{graphicx} \LWR@PreloadedPackage{tagpdf-base} \LWR@PreloadedPackage{scalefnt} \LWR@PreloadedPackage{fontaxes} \LWR@PreloadedPackage{cmbright} \LWR@PreloadedPackage{fourier} \LWR@PreloadedPackage{kpfonts} \LWR@PreloadedPackage{kpfonts-otf} \LWR@PreloadedPackage{libertinust1math} \LWR@PreloadedPackage{pxfonts} \LWR@PreloadedPackage{txfonts} \LWR@PreloadedPackage{txgreeks} \LWR@PreloadedPackage{newpxmath} \LWR@PreloadedPackage{newtxmath} \LWR@PreloadedPackage{newtxsf} \LWR@PreloadedPackage{mathalpha} \LWR@PreloadedPackage{unicode-math} \LWR@PreloadedPackage{realscripts} \LWR@PreloadedPackage{nfssext-cfr} \LWR@PreloadedPackage{ulem} \LWR@PreloadedPackage{xetexko} \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{210F}}}} \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}}}% } \end{warpHTML} \begin{warpprint} \NewDocumentCommand{\HTMLDeclareSIUnit}{o +m m}{} \end{warpprint} \begin{warpprint} \define@key{Gin}{class}{} \AtBeginDocument{ \IfPackageLoadedTF{overpic}{ \newcommand*{\overpicfontsize}{12} \newcommand*{\overpicfontskip}{14} }{} } \end{warpprint} \begin{warpall} \AtBeginDocument{ \IfPackageLoadedTF{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{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}% } \LWR@formatted{colorbox} \LWR@formatted{colorboxBlock} \LWR@formatted{fcolorbox} \LWR@formatted{fcolorboxBlock} \LWR@formattedenv{fcolorminipage} \LWR@traceinfo{xcolor patches done} }{}% xcolor loaded }% AtBeginDocument \end{warpall} \begin{warpprint} \AtBeginDocument{ \IfPackageLoadedTF{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} \newcounter{LWR@minipage@depth} \setcounter{LWR@minipage@depth}{0} \newcounter{LWR@mpfootnote@store} \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=\textquotedbl% \LWR@print@mbox{autoidWP-\arabic{LWR@thisautoidWP}}% \textquotedbl\ % space class=\textquotedbl{}wpminipage\textquotedbl% }% }{}% \LWR@traceinfo{minipage: creating div class}% \LWR@htmltag{div class=\textquotedbl{}minipage\textquotedbl\ style=\textquotedbl% \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} ; }% \textquotedbl% }% \ifnumequal{\value{LWR@virtualpagedepth}}{1}{% \addtolength{\LWR@minipagewidth}{-3em}% undo frame padding }{}% \setlength{\linewidth}{\LWR@minipagewidth}% \LWR@print@raggedright% \LWR@newautopagelabel{page}% \def\@mpfn{mpfootnote}% \def\thempfn{\thempfootnote}\c@mpfootnote\z@% \let\@footnotetext\@mpfootnotetext% \addtocounter{LWR@minipage@depth}{1}% \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}% }{}% \addtocounter{LWR@minipage@depth}{-1}% \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% \LWR@traceinfo{LWR@fboxstyle B}% 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}% \LWR@traceinfo{HTML fbox B}% \InlineClass[% \LWR@print@mbox{display:inline-block} ; % \LWR@fboxstyle% ]{fbox}{#1}% \LWR@traceinfo{HTML fbox: done}% } \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{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% } \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} \IfPackageLoadedTF{nfssext-cfr}{ \DeclareRobustCommand{\LWR@HTML@texteb}[1]{% {% \LWR@HTML@ebweight% \InlineClass{texteb}{#1}% }% } \LWR@formatted{texteb} }{% if not loaded \providerobustcmd{\texteb}[1]{} } \IfPackageLoadedTF{nfssext-cfr}{ \DeclareRobustCommand{\LWR@HTML@textlg}[1]{% {% \LWR@HTML@lgweight% \InlineClass{textlg}{#1}% }% } \LWR@formatted{textlg} }{% if not loaded \providerobustcmd{\textlg}[1]{} } \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]{% \LWR@HTML@mdseries% \LWR@HTML@rmfamily% \LWR@HTML@upshape% \LWR@HTML@ulcshape% \InlineClass(% font-weight: normal; font-family: serif; font-style: normal; font-variant: normal; font-variant-numeric: normal ; ){textnormal}{#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}% \ifboolexpr{% test {\ifdefstring{\LWR@f@family}{rm}} and test {\ifdefstring{\LWR@f@series}{md}} and test {\ifdefstring{\LWR@f@shape}{up}} and test {\ifdefstring{\LWR@f@shapecaps}{ulc}} }% {\InlineClass{textnormal}{#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} \IfPackageLoadedTF{nfssext-cfr}{ \newrobustcmd*{\LWR@HTML@ebweight}{% \LWR@print@ebweight% \renewcommand*{\LWR@f@series}{eb}% } \LWR@formatted{ebweight} }{} \IfPackageLoadedTF{nfssext-cfr}{ \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@tempcolorthree}{} \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, not using LWR@formatted \newrobustcmd*{\LWR@HTML@thinspace}{\HTMLunicode{202f}}% HTML thin non-breakable space \LWR@formatted{thinspace} \newrobustcmd*{\LWR@HTML@negthinspace}{\HTMLunicode{202f}} % HTML thin non-breakable space \LWR@formatted{negthinspace} \renewrobustcmd*{~}{\HTMLentity{nbsp}}% cannot use \LWR@formatted \newrobustcmd*{\LWR@HTML@textellipsis}{\HTMLunicode{2026}} \LWR@formatted{textellipsis} \newrobustcmd*{\LWR@HTML@vdots}{\HTMLunicode{22EE}} \LWR@formatted{vdots} } \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}{}% } \newrobustcmd*{\LWR@HTML@quad}{% \LWR@minipagestoppars% \HTMLunicode{2003}% \LWR@minipagestartpars% } \LWR@formatted{quad} \newrobustcmd*{\LWR@HTML@qquad}{\quad\quad} \LWR@formatted{qquad} \newrobustcmd*{\LWR@HTML@enskip}{% \LWR@minipagestoppars% \HTMLunicode{2002}% \LWR@minipagestartpars% } \LWR@formatted{enskip} \newlength{\LWR@tempwidth} \newlength{\LWR@tempheight} \newlength{\LWR@tempraise} \NewDocumentCommand{\LWR@HTML@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=\textquotedbl{}width:\LWR@printlength{\LWR@tempwidth}; % extra space display:inline-block\textquotedbl% }% \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 }% \LWR@formatted{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=\textquotedbl% \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;\textquotedbl\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{ \IfPackageLoadedTF{graphics}{ \IfPackageLoadedTF{metalogo}{}{ \renewrobustcmd*{\Xe} {X\hspace{-.1667em}\raisebox{-.5ex}{\reflectbox{E}}} } }{} } \AtEndDocument{ \ifbool{LWR@warnXe}{ \PackageNoteNoLine{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} \DeclareHookRule{enddocument}{lwarp}{after}{legacy} \end{warpHTML} \begin{warpHTML} \RequirePackage{array} \edef\LWR@detect@centeringarraybackslash{\centering\arraybackslash} \edef\LWR@detect@raggedrightarraybackslash{\raggedright\arraybackslash} \edef\LWR@detect@raggedleftarraybackslash{\raggedleft\arraybackslash} \def\LWR@detect@itshape{\itshape} \def\LWR@detect@bfseries{\bfseries} \def\LWR@detect@bfit{\bfseries\itshape} \end{warpHTML} \begin{warpHTML} \AtBeginDocument{ \IfPackageLoadedTF{everyshi}{ \RequirePackage{lwarp-everyshi} }{} } \end{warpHTML} \begin{warpHTML} \RequirePackage{lwarp-textcomp} \end{warpHTML} \begin{warpHTML} \IfPackageLoadedTF{amsthm}{ \RequirePackage{lwarp-amsthm} }{} \IfPackageLoadedTF{amsmath}{ \RequirePackage{lwarp-amsmath} }{} \IfPackageLoadedTF{centernot}{ \RequirePackage{lwarp-centernot} }{} \end{warpHTML} \begin{warpHTML} \IfClassLoadedTF{scrbook}{\RequirePackage{lwarp-patch-komascript}}{} \IfClassLoadedTF{scrartcl}{\RequirePackage{lwarp-patch-komascript}}{} \IfClassLoadedTF{scrreprt}{\RequirePackage{lwarp-patch-komascript}}{} \end{warpHTML} \begin{warpprint} \IfClassLoadedTF{memoir}{\LWR@origRequirePackage{xcolor}}{} \end{warpprint} \begin{warpHTML} \IfClassLoadedTF{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} } } \IfClassLoadedTF{ujarticle}{\LWR@patchujtclasses}{} \IfClassLoadedTF{ujbook}{\LWR@patchujtclasses}{} \IfClassLoadedTF{ujreport}{\LWR@patchujtclasses}{} \IfClassLoadedTF{utarticle}{\LWR@patchujtclasses}{} \IfClassLoadedTF{utbook}{\LWR@patchujtclasses}{} \IfClassLoadedTF{utreport}{\LWR@patchujtclasses}{} \IfClassLoadedTF{ltjarticle}{\LWR@patchujtclasses}{} \IfClassLoadedTF{ltjbook}{\LWR@patchujtclasses}{} \IfClassLoadedTF{ltjreport}{\LWR@patchujtclasses}{} \IfClassLoadedTF{ltjsarticle}{\LWR@patchujtclasses}{} \IfClassLoadedTF{ltjsbook}{\LWR@patchujtclasses}{} \IfClassLoadedTF{ltjsreport}{\LWR@patchujtclasses}{} \IfClassLoadedTF{ltjskiyou}{\LWR@patchujtclasses}{} \IfClassLoadedTF{ltjspf}{\LWR@patchujtclasses}{} \IfClassLoadedTF{ltjtarticle}{\LWR@patchujtclasses}{} \IfClassLoadedTF{ltjtbook}{\LWR@patchujtclasses}{} \IfClassLoadedTF{ltjtreport}{\LWR@patchujtclasses}{} \end{warpHTML} \begin{warpHTML} \AtBeginDocument{ \IfPackageLoadedTF{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{ \IfPackageLoadedTF{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{ \IfPackageLoadedTF{polyglossia}{ \PackageNoteNoLine{lwarp} {% Polyglossia has been loaded. Lwarp also uses cleveref.\MessageBreak See the cleveref documentation regarding\MessageBreak polyglossia support. Some languages are not supported.\MessageBreak --- \MessageBreak If the error\MessageBreak \space\space Undefined control sequence ... \protect\__hook begindocument\MessageBreak occurs here, use the polyglossia macro:\MessageBreak \space\space\protect\setmainlanguage\protect{...\protect} } }{ \IfPackageLoadedTF{babel}{ \PackageNoteNoLine{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]{% \IfPackageLoadedTF{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% } }% }{}% } \newcommand*{\LWR@nomathjaxwarn}[2]{% \IfPackageLoadedTF{lwarp-#1}{% \ifblank{#2}{% \PackageWarningNoLine{lwarp} {% Lwarp does not provide MathJax support for #1.\MessageBreak Use SVG math by removing the Lwarp mathjax option% } }{% \PackageWarningNoLine{lwarp} {% Lwarp does not provide MathJax support for #1.\MessageBreak #2% } }% }{}% } \newcommand*{\LWR@forceSVGmessage}[1]{% SVG math output may be enabled for select math\MessageBreak expressions to preserve #1 visual\MessageBreak features for those particular expressions.\MessageBreak Before the chosen inline math, use \protect\inlinemathother\MessageBreak to begin using SVG math, and \protect\inlinemathnormal\MessageBreak afterward to resume using MathJax math.\MessageBreak Before display math, use \protect\displaymathother\MessageBreak to begin using SVG math, and use \protect\displaymathnormal\MessageBreak after to resume using MathJax for the following math.\MessageBreak Or, use SVG math for all expressions by removing\MessageBreak the mathjax option for the lwarp package% } \AtBeginDocument{ \ifbool{mathjax}{ \LWR@nomathjaxwarn{aligned-overset}{} \LWR@nomathjaxwarn{amscdx}{\LWR@forceSVGmessage{amscdx}} \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@nomathjaxwarn{autoaligne}{} \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{bigdelim} {Delimiters appear only of the first line} \LWR@nomathjaxwarn{boldtensors}{} \LWR@mathjaxwarn{booktabs} {\protect\cmidrule\space is not displayed} \LWR@mathjaxwarn{breqn} {Each environment becomes an SVG image} \LWR@mathjaxwarn{colortbl} {Colors are ignored in MathJax.\MessageBreak (Text mode tabular does support colortbl.)\MessageBreak \LWR@forceSVGmessage{colortbl}} \LWR@mathjaxwarn{delarray}{\LWR@forceSVGmessage{delarray}} \LWR@nomathjaxwarn{gauss}{\LWR@forceSVGmessage{gauss}} \LWR@mathjaxwarn{hhline} {A simple \protect\hline\space is used} \LWR@mathjaxwarn{isomath} {Some of the symbol font macros such as \protect\mathsfbfit\MessageBreak do not use a sans font because MathJax does not yet\MessageBreak have sans Greek. Tensors may look like vectors% } \LWR@nomathjaxwarn{jkmath}{\LWR@forceSVGmessage{jkmath}} \LWR@mathjaxwarn{libertinust1math} {Some of the symbol font macros such as \protect\mathsfbfit\MessageBreak do not use a sans font because MathJax does not yet\MessageBreak have sans Greek. Tensors may look like vectors% } \LWR@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} {Double quotes are removed, even inside \protect\text} \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{nicematrix} {Keys/values are ignored in MathJax.\MessageBreak \protect\Cdots, etc. do not span multiple cells.\MessageBreak AutoNiceMatrix, etc. are not supported for MathJax.\MessageBreak \protect\CodeBefore, \protect\Body, and \protect\CodeAfter\MessageBreak \space\space also are not supported for MathJax.\MessageBreak \LWR@forceSVGmessage{nicematrix}% } \LWR@nomathjaxwarn{pb-diagram}{\LWR@forceSVGmessage{pb-diagram}} \LWR@mathjaxwarn{siunitx} {Place \protect\sisetup\space before \protect\begin{document}.\MessageBreak Many optional arguments are ignored} \LWR@nomathjaxwarn{tensind}{} \LWR@mathjaxwarn{unicode-math} {Do not use embedded Unicode characters.\MessageBreak (Not all characters are encoded correctly.)\MessageBreak Some symbol fonts are not supported by MathJax,\MessageBreak and are only approximated.\MessageBreak Greek macros such as \protect\alpha\space respond to the math-style\MessageBreak option. Latin symbols does not, per MathJax\MessageBreak limitations, unless placed inside \protect\symbit\space or similar} \LWR@nomathjaxwarn{unitsdef}{} \LWR@mathjaxwarn{witharrows} {Arrows can only point to the next line.\MessageBreak Text is only placed on a single line} \LWR@nomathjaxwarn{xy} {In text, xy works as-is. SVG images will be generated.\MessageBreak \LWR@forceSVGmessage{xy}} }{} } \endinput %% %% End of file `lwarp.sty'.