You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
13912 lines
372 KiB
13912 lines
372 KiB
%%
|
|
%% This is file `lwarp.sty',
|
|
%% generated with the docstrip utility.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% lwarp.dtx (with options: `package')
|
|
%% This is a generated file.
|
|
%% Copyright 2016-2020 Brian Dunn
|
|
%%
|
|
%% This work may be distributed and/or modified under the
|
|
%% conditions of the LaTeX Project Public License, either version 1.3
|
|
%% of this license or (at your option) any later version.
|
|
%% The latest version of this license is in
|
|
%% http://www.latex-project.org/lppl.txt
|
|
%% and version 1.3 or later is part of all distributions of LaTeX
|
|
%% version 2005/12/01 or later.
|
|
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
|
|
\ProvidesPackage{lwarp}
|
|
[2020/07/19 v0.88 Allows LaTeX to directly produce HTML5 output.]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\RequirePackage{iftex}[2019/11/07]
|
|
\RequirePackage{ifpdf}
|
|
\RequirePackage{ifptex}
|
|
|
|
\newif\ifxetexorluatex
|
|
|
|
\ifXeTeX
|
|
\xetexorluatextrue
|
|
\else
|
|
\ifLuaTeX
|
|
\xetexorluatextrue
|
|
\else
|
|
\xetexorluatexfalse
|
|
\fi
|
|
\fi
|
|
\RequirePackage{etoolbox}[2011/01/03]% v2.6 for \BeforeBeginEnvironment, etc.
|
|
\RequirePackage{xpatch}
|
|
|
|
\RequirePackage{ifplatform}% sense op-system platform
|
|
\RequirePackage{letltxmacro}
|
|
\newcommand*{\LWR@loadafter}[1]{%
|
|
\@ifpackageloaded{#1}
|
|
{
|
|
\PackageError{lwarp}
|
|
{%
|
|
Package #1,\MessageBreak
|
|
or one which uses #1,\MessageBreak
|
|
must be loaded after Lwarp.\MessageBreak
|
|
Enter 'H' for possible solutions%
|
|
}
|
|
{Move ``\protect\usepackage{#1}'' after
|
|
``\protect\usepackage{lwarp}''.\MessageBreak
|
|
Package #1 may also be loaded by something else,\MessageBreak
|
|
which must also be moved after Lwarp.}
|
|
}
|
|
{}
|
|
}
|
|
|
|
\@ifclassloaded{memoir}
|
|
{\newcommand*{\LWR@notmemoirloadafter}[1]{}}
|
|
{\LetLtxMacro\LWR@notmemoirloadafter\LWR@loadafter}
|
|
|
|
\LetLtxMacro\LWR@notltjloadafter\LWR@loadafter
|
|
|
|
\@ifclassloaded{ltjarticle}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
|
|
\@ifclassloaded{ltjbook}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
|
|
\@ifclassloaded{ltjreport}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
|
|
\@ifclassloaded{ltjsarticle}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
|
|
\@ifclassloaded{ltjsbook}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
|
|
\@ifclassloaded{ltjsreport}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
|
|
\@ifclassloaded{ltjspf}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
|
|
\@ifclassloaded{ltjskiyou}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
|
|
\@ifclassloaded{ltjtarticle}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
|
|
\@ifclassloaded{ltjtbook}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
|
|
\@ifclassloaded{ltjtreport}{\renewcommand*{\LWR@notltjloadafter}[1]{}}{}
|
|
|
|
\newcommand*{\LWR@loadbefore}[1]{%
|
|
\@ifpackageloaded{#1}
|
|
{}
|
|
{
|
|
\PackageError{lwarp}
|
|
{%
|
|
Package #1 must be loaded before lwarp.\MessageBreak
|
|
Enter 'H' for possible solutions%
|
|
}
|
|
{Move ``\protect\usepackage{#1}'' before ``\protect\usepackage{lwarp}''.}
|
|
}
|
|
}
|
|
|
|
\newcommand*{\LWR@checkloadbefore}[2]{%
|
|
\edef\LWR@tempone{#1}%
|
|
\ifdefstring{\LWR@tempone}{#2}{%
|
|
\LWR@loadbefore{#1}%
|
|
}{}%
|
|
}
|
|
|
|
\newcommand*{\LWR@loadnever}[2]{%
|
|
\PackageError{lwarp}
|
|
{%
|
|
Package #1 is not supported\MessageBreak
|
|
by lwarp's HTML conversion.\MessageBreak
|
|
Package(s)\MessageBreak
|
|
\space\space#2\MessageBreak
|
|
may be useful instead%
|
|
}
|
|
{%
|
|
Package #1 might conflict with lwarp in some way,\MessageBreak
|
|
or is superceded by another package.\MessageBreak
|
|
For a possible alternative, see package(s) #2.
|
|
}
|
|
}
|
|
\newcommand*{\LWR@checkloadnever}[3]{%
|
|
\edef\LWR@tempone{#1}%
|
|
\ifdefstring{\LWR@tempone}{#2}{%
|
|
\LWR@loadnever{#2}{#3}%
|
|
}{}%
|
|
}
|
|
\newcommand*{\LWR@earlyloadnever}[2]{%
|
|
\@ifpackageloaded{#1}{%
|
|
\LWR@loadnever{#1}{#2}%
|
|
}{}%
|
|
}
|
|
\newcommand*{\LWR@earlyclassloadnever}[2]{%
|
|
\@ifclassloaded{#1}{%
|
|
\PackageError{lwarp}
|
|
{%
|
|
Class #1 is not supported\MessageBreak
|
|
by lwarp's HTML conversion.\MessageBreak
|
|
Class(es) #2 may be useful instead
|
|
}
|
|
{%
|
|
Class #1 might conflict with lwarp in some way,\MessageBreak
|
|
or is superceded by another class.\MessageBreak
|
|
For a possible alternative, see class(es) #2.
|
|
}
|
|
}{}%
|
|
}
|
|
\LWR@earlyclassloadnever{jarticle}{ujarticle}
|
|
\LWR@earlyclassloadnever{jbook}{ujbook}
|
|
\LWR@earlyclassloadnever{jreport}{ujreport}
|
|
\LWR@earlyclassloadnever{tarticle}{utarticle}
|
|
\LWR@earlyclassloadnever{tbook}{utbook}
|
|
\LWR@earlyclassloadnever{treport}{utreport}
|
|
\LWR@earlyloadnever{ae}{cm-super, lmodern}
|
|
\LWR@earlyloadnever{aecompl}{cm-super, lmodern}
|
|
\LWR@earlyloadnever{aecc}{cm-super, lmodern}
|
|
\LWR@earlyloadnever{alg}{algorithm2e, algorithmicx}
|
|
\LWR@earlyloadnever{algorithmic}{algorithm2e, algorithmicx}
|
|
\LWR@earlyloadnever{bitfield}{bytefield}
|
|
\LWR@earlyloadnever{caption2}{caption}
|
|
\LWR@earlyloadnever{colortab}{colortbl}
|
|
\LWR@earlyloadnever{csvtools}{datatool}
|
|
\LWR@earlyloadnever{doublespace}{setspace}
|
|
\LWR@earlyloadnever{epsf}{graphicx}
|
|
\LWR@earlyloadnever{fancyheadings}{fancyhdr}
|
|
\LWR@earlyloadnever{fncylab}{cleveref}
|
|
\LWR@earlyloadnever{formula}{siunitx}
|
|
\LWR@earlyloadnever{glossary}{glossaries}
|
|
\LWR@earlyloadnever{hyper}{hyperref}
|
|
\LWR@earlyloadnever{newthm}{ntheorem}
|
|
\LWR@earlyloadnever{pdfcprot}{microtype}
|
|
\LWR@earlyloadnever{picinpar}{floatflt, wrapfig}
|
|
\LWR@earlyloadnever{picins}{floatflt, wrapfig}
|
|
\LWR@earlyloadnever{rplain}{fancyhdr}
|
|
\LWR@earlyloadnever{si}{siunitx}
|
|
\LWR@earlyloadnever{sistyle}{siunitx}
|
|
\LWR@earlyloadnever{slashbox}{diagbox}
|
|
\LWR@earlyloadnever{statex}{statex2}
|
|
\LWR@earlyloadnever{t1enc}{fontenc, inputenc, inputenx}
|
|
\LWR@earlyloadnever{ucs}{inputenc, inputencx}
|
|
\LWR@earlyloadnever{wasysym}{textcomp, amssymb, amsfonts, mnsymbol, fdsymbol}
|
|
\@ifpackageloaded{xeCJK}{}{
|
|
\LWR@earlyloadnever{CJK}{ctex, xeCJK}
|
|
\LWR@earlyloadnever{CJKutf8}{ctex, xeCJK}
|
|
}
|
|
\LWR@earlyloadnever{bxcjkjatype}{upLaTeX, bxjsarticle, ujarticle, utarticle}
|
|
\LWR@earlyloadnever{hangul}{kotex, xetexko, luatexko}
|
|
\LWR@loadafter{2in1}
|
|
\LWR@loadafter{2up}
|
|
\LWR@loadafter{a4}
|
|
\LWR@loadafter{a4wide}
|
|
\LWR@loadafter{a5comb}
|
|
\LWR@notmemoirloadafter{abstract}
|
|
\LWR@loadafter{academicons}
|
|
\LWR@loadafter{accessibility}
|
|
\LWR@loadafter{accsupp}
|
|
\LWR@loadafter{acro}
|
|
\LWR@loadafter{acronym}
|
|
\LWR@loadafter{adjmulticol}
|
|
\LWR@loadafter{addlines}
|
|
\LWR@loadafter{afterpage}
|
|
\LWR@loadafter{algorithm2e}
|
|
\LWR@loadafter{algorithmicx}
|
|
\LWR@loadafter{alltt}
|
|
\LWR@loadafter{amsmath}
|
|
\LWR@loadafter{amsthm}
|
|
\LWR@loadafter{anonchap}
|
|
\LWR@loadafter{anysize}
|
|
\LWR@notmemoirloadafter{appendix}
|
|
\LWR@loadafter{ar}
|
|
\LWR@loadafter{arabicfront}
|
|
\LWR@notmemoirloadafter{array}
|
|
\LWR@loadafter{arydshln}
|
|
\LWR@loadafter{asymptote}
|
|
\LWR@loadafter{attachfile}
|
|
\LWR@loadafter{attachfile2}
|
|
\LWR@loadafter{authblk}
|
|
\LWR@loadafter{autobreak}
|
|
\LWR@loadafter{autonum}
|
|
\LWR@loadafter{awesomebox}
|
|
\LWR@loadafter{axessibility}
|
|
\LWR@loadafter{axodraw2}
|
|
\LWR@loadafter{backnaur}
|
|
\LWR@loadafter{backref}
|
|
\LWR@loadafter{balance}
|
|
\LWR@loadafter{bbding}
|
|
\LWR@loadafter{bigdelim}
|
|
\LWR@loadafter{bigfoot}
|
|
\LWR@loadafter{bigstrut}
|
|
\LWR@loadafter{bitpattern}
|
|
\LWR@loadafter{blowup}
|
|
\LWR@loadafter{bm}
|
|
\LWR@loadafter{booklet}
|
|
\LWR@loadafter{bookmark}
|
|
\LWR@notmemoirloadafter{booktabs}
|
|
\LWR@loadafter{bophook}
|
|
\LWR@loadafter{bounddvi}
|
|
\LWR@loadafter{boxedminipage}
|
|
\LWR@loadafter{boxedminipage2e}
|
|
\LWR@loadafter{braket}
|
|
\LWR@loadafter{breakurl}
|
|
\LWR@loadafter{breqn}
|
|
\LWR@loadafter{bsheaders}
|
|
\LWR@loadafter{bxpapersize}
|
|
\LWR@loadafter{bytefield}
|
|
\LWR@loadafter{cancel}
|
|
\LWR@loadafter{canoniclayout}
|
|
\LWR@loadafter{caption}
|
|
\LWR@loadafter{caption2}
|
|
\LWR@loadafter{cases}
|
|
\LWR@loadafter{centernot}
|
|
\LWR@loadafter{changebar}
|
|
\LWR@loadafter{changelayout}
|
|
\LWR@notmemoirloadafter{changepage}
|
|
\LWR@loadafter{changes}
|
|
\LWR@loadafter{chappg}
|
|
\LWR@loadafter{chapterbib}
|
|
\LWR@loadafter{chemfig}
|
|
\LWR@loadafter{chemformula}
|
|
\LWR@loadafter{chemgreek}
|
|
\LWR@loadafter{chemmacros}
|
|
\LWR@loadafter{chemnum}
|
|
\LWR@loadafter{chkfloat}
|
|
\LWR@notmemoirloadafter{chngpage}
|
|
\LWR@loadafter{cite}
|
|
\LWR@loadafter{citeref}
|
|
\LWR@loadafter{cleveref}
|
|
\LWR@loadafter{cmdtrack}
|
|
\LWR@loadafter{colonequals}
|
|
\LWR@loadafter{color}
|
|
\LWR@loadafter{colortbl}
|
|
\LWR@loadafter{continue}
|
|
\LWR@loadafter{copyrightbox}
|
|
\LWR@notmemoirloadafter{crop}
|
|
\LWR@loadafter{ctable}
|
|
\LWR@loadafter{cuted}
|
|
\LWR@loadafter{cutwin}
|
|
\LWR@loadafter{dblfloatfix}
|
|
\LWR@loadafter{dblfnote}
|
|
\LWR@notmemoirloadafter{dcolumn}
|
|
\LWR@loadafter{decimal}
|
|
\LWR@loadafter{diagbox}
|
|
\LWR@loadafter{dingbat}
|
|
\LWR@loadafter{DotArrow}
|
|
\LWR@loadafter{dotlessi}
|
|
\LWR@loadafter{dprogress}
|
|
\LWR@loadafter{draftcopy}
|
|
\LWR@loadafter{draftfigure}
|
|
\LWR@loadafter{draftwatermark}
|
|
\LWR@loadafter{drftcite}
|
|
\LWR@loadafter{easy-todo}
|
|
\LWR@loadafter{ebook}
|
|
\LWR@loadafter{econometrics}
|
|
\LWR@loadafter{ed}
|
|
\LWR@loadafter{ellipsis}
|
|
\LWR@loadafter{embrac}
|
|
\LWR@loadafter{emptypage}
|
|
\LWR@loadafter{endfloat}
|
|
\LWR@loadafter{endheads}
|
|
\LWR@loadafter{endnotes}
|
|
\LWR@loadafter{engtlc}
|
|
\LWR@notmemoirloadafter{enumerate}
|
|
\LWR@loadafter{enumitem}
|
|
\LWR@notmemoirloadafter{epigraph}
|
|
\LWR@loadafter{epsfig}
|
|
\LWR@loadafter{epstopdf}
|
|
\LWR@loadafter{epstopdf-base}
|
|
\LWR@loadafter{eqlist}
|
|
\LWR@loadafter{eqparbox}
|
|
\LWR@loadafter{errata}
|
|
\LWR@loadafter{eso-pic}
|
|
\LWR@loadafter{etoc}
|
|
\LWR@loadafter{eurosym}
|
|
\LWR@loadafter{everypage}
|
|
\LWR@loadafter{everyshi}
|
|
\LWR@loadafter{extarrows}
|
|
\LWR@loadafter{extramarks}
|
|
\LWR@loadafter{fancybox}
|
|
\LWR@loadafter{fancyhdr}
|
|
\LWR@loadafter{fancyref}
|
|
\LWR@loadafter{fancytabs}
|
|
\LWR@loadafter{fancyvrb}
|
|
\LWR@loadafter{fbox}
|
|
\LWR@loadafter{fewerfloatpages}
|
|
\LWR@loadafter{figcaps}
|
|
\LWR@loadafter{figsize}
|
|
\LWR@loadafter{fitbox}
|
|
\LWR@loadafter{fix2col}
|
|
\LWR@loadafter{fixme}
|
|
\LWR@loadafter{fixmetodonotes}
|
|
\LWR@loadafter{flafter}
|
|
\LWR@loadafter{flippdf}
|
|
\LWR@loadafter{float}
|
|
\LWR@loadafter{floatflt}
|
|
\LWR@loadafter{floatpag}
|
|
\LWR@loadafter{floatrow}
|
|
\LWR@loadafter{fltrace}
|
|
\LWR@loadafter{flushend}
|
|
\LWR@loadafter{fnbreak}
|
|
\LWR@loadafter{fncychap}
|
|
\LWR@loadafter{fnlineno}
|
|
\LWR@loadafter{fnpara}
|
|
\LWR@loadafter{fnpos}
|
|
\LWR@loadafter{fontawesome}
|
|
\LWR@loadafter{fontawesome5}
|
|
\LWR@loadafter{footmisc}
|
|
\LWR@loadafter{footnote}
|
|
\LWR@loadafter{footnotebackref}
|
|
\LWR@loadafter{footnotehyper}
|
|
\LWR@loadafter{footnoterange}
|
|
\LWR@loadafter{footnpag}
|
|
\LWR@loadafter{foreign}
|
|
\LWR@loadafter{forest}
|
|
\LWR@loadafter{fouridx}
|
|
\LWR@loadafter{framed}
|
|
\LWR@loadafter{ftcap}
|
|
\LWR@loadafter{ftnright}
|
|
\LWR@loadafter{fullminipage}
|
|
\LWR@loadafter{fullpage}
|
|
\LWR@loadafter{fullwidth}
|
|
\LWR@loadafter{fwlw}
|
|
\LWR@loadafter{gensymb}
|
|
\LWR@loadafter{gentombow}
|
|
\LWR@loadafter{ghsystem}
|
|
\LWR@loadafter{gindex}
|
|
\LWR@loadafter{glossaries}
|
|
\LWR@loadafter{gmeometric}
|
|
\LWR@loadafter{gloss}
|
|
\LWR@loadafter{glossary}
|
|
\LWR@loadafter{grffile}
|
|
\LWR@loadafter{grid}
|
|
\LWR@loadafter{grid-system}
|
|
\LWR@loadafter{gridset}
|
|
\LWR@loadafter{hang}
|
|
\LWR@loadafter{hanging}
|
|
\LWR@loadafter{hhline}
|
|
\LWR@loadafter{hypbmsec}
|
|
\LWR@loadafter{hypcap}
|
|
\LWR@loadafter{hypdestopt}
|
|
\LWR@loadafter{hypernat}
|
|
\LWR@loadafter{hyperref}
|
|
\LWR@loadafter{hyperxmp}
|
|
\LWR@loadafter{hyphenat}
|
|
\LWR@loadafter{idxlayout}
|
|
\LWR@loadafter{ifoddpage}
|
|
\LWR@loadafter{imakeidx}
|
|
\LWR@notmemoirloadafter{index}
|
|
\LWR@loadafter{intopdf}
|
|
\LWR@loadafter{jurabib}
|
|
\LWR@loadafter{karnaugh-map}
|
|
\LWR@loadafter{keyfloat}
|
|
\LWR@loadafter{layaureo}
|
|
\LWR@loadafter{layout}
|
|
\LWR@loadafter{layouts}
|
|
\LWR@loadafter{leading}
|
|
\LWR@loadafter{leftidx}
|
|
\LWR@loadafter{letterspace}
|
|
\LWR@loadafter{lettrine}
|
|
\LWR@loadafter{lineno}
|
|
\LWR@loadafter{lips}
|
|
\LWR@loadafter{listings}
|
|
\LWR@loadafter{listliketab}
|
|
\LWR@loadafter{longtable}
|
|
\LWR@loadafter{lscape}
|
|
\LWR@loadafter{ltablex}
|
|
\LWR@loadafter{ltcaption}
|
|
\LWR@loadafter{ltxgrid}
|
|
\LWR@loadafter{ltxtable}
|
|
\LWR@loadafter{lua-check-hyphen}
|
|
\LWR@loadafter{lua-visual-debug}
|
|
\LWR@loadafter{luacolor}
|
|
\LWR@loadafter{luamplib}
|
|
\LWR@loadafter{luatodonotes}
|
|
\LWR@loadafter{lyluatex}
|
|
\LWR@loadafter{magaz}
|
|
\LWR@notmemoirloadafter{makeidx}
|
|
\LWR@loadafter{manyfoot}
|
|
\LWR@loadafter{marginfit}
|
|
\LWR@loadafter{marginfix}
|
|
\LWR@loadafter{marginnote}
|
|
\LWR@loadafter{marvosym}
|
|
\LWR@loadafter{mathcomp}
|
|
\LWR@loadafter{mathdots}
|
|
\LWR@loadafter{mathfixs}
|
|
\LWR@loadafter{mathtools}
|
|
\LWR@loadafter{mcaption}
|
|
\LWR@loadafter{mdframed}
|
|
\LWR@loadafter{media9}
|
|
\LWR@loadafter{memhfixc}
|
|
\LWR@loadafter{metalogo}
|
|
\LWR@loadafter{metalogox}
|
|
\LWR@loadafter{mhchem}
|
|
\LWR@loadafter{microtype}
|
|
\LWR@loadafter{midfloat}
|
|
\LWR@loadafter{midpage}
|
|
\LWR@loadafter{minibox}
|
|
\LWR@loadafter{minitoc}
|
|
\LWR@loadafter{mismath}
|
|
\LWR@notmemoirloadafter{moreverb}
|
|
\LWR@notmemoirloadafter{movie15}
|
|
\LWR@notmemoirloadafter{mparhack}
|
|
\LWR@loadafter{multibib}
|
|
\LWR@loadafter{multicap}
|
|
\LWR@loadafter{multicolrule}
|
|
\LWR@loadafter{multimedia}
|
|
\LWR@loadafter{multiobjective}
|
|
\LWR@loadafter{multirow}
|
|
\LWR@loadafter{multitoc}
|
|
\LWR@loadafter{musicography}
|
|
\LWR@loadafter{nameauth}
|
|
\LWR@loadafter{nameref}
|
|
\LWR@loadafter{natbib}
|
|
\LWR@notmemoirloadafter{nccfancyhdr}
|
|
\LWR@loadafter{nccfoots}
|
|
\LWR@loadafter{nccmath}
|
|
\LWR@notmemoirloadafter{needspace}
|
|
\LWR@loadafter{newtxmath}
|
|
\LWR@notmemoirloadafter{nextpage}
|
|
\LWR@loadafter{nicefrac}
|
|
\LWR@loadafter{niceframe}
|
|
\LWR@loadafter{noitcrul}
|
|
\LWR@loadafter{nolbreaks}
|
|
\LWR@loadafter{nomencl}
|
|
\LWR@loadafter{nonfloat}
|
|
\LWR@loadafter{nonumonpart}
|
|
\LWR@loadafter{nopageno}
|
|
\LWR@loadafter{notes}
|
|
\LWR@loadafter{notespages}
|
|
\LWR@loadafter{nowidow}
|
|
\LWR@loadafter{ntheorem}
|
|
\LWR@loadafter{octave}
|
|
\LWR@loadafter{overpic}
|
|
\LWR@loadafter{pagegrid}
|
|
\LWR@notmemoirloadafter{pagenote}
|
|
\LWR@loadafter{pagesel}
|
|
\LWR@loadafter{paralist}
|
|
\LWR@loadafter{parallel}
|
|
\LWR@loadafter{parcolumns}
|
|
\LWR@loadafter{parnotes}
|
|
\LWR@notmemoirloadafter{parskip}
|
|
\LWR@loadafter{pbox}
|
|
\LWR@loadafter{pdfcol}
|
|
\LWR@loadafter{pdfcolfoot}
|
|
\LWR@loadafter{pdfcolmk}
|
|
\LWR@loadafter{pdfcolparallel}
|
|
\LWR@loadafter{pdfcolparcolumns}
|
|
\LWR@loadafter{pdfcomment}
|
|
\LWR@loadafter{pdfcrypt}
|
|
\LWR@loadafter{pdflscape}
|
|
\LWR@loadafter{pdfmarginpar}
|
|
\LWR@loadafter{pdfpages}
|
|
\LWR@loadafter{pdfprivacy}
|
|
\LWR@loadafter{pdfrender}
|
|
\LWR@loadafter{pdfsync}
|
|
\LWR@loadafter{pdftricks}
|
|
\LWR@loadafter{pdfx}
|
|
\LWR@loadafter{perpage}
|
|
\LWR@loadafter{pfnote}
|
|
\LWR@loadafter{phfqit}
|
|
\LWR@loadafter{physics}
|
|
\LWR@loadafter{physunits}
|
|
\LWR@loadafter{pifont}
|
|
\LWR@loadafter{placeins}
|
|
\LWR@loadafter{plarray}
|
|
\LWR@loadafter{plarydshln}
|
|
\LWR@loadafter{plextarray}
|
|
\LWR@loadafter{plextarydshln}
|
|
\LWR@loadafter{plcolortbl}
|
|
\LWR@loadafter{plextdelarray}
|
|
\LWR@loadafter{prelim2e}
|
|
\LWR@loadafter{prettyref}
|
|
\LWR@loadafter{preview}
|
|
\LWR@loadafter{psfrag}
|
|
\LWR@loadafter{psfragx}
|
|
\LWR@loadafter{pst-eps}
|
|
\LWR@loadafter{pstool}
|
|
\LWR@loadafter{pstricks}
|
|
\LWR@loadafter{pxeveryshi}
|
|
\LWR@loadafter{pxftnright}
|
|
\LWR@loadafter{pxjahyper}
|
|
\LWR@loadafter{quotchap}
|
|
\LWR@loadafter{quoting}
|
|
\LWR@loadafter{ragged2e}
|
|
\LWR@loadafter{realscripts}
|
|
\LWR@loadafter{refcheck}
|
|
\LWR@loadafter{register}
|
|
\LWR@loadafter{relsize}
|
|
\LWR@loadafter{repeatindex}
|
|
\LWR@loadafter{resizegather}
|
|
\LWR@loadafter{returntogrid}
|
|
\LWR@loadafter{rmathbr}
|
|
\LWR@loadafter{rmpage}
|
|
\LWR@loadafter{romanbar}
|
|
\LWR@loadafter{romanbarpagenumber}
|
|
\LWR@loadafter{rotating}
|
|
\LWR@loadafter{rotfloat}
|
|
\LWR@loadafter{rviewport}
|
|
\LWR@loadafter{savetrees}
|
|
\LWR@loadafter{schemata}
|
|
\LWR@loadafter{scrextend}
|
|
\LWR@loadafter{scrhack}
|
|
\LWR@loadafter{scrlayer}
|
|
\LWR@loadafter{scrlayer-notecolumn}
|
|
\LWR@loadafter{scrlayer-scrpage}
|
|
\LWR@loadafter{scrpage2}
|
|
\LWR@loadafter{section}
|
|
\LWR@loadafter{sectionbreak}
|
|
\LWR@loadafter{sectsty}
|
|
\LWR@loadafter{semantic-markup}
|
|
\LWR@notmemoirloadafter{setspace}
|
|
\LWR@loadafter{shadow}
|
|
\LWR@loadafter{shapepar}
|
|
\LWR@notmemoirloadafter{showidx}
|
|
\LWR@loadafter{showkeys}
|
|
\LWR@loadafter{showtags}
|
|
\LWR@loadafter{sidecap}
|
|
\LWR@loadafter{sidenotes}
|
|
\LWR@loadafter{SIunits}
|
|
\LWR@loadafter{siunitx}
|
|
\LWR@loadafter{slantsc}
|
|
\LWR@loadafter{slashed}
|
|
\LWR@loadafter{soul}
|
|
\LWR@loadafter{soulpos}
|
|
\LWR@loadafter{soulutf8}
|
|
\LWR@loadafter{splitbib}
|
|
\LWR@loadafter{splitidx}
|
|
\LWR@loadafter{srcltx}
|
|
\LWR@loadafter{srctex}
|
|
\LWR@loadafter{stabular}
|
|
\LWR@loadafter{stackengine}
|
|
\LWR@loadafter{stackrel}
|
|
\LWR@loadafter{statex2}
|
|
\LWR@loadafter{statmath}
|
|
\LWR@loadafter{steinmetz}
|
|
\LWR@notltjloadafter{stfloats}
|
|
\LWR@loadafter{struktex}
|
|
\LWR@loadafter{subcaption}
|
|
\LWR@loadafter{subfig}
|
|
\LWR@loadafter{subfigure}
|
|
\LWR@loadafter{subsupscripts}
|
|
\LWR@loadafter{supertabular}
|
|
\LWR@loadafter{svg}
|
|
\LWR@loadafter{syntonly}
|
|
\LWR@loadafter{t1inc}
|
|
\LWR@loadafter{tabfigures}
|
|
\LWR@loadafter{tabls}
|
|
\LWR@loadafter{tablefootnote}
|
|
\LWR@notmemoirloadafter{tabularx}
|
|
\LWR@loadafter{tabulary}
|
|
\LWR@loadafter{tagpdf}
|
|
\LWR@loadafter{tascmac}
|
|
\LWR@loadafter{tcolorbox}
|
|
\LWR@loadafter{termcal}
|
|
\LWR@loadafter{textarea}
|
|
\LWR@loadafter{textfit}
|
|
\LWR@loadafter{textpos}
|
|
\LWR@loadafter{theorem}
|
|
\LWR@loadafter{thinsp}
|
|
\LWR@loadafter{thm-listof}
|
|
\LWR@loadafter{thm-restate}
|
|
\LWR@loadafter{thmbox}
|
|
\LWR@loadafter{threadcol}
|
|
\LWR@loadafter{threeparttable}
|
|
\LWR@loadafter{threeparttablex}
|
|
\LWR@loadafter{thumb}
|
|
\LWR@loadafter{thumbs}
|
|
\LWR@loadafter{tikz}
|
|
\LWR@loadafter{titleps}
|
|
\LWR@loadafter{titlesec}
|
|
\LWR@loadafter{titletoc}
|
|
\LWR@notmemoirloadafter{titling}
|
|
\LWR@notmemoirloadafter{tocbibind}
|
|
\LWR@loadafter{tocdata}
|
|
\LWR@loadafter{tocenter}
|
|
\LWR@notmemoirloadafter{tocloft}
|
|
\LWR@loadafter{tocstyle}
|
|
\LWR@loadafter{todo}
|
|
\LWR@loadafter{todonotes}
|
|
\LWR@loadafter{topcapt}
|
|
\LWR@loadafter{tram}
|
|
\LWR@loadafter{transparent}
|
|
\LWR@loadafter{trimclip}
|
|
\LWR@loadafter{trivfloat}
|
|
\LWR@loadafter{truncate}
|
|
\LWR@loadafter{turnthepage}
|
|
\LWR@loadafter{twoup}
|
|
\LWR@loadafter{typicons}
|
|
\LWR@loadafter{umoline}
|
|
\LWR@loadafter{underscore}
|
|
\LWR@loadafter{unicode-math}
|
|
\LWR@loadafter{units}
|
|
\LWR@loadafter{unitsdef}
|
|
\LWR@loadafter{upref}
|
|
\LWR@loadafter{url}
|
|
\LWR@loadafter{uspace}
|
|
\LWR@loadafter{varioref}
|
|
\LWR@notmemoirloadafter{verse}
|
|
\LWR@loadafter{versonotes}
|
|
\LWR@loadafter{vertbars}
|
|
\LWR@loadafter{vmargin}
|
|
\LWR@loadafter{vowel}
|
|
\LWR@loadafter{vpe}
|
|
\LWR@loadafter{vwcol}
|
|
\LWR@loadafter{wallpaper}
|
|
\LWR@loadafter{watermark}
|
|
\LWR@loadafter{widetable}
|
|
\LWR@loadafter{widows-and-orphans}
|
|
\LWR@loadafter{witharrows}
|
|
\LWR@loadafter{wrapfig}
|
|
\LWR@loadafter{xbmks}
|
|
\LWR@loadafter{xcolor}
|
|
\LWR@loadafter{xechangebar}
|
|
\LWR@loadafter{xellipsis}
|
|
\LWR@loadafter{xfakebold}
|
|
\LWR@loadafter{xfrac}
|
|
\LWR@loadafter{xltabular}
|
|
\LWR@loadafter{xltxtra}
|
|
\LWR@loadafter{xmpincl}
|
|
\LWR@loadafter{xpiano}
|
|
\LWR@loadafter{xpinyin}
|
|
\LWR@loadafter{xr}
|
|
\LWR@loadafter{xr-hyper}
|
|
\LWR@loadafter{xtab}
|
|
\LWR@loadafter{xurl}
|
|
\LWR@loadafter{xy}
|
|
\LWR@loadafter{zwpagelayout}
|
|
\newcommand{\LWR@mdfive}[1]{%
|
|
\PackageError{lwarp}
|
|
{No MD5 macro was found}
|
|
{%
|
|
Lwarp must find the macros \protect\pdfmdfivesum\space
|
|
or \protect\mdfivesum.%
|
|
}
|
|
}
|
|
\let\LWR@mdfive\pdfmdfivesum
|
|
\ifLuaTeX
|
|
\RequirePackage{pdftexcmds}
|
|
\let\LWR@mdfive\pdf@mdfivesum
|
|
\fi
|
|
\ifXeTeX
|
|
\@ifundefined{pdffivesum}{}
|
|
{\let\LWR@mdfive\pdfmdfivesum}
|
|
\@ifundefined{mdfivesum}{}
|
|
{\let\LWR@mdfive\mdfivesum}
|
|
\fi
|
|
\newcommand*{\LWR@pdfencoding}{%
|
|
\RequirePackage[T1]{fontenc}
|
|
|
|
\@ifpackageloaded{inputenc}{}{
|
|
\@ifpackageloaded{inputenx}{}{
|
|
\RequirePackage[utf8]{inputenc}
|
|
}
|
|
}
|
|
}
|
|
\ifPDFTeX% pdflatex or dvi latex
|
|
\LWR@pdfencoding
|
|
\fi
|
|
|
|
\ifpTeX
|
|
\LWR@pdfencoding
|
|
\fi
|
|
\ifpTeX
|
|
\else
|
|
\RequirePackage{newunicodechar}
|
|
|
|
\newunicodechar{⨯}{\texttimes}
|
|
|
|
\ifPDFTeX% pdflatex or dvi latex
|
|
\newunicodechar{ff}{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
|
|
\newlength{\LWR@templengthone}
|
|
\newlength{\LWR@templengthtwo}
|
|
\newlength{\LWR@templengththree}
|
|
\newcounter{LWR@tempcountone}
|
|
\newcommand*\LWR@providelength[1]{%
|
|
\ifdeflength{#1}{}{\newlength{#1}}%
|
|
}
|
|
\newcommand*{\LWR@convertto}[2]{\strip@pt\dimexpr #2*65536/\number\dimexpr 1#1}
|
|
|
|
\newcommand*{\LWR@printpercentlength}[2]{%
|
|
\setcounter{LWR@tempcountone}{100*\ratio{#1}{#2}}%
|
|
\arabic{LWR@tempcountone}%
|
|
}
|
|
|
|
|
|
\providecommand*{\defaddtocounter}[2]{%
|
|
\defcounter{#1}{\value{#1}+#2}%
|
|
}
|
|
|
|
|
|
\newcommand*{\LWR@patcherror}[2]{%
|
|
\PackageError{lwarp}%
|
|
{%
|
|
Unable to patch package #1, macro #2.\MessageBreak
|
|
Lwarp may need to be updated%
|
|
}%
|
|
{Please contact the maintainer of the Lwarp package.}%
|
|
}
|
|
\newcommand{\LWR@isolate}[1]{#1}%
|
|
|
|
\@ifpackageloaded{ctexpatch}{
|
|
\renewcommand{\LWR@isolate}[1]{\null#1\null}%
|
|
}{}
|
|
|
|
\@ifpackageloaded{xeCJK}{
|
|
\renewcommand{\LWR@isolate}[1]{\null#1\null}%
|
|
}{}
|
|
\newcommand*{\LWR@disablepinyin}{}
|
|
\newcommand*{\LWR@forceemptyline}{%
|
|
\LWR@origrule{0pt}{1\baselineskip}%
|
|
\LWR@orignewline%
|
|
}
|
|
\long\def\LWR@firstoffour#1#2#3#4{#1}
|
|
\long\def\LWR@secondoffour#1#2#3#4{#2}
|
|
\long\def\LWR@thirdoffour#1#2#3#4{#3}
|
|
\long\def\LWR@fourthoffour#1#2#3#4{#4}
|
|
\newcounter{LWR@texboxdepth}
|
|
\setcounter{LWR@texboxdepth}{0}
|
|
\newcommand*{\LWR@maybe@orignewpage}{%
|
|
\ifnumgreater{\value{LWR@texboxdepth}}{0}{}{\LWR@orignewpage}%
|
|
}
|
|
\DeclareRobustCommand\LWR@gsavebox[1]{%
|
|
\@ifnextchar(%)
|
|
{\LWR@@gsavepicbox#1}{\@ifnextchar[{\LWR@@gsavebox#1}{\LWR@gsbox#1}}}%
|
|
\long\def\LWR@gsbox#1#2{\global\setbox#1\hbox{%
|
|
\color@setgroup#2\color@endgroup}}
|
|
\def\LWR@@gsavebox#1[#2]{%
|
|
\@ifnextchar [{\LWR@@igsavebox#1[#2]}{\LWR@@igsavebox#1[#2][c]}}
|
|
\long\def\LWR@@igsavebox#1[#2][#3]#4{%
|
|
\LWR@gsbox#1{\@imakebox[#2][#3]{#4}}}
|
|
\def\LWR@@gsavepicbox#1(#2,#3){%
|
|
\@ifnextchar[%]
|
|
{\LWR@@igsavepicbox#1(#2,#3)}{\LWR@@igsavepicbox#1(#2,#3)[]}}
|
|
\long\def\LWR@@igsavepicbox#1(#2,#3)[#4]#5{%
|
|
\LWR@gsbox#1{\@imakepicbox(#2,#3)[#4]{#5}}}
|
|
|
|
\def\LWR@glrbox#1{%
|
|
\edef\reserved@a{%
|
|
\endgroup
|
|
\global\setbox#1\hbox{%
|
|
\begingroup\aftergroup}%
|
|
\def\noexpand\@currenvir{\@currenvir}%
|
|
\def\noexpand\@currenvline{\on@line}}%
|
|
\reserved@a
|
|
\@endpefalse
|
|
\color@setgroup
|
|
\ignorespaces}
|
|
\let\LWR@endglrbox\LWR@endlrbox
|
|
\newcommand*{\macrotocsname}[1]{%
|
|
\ifcat\relax\noexpand#1%
|
|
\expandafter\expandafter\expandafter\@gobble\expandafter\string
|
|
\fi
|
|
#1%
|
|
}
|
|
\newcommand*{\LWR@LetLtxMacrocs}[2]{%
|
|
\expandafter\LetLtxMacro\csname #1\expandafter\endcsname%
|
|
\csname#2\endcsname%
|
|
}
|
|
\newcommand*{\LWR@absorbstar}[1]{%
|
|
\LWR@LetLtxMacrocs{LWR@origns@#1}{#1}%
|
|
\csdef{#1}{\@ifstar{\csuse{LWR@origns@#1}}{\csuse{LWR@origns@#1}}}
|
|
\expandafter\robustify\csname #1\endcsname
|
|
}
|
|
\let\LWRpercent\@percentchar
|
|
\catcode`\$=12
|
|
\def\LWRdollar{$}
|
|
\catcode`\$=3
|
|
\catcode`\&=12
|
|
\def\LWRamp{&}
|
|
\catcode`\&=4
|
|
\catcode`\&=0
|
|
&catcode`&\=12
|
|
&def&LWRbackslash{\}
|
|
&catcode`&\=0
|
|
\catcode`\&=4
|
|
\catcode`\&=1
|
|
\catcode`\{=12
|
|
\def\LWRleftbrace&{}
|
|
\catcode`\{=1
|
|
\catcode`\&=4
|
|
\catcode`\&=2
|
|
\catcode`\}=12
|
|
\def\LWRrightbrace{}&
|
|
\catcode`\}=2
|
|
\catcode`\&=4
|
|
\catcode`\#=12
|
|
\def\LWRhash{#}
|
|
\catcode`\#=6
|
|
\def\LWRopquote{'}
|
|
\def\LWRopseq{\space\LWRamp\LWRamp\space\space}
|
|
\newbool{usingOSWindows}
|
|
\boolfalse{usingOSWindows}
|
|
|
|
|
|
\newcommand*{\OSPathSymbol}{/}
|
|
|
|
|
|
\newcommand*{\LWR@setOSWindows}
|
|
{
|
|
\booltrue{usingOSWindows}
|
|
\renewcommand*{\OSPathSymbol}{\@backslashchar}
|
|
\def\LWRopquote{"}
|
|
\def\LWRopseq{\space\LWRamp\space\space}
|
|
}
|
|
\ifwindows
|
|
\LWR@setOSWindows
|
|
\fi
|
|
|
|
|
|
\RequirePackage{kvoptions}
|
|
\SetupKeyvalOptions{family=LWR,prefix=LWR@}
|
|
|
|
\newcommand{\lwarpsetup}[1]{\setkeys{LWR}{#1}}
|
|
|
|
\newbool{warpingprint}
|
|
\newbool{warpingHTML}
|
|
\newbool{mathjax}
|
|
\newbool{LWR@origmathjax}
|
|
\booltrue{warpingprint}%
|
|
\boolfalse{warpingHTML}%
|
|
\boolfalse{mathjax}%
|
|
\DeclareVoidOption{warpprint}{%
|
|
\PackageInfo{lwarp}{Using option 'warpprint'}
|
|
\booltrue{warpingprint}%
|
|
\boolfalse{warpingHTML}%
|
|
}
|
|
|
|
\DeclareVoidOption{warpHTML}{%
|
|
\PackageInfo{lwarp}{Using option 'warpHTML'}%
|
|
\booltrue{warpingHTML}%
|
|
\boolfalse{warpingprint}%
|
|
}
|
|
|
|
\DeclareVoidOption{mathsvg}{%
|
|
\PackageInfo{lwarp}{Using option 'mathsvg'}
|
|
\boolfalse{mathjax}%
|
|
\boolfalse{LWR@origmathjax}%
|
|
}
|
|
\DeclareVoidOption{mathjax}{%
|
|
\PackageInfo{lwarp}{Using option 'mathjax'}
|
|
\booltrue{mathjax}%
|
|
\booltrue{LWR@origmathjax}%
|
|
}
|
|
|
|
|
|
\DeclareStringOption[\jobname]{BaseJobname}
|
|
|
|
\DeclareStringOption[\BaseJobname-images]{ImagesDirectory}
|
|
|
|
\DeclareStringOption[image-]{ImagesName}
|
|
|
|
\DeclareStringOption[lwarp.ist]{makeindexStyle}
|
|
|
|
\DeclareStringOption[lwarp.xdy]{xindyStyle}
|
|
|
|
\DeclareStringOption[english]{xindyLanguage}
|
|
|
|
\DeclareStringOption[utf8]{xindyCodepage}
|
|
|
|
|
|
\DeclareStringOption[]{xindexConfig}
|
|
|
|
\DeclareStringOption[UTF-8]{pdftotextEnc}
|
|
|
|
\newbool{LWR@creatinglwarpmk}
|
|
\boolfalse{LWR@creatinglwarpmk}
|
|
|
|
\DeclareVoidOption{lwarpmk}{
|
|
\PackageInfo{lwarp}{Using option 'lwarpmk'}
|
|
\booltrue{LWR@creatinglwarpmk}
|
|
}
|
|
|
|
\DeclareVoidOption{OSWindows}{
|
|
\PackageInfo{lwarp}{Using option 'OSWindows'}
|
|
\LWR@setOSWindows
|
|
}
|
|
|
|
\DeclareStringOption[]{HomeHTMLFilename}
|
|
|
|
\DeclareStringOption[]{HTMLFilename}
|
|
|
|
\DeclareStringOption[]{PrintLatexCmd}
|
|
|
|
\DeclareStringOption[]{HTMLLatexCmd}
|
|
|
|
\DeclareStringOption[]{PrintIndexCmd}
|
|
|
|
\DeclareStringOption[]{HTMLIndexCmd}
|
|
|
|
\DeclareStringOption[]{LatexmkIndexCmd}
|
|
|
|
\DeclareBoolOption[false]{makeindex}
|
|
|
|
\DeclareBoolOption[false]{xindy}
|
|
|
|
\DeclareBoolOption[false]{xindex}
|
|
|
|
\DeclareStringOption[cref]{IndexRef}
|
|
|
|
\DeclareStringOption[makeglossaries]{GlossaryCmd}
|
|
|
|
\DeclareBoolOption[false]{latexmk}
|
|
|
|
\DeclareBoolOption[false]{dvips}
|
|
|
|
\DeclareBoolOption[false]{dvipdfm}
|
|
|
|
\DeclareBoolOption[false]{dvipdfmx}
|
|
|
|
\ProcessKeyvalOptions*\relax
|
|
|
|
|
|
\providecommand*{\BaseJobname}{\LWR@BaseJobname}
|
|
|
|
\ifcsempty{LWR@HomeHTMLFilename}{
|
|
\newcommand*{\HomeHTMLFilename}{\BaseJobname}
|
|
}{
|
|
\csedef{HomeHTMLFilename}{\LWR@HomeHTMLFilename}
|
|
}
|
|
|
|
\csedef{HTMLFilename}{\LWR@HTMLFilename}
|
|
\newcommand*{\LWR@sanitized}{}
|
|
|
|
\newcommand*{\LWR@sanitize}[1]{%
|
|
\edef\LWR@sanitized{#1}%
|
|
\edef\LWR@sanitized{\detokenize\expandafter{\LWR@sanitized}}%
|
|
}
|
|
|
|
\LWR@sanitize{\LWR@BaseJobname}
|
|
\edef\LWR@BaseJobname{\LWR@sanitized}
|
|
|
|
\LWR@sanitize{\LWR@ImagesDirectory}
|
|
\edef\LWR@ImagesDirectory{\LWR@sanitized}
|
|
|
|
\LWR@sanitize{\LWR@ImagesName}
|
|
\edef\LWR@ImagesName{\LWR@sanitized}
|
|
\ifdefempty{\LWR@PrintIndexCmd}{
|
|
\renewcommand{\LWR@PrintIndexCmd}{%
|
|
makeindex -s \LWR@makeindexStyle \space \jobname.idx%
|
|
}
|
|
\ifbool{LWR@xindy}{
|
|
\renewcommand{\LWR@PrintIndexCmd}{%
|
|
xindy
|
|
-M \LWR@xindyStyle \space
|
|
-L \LWR@xindyLanguage \space
|
|
-C \LWR@xindyCodepage \space
|
|
\jobname.idx%
|
|
}
|
|
}{}
|
|
\ifbool{LWR@xindex}{
|
|
\ifdefvoid{\LWR@xindexConfig}{
|
|
\renewcommand{\LWR@PrintIndexCmd}{%
|
|
xindex
|
|
\jobname.idx%
|
|
}
|
|
}{
|
|
\renewcommand{\LWR@PrintIndexCmd}{%
|
|
xindex
|
|
-c \LWR@xindexConfig \space
|
|
\jobname.idx%
|
|
}
|
|
}
|
|
}{}
|
|
}{}
|
|
|
|
\ifdefempty{\LWR@HTMLIndexCmd}{
|
|
\renewcommand{\LWR@HTMLIndexCmd}{%
|
|
makeindex -s \LWR@makeindexStyle \space \jobname_html.idx%
|
|
}
|
|
\ifbool{LWR@xindy}{
|
|
\renewcommand{\LWR@HTMLIndexCmd}{%
|
|
xindy
|
|
-M \LWR@xindyStyle \space
|
|
-L \LWR@xindyLanguage \space
|
|
-C \LWR@xindyCodepage \space
|
|
\jobname_html.idx%
|
|
}
|
|
}{}
|
|
\ifbool{LWR@xindex}{
|
|
\ifdefvoid{\LWR@xindexConfig}{
|
|
\renewcommand{\LWR@HTMLIndexCmd}{%
|
|
xindex
|
|
\jobname_html.idx%
|
|
}
|
|
}{
|
|
\renewcommand{\LWR@HTMLIndexCmd}{%
|
|
xindex
|
|
-c \LWR@xindexConfig \space
|
|
\jobname_html.idx%
|
|
}
|
|
}
|
|
}{}
|
|
}{}
|
|
|
|
\ifdefempty{\LWR@LatexmkIndexCmd}{
|
|
\renewcommand{\LWR@LatexmkIndexCmd}{%
|
|
makeindex -s \LWR@makeindexStyle%
|
|
}
|
|
\ifbool{LWR@xindy}{
|
|
\renewcommand{\LWR@LatexmkIndexCmd}{%
|
|
xindy
|
|
-M \LWR@xindyStyle \space
|
|
-L \LWR@xindyLanguage \space
|
|
-C \LWR@xindyCodepage%
|
|
}
|
|
}{}
|
|
\ifbool{LWR@xindex}{
|
|
\ifdefvoid{\LWR@xindexConfig}{
|
|
\renewcommand{\LWR@LatexmkIndexCmd}{%
|
|
xindex
|
|
}
|
|
}{
|
|
\renewcommand{\LWR@LatexmkIndexCmd}{%
|
|
xindex
|
|
-c \LWR@xindexConfig
|
|
}
|
|
}
|
|
}{}
|
|
}{}
|
|
\newcommand{\warpprintonly}[1]{\ifbool{warpingprint}{#1}{}}
|
|
\newcommand{\warpHTMLonly}[1]{\ifbool{warpingHTML}{#1}{}}
|
|
\RequirePackage{comment}
|
|
|
|
\def\LWR@includecomment
|
|
#1#2{\message{Lwarp: Including comment '#1'}%
|
|
\csarg\def{After#1Comment}{\CloseAndInputCutFile}
|
|
\csarg\def{#1}{\endgroup \message{Including '#1' comment.}%
|
|
\def\CommentCutFile{comment_#2.cut} \SetUpCutFile \ProcessComment{#1}}%
|
|
\CommentEndDef{#1}}
|
|
|
|
\def\LWR@excludecomment
|
|
#1#2{\message{Lwarp: Excluding comment '#1'}%
|
|
\csarg\def{#1}{\endgroup \message{Excluding '#1' comment.}%
|
|
\begingroup
|
|
\def\CommentCutFile{comment_#2.cut} \def\ProcessCutFile{}%
|
|
\def\ThisComment####1{}\ProcessComment{#1}}%
|
|
\csarg\def{After#1Comment}{\CloseAndInputCutFile \endgroup}
|
|
\CommentEndDef{#1}}
|
|
|
|
\LWR@includecomment{warpall}{all}
|
|
|
|
\ifbool{warpingHTML}
|
|
{\LWR@includecomment{warpHTML}{html}}
|
|
{\LWR@excludecomment{warpHTML}{html}}
|
|
|
|
\ifbool{warpingprint}
|
|
{\LWR@includecomment{warpprint}{print}}
|
|
{\LWR@excludecomment{warpprint}{print}}
|
|
|
|
\begin{warpprint}
|
|
\LWR@excludecomment{warpMathJax}{mathjax}
|
|
\end{warpprint}
|
|
|
|
\begin{warpHTML}
|
|
\ifbool{mathjax}
|
|
{\LWR@includecomment{warpMathJax}{mathjax}}
|
|
{\LWR@excludecomment{warpMathJax}{mathjax}}
|
|
\end{warpHTML}
|
|
|
|
\ifbool{LWR@creatinglwarpmk}
|
|
{\LWR@includecomment{LWRcreatelwarpmk}{lwarpmk}}
|
|
{\LWR@excludecomment{LWRcreatelwarpmk}{lwarpmk}}
|
|
|
|
|
|
\begin{warpHTML}
|
|
\ifxetexorluatex
|
|
\@ifpackageloaded{fontspec}{}{
|
|
\usepackage[no-math]{fontspec}
|
|
}
|
|
\defaultfontfeatures[\rmfamily]{Ligatures={NoCommon,TeX}}
|
|
\defaultfontfeatures[\sffamily]{Ligatures={NoCommon,TeX}}
|
|
\defaultfontfeatures[\ttfamily]{Ligatures=NoCommon}
|
|
\else
|
|
|
|
|
|
\RequirePackage {microtype}
|
|
|
|
\microtypesetup{
|
|
protrusion=false,
|
|
expansion=false,
|
|
tracking=false,
|
|
kerning=false,
|
|
spacing=false}
|
|
|
|
\DisableLigatures[f,q,t,T,Q]{encoding = *,family = *}
|
|
\fi
|
|
\end{warpHTML}
|
|
|
|
\begin{warpHTML}
|
|
\@ifpackageloaded{geometry}
|
|
{}{
|
|
\RequirePackage[
|
|
reset,
|
|
paperwidth=\paperwidth,
|
|
paperheight=\paperheight,
|
|
textwidth=\textwidth,
|
|
textheight=\textheight,
|
|
left=\oddsidemargin,
|
|
top=\topmargin,
|
|
marginparsep=\marginparsep,
|
|
marginparwidth=\marginparwidth,
|
|
]{geometry}
|
|
}
|
|
\LetLtxMacro\LWR@origgeometry\geometry
|
|
\LetLtxMacro\LWR@orignewgeometry\newgeometry
|
|
\LetLtxMacro\LWR@origrestoregeometry\restoregeometry
|
|
\LetLtxMacro\LWR@origsavegeometry\savegeometry
|
|
\LetLtxMacro\LWR@origloadgeometry\loadgeometry
|
|
\newbool{LWR@allowanothergeometry}
|
|
\booltrue{LWR@allowanothergeometry}
|
|
\AtEndPreamble{
|
|
\LWR@origsavegeometry{LWR@usergeometry}
|
|
%% \begin{macrocode}
|
|
\newlength{\LWR@userspaperwidth}
|
|
\setlength{\LWR@userspaperwidth}{\paperwidth}
|
|
|
|
\newlength{\LWR@userspaperheight}
|
|
\setlength{\LWR@userspaperheight}{\paperheight}
|
|
|
|
\newlength{\LWR@usersmarginparwidth}
|
|
\setlength{\LWR@usersmarginparwidth}{\marginparwidth}
|
|
|
|
\newlength{\LWR@userstextwidth}
|
|
\setlength{\LWR@userstextwidth}{\textwidth}
|
|
|
|
\newlength{\LWR@userstextheight}
|
|
\setlength{\LWR@userstextwidth}{\textheight}
|
|
\LWR@origgeometry{
|
|
reset,
|
|
paperheight=190in,
|
|
paperwidth=20in,
|
|
left=2in,
|
|
right=6in,
|
|
top=1in,
|
|
bottom=1in,
|
|
heightrounded,%
|
|
}
|
|
\LWR@origsavegeometry{LWR@lwarpgeometry}
|
|
\boolfalse{LWR@allowanothergeometry}%
|
|
\setlength{\textheight}{0.8\paperheight}
|
|
\setlength{\textwidth}{0.7\paperwidth}
|
|
|
|
\@twosidefalse
|
|
\@mparswitchfalse
|
|
}% \AtEndPreamble
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpall}
|
|
|
|
\RequirePackage{xparse}
|
|
|
|
|
|
\RequirePackage{calc}
|
|
|
|
\end{warpall}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\RequirePackage{expl3}
|
|
|
|
|
|
|
|
\RequirePackage{gettitlestring}
|
|
|
|
\@ifundefined{bxjs@everypar}{}{\let\everypar\bxjs@everypar}
|
|
|
|
\RequirePackage{everyhook}
|
|
\end{warpHTML}
|
|
|
|
\begin{warpall}
|
|
|
|
\@ifundefined{filec@ntents@opt}{% older kernel, discard optional args
|
|
|
|
\RequirePackage{filecontents}
|
|
|
|
\LetLtxMacro\LWR@orig@filec@ntents\filec@ntents
|
|
|
|
\@ifpackagelater{filecontents}{2011/10/08}
|
|
{
|
|
\renewcommand*{\filec@ntents}[1][]{\LWR@orig@filec@ntents}
|
|
}
|
|
{% patch older package for morewrites
|
|
\newwrite\fcwrite
|
|
\renewcommand*{\filec@ntents}[1][]{%
|
|
\def\chardef##1\write{\let\reserved@c\fcwrite}%
|
|
\LWR@orig@filec@ntents%
|
|
}
|
|
}
|
|
|
|
}% older kernel
|
|
{% newer kernel
|
|
}% newer kernel, filecontents env accepts optional args, do not load package
|
|
|
|
\end{warpall}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\RequirePackage{xifthen}
|
|
|
|
\RequirePackage{verbatim}
|
|
|
|
\RequirePackage{refcount}
|
|
|
|
\RequirePackage{newfloat}
|
|
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpall}
|
|
|
|
\RequirePackage{xstring}[2019/02/01]
|
|
|
|
\RequirePackage{environ}
|
|
|
|
\end{warpall}
|
|
|
|
\begin{warpHTML}
|
|
|
|
|
|
\RequirePackage{printlen}
|
|
|
|
\newrobustcmd*{\LWR@printlength}[1]{%
|
|
\begingroup%
|
|
\uselengthunit{PT}%
|
|
\renewcommand*{\unitspace}{}%
|
|
\ifdimless{#1}{10pt}{%
|
|
\printlength{#1}%
|
|
}{%
|
|
\rndprintlength{#1}%
|
|
}%
|
|
\endgroup%
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpprint}
|
|
|
|
\RequirePackage{varwidth}
|
|
|
|
\end{warpprint}
|
|
|
|
\begin{warpall}
|
|
|
|
\LetLtxMacro\LWR@origRequirePackage\RequirePackage
|
|
\LetLtxMacro\LWR@origRequirePackageWithOptions\RequirePackageWithOptions
|
|
|
|
\newcommand*{\LWR@requirepackagenames}{}
|
|
|
|
\newcommand*{\LWR@parsedrequirepackagenames}{}
|
|
|
|
\newcommand*{\LWR@nullifycomment}{%
|
|
\PackageInfo{lwarp}%
|
|
{Nullifying the comment environment before loading \LWR@strresulttwo,}%
|
|
\let\comment\relax%
|
|
\let\endcomment\relax%
|
|
}
|
|
|
|
\newcommand*\LWR@findword[3][,]{%
|
|
\StrBetween[#3,\numexpr#3+1]{#1#2#1}{#1}{#1}%
|
|
}
|
|
|
|
\newcommand*{\LWR@checkloadfilename}[1]{%
|
|
\LWR@checkloadnever{#1}{ae}{cm-super, lmodern}
|
|
\LWR@checkloadnever{#1}{aecc}{cm-super, lmodern}
|
|
\LWR@checkloadnever{#1}{aecompl}{cm-super, lmodern}
|
|
\LWR@checkloadnever{#1}{alg}{algorithm2e, algorithmicx}
|
|
\LWR@checkloadnever{#1}{algorithmic}{algorithm2e, algorithmicx}
|
|
\LWR@checkloadnever{#1}{bitfield}{bytefield}
|
|
\LWR@checkloadnever{#1}{caption2}{caption}
|
|
\LWR@checkloadnever{#1}{ccaption}{caption}% might be preloaded by memoir
|
|
\LWR@checkloadnever{#1}{colortab}{colortbl}
|
|
\LWR@checkloadnever{#1}{csvtools}{datatool}
|
|
\LWR@checkloadnever{#1}{doublespace}{setspace}
|
|
\LWR@checkloadnever{#1}{epsf}{graphicx}
|
|
\LWR@checkloadnever{#1}{fancyheadings}{fancyhdr}
|
|
\LWR@checkloadnever{#1}{fncylab}{cleveref}
|
|
\LWR@checkloadnever{#1}{formula}{siunitx}
|
|
\LWR@checkloadnever{#1}{glossary}{glossaries}
|
|
\LWR@checkloadnever{#1}{hyper}{hyperref}
|
|
\LWR@checkloadnever{#1}{newthm}{ntheorem}
|
|
\LWR@checkloadnever{#1}{pdfcprot}{microtype}
|
|
\LWR@checkloadnever{#1}{picinpar}{floatflt, wrapfig}
|
|
\LWR@checkloadnever{#1}{picins}{floatflt, wrapfig}
|
|
\LWR@checkloadnever{#1}{rplain}{fancyhdr}
|
|
\LWR@checkloadnever{#1}{si}{siunitx}
|
|
\LWR@checkloadnever{#1}{sistyle}{siunitx}
|
|
\LWR@checkloadnever{#1}{slashbox}{diagbox}
|
|
\LWR@checkloadnever{#1}{statex}{statex2}
|
|
\LWR@checkloadnever{#1}{t1enc}{fontenc, inputenc, inputenx}
|
|
\LWR@checkloadnever{#1}{ucs}{inputenc, inputencx}
|
|
\LWR@checkloadnever{#1}{wasysym}{textcomp, amssymb, amsfonts, mnsymbol, fdsymbol}
|
|
\LWR@checkloadnever{#1}{bxcjkjatype}{upLaTeX, bxjsarticle, ujarticle, utarticle}
|
|
\LWR@checkloadnever{#1}{hangul}{kotex, xetexko, luatexko}
|
|
\LWR@checkloadbefore{#1}{ctex}
|
|
\LWR@checkloadbefore{#1}{fontspec}
|
|
\LWR@checkloadbefore{#1}{inputenc}
|
|
\LWR@checkloadbefore{#1}{inputenx}
|
|
\LWR@checkloadbefore{#1}{nfssext-cfr}
|
|
\LWR@checkloadbefore{#1}{fontaxes}
|
|
\LWR@checkloadbefore{#1}{kotex}
|
|
\LWR@checkloadbefore{#1}{luatexja}
|
|
\LWR@checkloadbefore{#1}{luatexja-fontspec}
|
|
\LWR@checkloadbefore{#1}{luatexko}
|
|
\LWR@checkloadbefore{#1}{morewrites}
|
|
\LWR@checkloadbefore{#1}{newclude}
|
|
\LWR@checkloadbefore{#1}{newunicodechar}
|
|
\LWR@checkloadbefore{#1}{plext}
|
|
\LWR@checkloadbefore{#1}{xeCJK}
|
|
\LWR@checkloadbefore{#1}{xetexko}
|
|
\LWR@checkloadbefore{#1}{zxjatype}
|
|
}
|
|
|
|
\newcommand*{\LWR@lookforpackagename}[1]{%
|
|
\LWR@findword{\LWR@requirepackagenames}{#1}[\LWR@strresult]%
|
|
\StrSubstitute[100]{\LWR@strresult}{ }{}[\LWR@strresulttwo]%
|
|
\IfStrEq{\LWR@strresulttwo}{}%
|
|
{}% no filename
|
|
{% yes filename was found
|
|
\ifdefstring{\LWR@strresulttwo}{easyReview}{\LWR@nullifycomment}{}%
|
|
\ifdefstring{\LWR@strresulttwo}{changes}{\LWR@nullifycomment}{}%
|
|
\ifbool{warpingHTML}{\LWR@checkloadfilename{\LWR@strresulttwo}}{}%
|
|
\ifboolexpr{
|
|
bool{warpingHTML} and
|
|
test{\IfFileExists{lwarp-\LWR@strresulttwo.sty}}
|
|
}%
|
|
{% lwarp-* file found
|
|
\ifdefvoid{\LWR@parsedrequirepackagenames}{%
|
|
\edef\LWR@parsedrequirepackagenames{lwarp-\LWR@strresulttwo}%
|
|
}{%
|
|
\edef\LWR@parsedrequirepackagenames{%
|
|
\LWR@parsedrequirepackagenames,lwarp-\LWR@strresulttwo%
|
|
}%
|
|
}%
|
|
}%
|
|
{%
|
|
\ifdefvoid{\LWR@parsedrequirepackagenames}{%
|
|
\edef\LWR@parsedrequirepackagenames{\LWR@strresulttwo}%
|
|
}{%
|
|
\edef\LWR@parsedrequirepackagenames{%
|
|
\LWR@parsedrequirepackagenames,\LWR@strresulttwo%
|
|
}%
|
|
}%
|
|
}% no lwarp-* file
|
|
}% yes filename
|
|
}
|
|
|
|
\RenewDocumentCommand{\RequirePackage}{o m o}{%
|
|
\renewcommand*{\LWR@requirepackagenames}{#2}%
|
|
\renewcommand*{\LWR@parsedrequirepackagenames}{}%
|
|
\LWR@lookforpackagename{1}%
|
|
\LWR@lookforpackagename{2}%
|
|
\LWR@lookforpackagename{3}%
|
|
\LWR@lookforpackagename{4}%
|
|
\LWR@lookforpackagename{5}%
|
|
\LWR@lookforpackagename{6}%
|
|
\LWR@lookforpackagename{7}%
|
|
\LWR@lookforpackagename{8}%
|
|
\LWR@lookforpackagename{9}%
|
|
\LWR@lookforpackagename{10}%
|
|
\LWR@lookforpackagename{11}%
|
|
\LWR@lookforpackagename{12}%
|
|
\LWR@lookforpackagename{13}%
|
|
\LWR@lookforpackagename{14}%
|
|
\LWR@lookforpackagename{15}%
|
|
\LWR@lookforpackagename{16}%
|
|
\LWR@lookforpackagename{17}%
|
|
\LWR@lookforpackagename{18}%
|
|
\LWR@lookforpackagename{19}%
|
|
\LWR@lookforpackagename{20}%
|
|
\IfValueTF{#1}%
|
|
{% options given
|
|
\IfValueTF{#3}% version given?
|
|
{\LWR@origRequirePackage[#1]{\LWR@parsedrequirepackagenames}[#3]}%
|
|
{\LWR@origRequirePackage[#1]{\LWR@parsedrequirepackagenames}}%
|
|
}%
|
|
{% no options given
|
|
\IfValueTF{#3}% version given?
|
|
{\LWR@origRequirePackage{\LWR@parsedrequirepackagenames}[#3]}%
|
|
{\LWR@origRequirePackage{\LWR@parsedrequirepackagenames}}%
|
|
}%
|
|
}
|
|
\LetLtxMacro\usepackage\RequirePackage
|
|
|
|
\end{warpall}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\NewDocumentCommand{\LWR@ProvidesPackagePass}{m o}{
|
|
\PackageInfo{lwarp}{%
|
|
Using package `#1',\MessageBreak
|
|
and adding lwarp modifications, including options,\MessageBreak%
|
|
}%
|
|
\IfValueTF{#2}%
|
|
{\ProvidesPackage{lwarp-#1}[#2]}%
|
|
{\ProvidesPackage{lwarp-#1}}%
|
|
\DeclareOption*{%
|
|
\PassOptionsToPackage{\CurrentOption}{#1}%
|
|
}%
|
|
\ProcessOptions\relax%
|
|
\@ifpackageloaded{#1}{%
|
|
\edef\LWR@tempone{\csuse{opt@#1.sty}}%
|
|
\IfValueTF{#2}%
|
|
{%
|
|
\expandafter\LWR@origRequirePackage%
|
|
\expandafter[\LWR@tempone]{#1}[#2]%
|
|
}%
|
|
{%
|
|
\expandafter\LWR@origRequirePackage%
|
|
\expandafter[\LWR@tempone]{#1}%
|
|
}%
|
|
}{%
|
|
\IfValueTF{#2}%
|
|
{\LWR@origRequirePackage{#1}[#2]}%
|
|
{\LWR@origRequirePackage{#1}}%
|
|
}%
|
|
\DeclareOption*{}%
|
|
\ProcessOptions\relax%
|
|
}
|
|
|
|
\newcommand*{\LWR@ProvidesPackageDropA}[2]{%
|
|
\PackageInfo{lwarp}{%
|
|
Replacing package `#1' with the lwarp version,\MessageBreak
|
|
and discarding options,%
|
|
}%
|
|
\IfValueTF{#2}
|
|
{\ProvidesPackage{lwarp-#1}[#2]}
|
|
{\ProvidesPackage{lwarp-#1}}
|
|
}
|
|
\newcommand*{\LWR@ProvidesPackageDropB}{%
|
|
\let\ds@\@empty% from the original \ProcessOptions
|
|
\edef\@curroptions{}% lwarp modification to \ProcessOptions
|
|
\@process@ptions\relax% from the original \ProcessOptions
|
|
}
|
|
\NewDocumentCommand{\LWR@ProvidesPackageDrop}{m o}{
|
|
\LWR@ProvidesPackageDropA{#1}{#2}
|
|
\DeclareOption*{}
|
|
\LWR@ProvidesPackageDropB
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
|
|
|
|
\begin{warpall}
|
|
|
|
\newwrite\LWR@quickfile%
|
|
|
|
\end{warpall}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newwrite\LWR@lateximagesfile
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\def\@include#1 {%
|
|
\immediate\openout\LWR@quickfile #1_html_inc.tex% lwarp
|
|
\immediate\write\LWR@quickfile{\string\input{#1.tex}}% lwarp
|
|
\immediate\closeout\LWR@quickfile% lwarp
|
|
\LWR@maybe@orignewpage% changed from clearpage
|
|
\if@filesw
|
|
\immediate\write\@mainaux{\string\@input{#1_html_inc.aux}}% changed
|
|
\fi
|
|
\@tempswatrue
|
|
\if@partsw
|
|
\@tempswafalse
|
|
\edef\reserved@b{#1}%
|
|
\@for\reserved@a:=\@partlist\do
|
|
{\ifx\reserved@a\reserved@b\@tempswatrue\fi}%
|
|
\fi
|
|
\if@tempswa
|
|
\let\@auxout\@partaux
|
|
\if@filesw
|
|
\immediate\openout\@partaux #1_html_inc.aux % changed
|
|
\immediate\write\@partaux{\relax}%
|
|
\fi
|
|
\@input@{#1_html_inc.tex}% changed
|
|
\LWR@maybe@orignewpage% changed from clearpage
|
|
\@writeckpt{#1}%
|
|
\if@filesw
|
|
\immediate\closeout\@partaux
|
|
\fi
|
|
\else
|
|
\deadcycles\z@
|
|
\@nameuse{cp@#1}%
|
|
\fi
|
|
\let\@auxout\@mainaux%
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newwrite\LWR@copyoutfile % open the file to write to
|
|
\newread\LWR@copyinfile % open the file to read from
|
|
|
|
\newcommand*{\LWR@copyfile}[2]{%
|
|
\LWR@traceinfo{LWR@copyfile: copying #1 to #2}
|
|
|
|
\immediate\openout\LWR@copyoutfile=#2
|
|
\openin\LWR@copyinfile=#1
|
|
\begingroup\endlinechar=-1
|
|
\makeatletter
|
|
|
|
\LWR@traceinfo{LWR@copyfile: about to loop}
|
|
|
|
\loop\unless\ifeof\LWR@copyinfile
|
|
\LWR@traceinfo{LWR@copyfile: one line}
|
|
\read\LWR@copyinfile to\LWR@fileline % Read one line and store it into \LWR@fileline
|
|
\immediate\write\LWR@copyoutfile{\unexpanded\expandafter{\LWR@fileline}}%
|
|
\repeat
|
|
\immediate\closeout\LWR@copyoutfile
|
|
\LWR@traceinfo{LWR@copyfile: done}
|
|
\endgroup
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpall}
|
|
|
|
\newbool{LWR@tracinglwarp}
|
|
\newcommand{\tracinglwarp}{\booltrue{LWR@tracinglwarp}}
|
|
\newcommand{\LWR@traceinfo}[1]{%
|
|
\ifbool{LWR@tracinglwarp}%
|
|
{%
|
|
\typeout{*** lwarp: #1}%
|
|
}%
|
|
{}%
|
|
}
|
|
|
|
\newbool{HTMLDebugComments}
|
|
\boolfalse{HTMLDebugComments}
|
|
|
|
\AfterEndPreamble{
|
|
\LWR@traceinfo{AfterEndPreamble}
|
|
}
|
|
|
|
\AtBeginDocument{
|
|
\LWR@traceinfo{AtBeginDocument}
|
|
}
|
|
|
|
\end{warpall}
|
|
|
|
|
|
|
|
|
|
\begin{warpHTML}
|
|
\newcommand*{\LWR@formatting}{HTML}
|
|
\newcommand*{\LWR@formatted}[1]{%
|
|
\ifcsundef{LWR@print@#1}{%
|
|
\expandafter\LetLtxMacro\csname LWR@print@#1\expandafter\endcsname%
|
|
\csname#1\endcsname%
|
|
}{}%
|
|
\ifcsundef{#1}{%
|
|
\expandafter\newrobustcmd\csname #1\endcsname{%
|
|
\@nameuse{LWR@\LWR@formatting @#1}%
|
|
}%
|
|
}{%
|
|
\expandafter\renewrobustcmd\csname #1\endcsname{%
|
|
\@nameuse{LWR@\LWR@formatting @#1}%
|
|
}%
|
|
}%
|
|
}
|
|
\newcommand*{\LWR@expandableformatted}[1]{%
|
|
\ifcsundef{LWR@print@#1}{%
|
|
\expandafter\LetLtxMacro\csname LWR@print@#1\expandafter\endcsname%
|
|
\csname#1\endcsname%
|
|
}{}%
|
|
\ifcsundef{#1}{%
|
|
\expandafter\newcommand\csname #1\endcsname{%
|
|
\@nameuse{LWR@\LWR@formatting @#1}%
|
|
}%
|
|
}{%
|
|
\expandafter\renewcommand\csname #1\endcsname{%
|
|
\@nameuse{LWR@\LWR@formatting @#1}%
|
|
}%
|
|
}%
|
|
}
|
|
\newcommand*{\LWR@formattedenv}[1]{%
|
|
\ifcsundef{LWR@print@#1}{%
|
|
\expandafter\LetLtxMacro\csname LWR@print@#1\expandafter\endcsname%
|
|
\csname#1\endcsname%
|
|
\csletcs{endLWR@print@#1}{end#1}%
|
|
}{}%
|
|
\DeclareDocumentEnvironment{#1}{}%
|
|
{%
|
|
\@nameuse{LWR@\LWR@formatting @#1}%
|
|
}%
|
|
{%
|
|
\@nameuse{endLWR@\LWR@formatting @#1}%
|
|
}%
|
|
}
|
|
\newcommand*{\LWR@expandableformattedenv}[1]{%
|
|
\ifcsundef{LWR@print@#1}{%
|
|
\expandafter\LetLtxMacro\csname LWR@print@#1\expandafter\endcsname%
|
|
\csname#1\endcsname%
|
|
\csletcs{endLWR@print@#1}{end#1}%
|
|
}{}%
|
|
\DeclareExpandableDocumentEnvironment{#1}{}%
|
|
{%
|
|
\@nameuse{LWR@\LWR@formatting @#1}%
|
|
}%
|
|
{%
|
|
\@nameuse{endLWR@\LWR@formatting @#1}%
|
|
}%
|
|
}
|
|
\end{warpHTML}
|
|
|
|
\begin{warpall}
|
|
\newbool{FormatEPUB}
|
|
\boolfalse{FormatEPUB}
|
|
\newbool{FormatWP}
|
|
\boolfalse{FormatWP}
|
|
\newbool{WPMarkFloats}
|
|
\boolfalse{WPMarkFloats}
|
|
|
|
\newbool{WPMarkMinipages}
|
|
\boolfalse{WPMarkMinipages}
|
|
|
|
\newbool{WPMarkTOC}
|
|
\booltrue{WPMarkTOC}
|
|
|
|
\newbool{WPMarkLOFT}
|
|
\boolfalse{WPMarkLOFT}
|
|
|
|
\newbool{WPMarkMath}
|
|
\boolfalse{WPMarkMath}
|
|
|
|
\newbool{WPTitleHeading}
|
|
\boolfalse{WPTitleHeading}
|
|
|
|
\end{warpall}
|
|
|
|
\begin{warpHTML}
|
|
\AtBeginDocument{
|
|
\ifbool{FormatWP}{
|
|
\@ifundefined{chapter}{
|
|
\ifbool{WPTitleHeading}{% part and section starting at h2
|
|
\renewcommand*{\LWR@tagtitle}{h1}
|
|
\renewcommand*{\LWR@tagtitleend}{/h1}
|
|
\renewcommand*{\LWR@tagpart}{h2}
|
|
\renewcommand*{\LWR@tagpartend}{/h2}
|
|
\renewcommand*{\LWR@tagsection}{h3}
|
|
\renewcommand*{\LWR@tagsectionend}{/h3}
|
|
\renewcommand*{\LWR@tagsubsection}{h4}
|
|
\renewcommand*{\LWR@tagsubsectionend}{/h4}
|
|
\renewcommand*{\LWR@tagsubsubsection}{h5}
|
|
\renewcommand*{\LWR@tagsubsubsectionend}{/h5}
|
|
\renewcommand*{\LWR@tagparagraph}{h6}
|
|
\renewcommand*{\LWR@tagparagraphend}{/h6}
|
|
\renewcommand*{\LWR@tagsubparagraph}{span class="subparagraph"}
|
|
\renewcommand*{\LWR@tagsubparagraphend}{/span}
|
|
}% WPTitleHeading
|
|
{% not WPTitleHeading, part and section starting at h1
|
|
\renewcommand*{\LWR@tagtitle}{div class="title"}
|
|
\renewcommand*{\LWR@tagtitleend}{/div}
|
|
\renewcommand*{\LWR@tagpart}{h1}
|
|
\renewcommand*{\LWR@tagpartend}{/h1}
|
|
\renewcommand*{\LWR@tagsection}{h2}
|
|
\renewcommand*{\LWR@tagsectionend}{/h2}
|
|
\renewcommand*{\LWR@tagsubsection}{h3}
|
|
\renewcommand*{\LWR@tagsubsectionend}{/h3}
|
|
\renewcommand*{\LWR@tagsubsubsection}{h4}
|
|
\renewcommand*{\LWR@tagsubsubsectionend}{/h4}
|
|
\renewcommand*{\LWR@tagparagraph}{h5}
|
|
\renewcommand*{\LWR@tagparagraphend}{/h5}
|
|
\renewcommand*{\LWR@tagsubparagraph}{h6}
|
|
\renewcommand*{\LWR@tagsubparagraphend}{/h6}
|
|
}% not WPTitleHeading
|
|
}% chapter undefined
|
|
{% chapter defined
|
|
\ifbool{WPTitleHeading}{}
|
|
{% not WPTitleHeading, part and chapter starting at h1
|
|
\renewcommand*{\LWR@tagtitle}{div class="title"}
|
|
\renewcommand*{\LWR@tagtitleend}{/div}
|
|
\renewcommand*{\LWR@tagpart}{h1}
|
|
\renewcommand*{\LWR@tagpartend}{/h1}
|
|
\renewcommand*{\LWR@tagchapter}{h2}
|
|
\renewcommand*{\LWR@tagchapterend}{/h2}
|
|
\renewcommand*{\LWR@tagsection}{h3}
|
|
\renewcommand*{\LWR@tagsectionend}{/h3}
|
|
\renewcommand*{\LWR@tagsubsection}{h4}
|
|
\renewcommand*{\LWR@tagsubsectionend}{/h4}
|
|
\renewcommand*{\LWR@tagsubsubsection}{h5}
|
|
\renewcommand*{\LWR@tagsubsubsectionend}{/h5}
|
|
\renewcommand*{\LWR@tagparagraph}{h6}
|
|
\renewcommand*{\LWR@tagparagraphend}{/h6}
|
|
\renewcommand*{\LWR@tagsubparagraph}{span class="subparagraph"}
|
|
\renewcommand*{\LWR@tagsubparagraphend}{/span}
|
|
}% not WPTitleHeading
|
|
}% chapter defined
|
|
}{}% FormatWP
|
|
}% AtBeginDocument
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\chardef\LWR@origpound=`\#
|
|
\let\LWR@origcomma\,
|
|
\let\LWR@origthinspace\thinspace
|
|
\let\LWR@orignegthinspace\negthinspace
|
|
\let\LWR@origtilde~
|
|
\let\LWR@origenskip\enskip
|
|
\let\LWR@origquad\quad
|
|
\let\LWR@origqquad\qquad
|
|
\let\LWR@orighfil\hfil
|
|
\let\LWR@orighss\hss
|
|
\let\LWR@origllap\llap
|
|
\let\LWR@origrlap\rlap
|
|
\let\LWR@orighfilneg\hfilneg
|
|
\let\LWR@orighspace\hspace
|
|
|
|
\let\LWR@origrule\rule
|
|
|
|
\let\LWR@origmedskip\medskip
|
|
\let\LWR@origbigskip\bigskip
|
|
|
|
\let\LWR@origtextellipsis\textellipsis
|
|
\let\LWR@origvdots\vdots
|
|
\let\LWR@orig@textquotedbl\textquotedbl
|
|
|
|
\LetLtxMacro\LWR@origttfamily\ttfamily
|
|
|
|
\LetLtxMacro\LWR@origem\em
|
|
|
|
\LetLtxMacro\LWR@orignormalfont\normalfont
|
|
|
|
\let\LWR@origonecolumn\onecolumn
|
|
|
|
\let\LWR@origsp\sp
|
|
\let\LWR@origsb\sb
|
|
|
|
\LetLtxMacro\LWR@origunderline\underline
|
|
\let\LWR@orignewpage\newpage
|
|
|
|
\let\LWR@origpagestyle\pagestyle
|
|
\let\LWR@origthispagestyle\thispagestyle
|
|
\LetLtxMacro\LWR@origpagenumbering\pagenumbering
|
|
|
|
\let\LWR@orignewline\newline
|
|
|
|
\AtBeginDocument{% in case packages change definition
|
|
\let\LWR@orig@trivlist\@trivlist
|
|
\let\LWR@origtrivlist\trivlist
|
|
\let\LWR@origendtrivlist\endtrivlist
|
|
\LetLtxMacro\LWR@origitem\item
|
|
\LetLtxMacro\LWR@origitemize\itemize
|
|
\LetLtxMacro\LWR@endorigitemize\enditemize
|
|
\LetLtxMacro\LWR@origenumerate\enumerate
|
|
\LetLtxMacro\LWR@endorigenumerate\endenumerate
|
|
\LetLtxMacro\LWR@origdescription\description
|
|
\LetLtxMacro\LWR@endorigdescription\enddescription
|
|
\let\LWR@orig@mklab\@mklab
|
|
\let\LWR@origmakelabel\makelabel
|
|
\let\LWR@orig@donoparitem\@donoparitem
|
|
\LetLtxMacro\LWR@orig@item\@item
|
|
\let\LWR@orig@nbitem\@nbitem
|
|
}
|
|
|
|
\let\LWR@origpar\par
|
|
|
|
\LetLtxMacro\LWR@origfootnote\footnote
|
|
\let\LWR@orig@mpfootnotetext\@mpfootnotetext
|
|
|
|
\AtBeginDocument{% in case packages change definition
|
|
\LetLtxMacro\LWR@orighline\hline%
|
|
\LetLtxMacro\LWR@origcline\cline%
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpHTML}
|
|
\AtBeginDocument{
|
|
\LetLtxMacro\LWR@origtie\t
|
|
\ifPDFTeX% pdflatex or dvi latex
|
|
\LetLtxMacro\LWR@origgraveaccent\`
|
|
\LetLtxMacro\LWR@origacuteaccent\'
|
|
\LetLtxMacro\LWR@origcircumflexaccent\^
|
|
\LetLtxMacro\LWR@origtildeaccent\~
|
|
\LetLtxMacro\LWR@origmacronaccent\=
|
|
\LetLtxMacro\LWR@origbreve\u
|
|
\LetLtxMacro\LWR@origdotaccent\.
|
|
\LetLtxMacro\LWR@origdiaeresisaccent\"
|
|
\LetLtxMacro\LWR@origdoubleacuteaccent\H
|
|
\LetLtxMacro\LWR@origcaronaccent\v
|
|
\LetLtxMacro\LWR@origdotbelowaccent\d
|
|
\LetLtxMacro\LWR@origcedillaaccent\c
|
|
\LetLtxMacro\LWR@origmacronbelowaccent\b
|
|
\renewcommand*{\`}[1]{#1\HTMLunicode{0300}}
|
|
\renewcommand*{\'}[1]{#1\HTMLunicode{0301}}
|
|
\renewcommand*{\^}[1]{#1\HTMLunicode{0302}}
|
|
\renewcommand*{\~}[1]{#1\HTMLunicode{0303}}
|
|
\renewcommand*{\=}[1]{#1\HTMLunicode{0304}}
|
|
\renewcommand*{\u}[1]{#1\HTMLunicode{0306}}
|
|
\renewcommand*{\.}[1]{#1\HTMLunicode{0307}}
|
|
\renewcommand*{\"}[1]{#1\HTMLunicode{0308}}
|
|
\renewcommand*{\H}[1]{#1\HTMLunicode{030B}}
|
|
\renewcommand*{\v}[1]{#1\HTMLunicode{030C}}
|
|
\renewcommand*{\d}[1]{#1\HTMLunicode{0323}}
|
|
\renewcommand*{\c}[1]{#1\HTMLunicode{0327}}
|
|
\renewcommand*{\b}[1]{#1\HTMLunicode{0331}}
|
|
\fi
|
|
\def\LWR@t#1#2{#1\HTMLunicode{0361}#2}
|
|
\renewcommand*{\t}[1]{\LWR@t#1}
|
|
\ifPDFTeX% pdflatex or dvi latex
|
|
\newcommand*{\LWR@restoreorigaccents}{%
|
|
\LetLtxMacro\`\LWR@origgraveaccent%
|
|
\LetLtxMacro\'\LWR@origacuteaccent%
|
|
\LetLtxMacro\^\LWR@origcircumflexaccent%
|
|
\LetLtxMacro\~\LWR@origtildeaccent%
|
|
\LetLtxMacro\=\LWR@origmacronaccent%
|
|
\LetLtxMacro\u\LWR@origbreve%
|
|
\LetLtxMacro\.\LWR@origdotaccent%
|
|
\LetLtxMacro\"\LWR@origdiaeresisaccent%
|
|
\LetLtxMacro\H\LWR@origdoubleacuteaccent%
|
|
\LetLtxMacro\v\LWR@origcaronaccent%
|
|
\LetLtxMacro\t\LWR@origtie%
|
|
\LetLtxMacro\d\LWR@origdotbelowaccent%
|
|
\LetLtxMacro\c\LWR@origcedillaaccent%
|
|
\LetLtxMacro\b\LWR@origmacronbelowaccent%
|
|
}%
|
|
\else% XeLaTeX, LuaLaTeX:
|
|
\newcommand*{\LWR@restoreorigaccents}{%
|
|
\LetLtxMacro\t\LWR@origtie%
|
|
}%
|
|
\fi%
|
|
}% AtBeginDocument
|
|
\end{warpHTML}
|
|
|
|
|
|
|
|
|
|
\LWR@excludecomment{LWRwriteconf}{writeconf}
|
|
\begin{warpprint}
|
|
\fullexpandarg%
|
|
\IfSubStr*{\jobname}{-pstool}
|
|
{
|
|
\PackageInfo{lwarp}{%
|
|
Jobname with -pstool is found.\MessageBreak
|
|
Not generating lwarp configuration files,%
|
|
}
|
|
}
|
|
{
|
|
\PackageInfo{lwarp}{Generating lwarp configuration files,}%
|
|
\LWR@includecomment{LWRwriteconf}{writeconf}
|
|
}
|
|
\end{warpprint}
|
|
|
|
\begin{LWRwriteconf}
|
|
\immediate\openout\LWR@quickfile=\jobname_html.tex
|
|
\immediate\write\LWR@quickfile{%
|
|
\detokenize{\PassOptionsToPackage}%
|
|
{warpHTML,BaseJobname=\jobname}{lwarp}%
|
|
}
|
|
\immediate\write\LWR@quickfile{%
|
|
\detokenize{\input}\string{\jobname.tex\string }%
|
|
}
|
|
\immediate\closeout\LWR@quickfile
|
|
\end{LWRwriteconf}
|
|
|
|
|
|
\begin{LWRwriteconf}
|
|
|
|
\newcommand*{\LWR@lwarpconfversion}{2}% also in lwarpmk.lua
|
|
\ifshellescape
|
|
\def\LWR@shellescapecmd{--shell-escape }
|
|
\else
|
|
\def\LWR@shellescapecmd{}
|
|
\fi
|
|
\newcommand*{\LWR@compilecmd}[2]{%
|
|
#1 \LWR@shellescapecmd \jobname#2%
|
|
}
|
|
\newcommand*{\LWR@addcompilecmd}[2]{%
|
|
\LWRopseq
|
|
#1 \jobname#2%
|
|
}
|
|
\newcommand*{\LWR@unknownengine}{%
|
|
\PackageError{lwarp}%
|
|
{Unknown LaTeX engine}%
|
|
{%
|
|
Lwarp only knows about pdflatex, dvi latex,
|
|
xelatex, lualatex, and upLateX.%
|
|
}%
|
|
}
|
|
\newcommand*{\LWR@latexmkvar}[2]{%
|
|
-e
|
|
\LWRopquote%
|
|
\LWRdollar #1=q/#2/%
|
|
\LWRopquote
|
|
}
|
|
\newcommand*{\LWR@latexmkcmd}[1]{%
|
|
latexmk \space \LWR@shellescapecmd \space #1 \space
|
|
-recorder \space
|
|
\LWR@latexmkvar{makeindex}{\LWR@LatexmkIndexCmd}%
|
|
}
|
|
\newcommand*{\LWR@latexmkdvipdfm}[1]{%
|
|
-pdfdvi \space
|
|
\LWR@latexmkvar{dvipdf}{%
|
|
#1
|
|
\@percentchar O
|
|
-o \@percentchar D
|
|
\@percentchar S%
|
|
}
|
|
}
|
|
\newcommand*{\LWR@compileuplatex}{
|
|
\def\LWR@tempprintlatexcmd{%
|
|
\LWR@compilecmd{uplatex}{}
|
|
\LWR@addcompilecmd{dvipdfmx}{}
|
|
}
|
|
\def\LWR@tempHTMLlatexcmd{%
|
|
\LWR@compilecmd{uplatex}{_html}
|
|
\LWR@addcompilecmd{dvipdfmx}{_html}
|
|
}
|
|
}
|
|
\ifbool{LWR@latexmk}{
|
|
\ifpdf
|
|
\ifPDFTeX
|
|
\def\LWR@latexcmd{\LWR@latexmkcmd{-pdf -dvi- -ps-}}
|
|
\else
|
|
\ifLuaTeX
|
|
\def\LWR@latexcmd{\LWR@latexmkcmd{-lualatex}}
|
|
\else
|
|
\LWR@unknownengine
|
|
\fi
|
|
\fi
|
|
\else% \ifpdf
|
|
\ifXeTeX
|
|
\def\LWR@latexcmd{\LWR@latexmkcmd{-xelatex}}
|
|
\else% \ifXeTeX
|
|
\ifbool{LWR@dvipdfm}{
|
|
\def\LWR@latexcmd{%
|
|
\LWR@latexmkcmd{%
|
|
\LWR@latexmkdvipdfm{dvipdfm}%
|
|
}
|
|
}
|
|
}{
|
|
\ifbool{LWR@dvipdfmx}{
|
|
\def\LWR@latexcmd{%
|
|
\LWR@latexmkcmd{%
|
|
\LWR@latexmkdvipdfm{dvipdfmx}%
|
|
}
|
|
}
|
|
}{
|
|
\def\LWR@latexcmd{\LWR@latexmkcmd{-pdfps}}
|
|
}
|
|
}
|
|
\fi
|
|
\fi% \ifpdf
|
|
\def\LWR@tempprintlatexcmd{\LWR@latexcmd \space \jobname}
|
|
\def\LWR@tempHTMLlatexcmd{\LWR@latexcmd \space \jobname_html}
|
|
}% latexmk
|
|
{% not latexmk
|
|
\ifpdf
|
|
\ifPDFTeX
|
|
\def\LWR@tempprintlatexcmd{\LWR@compilecmd{pdflatex}{}}
|
|
\def\LWR@tempHTMLlatexcmd{\LWR@compilecmd{pdflatex}{_html}}
|
|
\else
|
|
\ifLuaTeX
|
|
\def\LWR@tempprintlatexcmd{\LWR@compilecmd{lualatex}{}}
|
|
\def\LWR@tempHTMLlatexcmd{\LWR@compilecmd{lualatex}{_html}}
|
|
\else
|
|
\LWR@unknownengine
|
|
\fi
|
|
\fi
|
|
\else% \ifpdf
|
|
\ifXeTeX
|
|
\def\LWR@tempprintlatexcmd{\LWR@compilecmd{xelatex}{}}
|
|
\def\LWR@tempHTMLlatexcmd{\LWR@compilecmd{xelatex}{_html}}
|
|
\else
|
|
\ifbool{LWR@dvipdfm}{
|
|
\def\LWR@tempprintlatexcmd{%
|
|
\LWR@compilecmd{latex}{}
|
|
\LWR@addcompilecmd{dvipdfm}{}
|
|
}
|
|
\def\LWR@tempHTMLlatexcmd{%
|
|
\LWR@compilecmd{latex}{_html}
|
|
\LWR@addcompilecmd{dvipdfm}{_html}
|
|
}
|
|
}{
|
|
\ifbool{LWR@dvipdfmx}{
|
|
\def\LWR@tempprintlatexcmd{%
|
|
\LWR@compilecmd{latex}{}
|
|
\LWR@addcompilecmd{dvipdfmx}{}
|
|
}
|
|
\def\LWR@tempHTMLlatexcmd{%
|
|
\LWR@compilecmd{latex}{_html}
|
|
\LWR@addcompilecmd{dvipdfmx}{_html}
|
|
}
|
|
}{% dvips
|
|
\def\LWR@tempprintlatexcmd{%
|
|
\LWR@compilecmd{latex}{}
|
|
\LWR@addcompilecmd{dvips}{}
|
|
\LWR@addcompilecmd{ps2pdf}{}.ps
|
|
}
|
|
\def\LWR@tempHTMLlatexcmd{%
|
|
\LWR@compilecmd{latex}{_html}
|
|
\LWR@addcompilecmd{dvips}{_html}
|
|
\LWR@addcompilecmd{ps2pdf}{_html}.ps
|
|
}
|
|
}
|
|
}
|
|
\fi% \ifXeTeX
|
|
\fi% \ifpdf
|
|
}% latexmk
|
|
\@ifclassloaded{ujarticle}{\LWR@compileuplatex}{}
|
|
\@ifclassloaded{ujbook}{\LWR@compileuplatex}{}
|
|
\@ifclassloaded{ujreport}{\LWR@compileuplatex}{}
|
|
\@ifclassloaded{utarticle}{\LWR@compileuplatex}{}
|
|
\@ifclassloaded{utbook}{\LWR@compileuplatex}{}
|
|
\@ifclassloaded{utreport}{\LWR@compileuplatex}{}
|
|
\ifdefempty{\LWR@PrintLatexCmd}{
|
|
\def\LWR@PrintLatexCmd{\LWR@tempprintlatexcmd}
|
|
}{}
|
|
\ifdefempty{\LWR@HTMLLatexCmd}{
|
|
\def\LWR@HTMLLatexCmd{\LWR@tempHTMLlatexcmd}
|
|
}{}
|
|
\newcommand{\LWR@writeconf}[1]{
|
|
\ifcsdef{LWR@quickfile}{}{\newwrite{\LWR@quickfile}}
|
|
\immediate\openout\LWR@quickfile=#1
|
|
\immediate\write\LWR@quickfile{confversion = [[\LWR@lwarpconfversion]]}
|
|
\ifbool{usingOSWindows}{
|
|
\immediate\write\LWR@quickfile{opsystem = [[Windows]]}
|
|
}{
|
|
\immediate\write\LWR@quickfile{opsystem = [[Unix]]}
|
|
}
|
|
\immediate\write\LWR@quickfile{sourcename = [[\jobname]]}
|
|
\immediate\write\LWR@quickfile{homehtmlfilename = [[\HomeHTMLFilename]]}
|
|
\immediate\write\LWR@quickfile{htmlfilename = [[\HTMLFilename]]}
|
|
\immediate\write\LWR@quickfile{imagesdirectory = [[\LWR@ImagesDirectory]]}
|
|
\immediate\write\LWR@quickfile{imagesname = [[\LWR@ImagesName]]}
|
|
\immediate\write\LWR@quickfile{latexmk = [[\ifbool{LWR@latexmk}{true}{false}]]}
|
|
\immediate\write\LWR@quickfile{printlatexcmd = [[\LWR@PrintLatexCmd]]}
|
|
\immediate\write\LWR@quickfile{HTMLlatexcmd = [[\LWR@HTMLLatexCmd]]}
|
|
\immediate\write\LWR@quickfile{printindexcmd = [[\LWR@PrintIndexCmd]]}
|
|
\immediate\write\LWR@quickfile{HTMLindexcmd = [[\LWR@HTMLIndexCmd]]}
|
|
\immediate\write\LWR@quickfile{latexmkindexcmd = [[\LWR@LatexmkIndexCmd]]}
|
|
\immediate\write\LWR@quickfile{glossarycmd = [[\LWR@GlossaryCmd]]}
|
|
\immediate\write\LWR@quickfile{pdftotextenc = [[\LWR@pdftotextEnc]]}
|
|
\immediate\closeout\LWR@quickfile
|
|
}
|
|
|
|
|
|
\end{LWRwriteconf}
|
|
|
|
\begin{LWRwriteconf}
|
|
|
|
\AtBeginDocument{\LWR@writeconf{lwarpmk.conf}}
|
|
|
|
\end{LWRwriteconf}
|
|
|
|
\begin{LWRwriteconf}
|
|
|
|
\AtBeginDocument{\LWR@writeconf{\jobname.lwarpmkconf}}
|
|
|
|
\end{LWRwriteconf}
|
|
|
|
|
|
\begin{LWRwriteconf}
|
|
\begin{filecontents*}[overwrite]{lwarp.css}
|
|
/*
|
|
CSS stylesheet for the LaTeX Lwarp package
|
|
Copyright 2016-2020 Brian Dunn — BD Tech Concepts LLC
|
|
*/
|
|
|
|
/* a fix for older browsers: */
|
|
header, section, footer, aside, nav, main,
|
|
article, figure { display: block; }
|
|
|
|
A:link {color:#000080 ; text-decoration: none ; }
|
|
A:visited {color:#800000 ; }
|
|
A:hover {color:#000080 ; text-decoration: underline ;}
|
|
A:active {color:#800000 ; }
|
|
|
|
a.tocbook {display: inline-block ; margin-left: 0em ;
|
|
font-weight: bold ; margin-top: 1ex ; margin-bottom: 1ex ; }
|
|
a.tocpart {display: inline-block ; margin-left: 0em ;
|
|
font-weight: bold ;}
|
|
a.tocchapter {display: inline-block ; margin-left: 0em ;
|
|
font-weight: bold ;}
|
|
a.tocsection {display: inline-block ; margin-left: 1em ;
|
|
text-indent: -.5em ; font-weight: bold ; }
|
|
a.tocsubsection {display: inline-block ; margin-left: 2em ;
|
|
text-indent: -.5em ; }
|
|
a.tocsubsubsection {display: inline-block ; margin-left: 3em ;
|
|
text-indent: -.5em ; }
|
|
a.tocparagraph {display: inline-block ; margin-left: 4em ;
|
|
text-indent: -.5em ; }
|
|
a.tocsubparagraph {display: inline-block ; margin-left: 5em ;
|
|
text-indent: -.5em ; }
|
|
a.tocfigure {margin-left: 0em}
|
|
a.tocsubfigure {margin-left: 2em}
|
|
a.toctable {margin-left: 0em}
|
|
a.tocsubtable {margin-left: 2em}
|
|
a.toctheorem {margin-left: 0em}
|
|
a.toclstlisting {margin-left: 0em}
|
|
|
|
body {
|
|
font-family: "DejaVu Serif", "Bitstream Vera Serif",
|
|
"Lucida Bright", Georgia, serif;
|
|
background: #FAF7F4 ;
|
|
color: black ;
|
|
margin:0em ;
|
|
padding:0em ;
|
|
font-size: 100% ;
|
|
line-height: 1.2 ;
|
|
}
|
|
|
|
p {margin: 1.5ex 0em 1.5ex 0em ;}
|
|
table p {margin: .5ex 0em .5ex 0em ;}
|
|
|
|
/* Holds a section number */
|
|
span.sectionnumber { margin-right: 0em }
|
|
|
|
/* Inserted in front of index lines */
|
|
span.indexitem {margin-left: 0em}
|
|
span.indexsubitem {margin-left: 2em}
|
|
span.indexsubsubitem {margin-left: 4em}
|
|
div.indexheading {margin-top: 2ex ; font-weight: bold}
|
|
|
|
div.hidden, span.hidden { display: none ; }
|
|
|
|
kbd, span.texttt {
|
|
font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console",
|
|
"Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono",
|
|
"Courier New", monospace;
|
|
font-size: 100% ;
|
|
}
|
|
|
|
pre { padding: 3pt ; }
|
|
|
|
span.strong, span.textbf, div.strong, div.textbf { font-weight: bold; }
|
|
|
|
span.textit, div.textit { font-style: italic; }
|
|
|
|
span.textmd, div.textmd { font-weight: normal; }
|
|
|
|
span.textup, div.textup {
|
|
font-style: normal;
|
|
font-variant: normal;
|
|
font-variant-numeric: normal ;
|
|
}
|
|
|
|
span.textsc, div.textsc {
|
|
font-variant: small-caps;
|
|
font-variant-numeric: oldstyle-nums ;
|
|
}
|
|
|
|
span.textulc, div.textulc {
|
|
font-variant: normal ;
|
|
font-variant-numeric: normal ;
|
|
}
|
|
|
|
span.textsl, div.textsl { font-style: oblique; }
|
|
|
|
span.textrm, div.textrm {
|
|
font-family: "DejaVu Serif", "Bitstream Vera Serif",
|
|
"Lucida Bright", Georgia, serif;
|
|
}
|
|
|
|
span.textsf, div.textsf {
|
|
font-family: "DejaVu Sans", "Bitstream Vera Sans",
|
|
Geneva, Verdana, sans-serif ;
|
|
}
|
|
|
|
/* nfssext-cfr lining figures */
|
|
span.textln, div.textln {
|
|
font-variant-numeric: lining-nums ;
|
|
}
|
|
|
|
/* nfssext-cfr proportional figures */
|
|
span.textp, div.textp {
|
|
font-variant-numeric: proportional-nums ;
|
|
}
|
|
|
|
/* nfssext-cfr tabular figures */
|
|
span.textt, div.textt {
|
|
font-variant-numeric: tabular-nums ;
|
|
}
|
|
|
|
/* nfssext-cfr font weights */
|
|
span.textdb, div.textdb {
|
|
font-weight: 500 ;
|
|
}
|
|
|
|
span.textsb, div.textsb {
|
|
font-weight: 600 ;
|
|
}
|
|
|
|
span.texteb, div.texteb {
|
|
font-weight: 800 ;
|
|
}
|
|
|
|
span.textub, div.textub {
|
|
font-weight: 900 ;
|
|
}
|
|
|
|
span.textlg, div.textlg {
|
|
font-weight: 300 ;
|
|
}
|
|
|
|
span.textel, div.textel {
|
|
font-weight: 200 ;
|
|
}
|
|
|
|
span.textul, div.textul {
|
|
font-weight: 100 ;
|
|
}
|
|
|
|
span.textcircled { border: 1px solid black ; border-radius: 1ex ; }
|
|
|
|
span.underline {
|
|
text-decoration: underline ;
|
|
text-decoration-skip: auto ;
|
|
}
|
|
|
|
span.overline {
|
|
text-decoration: overline ;
|
|
text-decoration-skip: auto ;
|
|
}
|
|
|
|
div.hrule { border-top: 1px solid silver }
|
|
|
|
/* for vertical text: */
|
|
div.verticalrl { writing-mode: vertical-rl }
|
|
div.horizontaltb { writing-mode: horizontal-tb }
|
|
|
|
/* for diagbox */
|
|
div.diagboxtitleN { border-bottom: 1px solid gray }
|
|
div.diagboxtitleS { border-top: 1px solid gray }
|
|
|
|
div.diagboxE {
|
|
padding-left: 2em ;
|
|
text-align: right ;
|
|
}
|
|
|
|
div.diagboxW {
|
|
padding-right: 2em ;
|
|
text-align: left ;
|
|
}
|
|
|
|
/* For realscripts */
|
|
.supsubscript {
|
|
display: inline-block;
|
|
text-align:left ;
|
|
}
|
|
|
|
.supsubscript sup,
|
|
.supsubscript sub {
|
|
position: relative;
|
|
display: block;
|
|
font-size: .7em;
|
|
line-height: 1;
|
|
}
|
|
|
|
.supsubscript sup {
|
|
top: .3em;
|
|
}
|
|
|
|
.supsubscript sub {
|
|
top: .3em;
|
|
}
|
|
|
|
div.attribution p {
|
|
text-align: right ;
|
|
font-size: 80%
|
|
}
|
|
|
|
span.poemtitle {
|
|
font-size: 120% ; font-weight: bold;
|
|
}
|
|
|
|
pre.tabbing {
|
|
font-family: "Linux Libertine Mono O", "Lucida Console",
|
|
"Droid Sans Mono", "DejaVu Mono", "Bitstream Vera Mono",
|
|
"Liberation Mono", "FreeMono", "Andale Mono",
|
|
"Nimbus Mono L", "Courier New", monospace;
|
|
}
|
|
|
|
blockquote {
|
|
display: block ;
|
|
margin-left: 2em ;
|
|
margin-right: 2em ;
|
|
}
|
|
|
|
/* quotchap is for the quotchap package */
|
|
div.quotchap {
|
|
display: block ;
|
|
font-style: oblique ;
|
|
overflow-x: auto ;
|
|
margin-left: 2em ;
|
|
margin-right: 2em ;
|
|
}
|
|
|
|
blockquote p, div.quotchap p {
|
|
line-height: 1.5;
|
|
text-align: left ;
|
|
font-size: .85em ;
|
|
}
|
|
|
|
/* qauthor is for the quotchap package */
|
|
div.qauthor {
|
|
display: block ;
|
|
text-align: right ;
|
|
margin-left: auto ;
|
|
margin-right: 2em ;
|
|
font-size: 80% ;
|
|
font-variant: small-caps;
|
|
}
|
|
|
|
div.qauthor p {
|
|
text-align: right ;
|
|
}
|
|
|
|
div.epigraph, div.dictum {
|
|
line-height: 1.2;
|
|
text-align: left ;
|
|
padding: 3ex 1em 0ex 1em ;
|
|
/* margin: 3ex auto 3ex auto ; */ /* Epigraph centered */
|
|
margin: 3ex 1em 3ex auto ; /* Epigraph to the right */
|
|
/* margin: 3ex 1em 3ex 1em ; */ /* Epigraph to the left */
|
|
font-size: .85em ;
|
|
max-width: 27em ;
|
|
}
|
|
|
|
div.epigraphsource, div.dictumauthor {
|
|
text-align:right ;
|
|
margin-left:auto ;
|
|
/* max-width: 50% ; */
|
|
border-top: 1px solid #A0A0A0 ;
|
|
padding-bottom: 3ex ;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
div.epigraph p, div.dictum p { padding: .5ex ; margin: 0ex ;}
|
|
div.epigraphsource p, div.dictumauthor p { padding: .5ex 0ex 0ex 0ex ; margin: 0ex ;}
|
|
div.dictumauthor { font-style:italic }
|
|
|
|
/* copyrightbox package */
|
|
div.copyrightbox { margin: .5ex .5em }
|
|
div.copyrightbox p {margin: 0px .5em ; padding: 0px}
|
|
div.copyrightboxnote {text-align: left ; font-size: 60%}
|
|
|
|
/* lettrine package: */
|
|
span.lettrine { font-size: 4ex ; float: left ; }
|
|
span.lettrinetext { font-variant: small-caps ; }
|
|
|
|
/* ulem, soul, umoline packages: */
|
|
span.uline {
|
|
text-decoration: underline ;
|
|
text-decoration-skip: auto ;
|
|
}
|
|
|
|
span.uuline {
|
|
text-decoration: underline ;
|
|
text-decoration-skip: auto ;
|
|
text-decoration-style: double ;
|
|
}
|
|
|
|
span.uwave {
|
|
text-decoration: underline ;
|
|
text-decoration-skip: auto ;
|
|
text-decoration-style: wavy ;
|
|
}
|
|
|
|
span.sout {
|
|
text-decoration: line-through ;
|
|
}
|
|
|
|
span.oline {
|
|
text-decoration: overline ;
|
|
text-decoration-skip: auto ;
|
|
}
|
|
|
|
span.xout {
|
|
text-decoration: line-through ;
|
|
}
|
|
|
|
span.dashuline {
|
|
text-decoration: underline ;
|
|
text-decoration-skip: auto ;
|
|
text-decoration-style: dashed ;
|
|
}
|
|
|
|
span.dotuline {
|
|
text-decoration: underline ;
|
|
text-decoration-skip: auto ;
|
|
text-decoration-style: dotted ;
|
|
}
|
|
|
|
span.letterspacing { letter-spacing: .2ex ; }
|
|
|
|
span.capsspacing {
|
|
font-variant: small-caps ;
|
|
letter-spacing: .1ex ;
|
|
}
|
|
|
|
span.highlight { background: #F8E800 ; }
|
|
|
|
html body {
|
|
margin: 0 ;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
body div {
|
|
margin: 0ex;
|
|
}
|
|
|
|
div.book, h1, h2, h3, h4, h5, h6, span.paragraph, span.subparagraph
|
|
{
|
|
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
|
|
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
|
|
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
|
|
"Times New Roman", serif;
|
|
font-style: normal ;
|
|
font-weight: bold ;
|
|
text-align: left ;
|
|
}
|
|
|
|
h1 { /* title of the entire website, used on each page */
|
|
text-align: center ;
|
|
font-size: 2.5em ;
|
|
padding: .4ex 0em 0ex 0em ;
|
|
}
|
|
|
|
div.book {
|
|
text-align: center ;
|
|
font-size: 2.325em ;
|
|
padding: .4ex 0em 0ex 0em ;
|
|
}
|
|
|
|
h2 { font-size: 2.25em }
|
|
h3 { font-size: 2em }
|
|
h4 { font-size: 1.75em }
|
|
h5 { font-size: 1.5em }
|
|
h6 { font-size: 1.25em }
|
|
span.paragraph {font-size: 1em ; font-variant: normal ;
|
|
margin-right: 1em ; }
|
|
span.subparagraph {font-size: 1em ; font-variant: normal ;
|
|
margin-right: 1em ; }
|
|
|
|
div.minisec {
|
|
font-family: "DejaVu Sans", "Bitstream Vera Sans",
|
|
Geneva, Verdana, sans-serif ;
|
|
font-style: normal ;
|
|
font-weight: bold ;
|
|
text-align: left ;
|
|
}
|
|
|
|
h1 {
|
|
margin: 0ex 0em 0ex 0em ;
|
|
line-height: 1.3;
|
|
text-align: center ;
|
|
}
|
|
|
|
h2 {
|
|
margin: 1ex 0em 1ex 0em ;
|
|
line-height: 1.3;
|
|
text-align: center ;
|
|
}
|
|
|
|
h3 {
|
|
margin: 3ex 0em 1ex 0em ;
|
|
line-height: 1.3;
|
|
}
|
|
|
|
h4 {
|
|
margin: 3ex 0em 1ex 0em ;
|
|
line-height: 1.3;
|
|
}
|
|
|
|
h5 {
|
|
margin: 3ex 0em 1ex 0em ;
|
|
line-height: 1.3;
|
|
}
|
|
|
|
h6 {
|
|
margin: 3ex 0em 1ex 0em ;
|
|
line-height: 1.3;
|
|
}
|
|
|
|
div.titlepage {
|
|
text-align: center ;
|
|
}
|
|
|
|
.footnotes {
|
|
text-align: left ;
|
|
font-size: .85em ;
|
|
margin: 3ex 2em 0ex 2em ;
|
|
border-top: 1px solid silver ;
|
|
}
|
|
|
|
.marginpar, .marginparblock {
|
|
max-width: 50%;
|
|
float: right ;
|
|
clear: both ;
|
|
text-align: left ;
|
|
margin: 1ex 0.5em 1ex 1em ;
|
|
padding: 1ex 0.5em 1ex 0.5em ;
|
|
font-size: 85% ;
|
|
border-top: 1px solid silver ;
|
|
border-bottom: 1px solid silver ;
|
|
overflow-x: auto ;
|
|
}
|
|
|
|
.marginpar br { margin-bottom: 2ex ; }
|
|
|
|
div.marginblock, div.marginparblock {
|
|
max-width:50%;
|
|
min-width: 10em; /* room for caption */
|
|
float:right;
|
|
text-align:left;
|
|
margin: 1ex 0.5em 1ex 1em ;
|
|
padding: 1ex 0.5em 1ex 0.5em ;
|
|
overflow-x: auto;
|
|
}
|
|
|
|
div.marginblock div.minipage,
|
|
div.marginparblock div.minipage {
|
|
display: inline-block ;
|
|
margin: 0pt auto 0pt auto ;
|
|
}
|
|
|
|
div.marginblock div.minipage p ,
|
|
div.marginparblock div.minipage p
|
|
{ font-size: 85%}
|
|
|
|
div.marginblock br ,
|
|
div.marginparblock br
|
|
{ margin-bottom: 2ex ; }
|
|
|
|
div.bodycontainer {
|
|
float: left ;
|
|
width: 80% ;
|
|
}
|
|
|
|
div.bodywithoutsidetoc div.bodycontainer {
|
|
float: none ;
|
|
width: 100% ;
|
|
}
|
|
|
|
section.textbody div.footnotes{
|
|
margin: 3ex 2em .5ex 2em ;
|
|
border-bottom: 2px solid silver ;
|
|
}
|
|
|
|
.footnoteheader {
|
|
border-top: 2px solid silver ;
|
|
margin-top: 3ex ;
|
|
padding-top: 1ex ;
|
|
font-weight: bold ;
|
|
}
|
|
|
|
.mpfootnotes {
|
|
text-align: left ;
|
|
font-size: .85em ;
|
|
margin-left: 1em ;
|
|
border-top: 1px solid silver ;
|
|
}
|
|
|
|
/* Remove footnote top border in the title page. */
|
|
div.titlepage div.mpfootnotes {
|
|
border-top: none ;
|
|
}
|
|
|
|
ul, ol {
|
|
margin: 1ex 1em 1ex 0em;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
body dir, body menu {
|
|
margin: 3ex 1em 3ex 0em;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
li { margin: 0ex 0em 1ex 0em; }
|
|
|
|
html {
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
.programlisting {
|
|
font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console",
|
|
"Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono",
|
|
"Courier New", monospace;
|
|
margin: 1ex 0ex 1ex 0ex ;
|
|
padding: .5ex 0pt .5ex 0pt ;
|
|
overflow-x: auto;
|
|
}
|
|
|
|
section.textbody>pre.programlisting {
|
|
border-top: 1px solid silver ;
|
|
border-bottom: 1px solid silver ;
|
|
}
|
|
|
|
div.displaymath {
|
|
text-align: center ;
|
|
}
|
|
|
|
div.displaymathnumbered {
|
|
text-align: right ;
|
|
margin-left: 5% ;
|
|
margin-right: 5% ;
|
|
min-width: 2.5in ;
|
|
}
|
|
|
|
@media all and (min-width: 400px) {
|
|
div.displaymathnumbered {
|
|
margin-left: 10% ;
|
|
margin-right: 10% ;
|
|
}
|
|
}
|
|
|
|
@media all and (min-width: 800px) {
|
|
div.displaymathnumbered {
|
|
margin-right: 20% ;
|
|
}
|
|
}
|
|
|
|
@media all and (min-width: 1200px) {
|
|
div.displaymathnumbered {
|
|
margin-right: 30% ;
|
|
}
|
|
}
|
|
|
|
.inlineprogramlisting {
|
|
font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console",
|
|
"Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono",
|
|
"Courier New", monospace;
|
|
overflow-x: auto;
|
|
}
|
|
|
|
span.listinglabel {
|
|
display: inline-block ;
|
|
font-size: 70% ;
|
|
width: 4em ;
|
|
text-align: right ;
|
|
margin-right: 2em ;
|
|
}
|
|
|
|
div.abstract {
|
|
margin: 2em 5% 2em 5% ;
|
|
padding: 1ex 1em 1ex 1em ;
|
|
/* font-weight: bold ; */
|
|
font-size: 90% ;
|
|
text-align: left ;
|
|
}
|
|
|
|
div.abstract dl {line-height:1.5;}
|
|
div.abstract dt {color:#304070;}
|
|
|
|
div.abstracttitle{
|
|
font-family: "URW Classico", Optima, "Linux Biolinum O",
|
|
"Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L",
|
|
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
|
|
font-weight:bold;
|
|
font-size:1.25em;
|
|
text-align: center ;
|
|
}
|
|
|
|
span.abstractrunintitle{
|
|
font-family: "URW Classico", Optima, "Linux Biolinum O",
|
|
"Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L",
|
|
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
|
|
font-weight:bold;
|
|
}
|
|
|
|
.verbatim {
|
|
overflow-x: auto ;
|
|
}
|
|
|
|
.alltt {
|
|
overflow-x: auto ;
|
|
}
|
|
|
|
.bverbatim {
|
|
margin: 1ex 0pt 1ex 0pt ;
|
|
padding: .5ex 0pt .5ex 0pt ;
|
|
overflow-x: auto ;
|
|
}
|
|
|
|
.lverbatim {
|
|
margin: 1ex 0pt 1ex 0pt ;
|
|
padding: .5ex 0pt .5ex 0pt ;
|
|
overflow-x: auto ;
|
|
}
|
|
|
|
.fancyvrb {
|
|
font-size:.85em ;
|
|
margin: 3ex 0pt 3ex 0pt
|
|
}
|
|
|
|
.fancyvrblabel {
|
|
font-size: .85em ;
|
|
text-align: center ;
|
|
font-weight: bold ;
|
|
margin-top: 1ex ;
|
|
margin-bottom: 1ex ;
|
|
}
|
|
|
|
.verse {
|
|
font-family: "Linux Libertine Mono O", "Lucida Console",
|
|
"Droid Sans Mono", "DejaVu Mono", "Bitstream Vera Mono",
|
|
"Liberation Mono", "FreeMono", "Andale Mono",
|
|
"Nimbus Mono L", "Courier New", monospace;
|
|
margin-left: 1em ;
|
|
}
|
|
|
|
div.singlespace { line-height: 1.2 ; }
|
|
div.onehalfspace { line-height: 1.5 ; }
|
|
div.doublespace { line-height: 2 ; }
|
|
|
|
/* Word processor format output: */
|
|
div.wpfigure { border: 1px solid red ; margin: .5ex ; padding: .5ex ; }
|
|
div.wptable { border: 1px solid blue ; margin: .5ex ; padding: .5ex ; }
|
|
div.wpminipage { border: 1px solid green ; margin: .5ex ; padding: .5ex ;}
|
|
|
|
/* Minipage environments, vertically aligned to top, center, bottom: */
|
|
.minipage, .fminipage, .fcolorminipage {
|
|
/* display: inline-block ; */
|
|
/* Mini pages which follow each other will be tiled. */
|
|
text-align:left;
|
|
margin: .25em .25em .25em .25em;
|
|
padding: .25em .25em .25em .25em;
|
|
display: inline-flex;
|
|
flex-direction: column ;
|
|
overflow: auto;
|
|
}
|
|
|
|
.inlineminipage {
|
|
display: inline-block ;
|
|
text-align: left
|
|
}
|
|
|
|
/* Paragraphs in the flexbox did not collapse their margins. */
|
|
/* Have not yet researched this. */
|
|
.minipage p {margin: .75ex 0em .75ex 0em ;}
|
|
|
|
.fboxBlock .minipage, .colorbox .minipage, .colorboxBlock .minipage,
|
|
.fcolorbox .minipage, .fcolorboxBlock .minipage
|
|
{border: none ; background: none;}
|
|
|
|
.fbox, .fboxBlock { border: 1px solid black ; }
|
|
|
|
.fbox, .fboxBlock, .fcolorbox, .fcolorboxBlock, .colorbox, .colorboxBlock,
|
|
.fminipage, .fcolorminipage
|
|
{display: inline-block}
|
|
|
|
.shadowbox, .shabox {
|
|
border: 1px solid black;
|
|
box-shadow: 3px 3px 3px #808080 ;
|
|
border-radius: 0px ;
|
|
padding: .4ex .3em .4ex .3em ;
|
|
margin: 0pt .3ex 0pt .3ex ;
|
|
display: inline-block ;
|
|
}
|
|
|
|
.doublebox {
|
|
border: 3px double black;
|
|
border-radius: 0px ;
|
|
padding: .4ex .3em .4ex .3em ;
|
|
margin: 0pt .3ex 0pt .3ex ;
|
|
display: inline-block ;
|
|
}
|
|
|
|
.ovalbox, .Ovalbox {
|
|
border: 1px solid black;
|
|
border-radius: 1ex ;
|
|
padding: .4ex .3em .4ex .3em ;
|
|
margin: 0pt .3ex 0pt .3ex ;
|
|
display: inline-block ;
|
|
}
|
|
|
|
.Ovalbox { border-width: 2px ; }
|
|
|
|
.framebox {
|
|
border: 1px solid black;
|
|
border-radius: 0px ;
|
|
padding: .3ex .2em 0ex .2em ;
|
|
margin: 0pt .1ex 0pt .1ex ;
|
|
display: inline-block ;
|
|
}
|
|
|
|
/* mdframed, tcolorbox packages */
|
|
.mdframed, .tcolorbox {
|
|
padding: 0ex ;
|
|
margin: 2ex 0em 2ex 0em ;
|
|
border: 1px solid black ;
|
|
}
|
|
|
|
.tcolorbox {
|
|
border-radius: 10pt ;
|
|
margin: 2ex 1em 2ex 1em ;
|
|
}
|
|
|
|
.mdframed p, .tcolorbox p { padding: 0ex .5em 0ex .5em ; }
|
|
|
|
.mdframed dl, .tcolorbox dl { padding: 1ex .5em 0ex .5em ; }
|
|
|
|
.mdframedtitle, .tcolorboxtitle {
|
|
padding: .5ex 0pt 0pt 0pt ;
|
|
border-radius: 10pt 10pt 0pt 0pt ;
|
|
display: block ;
|
|
margin-bottom: 1ex ;
|
|
border-bottom: 1px solid silver ;
|
|
}
|
|
|
|
.tcolorboxsubtitle .tcolorbox {
|
|
margin: 2ex 0em 2ex 0em ;
|
|
border-radius: 0pt ;
|
|
}
|
|
|
|
.mdframedsubtitle {
|
|
display: block ;
|
|
}
|
|
|
|
.mdframedsubsubtitle {
|
|
display: block ;
|
|
}
|
|
|
|
.mdtheorem {
|
|
padding: 0ex .5em 0ex .5em ;
|
|
margin: 3ex 5% 3ex 5% ;
|
|
}
|
|
|
|
/* framed package */
|
|
.framed, pre.boxedverbatim, fcolorbox {
|
|
margin: 3ex 0em 3ex 0em ;
|
|
border: 1px solid black;
|
|
border-radius: 0px ;
|
|
padding: .3ex 1em 0ex 1em ;
|
|
display: block ;
|
|
}
|
|
|
|
.shaded {
|
|
margin: 3ex 0em 3ex 0em ;
|
|
padding: .3ex 1em .3ex 1em ;
|
|
display: block ;
|
|
}
|
|
|
|
.snugframed {
|
|
margin: 3ex 0em 3ex 0em ;
|
|
border: 1px solid black;
|
|
border-radius: 0px ;
|
|
display: block ;
|
|
}
|
|
|
|
.framedleftbar {
|
|
margin: 3ex 0em 3ex 0em ;
|
|
border-left: 3pt solid black;
|
|
border-radius: 0px ;
|
|
padding: .3ex .2em .3ex 1em ;
|
|
display: block ;
|
|
}
|
|
|
|
.framedtitle {
|
|
margin: 0em ;
|
|
padding: 0em ;
|
|
font-size: 130%
|
|
}
|
|
|
|
.framedtitle p { padding: .3em }
|
|
|
|
/* For the niceframe package: */
|
|
|
|
div.niceframe, div.curlyframe, div.artdecoframe, div.generalframe {
|
|
padding: 1ex ;
|
|
margin: 2ex auto ;
|
|
border-radius: 2ex ;
|
|
}
|
|
|
|
div.niceframe {
|
|
border: 6px groove black ;
|
|
}
|
|
|
|
div.curlyframe {
|
|
border-left: 3px dotted black ;
|
|
border-right: 3px dotted black ;
|
|
border-radius: 6ex ;
|
|
}
|
|
|
|
div.artdecoframe {
|
|
border-left: 10px double black ;
|
|
border-right: 10px double black ;
|
|
border-radius: 6ex ;
|
|
}
|
|
|
|
div.generalframe {
|
|
border: 6px groove black ;
|
|
}
|
|
|
|
dl {
|
|
margin: 1ex 2em 1ex 0em;
|
|
line-height: 1.3;
|
|
}
|
|
|
|
dl dt {
|
|
display: block ;
|
|
float:left ;
|
|
font-weight: bold;
|
|
padding-right: 1em ;
|
|
}
|
|
|
|
dl dd { display: block ; }
|
|
|
|
dl dd:after { content: "" ; display: block ; clear: both }
|
|
|
|
dl dd p { margin-top: 0em; }
|
|
|
|
dd ul, dd ol, dd dl { clear: both ; padding-top: 1ex }
|
|
|
|
nav {
|
|
font-family: "URW Classico", Optima, "Linux Biolinum O",
|
|
"DejaVu Sans", "Bitstream Vera Sans",
|
|
Geneva, Verdana, sans-serif ;
|
|
margin-bottom: 4ex ;
|
|
}
|
|
|
|
nav p {
|
|
line-height: 1.2 ;
|
|
margin-top:.5ex ;
|
|
margin-bottom:.5ex;
|
|
font-size: .9em ;
|
|
}
|
|
|
|
img, img.hyperimage, img.borderimage {
|
|
max-width: 600px;
|
|
border: 1px solid silver;
|
|
box-shadow: 3px 3px 3px #808080 ;
|
|
padding: .5% ;
|
|
margin: .5% ;
|
|
background: none ;
|
|
}
|
|
|
|
img.inlineimage{
|
|
padding: 0px ;
|
|
box-shadow: none ;
|
|
border: none ;
|
|
background: none ;
|
|
margin: 0px ;
|
|
display: inline-block ;
|
|
border-radius: 0px ;
|
|
}
|
|
|
|
img.logoimage{
|
|
max-width: 300px ;
|
|
box-shadow: 3px 3px 3px #808080 ;
|
|
border: 1px solid black ;
|
|
background:none ;
|
|
padding:0 ;
|
|
margin:.5ex ;
|
|
border-radius: 10px ;
|
|
}
|
|
|
|
.section {
|
|
/*
|
|
To have each section float relative to each other:
|
|
*/
|
|
/*
|
|
display: block ;
|
|
float: left ;
|
|
position: relative ;
|
|
background: white ;
|
|
border: 1px solid silver ;
|
|
padding: .5em ;
|
|
*/
|
|
margin: 0ex .5em 0ex .5em ;
|
|
padding: 0 ;
|
|
}
|
|
|
|
figure {
|
|
margin: 5ex auto 5ex auto ;
|
|
padding: 1ex 1em 1ex 1em ;
|
|
overflow-x: auto ;
|
|
}
|
|
|
|
/* To automatically center images in figures: */
|
|
/*
|
|
figure img.inlineimage {
|
|
margin: 0ex auto 0ex auto ;
|
|
display: block ;
|
|
}
|
|
*/
|
|
|
|
/* To automatically center minipages in figures: */
|
|
/*
|
|
figure div.minipage, figure div.minipage div.minipage {
|
|
margin: 1ex auto 1ex auto ;
|
|
display: block ;
|
|
}
|
|
*/
|
|
|
|
figure figure { margin: 0pt }
|
|
|
|
figure div.minipage p { font-size: 85% ; }
|
|
|
|
figure.subfigure, figure.subtable {
|
|
display: inline-block ; margin: 3ex 1em 3ex 1em ;
|
|
}
|
|
|
|
div.figurecaption .minipage { margin:0 ; padding: 0 }
|
|
|
|
div.minipage figure { border: none ; box-shadow: none ; }
|
|
div.minipage figure.table { margin: 0ex }
|
|
div.minipage div.footnotes { margin: 1ex 2em 0ex 2em }
|
|
|
|
div.floatrow { text-align: center; }
|
|
|
|
div.floatrow figure { display: inline-block ; margin: 1ex 2% ; }
|
|
|
|
div.floatfoot { font-size: .85em ;
|
|
border-top: 1px solid silver ; line-height: 1.2 ; }
|
|
|
|
div.figurecaption , .lstlistingtitle {
|
|
font-size: .85em ;
|
|
text-align: center ;
|
|
font-weight: bold ;
|
|
margin-top: 1ex ;
|
|
margin-bottom: 1ex ;
|
|
}
|
|
|
|
figure.subfigure div.figurecaption, figure.subtable div.figurecaption {
|
|
border-bottom: none ; background: none ;
|
|
}
|
|
|
|
div.nonfloatcaption {
|
|
margin: 1ex auto 1ex auto ;
|
|
font-size: .85em ;
|
|
text-align: center ;
|
|
font-weight: bold ;
|
|
}
|
|
|
|
/* For a \RawCaption inside a minipage inside a figure's floatrow: */
|
|
figure div.floatrow div.minipage div.figurecaption {
|
|
border: none ;
|
|
background: none ;
|
|
}
|
|
|
|
/* For packages such as float, rotfloat, and algorithm2e: */
|
|
|
|
figure.boxed, figure.boxruled {
|
|
border: 1px solid black ;
|
|
}
|
|
|
|
figure.ruled {
|
|
border-top: 1px solid black ;
|
|
border-bottom: 1px solid black ;
|
|
border-left: 0px ;
|
|
border-right: 0px ;
|
|
border-radius: 0px ;
|
|
background: none ;
|
|
box-shadow: none ;
|
|
}
|
|
|
|
figure.ruled div.figurecaption, figure.boxruled div.figurecaption {
|
|
border-top: 1px solid silver ;
|
|
border-bottom: 1px solid silver ;
|
|
}
|
|
|
|
table {
|
|
margin: 1ex auto 1ex auto ;
|
|
border-collapse: separate ;
|
|
border-spacing: 0px ;
|
|
line-height: 1.3 ;
|
|
}
|
|
|
|
table > tbody > tr.hline > td {border-top: 1px solid #808080 ; margin-top: 0ex ;
|
|
margin-bottom: 0ex ; } /* for \hline */
|
|
|
|
tr.tbrule td {border-top: 1px solid black ; margin-top: 0ex ;
|
|
margin-bottom: 0ex ; } /* for \toprule, \bottomrule */
|
|
|
|
td {padding: .5ex .5em .5ex .5em ;}
|
|
|
|
table td.tdl { text-align: left ; vertical-align: middle ; }
|
|
table td.tdc { text-align: center ; vertical-align: middle ; }
|
|
table td.tdat { text-align: center ; vertical-align: middle ; padding: 0px ; margin: 0px ; }
|
|
table td.tdbang { text-align: center ; vertical-align: middle ; }
|
|
table td.tdr { text-align: right ; vertical-align: middle ; }
|
|
table td.tdp { text-align: left ; vertical-align: bottom ; }
|
|
table td.tdm { text-align: left ; vertical-align: middle ; }
|
|
table td.tdb { text-align: left ; vertical-align: top ; }
|
|
table td.tdP { text-align: center ; vertical-align: bottom ; }
|
|
table td.tdM { text-align: center ; vertical-align: middle ; }
|
|
table td.tdB { text-align: center ; vertical-align: top ; }
|
|
|
|
table td.tvertbarl { border-left: 1px solid black }
|
|
table td.tvertbarldouble { border-left: 4px double black }
|
|
table td.tvertbarr { border-right: 1px solid black }
|
|
table td.tvertbarrdouble { border-right: 4px double black }
|
|
|
|
table td.tvertbarldash { border-left: 1px dashed black }
|
|
table td.tvertbarldoubledash { border-left: 2px dashed black }
|
|
table td.tvertbarrdash { border-right: 1px dashed black }
|
|
table td.tvertbarrdoubledash { border-right: 2px dashed black }
|
|
|
|
/* for cmidrules: */
|
|
table td.tdrule {
|
|
border-top: 1px solid #A0A0A0 ;
|
|
}
|
|
|
|
table td.tdrulel {
|
|
border-top-left-radius:.5em ;
|
|
border-top: 1px solid #A0A0A0 ;
|
|
}
|
|
|
|
table td.tdruler {
|
|
border-top-right-radius:.5em ;
|
|
border-top: 1px solid #A0A0A0 ;
|
|
}
|
|
|
|
table td.tdrulelr {
|
|
border-top-left-radius:.5em ;
|
|
border-top-right-radius:.5em ;
|
|
border-top: 1px solid #A0A0A0 ;
|
|
}
|
|
|
|
/* Margins of paragraphs inside table cells: */
|
|
td.tdp p , td.tdprule p , td.tdP p , td.tdPrule p { padding-top: 1ex ;
|
|
padding-bottom: 1ex ; margin: 0ex ; }
|
|
td.tdm p , td.tmbrule p , td.tdM p , td.tdMrule p { padding-top: 1ex ;
|
|
padding-bottom: 1ex ; margin: 0ex ; }
|
|
td.tdb p , td.tdbrule p , td.tdB p , td.tdBrule p { padding-top: 1ex ;
|
|
padding-bottom: 1ex ; margin: 0ex ; }
|
|
|
|
td.tdp , td.tdprule , td.tdP , td.tdPrule
|
|
{ padding: 0ex .5em 0ex .5em ; }
|
|
td.tdm , td.tdmrule , td.tdM , td.tdMrule
|
|
{ padding: 0ex .5em 0ex .5em ; }
|
|
td.tdb , td.tdbrule , td.tdB , td.tdBrule
|
|
{ padding: 0ex .5em 0ex .5em ; }
|
|
|
|
/* table notes: */
|
|
.tnotes {
|
|
margin: 0ex 5% 1ex 5% ;
|
|
padding: 0.5ex 1em 0.5ex 1em;
|
|
font-size:.80em;
|
|
text-align: left ;
|
|
}
|
|
|
|
.minipage .tnotes {
|
|
margin: 0pt ;
|
|
padding: 0pt ;
|
|
}
|
|
|
|
.tnotes dl dt p {margin-bottom:0px;}
|
|
|
|
.tnoteitemheader {margin-right: 1em;}
|
|
|
|
/* for colortbl and cell color */
|
|
div.cellcolor {
|
|
width: 100% ;
|
|
padding: .5ex .5em .5ex .5em ;
|
|
margin: -.5ex -.5em -.5ex -.5em ;
|
|
}
|
|
|
|
/* for lyluatex */
|
|
span.lyluatex {
|
|
display: inline-block ;
|
|
}
|
|
|
|
div.lyluatex p span.lateximagesource img {
|
|
display: block ;
|
|
margin-top: 3ex ;
|
|
margin-bottom: 3ex ;
|
|
}
|
|
|
|
/* for bigdelim */
|
|
.ldelim, .rdelim { font-size: 200% }
|
|
|
|
/* center, flushleft, flushright environments */
|
|
div.center{text-align:center;}
|
|
div.center table {margin-left:auto;margin-right:auto;}
|
|
div.flushleft{text-align:left;}
|
|
div.flushleft table {margin-left:0em ; margin-right:auto;}
|
|
div.flushright{text-align:right;}
|
|
div.flushright table {margin-left:auto ; margin-right: 0em ;}
|
|
|
|
/* Fancybox */
|
|
div.Btrivlist table tr td {
|
|
padding: .2ex 0em ;
|
|
}
|
|
|
|
/* program listing callouts: */
|
|
span.callout {
|
|
font-family: "DejaVu Sans", "Bitstream Vera Sans",
|
|
Geneva, Verdana, sans-serif ;
|
|
border-radius: .5em;
|
|
background-color:black;
|
|
color:white;
|
|
padding:0px .25em 0px .25em;
|
|
margin: 0 ;
|
|
font-weight: bold;
|
|
font-size:.72em ;
|
|
}
|
|
|
|
div.programlisting pre.verbatim span.callout{
|
|
font-size: .85em ;
|
|
}
|
|
|
|
span.verbatim {
|
|
font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console",
|
|
"Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono",
|
|
"Courier New", monospace;
|
|
}
|
|
|
|
div.titlehead
|
|
{
|
|
text-align: left ;
|
|
font-style: normal ;
|
|
font-weight: normal ;
|
|
font-style: normal ;
|
|
font-size: .8em ;
|
|
margin: 1ex 0em 1ex 0em ;
|
|
}
|
|
|
|
div.subject
|
|
{
|
|
text-align: center ;
|
|
font-style: normal ;
|
|
font-weight: bold ;
|
|
font-style: normal ;
|
|
font-size: .8em ;
|
|
margin: 1ex 0em 1ex 0em ;
|
|
}
|
|
|
|
div.published
|
|
{
|
|
text-align: center ;
|
|
font-variant: normal ;
|
|
font-style: italic ;
|
|
font-size: 1em ;
|
|
margin: 1ex 0em 1ex 0em ;
|
|
}
|
|
|
|
div.subtitle
|
|
{
|
|
text-align: center ;
|
|
font-variant: normal ;
|
|
font-style: italic ;
|
|
font-size: 1.25em ;
|
|
margin: 1ex 0em 1ex 0em ;
|
|
}
|
|
|
|
div.subtitle p { margin: 1ex ; }
|
|
|
|
div.author
|
|
{
|
|
font-variant: normal ;
|
|
font-style: normal ;
|
|
font-size: 1em ;
|
|
margin: 1ex 0em 1ex 0em ;
|
|
}
|
|
|
|
div.oneauthor {
|
|
display: inline-block ;
|
|
margin: 0ex 1em 0ex 1em ;
|
|
}
|
|
|
|
/*
|
|
div.author table {
|
|
margin: 1ex auto 0ex auto ;
|
|
background: none ;
|
|
}
|
|
|
|
div.author table tbody tr td { padding: .25ex ; }
|
|
*/
|
|
|
|
span.affiliation {font-size: .85em ; font-variant: small-caps; }
|
|
|
|
div.titledate {
|
|
text-align: center ;
|
|
font-size: .85em ;
|
|
font-style: italic;
|
|
margin: 1ex 0em 1ex 0em ;
|
|
}
|
|
|
|
nav.topnavigation{
|
|
text-align: left ;
|
|
padding: 0.5ex 1em 0.5ex 1em ;
|
|
/* margin: 2ex 0em 3ex 0em ; */
|
|
margin: 0 ;
|
|
border-bottom: 1px solid silver ;
|
|
border-top: 1px solid silver ;
|
|
clear:both ;
|
|
}
|
|
|
|
nav.botnavigation{
|
|
text-align: left ;
|
|
padding: 0.5ex 1em 0.5ex 1em ;
|
|
/* margin: 3ex 0em 2ex 0em ; */
|
|
margin: 0 ;
|
|
border-top: 1px solid silver ;
|
|
border-bottom: 1px solid silver ;
|
|
clear:both ;
|
|
}
|
|
|
|
header {
|
|
line-height: 1.2 ;
|
|
font-size: 1em ;
|
|
border-bottom: 1px solid silver ;
|
|
margin: 0px ;
|
|
padding: 2ex 1em 2ex 1em ;
|
|
text-align:left ;
|
|
}
|
|
|
|
footer {
|
|
font-size: .85em ;
|
|
line-height: 1.2 ;
|
|
margin-top: 1ex ;
|
|
border-top: 1px solid silver ;
|
|
padding: 2ex 1em 2ex 1em ;
|
|
clear:both ;
|
|
text-align:left ;
|
|
}
|
|
|
|
/* for \LinkHome, \LinkPrevious, and \LinkNext: */
|
|
a.linkhome { font-weight:bold ; font-size: 1em ;}
|
|
|
|
div.lateximagesource { padding: 0px ; margin: 0px ; display: none; }
|
|
|
|
img.lateximage{
|
|
padding: 0pt ;
|
|
margin: 0pt ;
|
|
box-shadow: none ;
|
|
border: none ;
|
|
background: none ;
|
|
max-width: 100% ;
|
|
border-radius: 0ex ;
|
|
border: none ;
|
|
}
|
|
|
|
/* The -1px right margin compensates for the 1px right border. */
|
|
/* Without this -1px margin, the body container appears below instead */
|
|
/* of floating to the side. */
|
|
div.sidetoccontainer {
|
|
font-family: "DejaVu Serif", "Bitstream Vera Serif",
|
|
"Lucida Bright", Georgia, serif;
|
|
float: left ;
|
|
width: 20%;
|
|
margin: 0pt -1px 3ex 0pt ;
|
|
border-right: 1px solid silver;
|
|
border-bottom: 1px solid silver;
|
|
background: #FAF7F4 ;
|
|
font-size:.9em ;
|
|
border-radius: 0px 0px 20px 0px ;
|
|
}
|
|
|
|
div.sidetoccontents {
|
|
overflow-y: auto ;
|
|
width: 100% ;
|
|
text-align: left ;
|
|
}
|
|
|
|
nav.sidetoc p {line-height:1.2 ; margin: 1ex .5em 1ex .5em ;
|
|
text-indent: 0 ; }
|
|
|
|
nav.sidetoc p a {color:black ; font-size: .7em ;}
|
|
|
|
div.sidetoctitle {font-size: 1.2em; font-weight:bold; text-align:center;
|
|
border-bottom: 1px solid silver ; }
|
|
|
|
nav.sidetoc a:hover {text-decoration: underline ; }
|
|
|
|
section.textbody { margin: 0ex 1em 0ex 1em ;}
|
|
|
|
div.multicolsheading { -webkit-column-span: all;
|
|
-moz-column-span: all; column-span: all; }
|
|
div.multicols { -webkit-columns: 3 380px ;
|
|
-moz-columns: 3 380px ; columns: 3 380px ; }
|
|
div.multicols p {margin-top: 0ex}
|
|
|
|
/* Used for xfrac and nicefrac: */
|
|
span.numerator {
|
|
font-size: 60% ;
|
|
vertical-align: .4em ;
|
|
}
|
|
|
|
span.denominator {
|
|
font-size: 60%
|
|
}
|
|
|
|
/* Used for algorithm2e: */
|
|
div.alg2evline{
|
|
margin-left: 1em ;
|
|
padding-left: 1em ;
|
|
border-left: 1px solid black ;
|
|
border-radius: 0px 0px 0px 1ex ;
|
|
}
|
|
|
|
div.alg2evsline{
|
|
margin-left: 1em ;
|
|
padding-left: 1em ;
|
|
border-left: 1px solid black ;
|
|
}
|
|
|
|
div.alg2enoline{
|
|
margin-left: 1em ;
|
|
padding-left: 1em ;
|
|
}
|
|
|
|
span.alg2elinenumber{
|
|
margin-right: .5em ;
|
|
font-size: 50% ;
|
|
color: red ;
|
|
}
|
|
|
|
/* Used for algorithmicx: */
|
|
span.floatright { float: right ; }
|
|
|
|
/* keyfloat and tocdata: */
|
|
.floatnotes {
|
|
margin: 0ex 5% 0ex 5% ;
|
|
padding: 0ex 1em 0ex 1em ;
|
|
font-size:.80em ;
|
|
text-align: left ;
|
|
}
|
|
|
|
.authorartist{
|
|
display:block ;
|
|
font-size:.70em ;
|
|
font-style: italic;
|
|
}
|
|
|
|
nav .authorartist{ display:inline; }
|
|
|
|
/* Native LaTeX theorems: */
|
|
|
|
.theoremcontents {
|
|
font-style: italic; margin-top: 3ex ; margin-bottom: 3ex ;
|
|
}
|
|
|
|
.theoremlabel {
|
|
font-style: normal; font-weight: bold ; margin-right: .5em ;
|
|
}
|
|
|
|
/* theorem, amsthm, and ntheorem packages */
|
|
|
|
span.theoremheader,
|
|
span.theoremheaderplain,
|
|
span.theoremheaderdefinition,
|
|
span.theoremheaderbreak,
|
|
span.theoremheadermarginbreak,
|
|
span.theoremheaderchangebreak,
|
|
span.theoremheaderchange,
|
|
span.theoremheadermargin
|
|
{
|
|
font-style:normal ; font-weight: bold ; margin-right: 1em ;
|
|
}
|
|
|
|
span.amsthmnameplain,
|
|
span.amsthmnamedefinition,
|
|
span.amsthmnumberplain,
|
|
span.amsthmnumberdefinition
|
|
{
|
|
font-style:normal ; font-weight: bold ;
|
|
}
|
|
|
|
span.amsthmnameremark,
|
|
span.amsthmnumberremark
|
|
{font-style:italic ; font-weight: normal ; }
|
|
|
|
span.amsthmnoteplain,
|
|
span.amsthmnotedefinition
|
|
{font-style:normal ;}
|
|
|
|
span.theoremheaderremark,
|
|
span.theoremheaderproof,
|
|
span.amsthmproofname
|
|
{font-style:italic ; font-weight: normal ; margin-right: 1em ; }
|
|
|
|
span.theoremheadersc
|
|
{
|
|
font-style:normal ;
|
|
font-variant: small-caps ;
|
|
font-weight: normal ;
|
|
margin-right: 1em ;
|
|
}
|
|
|
|
.theoremendmark {float:right}
|
|
|
|
div.amsthmbodyplain, div.theorembodyplain, div.theorembodynonumberplain,
|
|
div.theorembodybreak, div.theorembodynonumberbreak,
|
|
div.theorembodymarginbreak,
|
|
div.theorembodychangebreak,
|
|
div.theorembodychange,
|
|
div.theorembodymargin
|
|
{
|
|
font-style:italic;
|
|
margin-top: 3ex ; margin-bottom: 3ex ;
|
|
}
|
|
|
|
div.theorembodydefinition, div.theorembodyremark, div.theorembodyproof,
|
|
div.theorembodyplainupright, nonumberplainuprightsc,
|
|
div.amsthmbodydefinition, div.amsthmbodyremark,
|
|
div.amsthmproof
|
|
{
|
|
font-style: normal ;
|
|
margin-top: 3ex ; margin-bottom: 3ex ;
|
|
}
|
|
|
|
span.amsthmnoteremark {}
|
|
|
|
/* thmbox */
|
|
|
|
.thmbox {
|
|
font-style: italic; margin-top: 3ex ; margin-bottom: 3ex ;
|
|
border: 1px solid gray ;
|
|
padding: 1ex ;
|
|
}
|
|
|
|
.thmboxtitle {
|
|
font-style: normal; font-weight: bold ; margin-right: .5em ;
|
|
border-bottom: 1px solid gray ;
|
|
}
|
|
|
|
span.thmboxproofname, span.thmboxexamplename {
|
|
font-weight: bold ;
|
|
}
|
|
|
|
div.thmboxproof, div.thmboxexample {
|
|
font-size: 0.85em ;
|
|
margin: 2ex ;
|
|
}
|
|
|
|
div.thmboxleftbar {
|
|
border-left: 2px solid black ;
|
|
padding-left: 1em ;
|
|
}
|
|
|
|
/* For the backnaur package: */
|
|
div.backnaur {
|
|
display: block ;
|
|
margin: 2ex 2em 2ex 2em ;
|
|
}
|
|
|
|
div.backnaur p {
|
|
margin: .25ex 0ex .25ex 0ex ;
|
|
}
|
|
|
|
div.backnaurprod {
|
|
display: inline-block ;
|
|
min-width: 8em ;
|
|
text-align:right ;
|
|
}
|
|
|
|
div.backnaurdesc {
|
|
display: inline-block ;
|
|
}
|
|
|
|
/* For the notes package: */
|
|
div.notesimportantnote, div.noteswarningnote, div.notesinformationnote {
|
|
clear: both ;
|
|
margin: 2ex 2em 2ex 2em ;
|
|
border: 1px solid silver ;
|
|
}
|
|
|
|
div.notesicon {
|
|
float:left ;
|
|
display: inline-block ;
|
|
background: gold ;
|
|
padding: 0ex 1em 0ex 1em ;
|
|
margin-right: 1em ;
|
|
font-weight: bold ;
|
|
}
|
|
|
|
div.notescontents { font-style: italic }
|
|
|
|
/* nolbreaks package: */
|
|
span.nolbreaks { white-space: nowrap ; }
|
|
|
|
/*
|
|
For CSS LaTeX and related logos:
|
|
Based on spacing demonstrated by the metafont package.
|
|
*/
|
|
|
|
.latexlogofont {
|
|
font-family: "Linux Libertine O", "Nimbus Roman No 9 L",
|
|
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
|
|
font-variant: normal ;
|
|
}
|
|
|
|
.latexlogo {
|
|
font-family: "Linux Libertine O", "Nimbus Roman No 9 L",
|
|
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
|
|
font-size: 1.1em;
|
|
}
|
|
|
|
.latexlogosup {
|
|
text-transform: uppercase;
|
|
letter-spacing: .03em ;
|
|
font-size: 0.7em;
|
|
vertical-align: 0.25em;
|
|
margin-left: -0.4em;
|
|
margin-right: -0.15em;
|
|
}
|
|
|
|
.latexlogosub {
|
|
text-transform: uppercase;
|
|
vertical-align: -0.27ex;
|
|
margin-left: -0.08em;
|
|
margin-right: -0.07em;
|
|
font-size: 1em;
|
|
}
|
|
|
|
.latexlogotwoe {
|
|
text-transform: none ;
|
|
font-variant-numeric: oldstyle-nums ;
|
|
}
|
|
|
|
.latexlogotwoesub {
|
|
font-style:italic ;
|
|
vertical-align: -0.27ex;
|
|
margin-left: -0.11em;
|
|
margin-right: -0.1em;
|
|
font-size: 1em;
|
|
}
|
|
|
|
.xelatexlogo {
|
|
font-family: "Linux Libertine O", "Nimbus Roman No 9 L",
|
|
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
|
|
letter-spacing: .03em ;
|
|
font-size: 1.1em;
|
|
}
|
|
|
|
.xelatexlogosub {
|
|
vertical-align: -0.27ex;
|
|
margin-left: -0.0667em;
|
|
margin-right: -.05em;
|
|
font-size: 1em;
|
|
letter-spacing: .03em ;
|
|
}
|
|
|
|
.amslogo {
|
|
font-family: "TeXGyreChorus","URW Chancery L",
|
|
"Apple Chancery","ITC Zapf Chancery","Monotype Corsiva",
|
|
"Linux Libertine O", "Nimbus Roman No 9 L", "FreeSerif",
|
|
"Hoefler Text", Times, "Times New Roman", serif ;
|
|
font-style: italic ;
|
|
}
|
|
|
|
.lyxlogo {
|
|
font-family: "URW Classico", Optima, "Linux Biolinum O",
|
|
"DejaVu Sans", "Bitstream Vera Sans", Geneva,
|
|
Verdana, sans-serif ;
|
|
}
|
|
|
|
/* Only display top and bottom navigation if a small screen: */
|
|
/* Hide the sidetoc if a small screen: */
|
|
nav.topnavigation { display:none; }
|
|
nav.botnavigation { display:none; }
|
|
|
|
/* Only display the sidetoc's webpage title if a small screen */
|
|
span.sidetocthetitle { display: none }
|
|
|
|
@media screen and (max-width: 50em) {
|
|
div.sidetoccontainer {
|
|
float: none ;
|
|
width: 100% ;
|
|
padding: 0 ;
|
|
border-radius: 0 ;
|
|
border-bottom: 1px solid black ;
|
|
border-top: 1px solid black ;
|
|
box-shadow: none ;
|
|
}
|
|
span.sidetocthetitle { display: inline }
|
|
nav.topnavigation { display:block }
|
|
nav.botnavigation { display:block }
|
|
div.bodycontainer { width: 100% }
|
|
.marginpar {
|
|
max-width: 100%;
|
|
float: none;
|
|
display:block ;
|
|
margin: 1ex 1em 1ex 1em ;
|
|
}
|
|
}
|
|
|
|
@media print {
|
|
body {
|
|
font-family: "Linux Libertine O",
|
|
"DejaVu Serif", "Bitstream Vera Serif",
|
|
"Liberation Serif", "Nimbus Roman No 9 L",
|
|
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
|
|
}
|
|
div.sidetoccontainer { display:none; }
|
|
nav.topnavigation { display: none; }
|
|
nav.botnavigation { display: none; }
|
|
div.bodycontainer { width: 100% }
|
|
}
|
|
|
|
@media handheld {
|
|
div.sidetoccontainer { display:none; }
|
|
nav.topnavigation { display:block }
|
|
nav.botnavigation { display:block }
|
|
div.bodycontainer { width: 100% }
|
|
}
|
|
|
|
@media projection {
|
|
div.sidetoccontainer { display:none; }
|
|
nav.topnavigation { display:block }
|
|
nav.botnavigation { display:block }
|
|
div.bodycontainer { width: 100% }
|
|
}
|
|
\end{filecontents*}
|
|
\end{LWRwriteconf}
|
|
|
|
|
|
\begin{LWRwriteconf}
|
|
\begin{filecontents*}[overwrite]{lwarp_sagebrush.css}
|
|
@import url("lwarp.css") ;
|
|
|
|
A:link {color:#105030 ; text-decoration: none ; }
|
|
A:visited {color:#705030 ; text-shadow:1px 1px 2px #a0a0a0;}
|
|
A:hover {color:#006000 ; text-decoration: underline ; text-shadow:0px 0px 2px #a0a0a0;}
|
|
A:active {color:#00C000 ; text-shadow:1px 1px 2px #a0a0a0;}
|
|
|
|
div.book, h1, h2, h3, h4, h5, h6, span.paragraph, span.subparagraph
|
|
{
|
|
font-family: "URW Classico", Optima, "Linux Biolinum O",
|
|
"Linux Libertine O", "Liberation Serif",
|
|
"Nimbus Roman No 9 L", "FreeSerif",
|
|
"Hoefler Text", Times, "Times New Roman", serif;
|
|
font-variant: small-caps ;
|
|
font-weight: normal ;
|
|
color: #304070 ;
|
|
text-shadow: 2px 2px 3px #808080;
|
|
}
|
|
|
|
h1 { /* title of the entire website, used on each page */
|
|
font-variant: small-caps ;
|
|
color: #304070 ;
|
|
text-shadow: 2px 2px 3px #808080;
|
|
background-color: #F7F7F0 ;
|
|
background-image: linear-gradient(to bottom, #F7F7F0, #C0C0C4);
|
|
}
|
|
|
|
h1 {
|
|
border-bottom: 1px solid #304070;
|
|
/* border-top: 2px solid #304070; */
|
|
}
|
|
|
|
h2 {
|
|
border-bottom: 1px solid #304070;
|
|
/* border-top: 2px solid #304070; */
|
|
background-color: #F7F7F0 ;
|
|
background-image: linear-gradient(to bottom, #F7F7F0, #DAD0C0);
|
|
}
|
|
|
|
div.abstract {
|
|
background: #f5f5eb ;
|
|
background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8);
|
|
|
|
border: 1px solid silver;
|
|
border-radius: 1em ;
|
|
}
|
|
|
|
div.abstract dl {line-height:1.5;}
|
|
div.abstract dt {color:#304070;}
|
|
|
|
div.abstracttitle{
|
|
font-family: "URW Classico", Optima, "Linux Biolinum O",
|
|
"Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L",
|
|
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
|
|
font-weight:bold;
|
|
font-variant: small-caps ;
|
|
font-size:1.5em;
|
|
border-bottom: 1px solid silver ;
|
|
color: #304070 ;
|
|
text-align: center ;
|
|
text-shadow: 1px 1px 2px #808080;
|
|
}
|
|
|
|
span.abstractrunintitle{
|
|
font-family: "URW Classico", Optima, "Linux Biolinum O",
|
|
"Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L",
|
|
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
|
|
font-weight:bold;
|
|
}
|
|
|
|
div.epigraph, div.dictum {
|
|
background: #f5f5eb ;
|
|
background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8);
|
|
|
|
border: 1px solid silver ;
|
|
border-radius: 1ex ;
|
|
box-shadow: 3px 3px 3px #808080 ;
|
|
}
|
|
|
|
.example {
|
|
background-color: #f5f5eb ;
|
|
background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8);
|
|
|
|
}
|
|
|
|
div.exampletitle{
|
|
font-family: "URW Classico", Optima, "Linux Biolinum O",
|
|
"Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L",
|
|
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
|
|
font-weight:bold;
|
|
font-variant: small-caps ;
|
|
border-bottom: 1px solid silver ;
|
|
color: #304070 ;
|
|
text-align: center ;
|
|
text-shadow: 1px 1px 2px #808080;
|
|
}
|
|
|
|
.sidebar {
|
|
background-color: #f5f5eb ;
|
|
background-image: linear-gradient(to bottom, #f5f5eb, #C8C8B8);
|
|
|
|
}
|
|
|
|
div.sidebartitle{
|
|
font-family: "URW Classico", Optima, "Linux Biolinum O",
|
|
"Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L",
|
|
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
|
|
font-weight:bold;
|
|
font-variant: small-caps ;
|
|
border-bottom: 1px solid silver ;
|
|
color: #304070 ;
|
|
text-align: center ;
|
|
text-shadow: 1px 1px 2px #808080;
|
|
}
|
|
|
|
.fancyvrblabel {
|
|
font-family: "URW Classico", Optima, "Linux Biolinum O",
|
|
"Linux Libertine O", "Liberation Serif", "Nimbus Roman No 9 L",
|
|
"FreeSerif", "Hoefler Text", Times, "Times New Roman", serif;
|
|
font-weight:bold;
|
|
font-variant: small-caps ;
|
|
font-size: 1.5em ;
|
|
color: #304070 ;
|
|
text-align: center ;
|
|
text-shadow: 1px 1px 2px #808080;
|
|
}
|
|
|
|
div.minipage {
|
|
background-color: #eeeee7 ;
|
|
border: 1px solid silver ;
|
|
border-radius: 1ex ;
|
|
}
|
|
|
|
table div.minipage { background: none ; border: none ; }
|
|
|
|
div.framebox div.minipage {border:none ; background:none}
|
|
|
|
section.textbody > div.minipage {
|
|
box-shadow: 3px 3px 3px #808080 ;
|
|
}
|
|
|
|
div.fboxBlock div.minipage { box-shadow: none ; }
|
|
|
|
.framed .minipage , .framedleftbar .minipage {
|
|
border: none ;
|
|
background: none ;
|
|
padding: 0ex ;
|
|
margin: 0ex ;
|
|
}
|
|
|
|
figure.figure .minipage, div.figurecaption .minipage { border: none; }
|
|
|
|
div.marginblock div.minipage ,
|
|
div.marginparblock div.minipage
|
|
{ border: none; }
|
|
|
|
figure , div.marginblock {
|
|
background-color: #eeeee7 ;
|
|
border: 1px solid silver ;
|
|
border-radius: 1ex ;
|
|
box-shadow: 3px 3px 3px #808080 ;
|
|
}
|
|
|
|
figure figure {
|
|
border: 1px solid silver ;
|
|
margin: 0em ;
|
|
box-shadow: none ;
|
|
}
|
|
|
|
/*
|
|
div.figurecaption {
|
|
border-top: 1px solid silver ;
|
|
border-bottom: 1px solid silver ;
|
|
background-color: #e8e8e8 ;
|
|
}
|
|
*/
|
|
|
|
div.table {
|
|
box-shadow: 3px 3px 3px #808080 ;
|
|
}
|
|
|
|
/*
|
|
.tnotes {
|
|
background: #e8e8e8;
|
|
border: 1px solid silver;
|
|
}
|
|
*/
|
|
|
|
nav.topnavigation{
|
|
background-color: #b0b8b0 ;
|
|
background-image: linear-gradient(to bottom,#e0e0e0,#b0b8b0) ;
|
|
}
|
|
|
|
nav.botnavigation{
|
|
background-color: #b0b8b0 ;
|
|
background-image: linear-gradient(to top,#e0e0e0,#b0b8b0) ;
|
|
}
|
|
|
|
header{
|
|
background-color: #F7F7F0 ;
|
|
background-image: linear-gradient(to top, #F7F7F0, #b0b8b0);
|
|
}
|
|
|
|
footer{
|
|
background-color: #F7F7F0 ;
|
|
background-image: linear-gradient(to bottom, #F7F7F0, #b0b8b0);
|
|
}
|
|
|
|
div.sidetoccontainer {
|
|
background-color: #F7F7F0 ;
|
|
background-image: linear-gradient(to bottom, #F7F7F0, #C0C0C0);
|
|
box-shadow: 3px 3px 3px #808080 ;
|
|
}
|
|
|
|
div.sidetoctitle {color: #304070 ; }
|
|
|
|
nav.sidetoc a:hover {
|
|
color:#006000 ;
|
|
text-decoration: none ;
|
|
text-shadow:0px 0px 2px #a0a0a0;
|
|
}
|
|
|
|
@media screen and (max-width: 45em) {
|
|
div.sidetoccontainer { border-radius: 0 ; }
|
|
}
|
|
|
|
\end{filecontents*}
|
|
\end{LWRwriteconf}
|
|
|
|
|
|
\begin{LWRwriteconf}
|
|
\begin{filecontents*}[overwrite]{lwarp_formal.css}
|
|
@import url("lwarp.css") ;
|
|
|
|
A:link {color:#802020 ; text-decoration:none; }
|
|
A:visited {color:#802020 ; text-shadow:none ;}
|
|
A:hover {color:#400000 ; text-shadow:none ;}
|
|
A:active {color:#C00000 ; text-shadow:none ;}
|
|
|
|
body {
|
|
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
|
|
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
|
|
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
|
|
"Times New Roman", serif;
|
|
background: #fffcf5;
|
|
}
|
|
|
|
span.textrm {
|
|
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
|
|
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
|
|
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
|
|
"Times New Roman", serif;
|
|
}
|
|
|
|
span.textsf {
|
|
font-family: "DejaVu Sans", "Bitstream Vera Sans",
|
|
Geneva, Verdana, sans-serif ;
|
|
}
|
|
|
|
div.book, h1, h2, h3, h4, h5, h6, span.paragraph, span.subparagraph
|
|
{
|
|
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
|
|
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
|
|
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
|
|
"Times New Roman", serif;
|
|
color: #800000 ;
|
|
text-shadow: none ;
|
|
}
|
|
|
|
h1, h2 {
|
|
background-color: #fffcf5 ;
|
|
background-image: none ;
|
|
border-bottom: 1px solid #808080;
|
|
/* border-top: 2px solid #808080; */
|
|
}
|
|
|
|
div.abstracttitle {
|
|
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
|
|
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
|
|
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
|
|
"Times New Roman", serif;
|
|
color: black ;
|
|
text-shadow: none ;
|
|
}
|
|
|
|
span.abstractrunintitle {
|
|
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
|
|
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
|
|
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
|
|
"Times New Roman", serif;
|
|
color: black ;
|
|
text-shadow: none ;
|
|
}
|
|
|
|
div.abstract { font-size: 100% }
|
|
|
|
.sidebar {
|
|
background: #fffcf5;
|
|
background-image: none ;
|
|
margin: 2em 5% 2em 5%;
|
|
padding: 0.5em 1em;
|
|
border: none ;
|
|
border-top : 1px solid silver;
|
|
border-bottom : 1px solid silver;
|
|
font-size: 90% ;
|
|
}
|
|
|
|
div.sidebartitle{
|
|
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
|
|
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
|
|
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
|
|
"Times New Roman", serif;
|
|
color: #800000 ;
|
|
text-shadow: none ;
|
|
border: none ;
|
|
}
|
|
|
|
.example {
|
|
background: #fffcf5;
|
|
background-image: none ;
|
|
margin: 2em 5% 2em 5%;
|
|
padding: 0.5em 1em;
|
|
border: none ;
|
|
border-top : 1px solid silver;
|
|
border-bottom : 1px solid silver;
|
|
}
|
|
|
|
div.exampletitle{
|
|
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
|
|
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
|
|
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
|
|
"Times New Roman", serif;
|
|
color: #800000 ;
|
|
text-shadow: none ;
|
|
border: none ;
|
|
}
|
|
|
|
div.fancyvrblabel{
|
|
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
|
|
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
|
|
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
|
|
"Times New Roman", serif;
|
|
color: #800000 ;
|
|
text-shadow: none ;
|
|
border: none ;
|
|
}
|
|
|
|
figure {
|
|
margin: 5ex 5% 5ex 5% ;
|
|
padding: 1ex 1em 1ex 1em ;
|
|
background-color: #fffcf5 ;
|
|
overflow-x: auto ;
|
|
border: none ;
|
|
/* border-top: 1px solid silver; */
|
|
/* border-bottom: 1px solid silver; */
|
|
}
|
|
|
|
div.figurecaption , .lstlisting {
|
|
border: none ;
|
|
/* border-top: 1px solid silver ; */
|
|
/* border-bottom: 1px solid silver ; */
|
|
background-color: #fffcf5 ;
|
|
}
|
|
|
|
.tnotes {
|
|
background: #fffcf5 ;
|
|
border-top: 1px solid silver ;
|
|
border-bottom: 1px solid silver ;
|
|
}
|
|
|
|
.theorem {
|
|
background: none ;
|
|
}
|
|
|
|
.minipage {
|
|
background-color: #fffcf5 ;
|
|
border: none ;
|
|
}
|
|
|
|
div.floatrow figure { border: none ; }
|
|
|
|
figure figure { border: none ; }
|
|
|
|
nav.toc, nav.lof, nav.lot, nav.lol {
|
|
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
|
|
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
|
|
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
|
|
"Times New Roman", serif;
|
|
}
|
|
|
|
div.sidetoccontainer {
|
|
font-family: "Linux Libertine O", "Hoefler Text", "Garamond",
|
|
"Bembo", "Janson", "TeX Gyre Pagella", "Palatino",
|
|
"Liberation Serif", "Nimbus Roman No 9 L", "FreeSerif", Times,
|
|
"Times New Roman", serif;
|
|
background-image: linear-gradient(to bottom, #fffcf5, #C0C0C0);
|
|
}
|
|
|
|
div.sidetoctitle{
|
|
color: #800000 ;
|
|
}
|
|
|
|
header{
|
|
background-color: #e0e0e0 ;
|
|
background-image: linear-gradient(to top, #fffcf5, #b0b0b0);
|
|
text-align:center ;
|
|
}
|
|
|
|
footer{
|
|
background-color: #e0e0e0 ;
|
|
background-image: linear-gradient(to bottom, #fffcf5, #b0b0b0);
|
|
padding: 2ex 1em 2ex 1em ;
|
|
text-align:left ;
|
|
}
|
|
|
|
nav.botnavigation {
|
|
background: #dedcd5 ;
|
|
border-top: 1px solid black ;
|
|
}
|
|
\end{filecontents*}
|
|
\end{LWRwriteconf}
|
|
|
|
|
|
\begin{LWRwriteconf}
|
|
\begin{filecontents*}[overwrite]{sample_project.css}
|
|
/* ( --- Start of project.css --- ) */
|
|
/* ( --- A sample project-specific CSS file for lwarp --- ) */
|
|
|
|
/* Uncomment one of the following: */
|
|
@import url("lwarp.css") ;
|
|
/* @import url("lwarp_formal.css") ; */
|
|
/* @import url("lwarp_sagebrush.css") ; */
|
|
|
|
/* Project-specific CSS setting follow here. */
|
|
/* . . . */
|
|
|
|
/* ( --- End of project.css --- ) */
|
|
\end{filecontents*}
|
|
\end{LWRwriteconf}
|
|
|
|
|
|
\begin{LWRwriteconf}
|
|
\begin{filecontents*}[overwrite]{lwarp.ist}
|
|
preamble
|
|
"\\begin{theindex}
|
|
\\providecommand*\\lettergroupDefault[1]{}
|
|
\\providecommand*\\lettergroup[1]{%
|
|
\\par\\textbf{#1}\\par
|
|
\\nopagebreak
|
|
}
|
|
"
|
|
headings_flag 1
|
|
heading_prefix "
|
|
\\lettergroup{"
|
|
heading_suffix "}"
|
|
delim_0 ", \\hyperindexref{"
|
|
delim_1 ", \\hyperindexref{"
|
|
delim_2 ", \\hyperindexref{"
|
|
delim_n "}, \\hyperindexref{"
|
|
delim_r "} -- \\hyperindexref{"
|
|
delim_t "}"
|
|
page_compositor "."
|
|
\end{filecontents*}
|
|
\end{LWRwriteconf}
|
|
|
|
|
|
\begin{LWRwriteconf}
|
|
\begin{filecontents*}[overwrite]{lwarp.xdy}
|
|
(require "tex/inputenc/latin.xdy")
|
|
(merge-rule "\\PS *" "Postscript")
|
|
(require "texindy.xdy")
|
|
(require "page-ranges.xdy")
|
|
(require "book-order.xdy")
|
|
(define-location-class "arabic-page-numbers"
|
|
("arabic-numbers") :min-range-length 1)
|
|
(require "makeindex.xdy")
|
|
(define-attributes (("hyperindexref")))
|
|
(markup-locref :open "\hyperindexref{" :close "}")
|
|
(markup-locref :open "\hyperindexref{" :close "}" :attr "hyperpage")
|
|
(markup-locref :open "\textbf{\hyperindexref{" :close "}}" :attr "textbf")
|
|
(markup-locref :open "\textit{\hyperindexref{" :close "}}" :attr "textit")
|
|
(define-location-class-order ("roman-page-numbers"
|
|
"arabic-page-numbers"
|
|
"alpha-page-numbers"
|
|
"Roman-page-numbers"
|
|
"Alpha-page-numbers"
|
|
"see"
|
|
"seealso"))
|
|
\end{filecontents*}
|
|
\end{LWRwriteconf}
|
|
|
|
\begin{LWRwriteconf}
|
|
\immediate\openout\LWR@quickfile=lwarp_one_limage.txt
|
|
\immediate\write\LWR@quickfile{%
|
|
pdfseparate -f \LWRpercent 1 -l \LWRpercent 1 \LWRpercent 4_html.pdf %
|
|
\LWR@ImagesDirectory\OSPathSymbol lateximagetemp-\LWRpercent\LWRpercent d.pdf%
|
|
}
|
|
\immediate\write\LWR@quickfile{%
|
|
pdfcrop --hires \LWR@ImagesDirectory\OSPathSymbol lateximagetemp-\LWRpercent 1.pdf %
|
|
\LWR@ImagesDirectory\OSPathSymbol\LWRpercent 3.pdf%
|
|
}
|
|
\immediate\write\LWR@quickfile{%
|
|
pdftocairo -svg -noshrink \LWR@ImagesDirectory\OSPathSymbol\LWRpercent 3.pdf %
|
|
\LWR@ImagesDirectory\OSPathSymbol\LWRpercent 3.svg%
|
|
}
|
|
\immediate\write\LWR@quickfile{%
|
|
del \LWR@ImagesDirectory\OSPathSymbol\LWRpercent 3.pdf%
|
|
}
|
|
\immediate\write\LWR@quickfile{%
|
|
del \LWR@ImagesDirectory\OSPathSymbol lateximagetemp-\LWRpercent 1.pdf%
|
|
}
|
|
\immediate\write\LWR@quickfile{exit}
|
|
\immediate\closeout\LWR@quickfile
|
|
\end{LWRwriteconf}
|
|
|
|
|
|
|
|
\begin{LWRwriteconf}
|
|
\begin{filecontents*}[overwrite]{lwarp_mathjax.txt}
|
|
<script>
|
|
// Lwarp MathJax emulation code
|
|
//
|
|
// Based on code by Davide P. Cervone.
|
|
// Equation numbering: https://github.com/mathjax/MathJax/issues/2427
|
|
// Starred and ifnextchar macros: https://github.com/mathjax/MathJax/issues/2428
|
|
//
|
|
// Modified by Brian Dunn to adjust equation numbering and add subequations.
|
|
//
|
|
// LaTeX can use \seteqnumber{subequations?}{section}{number} before each equation.
|
|
// subequations? is 0 usually, 1 if inside subequations.
|
|
// section is a string printed as-is, or empty.
|
|
// number is auto-incremented by MathJax between equations.
|
|
//
|
|
MathJax = {
|
|
subequations: "0",
|
|
section: "",
|
|
loader: {
|
|
load: ['[tex]/tagFormat']
|
|
},
|
|
startup: {
|
|
ready() {
|
|
// These would be replaced by import commands if you wanted to make
|
|
// a proper extension.
|
|
const Configuration = MathJax._.input.tex.Configuration.Configuration;
|
|
const CommandMap = MathJax._.input.tex.SymbolMap.CommandMap;
|
|
const Macro = MathJax._.input.tex.Symbol.Macro;
|
|
const TexError = MathJax._.input.tex.TexError.default;
|
|
const ParseUtil = MathJax._.input.tex.ParseUtil.default;
|
|
const expandable = MathJax._.util.Options.expandable;
|
|
|
|
// Insert the replacement string into the TeX string, and check
|
|
// that there haven't been too many maxro substitutions (prevents
|
|
// infinite loops).
|
|
const useArgument = (parser, text) => {
|
|
parser.string = ParseUtil.addArgs(parser, text, parser.string.slice(parser.i));
|
|
parser.i = 0;
|
|
if (++parser.macroCount > parser.configuration.options.maxMacros) {
|
|
throw new TexError('MaxMacroSub1',
|
|
'MathJax maximum macro substitution count exceeded; ' +
|
|
'is there a recursive macro call?');
|
|
}
|
|
}
|
|
|
|
// Create the command map for \ifstar, \ifnextchar, \seteqnumber
|
|
new CommandMap('ifstar-ifnextchar-setequnumber', {
|
|
ifstar: 'IfstarFunction',
|
|
ifnextchar: 'IfnextcharFunction',
|
|
seteqnumber: 'SeteqnumberFunction'
|
|
}, {
|
|
// This function implements an ifstar macro.
|
|
IfstarFunction(parser, name) {
|
|
const resultstar = parser.GetArgument(name);
|
|
const resultnostar = parser.GetArgument(name);
|
|
const star = parser.GetStar(); // true if there is a *
|
|
useArgument(parser, star ? resultstar : resultnostar);
|
|
},
|
|
|
|
// This function implements an ifnextchar macro.
|
|
IfnextcharFunction(parser, name) {
|
|
let whichchar = parser.GetArgument(name);
|
|
if (whichchar.match(/^(?:0x[0-9A-F]+|[0-9]+)$/i)) {
|
|
// $ syntax highlighting
|
|
whichchar = String.fromCodePoint(parseInt(whichchar));
|
|
}
|
|
const resultnextchar = parser.GetArgument(name);
|
|
const resultnotnextchar = parser.GetArgument(name);
|
|
const gotchar = (parser.GetNext() === whichchar);
|
|
useArgument(parser, gotchar ? resultnextchar : resultnotnextchar);
|
|
},
|
|
|
|
// This function modifies the equation numbers.
|
|
SeteqnumberFunction(parser, name) {
|
|
// Get the macro parameters
|
|
const star = parser.GetStar(); // true if there is a *
|
|
const optBrackets = parser.GetBrackets(name); // contents of optional brackets
|
|
const newsubequations = parser.GetArgument(name); // the subequations argument
|
|
const neweqsection = parser.GetArgument(name); // the eq section argument
|
|
const neweqnumber = parser.GetArgument(name); // the eq number argument
|
|
MathJax.config.subequations=newsubequations ; // a string with boolean meaning
|
|
MathJax.config.section=neweqsection ; // a string with numeric meaning
|
|
parser.tags.counter = parser.tags.allCounter = neweqnumber ;
|
|
}
|
|
});
|
|
|
|
// Create the ifstar-ifnextchar-setequnumber package
|
|
Configuration.create('ifstar-ifnextchar-setequnumber', {
|
|
handler: {macro: ['ifstar-ifnextchar-setequnumber']}
|
|
});
|
|
|
|
MathJax.startup.defaultReady();
|
|
|
|
// For forward references:
|
|
MathJax.startup.input[0].preFilters.add(({math}) => {
|
|
if (math.inputData.recompile){
|
|
MathJax.config.subequations = math.inputData.recompile.subequations;
|
|
MathJax.config.section = math.inputData.recompile.section;
|
|
}
|
|
});
|
|
MathJax.startup.input[0].postFilters.add(({math}) => {
|
|
if (math.inputData.recompile){
|
|
math.inputData.recompile.subequations = MathJax.config.subequations;
|
|
math.inputData.recompile.section = MathJax.config.section;
|
|
}
|
|
});
|
|
} // ready
|
|
}, // startup
|
|
|
|
tex: {
|
|
packages: {'[+]': ['tagFormat', 'ifstar-ifnextchar-setequnumber']},
|
|
tags: "ams",
|
|
tagFormat: {
|
|
number: function (n) {
|
|
if(MathJax.config.subequations==0)
|
|
return(MathJax.config.section + n);
|
|
else
|
|
return(MathJax.config.section + String.fromCharCode(96+n));
|
|
},
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<script
|
|
id="MathJax-script"
|
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"
|
|
></script>
|
|
\end{filecontents*}
|
|
\end{LWRwriteconf}
|
|
|
|
|
|
|
|
|
|
\begin{LWRcreatelwarpmk}
|
|
\begin{filecontents*}[overwrite]{lwarpmk.lua}
|
|
#!/usr/bin/env texlua
|
|
|
|
-- Copyright 2016-2020 Brian Dunn
|
|
|
|
printversion = "v0.88"
|
|
requiredconfversion = "2" -- also at *lwarpmk.conf
|
|
|
|
function printhelp ()
|
|
print ("lwarpmk: Use lwarpmk -h or lwarpmk --help for help.") ;
|
|
end
|
|
|
|
function printusage ()
|
|
--
|
|
-- Print the usage of the lwarpmk command:
|
|
--
|
|
print ( [[
|
|
|
|
lwarpmk print [-p project]: Compile the print version if necessary.
|
|
lwarpmk print1 [-p project]: Forced single compile of the print version.
|
|
lwarpmk printindex [-p project]: Process print indexes.
|
|
lwarpmk printglossary [-p project]: Process the glossary for the print version.
|
|
lwarpmk html [-p project]: Compile the HTML version if necessary.
|
|
lwarpmk html1 [-p project]: Forced single compile of the HTML version.
|
|
lwarpmk htmlindex [-p project]: Process HTML indexes.
|
|
lwarpmk htmlglossary [-p project]: Process the glossary for the html version.
|
|
lwarpmk again [-p project]: Touch the source code to trigger recompiles.
|
|
lwarpmk limages [-p project]: Process the "lateximages" created by lwarp.sty.
|
|
lwarpmk pdftohtml [-p project]:
|
|
For use with latexmk or a Makefile:
|
|
Converts project_html.pdf to project_html.html and individual HTML files.
|
|
Finishes the HTML conversion even if there was a compile error.
|
|
lwarpmk pdftosvg <list of file names>: Converts each PDF file to SVG.
|
|
lwarpmk epstopdf <list of file names>: Converts each EPS file to PDF.
|
|
lwarpmk clean [-p project]: Remove *.aux, *.toc, *.lof/t,
|
|
*.idx, *.ind, *.log, *_html_inc.*, .gl*,
|
|
*_html.pdf, *_html.html, *_html.sidetoc
|
|
lwarpmk cleanall [-p project]: Remove auxiliary files, project.pdf, *.html
|
|
lwarpmk cleanlimages: Removes all images from the "lateximages" directory.
|
|
lwarpmk -v: Print the version number.
|
|
lwarpmk -h: Print this help message.
|
|
lwarpmk --help: Print this help message.
|
|
|
|
]] )
|
|
-- printconf ()
|
|
end
|
|
|
|
function splitfilename ( pathandfilename )
|
|
--
|
|
-- Separates out the path and extension from a filename.
|
|
-- Returns path, filename with extension, and extension.
|
|
-- Ex: thispath, thisfilename, thisextension = splitfilename ("path/to/filename.ext")
|
|
--
|
|
-- https://www.fhug.org.uk/wiki/wiki/doku.php?id=plugins:code_snippets:
|
|
-- split_filename_in_to_path_filename_and_extension
|
|
--
|
|
if lfs.attributes(pathandfilename,"mode") == "directory" then
|
|
local strPath = pathandfilename:gsub("[\\/]$","") -- $ (syntax highlighting)
|
|
return strPath.."\\","",""
|
|
end
|
|
pathandfilename = pathandfilename.."."
|
|
return pathandfilename:match("^(.-)([^\\/]-)%.([^\\/%.]-)%.?$")
|
|
end
|
|
|
|
function splitfile (destfile,sourcefile)
|
|
--
|
|
-- Split one large sourcefile into a number of files,
|
|
-- starting with destfile.
|
|
-- The file is split at each occurance of <!--|Start file|newfilename|*
|
|
--
|
|
print ("lwarpmk: Splitting " .. sourcefile .. " into " .. destfile) ;
|
|
local sfile = io.open(sourcefile)
|
|
io.output(destfile)
|
|
for line in sfile:lines() do
|
|
i,j,copen,cstart,newfilename = string.find (line,"(.*)|(.*)|(.*)|") ;
|
|
if ( (i~= nil) and (copen == "<!--") and (cstart == "Start file")) then
|
|
-- split the file
|
|
io.output(newfilename) ;
|
|
else
|
|
-- not a splitpoint
|
|
io.write (line .. "\n") ;
|
|
end
|
|
end -- do
|
|
io.close(sfile)
|
|
end -- function
|
|
|
|
function cvalueerror ( line, linenum , cvalue )
|
|
--
|
|
-- Incorrect value, so print an error and exit.
|
|
--
|
|
print ("lwarpmk: ===")
|
|
print ("lwarpmk: " .. linenum .. " : " .. line ) ;
|
|
print (
|
|
"lwarpmk: incorrect variable value \"" .. cvalue ..
|
|
"\" in lwarpmk.conf.\n"
|
|
) ;
|
|
print ("lwarpmk: ===")
|
|
-- printconf () ;
|
|
os.exit(1) ;
|
|
end
|
|
|
|
function printhowtorecompile ()
|
|
-- Tells the user how to recompile to regenerate the configuration files.
|
|
print ("lwarpmk: The configuration files lwarpmk.conf and "..sourcename..".lwarpmkconf" )
|
|
print ("lwarpmk: must be updated. To do so, recompile" )
|
|
print ("lwarpmk: " , sourcename..".tex" )
|
|
if ( printlatexcmd == "" ) then
|
|
print ("lwarpmk: using xe/lua/pdflatex," )
|
|
else
|
|
print ("lwarpmk: using the command:")
|
|
print ("lwarpmk: " , printlatexcmd )
|
|
end
|
|
print ("lwarpmk: then use lwarpmk again.")
|
|
end -- printhowtorecompile
|
|
|
|
function ignoreconf ()
|
|
-- Global argument index
|
|
argindex = 2
|
|
end
|
|
|
|
function loadconf ()
|
|
--
|
|
-- Load settings from the project's "lwarpmk.conf" file:
|
|
--
|
|
-- Default configuration filename:
|
|
local conffile = "lwarpmk.conf"
|
|
local confroot = "lwarpmk"
|
|
-- Global argument index
|
|
argindex = 2
|
|
-- Optional configuration filename:
|
|
if ( arg[argindex] == "-p" ) then
|
|
argindex = argindex + 1
|
|
confroot = arg[argindex]
|
|
conffile = confroot..".lwarpmkconf"
|
|
argindex = argindex + 1
|
|
end
|
|
-- Additional defaults:
|
|
confversion = "0"
|
|
opsystem = "Unix"
|
|
imagesdirectory = "lateximages"
|
|
imagesname = "image-"
|
|
latexmk = "false"
|
|
printlatexcmd = ""
|
|
HTMLlatexcmd = ""
|
|
printindexcmd = ""
|
|
HTMLindexcmd = ""
|
|
latexmkindexcmd = ""
|
|
-- to be removed:
|
|
-- indexprog = "makeindex"
|
|
-- makeindexstyle = "lwarp.ist"
|
|
-- xindylanguage = "english"
|
|
-- xindycodepage = "utf8"
|
|
-- xindystyle = "lwarp.xdy"
|
|
-- pdftotextenc = "UTF-8"
|
|
glossarycmd = "makeglossaries"
|
|
-- Verify the file exists:
|
|
if (lfs.attributes(conffile,"mode")==nil) then
|
|
-- file not exists
|
|
print ("lwarpmk: ===")
|
|
print ("lwarpmk: File \"" .. conffile .."\" does not exist.")
|
|
print ("lwarpmk: Move to the project's source directory,")
|
|
print ("lwarpmk: recompile using pdflatex, xelatex, or lualatex,")
|
|
print ("lwarpmk: then try using lwarpmk again.")
|
|
if ( arg[argindex] ~= nil ) then
|
|
print (
|
|
"lwarpmk: (\"" .. confroot ..
|
|
"\" does not appear to be a project name.)"
|
|
)
|
|
end
|
|
print ("lwarpmk: ===")
|
|
printhelp () ;
|
|
os.exit(1) -- exit the entire lwarpmk script
|
|
else -- file exists
|
|
-- Read the file:
|
|
print ("lwarpmk: Reading " .. conffile ..".")
|
|
local cfile = io.open(conffile)
|
|
-- Scan each line, parsing each line as: name = [[string]]
|
|
local linenum = 0
|
|
for line in cfile:lines() do -- scan lines
|
|
linenum = linenum + 1
|
|
i,j,cvarname,cvalue = string.find (line,"([%w-_]*)%s*=%s*%[%[([^%]]*)%]%]") ;
|
|
-- Error if incorrect enclosing characters:
|
|
if ( i == nil ) then
|
|
print ("lwarpmk: ===")
|
|
print ("lwarpmk: " .. linenum .. " : " .. line ) ;
|
|
print ("lwarpmk: Incorrect entry in " .. conffile ..".\n" ) ;
|
|
print ("lwarpmk: ===")
|
|
-- printconf () ;
|
|
os.exit(1) ;
|
|
end -- nil
|
|
if ( cvarname == "confversion" ) then
|
|
confversion = cvalue
|
|
elseif ( cvarname == "opsystem" ) then
|
|
-- Verify choice of opsystem:
|
|
if ( (cvalue == "Unix") or (cvalue == "Windows") ) then
|
|
opsystem = cvalue
|
|
else
|
|
cvalueerror ( line, linenum , cvalue )
|
|
end
|
|
elseif ( cvarname == "sourcename" ) then sourcename = cvalue
|
|
elseif ( cvarname == "homehtmlfilename" ) then homehtmlfilename = cvalue
|
|
elseif ( cvarname == "htmlfilename" ) then htmlfilename = cvalue
|
|
elseif ( cvarname == "imagesdirectory" ) then imagesdirectory = cvalue
|
|
elseif ( cvarname == "imagesname" ) then imagesname = cvalue
|
|
elseif ( cvarname == "latexmk" ) then latexmk = cvalue
|
|
elseif ( cvarname == "printlatexcmd" ) then printlatexcmd = cvalue
|
|
elseif ( cvarname == "HTMLlatexcmd" ) then HTMLlatexcmd = cvalue
|
|
elseif ( cvarname == "printindexcmd" ) then printindexcmd = cvalue
|
|
elseif ( cvarname == "HTMLindexcmd" ) then HTMLindexcmd = cvalue
|
|
elseif ( cvarname == "latexmkindexcmd" ) then latexmkindexcmd = cvalue
|
|
elseif ( cvarname == "glossarycmd" ) then glossarycmd = cvalue
|
|
elseif ( cvarname == "pdftotextenc" ) then pdftotextenc = cvalue
|
|
else
|
|
print ("lwarpmk: ===")
|
|
print ("lwarpmk: " .. linenum .. " : " .. line ) ;
|
|
print (
|
|
"lwarpmk: Incorrect variable name \"" .. cvarname .. "\" in " ..
|
|
conffile ..".\n"
|
|
) ;
|
|
print ("lwarpmk: ===")
|
|
-- printconf () ;
|
|
os.exit(1) ;
|
|
end -- cvarname
|
|
end -- do scan lines
|
|
io.close(cfile)
|
|
end -- file exists
|
|
-- Error if sourcename is "lwarp".
|
|
-- This could happen if a local copy of lwarp has recently been recompiled.
|
|
if sourcename=="lwarp" then
|
|
print ("lwarpmk: ===")
|
|
print ("lwarpmk: lwarp.sty has recently been recompiled in this directory,")
|
|
print ("lwarpmk: and \"lwarpmk.conf\" is no longer set for your own project.")
|
|
print ("lwarpmk: (Perhaps you are not in your project's directory?)")
|
|
print ("lwarpmk: In your project directory, recompile your project")
|
|
print ("lwarpmk: using pdf/lua/xelatex <projectname>.")
|
|
print ("lwarpmk: After a recompile, \"lwarpmk.conf\" will be set for your project,")
|
|
print ("lwarpmk: and you may again use lwarpmk.")
|
|
print ("lwarpmk: ===")
|
|
os.exit(1)
|
|
end -- sourcename of "lwarp"
|
|
-- Select some operating-system commands:
|
|
if opsystem=="Unix" then -- For Unix / Linux / Mac OS:
|
|
rmname = "rm"
|
|
mvname = "mv"
|
|
cpname = "cp"
|
|
touchnamepre = "touch"
|
|
touchnamepost = ""
|
|
newtouchname = "touch"
|
|
dirslash = "/"
|
|
opquote= "\'"
|
|
cmdgroupopenname = " ( "
|
|
cmdgroupclosename = " ) "
|
|
seqname = " && "
|
|
bgname = " &"
|
|
elseif opsystem=="Windows" then -- For Windows
|
|
rmname = "DEL"
|
|
mvname = "MOVE"
|
|
cpname = "COPY"
|
|
touchnamepre = "COPY /b"
|
|
touchnamepost = "+,,"
|
|
newtouchname = "echo empty >"
|
|
dirslash = "\\"
|
|
opquote= "\""
|
|
cmdgroupopenname = ""
|
|
cmdgroupclosename = ""
|
|
seqname = " & "
|
|
bgname = ""
|
|
else
|
|
print ("lwarpmk: ===")
|
|
print ("lwarpmk: Select Unix or Windows for opsystem." )
|
|
print ("lwarpmk: ===")
|
|
os.exit(1)
|
|
end --- for Windows
|
|
-- Warning if the operating system does not appear to be correct,
|
|
-- in case files were transferred to another system.
|
|
if ( (package.config:sub(1,1)) ~= dirslash ) then
|
|
print ("lwarpmk: ===")
|
|
print ("lwarpmk: It appears that lwarpmk.conf is for a different operating system." )
|
|
printhowtorecompile ()
|
|
print ("lwarpmk: ===")
|
|
os.exit(1)
|
|
end
|
|
-- Error if the configuration file's version is not current:
|
|
if ( confversion ~= requiredconfversion ) then
|
|
print ("lwarpmk: ===")
|
|
printhowtorecompile ()
|
|
print ("lwarpmk: ===")
|
|
os.exit(1)
|
|
end
|
|
end -- loadconf
|
|
|
|
function executecheckerror ( executecommands , errormessage )
|
|
--
|
|
-- Execute an operating system call,
|
|
-- and maybe exit with an error message.
|
|
--
|
|
local err
|
|
err = os.execute ( executecommands )
|
|
if ( err ~= 0 ) then
|
|
print ("lwarpmk: ===")
|
|
print ("lwarpmk: " .. errormessage )
|
|
print ("lwarpmk: ===")
|
|
os.exit(1)
|
|
end
|
|
end -- executecheckerror
|
|
|
|
function refreshdate ()
|
|
os.execute(touchnamepre .. " " .. sourcename .. ".tex " .. touchnamepost)
|
|
end
|
|
|
|
function reruntoget (filesource)
|
|
--
|
|
-- Scan the LaTeX log file for the phrase "Rerun to get",
|
|
-- indicating that the file should be compiled again.
|
|
-- Return true if found.
|
|
--
|
|
local fsource = io.open(filesource)
|
|
for line in fsource:lines() do
|
|
if ( string.find(line,"Rerun to get") ~= nil ) then
|
|
io.close(fsource)
|
|
return true
|
|
end -- if
|
|
end -- do
|
|
io.close(fsource)
|
|
return false
|
|
end
|
|
|
|
function onetime (latexcmd, fsuffix)
|
|
--
|
|
-- Compile one time, return true if should compile again.
|
|
-- fsuffix is "" for print, "_html" for HTML output.
|
|
--
|
|
print("lwarpmk: Compiling with: " .. latexcmd)
|
|
executecheckerror (
|
|
latexcmd ,
|
|
"Compile error."
|
|
)
|
|
return (reruntoget(sourcename .. fsuffix .. ".log") ) ;
|
|
end
|
|
|
|
function manytimes (latexcmd, fsuffix)
|
|
--
|
|
-- Compile up to five times.
|
|
-- fsuffix is "" for print, "_html" for HTML output
|
|
--
|
|
if onetime(latexcmd, fsuffix) == true then
|
|
if onetime(latexcmd, fsuffix) == true then
|
|
if onetime(latexcmd, fsuffix) == true then
|
|
if onetime(latexcmd, fsuffix) == true then
|
|
if onetime(latexcmd, fsuffix) == true then
|
|
end end end end end
|
|
end
|
|
|
|
function verifyfileexists (filename)
|
|
--
|
|
-- Exit if the given file does not exist.
|
|
--
|
|
if (lfs.attributes ( filename , "modification" ) == nil ) then
|
|
print ("lwarpmk: ===")
|
|
print ("lwarpmk: " .. filename .. " not found." ) ;
|
|
print ("lwarpmk: ===")
|
|
os.exit (1) ;
|
|
end
|
|
end
|
|
|
|
function pdftohtml ()
|
|
--
|
|
-- Convert <project>_html.pdf into HTML files:
|
|
--
|
|
-- Convert to text:
|
|
print ("lwarpmk: Converting " .. sourcename
|
|
.."_html.pdf to " .. sourcename .. "_html.html")
|
|
os.execute("pdftotext -enc " .. pdftotextenc .. " -nopgbrk -layout "
|
|
.. sourcename .. "_html.pdf " .. sourcename .. "_html.html")
|
|
-- Split the result into individual HTML files:
|
|
splitfile (homehtmlfilename .. ".html" , sourcename .. "_html.html")
|
|
end
|
|
|
|
function removeaux ()
|
|
--
|
|
-- Remove auxiliary files:
|
|
-- All .aux files are removed since there may be many bbl*.aux files.
|
|
-- Also removes sourcename_html.pdf, sourcename_html.html,
|
|
-- and sourcename_html.sidetoc, plus comment_*.cut.
|
|
--
|
|
os.execute ( rmname .. " *.aux " ..
|
|
sourcename ..".toc " .. sourcename .. "_html.toc " ..
|
|
sourcename ..".lof " .. sourcename .. "_html.lof " ..
|
|
sourcename ..".lot " .. sourcename .. "_html.lot " ..
|
|
" *.idx " ..
|
|
" *.ind " ..
|
|
sourcename ..".ps " .. sourcename .."_html.ps " ..
|
|
sourcename ..".log " .. sourcename .. "_html.log " ..
|
|
sourcename ..".gl* " .. sourcename .. "_html.gl* " ..
|
|
sourcename .. "_html.pdf " ..
|
|
sourcename .. "_html.html " ..
|
|
sourcename .. "_html.sidetoc " ..
|
|
" *_html_inc.* " ..
|
|
" comment_*.cut"
|
|
)
|
|
end
|
|
|
|
function checkhtmlpdfexists ()
|
|
--
|
|
-- Error if the HTML document does not exist.
|
|
-- The lateximages are drawn from the HTML PDF version of the document,
|
|
-- so "lwarpmk html" must be done before "lwarpmk limages".
|
|
--
|
|
local htmlpdffile = io.open(sourcename .. "_html.pdf", "r")
|
|
if ( htmlpdffile == nil ) then
|
|
print ("")
|
|
print ("lwarpmk: ===")
|
|
print ("lwarpmk: The HTML version of the document does not exist.")
|
|
print ("lwarpmk: Enter \"lwarpmk html\" to compile the HTML version.")
|
|
print ("lwarpmk: ===")
|
|
os.exit(1)
|
|
end
|
|
io.close (htmlpdffile)
|
|
end -- checkhtmlpdfexists
|
|
|
|
function warnlimages ()
|
|
--
|
|
-- Warning of a missing <sourcename>-images.txt file:
|
|
print ("lwarpmk: ===")
|
|
print ("lwarpmk: \"" .. sourcename .. "-images.txt\" does not exist.")
|
|
print ("lwarpmk: Your project does not use SVG math or other lateximages,")
|
|
print ("lwarpmk: or the file has been deleted somehow.")
|
|
print ("lwarpmk: Use \"lwarpmk html1\" to recompile your project")
|
|
print ("lwarpmk: and recreate \"" .. sourcename .. "-images.txt\".")
|
|
print ("lwarpmk: If your project does not use SVG math or other lateximages,")
|
|
print ("lwarpmk: then \"" .. sourcename .. "-images.txt\" will never exist, and")
|
|
print ("lwarpmk: \"lwarpmk limages\" will not be necessary.")
|
|
print ("lwarpmk: ===")
|
|
end -- warnlimages
|
|
|
|
function warnlimagesrecompile ()
|
|
-- Warning if must recompile before creating limages:
|
|
print ("")
|
|
print ("lwarpmk: ===")
|
|
print ("lwarpmk: Cross-references are not yet correct.")
|
|
print ("lwarpmk: The document must be recompiled before creating the lateximages.")
|
|
print ("lwarpmk: Enter \"lwarpmk html1\" again, then try \"lwarpmk limages\" again.")
|
|
print ("lwarpmk: ===")
|
|
end --warnlimagesrecompile
|
|
|
|
function checklimages ()
|
|
--
|
|
-- Check <sourcename>.txt to see if need to recompile first.
|
|
-- If any entry has a page number of zero, then there were incorrect images.
|
|
--
|
|
print ("lwarpmk: Checking for a valid " .. sourcename .. "-images.txt file.")
|
|
local limagesfile = io.open(sourcename .. "-images.txt", "r")
|
|
if ( limagesfile == nil ) then
|
|
warnlimages ()
|
|
os.exit(1)
|
|
end
|
|
-- Track warning to recompile if find a page 0
|
|
local pagezerowarning = false
|
|
-- Scan <sourcename>.txt
|
|
for line in limagesfile:lines() do
|
|
-- lwimgpage is the page number in the PDF which has the image
|
|
-- lwimghash is true if this filename is a hash
|
|
-- lwimgname is the lateximage filename root to assign for the image
|
|
i,j,lwimgpage,lwimghash,lwimgname = string.find (line,"|(.*)|(.*)|(.*)|")
|
|
-- For each entry:
|
|
if ( (i~=nil) ) then
|
|
-- If the page number is 0, image references are incorrect
|
|
-- and must recompile the soure document:
|
|
if ( lwimgpage == "0" ) then
|
|
pagezerowarning = true
|
|
end
|
|
end -- if i~=nil
|
|
end -- do
|
|
-- The last line should be |end|end|end|.
|
|
-- If not, the compile must have aborted, and the images are incomplete.
|
|
if ( lwimgpage ~= "end" ) then
|
|
warnlimagesrecompile()
|
|
os.exit(1) ;
|
|
end
|
|
if ( pagezerowarning ) then
|
|
warnlimagesrecompile()
|
|
os.exit(1) ;
|
|
end -- pagezerowarning
|
|
end -- checklimages
|
|
|
|
function createuniximage ( lwimgfullname )
|
|
--
|
|
-- Create one lateximage for Unix / Linux / Mac OS.
|
|
--
|
|
executecheckerror (
|
|
cmdgroupopenname ..
|
|
"pdfseparate -f " .. lwimgpage .. " -l " .. lwimgpage .. " " ..
|
|
sourcename .."_html.pdf " ..
|
|
imagesdirectory .. dirslash .."lateximagetemp-%d" .. ".pdf" ..
|
|
seqname ..
|
|
-- Crop the image:
|
|
"pdfcrop --hires " .. imagesdirectory .. dirslash .. "lateximagetemp-" ..
|
|
lwimgpage .. ".pdf " ..
|
|
imagesdirectory .. dirslash .. lwimgname .. ".pdf" ..
|
|
seqname ..
|
|
-- Convert the image to svg:
|
|
"pdftocairo -svg -noshrink " .. imagesdirectory .. dirslash .. lwimgname .. ".pdf " ..
|
|
imagesdirectory .. dirslash .. lwimgname ..".svg" ..
|
|
seqname ..
|
|
-- Remove the temporary files:
|
|
rmname .. " " .. imagesdirectory .. dirslash .. lwimgname .. ".pdf" .. seqname ..
|
|
rmname .. " " .. imagesdirectory .. dirslash .. "lateximagetemp-" .. lwimgpage .. ".pdf" ..
|
|
cmdgroupclosename .. " >/dev/null " .. bgname
|
|
,
|
|
"File error trying to convert " .. lwimgfullname
|
|
)
|
|
-- Every 32 images, wait for completion at below normal priority,
|
|
-- allowing other image tasks to catch up.
|
|
numimageprocesses = numimageprocesses + 1
|
|
if ( numimageprocesses > 32 ) then
|
|
numimageprocesses = 0
|
|
print ( "lwarpmk: waiting" )
|
|
executecheckerror ( "wait" , "File error trying to wait.")
|
|
end
|
|
end -- createuniximage
|
|
|
|
function createwindowsimage ( lwimgfullname )
|
|
--
|
|
-- Create one lateximage for Windows.
|
|
--
|
|
-- Every 32 images, wait for completion at below normal priority,
|
|
-- allowing other image tasks to catch up.
|
|
numimageprocesses = numimageprocesses + 1
|
|
if ( numimageprocesses > 32 ) then
|
|
numimageprocesses = 0
|
|
thiswaitcommand = "/WAIT /BELOWNORMAL"
|
|
print ( "lwarpmk: waiting" )
|
|
else
|
|
thiswaitcommand = ""
|
|
end
|
|
-- Execute the image generation command
|
|
executecheckerror (
|
|
"start /B " .. thiswaitcommand .. " \"\" lwarp_one_limage " ..
|
|
lwimgpage .. " " ..
|
|
lwimghash .. " " ..
|
|
lwimgname .. " " ..
|
|
sourcename .. " <nul >nul"
|
|
,
|
|
"File error trying to create image."
|
|
)
|
|
end -- createwindowsimage
|
|
|
|
function createonelateximage ( line )
|
|
--
|
|
-- Given the next line of <sourcename>.txt, convert a single image.
|
|
--
|
|
-- lwimgpage is the page number in the PDF which has the image
|
|
-- lwimghash is true if this filename is a hash
|
|
-- lwimgname is the lateximage filename root to assign for the image
|
|
i,j,lwimgpage,lwimghash,lwimgname = string.find (line,"|(.*)|(.*)|(.*)|")
|
|
-- For each entry:
|
|
if ( (i~=nil) ) then
|
|
-- Skip if the page number is 0:
|
|
if ( lwimgpage == "0" ) then
|
|
pagezerowarning = true
|
|
-- Skip if the page number is "end":
|
|
else if ( lwimgpage == "end" ) then
|
|
else
|
|
-- Skip is this image is hashed and already exists:
|
|
local lwimgfullname = imagesdirectory .. dirslash .. lwimgname .. ".svg"
|
|
if (
|
|
(lwimghash ~= "true") or
|
|
(lfs.attributes(lwimgfullname,"mode")==nil) -- file not exists
|
|
)
|
|
then -- not hashed or not exists:
|
|
-- Print the name of the file being generated:
|
|
print ( "lwarpmk: " .. lwimgname )
|
|
-- Touch/create the dest so that only once instance tries to build it:
|
|
executecheckerror (
|
|
newtouchname .. " " .. lwimgfullname ,
|
|
"File error trying to touch " .. lwimgfullname
|
|
)
|
|
-- Separate out the image into its own single-page pdf:
|
|
if opsystem=="Unix" then
|
|
createuniximage (lwimgfullname)
|
|
elseif opsystem=="Windows" then
|
|
createwindowsimage (lwimgfullname)
|
|
end
|
|
end -- not hashed or not exists
|
|
end -- not page "end"
|
|
end -- not page 0
|
|
end -- not nil
|
|
end -- createonelateximage
|
|
|
|
function createlateximages ()
|
|
--
|
|
-- Create lateximages based on <sourcename>-images.txt:
|
|
--
|
|
-- See if the document must be recompiled first:
|
|
checklimages ()
|
|
-- See if the HTML version exists:
|
|
checkhtmlpdfexists ()
|
|
-- Attempt to create the lateximages:
|
|
print ("lwarpmk: Creating lateximages.")
|
|
local limagesfile = io.open(sourcename .. "-images.txt", "r")
|
|
if ( limagesfile == nil ) then
|
|
warnlimages ()
|
|
os.exit(1)
|
|
end
|
|
-- Create the lateximages directory, ignore error if already exists
|
|
err = os.execute("mkdir " .. imagesdirectory)
|
|
-- For Windows, create lwarp_one_limage.cmd from lwarp_one_limage.txt:
|
|
if opsystem=="Windows" then
|
|
executecheckerror (
|
|
cpname .. " lwarp_one_limage.txt lwarp_one_limage.cmd" ,
|
|
"File error trying to copy lwarp_one_limage.txt to lwarp_one_limage.cmd"
|
|
)
|
|
end -- create lwarp_one_limage.cmd
|
|
-- Track the number of parallel processes
|
|
numimageprocesses = 0
|
|
-- Track warning to recompile if find a page 0
|
|
pagezerowarning = false
|
|
-- Scan <sourcename>.txt
|
|
for line in limagesfile:lines() do
|
|
createonelateximage ( line )
|
|
end -- do
|
|
io.close(limagesfile)
|
|
print ( "lwarpmk limages: ===")
|
|
print ( "lwarpmk limages: Wait a moment for the images to complete" )
|
|
print ( "lwarpmk limages: before reloading the page." )
|
|
print ( "lwarpmk limages: ===")
|
|
print ( "lwarpmk limages: Done." )
|
|
if ( pagezerowarning == true ) then
|
|
print ( "lwarpmk limages: WARNING: Images will be incorrect." )
|
|
print ( "lwarpmk limages: Enter \"lwarpmk cleanlimages\", then" )
|
|
print ( "lwarpmk limages: recompile the document one more time, then" )
|
|
print ( "lwarpmk limages: repeat \"lwarpmk images\" again." )
|
|
end -- pagezerowarning
|
|
end -- function
|
|
|
|
function convertepstopdf ()
|
|
--
|
|
-- Converts EPS files to PDF files.
|
|
-- The filenames are arg[argindex] and up.
|
|
-- arg[1] is the command "epstopdf".
|
|
--
|
|
ignoreconf ()
|
|
for i = argindex , #arg do
|
|
if (lfs.attributes(arg[i],"mode")==nil) then
|
|
print ("lwarpmk: File \"" .. arg[i] .. "\" does not exist.")
|
|
else
|
|
print ("lwarpmk: Converting \"" .. arg[i] .. "\"")
|
|
thispath, thisfilename, thisextension = splitfilename(arg[i])
|
|
if ( thispath == nil ) then
|
|
os.execute ( "epstopdf " .. arg[i] )
|
|
else
|
|
os.execute (
|
|
"epstopdf " ..
|
|
thispath .. thisfilename .. "." .. thisextension .. " " ..
|
|
thispath .. thisfilename .. ".pdf"
|
|
)
|
|
end
|
|
end -- if
|
|
end -- do
|
|
end --function
|
|
|
|
function convertpdftosvg ()
|
|
--
|
|
-- Converts PDF files to SVG files.
|
|
-- The filenames are arg[argindex] and up.
|
|
-- arg[1] is the command "pdftosvg".
|
|
--
|
|
ignoreconf ()
|
|
for i = argindex , #arg do
|
|
if (lfs.attributes(arg[i],"mode")==nil) then
|
|
print ("lwarpmk: File \"" .. arg[i] .. "\" does not exist.")
|
|
else
|
|
print ("lwarpmk: Converting \"" .. arg[i] .. "\"")
|
|
thispath, thisfilename, thisextension = splitfilename(arg[i])
|
|
if ( thispath == nil ) then
|
|
os.execute ( "pdftocairo -svg " .. arg[i] )
|
|
else
|
|
os.execute (
|
|
"pdftocairo -svg " ..
|
|
thispath .. thisfilename .. "." .. thisextension .. " " ..
|
|
thispath .. thisfilename .. ".svg"
|
|
)
|
|
end
|
|
end -- if
|
|
end -- do
|
|
end --function
|
|
|
|
-- Force an update and conclude processing:
|
|
function updateanddone ()
|
|
print ("lwarpmk: Forcing an update of " .. sourcename ..".tex.")
|
|
refreshdate ()
|
|
print ("lwarpmk: " .. sourcename ..".tex is ready to be recompiled.")
|
|
print ("lwarpmk: Done.")
|
|
end -- function
|
|
|
|
-- Start of the main code: --
|
|
|
|
-- lwarpmk --version :
|
|
|
|
if (arg[1] == "--version") then
|
|
print ( "lwarpmk: " .. printversion )
|
|
|
|
else -- not --version
|
|
|
|
-- print intro:
|
|
|
|
print ("lwarpmk: " .. printversion .. " Automated make for the LaTeX Lwarp package.")
|
|
|
|
-- lwarpmk print:
|
|
|
|
if arg[1] == "print" then
|
|
loadconf ()
|
|
if ( latexmk == "true" ) then
|
|
print ("lwarpmk: Compiling with: " .. printlatexcmd)
|
|
executecheckerror (
|
|
printlatexcmd ,
|
|
"Compile error."
|
|
)
|
|
print ("lwarpmk: Done.")
|
|
else -- not latexmk
|
|
verifyfileexists (sourcename .. ".tex") ;
|
|
-- See if up to date:
|
|
if (
|
|
( lfs.attributes ( sourcename .. ".pdf" , "modification" ) == nil ) or
|
|
(
|
|
lfs.attributes ( sourcename .. ".tex" , "modification" ) >
|
|
lfs.attributes ( sourcename .. ".pdf" , "modification" )
|
|
)
|
|
) then
|
|
-- Recompile if not yet up to date:
|
|
manytimes(printlatexcmd, "")
|
|
print ("lwarpmk: Done.") ;
|
|
else
|
|
print ("lwarpmk: " .. sourcename .. ".pdf is up to date.") ;
|
|
end
|
|
end -- not latexmk
|
|
|
|
-- lwarpmk print1:
|
|
|
|
elseif arg[1] == "print1" then
|
|
loadconf ()
|
|
verifyfileexists (sourcename .. ".tex") ;
|
|
onetime(printlatexcmd, "")
|
|
print ("lwarpmk: Done.") ;
|
|
|
|
-- lwarpmk printindex:
|
|
-- Compile the index then touch the source
|
|
-- to trigger a recompile of the document:
|
|
|
|
elseif arg[1] == "printindex" then
|
|
loadconf ()
|
|
os.execute ( printindexcmd )
|
|
print ("lwarpmk: -------")
|
|
updateanddone ()
|
|
|
|
-- lwarpmk printglossary:
|
|
-- Compile the glossary then touch the source
|
|
-- to trigger a recompile of the document:
|
|
|
|
elseif arg[1] == "printglossary" then
|
|
loadconf ()
|
|
print ("lwarpmk: Processing the glossary.")
|
|
|
|
os.execute(glossarycmd .. " " .. sourcename)
|
|
updateanddone ()
|
|
|
|
-- lwarpmk html:
|
|
|
|
elseif arg[1] == "html" then
|
|
loadconf ()
|
|
if ( latexmk == "true" ) then
|
|
print ("lwarpmk: Compiling with: " .. HTMLlatexcmd)
|
|
executecheckerror (
|
|
HTMLlatexcmd ,
|
|
"Compile error."
|
|
)
|
|
pdftohtml ()
|
|
print ("lwarpmk: Done.")
|
|
else -- not latexmk
|
|
verifyfileexists ( sourcename .. ".tex" ) ;
|
|
-- See if exists and is up to date:
|
|
if (
|
|
( lfs.attributes ( homehtmlfilename .. ".html" , "modification" ) == nil ) or
|
|
(
|
|
lfs.attributes ( sourcename .. ".tex" , "modification" ) >
|
|
lfs.attributes ( homehtmlfilename .. ".html" , "modification" )
|
|
)
|
|
) then
|
|
-- Recompile if not yet up to date:
|
|
manytimes(HTMLlatexcmd, "_html")
|
|
pdftohtml ()
|
|
print ("lwarpmk: Done.")
|
|
else
|
|
print ("lwarpmk: " .. homehtmlfilename .. ".html is up to date.")
|
|
end
|
|
end -- not latexmk
|
|
|
|
-- lwarpmk html1:
|
|
|
|
elseif arg[1] == "html1" then
|
|
loadconf ()
|
|
verifyfileexists ( sourcename .. ".tex" ) ;
|
|
onetime(HTMLlatexcmd, "_html")
|
|
pdftohtml ()
|
|
print ("lwarpmk: Done.")
|
|
|
|
-- lwarpmk pdftohtml:
|
|
elseif arg[1] == "pdftohtml" then
|
|
loadconf ()
|
|
pdftohtml ()
|
|
|
|
-- lwarpmk htmlindex:
|
|
-- Compile the index then touch the source
|
|
-- to trigger a recompile of the document:
|
|
|
|
elseif arg[1] == "htmlindex" then
|
|
loadconf ()
|
|
os.execute ( HTMLindexcmd )
|
|
print ("lwarpmk: -------")
|
|
updateanddone ()
|
|
|
|
-- lwarpmk htmlglossary:
|
|
-- Compile the glossary then touch the source
|
|
-- to trigger a recompile of the document.
|
|
-- The <sourcename>.xdy file is created by the glossaries package.
|
|
|
|
elseif arg[1] == "htmlglossary" then
|
|
loadconf ()
|
|
print ("lwarpmk: Processing the glossary.")
|
|
os.execute(glossarycmd .. " " .. sourcename .. "_html")
|
|
updateanddone ()
|
|
|
|
-- lwarpmk limages:
|
|
-- Scan the <sourcename>.txt file to create lateximages.
|
|
|
|
elseif arg[1] == "limages" then
|
|
loadconf ()
|
|
print ("lwarpmk: Processing images.")
|
|
createlateximages ()
|
|
print ("lwarpmk: Done.")
|
|
|
|
-- lwarpmk again:
|
|
-- Touch the source to trigger a recompile.
|
|
|
|
elseif arg[1] == "again" then
|
|
loadconf ()
|
|
updateanddone ()
|
|
|
|
-- lwarpmk clean:
|
|
-- Remove project.aux, .toc, .lof, .lot, .log, *.idx, *.ind, *_html_inc.*, .gl*
|
|
|
|
elseif arg[1] == "clean" then
|
|
loadconf ()
|
|
removeaux ()
|
|
print ("lwarpmk: Done.")
|
|
|
|
-- lwarpmk cleanall
|
|
-- Remove project.aux, .toc, .lof, .lot, .log, *.idx, *.ind, *_html_inc.*, .gl*
|
|
-- and also project.pdf, project.dvi, *.html
|
|
|
|
elseif arg[1] == "cleanall" then
|
|
loadconf ()
|
|
removeaux ()
|
|
os.execute ( rmname .. " " ..
|
|
sourcename .. ".pdf " .. sourcename .. "_html.pdf " ..
|
|
sourcename .. ".dvi " .. sourcename .. "_html.dvi " ..
|
|
"*.html"
|
|
)
|
|
print ("lwarpmk: Done.")
|
|
|
|
-- lwarpmk cleanlimages
|
|
-- Remove images from the imagesdirectory.
|
|
|
|
elseif arg[1] == "cleanlimages" then
|
|
loadconf ()
|
|
os.execute ( rmname .. " " .. imagesdirectory .. dirslash .. "*" )
|
|
print ("lwarpmk: Done.")
|
|
|
|
-- lwarpmk epstopdf <list of file names>
|
|
-- Convert EPS files to PDF using epstopdf
|
|
elseif arg[1] == "epstopdf" then
|
|
convertepstopdf ()
|
|
print ("lwarpmk: Done.")
|
|
|
|
-- lwarpmk pdftosvg <list of file names>
|
|
-- Convert PDF files to SVG using pdftocairo
|
|
elseif arg[1] == "pdftosvg" then
|
|
convertpdftosvg ()
|
|
print ("lwarpmk: Done.")
|
|
|
|
-- lwarpmk with no argument :
|
|
|
|
elseif (arg[1] == nil) then
|
|
printhelp ()
|
|
|
|
-- lwarpmk -v:
|
|
|
|
elseif (arg[1] == "-v" ) then
|
|
-- The version number has already been printed
|
|
-- by the lwarpmk intro.
|
|
|
|
-- lwarpmk -h or lwarpmk --help :
|
|
|
|
elseif (arg[1] == "-h" ) or (arg[1] == "--help") then
|
|
printusage ()
|
|
|
|
-- Unknown command:
|
|
|
|
else
|
|
printhelp ()
|
|
print ("\nlwarpmk: ****** Unknown command \""..arg[1].."\". ******\n")
|
|
end
|
|
|
|
end -- not --version
|
|
\end{filecontents*}
|
|
\end{LWRcreatelwarpmk}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
|
|
|
|
\newcommand*{\LWR@depthnone}{-5}
|
|
\newcommand*{\LWR@depthfinished}{-4}
|
|
\newcommand*{\LWR@depthbook}{-2}
|
|
\newcommand*{\LWR@depthpart}{-1}
|
|
\newcommand*{\LWR@depthchapter}{0}
|
|
\newcommand*{\LWR@depthsection}{1}
|
|
\newcommand*{\LWR@depthsubsection}{2}
|
|
\newcommand*{\LWR@depthsubsubsection}{3}
|
|
\newcommand*{\LWR@depthparagraph}{4}
|
|
\newcommand*{\LWR@depthsubparagraph}{5}
|
|
\newcommand*{\LWR@depthlist}{6}
|
|
\newcommand*{\LWR@depthlistitem}{7}
|
|
\let\LWR@depthdescitem\LWR@depthlistitem
|
|
|
|
|
|
\newcommand*{\LWR@closeone}{}% top of the stack
|
|
\newcommand*{\LWR@closetwo}{}
|
|
\newcommand*{\LWR@closethree}{}
|
|
\newcommand*{\LWR@closefour}{}
|
|
\newcommand*{\LWR@closefive}{}
|
|
\newcommand*{\LWR@closesix}{}
|
|
\newcommand*{\LWR@closeseven}{}
|
|
\newcommand*{\LWR@closeeight}{}
|
|
\newcommand*{\LWR@closenine}{}
|
|
\newcommand*{\LWR@closeten}{}
|
|
\newcommand*{\LWR@closeeleven}{}
|
|
\newcommand*{\LWR@closetwelve}{}
|
|
|
|
|
|
|
|
\newcommand*{\LWR@closedepthone}{\LWR@depthnone}% top of the stack
|
|
\newcommand*{\LWR@closedepthtwo}{\LWR@depthnone}
|
|
\newcommand*{\LWR@closedepththree}{\LWR@depthnone}
|
|
\newcommand*{\LWR@closedepthfour}{\LWR@depthnone}
|
|
\newcommand*{\LWR@closedepthfive}{\LWR@depthnone}
|
|
\newcommand*{\LWR@closedepthsix}{\LWR@depthnone}
|
|
\newcommand*{\LWR@closedepthseven}{\LWR@depthnone}
|
|
\newcommand*{\LWR@closedeptheight}{\LWR@depthnone}
|
|
\newcommand*{\LWR@closedepthnine}{\LWR@depthnone}
|
|
\newcommand*{\LWR@closedepthten}{\LWR@depthnone}
|
|
\newcommand*{\LWR@closedeptheleven}{\LWR@depthnone}
|
|
\newcommand*{\LWR@closedepthtwelve}{\LWR@depthnone}
|
|
|
|
|
|
|
|
\NewDocumentCommand{\LWR@pushclose}{m}
|
|
{%
|
|
\global\let\LWR@closetwelve\LWR@closeeleven%
|
|
\global\let\LWR@closeeleven\LWR@closeten%
|
|
\global\let\LWR@closeten\LWR@closenine%
|
|
\global\let\LWR@closenine\LWR@closeeight%
|
|
\global\let\LWR@closeeight\LWR@closeseven%
|
|
\global\let\LWR@closeseven\LWR@closesix%
|
|
\global\let\LWR@closesix\LWR@closefive%
|
|
\global\let\LWR@closefive\LWR@closefour%
|
|
\global\let\LWR@closefour\LWR@closethree%
|
|
\global\let\LWR@closethree\LWR@closetwo%
|
|
\global\let\LWR@closetwo\LWR@closeone%
|
|
\global\csletcs{LWR@closeone}{LWR@printclose#1}%
|
|
\global\let\LWR@closedepthtwelve\LWR@closedeptheleven%
|
|
\global\let\LWR@closedeptheleven\LWR@closedepthten%
|
|
\global\let\LWR@closedepthten\LWR@closedepthnine%
|
|
\global\let\LWR@closedepthnine\LWR@closedeptheight%
|
|
\global\let\LWR@closedeptheight\LWR@closedepthseven%
|
|
\global\let\LWR@closedepthseven\LWR@closedepthsix%
|
|
\global\let\LWR@closedepthsix\LWR@closedepthfive%
|
|
\global\let\LWR@closedepthfive\LWR@closedepthfour%
|
|
\global\let\LWR@closedepthfour\LWR@closedepththree%
|
|
\global\let\LWR@closedepththree\LWR@closedepthtwo%
|
|
\global\let\LWR@closedepthtwo\LWR@closedepthone%
|
|
\global\csletcs{LWR@closedepthone}{LWR@depth#1}%
|
|
}
|
|
|
|
|
|
\newcommand*{\LWR@popclose}
|
|
{%
|
|
\global\let\LWR@closeone\LWR@closetwo%
|
|
\global\let\LWR@closetwo\LWR@closethree%
|
|
\global\let\LWR@closethree\LWR@closefour%
|
|
\global\let\LWR@closefour\LWR@closefive%
|
|
\global\let\LWR@closefive\LWR@closesix%
|
|
\global\let\LWR@closesix\LWR@closeseven%
|
|
\global\let\LWR@closeseven\LWR@closeeight%
|
|
\global\let\LWR@closeeight\LWR@closenine%
|
|
\global\let\LWR@closenine\LWR@closeten%
|
|
\global\let\LWR@closeten\LWR@closeeleven%
|
|
\global\let\LWR@closeeleven\LWR@closetwelve%
|
|
\global\let\LWR@closedepthone\LWR@closedepthtwo%
|
|
\global\let\LWR@closedepthtwo\LWR@closedepththree%
|
|
\global\let\LWR@closedepththree\LWR@closedepthfour%
|
|
\global\let\LWR@closedepthfour\LWR@closedepthfive%
|
|
\global\let\LWR@closedepthfive\LWR@closedepthsix%
|
|
\global\let\LWR@closedepthsix\LWR@closedepthseven%
|
|
\global\let\LWR@closedepthseven\LWR@closedeptheight%
|
|
\global\let\LWR@closedeptheight\LWR@closedepthnine%
|
|
\global\let\LWR@closedepthnine\LWR@closedepthten%
|
|
\global\let\LWR@closedepthten\LWR@closedeptheleven%
|
|
\global\let\LWR@closedeptheleven\LWR@closedepthtwelve%
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpHTML}
|
|
\NewDocumentCommand{\LWR@setexparray}{m m m}{%
|
|
\let\LWR@temp@par\par%
|
|
\let\par\relax%
|
|
\edef\LWR@thisexparrayname{#1#2}%
|
|
\ifstrempty{#3}%
|
|
{\csdef{\LWR@thisexparrayname}{}}%
|
|
{\csedef{\LWR@thisexparrayname}{#3}}%
|
|
\let\par\LWR@temp@par%
|
|
}
|
|
\newcommand*{\LWR@getexparray}[2]{%
|
|
\@nameuse{#1#2}%
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpall}
|
|
\newcommand{\StartDefiningTabulars}{%
|
|
\LWR@traceinfo{StartDefiningTabulars}%
|
|
\warpHTMLonly{\catcode`\&=\active}%
|
|
}
|
|
\newcommand{\StopDefiningTabulars}{%
|
|
\LWR@traceinfo{StopDefiningTabulars}%
|
|
\warpHTMLonly{\catcode`\&=4}%
|
|
}
|
|
|
|
\newbool{LWR@mathmacro}
|
|
\boolfalse{LWR@mathmacro}
|
|
|
|
\newcommand{\StartDefiningMath}{%
|
|
\LWR@traceinfo{StartDefiningMath}%
|
|
\warpHTMLonly{\catcode`\$=\active}%
|
|
}
|
|
\newcommand{\StopDefiningMath}{%
|
|
\LWR@traceinfo{StopDefiningMath}%
|
|
\warpHTMLonly{\catcode`\$=3}% math shift
|
|
}
|
|
|
|
\end{warpall}
|
|
|
|
\begin{warpall}
|
|
\newbool{LWR@dynamicmath}
|
|
\boolfalse{LWR@dynamicmath}
|
|
\newcommand{\inlinemathother}{%
|
|
\LWR@traceinfo{inlinemathother}%
|
|
\booltrue{LWR@dynamicmath}%
|
|
}
|
|
\newcommand{\inlinemathnormal}{%
|
|
\LWR@traceinfo{inlinemathnormal}%
|
|
\boolfalse{LWR@dynamicmath}%
|
|
}
|
|
\end{warpall}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\let\LWR@origampersand\&
|
|
\newcommand*{\HTMLentity}[1]{%
|
|
\begingroup%
|
|
\LWR@FBcancel%
|
|
\LWR@origampersand#1;%
|
|
\endgroup%
|
|
}
|
|
\newcommand*{\HTMLunicode}[1]{\HTMLentity{\LWR@origpound{}x#1}}
|
|
|
|
\renewrobustcmd*{\&}{\HTMLentity{amp}}
|
|
|
|
\let\LWR@origtextless\textless
|
|
\renewrobustcmd*{\textless}{\HTMLentity{lt}}
|
|
|
|
\let\LWR@origtextgreater\textgreater
|
|
\renewrobustcmd*{\textgreater}{\HTMLentity{gt}}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
|
|
\begin{warpall}
|
|
|
|
\providecommand*{\BaseJobname}{\jobname}
|
|
|
|
\providecommand*{\HTMLFilename}{}
|
|
\providecommand*{\HomeHTMLFilename}{\BaseJobname}
|
|
|
|
\newcommand*{\SetHTMLFileNumber}[1]{%
|
|
\setcounter{LWR@htmlfilenumber}{#1}%
|
|
}
|
|
|
|
\newbool{FileSectionNames}
|
|
\booltrue{FileSectionNames}
|
|
|
|
\end{warpall}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newcounter{LWR@HTMLpagenum}
|
|
\setcounter{LWR@HTMLpagenum}{0}
|
|
|
|
\newcounter{LWR@htmlseqfilenumber}
|
|
\setcounter{LWR@htmlseqfilenumber}{0}
|
|
|
|
\newbool{LWR@setseqfilelabel}
|
|
\setbool{LWR@setseqfilelabel}{false}
|
|
|
|
\newcounter{LWR@htmlfilenumber}
|
|
\setcounter{LWR@htmlfilenumber}{0}
|
|
|
|
\newcommand*{\LWR@htmlsectionfilename}[1]{%
|
|
\LWR@traceinfo{LWR@htmlsectionfilename A !\detokenize{#1}!}%
|
|
\begingroup%
|
|
\LWR@disablepinyin%
|
|
\LWR@sanitize{#1}%
|
|
\LWR@traceinfo{about to compare with ??}%
|
|
\ifdefstring{\LWR@sanitized}{??}
|
|
{\LWR@traceinfo{found ??}}%
|
|
{\LWR@traceinfo{not found ??}}%
|
|
\LWR@traceinfo{about to compare with zero or empty}%
|
|
\ifboolexpr{
|
|
test {\ifdefstring{\LWR@sanitized}{0}} or
|
|
test {\ifdefstring{\LWR@sanitized}{}} or
|
|
test {\ifdefstring{\LWR@sanitized}{??}}
|
|
}
|
|
{%
|
|
\LWR@traceinfo{LWR@htmlsectionfilename B \HomeHTMLFilename.html}%
|
|
\HomeHTMLFilename.html%
|
|
}%
|
|
{%
|
|
\LWR@traceinfo{LWR@htmlsectionfilename C \LWR@sanitized}%
|
|
\ifboolexpr{
|
|
test{\ifdefvoid{\HTMLFilename}} and
|
|
(
|
|
test{\ifdefstring{\LWR@sanitized}{Index}} or
|
|
test{\ifdefstring{\LWR@sanitized}{index}}
|
|
)
|
|
}%
|
|
{%
|
|
\LWR@traceinfo{Adding a zero to the index filename.}%
|
|
\LWR@sanitized-0.html%
|
|
}%
|
|
{%
|
|
\HTMLFilename\LWR@isolate{\LWR@sanitized}.html%
|
|
}%
|
|
}%
|
|
\LWR@traceinfo{LWR@htmlsectionfilename Z}%
|
|
\endgroup%
|
|
}
|
|
|
|
\newcommand*{\LWR@htmlrefsectionfilename}[1]{%
|
|
\LWR@traceinfo{LWR@htmlrefsectionfilename: !\detokenize{#1}!}%
|
|
\begingroup%
|
|
\LWR@nullfonts%
|
|
\LWR@htmlsectionfilename{\LWR@htmlfileref{#1}}%
|
|
\endgroup%
|
|
\LWR@traceinfo{LWR@htmlrefsectionfilename: done}%
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpall}
|
|
|
|
\newcommand{\linkhomename}{Home}
|
|
|
|
\end{warpall}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newcommand*{\LinkHome}{%
|
|
\LWR@subhyperrefclass{\HomeHTMLFilename.html}{\linkhomename}{linkhome}%
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpprint}
|
|
|
|
\AtBeginDocument{
|
|
\@ifundefined{hyperref}{
|
|
\newcommand*{\LinkHome}{%
|
|
\linkhomename\ --- page \pageref{\BaseJobname-page-LWRfirstpage}%
|
|
}
|
|
}{
|
|
\newcommand*{\LinkHome}{%
|
|
\hyperref[\BaseJobname-page-LWRfirstpage]{\linkhomename}%
|
|
}
|
|
}
|
|
}
|
|
|
|
\AfterEndPreamble{\label{\BaseJobname-page-LWRfirstpage}}
|
|
|
|
\end{warpprint}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newcommand*{\LWR@topnavigation}{%
|
|
\LWR@htmlelementclassline{nav}{topnavigation}{\LinkHome}
|
|
}
|
|
|
|
\newcommand*{\LWR@botnavigation}{%
|
|
\LWR@htmlelementclassline{nav}{botnavigation}{\LinkHome}
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpall}
|
|
|
|
\newcommand*{\linkpreviousname}{Previous}
|
|
|
|
\newcommand*{\linknextname}{Next}
|
|
|
|
\end{warpall}
|
|
|
|
\begin{warpprint}
|
|
|
|
\newcommand*{\LinkPrevious}{}
|
|
|
|
\newcommand*{\LinkNext}{}
|
|
|
|
\end{warpprint}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newcommand*{\LinkPrevious}{%
|
|
\ifnumless{\value{LWR@htmlseqfilenumber}}{1}{}{%
|
|
\setcounter{LWR@tempcountone}{\value{LWR@htmlseqfilenumber}-1}%
|
|
\LWR@subhyperrefclass{%
|
|
\LWR@htmlrefsectionfilename{%
|
|
\BaseJobname-autofile-\arabic{LWR@tempcountone}%
|
|
}%
|
|
}{\linkpreviousname}{linkhome}%
|
|
}%
|
|
}
|
|
|
|
\newcommand*{\LinkNext}{%
|
|
\ifcsdef{r@\BaseJobname-autofile-last@lwarp}{%
|
|
\edef\LWR@tempone{%
|
|
\LWR@htmlfileref{\BaseJobname-autofile-\arabic{LWR@htmlseqfilenumber}}%
|
|
}%
|
|
\edef\LWR@temptwo{%
|
|
\LWR@htmlfileref{\BaseJobname-autofile-last}%
|
|
}%
|
|
\ifdefequal{\LWR@tempone}{\LWR@temptwo}{}{%
|
|
\setcounter{LWR@tempcountone}{\value{LWR@htmlseqfilenumber}+1}%
|
|
\LWR@subhyperrefclass{%
|
|
\LWR@htmlrefsectionfilename{%
|
|
\BaseJobname-autofile-\arabic{LWR@tempcountone}%
|
|
}%
|
|
}{\linknextname}{linkhome}%
|
|
}%
|
|
}{}%
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newcommand*{\LWR@subprintstack}{
|
|
\LWR@closedepthone\ \LWR@closedepthtwo\ \LWR@closedepththree\
|
|
\LWR@closedepthfour\ \LWR@closedepthfive\ \LWR@closedepthsix\
|
|
\LWR@closedepthseven\ \LWR@closedeptheight\ \LWR@closedepthnine\
|
|
\LWR@closedepthten\ \LWR@closedeptheleven\ \LWR@closedepthtwelve\
|
|
}
|
|
|
|
\newcommand*{\LWRPrintStack}{
|
|
\LWR@startpars
|
|
\LWR@subprintstack
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpprint}
|
|
|
|
\newcommand*{\LWRPrintStack}{}
|
|
|
|
\end{warpprint}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newcommand*{\LWR@closeoneprevious}{%
|
|
|
|
\LWR@closeone
|
|
|
|
\LWR@popclose
|
|
}
|
|
|
|
\newcommand*{\LWR@closeprevious}[1]{
|
|
\LWR@traceinfo{%
|
|
LWR@closeprevious to depth \csuse{LWR@depth#1}, %
|
|
depths are \LWR@subprintstack%
|
|
}%
|
|
\LWR@stoppars%
|
|
\whileboolexpr{test{\ifnumcomp{\LWR@closedepthone}{>}{\csuse{LWR@depth#1}}}}%
|
|
{%
|
|
\LWR@traceinfo{LWR@closeprevious: closing out depth \LWR@closedepthone}%
|
|
\LWR@closeoneprevious%
|
|
}%
|
|
\ifboolexpr{test{\ifnumcomp{\LWR@closedepthone}{=}{\csuse{LWR@depth#1}}}}%
|
|
{%
|
|
\LWR@traceinfo{LWR@closeprevious: closing out depth \LWR@closedepthone}%
|
|
\LWR@closeoneprevious%
|
|
}{}%
|
|
\LWR@traceinfo{LWR@closeprevious: done, depths are \LWR@subprintstack}%
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newcommand{\LWR@forcenewpage}{%
|
|
\LWR@traceinfo{LWR@forcenewpage}%
|
|
\ifinner\else%
|
|
\LWR@stoppars\LWR@maybe@orignewpage\LWR@startpars%
|
|
\fi%
|
|
}
|
|
\renewcommand*{\pagestyle}[1]{}
|
|
\renewcommand*{\thispagestyle}[1]{}
|
|
\renewcommand*{\markboth}[2]{}
|
|
\renewcommand*{\markright}[1]{}
|
|
\renewcommand*{\raggedbottom}{}
|
|
\renewcommand*{\flushbottom}{}
|
|
\renewcommand*{\sloppy}{}
|
|
\renewcommand*{\fussy}{}
|
|
\RenewDocumentCommand{\pagenumbering}{s m}{}
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newcommand*{\LWR@tagtitle}{h1}
|
|
\newcommand*{\LWR@tagtitleend}{/h1}
|
|
\newcommand*{\LWR@tagbook}{div class="book"}
|
|
\newcommand*{\LWR@tagbookend}{/div}
|
|
\newcommand*{\LWR@tagpart}{h2}
|
|
\newcommand*{\LWR@tagpartend}{/h2}
|
|
\newcommand*{\LWR@tagchapter}{h3}
|
|
\newcommand*{\LWR@tagchapterend}{/h3}
|
|
\newcommand*{\LWR@tagsection}{h4}
|
|
\newcommand*{\LWR@tagsectionend}{/h4}
|
|
\newcommand*{\LWR@tagsubsection}{h5}
|
|
\newcommand*{\LWR@tagsubsectionend}{/h5}
|
|
\newcommand*{\LWR@tagsubsubsection}{h6}
|
|
\newcommand*{\LWR@tagsubsubsectionend}{/h6}
|
|
\newcommand*{\LWR@tagparagraph}{span class="paragraph"}
|
|
\newcommand*{\LWR@tagparagraphend}{/span}
|
|
\newcommand*{\LWR@tagsubparagraph}{span class="subparagraph"}
|
|
\newcommand*{\LWR@tagsubparagraphend}{/span}
|
|
|
|
\newcommand*{\LWR@tagregularparagraph}{p}
|
|
|
|
|
|
\providecommand*{\LWR@FBcancel}{}
|
|
|
|
\AtBeginDocument{%
|
|
\@ifundefined{NoAutoSpacing}%
|
|
{}%
|
|
{%
|
|
\LetLtxMacro\LWR@FBcancel\NoAutoSpacing%
|
|
}%
|
|
|
|
\@ifundefined{frenchbsetup}%
|
|
{}%
|
|
{%
|
|
\frenchbsetup{FrenchFootnotes=false}%
|
|
\renewrobustcmd*{\FBcolonspace}{%
|
|
\begingroup%
|
|
\LWR@FBcancel%
|
|
\LWR@origampersand{}nbsp;%
|
|
\endgroup%
|
|
}%
|
|
\renewrobustcmd*{\FBthinspace}{%
|
|
\begingroup%
|
|
\LWR@FBcancel%
|
|
\LWR@origampersand\LWR@origpound{}x202f;% \,
|
|
\endgroup%
|
|
}%
|
|
\renewrobustcmd*{\FBguillspace}{%
|
|
\begingroup%
|
|
\LWR@FBcancel%
|
|
\LWR@origampersand{}nbsp;% ~, for \og xyz \fg{}
|
|
\endgroup%
|
|
}%
|
|
\DeclareDocumentCommand{\FBmedkern}{}{%
|
|
\begingroup%
|
|
\LWR@FBcancel%
|
|
\LWR@origampersand\LWR@origpound{}x202f;% \,
|
|
\endgroup%
|
|
}%
|
|
\DeclareDocumentCommand{\FBthickkern}{}{%
|
|
\begingroup%
|
|
\LWR@FBcancel%
|
|
\LWR@origampersand{}nbsp;% ~
|
|
\endgroup%
|
|
}%
|
|
\renewrobustcmd*{~}{\HTMLentity{nbsp}}% was overwritten by babel-french
|
|
\ifFBunicode%
|
|
\else%
|
|
\DeclareTextSymbol{\FBtextellipsis}{LY1}{133}%
|
|
\DeclareTextCommandDefault{\FBtextellipsis}{\textellipsis\xspace}%
|
|
\fi%
|
|
}%
|
|
}
|
|
|
|
\newcommand*{\LWR@indentHTML}{%
|
|
\LWR@orignewline\LWR@origrule{2em}{0pt}%
|
|
}
|
|
|
|
\newcommand*{\LWR@indentHTMLtwo}{%
|
|
\LWR@orignewline\LWR@origrule{4em}{0pt}%
|
|
}
|
|
|
|
|
|
\newcommand*{\LWR@htmltagc}[1]{%
|
|
\LWR@traceinfo{LWR@htmltagc !\detokenize{#1}!}%
|
|
\begingroup%
|
|
\LWR@FBcancel%
|
|
\ifmmode\else\protect\LWR@print@normalfont\protect\LWR@origttfamily\fi%
|
|
\protect\LWR@origtextless%
|
|
\LWR@isolate{#1}%
|
|
\protect\LWR@origtextgreater%
|
|
\endgroup%
|
|
}
|
|
|
|
\newcommand*{\LWR@spanwarnformat}[1]{%
|
|
\ifnumcomp{\value{LWR@spandepth}}{>}{0}{%
|
|
\PackageWarning{lwarp}{%
|
|
A #1 is being used inside a span.\MessageBreak
|
|
Formatting may be lost,%
|
|
}%
|
|
}{}%
|
|
}
|
|
|
|
\newcommand*{\LWR@spanwarninvalid}[1]{%
|
|
\ifnumcomp{\value{LWR@spandepth}}{>}{0}{%
|
|
\PackageWarning{lwarp}{%
|
|
A #1 is being used inside a span.\MessageBreak
|
|
This generates invalid HTML,%
|
|
}%
|
|
}{}%
|
|
}
|
|
|
|
\newcommand*{\LWR@nestspanitem}{%
|
|
\if@newlist\else{\LWR@htmltagc{br /}}\fi%
|
|
\LWR@origitem%
|
|
}
|
|
|
|
\newenvironment*{LWR@nestspan}
|
|
{%
|
|
\LWR@traceinfo{LWR@nestspan starting}%
|
|
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
|
|
{%
|
|
\LWR@traceinfo{LWR@nestspan: inside a lateximage}%
|
|
}%
|
|
{% not in a lateximage
|
|
\LWR@traceinfo{LWR@nestspan: NOT inside a lateximage}%
|
|
\addtocounter{LWR@spandepth}{1}%
|
|
\RenewDocumentEnvironment{minipage}{O{t} o O{t} m}%
|
|
{\LWR@spanwarnformat{minipage or \protect\parbox}}%
|
|
{}%
|
|
\RenewDocumentEnvironment{BlockClass}{o m}%
|
|
{\LWR@spanwarnformat{multi-paragraph object}}%
|
|
{}%
|
|
\renewcommand{\BlockClassSingle}[2]{%
|
|
{\LWR@spanwarnformat{multi-paragraph object}}%
|
|
##2%
|
|
}%
|
|
\renewcommand{\LWR@forcenewpage}{}%
|
|
\renewcommand{\LWR@liststart}{%
|
|
\let\item\LWR@nestspanitem%
|
|
}%
|
|
\renewcommand{\LWR@listend}{\LWR@htmltagc{br /}\LWR@htmltagc{br /}}%
|
|
\renewenvironment{quote}{\LWR@htmltagc{br /}}{\LWR@htmltagc{br /}}%
|
|
\renewenvironment{quotation}{\LWR@htmltagc{br /}}{\LWR@htmltagc{br /}}%
|
|
}% not in a lateximage
|
|
\LWR@traceinfo{LWR@nestspan starting: done}%
|
|
}% starting env
|
|
{% ending env
|
|
\LWR@traceinfo{LWR@nestspan ending}%
|
|
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
|
|
{}%
|
|
{\addtocounter{LWR@spandepth}{-1}}%
|
|
\LWR@traceinfo{LWR@nestspan ending: done}%
|
|
}
|
|
|
|
\AfterEndEnvironment{LWR@nestspan}{\global\let\par\LWR@closeparagraph}
|
|
|
|
\NewDocumentCommand{\LWR@htmlspan}{m +m}{%
|
|
\LWR@ensuredoingapar%
|
|
\LWR@htmltagc{#1}%
|
|
\begin{LWR@nestspan}%
|
|
#2%
|
|
\LWR@htmltagc{/#1}%
|
|
\end{LWR@nestspan}%
|
|
}
|
|
|
|
\NewDocumentCommand{\LWR@htmlspanclass}{o m +m}{%
|
|
\LWR@traceinfo{LWR@htmlspanclass |#1|#2|}%
|
|
\LWR@ensuredoingapar%
|
|
\LWR@subhtmlelementclass{span}[#1]{#2}%
|
|
\begin{LWR@nestspan}%
|
|
#3%
|
|
\LWR@htmltagc{/span}%
|
|
\LWR@traceinfo{LWR@htmlspanclass done}%
|
|
\end{LWR@nestspan}%
|
|
}
|
|
|
|
|
|
\newcommand*{\LWR@htmltag}[1]{%
|
|
\LWR@htmltagc{#1}%
|
|
}
|
|
|
|
|
|
\newcommand*{\LWR@htmlopencomment}{%
|
|
{%
|
|
\begingroup%
|
|
\LWR@FBcancel%
|
|
\ifmmode\else\protect\LWR@print@normalfont\protect\LWR@origttfamily\fi%
|
|
\LWR@print@mbox{\LWR@origtextless{}!-\/-}%
|
|
\endgroup%
|
|
}%
|
|
}
|
|
|
|
\newcommand*{\LWR@htmlclosecomment}{%
|
|
{%
|
|
\begingroup%
|
|
\LWR@FBcancel%
|
|
\ifmmode\else\protect\LWR@print@normalfont\protect\LWR@origttfamily\fi%
|
|
\LWR@print@mbox{-\/-\LWR@origtextgreater}%
|
|
\endgroup%
|
|
}%
|
|
}
|
|
|
|
\newcommand{\LWR@htmlcomment}[1]{%
|
|
\LWR@htmlopencomment{}%
|
|
{%
|
|
\LWR@print@normalfont%
|
|
\LWR@origttfamily% break ligatures
|
|
#1%
|
|
}%
|
|
\LWR@htmlclosecomment{}}
|
|
\newcommand{\LWR@htmlblockcomment}[1]
|
|
{\LWR@stoppars\LWR@htmlcomment{#1}\LWR@startpars}
|
|
|
|
\newcommand*{\LWR@htmlblocktag}[1]{%
|
|
\LWR@stoppars%
|
|
\LWR@htmltag{#1}%
|
|
\LWR@startpars%
|
|
}
|
|
|
|
|
|
\NewDocumentCommand{\LWR@subhtmlelementclass}{m O{} m}{%
|
|
\LWR@traceinfo{LWR@subhtmlelementclass !#1!#2!#3!}%
|
|
\ifblank{#2}%
|
|
{% empty option
|
|
\LWR@htmltag{%
|
|
#1 % space
|
|
class=\textquotedbl#3\textquotedbl\ % space
|
|
}%
|
|
}%
|
|
{% non-empty option
|
|
\LWR@htmltag{%
|
|
#1\LWR@indentHTML%
|
|
class=\textquotedbl#3\textquotedbl\LWR@indentHTML%
|
|
style=\textquotedbl#2\textquotedbl\LWR@orignewline%
|
|
}%
|
|
}%
|
|
\LWR@traceinfo{LWR@subhtmlelementclass done}%
|
|
}
|
|
|
|
\NewDocumentCommand{\LWR@htmlelementclass}{m o m}{%
|
|
\LWR@stoppars%
|
|
\LWR@forceemptyline%
|
|
\LWR@subhtmlelementclass{#1}[#2]{#3}%
|
|
\LWR@startpars%
|
|
}
|
|
|
|
\newcommand*{\LWR@htmlelementclassend}[2]{%
|
|
\LWR@stoppars%
|
|
\LWR@htmltag{/#1}%
|
|
\ifbool{HTMLDebugComments}{%
|
|
\LWR@htmlcomment{End of #1 ``#2''}%
|
|
}{}%
|
|
\LWR@startpars%
|
|
}
|
|
|
|
\NewDocumentCommand{\LWR@htmldivclass}{o m}{%
|
|
\LWR@htmlelementclass{div}[#1]{#2}%
|
|
}
|
|
|
|
\newcommand*{\LWR@htmldivclassend}[1]{%
|
|
\LWR@htmlelementclassend{div}{#1}%
|
|
}
|
|
|
|
|
|
|
|
\NewDocumentCommand{\LWR@htmlelementclassline}{m o m +m}{%
|
|
\LWR@stoppars
|
|
\LWR@forceemptyline%
|
|
\LWR@subhtmlelementclass{#1}[#2]{#3}%
|
|
#4%
|
|
\LWR@htmltag{/#1}
|
|
\LWR@startpars
|
|
}
|
|
|
|
|
|
\newcommand*{\LWR@htmlelement}[1]{%
|
|
\LWR@htmlblocktag{#1}
|
|
}
|
|
|
|
\newcommand*{\LWR@htmlelementend}[1]{%
|
|
\LWR@stoppars
|
|
\LWR@htmltag{/#1}
|
|
\LWR@startpars
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpprint}
|
|
\NewDocumentEnvironment{BlockClass}{o m}{}{}%
|
|
\end{warpprint}
|
|
\begin{warpHTML}
|
|
|
|
\NewDocumentEnvironment{LWR@print@BlockClass}{o m}{}{}%
|
|
|
|
\NewDocumentEnvironment{LWR@HTML@BlockClass}{o m}%
|
|
{\LWR@htmldivclass[#1]{#2}}
|
|
{\LWR@htmldivclassend{#2}}
|
|
|
|
\LWR@formattedenv{BlockClass}
|
|
\end{warpHTML}
|
|
\begin{warpall}
|
|
\newcommand{\BlockClassSingle}[2]{#2}
|
|
\end{warpall}
|
|
\begin{warpHTML}
|
|
\newcommand{\LWR@HTML@BlockClassSingle}[2]{%
|
|
\LWR@htmlelementclassline{div}{#1}{#2}%
|
|
}
|
|
|
|
\LWR@formatted{BlockClassSingle}
|
|
\end{warpHTML}
|
|
|
|
\begin{warpprint}
|
|
\NewDocumentCommand{\InlineClass}{D{(}{)}{} o m +m}{#4}%
|
|
\end{warpprint}
|
|
\begin{warpHTML}
|
|
\NewDocumentCommand{\LWR@print@InlineClass}{D{(}{)}{} o m +m}{#4}%
|
|
|
|
\NewDocumentCommand{\LWR@HTML@InlineClass}{D{(}{)}{} o m +m}{%
|
|
\ifbool{FormatWP}{%
|
|
\LWR@htmlspanclass[#1]{#3}{#4}%
|
|
}{%
|
|
\LWR@htmlspanclass[#2]{#3}{#4}%
|
|
}%
|
|
}
|
|
|
|
\LWR@formatted{InlineClass}
|
|
\end{warpHTML}
|
|
|
|
\begin{warpprint}
|
|
\NewDocumentEnvironment{LWR@BlockClassWP}{m m m}{}{}%
|
|
\end{warpprint}
|
|
\begin{warpHTML}
|
|
\NewDocumentEnvironment{LWR@print@LWR@BlockClassWP}{m m m}{}{}%
|
|
\NewDocumentEnvironment{LWR@HTML@LWR@BlockClassWP}{m m m}%
|
|
{%
|
|
\LWR@stoppars%
|
|
\ifbool{FormatWP}%
|
|
{%
|
|
\addtocounter{LWR@thisautoidWP}{1}%
|
|
\LWR@htmltag{%
|
|
div class=\textquotedbl#3\textquotedbl\ % space
|
|
id=\textquotedbl%
|
|
\LWR@print@mbox{autoidWP-\arabic{LWR@thisautoidWP}}%
|
|
\textquotedbl%
|
|
\ifblank{#1}{}{ style=\textquotedbl#1\textquotedbl}%
|
|
}%
|
|
}% FormatWP
|
|
{% not FormatWP
|
|
\LWR@htmltag{%
|
|
div class=\textquotedbl#3\textquotedbl%
|
|
\ifblank{#2}{}{ style=\textquotedbl#2\textquotedbl}%
|
|
}%
|
|
}% not FormatWP
|
|
\LWR@startpars%
|
|
}
|
|
{\LWR@htmldivclassend{#3}}
|
|
|
|
\LWR@formattedenv{LWR@BlockClassWP}
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newcommand*{\LWR@printclosebook}
|
|
{\ifbool{HTMLDebugComments}{\LWR@htmlcomment{Closing book}}{}}
|
|
\newcommand*{\LWR@printclosepart}
|
|
{\ifbool{HTMLDebugComments}{\LWR@htmlcomment{Closing part}}{}}
|
|
\newcommand*{\LWR@printclosechapter}
|
|
{\ifbool{HTMLDebugComments}{\LWR@htmlcomment{Closing chapter}}{}}
|
|
\newcommand*{\LWR@printclosesection}
|
|
{\ifbool{HTMLDebugComments}{\LWR@htmlcomment{Closing section}}{}}
|
|
\newcommand*{\LWR@printclosesubsection}
|
|
{\ifbool{HTMLDebugComments}{\LWR@htmlcomment{Closing subsection}}{}}
|
|
\newcommand*{\LWR@printclosesubsubsection}
|
|
{\ifbool{HTMLDebugComments}{\LWR@htmlcomment{Closing subsubsection}}{}}
|
|
\newcommand*{\LWR@printcloseparagraph}
|
|
{\ifbool{HTMLDebugComments}{\LWR@htmlcomment{Closing paragraph}}{}}
|
|
\newcommand*{\LWR@printclosesubparagraph}
|
|
{\ifbool{HTMLDebugComments}{\LWR@htmlcomment{Closing subparagraph}}{}}
|
|
|
|
\newcommand*{\LWR@printcloselistitem}
|
|
{\LWR@htmltag{/li}}
|
|
\newcommand*{\LWR@printclosedescitem}
|
|
{\LWR@htmltag{/dd}}
|
|
\newcommand*{\LWR@printcloseitemize}
|
|
{\LWR@htmltag{/ul}}
|
|
\newcommand*{\LWR@printcloseenumerate}
|
|
{\LWR@htmltag{/ol}}
|
|
\newcommand*{\LWR@printclosedescription}
|
|
{\LWR@htmltag{/dl}}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newcounter{LWR@spandepth}
|
|
\setcounter{LWR@spandepth}{0}
|
|
|
|
\newbool{LWR@doingstartpars}
|
|
\boolfalse{LWR@doingstartpars}
|
|
|
|
\newbool{LWR@doingapar}
|
|
\global\boolfalse{LWR@doingapar}
|
|
|
|
\newcommand*{\LWR@ensuredoingapar}{%
|
|
\ifbool{LWR@doingstartpars}%
|
|
{\global\booltrue{LWR@doingapar}}%
|
|
{}%
|
|
}
|
|
|
|
\def\PN@parnotes@auto{}%
|
|
|
|
\newcommand*{\LWR@openparagraph}
|
|
{%
|
|
\ifbool{LWR@doingstartpars}%
|
|
{% handling pars
|
|
\ifboolexpr{
|
|
test {\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}} or
|
|
test {\ifnumcomp{\value{LWR@spandepth}}{>}{0}}
|
|
}% nested par tags?
|
|
{}% no nested par tags
|
|
{% yes nest par tags
|
|
\PN@parnotes@auto%
|
|
\LWR@htmltagc{\LWR@tagregularparagraph}\LWR@orignewline%
|
|
\global\booltrue{LWR@doingapar}%
|
|
\let\par\LWR@closeparagraph%
|
|
}% end of yes nest par tags
|
|
}% end of handling pars
|
|
{}% not handling pars
|
|
}
|
|
|
|
\newcommand*{\LWR@closeparagraph@br}
|
|
{%
|
|
\ifboolexpr{
|
|
test {\ifnumcomp{\value{LWR@spandepth}}{>}{0}} and
|
|
test {\ifnumcomp{\value{LWR@lateximagedepth}}{=}{0}} and
|
|
not bool {LWR@intabularmetadata}
|
|
}%
|
|
{\unskip\LWR@htmltagc{br /}}%
|
|
{}%
|
|
}
|
|
|
|
\newcommand*{\LWR@closeparagraph}
|
|
{%
|
|
\ifbool{LWR@doingapar}%
|
|
{% handling pars
|
|
\ifboolexpr{
|
|
test {\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}} or
|
|
test {\ifnumcomp{\value{LWR@spandepth}}{>}{0}}
|
|
}%
|
|
{% no nested par tags
|
|
\LWR@closeparagraph@br%
|
|
}% no nested par tags
|
|
{% yes nest par tags
|
|
\@hspacer{\fill}% \hspace*{\fill}
|
|
\leavevmode\LWR@orignewline%
|
|
\LWR@htmltagc{/\LWR@tagregularparagraph}%
|
|
\global\boolfalse{LWR@doingapar}%
|
|
\global\boolfalse{LWR@minipagethispar}%
|
|
\PN@parnotes@auto%
|
|
}% end of yes nest par tags
|
|
}% end of handling pars
|
|
{% not handling pars
|
|
\LWR@closeparagraph@br%
|
|
}% not handling pars
|
|
\ifboolexpr{%
|
|
not bool {LWR@doingapar} and
|
|
test {\ifnumcomp{\value{LWR@tabulardepth}}{>}{0}} and
|
|
test {
|
|
\ifnumcomp{\value{LWR@tabulardepth}}{=}{\value{LWR@tabularpardepth}}
|
|
} and
|
|
bool {LWR@intabularmetadata} and
|
|
not bool {LWR@tableparcell} and
|
|
test {\ifnumcomp{\value{LWR@lateximagedepth}}{=}{0}}
|
|
}%
|
|
{%
|
|
\LWR@getmynexttoken%
|
|
}{%
|
|
\LWR@origpar%
|
|
}%
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newcommand*{\LWR@startpars}%
|
|
{%
|
|
\ifboolexpr{
|
|
test {\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}} or
|
|
test {\ifnumcomp{\value{LWR@spandepth}}{>}{0}}
|
|
}%
|
|
{}%
|
|
{%
|
|
\ifbool{LWR@doingstartpars}%
|
|
{}%
|
|
{%
|
|
\PushPreHook{par}{\LWR@openparagraph}%
|
|
\let\par\LWR@closeparagraph
|
|
|
|
}% an intentionally blank line
|
|
\global\setbool{LWR@doingstartpars}{true}%
|
|
\global\boolfalse{LWR@doingapar}%
|
|
}% nestspan
|
|
}
|
|
|
|
\newcommand*{\LWR@stoppars}%
|
|
{%
|
|
\ifboolexpr{
|
|
test {\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}} or
|
|
test {\ifnumcomp{\value{LWR@spandepth}}{>}{0}}
|
|
}%
|
|
{}%
|
|
{%
|
|
\ifbool{LWR@doingapar}%
|
|
{%
|
|
\leavevmode\LWR@orignewline%
|
|
\LWR@htmltagc{/\LWR@tagregularparagraph}%
|
|
\LWR@orignewline%
|
|
\global\boolfalse{LWR@doingapar}%
|
|
\global\boolfalse{LWR@minipagethispar}
|
|
}%
|
|
{}%
|
|
\ifbool{LWR@doingstartpars}%
|
|
{\ClearPreHook{par}}%
|
|
{}%
|
|
\global\setbool{LWR@doingstartpars}{false}%
|
|
\global\boolfalse{LWR@doingapar}%
|
|
}% nestspan
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\AtBeginDocument{
|
|
\def\@afterindentfalse{\let\if@afterindent\iffalse}
|
|
\@afterindentfalse
|
|
}
|
|
\let\LWR@afterindent@syntaxhighlight\fi% syntax highlighting
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpall}
|
|
|
|
\newcommand{\LWR@firstpagetop}{} % for the home page alone
|
|
\newcommand{\LWR@firstpagebottom}{} % for the home page alone
|
|
\newcommand{\LWR@pagetop}{} % for all other pages
|
|
\newcommand{\LWR@pagebottom}{}
|
|
\newcommand{\HTMLFirstPageTop}[1]{%
|
|
\renewcommand{\LWR@firstpagetop}{#1}%
|
|
}
|
|
\newcommand{\HTMLFirstPageBottom}[1]{%
|
|
\renewcommand{\LWR@firstpagebottom}{#1}%
|
|
}
|
|
\newcommand{\HTMLPageTop}[1]{%
|
|
\renewcommand{\LWR@pagetop}{#1}%
|
|
}
|
|
\newcommand{\HTMLPageBottom}[1]{%
|
|
\renewcommand{\LWR@pagebottom}{#1}%
|
|
}
|
|
|
|
\end{warpall}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
|
|
\newcommand*{\LWR@currentcss}{lwarp.css}
|
|
|
|
\newcommand*{\CSSFilename}[1]{%
|
|
\renewcommand*{\LWR@currentcss}{#1}%
|
|
\@onelevel@sanitize\LWR@currentcss%
|
|
}
|
|
|
|
\end{warpHTML}
|
|
\begin{warpprint}
|
|
\newcommand*{\CSSFilename}[1]{}
|
|
\end{warpprint}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newcommand*{\LWR@mathjaxfilename}{lwarp_mathjax.txt}
|
|
|
|
\newcommand*{\MathJaxFilename}[1]{%
|
|
\renewcommand*{\LWR@mathjaxfilename}{#1}%
|
|
\@onelevel@sanitize\LWR@mathjaxfilename%
|
|
}
|
|
|
|
\end{warpHTML}
|
|
\begin{warpprint}
|
|
\newcommand*{\MathJaxFilename}[1]{}
|
|
\end{warpprint}
|
|
|
|
\begin{warpHTML}
|
|
\let\LWR@origtitle\title
|
|
|
|
\renewcommand*{\title}[1]{%
|
|
\LWR@origtitle{#1}%
|
|
\begingroup%
|
|
\renewcommand{\thanks}[1]{}%
|
|
\protected@xdef\thetitle{#1}%
|
|
\endgroup%
|
|
}
|
|
\end{warpHTML}
|
|
\begin{warpall}
|
|
\providecommand{\thetitle}{\BaseJobname}
|
|
|
|
\newcommand{\theHTMLTitle}{\thetitle}
|
|
|
|
\newcommand{\HTMLTitle}[1]{\renewcommand{\theHTMLTitle}{#1}}
|
|
\providecommand{\theauthor}{}
|
|
|
|
\newcommand{\theHTMLAuthor}{\theauthor}
|
|
|
|
\newcommand{\HTMLAuthor}[1]{\renewcommand{\theHTMLAuthor}{#1}}
|
|
|
|
|
|
\newcommand{\LWR@currentHTMLDescription}{}
|
|
|
|
\newcommand{\HTMLDescription}[1]{%
|
|
\renewcommand{\LWR@currentHTMLDescription}{#1}
|
|
}
|
|
|
|
\end{warpall}
|
|
|
|
\begin{warpall}
|
|
|
|
\newcounter{FootnoteDepth}
|
|
\setcounter{FootnoteDepth}{3}
|
|
\newcounter{footnoteReset}
|
|
\setcounter{footnoteReset}{0}
|
|
\end{warpall}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newbox\LWR@footnotebox
|
|
\long\def\@makefntext#1{\textsuperscript{\@thefnmark}~#1}
|
|
\def\@makefnmark{%
|
|
\textsuperscript{\@thefnmark}%
|
|
}
|
|
\long\def\LWR@@footnotetext#1#2{%
|
|
\LWR@traceinfo{LWR@footnotetext}%
|
|
\global\setbox\csname #2\endcsname=\vbox{%
|
|
\unvbox\csname #2\endcsname%
|
|
\protected@edef\@currentlabel{%
|
|
\csname p@footnote\endcsname\@thefnmark%
|
|
}% @currentlabel
|
|
\color@begingroup%
|
|
\LWR@disablepinyin%
|
|
\renewrobustcmd{\textsuperscript}[1]{\LWR@htmlspan{sup}{##1}}%
|
|
\ifthenelse{%
|
|
\boolean{LWR@doingstartpars} \AND%
|
|
\cnttest{\value{LWR@lateximagedepth}}{=}{0}%
|
|
}%
|
|
{}%
|
|
{\LWR@htmltagc{\LWR@tagregularparagraph}\LWR@orignewline}%
|
|
\@makefntext{#1}%
|
|
\ifthenelse{%
|
|
\boolean{LWR@doingstartpars} \AND%
|
|
\cnttest{\value{LWR@lateximagedepth}}{=}{0}%
|
|
}%
|
|
{\par}%
|
|
{%
|
|
\LWR@htmltagc{/\LWR@tagregularparagraph}%
|
|
\LWR@orignewline%
|
|
}%
|
|
\color@endgroup%
|
|
}% vbox
|
|
\LWR@ensuredoingapar%
|
|
}%
|
|
|
|
\long\def\LWR@footnotetext#1{\LWR@@footnotetext{#1}{LWR@footnotebox}}
|
|
\LetLtxMacro\@footnotetext\LWR@footnotetext
|
|
\newbox\LWR@mpfootnotes
|
|
\long\def\@mpfootnotetext#1{%
|
|
\LWR@traceinfo{@mpfootnotetext}%
|
|
\global\setbox\LWR@mpfootnotes\vbox{%
|
|
\unvbox\LWR@mpfootnotes%
|
|
\reset@font\footnotesize%
|
|
\hsize\columnwidth%
|
|
\@parboxrestore%
|
|
\protected@edef\@currentlabel%
|
|
{\csname p@mpfootnote\endcsname\@thefnmark}%
|
|
\color@begingroup%
|
|
\ifthenelse{%
|
|
\boolean{LWR@doingstartpars} \AND%
|
|
\cnttest{\value{LWR@lateximagedepth}}{=}{0}%
|
|
}%
|
|
{}%
|
|
{\LWR@htmltagc{\LWR@tagregularparagraph}\LWR@orignewline}%
|
|
\@makefntext{%
|
|
\ignorespaces#1%
|
|
}%
|
|
\ifthenelse{\cnttest{\value{LWR@lateximagedepth}}{>}{0}}%
|
|
{}%
|
|
{%
|
|
\leavevmode\LWR@orignewline%
|
|
\LWR@htmltagc{/\LWR@tagregularparagraph}%
|
|
\LWR@origpar%
|
|
}%
|
|
\color@endgroup%
|
|
}% vbox
|
|
\LWR@ensuredoingapar%
|
|
\LWR@traceinfo{@mpfootnotetext: done}%
|
|
}
|
|
\AtBeginDocument{
|
|
\def\thempfootnote{\@alph\c@mpfootnote}
|
|
}
|
|
\newcommand*{\LWR@@printpendingfootnotes}[1]{%
|
|
\expandafter\ifvoid\csname LWR@#1box\endcsname\else
|
|
\LWR@forcenewpage
|
|
\begin{BlockClass}{footnotes}
|
|
\null
|
|
\unvbox\csuse{LWR@#1box}
|
|
\setbox\csuse{LWR@#1box}=\vbox{}
|
|
\end{BlockClass}
|
|
\ifltxcounter{#1Reset}{%
|
|
\ifnumgreater{\value{#1Reset}}{0}{%
|
|
\setcounter{#1}{\value{#1Reset}}%
|
|
\addtocounter{#1}{-1}%
|
|
}{}%
|
|
}{}%
|
|
\fi
|
|
}
|
|
\newcommand*{\LWR@printpendingfootnotes}{%
|
|
\LWR@@printpendingfootnotes{footnote}%
|
|
}
|
|
\newcommand*{\LWR@maybeprintpendingfootnotes}[1]{%
|
|
\ifboolexpr{
|
|
not test{\ifnumcomp{#1}{>}{\value{FootnoteDepth}}} or
|
|
bool{FormatEPUB} or
|
|
bool{FormatWP}
|
|
}%
|
|
{\LWR@printpendingfootnotes}%
|
|
{}%
|
|
}
|
|
|
|
\newcommand*{\LWR@printpendingmpfootnotes}{%
|
|
\ifvoid\LWR@mpfootnotes\else
|
|
\LWR@forcenewpage
|
|
\begin{BlockClass}{footnotes}
|
|
\null
|
|
\unvbox\LWR@mpfootnotes
|
|
\setbox\LWR@mpfootnotes=\vbox{}
|
|
\end{BlockClass}
|
|
\fi
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\renewcommand{\marginpar}[2][]{%
|
|
\ifbool{FormatWP}%
|
|
{%
|
|
\begin{LWR@BlockClassWP}{width:2in; float:right; margin:10pt}{}{marginblock}
|
|
#2
|
|
\end{LWR@BlockClassWP}
|
|
}%
|
|
{%
|
|
\LWR@htmlspanclass{marginpar}{#2}%
|
|
}%
|
|
}
|
|
\newcommand{\marginparBlock}[2][]{%
|
|
\LWR@stoppars%
|
|
\ifbool{FormatWP}%
|
|
{%
|
|
\begin{LWR@BlockClassWP}{width:2in; float:right; margin:10pt}{}{marginblock}
|
|
#2
|
|
\end{LWR@BlockClassWP}
|
|
}{%
|
|
\begin{BlockClass}[width:2in; float:right; margin:10pt]{marginparblock}
|
|
#2
|
|
\end{BlockClass}
|
|
}%
|
|
\LWR@startpars%
|
|
}
|
|
\renewcommand*{\reversemarginpar}{}
|
|
\renewcommand*{\normalmarginpar}{}
|
|
\end{warpHTML}
|
|
|
|
\begin{warpprint}
|
|
\LetLtxMacro\marginparBlock\marginpar
|
|
\end{warpprint}
|
|
|
|
|
|
\begin{warpall}
|
|
|
|
\newcounter{FileDepth}
|
|
\setcounter{FileDepth}{-5}
|
|
|
|
\newbool{CombineHigherDepths}
|
|
\booltrue{CombineHigherDepths}
|
|
|
|
\newcommand*{\FilenameLimit}{80}
|
|
|
|
\end{warpall}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\AtBeginDocument{
|
|
\ifbool{FileSectionNames}%
|
|
{\newcommand*{\LWR@thisfilename}{\HomeHTMLFilename}}
|
|
{\newcommand*{\LWR@thisfilename}{0}}
|
|
}
|
|
|
|
\newcommand*{\LWR@thisnewfilename}{}
|
|
|
|
\NewDocumentCommand{\LWR@simplifyname}{s m}{%
|
|
\IfBooleanTF{#1}{%
|
|
\StrSubstitute{\LWR@thisnewfilename}%
|
|
{\detokenize{#2}}%
|
|
{\detokenize{-}}[\LWR@thisnewfilename]%
|
|
}{%
|
|
\StrSubstitute{\LWR@thisnewfilename}%
|
|
{#2}%
|
|
{\detokenize{-}}[\LWR@thisnewfilename]%
|
|
}
|
|
}
|
|
|
|
\newcommand*{\LWR@simplifycustom}{}
|
|
|
|
\NewDocumentCommand{\FilenameSimplify}{s m}{%
|
|
\IfBooleanTF{#1}{%
|
|
\appto{\LWR@simplifycustom}{%
|
|
\LWR@simplifyname*{#2}%
|
|
}%
|
|
}{%
|
|
\appto{\LWR@simplifycustom}{%
|
|
\LWR@simplifyname{#2}%
|
|
}%
|
|
}%
|
|
}
|
|
|
|
\newcommand*{\LWR@avoiddupfilenames}{%
|
|
To avoid duplicate filenames, use the optional\MessageBreak
|
|
short Table of Contents entry:\MessageBreak
|
|
\space\space\protect\section[Unique name, no math]{Name with math}%
|
|
\MessageBreak
|
|
or use \protect\texorpdfstring, from the hyperref package:\MessageBreak
|
|
\space\space%
|
|
\protect\section{\MessageBreak
|
|
\space\space\space\space\protect\texorpdfstring\MessageBreak
|
|
\space\space\space\space\space\space%
|
|
{Name with math}{Unique name, no math}\MessageBreak
|
|
\space\space}
|
|
}
|
|
|
|
\newcommand*{\LWR@filenamenoblanks}[1]{%
|
|
\begingroup
|
|
\LWR@nullfonts%
|
|
\renewcommand*{\LWR@htmltagc}[1]{}%
|
|
\edef\LWR@thisnewfilename{#1}%
|
|
\RenewDocumentCommand{\LWR@subsingledollar}{s m m m}{}%
|
|
\LWR@simplifyname{\_}
|
|
\LWR@simplifyname{\#}
|
|
\LWR@simplifyname{\textbackslash}
|
|
\LWR@simplifyname{\protect}
|
|
\LWR@simplifyname{\ }
|
|
\LWR@simplifyname{\textless}
|
|
\LWR@simplifyname{\textgreater}
|
|
\edef\LWR@thisnewfilename{\detokenize\expandafter{\LWR@thisnewfilename}}%
|
|
\ifbool{FileSectionNames}{%
|
|
\IfSubStr{\LWR@thisnewfilename}{\LWRdollar}{%
|
|
\PackageWarning{lwarp}
|
|
{%
|
|
This section name:\MessageBreak
|
|
\space\space``\detokenize\expandafter{#1}''\MessageBreak
|
|
at the line number listed below,\MessageBreak
|
|
is using $dollar-delimited math$,
|
|
which generates\MessageBreak
|
|
complicated file names. It is better to use\MessageBreak
|
|
\space\space%
|
|
\protect\section{Name with \protect\(parenthesis math\protect\)}%
|
|
\MessageBreak
|
|
The math then will be removed from the file name.\MessageBreak
|
|
\MessageBreak
|
|
\LWR@avoiddupfilenames%
|
|
\MessageBreak
|
|
This section is found before or%
|
|
}
|
|
}{}%
|
|
}{}
|
|
\LWR@traceinfo{LWR@filenamenoblanks edef: !\LWR@thisnewfilename!}%
|
|
\fullexpandarg%
|
|
\LWR@simplifyname*{ }
|
|
\LWR@simplifyname*{*}
|
|
\LWR@simplifyname*{(}
|
|
\LWR@simplifyname*{)}
|
|
\LWR@simplifyname*{.}
|
|
\LWR@simplifyname*{!}
|
|
\LWR@simplifyname*{,}
|
|
\LWR@simplifyname*{'}
|
|
\LWR@simplifyname*{+}
|
|
\LWR@simplifyname*{/}
|
|
\LWR@simplifyname*{:}
|
|
\LWR@simplifyname*{;}
|
|
\LWR@simplifyname*{=}
|
|
\LWR@simplifyname*{?}
|
|
\LWR@simplifyname*{@}
|
|
\LWR@simplifyname*{^}
|
|
\LWR@simplifyname*{&}
|
|
\LWR@simplifyname*{"}
|
|
\LWR@simplifyname*{<}
|
|
\LWR@simplifyname*{>}
|
|
\LWR@simplifyname{\LWRbackslash}
|
|
\StrSubstitute{\LWR@thisnewfilename}%
|
|
{\LWRleftbrace}{}[\LWR@thisnewfilename]%
|
|
\StrSubstitute{\LWR@thisnewfilename}%
|
|
{\LWRrightbrace}{}[\LWR@thisnewfilename]%
|
|
\LWR@simplifyname{\LWRpercent}
|
|
\LWR@simplifyname{\LWRdollar}
|
|
\LWR@simplifyname*{|}
|
|
\LWR@simplifyname*{^}
|
|
\LWR@simplifyname*{~}
|
|
\LWR@simplifyname*{[}
|
|
\LWR@simplifyname*{]}
|
|
\LWR@simplifyname*{`}
|
|
\LWR@simplifyname*{-s-}
|
|
\LWR@simplifyname*{-S-}
|
|
\LWR@simplifyname*{-a-}
|
|
\LWR@simplifyname*{-A-}
|
|
\LWR@simplifyname*{-an-}
|
|
\LWR@simplifyname*{-AN-}
|
|
\LWR@simplifyname*{-to-}
|
|
\LWR@simplifyname*{-TO-}
|
|
\LWR@simplifyname*{-by-}
|
|
\LWR@simplifyname*{-BY-}
|
|
\LWR@simplifyname*{-of-}
|
|
\LWR@simplifyname*{-OF-}
|
|
\LWR@simplifyname*{-and-}
|
|
\LWR@simplifyname*{-AND-}
|
|
\LWR@simplifyname*{-for-}
|
|
\LWR@simplifyname*{-FOR-}
|
|
\LWR@simplifyname*{-the-}
|
|
\LWR@simplifyname*{-THE-}
|
|
\LWR@simplifycustom%
|
|
\ifPDFTeX% pdflatex or dvi latex
|
|
\ifdefstring{\inputencodingname}{utf8}{%
|
|
\LWR@simplifyname*{—}
|
|
\LWR@simplifyname*{–}
|
|
}{}%
|
|
\else% not PDFTeX
|
|
\LWR@simplifyname*{—}
|
|
\LWR@simplifyname*{–}
|
|
\fi%
|
|
\LWR@simplifyname*{-----}
|
|
\LWR@simplifyname*{----}
|
|
\LWR@simplifyname*{---}
|
|
\LWR@simplifyname*{--}
|
|
\IfBeginWith{\LWR@thisnewfilename}{\detokenize{-}}{%
|
|
\StrGobbleLeft{\LWR@thisnewfilename}{1}[\LWR@thisnewfilename]%
|
|
}{}%
|
|
\IfEndWith{\LWR@thisnewfilename}{\detokenize{-}}{%
|
|
\StrGobbleRight{\LWR@thisnewfilename}{1}[\LWR@thisnewfilename]%
|
|
}{}%
|
|
\StrLeft{\LWR@thisnewfilename}{\FilenameLimit}[\LWR@thisnewfilename]%
|
|
\global\let\LWR@thisfilename\LWR@thisnewfilename%
|
|
\endgroup%
|
|
\LWR@traceinfo{LWR@filenamenoblanks: result is \LWR@thisfilename}%
|
|
}
|
|
|
|
\newcounter{LWR@previousautopagelabel}
|
|
\setcounter{LWR@previousautopagelabel}{-1}
|
|
|
|
\newcommand*{\LWR@newautopagelabel}[1]{%
|
|
\ifnumequal{\value{LWR@previousautopagelabel}}{\value{page}}%
|
|
{}% no action if this autopage label has already been defined
|
|
{%
|
|
\label{\BaseJobname-autopage-\arabic{#1}}%
|
|
\setcounter{LWR@previousautopagelabel}{\value{page}}
|
|
}%
|
|
}
|
|
|
|
|
|
\bgroup
|
|
\catcode`!=3 \catcode`?=3
|
|
|
|
\long\gdef\LWR@replacestrings@addto#1#2{%
|
|
\expandafter\def\expandafter#1\expandafter{#1#2}%
|
|
}
|
|
|
|
\gdef\LWR@replacestrings#1#2{%
|
|
\long\def\LWR@replacestringsA##1#1{\def\tmpb{##1}\LWR@replacestringsB}%
|
|
\long\def\LWR@replacestringsB##1#1{%
|
|
\ifx!##1\relax \else\LWR@replacestrings@addto\tmpb{#2##1}%
|
|
\expandafter\LWR@replacestringsB\fi%
|
|
}% improved version <May 2016> inspired
|
|
\expandafter\LWR@replacestringsA\tmpb?#1!#1% from pysyntax.tex by Petr Krajnik
|
|
\long\def\LWR@replacestringsA##1?{%
|
|
\def\tmpb{##1}%
|
|
}\expandafter\LWR@replacestringsA\tmpb%
|
|
}
|
|
\egroup
|
|
|
|
\catcode`\#=12
|
|
\catcode`\&=12
|
|
\newcommand{\LWR@subHTMLsanitize}{%
|
|
\edef\tmpb{\detokenize\expandafter{\LWR@strresult}}%
|
|
\LWR@replacestrings{&}{&}%
|
|
\LWR@replacestrings{<}{<}%
|
|
\LWR@replacestrings{>}{>}%
|
|
\LWR@replacestrings{"}{"}%
|
|
\LWR@replacestrings{##}{#}%
|
|
\edef\LWR@strresult{\detokenize\expandafter{\tmpb}}%
|
|
}
|
|
\catcode`\#=6
|
|
\catcode`\&=4
|
|
|
|
\newrobustcmd{\LWR@HTMLsanitize}[1]{%
|
|
\begingroup%
|
|
\LWR@FBcancel%
|
|
\fullexpandarg%
|
|
\protect\StrSubstitute{\detokenize{#1}}%
|
|
{\detokenize{\&}}{\detokenize{&}}[\LWR@strresult]%
|
|
\LWR@subHTMLsanitize%
|
|
\LWR@strresult%
|
|
\endgroup%
|
|
}
|
|
|
|
\newrobustcmd{\LWR@HTMLsanitizeexpand}[1]{%
|
|
\begingroup%
|
|
\LWR@FBcancel%
|
|
\fullexpandarg%
|
|
\protect\StrSubstitute{\detokenize\expandafter{#1}}%
|
|
{\detokenize{\&}}{\detokenize{&}}[\LWR@strresult]%
|
|
\LWR@subHTMLsanitize%
|
|
\LWR@strresult%
|
|
\endgroup%
|
|
}
|
|
|
|
|
|
\newcommand*{\LWR@customizedMathJax}{}
|
|
|
|
\newbool{LWR@warnedcustomizemathjax}
|
|
\boolfalse{LWR@warnedcustomizemathjax}
|
|
|
|
\newcommand*{\LWR@subcustomizedmathjax}[1]{%
|
|
\begingroup%
|
|
\LWR@FBcancel%
|
|
\fullexpandarg%
|
|
\protect\StrSubstitute{\detokenize{#1}}%
|
|
{\detokenize{\&}}{\detokenize{&}}[\LWR@strresult]%
|
|
\LWR@subHTMLsanitize%
|
|
\xdef\LWR@customizedMathJax{%
|
|
\LWR@customizedMathJax%
|
|
\LWR@strresult%
|
|
}%
|
|
\endgroup%
|
|
}
|
|
\@onlypreamble\LWR@subcustomizedmathjax
|
|
|
|
\newcommand*{\CustomizeMathJax}[1]{%
|
|
\ifbool{LWR@warnedcustomizemathjax}{}{%
|
|
\StrLen{\detokenize{#1}}[\LWR@tempone]%
|
|
\ifnumgreater{\LWR@tempone}{200}{%
|
|
\AtEndDocument{%
|
|
\PackageWarningNoLine{lwarp}{%
|
|
To ensure faster MathJax compilation, place each\MessageBreak
|
|
custom macro in its own \protect\CustomizeMathJax.\MessageBreak
|
|
See the Lwarp documentation regarding customizing\MessageBreak
|
|
MathJax%
|
|
}%
|
|
}%
|
|
\booltrue{LWR@warnedcustomizemathjax}%
|
|
}{}%
|
|
}%
|
|
\appto\LWR@customizedMathJax{\LWRbackslash(}%
|
|
\LWR@subcustomizedmathjax{#1}%
|
|
\appto\LWR@customizedMathJax{\LWRbackslash)\par}%
|
|
}
|
|
\@onlypreamble\CustomizeMathJax
|
|
|
|
\newcommand*{\LWR@infoprocessingmathjax}[1]{%
|
|
\typeout{---}
|
|
\typeout{Package lwarp: Processing MathJax customizations for #1.}
|
|
\typeout{\space\space This may take a moment.}
|
|
\typeout{---}
|
|
}
|
|
|
|
\providecommand{\footnotename}{footnote}
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpMathJax}
|
|
\xdef\LWR@customizedMathJax{\LWR@customizedMathJax%
|
|
\LWRbackslash(%
|
|
\LWRbackslash{}newcommand%
|
|
\{\LWRbackslash{}footnotename\}%
|
|
\{\footnotename\}%
|
|
\LWRbackslash)\par%
|
|
}
|
|
\end{warpMathJax}
|
|
|
|
\begin{warpMathJax}
|
|
\CustomizeMathJax{\def\LWRfootnote{1}}
|
|
\CustomizeMathJax{\newcommand{\footnote}[2][\LWRfootnote]{{}^{\mathrm{#1}}}}
|
|
\CustomizeMathJax{\newcommand{\footnotemark}[1][\LWRfootnote]{{}^{\mathrm{#1}}}}
|
|
\end{warpMathJax}
|
|
|
|
\begin{warpMathJax}
|
|
\CustomizeMathJax{\newcommand\ensuremath[1]{#1}}
|
|
\CustomizeMathJax{% absorb two optional arguments
|
|
\newcommand{\LWRframebox}[2][]{\fbox{#2}}
|
|
\newcommand{\framebox}[1][]{\LWRframebox}
|
|
}
|
|
\CustomizeMathJax{\newcommand{\setlength}[2]{}}
|
|
\CustomizeMathJax{\newcommand{\addtolength}[2]{}}
|
|
\CustomizeMathJax{\newcommand{\setcounter}[2]{}}
|
|
\CustomizeMathJax{\newcommand{\addtocounter}[2]{}}
|
|
\CustomizeMathJax{\newcommand{\cline}[1]{}}
|
|
\CustomizeMathJax{\newcommand{\directlua}[1]{\text{(directlua)}}}
|
|
\CustomizeMathJax{\newcommand{\luatexdirectlua}[1]{\text{(directlua)}}}
|
|
\end{warpMathJax}
|
|
|
|
\begin{warpHTML}% due to warpMathJax
|
|
|
|
\newcommand{\LWR@customizeMathJax}{%
|
|
\ifbool{mathjax}{
|
|
\LWR@stoppars
|
|
\LWR@htmlcomment{MathJax customizations:}
|
|
|
|
\typeout{---}
|
|
\typeout{Package lwarp:}
|
|
\typeout{Processing MathJax customizations. If this takes too long,}
|
|
\typeout{see the Lwarp manual regarding customizing MathJax.}
|
|
\begin{BlockClass}{hidden}
|
|
\LWR@stoppars
|
|
\LWR@customizedMathJax
|
|
\LWR@startpars
|
|
\end{BlockClass}
|
|
\typeout{Done.}
|
|
\typeout{---}
|
|
|
|
\LWR@startpars
|
|
}{}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpprint}
|
|
|
|
\newcommand*{\CustomizeMathJax}[1]{}
|
|
|
|
|
|
\NewDocumentCommand{\FilenameSimplify}{s m}{}
|
|
|
|
\end{warpprint}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newcommand*{\LWR@createfooter}{%
|
|
\ifnumless{\value{LWR@htmlseqfilenumber}}{1}{%
|
|
\ifdefempty{\LWR@firstpagebottom}{}{%
|
|
\LWR@htmlelement{footer}
|
|
|
|
\LWR@firstpagebottom
|
|
|
|
\LWR@htmlelementend{footer}
|
|
}%
|
|
}{%
|
|
\ifdefempty{\LWR@pagebottom}{}{%
|
|
\LWR@htmlelement{footer}
|
|
|
|
\LWR@pagebottom
|
|
|
|
\LWR@htmlelementend{footer}
|
|
}%
|
|
}%
|
|
}
|
|
|
|
\newcommand*{\LWR@newhtmlfile}[1]{
|
|
\LWR@traceinfo{LWR@newhtmlfile}
|
|
\LWR@htmlelementclassend{section}{textbody}
|
|
\LWR@htmlelementclassend{div}{bodycontainer}
|
|
\LWR@htmlelementclassend{div}{bodyandsidetoc}
|
|
|
|
\LWR@printpendingfootnotes
|
|
|
|
\ifbool{FormatEPUB}{}{\LWR@createfooter}
|
|
\ifthenelse{\boolean{FormatEPUB}\OR\boolean{FormatWP}}
|
|
{}
|
|
{\ifnumcomp{\value{LWR@htmlfilenumber}}{>}{0}{\LWR@botnavigation}{}}
|
|
|
|
\LWR@stoppars
|
|
\LWR@htmltag{/body}\LWR@orignewline
|
|
\LWR@htmltag{/html}\LWR@orignewline
|
|
\LWR@traceinfo{LWR@newhtmlfile: about to LWR@orignewpage}
|
|
\LWR@maybe@orignewpage
|
|
\addtocounter{LWR@htmlfilenumber}{1}%
|
|
\addtocounter{LWR@htmlseqfilenumber}{1}%
|
|
\ifbool{FileSectionNames}%
|
|
{%
|
|
\LWR@filenamenoblanks{#1}%
|
|
\edef\LWR@hashedname{\LWR@mdfive{\LWR@thisfilename}}%
|
|
\ifcsundef{LWR@filename\LWR@hashedname}{%
|
|
\csdef{LWR@filename\LWR@hashedname}{}%
|
|
}{%
|
|
\PackageError{lwarp}%
|
|
{%
|
|
The section name:\MessageBreak
|
|
``#1'',\MessageBreak
|
|
at the line number listed below,\MessageBreak
|
|
generates the filename\MessageBreak
|
|
``\LWR@thisfilename'',\MessageBreak
|
|
which appears to be a duplicate. There is a\MessageBreak
|
|
previous section with an identical or similar name.\MessageBreak
|
|
While generating file names, Lwarp sanitizes math,\MessageBreak
|
|
most symbols, and a few common short words,\MessageBreak
|
|
and this may cause a conflict.\MessageBreak
|
|
Enter 'H' for possible solutions%
|
|
}%
|
|
{%
|
|
\LWR@avoiddupfilenames%
|
|
}%
|
|
}%
|
|
}%
|
|
{\renewcommand*{\LWR@thisfilename}{\arabic{LWR@htmlfilenumber}}}
|
|
\LWR@traceinfo{LWR@newhtmlfile: about to print start file}%
|
|
\begingroup%
|
|
\LWR@nullfonts%
|
|
\LWR@htmlblockcomment{%
|
|
|Start file|%
|
|
\LWR@htmlsectionfilename{\LWR@thisfilename}|%
|
|
}
|
|
\endgroup%
|
|
\LWR@stoppars
|
|
|
|
\LWR@filestart[#1]
|
|
|
|
\setcounter{LWR@latestautopage}{\value{page}}%
|
|
\LWR@newautopagelabel{LWR@latestautopage}%
|
|
\ifthenelse{\boolean{FormatEPUB}\OR\boolean{FormatWP}}
|
|
{}
|
|
{\LWR@topnavigation}
|
|
|
|
\ifthenelse{\boolean{FormatEPUB}\OR\boolean{FormatWP}}
|
|
{}
|
|
{
|
|
\ifdefempty{\LWR@pagetop}{}{
|
|
\LWR@htmlelement{header}
|
|
|
|
\LWR@pagetop
|
|
|
|
\LWR@htmlelementend{header}
|
|
}
|
|
}
|
|
|
|
\LWR@htmlelementclass{div}{bodyandsidetoc}
|
|
\ifthenelse{\boolean{FormatEPUB}\OR\boolean{FormatWP}}
|
|
{}
|
|
{\LWR@sidetoc}
|
|
|
|
\LWR@htmlelementclass{div}{bodycontainer}
|
|
\LWR@htmlelementclass{section}{textbody}
|
|
\boolfalse{LWR@setseqfilelabel}
|
|
\ifthenelse{\boolean{FormatEPUB}\OR\boolean{FormatWP}}%
|
|
{}%
|
|
{%
|
|
\ifcsvoid{thetitle}{}{%
|
|
\LWR@printthetitle%
|
|
}%
|
|
}%
|
|
\LWR@stoppars
|
|
|
|
\LWR@customizeMathJax
|
|
\LWR@traceinfo{LWR@newhtmlfile: done}
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpHTML}
|
|
\newbool{LWR@forcinghtmlpage}
|
|
\boolfalse{LWR@forcinghtmlpage}
|
|
|
|
\newcommand*{\ForceHTMLPage}{%
|
|
\global\booltrue{LWR@forcinghtmlpage}%
|
|
}
|
|
\newbool{LWR@forcinghtmltoc}
|
|
\boolfalse{LWR@forcinghtmltoc}
|
|
|
|
\newcommand*{\ForceHTMLTOC}{%
|
|
\global\booltrue{LWR@forcinghtmltoc}%
|
|
}
|
|
\end{warpHTML}
|
|
\begin{warpprint}
|
|
\newcommand*{\ForceHTMLPage}{}
|
|
\newcommand*{\ForceHTMLTOC}{}
|
|
\end{warpprint}
|
|
\begin{warpHTML}
|
|
\newbool{LWR@mainmatter}
|
|
\DeclareDocumentCommand{\mainmatter}{}{%
|
|
\booltrue{LWR@mainmatter}%
|
|
}
|
|
|
|
\DeclareDocumentCommand{\frontmatter}{}{%
|
|
\boolfalse{LWR@mainmatter}%
|
|
}
|
|
|
|
\DeclareDocumentCommand{\backmatter}{}{%
|
|
\boolfalse{LWR@mainmatter}
|
|
}
|
|
\newcommand*{\LWR@sectionnumber}[1]{%
|
|
\InlineClass{sectionnumber}{#1}%
|
|
}
|
|
|
|
\newcommand*{\LWR@createautosec}[1]{%
|
|
\LWR@htmltag{%
|
|
#1 % space
|
|
id=\textquotedbl\LWR@print@mbox{autosec-\arabic{page}}\textquotedbl%
|
|
}%
|
|
}
|
|
|
|
\NewDocumentCommand{\LWR@pushoneclose}{m}{%
|
|
\LWR@traceinfo{LWR@pushoneclose #1}%
|
|
\LWR@pushclose{#1}%
|
|
}
|
|
|
|
\NewDocumentCommand{\LWR@startnewdepth}{m}{%
|
|
\LWR@closeprevious{#1}%
|
|
\LWR@pushoneclose{#1}%
|
|
}
|
|
\newcounter{LWR@prevFileDepth}
|
|
\setcounter{LWR@prevFileDepth}{\LWR@depthsubparagraph}
|
|
\def\@seccntformat#1{\csname the#1\endcsname\quad}
|
|
\newcommand*{\simplechapterdelim}{}
|
|
\let\@chapcntformat\@seccntformat
|
|
\let\@partcntformat\@seccntformat
|
|
\newcommand*{\@partnameformat}{\LWR@isolate{\partname}~}%
|
|
\newcommand*{\LWR@printchaptername}{%
|
|
\ifdefvoid{\chaptername}{}{\chaptername~}%
|
|
}
|
|
\newcounter{LWR@currentautosec}
|
|
\setcounter{LWR@currentautosec}{1}
|
|
\DeclareDocumentCommand{\LWR@section}{m m m m}{%
|
|
\IfValueTF{#2}%
|
|
{\LWR@traceinfo{LWR@section: starting #4 #2}}%
|
|
{\LWR@traceinfo{LWR@section: starting #4 #3}}%
|
|
\LWR@spanwarninvalid{section}%
|
|
\LWR@maybeprintpendingfootnotes{\csuse{LWR@depth#4}}%
|
|
\LWR@stoppars%
|
|
\LWR@startnewdepth{#4}%
|
|
\global\boolfalse{LWR@minipagethispar}%
|
|
\LWR@traceinfo{LWR@section: testing whether to start a new HTML file}%
|
|
\IfBooleanT{#1}{\LWR@traceinfo{LWR@section: starred}}%
|
|
\ifbool{LWR@forcinghtmlpage}{\LWR@traceinfo{LWR@section: forcinghtmlpage}}{}%
|
|
\ifthenelse{%
|
|
\(%
|
|
\(\NOT\equal{#1}{\BooleanTrue}\)\OR%
|
|
\(\cnttest{\@nameuse{LWR@depth#4}}{=}{\LWR@depthpart}\)\OR%
|
|
\(\boolean{LWR@forcinghtmlpage}\)%
|
|
\)%
|
|
\AND%
|
|
\cnttest{\@nameuse{LWR@depth#4}}{<=}{\value{FileDepth}}%
|
|
\AND%
|
|
\(%
|
|
\NOT\boolean{CombineHigherDepths}\OR%
|
|
\cnttest{\@nameuse{LWR@depth#4}}{<=}{\value{LWR@prevFileDepth}}%
|
|
\)%
|
|
\AND%
|
|
\(% phantomsection
|
|
\NOT\isempty{#3}%
|
|
\OR%
|
|
\(\NOT\equal{#1}{\BooleanTrue}\)%
|
|
\)%
|
|
}%
|
|
{% new file
|
|
\LWR@traceinfo{LWR@section: new HTML file}%
|
|
\IfNoValueTF{#2}%
|
|
{\LWR@newhtmlfile{#3}}%
|
|
{\LWR@newhtmlfile{#2}}%
|
|
}% new file
|
|
{% not new file
|
|
\LWR@traceinfo{LWR@section: not a new HTML file, about to LWR@orignewpage}%
|
|
\LWR@maybe@orignewpage%
|
|
}% not new file
|
|
|
|
\IfValueT{#3}{%
|
|
\LWR@traceinfo{LWR@section: about to LWR@setlatestname}%
|
|
\IfValueTF{#2}{\LWR@setlatestname{#2}}{\LWR@setlatestname{#3}}%
|
|
}%
|
|
\ifbool{HTMLDebugComments}{%
|
|
\begingroup%
|
|
\LWR@nullfonts%
|
|
\IfBooleanTF{#1}% starred
|
|
{\LWR@htmlcomment{Opening #4*}}%
|
|
{%
|
|
\IfNoValueTF{#2}% short TOC
|
|
{\LWR@htmlcomment{Opening #4 ``#3''}}%
|
|
{\LWR@htmlcomment{Opening #4 ``#2''}}%
|
|
}\LWR@orignewline%
|
|
\endgroup%
|
|
}{}
|
|
\ifthenelse{%
|
|
\cnttest{\@nameuse{LWR@depth#4}}{>=}{\LWR@depthparagraph}%
|
|
}%
|
|
{\LWR@startpars}%
|
|
{}%
|
|
\LWR@traceinfo{LWR@section: about to LWR@createautosec}%
|
|
\LWR@createautosec{\@nameuse{LWR@tag#4}}%
|
|
\setcounter{LWR@currentautosec}{\value{page}}%
|
|
\IfBooleanTF{#1}%
|
|
{%
|
|
\LWR@traceinfo{LWR@section: starred}%
|
|
\ifbool{LWR@forcinghtmltoc}%
|
|
{%
|
|
\addcontentsline{toc}{#4}{%
|
|
\IfValueTF{#2}{\LWR@isolate{#2}}{\LWR@isolate{#3}}%
|
|
}%
|
|
}%
|
|
{}%
|
|
}% starred
|
|
{% not starred
|
|
\ifthenelse{%
|
|
\cnttest{\@nameuse{LWR@depth#4}}{<=}{\value{secnumdepth}}%
|
|
}%
|
|
{% if secnumdepth
|
|
\LWR@traceinfo{LWR@section: about to test main matter}%
|
|
\ifbool{LWR@mainmatter}%
|
|
{%
|
|
\LWR@traceinfo{LWR@section: yes mainmatter}%
|
|
\refstepcounter{#4}%
|
|
\LWR@traceinfo{LWR@section: about to addcontentsline}%
|
|
\addcontentsline{toc}{#4}%
|
|
{%
|
|
\protect\numberline{%
|
|
\@nameuse{pre#4name}%
|
|
\@nameuse{the#4}%
|
|
\@nameuse{post#4name}%
|
|
}%
|
|
{%
|
|
\ignorespaces%
|
|
\IfValueTF{#2}{\LWR@isolate{#2}}{\LWR@isolate{#3}}\protect\relax%
|
|
}%
|
|
}%
|
|
\LWR@traceinfo{LWR@section: finished addcontentsline}%
|
|
}% end of if main matter
|
|
{% not main matter
|
|
\LWR@traceinfo{LWR@section: no main matter}%
|
|
\addcontentsline{toc}{#4}{%
|
|
\IfValueTF{#2}{\LWR@isolate{#2}}{\LWR@isolate{#3}}%
|
|
}%
|
|
}% end of not main matter
|
|
}% end of secnumdepth
|
|
{%
|
|
\addcontentsline{toc}{#4}{%
|
|
\IfValueTF{#2}{\LWR@isolate{#2}}{\LWR@isolate{#3}}%
|
|
}%
|
|
}%
|
|
\ifbool{LWR@mainmatter}%
|
|
{%
|
|
\ifthenelse{%
|
|
\(\cnttest{\@nameuse{LWR@depth#4}}{<=}%
|
|
{\value{secnumdepth}}\) \AND%
|
|
\(\cnttest{\@nameuse{LWR@depth#4}}{=}{\LWR@depthpart}\)%
|
|
}%
|
|
{\@partnameformat}%
|
|
{}%
|
|
\LWR@traceinfo{LWR@section: about to print section number}%
|
|
\ifthenelse{%
|
|
\cnttest{\@nameuse{LWR@depth#4}}{<=}{\value{secnumdepth}}%
|
|
}%
|
|
{%
|
|
\ifstrequal{#4}{part}%
|
|
{\protect\LWR@sectionnumber{\@partcntformat{#4}}}%
|
|
{%
|
|
\ifstrequal{#4}{chapter}%
|
|
{%
|
|
\LWR@printchaptername%
|
|
\protect\LWR@sectionnumber{\@chapcntformat{#4}}%
|
|
}%
|
|
{\protect\LWR@sectionnumber{\@seccntformat{#4}}}%
|
|
}%
|
|
}%
|
|
{}%
|
|
\LWR@traceinfo{LWR@section: finished print section number}%
|
|
}{}%
|
|
}% not starred
|
|
\LWR@traceinfo{LWR@section: about to print the section name}%
|
|
\LWR@isolate{#3}%
|
|
\LWR@traceinfo{LWR@section: about to close the heading tag}%
|
|
\LWR@htmltag{\@nameuse{LWR@tag#4end}}%
|
|
\LWR@orignewline%
|
|
\LWR@traceinfo{LWR@section: about to create the LaTeX label}%
|
|
\setcounter{LWR@latestautopage}{\value{page}}%
|
|
\LWR@newautopagelabel{LWR@currentautosec}\LWR@orignewline%
|
|
\ifbool{LWR@setseqfilelabel}{}{%
|
|
\label{\BaseJobname-autofile-\arabic{LWR@htmlseqfilenumber}}%
|
|
\booltrue{LWR@setseqfilelabel}%
|
|
}%
|
|
\ifthenelse{%
|
|
\cnttest{\@nameuse{LWR@depth#4}}{<}{\LWR@depthparagraph}%
|
|
}%
|
|
{\LWR@startpars}%
|
|
{}%
|
|
\ifthenelse{%
|
|
\NOT\equal{#1}{\BooleanTrue}\OR%
|
|
\cnttest{\@nameuse{LWR@depth#4}}{=}{\LWR@depthpart}%
|
|
}%
|
|
{% not starred
|
|
\setcounter{LWR@prevFileDepth}{\@nameuse{LWR@depth#4}}%
|
|
}% not starred
|
|
{}%
|
|
\ifstrempty{#3}%
|
|
{}%
|
|
{%
|
|
\global\boolfalse{LWR@forcinghtmlpage}%
|
|
\global\boolfalse{LWR@forcinghtmltoc}%
|
|
}%
|
|
\LWR@traceinfo{LWR@section: done}%
|
|
}
|
|
|
|
|
|
\providecommand*{\prebookname}{}
|
|
\providecommand*{\postbookname}{}
|
|
|
|
\providecommand*{\prepartname}{}
|
|
\providecommand*{\postpartname}{}
|
|
|
|
\providecommand*{\prechaptername}{}
|
|
\providecommand*{\postchaptername}{}
|
|
|
|
\providecommand*{\presectionname}{}
|
|
\let\postsectionname\presectionname
|
|
|
|
\let\presubsectionname\presectionname
|
|
\let\postsubsectionname\postsectionname
|
|
|
|
\let\presubsubsectionname\presectionname
|
|
\let\postsubsubsectionname\postsectionname
|
|
|
|
\let\preparagraphname\presectionname
|
|
\let\postparagraphname\postsectionname
|
|
|
|
\let\presubparagraphname\presectionname
|
|
\let\postsubparagraphname\postsectionname
|
|
|
|
|
|
\newcommand{\part@preamble}{}% for koma-script
|
|
|
|
\DeclareDocumentCommand{\part}{s d() o o d() m}{%
|
|
\LWR@section{#1}{#3}{#6}{part}%
|
|
|
|
\part@preamble% for koma-script
|
|
\renewcommand{\part@preamble}{}%
|
|
}
|
|
|
|
\let\@printcites\relax% for quotchap package
|
|
|
|
\newcommand{\chapter@preamble}{}% for koma-script
|
|
|
|
\@ifundefined{chapter}
|
|
{}
|
|
{%
|
|
\DeclareDocumentCommand{\chapter}{s d() o o d() m}{%
|
|
\LWR@section{#1}{#3}{#6}{chapter}%
|
|
|
|
\@printcites% for quotchap package
|
|
|
|
\chapter@preamble% for koma-script
|
|
\renewcommand{\chapter@preamble}{}%
|
|
}
|
|
}
|
|
|
|
\DeclareDocumentCommand{\section}{s d() o o d() m}{%
|
|
\LWR@section{#1}{#3}{#6}{section}%
|
|
}
|
|
|
|
\DeclareDocumentCommand{\subsection}{s d() o o d() m}{%
|
|
\LWR@section{#1}{#3}{#6}{subsection}%
|
|
}
|
|
|
|
\DeclareDocumentCommand{\subsubsection}{s d() o o d() m}{%
|
|
\LWR@section{#1}{#3}{#6}{subsubsection}%
|
|
}
|
|
|
|
\DeclareDocumentCommand{\paragraph}{s d() o o d() m}{%
|
|
\LWR@section{#1}{#3}{#6}{paragraph}%
|
|
}
|
|
|
|
\DeclareDocumentCommand{\subparagraph}{s d() o o d() m}{%
|
|
\LWR@section{#1}{#3}{#6}{subparagraph}%
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpall}
|
|
|
|
\newcommand*{\LWR@currentHTMLLanguage}{en-US}
|
|
|
|
\newcommand*{\HTMLLanguage}[1]{%
|
|
\renewcommand*{\LWR@currentHTMLLanguage}{#1}%
|
|
}
|
|
|
|
\ifPDFTeX% pdflatex or dvi latex
|
|
\ifdefstring{\inputencodingname}{utf8}{%
|
|
\newcommand*{\theHTMLTitleSeparator}{ —\ }% EMdash
|
|
}{%
|
|
\newcommand*{\theHTMLTitleSeparator}{ -\ }% hyphen
|
|
}%
|
|
\else%
|
|
\ifpTeX
|
|
\newcommand*{\theHTMLTitleSeparator}{ -\ }% hyphen
|
|
\else
|
|
\newcommand*{\theHTMLTitleSeparator}{ —\ }% EMdash
|
|
\fi%
|
|
\fi%
|
|
|
|
\newcommand*{\HTMLTitleBeforeSection}{%
|
|
\def\theHTMLTitleSection{%
|
|
\theHTMLTitle\theHTMLTitleSeparator\theHTMLSection%
|
|
}%
|
|
}
|
|
|
|
\newcommand*{\HTMLTitleAfterSection}{%
|
|
\def\theHTMLTitleSection{%
|
|
\theHTMLSection\theHTMLTitleSeparator\theHTMLTitle%
|
|
}%
|
|
}
|
|
|
|
\HTMLTitleBeforeSection
|
|
|
|
\newcommand*{\theHTMLSection}{}
|
|
|
|
\end{warpall}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newcommand*{\LWR@filestart}[1][]{%
|
|
\LWR@traceinfo{LWR@filestart !#1!}%
|
|
\begingroup%
|
|
\LWR@nullfonts%
|
|
\edef\theHTMLSection{#1}%
|
|
\StrSubstitute{\theHTMLSection}{\protect}{\detokenize{-}}[\theHTMLSection]
|
|
\StrSubstitute{\theHTMLSection}{\detokenize{-----}}{\detokenize{-}}[\theHTMLSection]
|
|
\StrSubstitute{\theHTMLSection}{\detokenize{----}}{\detokenize{-}}[\theHTMLSection]
|
|
\StrSubstitute{\theHTMLSection}{\detokenize{---}}{\detokenize{-}}[\theHTMLSection]
|
|
\StrSubstitute{\theHTMLSection}{\detokenize{--}}{\detokenize{-}}[\theHTMLSection]
|
|
\IfBeginWith{\theHTMLSection}{\detokenize{-}}{%
|
|
\StrGobbleLeft{\theHTMLSection}{1}[\theHTMLSection]%
|
|
}{}%
|
|
\LWR@htmltag{!DOCTYPE html}\LWR@orignewline
|
|
\LWR@htmltag{%
|
|
html lang=\LWR@orig@textquotedbl\LWR@currentHTMLLanguage\LWR@orig@textquotedbl%
|
|
}\LWR@orignewline
|
|
\LWR@htmltag{head}\LWR@orignewline
|
|
\LWR@htmltag{%
|
|
meta charset=\LWR@orig@textquotedbl{}UTF-8\LWR@orig@textquotedbl\ /%
|
|
}\LWR@orignewline
|
|
\ifthenelse{\equal{\theHTMLAuthor}{}}%
|
|
{}%
|
|
{%
|
|
\LWR@htmltag{%
|
|
meta name=\LWR@orig@textquotedbl{}author\LWR@orig@textquotedbl\ % space
|
|
content=\LWR@orig@textquotedbl\theHTMLAuthor\LWR@orig@textquotedbl\ /%
|
|
}\LWR@orignewline%
|
|
}%
|
|
\LWR@htmltag{%
|
|
meta % space
|
|
name=\LWR@orig@textquotedbl{}generator\LWR@orig@textquotedbl\ % space
|
|
content=\LWR@orig@textquotedbl{}LaTeX Lwarp package\LWR@orig@textquotedbl\ /%
|
|
}\LWR@orignewline%
|
|
\ifdefempty{\LWR@currentHTMLDescription}{}{%
|
|
\LWR@htmltag{%
|
|
meta name=\LWR@orig@textquotedbl{}description\LWR@orig@textquotedbl\ % space
|
|
content=\LWR@orig@textquotedbl\LWR@currentHTMLDescription\LWR@orig@textquotedbl\ /%
|
|
}\LWR@orignewline
|
|
}%
|
|
\LWR@htmltag{%
|
|
meta % space
|
|
name=\LWR@orig@textquotedbl{}viewport\LWR@orig@textquotedbl\ % space
|
|
content=\LWR@orig@textquotedbl{}width=device-width, initial-scale=1.0\LWR@orig@textquotedbl\ /%
|
|
}\LWR@orignewline
|
|
\LWR@htmltag{!-\/-[if lt IE 9]}\LWR@orignewline
|
|
\LWR@htmltag{%
|
|
script % space
|
|
src=\LWR@orig@textquotedbl{}%
|
|
http://html5shiv.googlecode.com/svn/trunk/html5.js%
|
|
\LWR@orig@textquotedbl%
|
|
}%
|
|
\LWR@htmltag{/script}\LWR@orignewline
|
|
\LWR@htmltag{![endif]-\/-}\LWR@orignewline
|
|
\ifthenelse{\equal{\theHTMLTitle}{}}%
|
|
{}%
|
|
{%
|
|
\LWR@htmltag{title}%
|
|
\ifdefempty{\theHTMLSection}%
|
|
{\theHTMLTitle}%
|
|
{\theHTMLTitleSection}%
|
|
\LWR@htmltag{/title}\LWR@orignewline%
|
|
}%
|
|
\LWR@htmltag{%
|
|
link % space
|
|
rel=\LWR@orig@textquotedbl{}stylesheet\LWR@orig@textquotedbl\ % space
|
|
type=\LWR@orig@textquotedbl{}text/css\LWR@orig@textquotedbl\ % space
|
|
href=\LWR@orig@textquotedbl\LWR@currentcss\LWR@orig@textquotedbl\ /%
|
|
}%
|
|
\LWR@orignewline
|
|
\ifbool{mathjax}%
|
|
{%
|
|
\begingroup%
|
|
\LWR@restoreoriglists%
|
|
\boolfalse{LWR@verbtags}%
|
|
\IfFileExists{\LWR@mathjaxfilename}%
|
|
{\verbatiminput{\LWR@mathjaxfilename}}%
|
|
{%
|
|
\PackageError{lwarp}%
|
|
{%
|
|
\protect\MathJaxFilename\space specified the file\MessageBreak
|
|
\space\space\LWR@mathjaxfilename\MessageBreak
|
|
which does not exist%
|
|
}%
|
|
{Specify an existing file, or remove \protect\MathJaxFilename.}%
|
|
}%
|
|
\booltrue{LWR@verbtags}%
|
|
\endgroup%
|
|
\LWR@stoppars%
|
|
}% end of mathjax
|
|
{}%
|
|
\LWR@htmltag{/head}\LWR@orignewline
|
|
\LWR@htmltag{body}\LWR@orignewline
|
|
\endgroup
|
|
\LWR@traceinfo{LWR@filestart: done}
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\catcode`\$=\active
|
|
\newcommand*{\LWR@LwarpStart}
|
|
{%
|
|
\LWR@traceinfo{LWR@lwarpStart}
|
|
\ifbool{FormatWP}{%
|
|
\setcounter{FileDepth}{-5}%
|
|
\boolfalse{HTMLDebugComments}%
|
|
}{}
|
|
\edef\LWR@strresult{\HomeHTMLFilename}
|
|
\edef\HomeHTMLFilename{\detokenize\expandafter{\LWR@strresult}}
|
|
\edef\LWR@strresult{\HTMLFilename}
|
|
\edef\HTMLFilename{\detokenize\expandafter{\LWR@strresult}}
|
|
\LWR@origonecolumn%
|
|
\LWR@origpagestyle{empty}%
|
|
\overfullrule=0pt
|
|
\LWR@print@footnotesize%
|
|
\LWR@print@raggedright%
|
|
\LetLtxMacro{\\}{\LWR@endofline}%
|
|
\linespread{1.3}%
|
|
\setlength{\parindent}{0pt}
|
|
\setlength{\parskip}{2ex}
|
|
\immediate\openout\LWR@lateximagesfile=\BaseJobname-images.txt
|
|
\setlength{\belowcaptionskip}{0ex}
|
|
\setlength{\abovecaptionskip}{0ex}
|
|
\renewcommand{\ps@plain}{}
|
|
\let\LWR@origcaption\caption
|
|
\global\boolfalse{LWR@doingapar}
|
|
\global\boolfalse{LWR@doingstartpars}
|
|
\mainmatter
|
|
\LWR@origpagenumbering{arabic}
|
|
\LWR@traceinfo{LWR@lwarpStart: Starting new file.}
|
|
\LWR@filestart
|
|
\LWR@traceinfo{LWR@lwarpStart: Generating first header.}
|
|
\ifdefempty{\LWR@firstpagetop}{}{%
|
|
\LWR@htmltag{header}\LWR@orignewline
|
|
\LWR@startpars
|
|
\LWR@firstpagetop
|
|
\LWR@stoppars
|
|
\LWR@htmltag{/header}\LWR@orignewline
|
|
}%
|
|
\LWR@htmlelementclass{div}{bodywithoutsidetoc}
|
|
\LWR@htmlelementclass{div}{bodycontainer}
|
|
\LWR@traceinfo{LWR@lwarpStart: Generating textbody.}
|
|
\LWR@htmlelementclass{section}{textbody}
|
|
\booltrue{LWR@setseqfilelabel}%
|
|
\label{\BaseJobname-autofile-\arabic{LWR@htmlseqfilenumber}}
|
|
\LWR@patchlists
|
|
\catcode`\$=\active
|
|
\immediate\write\@mainaux{\catcode`\string$\active}%
|
|
\LetLtxMacro\LWR@syntaxhighlightone$% balance for editor syntax highlighting
|
|
\LWR@startpars
|
|
\LWR@customizeMathJax
|
|
\setcounter{LWR@latestautopage}{\value{page}}%
|
|
\LWR@newautopagelabel{LWR@currentautosec}%
|
|
\LWR@traceinfo{LWR@lwarpStart: done}
|
|
}
|
|
\catcode`\$=3% math shift until lwarp starts
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
|
|
\newcommand*{\LWR@requesttoc}[2]{%
|
|
\ifbool{#1}
|
|
{
|
|
\expandafter\newwrite\@nameuse{tf@#2}
|
|
\immediate\openout \@nameuse{tf@#2} \jobname.#2\relax
|
|
}{}
|
|
}
|
|
|
|
\newcommand*{\LWR@LwarpEnd}
|
|
{
|
|
\LWR@stoppars
|
|
\LWR@closeprevious{finished}
|
|
|
|
\label{\BaseJobname-autofile-last}
|
|
\LWR@htmlelementclassend{section}{textbody}
|
|
\LWR@htmlelementclassend{div}{bodycontainer}
|
|
\LWR@htmlelementclassend{div}{bodyandsidetoc}
|
|
\LWR@printpendingfootnotes
|
|
\ifbool{FormatEPUB}{}{\LWR@createfooter}
|
|
|
|
\ifthenelse{\boolean{FormatEPUB}\OR\boolean{FormatWP}}
|
|
{}
|
|
{
|
|
\ifnumcomp{\value{LWR@htmlfilenumber}}{>}{0}{\LWR@botnavigation}{}
|
|
}
|
|
\LWR@stoppars% final stop of all paragraphs
|
|
\LWR@htmltag{/body}\LWR@orignewline
|
|
\LWR@htmltag{/html}\LWR@orignewline
|
|
\LWR@maybe@orignewpage
|
|
}
|
|
|
|
\xpatchcmd{\enddocument}
|
|
{%
|
|
\if@tempswa
|
|
\@latex@warning@no@line{Label(s) may have changed.
|
|
Rerun to get cross-references right}%
|
|
\fi
|
|
}
|
|
{%
|
|
\if@tempswa
|
|
\@latex@warning@no@line{Label(s) may have changed.
|
|
Rerun to get cross-references right}%
|
|
\else
|
|
\immediate\write\LWR@lateximagesfile{%
|
|
|end|end|end|%
|
|
}%
|
|
\fi
|
|
}
|
|
{}
|
|
{
|
|
\AtEndDocument{
|
|
\PackageWarningNoLine{lwarp}
|
|
{%
|
|
Could not patch \protect\enddocument.\MessageBreak
|
|
If labels have changed, be sure to recompile before\MessageBreak
|
|
creating lateximages with\MessageBreak
|
|
\space\space lwarpmk limages,\MessageBreak
|
|
or the images may be corrupt%
|
|
}
|
|
}
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpall}
|
|
\ifcsvoid{@titlepagefalse}{
|
|
\newif\if@titlepage
|
|
\@titlepagefalse
|
|
}{}
|
|
\end{warpall}
|
|
\begin{warpall}
|
|
\providerobustcmd{\affiliation}[1]{}
|
|
\end{warpall}
|
|
\begin{warpprint}
|
|
\AtBeginEnvironment{titlepage}{
|
|
\renewrobustcmd{\affiliation}[1]{\\ \textsc{\small#1}}
|
|
}
|
|
|
|
\AtBeginDocument{
|
|
\@ifpackageloaded{titling}{
|
|
\AtBeginEnvironment{titlingpage}{
|
|
\renewrobustcmd{\affiliation}[1]{\\ \textsc{\small#1}}
|
|
}
|
|
}{}% titling loaded
|
|
}% AtBeginDocument
|
|
\end{warpprint}
|
|
\begin{warpHTML}
|
|
\DeclareDocumentEnvironment{titlepage}{}
|
|
{
|
|
\renewrobustcmd{\affiliation}[1]{\\ \InlineClass{affiliation}{##1}}
|
|
\LWR@printpendingfootnotes
|
|
\LWR@forcenewpage
|
|
\BlockClass{titlepage}
|
|
}
|
|
{
|
|
\endBlockClass
|
|
\LWR@printpendingfootnotes
|
|
}
|
|
\end{warpHTML}
|
|
\begin{warpprint}
|
|
\newcommand*{\printthanks}{\@thanks}
|
|
\end{warpprint}
|
|
|
|
\begin{warpHTML}
|
|
\newcommand*{\printthanks}{\LWR@stoppars\@thanks\LWR@startpars}
|
|
\end{warpHTML}
|
|
|
|
\begin{warpHTML}
|
|
\newcommand*{\printtitle}
|
|
{%
|
|
\LWR@stoppars%
|
|
\LWR@htmltag{\LWR@tagtitle}%
|
|
\@title%
|
|
\LWR@htmltag{\LWR@tagtitleend}%
|
|
\LWR@startpars%
|
|
}
|
|
\newcommand*{\LWR@printthetitle}
|
|
{%
|
|
\LWR@stoppars%
|
|
\LWR@htmltag{\LWR@tagtitle}%
|
|
\thetitle%
|
|
\LWR@htmltag{\LWR@tagtitleend}%
|
|
\LWR@startpars%
|
|
}
|
|
|
|
\newcommand*{\printauthor}{
|
|
\begin{BlockClass}{author}
|
|
\renewcommand{\and}{%
|
|
\end{BlockClass}
|
|
\begin{BlockClass}{oneauthor}
|
|
}
|
|
\begin{BlockClass}{oneauthor}
|
|
\@author
|
|
\end{BlockClass}
|
|
\end{BlockClass}
|
|
}
|
|
|
|
\newcommand*{\printdate}{%
|
|
\begin{BlockClass}{titledate}
|
|
\@date
|
|
\end{BlockClass}
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpprint}
|
|
|
|
|
|
\newcommand*{\printtitle}{{\Huge\@title}}
|
|
|
|
\newcommand*{\printauthor}
|
|
{{\large\begin{tabular}[t]{c}\@author\end{tabular}}}
|
|
|
|
\newcommand*{\printdate}{{\small\textit{\@date}}}
|
|
\end{warpprint}
|
|
\begin{warpHTML}
|
|
\@ifclassloaded{memoir}
|
|
{
|
|
\newcommand{\LWR@setfootnoteseries}{%
|
|
\renewcommand\thefootnote{\@arabic\c@footnote}%
|
|
}
|
|
}{% not memoir
|
|
\if@titlepage
|
|
\newcommand{\LWR@setfootnoteseries}{%
|
|
\renewcommand\thefootnote{\@arabic\c@footnote}%
|
|
}
|
|
\else
|
|
\newcommand{\LWR@setfootnoteseries}{%
|
|
\renewcommand\thefootnote{\@fnsymbol\c@footnote}%
|
|
}
|
|
\fi
|
|
}% not memoir
|
|
\newcommand*{\LWR@maketitlesetup}{%
|
|
\LWR@setfootnoteseries%
|
|
\def\@makefnmark{\textsuperscript{\thefootnote}}
|
|
\long\def\@makefntext##1{%
|
|
\textsuperscript{\@thefnmark}~%
|
|
##1%
|
|
}%
|
|
}
|
|
|
|
\def\LWR@HTML@@fnsymbol#1{%
|
|
\ifcase#1\or *\or
|
|
\HTMLentity{dagger}\or
|
|
\HTMLentity{Dagger}\or
|
|
\HTMLentity{sect}\or
|
|
\HTMLentity{para}\or
|
|
\HTMLunicode{2016}\or
|
|
**\or
|
|
\HTMLentity{dagger}\HTMLentity{dagger} \or
|
|
\HTMLentity{Dagger}\HTMLentity{Dagger} \else
|
|
\@ctrerr\fi%
|
|
}
|
|
\LWR@formatted{@fnsymbol}
|
|
\renewcommand*{\maketitle}{%
|
|
\begin{titlepage}
|
|
\LWR@maketitlesetup
|
|
\@maketitle
|
|
\LWR@stoppars\@thanks\LWR@startpars
|
|
\end{titlepage}
|
|
\setcounter{footnote}{0}%
|
|
\global\let\thanks\relax
|
|
\global\let\maketitle\relax
|
|
\global\let\@maketitle\relax
|
|
\global\let\@thanks\@empty
|
|
\global\let\@author\@empty
|
|
\global\let\@date\@empty
|
|
\global\let\@title\@empty
|
|
\global\let\title\relax
|
|
\global\let\author\relax
|
|
\global\let\date\relax
|
|
\global\let\and\relax
|
|
}
|
|
\DeclareDocumentCommand{\@maketitle}{}{%
|
|
\LWR@stoppars%
|
|
\LWR@htmltag{\LWR@tagtitle}%
|
|
\@title%
|
|
\LWR@htmltag{\LWR@tagtitleend}%
|
|
\LWR@startpars%
|
|
\begin{BlockClass}{author}%
|
|
\renewcommand*{\cr}{}%
|
|
\renewcommand*{\crcr}{}%
|
|
\renewcommand*{\noalign}{}%
|
|
\renewcommand{\and}{%
|
|
\end{BlockClass}%
|
|
\begin{BlockClass}{oneauthor}%
|
|
}%
|
|
\begin{BlockClass}{oneauthor}%
|
|
\@author%
|
|
\end{BlockClass}%
|
|
\end{BlockClass}%
|
|
\begin{BlockClass}{titledate}%
|
|
\@date%
|
|
\end{BlockClass}%
|
|
}
|
|
|
|
\newcommand*{\LWR@titlingmaketitle}{%
|
|
\LWR@stoppars\@thanks\LWR@startpars
|
|
\LWR@maketitlesetup
|
|
\@maketitle
|
|
\LWR@stoppars\@thanks\LWR@startpars
|
|
}
|
|
\end{warpHTML}
|
|
\begin{warpall}
|
|
|
|
\newcommand*{\AddSubtitlePublished}{%
|
|
\@ifpackageloaded{titling}{% yes titling package
|
|
\newcommand{\@published}{}%
|
|
\newcommand{\published}[1]{\gdef\@published{##1}}%
|
|
\renewcommand*{\maketitlehooka}{\printpublished}%
|
|
\newcommand*{\printpublished}{%
|
|
\warpprintonly{\begin{center}\unskip}%
|
|
\begin{BlockClass}{published}%
|
|
\warpprintonly{\large\itshape}%
|
|
\@published%
|
|
\end{BlockClass}%
|
|
\warpprintonly{\end{center}}%
|
|
}%
|
|
\newcommand{\@subtitle}{}%
|
|
\newcommand{\subtitle}[1]{\gdef\@subtitle{##1}}%
|
|
\renewcommand*{\maketitlehookb}{\printsubtitle}%
|
|
\newcommand*{\printsubtitle}{%
|
|
\warpprintonly{\begin{center}\unskip}%
|
|
\begin{BlockClass}{subtitle}%
|
|
\warpprintonly{\Large\itshape}%
|
|
\@subtitle%
|
|
\end{BlockClass}%
|
|
\warpprintonly{\end{center}}%
|
|
}%
|
|
}% yes titling package
|
|
{% no titling package
|
|
\def\@published{}%
|
|
\DeclareDocumentCommand{\published}{m}{\gdef\@published{##1}}%
|
|
\DeclareDocumentCommand{\printpublished}{}{}%
|
|
\def\@subtitle{}%
|
|
\DeclareDocumentCommand{\subtitle}{m}{\gdef\@subtitle{##1}}%
|
|
\DeclareDocumentCommand{\printsubtitle}{}{}%
|
|
}% no titling package
|
|
}% \AddSubtitlePublished
|
|
|
|
\end{warpall}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\providecommand*{\abstractname}{Abstract}
|
|
\DeclareDocumentEnvironment{abstract}{O{\abstractname}}
|
|
{
|
|
\LWR@forcenewpage
|
|
\BlockClass{abstract}
|
|
\BlockClassSingle{abstracttitle}{#1}
|
|
}
|
|
{
|
|
\endBlockClass
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
|
|
\begin{warpall}
|
|
\newcommand{\attribution}[1]{
|
|
\begin{flushright}
|
|
\unskip
|
|
#1
|
|
\end{flushright}%
|
|
}
|
|
\end{warpall}
|
|
\begin{warpHTML}
|
|
\newcommand{\LWR@HTML@attribution}[1]{%
|
|
\LWR@stoppars%
|
|
\begin{BlockClass}{attribution}
|
|
#1
|
|
\end{BlockClass}
|
|
\LWR@startpars%
|
|
}
|
|
\LWR@formatted{attribution}
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpHTML}
|
|
\newenvironment*{LWR@HTML@quote}
|
|
{
|
|
\LWR@forcenewpage
|
|
\LWR@htmlblocktag{blockquote}
|
|
}
|
|
{\LWR@htmlblocktag{/blockquote}}
|
|
|
|
\LWR@formattedenv{quote}
|
|
\newenvironment*{LWR@HTML@quotation}
|
|
{
|
|
\LWR@forcenewpage
|
|
\LWR@htmlblocktag{blockquote}
|
|
}
|
|
{\LWR@htmlblocktag{/blockquote}}
|
|
|
|
\LWR@formattedenv{quotation}
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpHTML}
|
|
\newenvironment{LWR@HTML@verse}
|
|
{\let\\\newline% lwarp
|
|
\list{}{\itemsep \z@
|
|
\itemindent -1.5em%
|
|
\listparindent\itemindent
|
|
\rightmargin \leftmargin
|
|
\advance\leftmargin 1.5em}%
|
|
\item\relax}
|
|
{\endlist}
|
|
|
|
\LWR@formattedenv{verse}
|
|
\end{warpHTML}
|
|
\begin{warpall}
|
|
|
|
\newlength{\HTMLvleftskip}
|
|
\setlength{\HTMLvleftskip}{1em}
|
|
|
|
\newlength{\HTMLleftmargini}
|
|
\setlength{\HTMLleftmargini}{4.5em}
|
|
|
|
\end{warpall}
|
|
|
|
|
|
|
|
\begin{warpall}
|
|
\newlength{\VerbatimHTMLWidth}
|
|
\setlength{\VerbatimHTMLWidth}{4in}
|
|
\end{warpall}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newbool{LWR@verbtags}
|
|
\booltrue{LWR@verbtags}
|
|
|
|
\newcommand*{\LWR@atbeginverbatim}[3][]
|
|
{%
|
|
\setlength{\parskip}{0ex}%
|
|
\LWR@stoppars%
|
|
\ifbool{LWR@verbtags}{%
|
|
\LWR@htmltag{pre class=\textquotedbl#3\textquotedbl%
|
|
\ifthenelse{\equal{#1}{}}{}{ style=\textquotedbl#1\textquotedbl}%
|
|
}%
|
|
\LWR@orignewline% pre
|
|
\leavevmode\unskip\LWR@print@vspace*{-#2\baselineskip}%
|
|
}{}%
|
|
\begingroup%
|
|
\LWR@print@normalfont%
|
|
\LWR@origttfamily%
|
|
\LWR@print@small%
|
|
\LWR@restoreoriglists%
|
|
\LWR@FBcancel%
|
|
\LWR@select@print@hspace%
|
|
}
|
|
|
|
\newcommand*{\LWR@afterendverbatim}[1]{%
|
|
\endgroup%
|
|
\par%
|
|
\ifbool{LWR@verbtags}{%
|
|
\LWR@print@vspace*{-#1\baselineskip}%
|
|
\noindent\LWR@htmltag{/pre}\LWR@orignewline% pre
|
|
}{}%
|
|
\LWR@startpars%
|
|
}
|
|
|
|
\newcommand{\LWR@HTML@verbatim@input}[2]{%
|
|
\ifbool{LWR@verbtags}{\LWR@forcenewpage}{}%
|
|
\LWR@atbeginverbatim{2.5}{Verbatim}%
|
|
\LWR@print@verbatim@input{#1}{#2}%
|
|
\LWR@afterendverbatim{1.5}%
|
|
}
|
|
|
|
\LWR@formatted{verbatim@input}
|
|
|
|
\AfterEndPreamble{
|
|
\LWR@traceinfo{Patching verbatim.}
|
|
\AtBeginEnvironment{verbatim}{%
|
|
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
|
|
{}%
|
|
{%
|
|
\LWR@forcenewpage%
|
|
\LWR@atbeginverbatim{2.5}{verbatim}%
|
|
}%
|
|
}
|
|
\AfterEndEnvironment{verbatim}{%
|
|
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
|
|
{}%
|
|
{%
|
|
\LWR@afterendverbatim{1}%
|
|
}%
|
|
}
|
|
}
|
|
|
|
\newcommand*{\LWR@HTML@tabbing}{%
|
|
\LWR@forcenewpage%
|
|
\LWR@atbeginverbatim{3}{tabbing}%
|
|
\let\enskip\LWR@origenskip%
|
|
\let\quad\LWR@origquad%
|
|
\let\qquad\LWR@origqquad%
|
|
\let~\LWR@origtilde%
|
|
\let\,\LWR@origcomma%
|
|
\let\thinspace\LWR@origthinspace%
|
|
\let\negthinspace\LWR@orignegthinspace%
|
|
\LWR@print@tabbing%
|
|
}
|
|
|
|
\newcommand*{\LWR@HTML@endtabbing}{%
|
|
\LWR@print@endtabbing%
|
|
\LWR@afterendverbatim{1}%
|
|
}
|
|
|
|
\LWR@formatted{tabbing}
|
|
\LWR@formatted{endtabbing}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\renewcommand{\@begintheorem}[2]{%
|
|
\LWR@forcenewpage
|
|
\BlockClass{theoremcontents}
|
|
\trivlist
|
|
\item[\InlineClass{theoremlabel}{#1\ #2\ }]\itshape
|
|
}
|
|
\renewcommand{\@opargbegintheorem}[3]{%
|
|
\LWR@forcenewpage
|
|
\BlockClass{theoremcontents}
|
|
\trivlist
|
|
\item[\InlineClass{theoremlabel}{#1\ #2\ (#3)\ }]\itshape
|
|
}
|
|
\renewcommand*{\@endtheorem}{%
|
|
\endtrivlist
|
|
\endBlockClass% theoremcontents
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newcommand*{\LWR@printcloselist}{\LWR@printcloseitemize}
|
|
|
|
\newcommand*{\LWR@printopenlist}{ul style="\LWR@print@mbox{list-style-type:none}"}
|
|
|
|
\AtBeginDocument{
|
|
\def\@mklab#1{%
|
|
#1}
|
|
\let\makelabel\@mklab
|
|
}
|
|
|
|
\def\@donoparitem{%
|
|
\@noparitemfalse
|
|
}
|
|
\def\LWR@HTML@item[#1]{%
|
|
\LWR@traceinfo{@item}
|
|
\if@noparitem
|
|
\@donoparitem
|
|
\else
|
|
\par
|
|
\ifhmode
|
|
\par
|
|
\fi
|
|
\if@newlist
|
|
\if@nobreak
|
|
\@nbitem
|
|
\else
|
|
\fi
|
|
\else
|
|
\fi
|
|
\global\@inlabeltrue
|
|
\fi
|
|
\@minipagefalse
|
|
\global\@newlistfalse
|
|
\if@noitemarg
|
|
\@noitemargfalse
|
|
\if@nmbrlist
|
|
\refstepcounter\@listctr
|
|
\fi
|
|
\fi
|
|
\makelabel{#1} % extra space
|
|
\ignorespaces%
|
|
}
|
|
|
|
\def\@nbitem{%
|
|
}
|
|
|
|
\newcommand*{\LWR@listitem}{%
|
|
\LWR@stoppars%
|
|
\LWR@startnewdepth{listitem}%
|
|
\LWR@htmltag{li}%
|
|
\LWR@startpars%
|
|
\LWR@origitem%
|
|
}
|
|
|
|
\newcommand*{\LWR@nulllistfills}{%
|
|
\renewcommand*{\hss}{}%
|
|
\renewcommand*{\llap}[1]{##1}%
|
|
\renewcommand*{\rlap}[1]{##1}%
|
|
\renewcommand*{\hfil}{}%
|
|
\renewcommand*{\hfilneg}{}%
|
|
\renewcommand*{\hfill}{}%
|
|
}
|
|
|
|
\newcommand*{\LWR@liststart}{%
|
|
\LWR@traceinfo{LWR@liststart}%
|
|
\LWR@stoppars%
|
|
\LWR@pushoneclose{list}%
|
|
\LWR@htmltag{\LWR@printopenlist}\LWR@orignewline%
|
|
\LWR@startpars%
|
|
\setlength{\topsep}{0pt}%
|
|
\setlength{\partopsep}{0pt}%
|
|
\setlength{\itemsep}{0pt}%
|
|
\setlength{\parsep}{0pt}%
|
|
\setlength{\leftmargin}{0pt}%
|
|
\setlength{\rightmargin}{0pt}%
|
|
\setlength{\listparindent}{0pt}%
|
|
\setlength{\itemindent}{0pt}%
|
|
\setlength{\labelsep}{1em}%
|
|
\LWR@nulllistfills%
|
|
}
|
|
\newcommand*{\LWR@listend}{%
|
|
\LWR@traceinfo{LWR@listend}%
|
|
\LWR@stoppars%
|
|
\LWR@closeprevious{list}%
|
|
\LWR@startpars%
|
|
}
|
|
|
|
|
|
\newcommand*{\LWR@itemizeitem}{%
|
|
\LWR@stoppars%
|
|
\LWR@startnewdepth{listitem}%
|
|
\LWR@htmltag{li}%
|
|
\LWR@startpars%
|
|
\LWR@origitem%
|
|
}
|
|
|
|
\newcommand*{\LWR@itemizestart}{%
|
|
\renewcommand*{\LWR@printcloselist}{\LWR@printcloseitemize}
|
|
\renewcommand*{\LWR@printopenlist}{ul style="\LWR@print@mbox{list-style-type:none}"}
|
|
\let\item\LWR@itemizeitem%
|
|
\LWR@nulllistfills%
|
|
}
|
|
|
|
|
|
|
|
\newcommand*{\LWR@enumeratestart}{%
|
|
\renewcommand*{\LWR@printcloselist}{\LWR@printcloseitemize}
|
|
\renewcommand*{\LWR@printopenlist}{ul style="\LWR@print@mbox{list-style-type:none}"}
|
|
\let\item\LWR@itemizeitem%
|
|
\LWR@nulllistfills%
|
|
}
|
|
|
|
|
|
\newcommand*{\LWR@descitem}[1][]%
|
|
{%
|
|
\LWR@stoppars%
|
|
\LWR@setlatestname{#1}%
|
|
\LWR@startnewdepth{descitem}%
|
|
\begingroup%
|
|
\let\LWR@orig@desc@makelabel\makelabel
|
|
\renewcommand*{\makelabel}[1]{%
|
|
\LWR@htmltag{dt}%
|
|
\LWR@orig@desc@makelabel{#1}%
|
|
\LWR@htmltag{/dt}%
|
|
}
|
|
\LWR@select@html@nohspace%
|
|
\LWR@origitem[#1]%
|
|
\endgroup%
|
|
\LWR@orignewline%
|
|
\LWR@htmltag{dd}%
|
|
\LWR@startpars%
|
|
}
|
|
|
|
\newcommand*{\LWR@descriptionstart}{%
|
|
\renewcommand*{\LWR@printcloselist}{\LWR@printclosedescription}
|
|
\renewcommand*{\LWR@printopenlist}{dl}
|
|
\let\item\LWR@descitem%
|
|
\LWR@nulllistfills%
|
|
}
|
|
|
|
|
|
\newcommand*{\LWR@patchlists}{%
|
|
\LetLtxMacro\item\LWR@listitem%
|
|
\LetLtxMacro\@item\LWR@HTML@item%
|
|
\renewcommand*{\@trivlist}{%
|
|
\LWR@traceinfo{@trivlist start}%
|
|
\LWR@liststart%
|
|
\LWR@orig@trivlist%
|
|
\LWR@traceinfo{@trivlist done}%
|
|
}%
|
|
\renewcommand*{\trivlist}{%
|
|
\LWR@traceinfo{trivlist}%
|
|
\LWR@origtrivlist%
|
|
}%
|
|
\renewcommand*{\endtrivlist}{%
|
|
\LWR@traceinfo{endtrivlist start}%
|
|
\LWR@origendtrivlist\LWR@listend%
|
|
\LWR@traceinfo{endtrivlist done}%
|
|
}%
|
|
\renewcommand*{\itemize}{%
|
|
\LWR@itemizestart\LWR@origitemize%
|
|
}%
|
|
\renewcommand*{\enumerate}{%
|
|
\LWR@enumeratestart\LWR@origenumerate%
|
|
}%
|
|
\renewcommand*{\description}{%
|
|
\LWR@descriptionstart\LWR@origdescription%
|
|
}%
|
|
}
|
|
|
|
\newcommand*{\LWR@restoreoriglists}{%
|
|
\LWR@traceinfo{LWR@restoreoriglists}%
|
|
\LetLtxMacro\item\LWR@origitem%
|
|
\LetLtxMacro\@item\LWR@orig@item%
|
|
\let\@trivlist\LWR@orig@trivlist%
|
|
\let\trivlist\LWR@origtrivlist%
|
|
\let\endtrivlist\LWR@origendtrivlist%
|
|
\LetLtxMacro\itemize\LWR@origitemize%
|
|
\LetLtxMacro\enditemize\LWR@endorigitemize%
|
|
\LetLtxMacro\enumerate\LWR@origenumerate%
|
|
\LetLtxMacro\endenumerate\LWR@endorigenumerate%
|
|
\LetLtxMacro\description\LWR@origdescription%
|
|
\LetLtxMacro\enddescription\LWR@endorigdescription%
|
|
\let\@mklab\LWR@orig@mklab%
|
|
\let\makelabel\LWR@origmakelabel%
|
|
\let\@donoparitem\LWR@orig@donoparitem%
|
|
\let\@nbitem\LWR@orig@nbitem%
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpHTML}
|
|
\LetLtxMacro\hdashline\hline
|
|
\LetLtxMacro\cdashline\cline
|
|
\LetLtxMacro\firsthdashline\hline
|
|
\LetLtxMacro\lasthdashline\hline
|
|
|
|
|
|
\newcommand\LWR@mynexttoken\relax
|
|
|
|
|
|
|
|
|
|
\def\LWR@futurenonspacelet#1{\def\LWR@cs{#1}%
|
|
\afterassignment\LWR@fnslone\let\nexttoken= }
|
|
|
|
\def\LWR@fnslone{\expandafter\futurelet\LWR@cs\LWR@fnsltwo}
|
|
|
|
\def\LWR@fnsltwo{%
|
|
\expandafter\ifx\LWR@cs\@sptoken\let\next=\LWR@fnslthree%
|
|
\else\let\next=\nexttoken\fi\next}
|
|
|
|
\def\LWR@fnslthree{\afterassignment\LWR@fnslone\let\next= }
|
|
|
|
\newcommand*{\LWR@getmynexttoken}{%
|
|
\LWR@traceinfo{LWR@getmynexttoken}%
|
|
\LWR@futurenonspacelet\LWR@mynexttoken\LWR@tabledatacolumntag
|
|
}
|
|
|
|
|
|
\newbool{LWR@startedrow}
|
|
\boolfalse{LWR@startedrow}
|
|
|
|
\newbool{LWR@tabularcelladded}
|
|
\boolfalse{LWR@tabularcelladded}
|
|
|
|
\newcounter{LWR@hlines}
|
|
|
|
\newcounter{LWR@hdashedlines}
|
|
|
|
\newbool{LWR@doingtbrule}
|
|
\boolfalse{LWR@doingtbrule}
|
|
|
|
\newbool{LWR@doingcmidrule}
|
|
\boolfalse{LWR@doingcmidrule}
|
|
|
|
\newbool{LWR@tableparcell}
|
|
|
|
\newbool{LWR@skippingmrowcell}
|
|
|
|
\newbool{LWR@skippingmcolrowcell}
|
|
|
|
\newbool{LWR@usedmultirow}
|
|
|
|
\newbool{LWR@foundmrowcell}
|
|
|
|
\newbool{LWR@skipatbang}
|
|
|
|
\newbool{LWR@emptyatbang}
|
|
|
|
\newbool{LWR@intabularmetadata}
|
|
\boolfalse{LWR@intabularmetadata}
|
|
|
|
\newbool{LWR@exitingtabular}
|
|
|
|
\newbool{LWR@tabularmutemods}
|
|
|
|
\newbool{LWR@validtablecol}
|
|
\newbool{LWR@opttablecol}
|
|
|
|
\newbool{LWR@tdhavecellstyle}
|
|
|
|
\newcounter{LWR@tabulardepth}
|
|
\setcounter{LWR@tabulardepth}{0}
|
|
\newcounter{LWR@tabularpardepth}
|
|
\setcounter{LWR@tabularpardepth}{0}
|
|
\newcommand*{\LWR@colsresult}{}%temp storage for column format results
|
|
\newcommand*{\LWR@pposition}{}
|
|
\newcommand*{\LWR@pleft}{}
|
|
\newcommand*{\LWR@pright}{}
|
|
|
|
|
|
\providecommand*{\LWR@strresult}{}
|
|
\providecommand*{\LWR@strresulttwo}{}
|
|
|
|
\newcommand*{\LWR@origcolspec}{}
|
|
|
|
\newcounter{LWR@tablecolspecwidth}
|
|
|
|
\newcounter{LWR@tablecolspecindex}
|
|
|
|
\newcounter{LWR@tableLaTeXcolindex}
|
|
|
|
\newcounter{LWR@tabletotalLaTeXcols}
|
|
|
|
\newcounter{LWR@tabletotalLaTeXcolsnext}
|
|
|
|
|
|
\newcounter{LWR@cellcolordepth}
|
|
|
|
|
|
\newcounter{LWR@tablemulticolswidth}
|
|
\newcounter{LWR@tablemulticolspos}
|
|
|
|
\newcounter{LWR@mcolvertbarsl}
|
|
\newcounter{LWR@mcolvertbarsr}
|
|
\newcounter{LWR@mcolvertbarsldash}
|
|
\newcounter{LWR@mcolvertbarsrdash}
|
|
\newbool{LWR@mcolvertbaronleft}
|
|
|
|
\newbool{LWR@starredlongtable}
|
|
\boolfalse{LWR@starredlongtable}
|
|
|
|
|
|
\newcounter{LWR@midrulecounter}
|
|
|
|
|
|
\newcommand*{\LWR@insertatbangcols}{%
|
|
\ifbool{LWR@skipatbang}%
|
|
{}%
|
|
{%
|
|
\LWR@printatbang{at}{\arabic{LWR@tableLaTeXcolindex}}%
|
|
\LWR@printatbang{bang}{\arabic{LWR@tableLaTeXcolindex}}%
|
|
}%
|
|
}
|
|
|
|
\newcommand*{\LWR@closetabledatacell}{%
|
|
\booltrue{LWR@intabularmetadata}%
|
|
\ifbool{LWR@exitingtabular}%
|
|
{%
|
|
\LWR@stoppars%
|
|
}%
|
|
{% not exiting tabular
|
|
\ifboolexpr{bool{LWR@skippingmrowcell} or bool{LWR@skippingmcolrowcell}}%
|
|
{%
|
|
\LWR@stoppars%
|
|
\ifbool{LWR@skippingmcolrowcell}%
|
|
{}%
|
|
{\LWR@insertatbangcols}%
|
|
}%
|
|
{% not skippingmrowcell
|
|
\unskip%
|
|
\ifboolexpr{%
|
|
bool{LWR@tabularmutemods} or
|
|
bool{LWR@skipatbang} or
|
|
bool{LWR@emptyatbang}
|
|
}%
|
|
{}%
|
|
{%
|
|
\LWR@getexparray{LWR@colafterspec}%
|
|
{\arabic{LWR@tableLaTeXcolindex}}%
|
|
}%
|
|
\LWR@stoppars%
|
|
\boolfalse{LWR@tableparcell}%
|
|
\whileboolexpr{test {\ifnumcomp{\value{LWR@cellcolordepth}}{>}{0}}}{%
|
|
\LWR@htmltag{/div}\LWR@orignewline%
|
|
\defaddtocounter{LWR@cellcolordepth}{-1}%
|
|
}%
|
|
\leavevmode\unskip\LWR@htmltag{/td}\LWR@orignewline%
|
|
\global\booltrue{LWR@tabularcelladded}%
|
|
\LWR@insertatbangcols%
|
|
}% not skipping mrowcell
|
|
}% not exiting tabular
|
|
\boolfalse{LWR@skippingmrowcell}%
|
|
\boolfalse{LWR@skippingmcolrowcell}%
|
|
\boolfalse{LWR@skipatbang}%
|
|
\def\LWR@cellHTMLcolor{}%
|
|
\def\LWR@columnHTMLcolor{}%
|
|
\defcounter{LWR@cellcolordepth}{0}%
|
|
}
|
|
\let\LWR@origampmacro&
|
|
|
|
\end{warpHTML}
|
|
\begin{warpHTML}
|
|
\newcommand*{\LWR@tabularampersand}{%
|
|
\LWR@traceinfo{LWR@tabularampersand}%
|
|
\ifnumcomp{\value{LWR@tabulardepth}}{>}{0}%
|
|
{%
|
|
\unskip%
|
|
\LWR@closetabledatacell%
|
|
\defaddtocounter{LWR@tableLaTeXcolindex}{1}%
|
|
\global\boolfalse{LWR@tabularcelladded}%
|
|
\LWR@getmynexttoken%
|
|
}%
|
|
{%
|
|
\LWR@origampmacro%
|
|
}%
|
|
}
|
|
|
|
|
|
\newcommand*{\LWR@tabularfinishrow}{%
|
|
\ifboolexpr{%
|
|
not bool {LWR@exitingtabular} or%
|
|
bool{LWR@doingtbrule} or%
|
|
bool{LWR@doingcmidrule} or%
|
|
test{\ifnumcomp{\value{LWR@hlines}}{>}{0}} or%
|
|
test{\ifnumcomp{\value{LWR@hdashedlines}}{>}{0}} or%
|
|
bool{LWR@startedrow}%
|
|
}{%
|
|
\ifbool{LWR@exitingtabular}{%
|
|
\booltrue{LWR@tabularmutemods}%
|
|
}{%
|
|
\boolfalse{LWR@tabularmutemods}%
|
|
}%
|
|
\boolfalse{LWR@exitingtabular}%
|
|
\whileboolexpr{%
|
|
test {
|
|
\ifnumcomp{\value{LWR@tableLaTeXcolindex}}{<}
|
|
{\value{LWR@tabletotalLaTeXcols}}
|
|
} or %
|
|
(%
|
|
bool{LWR@intabularmetadata} and%
|
|
not bool{LWR@tabularcelladded} and%
|
|
test {
|
|
\ifnumcomp{\value{LWR@tableLaTeXcolindex}}{=}
|
|
{\value{LWR@tabletotalLaTeXcols}}
|
|
}%
|
|
)%
|
|
}%
|
|
{%
|
|
\LWR@tabledatasinglecolumntag%
|
|
\LWR@closetabledatacell%
|
|
\defaddtocounter{LWR@tableLaTeXcolindex}{1}%
|
|
\global\boolfalse{LWR@tabularcelladded}%
|
|
\booltrue{LWR@emptyatbang}%
|
|
\ifnumcomp{\value{LWR@tableLaTeXcolindex}}{<}
|
|
{\value{LWR@tabletotalLaTeXcols}}%
|
|
{\LWR@getmynexttoken}%
|
|
{}%
|
|
}%
|
|
\ifbool{LWR@tabularmutemods}{%
|
|
\booltrue{LWR@exitingtabular}%
|
|
}{%
|
|
\boolfalse{LWR@exitingtabular}%
|
|
}%
|
|
\boolfalse{LWR@tabularmutemods}%
|
|
\boolfalse{LWR@emptyatbang}%
|
|
}{}% ifboolexpr
|
|
}
|
|
|
|
|
|
\NewDocumentCommand{\LWR@tabularendofline}{s o}{%
|
|
\ifnumcomp{\value{LWR@tableLaTeXcolindex}}{<}
|
|
{\value{LWR@tabletotalLaTeXcols}}%
|
|
{\LWR@tabularfinishrow}%
|
|
{\LWR@closetabledatacell}%
|
|
\LWR@htmltag{/tr}\LWR@orignewline%
|
|
\@rowc@lors%
|
|
\booltrue{LWR@intabularmetadata}%
|
|
\boolfalse{LWR@startedrow}%
|
|
\defcounter{LWR@hlines}{0}%
|
|
\defcounter{LWR@hdashedlines}{0}%
|
|
\boolfalse{LWR@doingtbrule}%
|
|
\boolfalse{LWR@doingcmidrule}%
|
|
\LWR@clearmidrules%
|
|
\def\LWR@rowHTMLcolor{}%
|
|
\defcounter{LWR@tableLaTeXcolindex}{1}%
|
|
\global\boolfalse{LWR@tabularcelladded}%
|
|
\LWR@stoppars%
|
|
\LWR@origpar%
|
|
\LWR@getmynexttoken%
|
|
}
|
|
|
|
\newcommand*{\LWR@columnspeclookahead}[1]{%
|
|
\setcounter{LWR@tempcountone}{\value{LWR@tablecolspecindex}}%
|
|
\addtocounter{LWR@tempcountone}{#1}%
|
|
\fullexpandarg%
|
|
\StrChar{\LWR@origcolspec}{\arabic{LWR@tempcountone}}[\LWR@strresulttwo]%
|
|
\exploregroups%
|
|
\StrChar{\LWR@strresulttwo}{1}[\LWR@strresulttwo]%
|
|
\noexploregroups%
|
|
}
|
|
|
|
\newcommand*{\LWR@colparameter}{}
|
|
\newcommand*{\LWR@parseatcolumn}{%
|
|
\LWR@traceinfo{at column}%
|
|
\defaddtocounter{LWR@tablecolspecindex}{1}%
|
|
\LWR@traceinfo{about to read the next token:}%
|
|
\expandarg%
|
|
\StrChar{\LWR@origcolspec}%
|
|
{\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]%
|
|
\fullexpandarg%
|
|
\LWR@traceinfo{have now read the next token}%
|
|
\ifnumcomp{\value{LWR@tabletotalLaTeXcols}}{=}{0}%
|
|
{% left edge of the table:
|
|
\LWR@traceinfo{at the left edge}%
|
|
\LWR@setexparray{LWR@colatspec}%
|
|
{leftedge}%
|
|
{\expandafter\@firstofone\LWR@colparameter}%
|
|
\LWR@traceinfo{at the left edge: %
|
|
\LWR@getexparray{LWR@colatspec}{leftedge}}%
|
|
}%
|
|
{% not at the left edge:
|
|
\LWR@traceinfo{not at the left edge}%
|
|
\LWR@setexparray{LWR@colatspec}%
|
|
{\arabic{LWR@tabletotalLaTeXcols}}%
|
|
{\expandafter\@firstofone\LWR@colparameter}%
|
|
\LWR@traceinfo{at \arabic{LWR@tabletotalLaTeXcols}: %
|
|
\LWR@getexparray{LWR@colatspec}{\arabic{LWR@tabletotalLaTeXcols}}}%
|
|
}%
|
|
\let\LWR@colparameter\relax%
|
|
\booltrue{LWR@validtablecol}%
|
|
}
|
|
\newcommand*{\LWR@parsebangcolumn}{%
|
|
\LWR@traceinfo{bang column}%
|
|
\defaddtocounter{LWR@tablecolspecindex}{1}%
|
|
\LWR@traceinfo{about to read the next token:}%
|
|
\expandarg%
|
|
\StrChar{\LWR@origcolspec}%
|
|
{\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]%
|
|
\fullexpandarg%
|
|
\LWR@traceinfo{have now read the next token}%
|
|
\ifnumcomp{\value{LWR@tabletotalLaTeXcols}}{=}{0}%
|
|
{% left edge of the table:
|
|
\LWR@traceinfo{at the left edge}%
|
|
\LWR@setexparray{LWR@colbangspec}%
|
|
{leftedge}%
|
|
{\expandafter\@firstofone\LWR@colparameter}%
|
|
}%
|
|
{% not at the left edge:
|
|
\LWR@traceinfo{not at the left edge}%
|
|
\LWR@setexparray{LWR@colbangspec}%
|
|
{\arabic{LWR@tabletotalLaTeXcols}}%
|
|
{\expandafter\@firstofone\LWR@colparameter}%
|
|
\LWR@traceinfo{bang \arabic{LWR@tabletotalLaTeXcols}: \LWR@colparameter!}%
|
|
}%
|
|
\let\LWR@colparameter\relax%
|
|
\booltrue{LWR@validtablecol}%
|
|
}
|
|
\newcommand*{\LWR@parsebeforecolumn}{%
|
|
\defaddtocounter{LWR@tablecolspecindex}{1}%
|
|
\expandarg%
|
|
\StrChar{\LWR@origcolspec}%
|
|
{\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]%
|
|
\fullexpandarg%
|
|
\LWR@setexparray{LWR@colbeforespec}%
|
|
{\arabic{LWR@tabletotalLaTeXcolsnext}}%
|
|
{\expandafter\@firstofone\LWR@colparameter}%
|
|
\let\LWR@colparameter\relax%
|
|
\booltrue{LWR@validtablecol}%
|
|
}
|
|
\newcommand*{\LWR@parseaftercolumn}{%
|
|
\defaddtocounter{LWR@tablecolspecindex}{1}%
|
|
\expandarg%
|
|
\StrChar{\LWR@origcolspec}%
|
|
{\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]%
|
|
\fullexpandarg%
|
|
\LWR@setexparray{LWR@colafterspec}%
|
|
{\arabic{LWR@tabletotalLaTeXcols}}%
|
|
{\expandafter\@firstofone\LWR@colparameter}%
|
|
\let\LWR@colparameter\relax%
|
|
\booltrue{LWR@validtablecol}%
|
|
}
|
|
\newcommand*{\LWR@parsebarcolumn}{%
|
|
\LWR@traceinfo{LWR@parsebarcolumn}%
|
|
\ifnumcomp{\value{LWR@tabletotalLaTeXcols}}{=}{0}%
|
|
{% left edge of the table:
|
|
\edef\LWR@tempone{\LWR@getexparray{LWR@colbarspec}{leftedge}}%
|
|
\ifdefstring{\LWR@tempone}{tvertbarl}%
|
|
{\LWR@setexparray{LWR@colbarspec}{leftedge}{tvertbarldouble}}%
|
|
{\LWR@setexparray{LWR@colbarspec}{leftedge}{tvertbarl}}%
|
|
}%
|
|
{% not at the left edge:
|
|
\edef\LWR@tempone{%
|
|
\LWR@getexparray{LWR@colbarspec}{\arabic{LWR@tabletotalLaTeXcols}}%
|
|
}%
|
|
\ifdefstring{\LWR@tempone}{tvertbarr}%
|
|
{%
|
|
\LWR@setexparray{LWR@colbarspec}%
|
|
{\arabic{LWR@tabletotalLaTeXcols}}{tvertbarrdouble}%
|
|
}%
|
|
{%
|
|
\LWR@setexparray{LWR@colbarspec}%
|
|
{\arabic{LWR@tabletotalLaTeXcols}}{tvertbarr}%
|
|
}%
|
|
}%
|
|
\booltrue{LWR@validtablecol}%
|
|
}
|
|
\newcommand*{\LWR@parsecoloncolumn}{%
|
|
\LWR@traceinfo{LWR@parsecoloncolumn}%
|
|
\ifnumcomp{\value{LWR@tabletotalLaTeXcols}}{=}{0}%
|
|
{% left edge of the table:
|
|
\edef\LWR@tempone{\LWR@getexparray{LWR@colbarspec}{leftedge}}%
|
|
\ifdefstring{\LWR@tempone}{tvertbarldash}%
|
|
{\LWR@setexparray{LWR@colbarspec}{leftedge}{tvertbarldoubledash}}%
|
|
{\LWR@setexparray{LWR@colbarspec}{leftedge}{tvertbarldash}}%
|
|
}%
|
|
{% not at the left edge:
|
|
\edef\LWR@tempone{%
|
|
\LWR@getexparray{LWR@colbarspec}{\arabic{LWR@tabletotalLaTeXcols}}%
|
|
}%
|
|
\ifdefstring{\LWR@tempone}{tvertbarrdash}%
|
|
{\LWR@setexparray{LWR@colbarspec}%
|
|
{\arabic{LWR@tabletotalLaTeXcols}}{tvertbarrdoubledash}}%
|
|
{\LWR@setexparray{LWR@colbarspec}%
|
|
{\arabic{LWR@tabletotalLaTeXcols}}{tvertbarrdash}}%
|
|
}%
|
|
\booltrue{LWR@validtablecol}%
|
|
}
|
|
\newcommand*{\LWR@parsesemicoloncolumn}{%
|
|
\LWR@parsecoloncolumn%
|
|
\defaddtocounter{LWR@tablecolspecindex}{1}%
|
|
}
|
|
\newcommand*{\LWR@parsenormalcolumn}[1]{%
|
|
\defaddtocounter{LWR@tabletotalLaTeXcols}{1}%
|
|
\defaddtocounter{LWR@tabletotalLaTeXcolsnext}{1}%
|
|
\LWR@setexparray{LWR@tablecolspec}{\arabic{LWR@tabletotalLaTeXcols}}{#1}%
|
|
\LWR@traceinfo{normal column \arabic{LWR@tabletotalLaTeXcols}: #1}%
|
|
\LWR@setexparray{LWR@colatspec}{\arabic{LWR@tabletotalLaTeXcolsnext}}{}%
|
|
\LWR@setexparray{LWR@colbangspec}{\arabic{LWR@tabletotalLaTeXcolsnext}}{}%
|
|
\LWR@setexparray{LWR@colbeforespec}{\arabic{LWR@tabletotalLaTeXcolsnext}}{}%
|
|
\LWR@setexparray{LWR@colafterspec}{\arabic{LWR@tabletotalLaTeXcolsnext}}{}%
|
|
\LWR@setexparray{LWR@colbarspec}{\arabic{LWR@tabletotalLaTeXcolsnext}}{}%
|
|
\booltrue{LWR@validtablecol}%
|
|
}
|
|
|
|
\newcommand*{\LWR@parsepcolumn}[1]{%
|
|
\LWR@parsenormalcolumn{#1}%
|
|
\defaddtocounter{LWR@tablecolspecindex}{1}%
|
|
}
|
|
|
|
\newcommand*{\LWR@parsewcolumn}{%
|
|
\LWR@columnspeclookahead{1}%
|
|
\expandafter\LWR@parsenormalcolumn\expandafter{\LWR@strresulttwo}%
|
|
\defaddtocounter{LWR@tablecolspecindex}{2}%
|
|
}
|
|
|
|
\newcommand*{\LWR@parsestarcolumn}{%
|
|
\defaddtocounter{LWR@tablecolspecindex}{2}%
|
|
}
|
|
|
|
\newcommand*{\LWR@parseDcolumn}[1]{%
|
|
\LWR@parsenormalcolumn{#1}%
|
|
\defaddtocounter{LWR@tablecolspecindex}{3}%
|
|
}
|
|
|
|
|
|
\newcount\LWR@starcount
|
|
\newcommand*{\LWR@expcolspec}{}
|
|
\newcounter{LWR@splitstarindex}
|
|
\newcounter{LWR@splitstarcopies}
|
|
\newcommand*{\LWR@splitstarcontents}{}
|
|
\newcommand*{\expandcolspec}{%
|
|
\StrPosition{\LWR@origcolspec}{*}[\LWR@tempone]%
|
|
\whileboolexpr{ test {\ifnumgreater{\LWR@tempone}{0}}}%
|
|
{%
|
|
\setcounter{LWR@splitstarindex}{\LWR@tempone}%
|
|
\addtocounter{LWR@splitstarindex}{-1}%
|
|
\StrLeft{\LWR@origcolspec}{\value{LWR@splitstarindex}}[\LWR@expcolspec]%
|
|
\addtocounter{LWR@splitstarindex}{2}%
|
|
\StrChar{\LWR@origcolspec}{\value{LWR@splitstarindex}}[\LWR@tempone]%
|
|
\setcounter{LWR@splitstarcopies}{\expandafter\@firstofone\LWR@tempone}%
|
|
\addtocounter{LWR@splitstarindex}{1}%
|
|
\StrChar{\LWR@origcolspec}{\value{LWR@splitstarindex}}[\LWR@splitstarcontents]%
|
|
\ifnumgreater{\value{LWR@splitstarcopies}}{0}%
|
|
{%
|
|
\LWR@starcount=\value{LWR@splitstarcopies}%
|
|
\loop
|
|
\appto\LWR@expcolspec{%
|
|
\expandafter\@firstofone\LWR@splitstarcontents%
|
|
}%
|
|
\advance \LWR@starcount -1
|
|
\ifnum \LWR@starcount>0 \repeat
|
|
}{}%
|
|
\StrGobbleLeft{\LWR@origcolspec}{\value{LWR@splitstarindex}}[\colspecremainder]%
|
|
\appto{\LWR@expcolspec}{\colspecremainder}%
|
|
\edef\LWR@origcolspec{\LWR@expcolspec}%
|
|
\StrPosition{\LWR@origcolspec}{*}[\LWR@tempone]%
|
|
}%
|
|
}
|
|
|
|
|
|
\newcommand*{\LWR@parsetablecols}[1]{%
|
|
\LWR@traceinfo{LWR@parsetablecols}%
|
|
\renewcommand*{\LWR@origcolspec}{#1}%
|
|
\expandarg%
|
|
\StrSubstitute{\LWR@origcolspec}{ }{}[\LWR@origcolspec]%
|
|
\expandcolspec%
|
|
\defcounter{LWR@tabletotalLaTeXcols}{0}%
|
|
\defcounter{LWR@tabletotalLaTeXcolsnext}{1}%
|
|
\LWR@setexparray{LWR@colatspec}{leftedge}{}%
|
|
\LWR@setexparray{LWR@colatspec}{1}{}%
|
|
\LWR@setexparray{LWR@colatspec}{2}{}%
|
|
\LWR@setexparray{LWR@colatspec}{3}{}%
|
|
\LWR@setexparray{LWR@colbangspec}{leftedge}{}%
|
|
\LWR@setexparray{LWR@colbangspec}{1}{}%
|
|
\LWR@setexparray{LWR@colbangspec}{2}{}%
|
|
\LWR@setexparray{LWR@colbangspec}{3}{}%
|
|
\LWR@setexparray{LWR@colbeforespec}{1}{}%
|
|
\LWR@setexparray{LWR@colbeforespec}{2}{}%
|
|
\LWR@setexparray{LWR@colbeforespec}{3}{}%
|
|
\LWR@setexparray{LWR@colafterspec}{1}{}%
|
|
\LWR@setexparray{LWR@colafterspec}{2}{}%
|
|
\LWR@setexparray{LWR@colafterspec}{3}{}%
|
|
\LWR@setexparray{LWR@colbarspec}{leftedge}{}%
|
|
\LWR@setexparray{LWR@colbarspec}{1}{}%
|
|
\LWR@setexparray{LWR@colbarspec}{2}{}%
|
|
\LWR@setexparray{LWR@colbarspec}{3}{}%
|
|
\defcounter{LWR@tablecolspecindex}{1}%
|
|
\expandarg%
|
|
\StrLen{\LWR@origcolspec}[\LWR@strresult]%
|
|
\fullexpandarg%
|
|
\LWR@traceinfo{original column spec length: \LWR@strresult}%
|
|
\defcounter{LWR@tablecolspecwidth}{\LWR@strresult}%
|
|
\boolfalse{LWR@opttablecol}%
|
|
\whileboolexpr{%
|
|
not test{%
|
|
\ifnumcomp{\value{LWR@tablecolspecindex}}{>}%
|
|
{\value{LWR@tablecolspecwidth}}%
|
|
}%
|
|
}%
|
|
{%
|
|
\expandarg%
|
|
\StrChar{\LWR@origcolspec}{\arabic{LWR@tablecolspecindex}}[\LWR@strresult]%
|
|
\LWR@traceinfo{position \arabic{LWR@tablecolspecindex}: \LWR@strresult}%
|
|
\fullexpandarg%
|
|
\boolfalse{LWR@validtablecol}%
|
|
\IfStrEq{\LWR@strresult}{[}{\booltrue{LWR@opttablecol}}{}%
|
|
\ifbool{LWR@opttablecol}%
|
|
{}% inside an optional argument
|
|
{% not an optional tabular argument
|
|
\IfStrEq{\LWR@strresult}{l}{\LWR@parsenormalcolumn{l}}{}%
|
|
\IfStrEq{\LWR@strresult}{c}{\LWR@parsenormalcolumn{c}}{}%
|
|
\IfStrEq{\LWR@strresult}{r}{\LWR@parsenormalcolumn{r}}{}%
|
|
\IfStrEq{\LWR@strresult}{L}{\LWR@parsenormalcolumn{l}}{}%
|
|
\IfStrEq{\LWR@strresult}{C}{\LWR@parsenormalcolumn{c}}{}%
|
|
\IfStrEq{\LWR@strresult}{R}{\LWR@parsenormalcolumn{r}}{}%
|
|
\IfStrEq{\LWR@strresult}{J}{\LWR@parsenormalcolumn{l}}{}%
|
|
\IfStrEq{\LWR@strresult}{S}{\LWR@parsenormalcolumn{c}}{}%
|
|
\IfStrEq{\LWR@strresult}{s}{\LWR@parsenormalcolumn{c}}{}%
|
|
\IfStrEq{\LWR@strresult}{\detokenize{@}}{\LWR@parseatcolumn}{}%
|
|
\IfStrEq{\LWR@strresult}{!}{\LWR@parsebangcolumn}{}%
|
|
\IfStrEq{\LWR@strresult}{>}{\LWR@parsebeforecolumn}{}%
|
|
\IfStrEq{\LWR@strresult}{<}{\LWR@parseaftercolumn}{}%
|
|
\IfStrEq{\LWR@strresult}{|}{\LWR@parsebarcolumn}{}%
|
|
\IfStrEq{\LWR@strresult}{:}{\LWR@parsecoloncolumn}{}%
|
|
\IfStrEq{\LWR@strresult}{;}{\LWR@parsesemicoloncolumn}{}%
|
|
\IfStrEq{\LWR@strresult}{p}{\LWR@parsepcolumn{p}}{}%
|
|
\IfStrEq{\LWR@strresult}{m}{\LWR@parsepcolumn{m}}{}%
|
|
\IfStrEq{\LWR@strresult}{b}{\LWR@parsepcolumn{b}}{}%
|
|
\IfStrEq{\LWR@strresult}{w}{\LWR@parsewcolumn}{}%
|
|
\IfStrEq{\LWR@strresult}{W}{\LWR@parsewcolumn}{}%
|
|
\IfStrEq{\LWR@strresult}{*}{\LWR@parsestarcolumn}{}%
|
|
\IfStrEq{\LWR@strresult}{D}{\LWR@parseDcolumn{c}}{}%
|
|
\IfStrEq{\LWR@strresult}{X}{\LWR@parsenormalcolumn{X}}{}%
|
|
\IfStrEq{\LWR@strresult}{P}{\LWR@parsepcolumn{P}}{}%
|
|
\IfStrEq{\LWR@strresult}{M}{\LWR@parsepcolumn{M}}{}%
|
|
\IfStrEq{\LWR@strresult}{B}{\LWR@parsepcolumn{B}}{}%
|
|
\ifbool{LWR@validtablecol}{}{%
|
|
\LWR@traceinfo{invalid column type: \LWR@strresult}%
|
|
\LWR@parsenormalcolumn{l}%
|
|
}%
|
|
}% not an optional column argument
|
|
\IfStrEq{\LWR@strresult}{]}{\boolfalse{LWR@opttablecol}}{}%
|
|
\defaddtocounter{LWR@tablecolspecindex}{1}%
|
|
}% whiledo
|
|
}%
|
|
|
|
\@ifundefined{rownum}{\newcount\rownum}{}
|
|
\newcommand*{\@rowcolors}{}
|
|
\newcommand*{\@rowc@lors}{}
|
|
\newcommand*{\LWR@xcolorrowHTMLcolor}{}
|
|
\def\LWR@columnHTMLcolor{}
|
|
\def\LWR@rowHTMLcolor{}
|
|
\def\LWR@cellHTMLcolor{}
|
|
\newcommand*{\LWR@ruleHTMLcolor}{}
|
|
\newcommand*{\rowcolor}{\LWR@getmynexttoken}%
|
|
|
|
\newcommand{\arrayrulecolor}[2][named]{}
|
|
\newcommand{\arrayrulecolornexttoken}[2][named]{\LWR@getmynexttoken}
|
|
|
|
\newcommand{\doublerulesepcolor}[2][named]{}
|
|
\newcommand{\doublerulesepcolornexttoken}[2][named]{\LWR@getmynexttoken}
|
|
|
|
|
|
\newcommand*{\LWR@maybenewtablerow}
|
|
{%
|
|
\ifbool{LWR@startedrow}%
|
|
{}% started the row
|
|
{% not started the row
|
|
\booltrue{LWR@startedrow}%
|
|
\booltrue{LWR@intabularmetadata}%
|
|
\ifboolexpr{%
|
|
test{\ifnumcomp{\value{LWR@hlines}}{>}{0}} or%
|
|
test{\ifnumcomp{\value{LWR@hdashedlines}}{>}{0}}%
|
|
}%
|
|
{%
|
|
\LWR@htmltag{tr class="hline" }%
|
|
\LWR@orignewline%
|
|
}%
|
|
{% not doing hline
|
|
\ifbool{LWR@doingtbrule}%
|
|
{%
|
|
\ifdefvoid{\LWR@ruleHTMLcolor}{%
|
|
\LWR@htmltag{tr class="tbrule"}%
|
|
}{%
|
|
\LWR@htmltag{%
|
|
tr class="tbrule" % space
|
|
style="border-top: 1px solid % space
|
|
\LWR@origpound\LWR@ruleHTMLcolor "%
|
|
}%
|
|
}%
|
|
\LWR@orignewline%
|
|
}%
|
|
{\LWR@htmltag{tr}\LWR@orignewline}%
|
|
}% end of not doing hline
|
|
}% end of not started the row
|
|
}
|
|
|
|
|
|
\newcommand*{\LWR@printbartag}[1]{%
|
|
\LWR@traceinfo{LWR@printbartag !#1!}%
|
|
\ifboolexpr{bool{LWR@tabularmutemods} or bool{LWR@emptyatbang}}%
|
|
{}% muting or empty
|
|
{% not muting
|
|
\edef\LWR@tempone{\LWR@getexparray{LWR@colbarspec}{#1}}%
|
|
\ifdefempty{\LWR@tempone}{}{ \LWR@tempone}%
|
|
}% not muting
|
|
\LWR@traceinfo{LWR@printbartag done}%
|
|
}
|
|
|
|
|
|
\newcommand*{\LWR@printatbang}[2]{%
|
|
\xdef\LWR@atbangspec{\LWR@getexparray{LWR@col#1spec}{#2}}%
|
|
\LWR@traceinfo{atbang: #2 !\LWR@atbangspec!}%
|
|
\ifdefempty{\LWR@atbangspec}%
|
|
{}%
|
|
{% not empty
|
|
\LWR@htmltag{%
|
|
td class="td#1%
|
|
\LWR@subaddcmidruletrim{}{}%
|
|
\LWR@printbartag{#2}%
|
|
"%
|
|
\LWR@tdstartstyles%
|
|
\LWR@addcmidrulewidth%
|
|
\LWR@addcdashline%
|
|
\LWR@addtabularrulecolors%
|
|
\LWR@tdendstyles%
|
|
}%
|
|
\ifboolexpr{bool{LWR@tabularmutemods} or bool{LWR@emptyatbang}}%
|
|
{}%
|
|
{\LWR@atbangspec}%
|
|
\LWR@htmltag{/td}\LWR@orignewline%
|
|
\global\booltrue{LWR@tabularcelladded}%
|
|
}% not empty
|
|
}%
|
|
|
|
\newcommand*{\LWR@addleftmostbartag}{%
|
|
\ifnumcomp{\value{LWR@tableLaTeXcolindex}}{=}{1}{%
|
|
\LWR@printbartag{leftedge}%
|
|
}{}%
|
|
}
|
|
|
|
\newcommand*{\LWR@tabularleftedge}{%
|
|
\ifnumcomp{\value{LWR@tableLaTeXcolindex}}{=}{1}%
|
|
{%
|
|
\LWR@printatbang{at}{leftedge}%
|
|
\LWR@printatbang{bang}{leftedge}%
|
|
}% left edge
|
|
{}% not left edge
|
|
}
|
|
|
|
|
|
\newcommand*{\LWR@thiscolspec}{}
|
|
|
|
\newcommand*{\LWR@tabledatasinglecolumntag}%
|
|
{%
|
|
\LWR@traceinfo{LWR@tabledatasinglecolumntag}%
|
|
\LWR@maybenewtablerow%
|
|
\ifbool{LWR@intabularmetadata}%
|
|
{%
|
|
\ifbool{LWR@exitingtabular}{}%
|
|
{% not exiting tabular
|
|
\LWR@tabularleftedge%
|
|
\xdef\LWR@strresult{%
|
|
\LWR@getexparray{LWR@tablecolspec}{\arabic{LWR@tableLaTeXcolindex}}%
|
|
}%
|
|
\LWR@traceinfo{LWR@tabledatasinglecolumntag: about to print td tag}%
|
|
\LWR@htmltag{%
|
|
td class="td%
|
|
\LWR@strresult%
|
|
\LWR@addcmidruletrim%
|
|
\LWR@addleftmostbartag%
|
|
\LWR@printbartag{\arabic{LWR@tableLaTeXcolindex}}%
|
|
"%
|
|
\LWR@tdstartstyles%
|
|
\LWR@addcmidrulewidth%
|
|
\LWR@addcdashline%
|
|
\xdef\LWR@thiscolspec{%
|
|
\LWR@getexparray{LWR@tablecolspec}%
|
|
{\arabic{LWR@tableLaTeXcolindex}}%
|
|
}%
|
|
\LWR@addformatwpalignment{\LWR@thiscolspec}%
|
|
\LWR@addtabularrowcolor%
|
|
\LWR@addtabularrulecolors%
|
|
\LWR@tdendstyles%
|
|
}% HTML td
|
|
\LWR@traceinfo{LWR@tabledatasinglecolumntag: done printing td tag}%
|
|
\ifboolexpr{%
|
|
test{ \ifdefstring{\LWR@strresult}{p} } or
|
|
test{ \ifdefstring{\LWR@strresult}{m} } or
|
|
test{ \ifdefstring{\LWR@strresult}{b} } or
|
|
test{ \ifdefstring{\LWR@strresult}{P} } or
|
|
test{ \ifdefstring{\LWR@strresult}{M} } or
|
|
test{ \ifdefstring{\LWR@strresult}{B} } or
|
|
test{ \ifdefstring{\LWR@strresult}{X} }
|
|
}%
|
|
{% allow pars
|
|
\LWR@traceinfo{LWR@tabledatasinglecolumntag: about to LWR@startpars}%
|
|
\booltrue{LWR@tableparcell}%
|
|
\LWR@startpars%
|
|
\LWR@traceinfo{LWR@tabledatasinglecolumntag: done with LWR@startpars}%
|
|
}% allow pars
|
|
{}% no pars
|
|
\ifboolexpr{bool{LWR@tabularmutemods} or bool{LWR@emptyatbang}}%
|
|
{}%
|
|
{%
|
|
\LWR@getexparray{LWR@colbeforespec}{\arabic{LWR@tableLaTeXcolindex}}%
|
|
}%
|
|
\boolfalse{LWR@intabularmetadata}%
|
|
}% not exiting tabular
|
|
}{}% in tabular metadata
|
|
\LWR@traceinfo{LWR@tabledatasinglecolumntag: done}%
|
|
}%
|
|
|
|
|
|
|
|
|
|
|
|
\newlength{\LWR@heavyrulewidth}
|
|
\setlength{\LWR@heavyrulewidth}{.08em}
|
|
|
|
\newlength{\LWR@lightrulewidth}
|
|
\setlength{\LWR@lightrulewidth}{.05em}
|
|
|
|
\newlength{\LWR@cmidrulewidth}
|
|
\setlength{\LWR@cmidrulewidth}{.03em}
|
|
|
|
\newlength{\LWR@thiscmidrulewidth}
|
|
\setlength{\LWR@thiscmidrulewidth}{\LWR@cmidrulewidth}
|
|
|
|
\newcommand*{\LWR@clearmidrules}
|
|
{%
|
|
\defcounter{LWR@midrulecounter}{1}%
|
|
\whileboolexpr{%
|
|
not test{%
|
|
\ifnumcomp{\value{LWR@midrulecounter}}{>}%
|
|
{\value{LWR@tabletotalLaTeXcols}}%
|
|
}%
|
|
}%
|
|
{%
|
|
\LWR@setexparray{LWR@midrules}{\arabic{LWR@midrulecounter}}{0pt}%
|
|
\setlength{\LWR@thiscmidrulewidth}{\LWR@cmidrulewidth}%
|
|
\LWR@setexparray{LWR@trimlrules}{\arabic{LWR@midrulecounter}}{}%
|
|
\LWR@setexparray{LWR@trimrrules}{\arabic{LWR@midrulecounter}}{}%
|
|
\LWR@setexparray{LWR@cdashlines}{\arabic{LWR@midrulecounter}}{N}%
|
|
\defaddtocounter{LWR@midrulecounter}{1}%
|
|
}%
|
|
}
|
|
|
|
\newcommand*{\LWR@subcmidrule}[4]{%
|
|
\defcounter{LWR@midrulecounter}{#3}%
|
|
\whileboolexpr{%
|
|
not test {%
|
|
\ifnumcomp{\value{LWR@midrulecounter}}{>}{#4}%
|
|
}%
|
|
}%
|
|
{%
|
|
\LWR@setexparray{LWR@midrules}{\arabic{LWR@midrulecounter}}{#1}%
|
|
\defaddtocounter{LWR@midrulecounter}{1}%
|
|
}% whiledo
|
|
\IfSubStr{#2}{l}{\LWR@setexparray{LWR@trimlrules}{#3}{l}}{}%
|
|
\IfSubStr{#2}{r}{\LWR@setexparray{LWR@trimrrules}{#4}{r}}{}%
|
|
\booltrue{LWR@doingcmidrule}%
|
|
}
|
|
|
|
\NewDocumentCommand{\LWR@docmidrule}
|
|
{O{\LWR@cmidrulewidth} D(){} >{\SplitArgument{1}{-}}m}
|
|
{\LWR@subcmidrule{#1}{#2}#3}
|
|
|
|
\newcommand*{\LWR@subcdashline}[2]{%
|
|
\defcounter{LWR@midrulecounter}{#1}%
|
|
\whileboolexpr{%
|
|
not test {%
|
|
\ifnumcomp{\value{LWR@midrulecounter}}{>}{#2}%
|
|
}%
|
|
}%
|
|
{%
|
|
\LWR@setexparray{LWR@cdashlines}{\arabic{LWR@midrulecounter}}{Y}%
|
|
\defaddtocounter{LWR@midrulecounter}{1}%
|
|
}% whiledo
|
|
\booltrue{LWR@doingcmidrule}%
|
|
}
|
|
|
|
\NewDocumentCommand{\LWR@docdashline}
|
|
{>{\SplitArgument{1}{-}}m}%
|
|
{%
|
|
\LWR@subcdashline#1%
|
|
}
|
|
|
|
\newcommand*{\LWR@tdstartstyles}{\boolfalse{LWR@tdhavecellstyle}}
|
|
|
|
\newcommand*{\LWR@tdaddstyle}{%
|
|
\ifbool{LWR@tdhavecellstyle}%
|
|
{; }%
|
|
{ style="}%
|
|
\booltrue{LWR@tdhavecellstyle}%
|
|
}
|
|
|
|
\newcommand*{\LWR@tdendstyles}{%
|
|
\ifbool{LWR@tdhavecellstyle}%
|
|
{%
|
|
"%
|
|
\boolfalse{LWR@tdhavecellstyle}%
|
|
}{}%
|
|
}
|
|
|
|
\newcommand*{\LWR@subaddcmidruletrim}[2]{%
|
|
\setlength{\LWR@templengthone}{%
|
|
\LWR@getexparray{LWR@midrules}{\arabic{LWR@tableLaTeXcolindex}}%
|
|
}%
|
|
\ifdimcomp{\LWR@templengthone}{>}{0pt}%
|
|
{%
|
|
\LWR@origtilde tdrule#1#2%
|
|
\setlength{\LWR@thiscmidrulewidth}{\LWR@templengthone}%
|
|
}%
|
|
{%
|
|
\setlength{\LWR@thiscmidrulewidth}{0pt}%
|
|
}%
|
|
}
|
|
|
|
\newcommand*{\LWR@addcmidruletrim}{%
|
|
\LWR@subaddcmidruletrim%
|
|
{\LWR@getexparray{LWR@trimlrules}{\arabic{LWR@tableLaTeXcolindex}}}%
|
|
{\LWR@getexparray{LWR@trimrrules}{\arabic{LWR@tableLaTeXcolindex}}}%
|
|
}
|
|
|
|
\newcommand{\LWR@addrulewidth}[2]{%
|
|
\ifboolexpr{%
|
|
test{\ifdimcomp{#1}{=}{0pt}} or
|
|
(
|
|
( test{\ifdimcomp{#1}{=}{#2}} and not bool{FormatWP} )
|
|
and ( test {\ifdefvoid{\LWR@ruleHTMLcolor}} )
|
|
)
|
|
}%
|
|
{}% default width and color
|
|
{% custom width and/or color
|
|
\LWR@forceminwidth{#1}%
|
|
\LWR@tdaddstyle%
|
|
border-top:\LWR@printlength{\LWR@atleastonept} solid % space
|
|
\ifdefvoid{\LWR@ruleHTMLcolor}{%
|
|
\ifdimcomp{#1}{<}{\LWR@lightrulewidth}%
|
|
{\LWR@origpound{}A0A0A0}%
|
|
{% lightrule or heaver
|
|
\ifdimcomp{#1}{<}{\LWR@heavyrulewidth}%
|
|
{\LWR@origpound{}808080}%
|
|
{black}%
|
|
}% lightrule or heavier
|
|
}{%
|
|
\LWR@origpound\LWR@ruleHTMLcolor%
|
|
}%
|
|
}% custom width and/or color
|
|
}
|
|
|
|
\newcommand{\LWR@addcmidrulewidth}{%
|
|
\LWR@addrulewidth{\LWR@thiscmidrulewidth}{\LWR@cmidrulewidth}%
|
|
}
|
|
|
|
\newcommand{\LWR@addcdashline}{%
|
|
\edef\LWR@tempone{%
|
|
\LWR@getexparray{LWR@cdashlines}{\arabic{LWR@tableLaTeXcolindex}}%
|
|
}%
|
|
\ifdefstring{\LWR@tempone}{Y}{%
|
|
\LWR@tdaddstyle%
|
|
border-top: 1pt dashed %
|
|
\ifdefvoid{\LWR@ruleHTMLcolor}%
|
|
{black}%
|
|
{\LWR@origpound\LWR@ruleHTMLcolor}%
|
|
}{}%
|
|
}
|
|
|
|
\newcommand*{\LWR@WPcell}[2]{%
|
|
\LWR@tdaddstyle%
|
|
\LWR@print@mbox{text-align:#1}; \LWR@print@mbox{vertical-align:#2}%
|
|
}
|
|
|
|
\newcommand*{\LWR@addformatwpalignment}[1]{%
|
|
\ifbool{FormatWP}{%
|
|
\IfSubStr{#1}{l}{\LWR@WPcell{left}{middle}}{}%
|
|
\IfSubStr{#1}{c}{\LWR@WPcell{center}{middle}}{}%
|
|
\IfSubStr{#1}{r}{\LWR@WPcell{right}{middle}}{}%
|
|
\IfSubStr{#1}{p}{\LWR@WPcell{left}{bottom}}{}%
|
|
\IfSubStr{#1}{m}{\LWR@WPcell{left}{middle}}{}%
|
|
\IfSubStr{#1}{b}{\LWR@WPcell{left}{top}}{}%
|
|
\IfSubStr{#1}{P}{\LWR@WPcell{center}{bottom}}{}%
|
|
\IfSubStr{#1}{M}{\LWR@WPcell{center}{middle}}{}%
|
|
\IfSubStr{#1}{B}{\LWR@WPcell{center}{top}}{}%
|
|
}{}%
|
|
}
|
|
|
|
|
|
\newcommand*{\LWR@addtabularrowcolor}{%
|
|
\ifbool{LWR@tabularmutemods}{}{%
|
|
\ifdefvoid{\LWR@rowHTMLcolor}{%
|
|
\ifdefvoid{\LWR@xcolorrowHTMLcolor}{}%
|
|
{% xcolor row color
|
|
\LWR@tdaddstyle%
|
|
background:\LWR@origpound\LWR@xcolorrowHTMLcolor%
|
|
}%
|
|
}%
|
|
{% explicit row color
|
|
\LWR@tdaddstyle%
|
|
background:\LWR@origpound\LWR@rowHTMLcolor%
|
|
}%
|
|
}%
|
|
}
|
|
|
|
\newcommand*{\LWR@addtabularhrulecolor}{%
|
|
\ifboolexpr{%
|
|
test{\ifnumcomp{\value{LWR@hlines}}{>}{0}} or%
|
|
test{\ifnumcomp{\value{LWR@hdashedlines}}{>}{0}} or%
|
|
bool{LWR@doingtbrule}%
|
|
}{%
|
|
\ifdefvoid{\LWR@ruleHTMLcolor}%
|
|
{%
|
|
\ifnumcomp{\value{LWR@hlines}}{>}{1}%
|
|
{%
|
|
\LWR@tdaddstyle%
|
|
border-top: 4px double%
|
|
}{% else
|
|
\ifnumcomp{\value{LWR@hdashedlines}}{>}{1}%
|
|
{%
|
|
\LWR@tdaddstyle%
|
|
border-top: 2px dashed%
|
|
}{% else
|
|
\ifnumcomp{\value{LWR@hdashedlines}}{=}{1}%
|
|
{%
|
|
\LWR@tdaddstyle%
|
|
border-top: 1px dashed%
|
|
}{}}}%
|
|
}%
|
|
{%
|
|
\ifnumcomp{\value{LWR@hlines}}{>}{1}%
|
|
{%
|
|
\LWR@tdaddstyle%
|
|
border-top: 4px double \LWR@origpound\LWR@ruleHTMLcolor%
|
|
}{% else
|
|
\ifnumcomp{\value{LWR@hdashedlines}}{>}{1}%
|
|
{%
|
|
\LWR@tdaddstyle%
|
|
border-top: 2px dashed \LWR@origpound\LWR@ruleHTMLcolor%
|
|
}{% else
|
|
\ifnumcomp{\value{LWR@hdashedlines}}{=}{1}%
|
|
{%
|
|
\LWR@tdaddstyle%
|
|
border-top: 1px dashed \LWR@origpound\LWR@ruleHTMLcolor%
|
|
}{% else
|
|
\LWR@tdaddstyle%
|
|
border-top: 1px solid \LWR@origpound\LWR@ruleHTMLcolor%
|
|
}}}%
|
|
}%
|
|
}{}%
|
|
}
|
|
|
|
\newcommand*{\LWR@addtabularrulecolors}{%
|
|
\LWR@addtabularhrulecolor%
|
|
\ifbool{LWR@tabularmutemods}{}{%
|
|
\ifnumequal{\value{LWR@tableLaTeXcolindex}}{1}{%
|
|
\edef\LWR@tempone{\LWR@getexparray{LWR@colbarspec}{leftedge}}%
|
|
\ifdefstring{\LWR@tempone}{tvertbarl}{%
|
|
\LWR@tdaddstyle%
|
|
border-left: 1px solid % space
|
|
\LWR@vertruleHTMLcolor%
|
|
}{}%
|
|
\ifdefstring{\LWR@tempone}{tvertbarldouble}{%
|
|
\LWR@tdaddstyle%
|
|
border-left: 4px double % space
|
|
\LWR@vertruleHTMLcolor%
|
|
}{}%
|
|
\ifdefstring{\LWR@tempone}{tvertbarldash}{%
|
|
\LWR@tdaddstyle%
|
|
border-left: 1px dashed % space
|
|
\LWR@vertruleHTMLcolor%
|
|
}{}%
|
|
\ifdefstring{\LWR@tempone}{tvertbarldoubledash}{%
|
|
\LWR@tdaddstyle%
|
|
border-left: 2px dashed % space
|
|
\LWR@vertruleHTMLcolor%
|
|
}{}%
|
|
}{}%
|
|
\edef\LWR@tempone{%
|
|
\LWR@getexparray{LWR@colbarspec}{\arabic{LWR@tableLaTeXcolindex}}%
|
|
}%
|
|
\ifdefstring{\LWR@tempone}{tvertbarr}{%
|
|
\LWR@tdaddstyle%
|
|
border-right: 1px solid \LWR@vertruleHTMLcolor%
|
|
}{}%
|
|
\ifdefstring{\LWR@tempone}{tvertbarrdouble}{%
|
|
\LWR@tdaddstyle%
|
|
border-right: 4px double \LWR@vertruleHTMLcolor%
|
|
}{}%
|
|
\ifdefstring{\LWR@tempone}{tvertbarrdash}{%
|
|
\LWR@tdaddstyle%
|
|
border-right: 1px dashed \LWR@vertruleHTMLcolor%
|
|
}{}%
|
|
\ifdefstring{\LWR@tempone}{tvertbarrdoubledash}{%
|
|
\LWR@tdaddstyle%
|
|
border-right: 2px dashed \LWR@vertruleHTMLcolor%
|
|
}{}%
|
|
}%
|
|
}
|
|
|
|
\newcommand*{\LWR@subaddtabularcellcolor}[1]{%
|
|
\LWR@htmltag{div class="cellcolor" style="%
|
|
background:\LWR@origpound{}{}#1 %
|
|
" }%
|
|
\defaddtocounter{LWR@cellcolordepth}{1}%
|
|
}
|
|
|
|
\newcommand*{\LWR@addtabularcellcolor}{%
|
|
\ifdefvoid{\LWR@cellHTMLcolor}%
|
|
{%
|
|
\ifdefvoid{\LWR@rowHTMLcolor}%
|
|
{%
|
|
\ifdefvoid{\LWR@xcolorrowHTMLcolor}%
|
|
{%
|
|
\ifdefvoid{\LWR@columnHTMLcolor}%
|
|
{}%
|
|
{\LWR@subaddtabularcellcolor{\LWR@columnHTMLcolor}}%
|
|
}%
|
|
{\LWR@subaddtabularcellcolor{\LWR@xcolorrowHTMLcolor}}%
|
|
}%
|
|
{\LWR@subaddtabularcellcolor{\LWR@rowHTMLcolor}}%
|
|
}%
|
|
{\LWR@subaddtabularcellcolor{\LWR@cellHTMLcolor}}%
|
|
}
|
|
|
|
|
|
|
|
\newcommand*{\LWR@printmccoltype}[1]{%
|
|
\LWR@traceinfo{lwr@printmccoltype -#1-}%
|
|
\StrChar{#1}{\arabic{LWR@tablemulticolspos}}[\LWR@strresult]%
|
|
\IfStrEq{\LWR@strresult}{l}{l}{}%
|
|
\IfStrEq{\LWR@strresult}{c}{c}{}%
|
|
\IfStrEq{\LWR@strresult}{r}{r}{}%
|
|
\IfStrEq{\LWR@strresult}{p}{p}{}%
|
|
\IfStrEq{\LWR@strresult}{m}{m}{}%
|
|
\IfStrEq{\LWR@strresult}{b}{b}{}%
|
|
\IfStrEq{\LWR@strresult}{P}{P}{}%
|
|
\IfStrEq{\LWR@strresult}{M}{M}{}%
|
|
\IfStrEq{\LWR@strresult}{B}{B}{}%
|
|
\IfStrEq{\LWR@strresult}{w}{w}{}%
|
|
\IfStrEq{\LWR@strresult}{W}{W}{}%
|
|
\IfStrEq{\LWR@strresult}{S}{c}{}%
|
|
\IfStrEq{\LWR@strresult}{s}{c}{}%
|
|
\IfStrEq{\LWR@strresult}{X}{p}{}%
|
|
\IfStrEq{\LWR@strresult}{|}%
|
|
{%
|
|
\ifbool{LWR@mcolvertbaronleft}%
|
|
{\defaddtocounter{LWR@mcolvertbarsl}{1}}% left edge
|
|
{\defaddtocounter{LWR@mcolvertbarsr}{1}}% not left edge
|
|
}%
|
|
{%
|
|
\IfStrEq{\LWR@strresult}{:}%
|
|
{%
|
|
\ifbool{LWR@mcolvertbaronleft}%
|
|
{\defaddtocounter{LWR@mcolvertbarsldash}{1}}% left edge
|
|
{\defaddtocounter{LWR@mcolvertbarsrdash}{1}}% not left edge
|
|
}%
|
|
{%
|
|
\IfStrEq{\LWR@strresult}{;}%
|
|
{%
|
|
\ifbool{LWR@mcolvertbaronleft}%
|
|
{\defaddtocounter{LWR@mcolvertbarsldash}{1}}% left edge
|
|
{\defaddtocounter{LWR@mcolvertbarsrdash}{1}}% not left edge
|
|
}%
|
|
{\boolfalse{LWR@mcolvertbaronleft}}%
|
|
}%
|
|
}%
|
|
\LWR@traceinfo{lwr@printmccoltype done}%
|
|
}
|
|
|
|
\newcommand*{\LWR@multicolpartext}[1]{%
|
|
\LWR@startpars%
|
|
\LWR@multicoltext%
|
|
\defaddtocounter{LWR@tablemulticolspos}{#1}%
|
|
\LWR@stoppars%
|
|
}
|
|
|
|
\newcommand*{\LWR@multicolother}[1]{%
|
|
\defaddtocounter{LWR@tablemulticolspos}{1}%
|
|
\StrChar{#1}{\arabic{LWR@tablemulticolspos}}[\LWR@strresult]%
|
|
\LWR@strresult%
|
|
\booltrue{LWR@validtablecol}%
|
|
}
|
|
|
|
\newcommand*{\LWR@multicolskip}{%
|
|
\booltrue{LWR@validtablecol}%
|
|
}
|
|
|
|
\newcommand*{\LWR@printmccoldata}[1]{%
|
|
\LWR@traceinfo{lwr@printmccoldata -#1}%
|
|
\boolfalse{LWR@validtablecol}%
|
|
\StrChar{#1}{\arabic{LWR@tablemulticolspos}}[\LWR@strresult]%
|
|
\edef\LWR@printmccoldatatoken{\LWR@strresult}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{l}{\LWR@multicoltext}{}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{c}{\LWR@multicoltext}{}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{r}{\LWR@multicoltext}{}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{D}{%
|
|
\defaddtocounter{LWR@tablemulticolspos}{3}% skip parameters
|
|
\LWR@multicoltext%
|
|
}{}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{p}{\LWR@multicolpartext{2}}{}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{m}{\LWR@multicolpartext{2}}{}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{b}{\LWR@multicolpartext{2}}{}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{P}{\LWR@multicolpartext{2}}{}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{M}{\LWR@multicolpartext{2}}{}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{B}{\LWR@multicolpartext{2}}{}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{w}{\LWR@multicolpartext{3}}{}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{W}{\LWR@multicolpartext{3}}{}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{S}{\LWR@multicoltext}{}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{s}{\LWR@multicoltext}{}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{X}{\LWR@multicolpartext{1}}{}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{|}{\LWR@multicolskip}{}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{:}{\LWR@multicolskip}{}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{;}{%
|
|
\LWR@multicolskip%
|
|
\defaddtocounter{LWR@tablemulticolspos}{1}% skip parameter
|
|
}{}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{\detokenize{@}}{\LWR@multicolother{#1}}{}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{\detokenize{!}}{\LWR@multicolother{#1}}{}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{\detokenize{>}}{\LWR@multicolother{#1}}{}%
|
|
\IfStrEq{\LWR@printmccoldatatoken}{\detokenize{<}}{\LWR@multicolother{#1}}{}%
|
|
\ifbool{LWR@validtablecol}{}{\LWR@multicoltext{}}%
|
|
\LWR@traceinfo{lwr@printmccoldata done}%
|
|
}
|
|
|
|
\newcommand*{\LWR@parsemulticolumnalignment}[2]{%
|
|
\defcounter{LWR@tablemulticolspos}{1}%
|
|
\StrLen{#1}[\LWR@strresult]%
|
|
\defcounter{LWR@tablemulticolswidth}{\LWR@strresult}%
|
|
\whileboolexpr{%
|
|
not test {%
|
|
\ifnumcomp{\value{LWR@tablemulticolspos}}{>}%
|
|
{\value{LWR@tablemulticolswidth}}%
|
|
}%
|
|
}%
|
|
{%
|
|
#2{#1}%
|
|
\defaddtocounter{LWR@tablemulticolspos}{1}%
|
|
}%
|
|
}
|
|
|
|
|
|
\newcommand*{\LWR@addmulticolvertrulecolor}{%
|
|
\ifbool{LWR@tabularmutemods}{}{%
|
|
\ifnumcomp{\value{LWR@mcolvertbarsl}}{=}{1}{%
|
|
\LWR@tdaddstyle%
|
|
border-left: 1px solid \LWR@vertruleHTMLcolor%
|
|
}{}%
|
|
\ifnumcomp{\value{LWR@mcolvertbarsl}}{>}{1}{%
|
|
\LWR@tdaddstyle%
|
|
border-left: 4px double \LWR@vertruleHTMLcolor%
|
|
}{}%
|
|
\ifnumcomp{\value{LWR@mcolvertbarsldash}}{=}{1}{%
|
|
\LWR@tdaddstyle%
|
|
border-left: 1px dashed \LWR@vertruleHTMLcolor%
|
|
}{}%
|
|
\ifnumcomp{\value{LWR@mcolvertbarsldash}}{>}{1}{%
|
|
\LWR@tdaddstyle%
|
|
border-left: 2px dashed \LWR@vertruleHTMLcolor%
|
|
}{}%
|
|
\ifnumcomp{\value{LWR@mcolvertbarsr}}{=}{1}{%
|
|
\LWR@tdaddstyle%
|
|
border-right: 1px solid \LWR@vertruleHTMLcolor%
|
|
}{}%
|
|
\ifnumcomp{\value{LWR@mcolvertbarsr}}{>}{1}{%
|
|
\LWR@tdaddstyle%
|
|
border-right: 4px double \LWR@vertruleHTMLcolor%
|
|
}{}%
|
|
\ifnumcomp{\value{LWR@mcolvertbarsrdash}}{=}{1}{%
|
|
\LWR@tdaddstyle%
|
|
border-right: 1px dashed \LWR@vertruleHTMLcolor%
|
|
}{}%
|
|
\ifnumcomp{\value{LWR@mcolvertbarsrdash}}{>}{1}{%
|
|
\LWR@tdaddstyle%
|
|
border-right: 2px dashed \LWR@vertruleHTMLcolor%
|
|
}{}%
|
|
}%
|
|
}
|
|
|
|
\newcommand{\LWR@multicoltext}{}
|
|
|
|
\newcounter{LWR@lastmulticolumn}
|
|
|
|
\NewDocumentCommand{\LWR@domulticolumn}{o o m m m +m}{%
|
|
\LWR@traceinfo{LWR@domulticolumn -#1- -#2- -#4- -#5-}%
|
|
\renewcommand{\LWR@multicoltext}{%
|
|
#6%
|
|
\booltrue{LWR@validtablecol}%
|
|
}%
|
|
\defcounter{LWR@lastmulticolumn}{\value{LWR@tableLaTeXcolindex}}%
|
|
\defaddtocounter{LWR@lastmulticolumn}{#3}%
|
|
\defaddtocounter{LWR@lastmulticolumn}{-1}%
|
|
\LWR@maybenewtablerow%
|
|
\LWR@htmltag{%
|
|
td colspan="#4" %
|
|
\IfValueT{#2}{ % rows?
|
|
rowspan="#2" %
|
|
}%
|
|
class="td%
|
|
\defcounter{LWR@mcolvertbarsl}{0}%
|
|
\defcounter{LWR@mcolvertbarsr}{0}%
|
|
\defcounter{LWR@mcolvertbarsldash}{0}%
|
|
\defcounter{LWR@mcolvertbarsrdash}{0}%
|
|
\booltrue{LWR@mcolvertbaronleft}%
|
|
\LWR@parsemulticolumnalignment{#5}{\LWR@printmccoltype}%
|
|
\LWR@subaddcmidruletrim%
|
|
{%
|
|
\LWR@getexparray{LWR@trimlrules}%
|
|
{\arabic{LWR@tableLaTeXcolindex}}%
|
|
}%
|
|
{%
|
|
\LWR@getexparray{LWR@trimrrules}%
|
|
{\arabic{LWR@lastmulticolumn}}%
|
|
}%
|
|
\ifnumcomp{\value{LWR@mcolvertbarsl}}{=}{1}{ tvertbarl}{}%
|
|
\ifnumcomp{\value{LWR@mcolvertbarsl}}{>}{1}{ tvertbarldouble}{}%
|
|
\ifnumcomp{\value{LWR@mcolvertbarsr}}{=}{1}{ tvertbarr}{}%
|
|
\ifnumcomp{\value{LWR@mcolvertbarsr}}{>}{1}{ tvertbarrdouble}{}%
|
|
\ifnumcomp{\value{LWR@mcolvertbarsldash}}{=}{1}{ tvertbarldash}{}%
|
|
\ifnumcomp{\value{LWR@mcolvertbarsldash}}{>}{1}%
|
|
{ tvertbarldoubledash}{}%
|
|
\ifnumcomp{\value{LWR@mcolvertbarsrdash}}{=}{1}{ tvertbarrdash}{}%
|
|
\ifnumcomp{\value{LWR@mcolvertbarsrdash}}{>}{1}%
|
|
{ tvertbarrdoubledash}{}%
|
|
"%
|
|
\LWR@tdstartstyles%
|
|
\IfValueT{#1}{% vpos?
|
|
\ifstrequal{#1}{b}%
|
|
{%
|
|
\LWR@tdaddstyle%
|
|
\LWR@print@mbox{vertical-align:bottom}%
|
|
}{}%
|
|
\ifstrequal{#1}{t}%
|
|
{%
|
|
\LWR@tdaddstyle%
|
|
\LWR@print@mbox{vertical-align:top}%
|
|
}{}%
|
|
}% vpos?
|
|
\LWR@addtabularrowcolor%
|
|
\LWR@addcmidrulewidth%
|
|
\LWR@addcdashline%
|
|
\LWR@addtabularhrulecolor%
|
|
\LWR@addmulticolvertrulecolor%
|
|
\LWR@addformatwpalignment{#5}%
|
|
\LWR@tdendstyles%
|
|
}% end of the opening table data tag
|
|
\boolfalse{LWR@intabularmetadata}%
|
|
\LWR@parsemulticolumnalignment{#5}{\LWR@printmccoldata}%
|
|
}
|
|
|
|
|
|
\NewDocumentCommand{\LWR@htmlmulticolumn}{m m +m}%
|
|
{%
|
|
\LWR@tabularhtmlcolumns{\arabic{LWR@tableLaTeXcolindex}}{#1}%
|
|
\LWR@domulticolumn{#1}{\arabic{LWR@tabhtmlcoltotal}}{#2}{#3}%
|
|
\defaddtocounter{LWR@tableLaTeXcolindex}{#1}%
|
|
\defaddtocounter{LWR@tableLaTeXcolindex}{-1}%
|
|
\booltrue{LWR@skipatbang}%
|
|
}
|
|
|
|
\providecommand*{\LTcaptype}{table}
|
|
\NewDocumentCommand{\LWR@longtabledatacaptiontag}{s o +m}
|
|
{%
|
|
\IfValueTF{#2}{% optional given?
|
|
\ifblank{#2}% optional empty?
|
|
{\LWR@setlatestname{#3}}% empty
|
|
{\LWR@setlatestname{#2}}% given and non-empty
|
|
}% optional given
|
|
{\LWR@setlatestname{#3}}% no optional
|
|
\LWR@tabularhtmlcolumns{1}{\arabic{LWR@tabletotalLaTeXcols}}%
|
|
\LWR@domulticolumn{\arabic{LWR@tabletotalLaTeXcols}}%
|
|
{\arabic{LWR@tabhtmlcoltotal}}%
|
|
{P}%
|
|
{% \LWR@domulticolumn
|
|
\IfBooleanTF{#1}% star?
|
|
{% yes star
|
|
\LWR@figcaption%
|
|
\LWR@isolate{#3}%
|
|
\endLWR@figcaption%
|
|
}%
|
|
{% No star:
|
|
\ifbool{LWR@starredlongtable}%
|
|
{%
|
|
\ifblank{#2}% TOC entry
|
|
{}%
|
|
{%
|
|
\refstepcounter{\LTcaptype}%
|
|
\protected@edef\@currentlabel{%
|
|
\@nameuse{p@\LTcaptype}\@nameuse{the\LTcaptype}%
|
|
}%
|
|
}%
|
|
}{}%
|
|
\LWR@figcaption%
|
|
\LWR@isolate{\@nameuse{fnum@\LTcaptype}}%
|
|
\CaptionSeparator%
|
|
\LWR@isolate{#3}%
|
|
\endLWR@figcaption%
|
|
\ifblank{#2}% TOC entry empty
|
|
{}%
|
|
{% TOC entry not empty
|
|
\IfNoValueTF{#2}% No TOC entry?
|
|
{% No TOC entry
|
|
\addcontentsline%
|
|
{\@nameuse{ext@\LTcaptype}}%
|
|
{\LTcaptype}%
|
|
{%
|
|
\protect\numberline%
|
|
{\LWR@isolate{\@nameuse{p@\LTcaptype}}\@nameuse{the\LTcaptype}}%
|
|
{\ignorespaces \LWR@isolate{#3}\protect\relax}%
|
|
}%
|
|
}% end of No TOC entry
|
|
{% yes TOC entry
|
|
\addcontentsline%
|
|
{\@nameuse{ext@\LTcaptype}}%
|
|
{\LTcaptype}%
|
|
{%
|
|
\protect\numberline%
|
|
{\LWR@isolate{\@nameuse{p@\LTcaptype}}\@nameuse{the\LTcaptype}}%
|
|
{\ignorespaces \LWR@isolate{#2}\protect\relax}%
|
|
}%
|
|
}% end of yes TOC entry
|
|
}% end of TOC entry not empty
|
|
}% end of no star
|
|
\booltrue{LWR@skipatbang}%
|
|
}% end of \LWR@domulticolumn
|
|
\defaddtocounter{LWR@tableLaTeXcolindex}{\value{LWR@tabletotalLaTeXcols}}%
|
|
\defaddtocounter{LWR@tableLaTeXcolindex}{-1}
|
|
|
|
}
|
|
|
|
|
|
|
|
\newcounter{LWR@tabhtmlcolindex}
|
|
\newcounter{LWR@tabhtmlcolend}
|
|
\newcounter{LWR@tabhtmlcoltotal}
|
|
|
|
\newcommand*{\LWR@subtabularhtmlcolumns}[1]{%
|
|
\edef\LWR@atbangspec{\LWR@getexparray{LWR@colatspec}{#1}}%
|
|
\ifdefempty{\LWR@atbangspec}%
|
|
{}%
|
|
{\defaddtocounter{LWR@tabhtmlcoltotal}{1}}%
|
|
\edef\LWR@atbangspec{\LWR@getexparray{LWR@colbangspec}{#1}}%
|
|
\ifdefempty{\LWR@atbangspec}%
|
|
{}%
|
|
{\defaddtocounter{LWR@tabhtmlcoltotal}{1}}%
|
|
}
|
|
|
|
\newcommand*{\LWR@tabularhtmlcolumns}[2]{%
|
|
\defcounter{LWR@tabhtmlcolindex}{#1}%
|
|
\defcounter{LWR@tabhtmlcoltotal}{#2}%
|
|
\defcounter{LWR@tabhtmlcolend}{#1}%
|
|
\defaddtocounter{LWR@tabhtmlcolend}{#2}%
|
|
\ifnumcomp{\value{LWR@tabhtmlcolindex}}{=}{1}{%
|
|
\LWR@subtabularhtmlcolumns{leftedge}%
|
|
}{}%
|
|
\whileboolexpr{%
|
|
test {%
|
|
\ifnumcomp{\value{LWR@tabhtmlcolindex}}{<}{\value{LWR@tabhtmlcolend}}%
|
|
}%
|
|
}%
|
|
{%
|
|
\LWR@subtabularhtmlcolumns{\arabic{LWR@tabhtmlcolindex}}%
|
|
\defaddtocounter{LWR@tabhtmlcolindex}{1}%
|
|
}% whiledo
|
|
}
|
|
\end{warpHTML}
|
|
\begin{warpHTML}
|
|
\newcommand{\multirow}[2][c]{}
|
|
\end{warpHTML}
|
|
\begin{warpall}
|
|
\AtBeginDocument{
|
|
\@ifundefined{@xmultirow}
|
|
{
|
|
\DeclareExpandableDocumentCommand{\LWR@print@multicolumnrow}%
|
|
{+m +m +O{c} +m +O{0} +m +O{0pt} +m}%
|
|
{}%
|
|
}% no version of multirow was loaded
|
|
{% \@xmultirow defined, so some version of multirow was loaded
|
|
\@ifpackageloaded{multirow}{% v2.0 or newer
|
|
\@ifpackagelater{multirow}{2016/09/01}% 2016/09/27 for v2.0
|
|
{% v2.0+:
|
|
\DeclareExpandableDocumentCommand{\LWR@print@multicolumnrow}%
|
|
{+m +m +O{c} +m +O{0} +m +O{0pt} +m}%
|
|
{\multicolumn{#1}{#2}{\@xmultirow[#3]{#4}[#5]{#6}[#7]{#8}}}%
|
|
}
|
|
{% loaded but older, probably not executed:
|
|
\DeclareExpandableDocumentCommand{\LWR@print@multicolumnrow}%
|
|
{+m +m +O{c} +m +O{0} +m +O{0pt} +m}%
|
|
{\multicolumn{#1}{#2}{\@xmultirow{#4}[#5]{#6}[#7]{#8}}}%
|
|
}
|
|
}% packageloaded{multirow}
|
|
{% v1.6 or older did not \ProvidePackage
|
|
\DeclareExpandableDocumentCommand{\LWR@print@multicolumnrow}%
|
|
{+m +m +O{c} +m +O{0} +m +O{0pt} +m}%
|
|
{\multicolumn{#1}{#2}{\@xmultirow{#4}[#5]{#6}[#7]{#8}}}%
|
|
}
|
|
|
|
}% \@ifundefined{@xmultirow}
|
|
|
|
\providecommand*{\multicolumnrow}{\LWR@print@multicolumnrow}
|
|
|
|
}% AtBeginDocument
|
|
\end{warpall}
|
|
\begin{warpHTML}
|
|
\newcommand*{\LWR@donothing}{}
|
|
\let\firsthline\relax
|
|
\let\lasthline\relax
|
|
\newcommand*{\firsthline}{}
|
|
\newcommand*{\lasthline}{}
|
|
\newcommand*{\ldelim}{}
|
|
\newcommand*{\rdelim}{}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpall}
|
|
\newcommand*{\TabularMacro}{}
|
|
|
|
\end{warpall}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newcommand*{\ResumeTabular}{%
|
|
\boolfalse{LWR@exitingtabular}%
|
|
\boolfalse{LWR@tabularmutemods}%
|
|
\LWR@getmynexttoken%
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpprint}
|
|
|
|
\newcommand*{\ResumeTabular}{}
|
|
|
|
\end{warpprint}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newcommand*{\LWR@tabledatacolumntag}%
|
|
{%
|
|
\LWR@traceinfo{LWR@tabledatacolumntag}%
|
|
\global\let\LWR@mynextaction\LWR@tabledatasinglecolumntag%
|
|
\ifdefequal{\LWR@mynexttoken}{\end}%
|
|
{\booltrue{LWR@exitingtabular}}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\caption}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\multicolumn}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\multirow}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\multicolumnrow}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\noalign}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\mrowcell}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\mcolrowcell}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\TabularMacro}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\hline}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\firsthline}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\lasthline}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\toprule}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\midrule}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\cmidrule}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\morecmidrules}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\specialrule}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\cline}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\bottomrule}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\hhline}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\rowcolor}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\arrayrulecolor}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\doublerulesepcolor}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\warpprintonly}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\warpHTMLonly}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\ldelim}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\rdelim}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\hdashline}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\cdashline}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\firsthdashline}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\lasthdashline}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\ifdefequal{\LWR@mynexttoken}{\par}%
|
|
{\global\let\LWR@mynextaction\LWR@donothing}{}%
|
|
\LWR@traceinfo{LWR@tabledatacolumntag: about to do mynext}%
|
|
\LWR@mynextaction%
|
|
\LWR@traceinfo{LWR@tabledatacolumntag: done}%
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpall}
|
|
|
|
\newcommand*{\mrowcell}{}
|
|
|
|
\end{warpall}
|
|
|
|
|
|
\begin{warpall}
|
|
|
|
\newcommand*{\mcolrowcell}{}
|
|
|
|
\end{warpall}
|
|
|
|
|
|
\begin{warpHTML}
|
|
\providecommand*{\toprule}[1][]{\hline}
|
|
\providecommand*{\midrule}[1][]{\hline}
|
|
\providecommand*{\cmidrule}{\cline}
|
|
\providecommand*{\bottomrule}[1][]{\hline}
|
|
\providecommand*{\addlinespace}[1][]{}
|
|
\providecommand*{\morecmidrules}{}
|
|
\providecommand*{\specialrule}[3]{\hline}
|
|
\LetLtxMacro\LWR@orignoalign\noalign
|
|
|
|
\newcommand{\LWR@tabularnoalign}[1]{%
|
|
\advance\rownum\m@ne%
|
|
\LetLtxMacro\LWR@save@xcolorrowHTMLcolor\LWR@xcolorrowHTMLcolor%
|
|
\renewcommand*{\LWR@xcolorrowHTMLcolor}{}%
|
|
\multicolumn{\value{LWR@tabletotalLaTeXcols}}{l}{#1} \\
|
|
\LetLtxMacro\LWR@xcolorrowHTMLcolor\LWR@save@xcolorrowHTMLcolor%
|
|
% \@rowc@lors%
|
|
\LWR@getmynexttoken%
|
|
}
|
|
\AtBeginDocument{
|
|
|
|
\@ifpackageloaded{lwarp-tabls}
|
|
{
|
|
\newcommand*{\LWR@HTMLhline}[1][]{%
|
|
\ifbool{FormatWP}%
|
|
{\LWR@docmidrule{1-\arabic{LWR@tabletotalLaTeXcols}}}%
|
|
{\defaddtocounter{LWR@hlines}{1}}%
|
|
\LWR@getmynexttoken}%
|
|
}
|
|
{
|
|
\newcommand*{\LWR@HTMLhline}{%
|
|
\ifbool{FormatWP}%
|
|
{\LWR@docmidrule{1-\arabic{LWR@tabletotalLaTeXcols}}}%
|
|
{\defaddtocounter{LWR@hlines}{1}}%
|
|
\LWR@getmynexttoken}%
|
|
}
|
|
|
|
}% AtBeginDocument
|
|
|
|
\NewDocumentCommand{\LWR@HTMLcline}{m}%
|
|
{\LWR@docmidrule{#1}\LWR@getmynexttoken}%
|
|
|
|
\newcommand{\LWR@tabular@warpprintonly}[1]{%
|
|
\ifbool{warpingprint}{#1}{}%
|
|
\LWR@getmynexttoken%
|
|
}
|
|
|
|
\AtBeginDocument{
|
|
\@ifundefined{NoAutoSpacing}%
|
|
{% no babel-french
|
|
\newcommand*{\LWR@nullifyNoAutoSpacing}{}
|
|
}% no babel-french
|
|
{% yes babel-french
|
|
\newcommand*{\LWR@nullifyNoAutoSpacing}{%
|
|
\NoAutoSpacing%
|
|
\renewcommand*{\NoAutoSpacing}{}%
|
|
\renewcommand*{\LWR@FBcancel}{}%
|
|
}
|
|
}% yes babel-french
|
|
}% AtBeginDocument
|
|
|
|
\StartDefiningTabulars
|
|
|
|
\NewDocumentCommand{\LWR@HTML@@tabular}{d<> o m}
|
|
{%
|
|
\LWR@traceinfo{LWR@HTML@@tabular started}%
|
|
\LWR@spanwarnformat{tabular}%
|
|
\addtocounter{LWR@tabulardepth}{1}%
|
|
\boolfalse{LWR@startedrow}%
|
|
\defcounter{LWR@hlines}{0}%
|
|
\defcounter{LWR@hdashedlines}{0}%
|
|
\boolfalse{LWR@doingtbrule}%
|
|
\boolfalse{LWR@doingcmidrule}%
|
|
\LWR@nullifyNoAutoSpacing%
|
|
\boolfalse{LWR@exitingtabular}%
|
|
\boolfalse{LWR@tabularmutemods}%
|
|
\boolfalse{LWR@usedmultirow}%
|
|
\boolfalse{LWR@foundmrowcell}%
|
|
\renewcommand*{\LWR@multicoltext}{}%
|
|
\booltrue{LWR@intabularmetadata}%
|
|
\LWR@traceinfo{LWR@@tabular: About to LWR@forecenewpage.}%
|
|
\LWR@forcenewpage
|
|
\LWR@htmlblocktag{table}%
|
|
\LWR@parsetablecols{#3}%
|
|
\LWR@stoppars%
|
|
\defcounter{LWR@tableLaTeXcolindex}{1}%
|
|
\global\boolfalse{LWR@tabularcelladded}%
|
|
\LWR@clearmidrules%
|
|
\LetLtxMacro{\\}{\LWR@tabularendofline}%
|
|
\LetLtxMacro\warpprintonly\LWR@tabular@warpprintonly%
|
|
\LetLtxMacro\arrayrulecolor\arrayrulecolornexttoken%
|
|
\LetLtxMacro\doublerulesepcolor\doublerulesepcolornexttoken%
|
|
\def\LWR@columnHTMLcolor{}%
|
|
\def\LWR@rowHTMLcolor{}%
|
|
\def\LWR@cellHTMLcolor{}%
|
|
\@rowcolors%
|
|
\ifdefvoid{\LWR@ruleHTMLcolor}%
|
|
{\edef\LWR@vertruleHTMLcolor{black}}%
|
|
{\edef\LWR@vertruleHTMLcolor{\LWR@origpound\LWR@ruleHTMLcolor}}%
|
|
\defcounter{LWR@cellcolordepth}{0}%
|
|
\LWR@traceinfo{LWR@@HTML@tabular: redefining macros}%
|
|
\LetLtxMacro\noalign\LWR@tabularnoalign%
|
|
\LetLtxMacro\hline\LWR@HTMLhline%
|
|
\LetLtxMacro\cline\LWR@HTMLcline%
|
|
\DeclareDocumentCommand{\hdashline}{o}{%
|
|
\ifbool{FormatWP}%
|
|
{\LWR@docdashline{1-\arabic{LWR@tabletotalLaTeXcols}}}%
|
|
{\defaddtocounter{LWR@hdashedlines}{1}}%
|
|
\LWR@getmynexttoken%
|
|
}%
|
|
\DeclareDocumentCommand{\cdashline}{m}{%
|
|
\LWR@docdashline{##1}\LWR@getmynexttoken%
|
|
}%
|
|
\DeclareDocumentCommand{\firsthdashline}{o}{%
|
|
\ifbool{FormatWP}%
|
|
{\LWR@docdashline{1-\arabic{LWR@tabletotalLaTeXcols}}}%
|
|
{\defaddtocounter{LWR@hdashedlines}{1}}%
|
|
\LWR@getmynexttoken%
|
|
}%
|
|
\DeclareDocumentCommand{\lasthdashline}{o}{%
|
|
\ifbool{FormatWP}%
|
|
{\LWR@docdashline{1-\arabic{LWR@tabletotalLaTeXcols}}}%
|
|
{\defaddtocounter{LWR@hdashedlines}{1}}%
|
|
\LWR@getmynexttoken%
|
|
}%
|
|
\renewcommand{\multicolumn}{\LWR@htmlmulticolumn}%
|
|
\renewcommand*{\mrowcell}{%
|
|
\LWR@maybenewtablerow%
|
|
\LWR@tabularleftedge%
|
|
\booltrue{LWR@skippingmrowcell}%
|
|
\booltrue{LWR@foundmrowcell}%
|
|
}%
|
|
\renewcommand*{\mcolrowcell}{%
|
|
\LWR@maybenewtablerow%
|
|
\booltrue{LWR@skippingmcolrowcell}%
|
|
\booltrue{LWR@foundmrowcell}%
|
|
}%
|
|
\LetLtxMacro\caption\LWR@longtabledatacaptiontag%
|
|
\boolfalse{LWR@tableparcell}%
|
|
\boolfalse{LWR@skippingmrowcell}%
|
|
\boolfalse{LWR@skippingmcolrowcell}%
|
|
\boolfalse{LWR@skipatbang}%
|
|
\boolfalse{LWR@emptyatbang}%
|
|
\StartDefiningTabulars%
|
|
\protected\gdef&{\LWR@tabularampersand}%
|
|
\booltrue{LWR@forceminipagefullwidth}%
|
|
\addtocounter{LWR@tabularpardepth}{1}%
|
|
\LWR@traceinfo{LWR@@HTML@tabular: about to LWR@getmynexttoken}%
|
|
\LWR@getmynexttoken%
|
|
}%
|
|
\newcommand*{\LWR@HTML@endtabular}
|
|
{%
|
|
\LWR@traceinfo{LWR@HTML@endtabular}%
|
|
\addtocounter{LWR@tabularpardepth}{-1}%
|
|
\ifboolexpr{%
|
|
test {%
|
|
\ifnumcomp{\value{LWR@tableLaTeXcolindex}}{<}%
|
|
{\value{LWR@tabletotalLaTeXcols}}
|
|
} or %
|
|
(%
|
|
bool{LWR@intabularmetadata} and%
|
|
not bool{LWR@tabularcelladded} and%
|
|
test {%
|
|
\ifnumcomp{\value{LWR@tableLaTeXcolindex}}{=}%
|
|
{\value{LWR@tabletotalLaTeXcols}}%
|
|
}%
|
|
)%
|
|
}%
|
|
{%
|
|
\LWR@tabularfinishrow%
|
|
}%
|
|
{%
|
|
\LWR@closetabledatacell%
|
|
}%
|
|
\LWR@htmlblocktag{/tr}%
|
|
\@rowc@lors%
|
|
\LWR@htmlblocktag{/table}%
|
|
\boolfalse{LWR@intabularmetadata}%
|
|
\addtocounter{LWR@tabulardepth}{-1}%
|
|
\ifnumequal{\value{LWR@tabulardepth}}{0}{%
|
|
\protected\gdef&{\LWR@origampmacro}%
|
|
\StopDefiningTabulars%
|
|
}{}%
|
|
\ifbool{LWR@usedmultirow}{%
|
|
\ifbool{LWR@foundmrowcell}%
|
|
{}%
|
|
{%
|
|
\PackageError{lwarp}%
|
|
{%
|
|
When using \protect\multirow, \protect\multicolumnrow,\MessageBreak
|
|
or the bigdelim package,\MessageBreak
|
|
place \protect\mrowcell\space or \protect\mcolrowcell\MessageBreak
|
|
in empty cells which are to be skipped.\MessageBreak
|
|
See the Lwarp package documentation:\MessageBreak
|
|
"Special cases and limitations" -> "Tabular"
|
|
}%
|
|
{%
|
|
See the Lwarp package documentation:\MessageBreak
|
|
"Special cases and limitations" -> "Tabular".
|
|
}%
|
|
}%
|
|
}{}%
|
|
\LWR@traceinfo{LWR@HTML@endtabular finished}%
|
|
}
|
|
|
|
\csletcs{LWR@HTML@endtabular*}{LWR@HTML@endtabular}
|
|
|
|
\StopDefiningTabulars
|
|
\AtBeginDocument{
|
|
\LetLtxMacro\LWR@origendtabular\endtabular
|
|
\csletcs{LWR@origendtabular*}{endtabular*}
|
|
\LWR@formatted{@tabular}
|
|
\LWR@formatted{endtabular}
|
|
\LWR@formatted{endtabular*}
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
|
|
\def\@currentlabelname{\linkhomename}%
|
|
\def\LWR@stripperiod#1.\ltx@empty#2\@nil{#1}%
|
|
\newcommand*{\LWR@setlatestname}[1]{%
|
|
\GetTitleStringExpand{#1}%
|
|
\edef\@currentlabelname{\detokenize\expandafter{\GetTitleStringResult}}%
|
|
\edef\@currentlabelname{%
|
|
\expandafter\LWR@stripperiod\@currentlabelname%
|
|
\ltx@empty.\ltx@empty\@nil%
|
|
}%
|
|
}
|
|
|
|
\def\LWR@setref#1#2#3{%
|
|
\ifx#1\relax%
|
|
??%
|
|
\else%
|
|
\expandafter#2#1%
|
|
\fi}
|
|
\newcommand*{\LWR@nameref}[1]{%
|
|
\expandafter\LWR@setref\csname r@#1@lwarp\endcsname\LWR@firstoffour{#1}%
|
|
}
|
|
\newcommand*{\LWR@htmlfileref}[1]{%
|
|
\expandafter\LWR@setref\csname r@#1@lwarp\endcsname\LWR@secondoffour{#1}%
|
|
}
|
|
\newcommand*{\LWR@lateximagedepthref}[1]{%
|
|
\expandafter\LWR@setref\csname r@#1@lwarp\endcsname\LWR@thirdoffour{#1}%
|
|
}
|
|
\newcommand*{\LWR@lateximagenumberref}[1]{%
|
|
\expandafter\LWR@setref\csname r@#1@lwarp\endcsname\LWR@fourthoffour{#1}%
|
|
}
|
|
\newcommand*{\LWR@write@lwarplabel}[1]{%
|
|
\LWR@traceinfo{LWR@write@lwarplabel !#1!}%
|
|
\LWR@setlatestname{\@currentlabelname}%
|
|
\@bsphack%
|
|
\protected@write\@auxout{}%
|
|
{%
|
|
\string\newlabel{#1@lwarp}{%
|
|
{\@currentlabelname}%
|
|
{%
|
|
\ifbool{FileSectionNames}%
|
|
{\LWR@thisfilename}%
|
|
{\arabic{LWR@htmlfilenumber}}%
|
|
}%
|
|
{\arabic{LWR@lateximagedepth}}%
|
|
{\arabic{LWR@lateximagenumber}}%
|
|
}%
|
|
}%
|
|
\@esphack%
|
|
}
|
|
|
|
|
|
\newcommand*{\LWR@label@subcreatetag}{%
|
|
\LWR@htmltag{a \LWR@print@mbox{id="\LWR@sanitized"}}%
|
|
\LWR@htmltag{/a}%
|
|
}
|
|
|
|
\newcommand*{\LWR@label@inmathcomment}{%
|
|
\ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
|
|
{%
|
|
\mbox{%
|
|
\ifdef{\totwidth@}{\ifbool{LWR@amsmultline}{}{\hspace*{\totwidth@}}}{}%
|
|
\LWR@htmlclosecomment%
|
|
\LWR@label@subcreatetag%
|
|
\LWR@htmlopencomment%
|
|
}% mbox
|
|
}% mathjax
|
|
{%
|
|
\LWR@label@subcreatetag%
|
|
}%
|
|
}
|
|
|
|
\newcommand*{\LWR@label@createtag}[1]{%
|
|
\LWR@traceinfo{LWR@label@createtag !#1!}%
|
|
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
|
|
{}%
|
|
{% not lateximage
|
|
\LWR@sanitize{#1}%
|
|
\ifbool{LWR@insidemathcomment}%
|
|
{% inside HTML math comment
|
|
\LWR@label@inmathcomment%
|
|
}% inside HTML math comment
|
|
{% not inside HTML math comment
|
|
\ifbool{LWR@doingstartpars}%
|
|
{% pars allowed
|
|
\ifbool{LWR@doingapar}%
|
|
{% par started
|
|
\LWR@label@subcreatetag%
|
|
}% par started
|
|
{% par not started
|
|
\LWR@stoppars%
|
|
\LWR@label@subcreatetag%
|
|
\LWR@startpars%
|
|
}% par not started
|
|
}% pars allowed
|
|
{% pars not allowed
|
|
\LWR@label@subcreatetag%
|
|
}% pars not allowed
|
|
}% not inside HTML math comment
|
|
}% not lateximage
|
|
}
|
|
\NewDocumentCommand{\LWR@new@label}{m}{%
|
|
\LWR@traceinfo{LWR@new@label: starting}%
|
|
\LWR@traceinfo{LWR@new@label: !#1!}%
|
|
\LWR@orig@label{#1}%
|
|
\LWR@traceinfo{%
|
|
LWR@new@label: filesectionnames is %
|
|
\ifbool{FileSectionNames}{true}{false}%
|
|
}%
|
|
\LWR@traceinfo{%
|
|
LWR@new@label: LWR@thisfilename is !\LWR@thisfilename!%
|
|
}%
|
|
\LWR@traceinfo{%
|
|
LWR@new@label: LWR@htmlfilenumber is \arabic{LWR@htmlfilenumber}%
|
|
}%
|
|
\LWR@write@lwarplabel{#1}%
|
|
\LWR@label@createtag{#1}%
|
|
% \@esphack%
|
|
\LWR@traceinfo{LWR@new@label: done}%
|
|
}
|
|
|
|
|
|
\newcommand*{\LWR@addlinktitle}{%
|
|
\ifdefvoid{\LWR@ThisAltText}{}{ % space
|
|
title="\LWR@ThisAltText" % space
|
|
\gdef\LWR@ThisAltText{}%
|
|
}%
|
|
}
|
|
|
|
\newcommand*{\LWR@startref}[1]
|
|
{%
|
|
\LWR@sanitize{#1}%
|
|
\LWR@traceinfo{LWR@startref A: !#1!}%
|
|
\LWR@htmltag{a href="%
|
|
\LWR@traceinfo{LWR@startref B}%
|
|
\LWR@print@mbox{\LWR@htmlrefsectionfilename{#1}}%
|
|
\LWR@traceinfo{LWR@startref C}%
|
|
\LWR@origpound%
|
|
\LWR@traceinfo{LWR@startref D: !#1!}%
|
|
\ifcsundef{r@#1@lwarp}%
|
|
{%
|
|
\LWR@traceinfo{LWR@startref D0: ??}%
|
|
??%
|
|
}%
|
|
{%
|
|
\ifthenelse{\cnttest{\LWR@lateximagedepthref{#1}}{>}{0}}%
|
|
{%
|
|
lateximage-\BaseJobname-\LWR@lateximagenumberref{#1}%
|
|
}%
|
|
{%
|
|
\LWR@traceinfo{LWR@startref D3}%
|
|
\LWR@print@mbox{\LWR@sanitized}%
|
|
}%
|
|
}%
|
|
\LWR@traceinfo{LWR@startref E}%
|
|
"%
|
|
\LWR@addlinktitle%
|
|
}%
|
|
\LWR@traceinfo{LWR@startref F}%
|
|
}
|
|
|
|
\NewDocumentCommand{\LWR@subnewref}{m m}{%
|
|
\LWR@traceinfo{LWR@subnewref #1 #2}%
|
|
\LWR@startref{#1}%
|
|
\LWR@print@ref{#2}%
|
|
\LWR@htmltag{/a}%
|
|
}
|
|
|
|
\LWR@absorbstar{ref}%
|
|
\NewDocumentCommand{\LWR@HTML@ref}{s m}{%
|
|
\LWR@traceinfo{LWR@HTML@ref !#2!}%
|
|
\IfBooleanTF{#1}%
|
|
{\LWR@print@ref{#2}}%
|
|
{\LWR@subnewref{#2}{#2}}%
|
|
}
|
|
|
|
\LWR@formatted{ref}
|
|
\CustomizeMathJax{\let\LWRref\ref}
|
|
\CustomizeMathJax{\renewcommand{\ref}{\ifstar\LWRref\LWRref}}
|
|
\newcommand*{\pagerefPageFor}{see }
|
|
\NewDocumentCommand{\LWR@new@pageref}{s m}{%
|
|
\IfBooleanTF{#1}%
|
|
{(\pagerefPageFor\LWR@print@ref{#2})}%
|
|
{(\cpageref{#2})}%
|
|
}
|
|
|
|
\newrobustcmd*{\nameref}[1]{%
|
|
\LWR@traceinfo{nameref}%
|
|
\LWR@startref{#1}%
|
|
\LWR@traceinfo{nameref B}%
|
|
\LWR@nameref{#1}%
|
|
\LWR@traceinfo{nameref C}%
|
|
\LWR@htmltag{/a}%
|
|
\LWR@traceinfo{nameref: done}%
|
|
}
|
|
|
|
\LetLtxMacro\Nameref\nameref
|
|
|
|
|
|
|
|
|
|
\AtBeginDocument{
|
|
\def\@currentHref{\BaseJobname-autopage-\theLWR@currentautosec}
|
|
}
|
|
|
|
\newcommand*{\LWR@linkcatcodes}{%
|
|
\catcode`\#=12%
|
|
\catcode`\%=12%
|
|
\catcode`\&=12%
|
|
\catcode`\~=12%
|
|
\catcode`\_=12%
|
|
\LWR@FBcancel%
|
|
}
|
|
|
|
\newcommand*{\LWR@linkmediacatcodes}{%
|
|
\catcode`\#=12%
|
|
\catcode`\%=12%
|
|
\catcode`\~=12%
|
|
\catcode`\_=12%
|
|
\LWR@FBcancel%
|
|
}
|
|
|
|
\NewDocumentCommand{\LWR@subhyperref}{m}{%
|
|
\LWR@traceinfo{LWR@subhyperref !#1!}%
|
|
\LWR@sanitize{#1}%
|
|
\LWR@htmltag{%
|
|
a href="\LWR@sanitized" % space
|
|
\LWR@addlinktitle % space
|
|
target="\_{}blank" % space
|
|
}%
|
|
}
|
|
|
|
\newcommand{\LWR@subhyperreftext}[1]{%
|
|
#1%
|
|
\LWR@htmltag{/a}%
|
|
\LWR@ensuredoingapar%
|
|
}
|
|
|
|
\NewDocumentCommand{\LWR@subhyperrefclass}{m +m m}{%
|
|
\LWR@htmltag{%
|
|
a % space
|
|
href="\begingroup\@sanitize#1\endgroup" % space
|
|
class="#3" % space
|
|
\LWR@addlinktitle % space
|
|
}\LWR@orignewline%
|
|
#2%
|
|
\LWR@htmltag{/a}%
|
|
\LWR@ensuredoingapar%
|
|
}
|
|
|
|
\DeclareDocumentCommand{\LWR@hrefb}{O{} m}{%
|
|
\LWR@ensuredoingapar%
|
|
\LWR@subhyperref{#2}%
|
|
\endgroup% restore catcodes
|
|
\LWR@subhyperreftext%
|
|
}
|
|
|
|
\newrobustcmd*{\LWR@href}{%
|
|
\begingroup%
|
|
\LWR@linkcatcodes%
|
|
\LWR@hrefb%
|
|
}
|
|
|
|
\newcommand*{\LWR@nolinkurlb}[1]{%
|
|
\LWR@ensuredoingapar%
|
|
\def\LWR@templink{#1}%
|
|
\@onelevel@sanitize\LWR@templink%
|
|
\LWR@templink%
|
|
\endgroup%
|
|
}
|
|
|
|
\newrobustcmd*{\LWR@nolinkurl}{%
|
|
\begingroup%
|
|
\LWR@linkcatcodes%
|
|
\LWR@nolinkurlb%
|
|
}
|
|
|
|
\DeclareDocumentCommand{\LWR@urlb}{m}{%
|
|
\LWR@ensuredoingapar%
|
|
\def\LWR@templink{#1}%
|
|
\@onelevel@sanitize\LWR@templink%
|
|
\LWR@href{\LWR@templink}{\LWR@templink}%
|
|
\endgroup%
|
|
}
|
|
|
|
\newrobustcmd*{\LWR@url}{%
|
|
\begingroup%
|
|
\LWR@linkcatcodes%
|
|
\LWR@urlb%
|
|
}
|
|
|
|
\newcommand*{\LWR@subinlineimage}[5]{%
|
|
\ifblank{#1}%
|
|
{%
|
|
\LWR@htmltag{img \LWR@indentHTML
|
|
src="#3.#4" \LWR@indentHTML
|
|
alt="#3" \LWR@indentHTML
|
|
style="#5" \LWR@indentHTML
|
|
class="#2" \LWR@orignewline
|
|
}%
|
|
}%
|
|
{%
|
|
\LWR@htmltag{img \LWR@indentHTML
|
|
src="#3.#4" \LWR@indentHTML
|
|
alt="#1" \LWR@indentHTML
|
|
style="#5" \LWR@indentHTML
|
|
class="#2" \LWR@orignewline
|
|
}%
|
|
}%
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\NewDocumentCommand{\LWR@floatbegin}{m o}{%
|
|
\LWR@spanwarninvalid{float}%
|
|
\ifbool{FormatWP}{\newline}{}%
|
|
\LWR@stoppars%
|
|
\addtocounter{LWR@thisautoid}{1}%
|
|
\booltrue{LWR@freezethisautoid}%
|
|
\begingroup%
|
|
\LWR@print@raggedright%
|
|
\LWR@htmltag{%
|
|
figure id="\LWR@print@mbox{autoid-\arabic{LWR@thisautoid}}" % space
|
|
class="#1 \@nameuse{LWR@floatstyle@#1}"%
|
|
}%
|
|
\ifbool{FormatWP}{%
|
|
\LWR@orignewline%
|
|
\LWR@BlockClassWP{}{}{wp#1}%
|
|
}{}%
|
|
\renewcommand*{\@captype}{#1}%
|
|
\LWR@startpars%
|
|
\ifboolexpr{bool{FormatWP} and bool{WPMarkFloats}}{%
|
|
|
|
=== begin #1 ===
|
|
|
|
}{}%
|
|
}
|
|
\AtBeginDocument{
|
|
|
|
\@ifpackageloaded{tocbasic}{
|
|
|
|
\appto\figure@atbegin{%
|
|
\LWR@futurenonspacelet\LWR@mynexttoken\LWR@floatalignment%
|
|
}
|
|
|
|
}{}% tocbasic
|
|
|
|
}% AtBeginDocument
|
|
\AtBeginDocument{
|
|
\def\@xfloat #1[#2]{%
|
|
\LWR@floatbegin{#1}[#2]
|
|
\LWR@futurenonspacelet\LWR@mynexttoken\LWR@floatalignment%
|
|
}
|
|
\def\@xdblfloat #1[#2]{%
|
|
\LWR@floatbegin{#1}[#2]
|
|
\LWR@futurenonspacelet\LWR@mynexttoken\LWR@floatalignment%
|
|
}
|
|
}
|
|
\newcommand*{\LWR@floatend}{%
|
|
\LWR@endfloatalignment%
|
|
\ifboolexpr{bool{FormatWP} and bool{WPMarkFloats}}{%
|
|
|
|
=== end ===
|
|
|
|
}{}%
|
|
\LWR@stoppars%
|
|
\ifbool{FormatWP}{\endLWR@BlockClassWP}{}%
|
|
\LWR@htmlelementend{figure}%
|
|
\endgroup%
|
|
\boolfalse{LWR@freezethisautoid}%
|
|
\LWR@startpars%
|
|
\ifbool{FormatWP}{\newline}{}%
|
|
}
|
|
\AtBeginDocument{
|
|
\let\end@float\LWR@floatend
|
|
\let\end@dblfloat\LWR@floatend
|
|
}
|
|
|
|
\newcounter{LWR@thisautoid}
|
|
|
|
\newcounter{LWR@thisautoidWP}
|
|
|
|
\newbool{LWR@freezethisautoid}
|
|
\boolfalse{LWR@freezethisautoid}
|
|
|
|
\newcommand*{\LWR@forcenewautoidanchor}{%
|
|
\addtocounter{LWR@thisautoid}{1}%
|
|
\ifbool{LWR@doingapar}%
|
|
{%
|
|
\LWR@htmltag{a id="\LWR@print@mbox{autoid-\arabic{LWR@thisautoid}}" }%
|
|
\LWR@htmltag{/a }%
|
|
}%
|
|
{%
|
|
\LWR@stoppars%
|
|
\LWR@htmltag{a id="\LWR@print@mbox{autoid-\arabic{LWR@thisautoid}}" }%
|
|
\LWR@htmltag{/a }%
|
|
\LWR@startpars%
|
|
}%
|
|
}
|
|
|
|
\newcommand*{\LWR@newautoidanchor}{%
|
|
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
|
|
{}%
|
|
{\ifbool{LWR@freezethisautoid}{}{\LWR@forcenewautoidanchor}}%
|
|
}
|
|
|
|
\newcommand*{\@captype}{}
|
|
|
|
\newcommand*{\LWR@floatalignmentname}{}
|
|
|
|
\newcommand*{\LWR@floatalignment}{%
|
|
\ifdefstrequal{\LWR@mynexttoken}{\centering}{%
|
|
\center%
|
|
\renewcommand*{\LWR@floatalignmentname}{center}%
|
|
}{}%
|
|
\ifdefstrequal{\LWR@mynexttoken}{\raggedright}{%
|
|
\flushleft%
|
|
\renewcommand*{\LWR@floatalignmentname}{flushleft}%
|
|
}{}%
|
|
\ifdefstrequal{\LWR@mynexttoken}{\raggedleft}{%
|
|
\flushright%
|
|
\renewcommand*{\LWR@floatalignmentname}{flushright}%
|
|
}{}%
|
|
}
|
|
|
|
\newcommand*{\LWR@endfloatalignment}{%
|
|
\ifdefvoid{\LWR@floatalignmentname}%
|
|
{}%
|
|
{\@nameuse{end\LWR@floatalignmentname}}%
|
|
\renewcommand*{\LWR@floatalignmentname}{}%
|
|
}
|
|
|
|
|
|
\AtBeginDocument{\providecommand*{\CaptionSeparator}{:~}}
|
|
|
|
\AtBeginDocument{
|
|
\@ifpackageloaded{caption}{}{
|
|
\let\LWR@orig@caption\@caption%
|
|
\long\def\@caption#1[#2]{%
|
|
\LWR@spanwarnformat{caption}%
|
|
\LWR@setlatestname{#2}%
|
|
\LWR@orig@caption{#1}[{#2}]% also takes third argument
|
|
}%
|
|
|
|
\renewcommand{\@makecaption}[2]{%
|
|
\LWR@traceinfo{@makecaption}%
|
|
\caption@begin{\@captype}%
|
|
\LWR@isolate{#1}%
|
|
\edef\LWR@tempone{#1}%
|
|
\ifdefvoid{\LWR@tempone}{}{\CaptionSeparator}%
|
|
\LWR@isolate{#2}%
|
|
\caption@end%
|
|
\LWR@traceinfo{@makecaption: done}%
|
|
}%
|
|
}
|
|
}
|
|
|
|
|
|
\newcounter{LWR@nextautoid}
|
|
\newcounter{LWR@nextautopage}
|
|
\newcommand*{\LWRsetnextfloat}[2]{%
|
|
\setcounter{LWR@nextautopage}{#1}%
|
|
\setcounter{LWR@nextautoid}{#2}%
|
|
}
|
|
|
|
\newcounter{LWR@latestautopage}
|
|
\setcounter{LWR@latestautopage}{1}
|
|
|
|
\newenvironment*{LWR@figcaption}
|
|
{%
|
|
\ifbool{FormatWP}{%
|
|
\BlockClass[font-style:italic]{figurecaption}%
|
|
}{%
|
|
\BlockClass{figurecaption}%
|
|
}%
|
|
}%
|
|
{\endBlockClass}
|
|
\newcommand*{\LWR@HTML@caption@begin}[1]
|
|
{%
|
|
\LWR@traceinfo{LWR@HTML@caption@begin}%
|
|
\begingroup%
|
|
\RenewDocumentEnvironment{minipage}{O{t} o O{t} m}{}{}%
|
|
\RenewDocumentCommand{\parbox}{O{t} O{} O{t} m +m}{##5}%
|
|
\LWR@figcaption%
|
|
\LWR@traceinfo{LWR@HTML@caption@begin: about to LWR@origcaption@begin}%
|
|
\LWR@print@caption@begin{#1}%
|
|
\LWR@traceinfo{LWR@HTML@caption@begin: done}%
|
|
}
|
|
|
|
\newcommand*{\LWR@HTML@caption@end}
|
|
{%
|
|
\LWR@traceinfo{LWR@HTML@caption@end}%
|
|
\LWR@print@caption@end%
|
|
\endLWR@figcaption%
|
|
\endgroup%
|
|
% \leavevmode% avoid bad space factor (0) error
|
|
\LWR@traceinfo{LWR@HTML@caption@end: done}%
|
|
}
|
|
|
|
\AtBeginDocument{
|
|
\providecommand{\caption@begin}[1]{}
|
|
\LWR@formatted{caption@begin}
|
|
|
|
\providecommand{\caption@end}{}
|
|
\LWR@formatted{caption@end}
|
|
}
|
|
|
|
\AtBeginDocument{%
|
|
\@ifpackageloaded{caption}{
|
|
\let\LWR@origcaptionlistentry\captionlistentry
|
|
|
|
\renewcommand*{\captionlistentry}{%
|
|
\LWR@ensuredoingapar%
|
|
\LWR@origcaptionlistentry%
|
|
}
|
|
\def\LWR@LTcaptionlistentry{%
|
|
\LWR@ensuredoingapar%
|
|
\LWR@forcenewautoidanchor%
|
|
\bgroup%
|
|
\@ifstar{\egroup\LWR@LT@captionlistentry}% gobble *
|
|
{\egroup\LWR@LT@captionlistentry}%
|
|
}%
|
|
|
|
\def\LWR@LT@captionlistentry#1{%
|
|
\caption@listentry\@firstoftwo[\LTcaptype]{#1}%
|
|
}%
|
|
}% caption loaded
|
|
{% caption not loaded
|
|
\newcommand{\captionlistentry}[2][]{}%
|
|
\newcommand{\LWR@LT@captionlistentry}[2][]{}%
|
|
}
|
|
}% AtBeginDocument
|
|
|
|
\let\LWR@origaddcontentsline\addcontentsline
|
|
|
|
\renewcommand*{\addcontentsline}[3]{%
|
|
\ifstrequal{#1}{toc}{}{% not TOC
|
|
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
|
|
{}%
|
|
{\LWR@newautoidanchor}%
|
|
\ifcsvoid{ext@#2}{\csdef{ext@#2}{#1}}{}%
|
|
\addtocontents{\@nameuse{ext@#2}}{%
|
|
\protect\LWRsetnextfloat%
|
|
{\arabic{LWR@latestautopage}}%
|
|
{\arabic{LWR@thisautoid}}%
|
|
}%
|
|
}% not TOC
|
|
\LWR@origaddcontentsline{#1}{#2}{#3}%
|
|
}
|
|
\RequirePackage{capt-of}
|
|
|
|
\AtBeginDocument{
|
|
\let\LWR@origcaptionof\captionof
|
|
|
|
\renewcommand*{\captionof}{%
|
|
\LWR@stoppars%
|
|
\LWR@origcaptionof%
|
|
}
|
|
}% AtBeginDocument
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
|
|
\newcommand*{\LWR@myshorttoc}[1]{%
|
|
\LWR@traceinfo{LWR@myshorttoc: #1}%
|
|
\LWR@ensuredoingapar%
|
|
\IfFileExists{\jobname.#1}{%
|
|
\LWR@traceinfo{LWR@myshorttoc: loading}%
|
|
\begingroup%
|
|
\makeatletter%
|
|
\LWR@disablepinyin%
|
|
\@input{\jobname.#1}%
|
|
\endgroup%
|
|
}%
|
|
{}%
|
|
\LWR@traceinfo{LWR@myshorttoc: done}%
|
|
}
|
|
|
|
\NewDocumentCommand{\LWR@subtableofcontents}{m m}{%
|
|
\@ifundefined{chapter}%
|
|
{\LWR@closeprevious{section}}%
|
|
{\LWR@closeprevious{chapter}}%
|
|
\LWR@printpendingfootnotes%
|
|
\@ifundefined{chapter}{\section*{#2}}{\chapter*{#2}}%
|
|
\LWR@htmlelementclass{nav}{#1}%
|
|
\LWR@myshorttoc{#1}%
|
|
\LWR@htmlelementclassend{nav}{#1}%
|
|
}
|
|
|
|
\let\LWR@orig@starttoc\@starttoc
|
|
|
|
\renewcommand{\@starttoc}[1]{
|
|
\LWR@htmlelementclass{nav}{#1}%
|
|
\LWR@orig@starttoc{#1}%
|
|
\LWR@htmlelementclassend{nav}{#1}%
|
|
}
|
|
\newbool{LWR@copiedsidetoc}
|
|
\boolfalse{LWR@copiedsidetoc}
|
|
\AtBeginDocument{
|
|
|
|
\let\LWR@origtableofcontents\tableofcontents
|
|
|
|
\renewcommand*{\tableofcontents}{%
|
|
\ifboolexpr{bool{FormatWP} and bool{WPMarkTOC}}{
|
|
|
|
=== table of contents ===
|
|
|
|
}
|
|
{
|
|
\ifbool{LWR@copiedsidetoc}{}{%
|
|
\LWR@copyfile{\jobname.toc}{\jobname.sidetoc}%
|
|
\booltrue{LWR@copiedsidetoc}%
|
|
}%
|
|
\LWR@printpendingfootnotes
|
|
\LWR@origtableofcontents
|
|
}
|
|
}% \tableofcontents
|
|
|
|
}% AtBeginDocument
|
|
|
|
\let\LWR@origlistoffigures\listoffigures
|
|
|
|
\renewcommand*{\listoffigures}{
|
|
\ifboolexpr{bool{FormatWP} and bool{WPMarkLOFT}}{
|
|
|
|
=== list of figures ===
|
|
|
|
}
|
|
{
|
|
\LWR@printpendingfootnotes
|
|
\LWR@origlistoffigures
|
|
}
|
|
}
|
|
|
|
\let\LWR@origlistoftables\listoftables
|
|
|
|
\renewcommand*{\listoftables}{
|
|
\ifboolexpr{bool{FormatWP} and bool{WPMarkLOFT}}{
|
|
|
|
=== list of tables ===
|
|
|
|
}
|
|
{
|
|
\LWR@printpendingfootnotes
|
|
\LWR@origlistoftables
|
|
}
|
|
}
|
|
|
|
|
|
\NewDocumentCommand{\listof}{m +m}{%
|
|
\@ifundefined{l@#1}{%
|
|
\csdef{l@#1}##1##2{\hypertocfloat{1}{#1}{\@nameuse{ext@#1}}{##1}{##2}}%
|
|
}{}%
|
|
\LWR@subtableofcontents{\@nameuse{ext@#1}}{#2}%
|
|
\expandafter\newwrite\csname tf@\csname ext@#1\endcsname\endcsname%
|
|
\immediate\openout \csname tf@\csname ext@#1\endcsname\endcsname%
|
|
\jobname.\@nameuse{ext@#1}\relax%
|
|
}
|
|
|
|
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpall}
|
|
|
|
\newcounter{SideTOCDepth}
|
|
\setcounter{SideTOCDepth}{1}
|
|
|
|
\AtEndDocument{%
|
|
\ifnumcomp{\value{SideTOCDepth}}{<}{\value{FileDepth}}{
|
|
\PackageWarningNoLine{lwarp}
|
|
{%
|
|
SideTOCDepth is less than FileDepth,\MessageBreak
|
|
so some website pages may be inaccessible%
|
|
}
|
|
}{}
|
|
}
|
|
|
|
\newcommand{\sidetocname}{Contents}
|
|
|
|
\end{warpall}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newcommand*{\LWR@sidetoc}{%
|
|
\LWR@forcenewpage
|
|
\LWR@stoppars
|
|
|
|
\LWR@htmlelementclass{div}{sidetoccontainer}
|
|
\LWR@htmlelementclass{nav}{sidetoc}
|
|
|
|
\setcounter{tocdepth}{\value{SideTOCDepth}}
|
|
|
|
\begin{BlockClass}{sidetoctitle}
|
|
\ifcsvoid{thetitle}{}{\InlineClass{sidetocthetitle}{\thetitle}\par}
|
|
\sidetocname
|
|
\end{BlockClass}
|
|
\begin{BlockClass}{sidetoccontents}
|
|
\LinkHome
|
|
|
|
\LWR@myshorttoc{sidetoc}
|
|
\end{BlockClass}
|
|
\LWR@htmlelementclassend{nav}{sidetoc}
|
|
\LWR@htmlelementclassend{div}{sidetoccontainer}
|
|
}
|
|
|
|
|
|
\newcommand*{\LWR@numberline}[1]{%
|
|
\LWR@sectionnumber{#1}\quad%
|
|
}
|
|
|
|
\LetLtxMacro\numberline\LWR@numberline
|
|
|
|
\newcommand*{\LWR@maybetocdata}{}
|
|
|
|
\NewDocumentCommand{\hypertoc}{m m +m m}{%
|
|
\LWR@traceinfo{hypertoc !#1!#2!#3!#4!}%
|
|
\ifnumcomp{#1}{>}{\value{tocdepth}}%
|
|
{}%
|
|
{%
|
|
\LWR@startpars%
|
|
\LWR@subhyperrefclass{%
|
|
\LWR@htmlrefsectionfilename{\BaseJobname-autopage-#4}%
|
|
\LWR@origpound\LWR@print@mbox{autosec-#4}%
|
|
}{#3}{toc#2}%
|
|
\LWR@maybetocdata%
|
|
\LWR@stoppars%
|
|
}%
|
|
\LWR@traceinfo{hypertoc done}%
|
|
}
|
|
|
|
\@ifclassloaded{memoir}{}{
|
|
\newcounter{lofdepth}
|
|
\setcounter{lofdepth}{1}
|
|
}
|
|
|
|
\@ifclassloaded{memoir}{}{
|
|
\newcounter{lotdepth}
|
|
\setcounter{lotdepth}{1}
|
|
}
|
|
|
|
\newcommand{\hypertocfloat}[5]{%
|
|
\@ifundefined{c@#3depth}{%
|
|
\newcounter{#3depth}%
|
|
\setcounter{#3depth}{1}%
|
|
}{}%
|
|
\LWR@traceinfo{hypertocfloat depth is #1 #3depth is \arabic{#3depth}}%
|
|
\ifthenelse{\cnttest{#1}{<=}{\arabic{#3depth}}}%
|
|
{%
|
|
\LWR@startpars%
|
|
\LWR@subhyperrefclass{%
|
|
\LWR@htmlrefsectionfilename{%
|
|
\BaseJobname-autopage-\arabic{LWR@nextautopage}%
|
|
}%
|
|
\LWR@origpound\LWR@print@mbox{autoid-\arabic{LWR@nextautoid}}}%
|
|
{#4}{toc#2}%
|
|
\LWR@maybetocdata%
|
|
\LWR@stoppars%
|
|
}%
|
|
{}%
|
|
}
|
|
|
|
\DeclareDocumentCommand{\l@book}{m m}{\hypertoc{-2}{book}{#1}{#2}}
|
|
|
|
\DeclareDocumentCommand{\l@part}{m m}{\hypertoc{-1}{part}{#1}{#2}}
|
|
|
|
\@ifundefined{chapter}
|
|
{}
|
|
{
|
|
\DeclareDocumentCommand{\l@chapter}{m m}
|
|
{\hypertoc{0}{chapter}{#1}{#2}}
|
|
}
|
|
|
|
\renewcommand{\l@section}[2]{\hypertoc{1}{section}{#1}{#2}}
|
|
|
|
\renewcommand{\l@subsection}[2]{\hypertoc{2}{subsection}{#1}{#2}}
|
|
|
|
\renewcommand{\l@subsubsection}[2]{\hypertoc{3}{subsubsection}{#1}{#2}}
|
|
|
|
\renewcommand{\l@paragraph}[2]{\hypertoc{4}{paragraph}{#1}{#2}}
|
|
|
|
\renewcommand{\l@subparagraph}[2]{\hypertoc{5}{subparagraph}{#1}{#2}}
|
|
|
|
\renewcommand{\l@figure}[2]{\hypertocfloat{1}{figure}{lof}{#1}{#2}}
|
|
|
|
\renewcommand{\l@table}[2]{\hypertocfloat{1}{table}{lot}{#1}{#2}}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newcounter{LWR@autoindex}
|
|
\setcounter{LWR@autoindex}{0}
|
|
|
|
\newcounter{LWR@autoglossary}
|
|
\setcounter{LWR@autoglossary}{0}
|
|
|
|
\newcommand*{\IndexPageSeparator}{, }
|
|
\newcommand*{\IndexRangeSeparator}{--}
|
|
|
|
\@ifundefined{chapter}
|
|
{\newcommand*{\LWR@indexsection}[1]{\section*{#1}}}
|
|
{\newcommand*{\LWR@indexsection}[1]{\chapter*{#1}}}
|
|
|
|
\AtBeginDocument{
|
|
|
|
\renewenvironment*{theindex}{%
|
|
\LWR@indexsection{\indexname}%
|
|
\let\item\LWR@indexitem%
|
|
\let\subitem\LWR@indexsubitem%
|
|
\let\subsubitem\LWR@indexsubsubitem%
|
|
}{}
|
|
|
|
}% AtBeginDocument
|
|
|
|
\newcommand{\LWR@indexitem}[1][\@empty]{
|
|
|
|
\InlineClass{indexitem}{\LWR@htmlcomment{}}#1%
|
|
}
|
|
|
|
\newcommand{\LWR@indexsubitem}{
|
|
|
|
\InlineClass{indexsubitem}{\LWR@htmlcomment{}}%
|
|
}
|
|
|
|
\newcommand{\LWR@indexsubsubitem}{
|
|
|
|
\InlineClass{indexsubsubitem}{\LWR@htmlcomment{}}%
|
|
}
|
|
|
|
\NewDocumentCommand{\LWR@xindex@modifyentry}{>{\SplitArgument{1}{|}}m}
|
|
{\LWR@xindex@modifyentrysub#1}
|
|
\newcommand*{\LWR@xindex@modifyentrysub}[2]{%
|
|
\edef\LWR@tempone{#1}%
|
|
\edef\LWR@temptwo{#2}%
|
|
\IfValueTF{#2}{%
|
|
\ifx#2(%
|
|
\appto\LWR@tempone{|(}%
|
|
\else%
|
|
\ifx#2)%
|
|
\appto\LWR@tempone{|)}%
|
|
\else%
|
|
\appto\LWR@tempone{%
|
|
|hyperindexformat\LWRleftbrace%
|
|
\LWRbackslash#2%
|
|
\LWRrightbrace%
|
|
}%
|
|
\fi%
|
|
\fi%
|
|
}%
|
|
{}%
|
|
}
|
|
|
|
\newbool{LWR@xindex@tricked}
|
|
\boolfalse{LWR@xindex@tricked}
|
|
|
|
\def\LWR@wrindex#1{%
|
|
\ifbool{LWR@xindex}{%
|
|
\ifbool{LWR@xindex@tricked}{}{%
|
|
\protected@write\@indexfile{}%
|
|
{%
|
|
\LWRpercent\space hyperpage\LWRrightbrace%
|
|
\LWRpercent\space trick xindex to assume hyperref%
|
|
}%
|
|
\global\booltrue{LWR@xindex@tricked}%
|
|
}%
|
|
\LWR@xindex@modifyentry{#1}%
|
|
}{%
|
|
\def\LWR@tempone{#1}%
|
|
}%
|
|
\addtocounter{LWR@autoindex}{1}%
|
|
\label{LWRindex-\arabic{LWR@autoindex}}%
|
|
\protected@write\@indexfile{}%
|
|
{\string\indexentry{\LWR@tempone}{\arabic{LWR@autoindex}}}%
|
|
\endgroup%
|
|
\@esphack%
|
|
}
|
|
|
|
\AtBeginDocument{
|
|
\let\@wrindex\LWR@wrindex
|
|
}
|
|
|
|
\def\@wrglossary#1{%
|
|
\addtocounter{LWR@autoglossary}{1}%
|
|
\LWR@new@label{LWRglossary-\theLWR@autoglossary}%
|
|
\protected@write\@glossaryfile{}%
|
|
{\string\glossaryentry{#1}{\theLWR@autoglossary}}%
|
|
\endgroup%
|
|
\@esphack%
|
|
}
|
|
|
|
\newcommand*{\LWR@indexnameref@anonref}[1]{%
|
|
\LWR@startref{LWRindex-#1}%
|
|
(*)%
|
|
\LWR@htmltag{/a}%
|
|
}
|
|
|
|
\newcommand*{\LWR@indexnameref@ref}[1]{%
|
|
\edef\LWR@thisref{\csuse{r@LWRindex-#1}}%
|
|
\ifdefvoid{\LWR@thisref}{}{%
|
|
\edef\LWR@thisref{\expandafter\@firstoftwo\LWR@thisref}%
|
|
\ifdefvoid{\LWR@thisref}%
|
|
{\LWR@indexnameref@anonref{#1}}%
|
|
{\ref{LWRindex-#1}}%
|
|
}%
|
|
}
|
|
|
|
\newcommand*{\LWR@indexnameref@refnameref}[1]{%
|
|
\edef\LWR@thisref{\csuse{r@LWRindex-#1}}%
|
|
\ifdefvoid{\LWR@thisref}{}{%
|
|
\edef\LWR@thisref{\expandafter\@firstoftwo\LWR@thisref}%
|
|
\ifdefvoid{\LWR@thisref}{}{%
|
|
\ifdefstring{\LWR@thisref}{(*)}%
|
|
{}%
|
|
{\ref{LWRindex-#1} }% space
|
|
}%
|
|
}%
|
|
\nameref{LWRindex-#1}%
|
|
}
|
|
|
|
\newcommand*{\LWR@indexnameref@cref}[1]{%
|
|
\edef\LWR@thisref{\csuse{r@LWRindex-#1}}%
|
|
\ifdefvoid{\LWR@thisref}{%
|
|
\nameref{LWRindex-#1}%
|
|
}{%
|
|
\edef\LWR@thisref{\expandafter\@firstoftwo\LWR@thisref}%
|
|
\ifdefvoid{\LWR@thisref}{%
|
|
\nameref{LWRindex-#1}%
|
|
}{%
|
|
\ifdefstring{\LWR@thisref}{(*)}{%
|
|
\LWR@indexnameref@anonref{#1}%
|
|
}{%
|
|
\cref{LWRindex-#1}%
|
|
}%
|
|
}%
|
|
}%
|
|
}
|
|
|
|
\newcommand*{\LWR@indexnameref@crefnameref}[1]{%
|
|
\edef\LWR@thisref{\csuse{r@LWRindex-#1}}%
|
|
\ifdefvoid{\LWR@thisref}%
|
|
{}%
|
|
{%
|
|
\edef\LWR@thisref{\expandafter\@firstoftwo\LWR@thisref}%
|
|
\ifdefvoid{\LWR@thisref}%
|
|
{}%
|
|
{%
|
|
\ifdefstring{\LWR@thisref}{(*)}%
|
|
{}%
|
|
{\cref{LWRindex-#1}} % space
|
|
}%
|
|
}%
|
|
\nameref{LWRindex-#1}%
|
|
}
|
|
|
|
\newcommand*{\LWR@indexnameref}[1]{%
|
|
{% group
|
|
\ifdef{\caption@xref}{%
|
|
\renewcommand*{\caption@xref}[2]{(*)}%
|
|
}{}%
|
|
\ifdefstring{\LWR@IndexRef}{ref}{%
|
|
\LWR@indexnameref@ref{#1}%
|
|
}{%
|
|
\ifdefstring{\LWR@IndexRef}{nameref}{%
|
|
\nameref{LWRindex-#1}%
|
|
}{%
|
|
\ifdefstring{\LWR@IndexRef}{refnameref}{%
|
|
\LWR@indexnameref@refnameref{#1}%
|
|
}{%
|
|
\ifdefstring{\LWR@IndexRef}{cref}{%
|
|
\LWR@indexnameref@cref{#1}%
|
|
}{%
|
|
\ifdefstring{\LWR@IndexRef}{crefnameref}{%
|
|
\LWR@indexnameref@crefnameref{#1}%
|
|
}{%
|
|
\ifdefstring{\LWR@IndexRef}{autoref}{%
|
|
\LWR@indexnameref@cref{#1}%
|
|
}{% text string
|
|
\LWR@startref{LWRindex-#1}%
|
|
\LWR@IndexRef%
|
|
\LWR@htmltag{/a}%
|
|
}}}}}}%
|
|
}% group
|
|
}
|
|
|
|
\newrobustcmd{\LWR@doindexentrysubsub}[2]{%
|
|
\IfInteger{#1}%
|
|
{\LWR@indexnameref{#1}}%
|
|
{#1}%
|
|
\IfValueT{#2}{%
|
|
\IndexRangeSeparator%
|
|
\IfInteger{#2}%
|
|
{\LWR@indexnameref{#2}}%
|
|
{#2}%
|
|
}%
|
|
}
|
|
\NewDocumentCommand{\LWR@doindexentrysub}{m >{\SplitArgument{1}{#1}}m}
|
|
{\LWR@doindexentrysubsub#2}
|
|
|
|
\newcommand*{\LWR@doindexentry}[1]{%
|
|
\relax% required
|
|
\expandafter\LWR@doindexentrysub\expandafter{\IndexRangeSeparator}{#1}%
|
|
}
|
|
|
|
\newcommand{\LWR@hyperindexrefnullified}{%
|
|
\renewrobustcmd{\emph}[1]{\LWR@HTML@emph{\LWR@doindexentry{##1}}}%
|
|
\renewrobustcmd{\textbf}[1]{\LWR@HTML@textbf{\LWR@doindexentry{##1}}}%
|
|
\renewrobustcmd{\texteb}[1]{\LWR@HTML@texteb{\LWR@doindexentry{##1}}}%
|
|
\renewrobustcmd{\textlg}[1]{\LWR@HTML@textlg{\LWR@doindexentry{##1}}}%
|
|
\renewrobustcmd{\textrm}[1]{\LWR@HTML@textrm{\LWR@doindexentry{##1}}}%
|
|
\renewrobustcmd{\textsf}[1]{\LWR@HTML@textsf{\LWR@doindexentry{##1}}}%
|
|
\renewrobustcmd{\texttt}[1]{\LWR@HTML@texttt{\LWR@doindexentry{##1}}}%
|
|
\renewrobustcmd{\textup}[1]{\LWR@HTML@textup{\LWR@doindexentry{##1}}}%
|
|
\renewrobustcmd{\textsc}[1]{\LWR@HTML@textsc{\LWR@doindexentry{##1}}}%
|
|
\renewrobustcmd{\textulc}[1]{\LWR@HTML@textulc{\LWR@doindexentry{##1}}}%
|
|
\renewrobustcmd{\textsi}[1]{\LWR@HTML@textsi{\LWR@doindexentry{##1}}}%
|
|
\renewrobustcmd{\textit}[1]{\LWR@HTML@textit{\LWR@doindexentry{##1}}}%
|
|
\renewrobustcmd{\textsl}[1]{\LWR@HTML@textsl{\LWR@doindexentry{##1}}}%
|
|
}
|
|
|
|
\newcommand*{\hyperindexref}[1]{%
|
|
\relax% required
|
|
\expandafter\LWR@hyperindexref@comma\expandafter{\IndexPageSeparator}{#1}%
|
|
}
|
|
\NewDocumentCommand{\LWR@hyperindexref@comma}
|
|
{m >{\SplitList{#1}} m}
|
|
{%
|
|
\def\LWR@hyperindexref@thiscomma{}%
|
|
\def\LWR@hyperindexref@nextcomma{#1}%
|
|
\ProcessList{#2}\LWR@hyperindexref@@comma%
|
|
}
|
|
\newcommand*{\LWR@hyperindexref@@comma}[1]{%
|
|
\LWR@hyperindexref@thiscomma%
|
|
\renewcommand{\LWR@hyperindexref@thiscomma}{\LWR@hyperindexref@nextcomma}%
|
|
\expandafter\LWR@hyperindexref@range\expandafter{\IndexRangeSeparator}{#1}%
|
|
}
|
|
\NewDocumentCommand{\LWR@hyperindexref@range}
|
|
{m >{\SplitArgument{1}{#1}} m}
|
|
{\LWR@hyperindexrefsub#2}
|
|
|
|
\newcommand*{\LWR@hyperindexrefsub}[2]{%
|
|
\LWR@hyperindexrefsubtwo{#1}%
|
|
\IfValueT{#2}{%
|
|
\IndexRangeSeparator%
|
|
\LWR@hyperindexrefsubtwo{#2}%
|
|
}%
|
|
}
|
|
|
|
\newcommand*{\LWR@hyperindexrefsubtwo}[1]{%
|
|
\edef\LWR@tempone{#1}%
|
|
\IfBeginWith{\LWR@tempone}{ }{%
|
|
\StrGobbleLeft{\LWR@tempone}{1}[\LWR@tempone]%
|
|
}{}%
|
|
\IfInteger{\LWR@tempone}%
|
|
{\LWR@indexnameref{\LWR@tempone}}%
|
|
{%
|
|
\begingroup%
|
|
\LWR@hyperindexrefnullified%
|
|
#1%
|
|
\endgroup%
|
|
}%
|
|
}
|
|
|
|
\LetLtxMacro\hyperpage\hyperindexref
|
|
|
|
\def\nohyperpage#1{}
|
|
|
|
\def\hyperindexformat#1#2{%
|
|
#1{\hyperpage{#2}}%
|
|
}%
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpprint}
|
|
\newcommand{\hyperindexref}[1]{#1}
|
|
\end{warpprint}
|
|
|
|
\begin{warpall}
|
|
\providecommand{\glo@name}{}
|
|
\end{warpall}
|
|
\begin{warpHTML}
|
|
\renewcommand{\@biblabel}[1]{[#1]\quad}
|
|
\AtBeginDocument{
|
|
|
|
\AtBeginEnvironment{thebibliography}{
|
|
|
|
\providecommand*{\LWR@newem}[1]{\textit{#1}}
|
|
|
|
\renewrobustcmd{\em}{%
|
|
\begingroup
|
|
\gdef\LWR@em@after{\LWR@em@finish\LWR@newem}%
|
|
\afterassignment\LWR@em@after
|
|
\toks@\bgroup
|
|
}
|
|
|
|
\def\LWR@em@finish#1{%
|
|
\xdef\LWR@em@after{\noexpand#1{\the\toks@}}%
|
|
\endgroup
|
|
\LWR@em@after\egroup
|
|
}
|
|
|
|
}% \AtBeginEnvironment{thebibliography}
|
|
|
|
}% \AtBeginDocument
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpHTML}
|
|
\newcommand*{\LWR@restoreMathJaxformatting}{}
|
|
|
|
\newcommand*{\LWR@restoreorigformatting}{%
|
|
\LWR@traceinfo{LWR@restoreorigformatting}%
|
|
\renewcommand*{\LWR@formatting}{print}%
|
|
\linespread{1}%
|
|
\let\par\LWR@origpar%
|
|
\LWR@select@print@hspace%
|
|
\LetLtxMacro\hfil\LWR@orighfil%
|
|
\let\hss\LWR@orighss%
|
|
\let\llap\LWR@origllap%
|
|
\let\rlap\LWR@origrlap%
|
|
\let\hfilneg\LWR@orighfilneg%
|
|
\let\,\LWR@origcomma% disable HTML short unbreakable space
|
|
\let\thinspace\LWR@origthinspace% disable HTML short unbreakable space
|
|
\let\negthinspace\LWR@orignegthinspace% disable HTML negative short unbreakable space
|
|
\let\textellipsis\LWR@origtextellipsis%
|
|
\let\vdots\LWR@origvdots%
|
|
\let\textless\LWR@origtextless%
|
|
\let\textgreater\LWR@origtextgreater%
|
|
\let\&\LWR@origampersand%
|
|
\LetLtxMacro\em\LWR@origem%
|
|
\LetLtxMacro\normalfont\LWR@orignormalfont%
|
|
\let\sp\LWR@origsp%
|
|
\let\sb\LWR@origsb%
|
|
\LetLtxMacro\underline\LWR@origunderline%
|
|
\let~\LWR@origtilde%
|
|
\let\enskip\LWR@origenskip%
|
|
\let\quad\LWR@origquad%
|
|
\let\qquad\LWR@origqquad%
|
|
\LetLtxMacro\endtabular\LWR@origendtabular%
|
|
\csletcs{endtabular*}{LWR@origendtabular*}%
|
|
\LetLtxMacro\noalign\LWR@orignoalign%
|
|
\LetLtxMacro\hline\LWR@orighline%
|
|
\let\newline\LWR@orignewline%
|
|
\LetLtxMacro\includegraphics\LWR@origincludegraphics%
|
|
\LetLtxMacro\@ensuredmath\LWR@origensuredmath%
|
|
\let\math\LWR@orig@math%
|
|
\let\endmath\LWR@orig@endmath%
|
|
\let\displaymath\LWR@orig@displaymath%
|
|
\let\enddisplaymath\LWR@orig@enddisplaymath%
|
|
\LWR@restoreorigaccents%
|
|
\LWR@restoreoriglists%
|
|
\LWR@FBcancel%
|
|
\ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
|
|
{\LWR@restoreMathJaxformatting}%
|
|
{}%
|
|
}
|
|
\end{warpHTML}
|
|
\begin{warpHTML}
|
|
\newcommand*{\LWR@dash}{-}
|
|
\catcode`\$=\active% redefining $ below
|
|
\catcode`\_=12% redefining \_ below
|
|
\newcommand*{\LWR@nullfonts}{%
|
|
\renewcommand*{\$}{-}%
|
|
\renewcommand*{\%}{-}%
|
|
\renewcommand*{\_}{-}%
|
|
\renewcommand*{\}}{-}%
|
|
\renewcommand*{\{}{-}%
|
|
\renewcommand*{\&}{-}% used to be 'and'
|
|
\renewcommand*{\#}{-}%
|
|
\renewcommand*{\,}{-}%
|
|
\renewcommand*{~}{-}%
|
|
\renewcommand*{\`}[1]{##1}%
|
|
\renewcommand*{\'}[1]{##1}%
|
|
\renewcommand*{\^}[1]{##1}%
|
|
\renewcommand*{\~}[1]{##1}%
|
|
\renewcommand*{\=}[1]{##1}%
|
|
\renewcommand*{\u}[1]{##1}%
|
|
\renewcommand*{\.}[1]{##1}%
|
|
\renewcommand*{\"}[1]{##1}%
|
|
\renewcommand*{\H}[1]{##1}%
|
|
\renewcommand*{\v}[1]{##1}%
|
|
\renewcommand*{\d}[1]{##1}%
|
|
\renewcommand*{\c}[1]{##1}%
|
|
\renewcommand*{\b}[1]{##1}%
|
|
\renewcommand*{\t}[1]{##1}%
|
|
\let\newline\LWR@dash%
|
|
\let\textasciicircum\LWR@dash%
|
|
\let\textasciitilde\LWR@dash%
|
|
\let\textasteriskcentered\LWR@dash%
|
|
\let\textbackslash\LWR@dash%
|
|
\let\textbar\LWR@dash%
|
|
\let\textbardbl\LWR@dash%
|
|
\let\textbigcircle\LWR@dash%
|
|
\let\textbraceleft\LWR@dash%
|
|
\let\textbraceright\LWR@dash%
|
|
\let\textbullet\LWR@dash%
|
|
\let\textcopyright\LWR@dash%
|
|
\let\textdagger\LWR@dash%
|
|
\let\textdaggerdbl\LWR@dash%
|
|
\let\textdollar\LWR@dash%
|
|
\let\textellipsis\LWR@dash%
|
|
\let\textemdash\LWR@dash%
|
|
\let\textendash\LWR@dash%
|
|
\let\textexclamdown\LWR@dash%
|
|
\let\textgreater\LWR@dash%
|
|
\let\textless\LWR@dash%
|
|
\let\textordfeminine\LWR@dash%
|
|
\let\textordmasculine\LWR@dash%
|
|
\let\textparagraph\LWR@dash%
|
|
\let\textperiodcentered\LWR@dash%
|
|
\let\textpertenthousand\LWR@dash%
|
|
\let\textperthousand\LWR@dash%
|
|
\let\textquestiondown\LWR@dash%
|
|
\let\textquotedblleft\LWR@dash%
|
|
\let\textquotedblright\LWR@dash%
|
|
\let\textquoteleft\LWR@dash%
|
|
\let\textquoteright\LWR@dash%
|
|
\let\textregistered\LWR@dash%
|
|
\let\textsection\LWR@dash%
|
|
\let\textsterling\LWR@dash%
|
|
\let\texttrademark\LWR@dash%
|
|
\let\textunderscore\LWR@dash%
|
|
\let\textvisiblespace\LWR@dash%
|
|
\let\copyright\LWR@dash%
|
|
\let\dag\LWR@dash%
|
|
\let\ddag\LWR@dash%
|
|
\let\dots\LWR@dash%
|
|
\let\P\LWR@dash%
|
|
\let\pounds\LWR@dash%
|
|
\let\S\LWR@dash%
|
|
\renewcommand*{\aa}{a}%
|
|
\renewcommand*{\AA}{A}%
|
|
\renewcommand*{\AE}{AE}%
|
|
\renewcommand*{\ae}{ae}%
|
|
\renewcommand*{\dh}{d}%
|
|
\renewcommand*{\DH}{D}%
|
|
\renewcommand*{\DJ}{D}%
|
|
\renewcommand*{\dj}{d}%
|
|
\renewcommand*{\IJ}{IJ}%
|
|
\renewcommand*{\ij}{ij}%
|
|
\renewcommand*{\L}{L}%
|
|
\renewcommand*{\l}{l}%
|
|
\renewcommand*{\NG}{NG}%
|
|
\renewcommand*{\ng}{ng}%
|
|
\renewcommand*{\O}{O}%
|
|
\renewcommand*{\o}{o}%
|
|
\renewcommand*{\oe}{oe}%
|
|
\renewcommand*{\OE}{OE}%
|
|
\renewcommand*{\ss}{ss}%
|
|
\renewcommand*{\SS}{SS}%
|
|
\renewcommand*{\th}{th}%
|
|
\renewcommand*{\TH}{TH}%
|
|
\let\guillemotleft\@empty%
|
|
\let\guilsinglleft\@empty%
|
|
\let\quotedblbase\@empty%
|
|
\let\textquotedbl\@empty%
|
|
\let\guillemotright\@empty%
|
|
\let\guilsinglright\@empty%
|
|
\let\quotesinglbase\@empty%
|
|
\renewcommand*{\HTMLunicode}[1]{}%
|
|
\renewcommand*{\HTMLentity}[1]{}%
|
|
\renewcommand{\textsuperscript}[1]{##1}%
|
|
\renewcommand{\textsubscript}[1]{##1}%
|
|
\renewcommand{\underline}[1]{##1}%
|
|
\RenewDocumentCommand{\hspace}{s m}{}%
|
|
\RenewDocumentCommand{\LWR@htmlspanclass}{o m +m}{##3}%
|
|
\DeclareExpandableDocumentCommand{\InlineClass}{D{(}{)}{} o m +m}{##4}%
|
|
\def\(##1\){}%
|
|
\def\[##1\]{}%
|
|
\RenewDocumentCommand{\LWR@subsingledollar}{s m m m}{}%
|
|
\renewcommand*{\TeX}{TeX}%
|
|
\renewcommand*{\LaTeX}{LaTeX}%
|
|
\renewcommand*{\LaTeXe}{LaTeX2e}%
|
|
\renewcommand*{\LuaTeX}{LuaTeX}%
|
|
\renewcommand*{\LuaLaTeX}{LuaLaTeX}%
|
|
\renewcommand*{\XeTeX}{XeTeX}%
|
|
\renewcommand*{\XeLaTeX}{XeLaTeX}%
|
|
\renewcommand*{\ConTeXt}{ConTeXt}%
|
|
\renewcommand*{\BibTeX}{BibTeX}%
|
|
\renewcommand*{\MakeIndex}{MakeIndex}%
|
|
\renewcommand*{\AmS}{AmS}%
|
|
\renewcommand*{\MiKTeX}{MiKTeX}%
|
|
\renewcommand*{\LyX}{LyX}%
|
|
\def\texorpdfstring{\expandafter\@secondoftwo}%
|
|
}
|
|
\catcode`\$=3%
|
|
\catcode`\_=8%
|
|
\newcommand*{\FilenameNullify}[1]{%
|
|
\appto{\LWR@nullfonts}{#1}%
|
|
}
|
|
\end{warpHTML}
|
|
\begin{warpall}
|
|
|
|
\newcommand*{\AltTextOpen}{(}
|
|
|
|
\newcommand*{\AltTextClose}{)}
|
|
|
|
\newcommand*{\ImageAltText}{image}
|
|
|
|
\newcommand*{\MathImageAltText}{math image}
|
|
|
|
\newcommand*{\LWR@ThisAltText}{}
|
|
|
|
\newcommand*{\ThisAltText}[1]{%
|
|
\renewcommand{\LWR@ThisAltText}{#1}%
|
|
}
|
|
|
|
\newcommand*{\PackageDiagramAltText}{diagram}
|
|
|
|
\end{warpall}
|
|
|
|
\begin{warpHTML}
|
|
\newcounter{LWR@externalfilecnt}
|
|
|
|
\newbool{LWR@indisplaymathimage}
|
|
|
|
\newbool{LWR@insidemathcomment}
|
|
\boolfalse{LWR@insidemathcomment}
|
|
|
|
\newbool{LWR@xfakebold}
|
|
\boolfalse{LWR@xfakebold}
|
|
|
|
\newcommand*{\LWR@orig@setBold}{}
|
|
|
|
\newcommand*{\LWR@orig@unsetBold}{}
|
|
|
|
\newcommand*{\LWR@applyxfakebold}{}
|
|
|
|
\newcommand*{\LWR@setcurrentfont}{%
|
|
\LWR@traceinfo{Using font family \LWR@f@family}%
|
|
\@nameuse{LWR@print@\LWR@f@family family}%
|
|
\LWR@traceinfo{Using font series \LWR@f@series}%
|
|
\@nameuse{LWR@print@\LWR@f@series series}%
|
|
\LWR@traceinfo{Using font shape \LWR@f@shape}%
|
|
\@nameuse{LWR@print@\LWR@f@shape shape}%
|
|
\LWR@traceinfo{Using font caps shape \LWR@f@shapecaps}%
|
|
\@nameuse{LWR@print@\LWR@f@shapecaps shape}%
|
|
}
|
|
|
|
\let\LWR@origtextdollar\$
|
|
|
|
\renewcommand*{\$}{%
|
|
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
|
|
{\LWR@origtextdollar}%
|
|
{\HTMLunicode{00024}}%
|
|
}
|
|
|
|
\AtBeginDocument{
|
|
|
|
\ifpdf
|
|
\newcommand*{\LWR@baselinename}{lwarp_baseline_marker.png}
|
|
\else
|
|
\ifXeTeX
|
|
\newcommand*{\LWR@baselinename}{lwarp_baseline_marker.png}
|
|
\else
|
|
\newcommand*{\LWR@baselinename}{lwarp_baseline_marker.eps}
|
|
\fi
|
|
\fi
|
|
|
|
\IfFileExists{\LWR@baselinename}%
|
|
{
|
|
\@ifpackageloaded{graphicx}{
|
|
\newcommand*{\LWR@addbaselinemarker}{%
|
|
\LWR@origincludegraphics{\LWR@baselinename}%
|
|
}
|
|
}{
|
|
\@ifpackageloaded{graphics}{
|
|
\newcommand*{\LWR@addbaselinemarker}{%
|
|
\LWR@origincludegraphics{\LWR@baselinename}%
|
|
}
|
|
}{
|
|
\newcommand*{\LWR@addbaselinemarker}{%
|
|
\global\booltrue{LWR@warnbaselinemarker}%
|
|
}
|
|
\AtEndDocument{
|
|
\ifbool{LWR@warnbaselinemarker}{
|
|
\PackageWarningNoLine{lwarp}{%
|
|
Load graphicx or graphics for improved\MessageBreak
|
|
SVG math sizing and baselines%
|
|
}
|
|
}{}
|
|
}
|
|
}
|
|
}
|
|
}{% lwarp_baseline_marker.png or .eps is not present
|
|
\newcommand*{\LWR@addbaselinemarker}{%
|
|
\global\booltrue{LWR@warnbaselinemarker}%
|
|
}
|
|
\AtEndDocument{
|
|
\ifbool{LWR@warnbaselinemarker}{
|
|
\PackageWarningNoLine{lwarp}{%
|
|
File \LWR@baselinename\space is not installed\MessageBreak
|
|
alongside the lwarp-*.sty files, so\MessageBreak
|
|
SVG math sizing and baselines may not be accurate}
|
|
}{}
|
|
}
|
|
}
|
|
|
|
}% AtBeginDocument
|
|
|
|
\newbool{LWR@warnbaselinemarker}
|
|
\boolfalse{LWR@warnbaselinemarker}
|
|
|
|
\newbool{LWR@unknownmathsize}
|
|
|
|
\newcommand*{\LWR@singledollarmeasure}[1]{%
|
|
\begingroup%
|
|
\LWR@restoreorigformatting%
|
|
\RenewDocumentEnvironment{lateximage}{s o s o o}{}{}% inside group
|
|
\LWR@print@normalsize%
|
|
\LWR@setcurrentfont%
|
|
\global\advance\c@LWR@lateximagedepth 1\relax%
|
|
\boolfalse{LWR@unknownmathsize}%
|
|
\ifmmode%
|
|
\global\sbox{\LWR@singledollarbox}{#1}%
|
|
\else%
|
|
\ifbool{LWR@dynamicmath}{%
|
|
\ifbool{mathjax}{%
|
|
\global\sbox{\LWR@singledollarbox}%
|
|
{\LWR@origensuredmath{#1}}%
|
|
}{%
|
|
\global\sbox{\LWR@singledollarbox}{#1}%
|
|
}%
|
|
}{%
|
|
\global\sbox{\LWR@singledollarbox}{#1}%
|
|
}%
|
|
\fi%
|
|
\global\sbox{\LWR@singledollarbox}{%
|
|
\usebox{\LWR@singledollarbox}%
|
|
\raisebox{-\dp\LWR@singledollarbox}{%
|
|
\LWR@addbaselinemarker%
|
|
}%
|
|
}%
|
|
\global\advance\c@LWR@lateximagedepth -1\relax% Due to AmS \text macro.
|
|
\setlength{\LWR@singledollardepth}{%
|
|
\LateximageFontScale\dp\LWR@singledollarbox%
|
|
}%
|
|
\global\LWR@singledollardepth=\LWR@singledollardepth%
|
|
\setlength{\LWR@singledollarwidth}{%
|
|
\LateximageFontScale\wd\LWR@singledollarbox%
|
|
}%
|
|
\global\LWR@singledollarwidth=\LWR@singledollarwidth%
|
|
\setlength{\LWR@singledollarheight}{%
|
|
\LateximageFontScale\ht\LWR@singledollarbox%
|
|
}%
|
|
\addtolength{\LWR@singledollarheight}{%
|
|
\LateximageFontScale\dp\LWR@singledollarbox%
|
|
}%
|
|
\global\LWR@singledollarheight=\LWR@singledollarheight%
|
|
\endgroup%
|
|
}
|
|
|
|
\newcommand*{\LWR@subsingledollarsvg}[4]{%
|
|
\LWR@singledollarmeasure{#4}%
|
|
\ifdimgreater{\LWR@singledollarwidth}{.7\LWR@singledollarheight}{%
|
|
\def\LWR@singledollarstyle{%
|
|
width:\LWR@convertto{em}{\the\LWR@singledollarwidth} em%
|
|
}%
|
|
}{%
|
|
\def\LWR@singledollarstyle{%
|
|
height:\LWR@convertto{em}{\the\LWR@singledollarheight} em%
|
|
}%
|
|
}%
|
|
\ifdimless{\LWR@singledollarwidth}{.2em}%
|
|
{%
|
|
\def\LWR@singledollarstyle{%
|
|
height:\LWR@convertto{em}{\the\LWR@singledollarheight} em%
|
|
}%
|
|
}%
|
|
{}%
|
|
\ifdimless{\LWR@singledollarheight}{.2em}%
|
|
{%
|
|
\def\LWR@singledollarstyle{%
|
|
width:\LWR@convertto{em}{\the\LWR@singledollarwidth} em%
|
|
}%
|
|
}%
|
|
{}%
|
|
\ifdimgreater{\LWR@singledollardepth}{0.05ex}{%
|
|
\def\LWR@singledollardepthstyle{%
|
|
\ ; % extra space
|
|
\LWR@print@mbox{%
|
|
vertical-align:-\LWR@convertto{em}{\the\LWR@singledollardepth} em%
|
|
} % extra space
|
|
}%
|
|
}{%
|
|
\def\LWR@singledollardepthstyle{}%
|
|
}%
|
|
\ifbool{LWR@unknownmathsize}{%
|
|
\def\LWR@singledollarstyle{}%
|
|
\def\LWR@singledollardepthstyle{}%
|
|
}{}%
|
|
\ifbool{LWR@dynamicmath}{%
|
|
\LWR@traceinfo{subsingledollar: dynamic}%
|
|
\begin{lateximage}% no hashing
|
|
[\MathImageAltText]% alt tag
|
|
[]% no add'l hashing
|
|
[\LWR@singledollarstyle \LWR@singledollardepthstyle]% CSS
|
|
}{% not dynamic math
|
|
\LWR@traceinfo{subsingledollar: static}%
|
|
\IfValueTF{#1}{% #1 True
|
|
\LWR@findcurrenttextcolor% sets \LWR@tempcolor
|
|
\ifbool{LWR@xfakebold}%
|
|
{\def\LWR@tempone{Y}}%
|
|
{\def\LWR@tempone{N}}%
|
|
\begin{lateximage}*% use hashing
|
|
[#2]% alt
|
|
*% do not add open/closing braces
|
|
[% addl' hashing
|
|
#3%
|
|
FM\LWR@f@family%
|
|
SR\LWR@f@series%
|
|
SH\LWR@f@shape%
|
|
SHC\LWR@f@shapecaps%
|
|
CL\LWR@tempcolor%
|
|
FB\LWR@tempone% xfakebold
|
|
]%
|
|
[\LWR@singledollarstyle \LWR@singledollardepthstyle]% CSS
|
|
}{% #1 False
|
|
\begin{lateximage}% no hashing
|
|
[#2]% alt
|
|
[]% no add'l hashing
|
|
[\LWR@singledollarstyle \LWR@singledollardepthstyle]% CSS
|
|
}%
|
|
}% not dynamic math
|
|
\LWR@addbaselinemarker%
|
|
\LWR@applyxfakebold%
|
|
\usebox{\LWR@singledollarbox}%
|
|
\LWR@addbaselinemarker%
|
|
\end{lateximage}%
|
|
}
|
|
|
|
\newlength{\LWR@singledollarwidth}
|
|
\newlength{\LWR@singledollarheight}
|
|
\newlength{\LWR@singledollardepth}
|
|
|
|
\newsavebox{\LWR@singledollarbox}
|
|
|
|
\NewDocumentCommand{\LWR@subsingledollar}{s m m m}{%
|
|
\LWR@traceinfo{LWR@subsingledollar}%
|
|
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
|
|
{%
|
|
\LWR@traceinfo{LWR@subsingledollar: already in a lateximage}%
|
|
#4% contents
|
|
}%
|
|
{% not in a lateximage
|
|
\begingroup%
|
|
\LWR@applyxfakebold%
|
|
\ifboolexpr{%
|
|
(
|
|
bool{mathjax} or
|
|
( bool{FormatWP} and bool{WPMarkMath} )
|
|
) and
|
|
( not test {
|
|
\ifstrequal {#2}% from \ensuredmath
|
|
{\AltTextOpen\MathImageAltText\AltTextClose}
|
|
}
|
|
) and
|
|
( not bool{LWR@dynamicmath} )
|
|
}%
|
|
{%
|
|
\LWR@traceinfo{LWR@subsingledollar: Mathjax}%
|
|
{%
|
|
\textbackslash(%
|
|
\LWR@HTMLsanitize{#4}%
|
|
\textbackslash)%
|
|
}%
|
|
}% mathjax
|
|
{% not mathjax
|
|
\LWR@traceinfo{%
|
|
LWR@subsingledollar: NOT mathjax, or is ensuremath, or is dynamic%
|
|
}%
|
|
\LWR@subsingledollarsvg{#1}{#2}{#3}{#4}%
|
|
}% not mathjax
|
|
\endgroup%
|
|
}% not in a lateximage
|
|
\gdef\LWR@ThisAltText{}%
|
|
\LWR@traceinfo{LWR@subsingledollar: done}%
|
|
}
|
|
|
|
\LetLtxMacro\LWR@origdollar$
|
|
\LetLtxMacro\LWR@secondorigdollar$% balance for editor syntax highlighting
|
|
|
|
\LetLtxMacro\LWR@origopenparen\(
|
|
\LetLtxMacro\LWR@origcloseparen\)
|
|
\LetLtxMacro\LWR@origopenbracket\[
|
|
\LetLtxMacro\LWR@origclosebracket\]
|
|
|
|
\begingroup
|
|
\catcode`\$=\active%
|
|
\protected\gdef${\@ifnextchar$\LWR@doubledollar\LWR@singledollar}%
|
|
|
|
\protected\gdef\LWR@newsingledollar{\@ifnextchar$\LWR@doubledollar\LWR@singledollar}%
|
|
|
|
\protected\gdef\LWR@doubledollar$#1$${%
|
|
\ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
|
|
{
|
|
|
|
\textbackslash[%
|
|
\LWR@HTMLsanitize{#1}%
|
|
\textbackslash]
|
|
|
|
}% mathjax
|
|
{% not mathjax
|
|
\begin{BlockClass}{displaymath}%
|
|
\LWR@newautoidanchor%
|
|
\booltrue{LWR@indisplaymathimage}%
|
|
\begin{lateximage}%
|
|
[%
|
|
\textbackslash{[} % extra space
|
|
\LWR@HTMLsanitize{#1} % extra space
|
|
\textbackslash{]}%
|
|
]%
|
|
*% do not add open/closing braces
|
|
\LWR@applyxfakebold%
|
|
\LWR@origdollar\LWR@origdollar#1\LWR@origdollar\LWR@origdollar%
|
|
\end{lateximage}%
|
|
\end{BlockClass}%
|
|
}% not mathjax
|
|
\gdef\LWR@ThisAltText{}%
|
|
}%
|
|
\protected\gdef\LWR@singledollar#1${%
|
|
\ifbool{mathjax}{%
|
|
\LWR@subsingledollar*%
|
|
{% alt tag
|
|
\textbackslash( %
|
|
\LWR@HTMLsanitize{#1} % extra space
|
|
\textbackslash)%
|
|
}%
|
|
{singledollar}% add'l hashing
|
|
{#1}% contents
|
|
}{% not mathjax
|
|
\LWR@subsingledollar*%
|
|
{% alt tag
|
|
\textbackslash( %
|
|
\LWR@HTMLsanitize{#1} % extra space
|
|
\textbackslash)%
|
|
}%
|
|
{singledollar}% add'l hashing
|
|
{\LWR@origensuredmath{#1}}% contents
|
|
}% not mathjax
|
|
\gdef\LWR@ThisAltText{}%
|
|
}
|
|
|
|
\AtBeginDocument{
|
|
\protected\gdef\(#1\){$#1$}
|
|
\protected\gdef\[#1\]{$$#1$$}
|
|
}
|
|
|
|
\endgroup
|
|
\AtBeginDocument{
|
|
\LetLtxMacro\LWR@openbracketnormal\[
|
|
\LetLtxMacro\LWR@closebracketnormal\]
|
|
}
|
|
|
|
\LetLtxMacro\LWR@origensuredmath\@ensuredmath
|
|
|
|
\renewcommand{\@ensuredmath}[1]{%
|
|
\ifbool{mathjax}{%
|
|
\LWR@subsingledollar*{\AltTextOpen\MathImageAltText\AltTextClose}%
|
|
{%
|
|
\protect\LWR@HTMLsanitize{\detokenize\expandafter{#1}}%
|
|
}%
|
|
{%
|
|
\relax%
|
|
\LWR@origensuredmath{#1}%
|
|
}%
|
|
}{% SVG math
|
|
\ifmmode%
|
|
\LWR@origensuredmath{#1}%
|
|
\else%
|
|
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
|
|
{\LWR@origensuredmath{#1}}%
|
|
{%
|
|
\LWR@subsingledollar*%
|
|
{\AltTextOpen\MathImageAltText\AltTextClose}%
|
|
{\protect\LWR@HTMLsanitize{\detokenize\expandafter{#1}}}%
|
|
{\LWR@origensuredmath{#1}}%
|
|
}%
|
|
\fi%
|
|
}%
|
|
\gdef\LWR@ThisAltText{}%
|
|
}
|
|
|
|
\let\LWR@orig@math\math
|
|
\let\LWR@orig@endmath\endmath
|
|
\let\LWR@orig@displaymath\displaymath
|
|
\let\LWR@orig@enddisplaymath\enddisplaymath
|
|
|
|
\let\math\relax
|
|
\let\endmath\relax
|
|
\let\displaymath\relax
|
|
\let\enddisplaymath\relax
|
|
|
|
\NewEnviron{math}{\expandafter\(\BODY\)}
|
|
\NewEnviron{LWR@displaymathnormal}{\expandafter\[\BODY\]\@ignoretrue}
|
|
|
|
\LetLtxMacro\[\LWR@openbracketnormal%
|
|
\LetLtxMacro\]\LWR@closebracketnormal%
|
|
\LetLtxMacro\displaymath\LWR@displaymathnormal%
|
|
\LetLtxMacro\enddisplaymath\endLWR@displaymathnormal%
|
|
\newenvironment{LWR@displaymathother}
|
|
{%
|
|
\begin{BlockClass}{displaymath}%
|
|
\LWR@newautoidanchor%
|
|
\booltrue{LWR@indisplaymathimage}%
|
|
\begin{lateximage}%
|
|
[\MathImageAltText]%
|
|
\LWR@origdollar\LWR@origdollar%
|
|
}
|
|
{%
|
|
\LWR@origdollar\LWR@origdollar%
|
|
\end{lateximage}%
|
|
\end{BlockClass}%
|
|
}
|
|
\newenvironment{LWR@equationother}
|
|
{%
|
|
\begin{BlockClass}{displaymathnumbered}%
|
|
\LWR@newautoidanchor%
|
|
\booltrue{LWR@indisplaymathimage}%
|
|
\begin{lateximage}[\MathImageAltText]%
|
|
\LWR@origequation%
|
|
}
|
|
{%
|
|
\LWR@origendequation%
|
|
\end{lateximage}%
|
|
\end{BlockClass}%
|
|
}
|
|
|
|
\newcounter{LWR@nextequation}
|
|
\newcommand\LWR@article@theequation{\@arabic\c@equation}
|
|
|
|
\newcommand\LWR@book@theequation
|
|
{\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@equation}
|
|
|
|
\newcommand\LWR@chapter@theequation{\thechapter.\arabic{equation}}
|
|
\newcommand\LWR@section@thequation{\thesection.\arabic{equation}}
|
|
\newcommand\LWR@subsection@thequation{\thesubsection.\arabic{equation}}
|
|
|
|
\AtBeginDocument{
|
|
% default per article class:
|
|
\newcommand*{\theMathJaxsubequations}{0}
|
|
\newcommand*{\theMathJaxsection}{}
|
|
\newcommand*{\theMathJaxequation}{\arabic{equation}}
|
|
|
|
\ifdefstrequal{\theequation}{\LWR@article@theequation}
|
|
{}{
|
|
\ifdefstrequal{\theequation}{\LWR@book@theequation}{
|
|
\renewcommand*{\theMathJaxsection}{\ifnum \c@chapter>\z@ \thechapter.\fi}
|
|
}{
|
|
\ifdefstrequal{\theequation}{\LWR@subsection@thequation}{
|
|
\renewcommand*{\theMathJaxsection}{\thesubsection{}.}
|
|
}{
|
|
\ifdefstrequal{\theequation}{\LWR@section@thequation}{
|
|
\renewcommand*{\theMathJaxsection}{\thesection{}.}
|
|
}{
|
|
\ifdefstrequal{\theequation}{\LWR@chapter@theequation}{
|
|
\renewcommand*{\theMathJaxsection}{\thechapter{}.}
|
|
}{% unknown format
|
|
\PackageWarningNoLine{lwarp}
|
|
{%
|
|
Unknown equation tag format for \protect\theequation.\MessageBreak
|
|
Article-style equation numbering will be used%
|
|
}
|
|
}}}}}
|
|
}
|
|
\newcommand*{\LWR@syncmathjax}{%
|
|
\LWR@stoppars%
|
|
\InlineClass{hidden}{
|
|
\textbackslash(%
|
|
\textbackslash{}seteqnumber%
|
|
\{\theMathJaxsubequations\}%
|
|
\{\theMathJaxsection\}%
|
|
\{\theMathJaxequation\}%
|
|
\textbackslash)%
|
|
}
|
|
\LWR@startpars%
|
|
}
|
|
\NewDocumentCommand{\LWR@hidelatexequation}{m +m}{%
|
|
\LWR@stoppars
|
|
\LWR@htmlopencomment
|
|
|
|
\begingroup
|
|
\@nameuse{LWR@orig#1}
|
|
\LWR@restoreorigformatting
|
|
\booltrue{LWR@insidemathcomment}
|
|
#2
|
|
\@nameuse{LWR@origend#1}
|
|
\endgroup
|
|
|
|
\LWR@htmlclosecomment
|
|
\boolfalse{LWR@insidemathcomment}
|
|
\LWR@startpars
|
|
}
|
|
|
|
\NewDocumentCommand{\LWR@addmathjax}{m +m}{%
|
|
\LWR@origtilde\LWR@orignewline
|
|
\textbackslash{}begin\{#1\}
|
|
\LWR@HTMLsanitizeexpand{\detokenize\expandafter{#2}}
|
|
\textbackslash{}end\{#1\}
|
|
\LWR@orignewline
|
|
}
|
|
|
|
\AtBeginDocument{
|
|
\let\LWR@origequation\equation
|
|
\let\LWR@origendequation\endequation
|
|
\csletcs{LWR@origequation*}{equation*}
|
|
\csletcs{LWR@origendequation*}{endequation*}
|
|
}
|
|
\newcommand*{\LWR@doequation}[2]{%
|
|
|
|
\ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
|
|
{
|
|
\LWR@syncmathjax%
|
|
\LWR@hidelatexequation{#2}{#1}
|
|
}
|
|
{% not mathjax
|
|
\ifstrequal{#2}{equation*}{%
|
|
\begin{BlockClass}{displaymath}%
|
|
}{%
|
|
\begin{BlockClass}{displaymathnumbered}%
|
|
}%
|
|
\LWR@newautoidanchor%
|
|
\booltrue{LWR@indisplaymathimage}%
|
|
\begin{lateximage}[%
|
|
\ifstrequal{#2}{equation*}{%
|
|
\ifdefequal{\LWR@equationtag}{\theequation}{%
|
|
% no tag was given
|
|
}{%
|
|
(\LWR@equationtag) % tag was given
|
|
}%
|
|
}{%
|
|
(\LWR@equationtag) % automatic numbering
|
|
}%
|
|
\textbackslash{begin\{#2\}} % extra space
|
|
\LWR@HTMLsanitizeexpand{\detokenize\expandafter{#1}} % extra space
|
|
\textbackslash{end\{#2\}}%
|
|
]*% alt tag
|
|
\LWR@applyxfakebold%
|
|
\@nameuse{LWR@orig#2}%
|
|
#1% contents collected by \collect@body
|
|
\@nameuse{LWR@origend#2}%
|
|
\end{lateximage}%
|
|
\end{BlockClass}%
|
|
}% not mathjax
|
|
\gdef\LWR@ThisAltText{}%
|
|
}
|
|
\newcommand*{\LWR@doendequation}[1]{%
|
|
\ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
|
|
{%
|
|
\IfSubStr{\detokenize\expandafter{\BODY}}{\detokenize{note}}{%
|
|
\InlineClass{hidden}{\LWR@syncnotenumbers}%
|
|
\LWR@addmathjax{#1}{\BODY}%
|
|
\InlineClass{hidden}{\LWR@syncnotenames}%
|
|
}{%
|
|
\LWR@addmathjax{#1}{\BODY}%
|
|
}%
|
|
}{}%
|
|
|
|
\gdef\LWR@ThisAltText{}%
|
|
}
|
|
|
|
\newcommand*{\LWR@synconenotenumber}[2]{%
|
|
\textbackslash(
|
|
\textbackslash{}def\textbackslash{}#1\{#2\}
|
|
\textbackslash)
|
|
}
|
|
|
|
\newcommand*{\LWR@syncnotenumbers}{\LWR@synconenotenumber{LWRfootnote}{\thefootnote}}
|
|
|
|
\newcommand*{\LWR@synconenotename}[2]{%
|
|
\textbackslash(
|
|
\textbackslash{}def\textbackslash{}#1\{#2\}
|
|
\textbackslash)
|
|
}
|
|
|
|
\newcommand*{\LWR@syncnotenames}{\LWR@synconenotename{LWRfootnote}{\footnotename}}
|
|
|
|
\AtBeginDocument{
|
|
\let\equation\relax
|
|
\let\endequation\relax
|
|
\csletcs{equation*}{relax}
|
|
\csletcs{endequation*}{relax}
|
|
}
|
|
|
|
\AtBeginDocument{
|
|
\NewEnviron{equation}%
|
|
{\LWR@doequation{\BODY}{equation}}%
|
|
[\LWR@doendequation{equation}]
|
|
|
|
\LetLtxMacro\LWR@equationnormal\equation
|
|
\LetLtxMacro\endLWR@equationnormal\endequation
|
|
}% AtBeginDocument
|
|
|
|
\AtBeginDocument{
|
|
\NewEnviron{equation*}%
|
|
{\LWR@doequation{\BODY}{equation*}}%
|
|
[\LWR@doendequation{equation*}]
|
|
|
|
\csletcs{LWR@equationnormalstar}{equation*}
|
|
\csletcs{LWR@endequationnormalstar}{endequation*}
|
|
}% AtBeginDocument
|
|
|
|
\AtBeginDocument{
|
|
\LetLtxMacro\LWR@equationless\equation
|
|
\LetLtxMacro\endLWR@equationless\endequation
|
|
\csletcs{LWR@equationlessstar}{equation*}
|
|
\csletcs{LWR@endequationlessstar}{endequation*}
|
|
}
|
|
|
|
\newcommand*{\displaymathnormal}{%
|
|
\ifbool{LWR@origmathjax}{\booltrue{mathjax}}{\boolfalse{mathjax}}%
|
|
\LetLtxMacro\[\LWR@openbracketnormal%
|
|
\LetLtxMacro\]\LWR@closebracketnormal%
|
|
\LetLtxMacro\displaymath\LWR@displaymathnormal%
|
|
\LetLtxMacro\enddisplaymath\endLWR@displaymathnormal%
|
|
\LetLtxMacro\equation\LWR@equationnormal%
|
|
\LetLtxMacro\endequation\endLWR@equationnormal%
|
|
\csletcs{equation*}{LWR@equationnormalstar}%
|
|
\csletcs{endequation*}{LWR@endequationnormalstar}%
|
|
}
|
|
|
|
\newcommand*{\displaymathother}{%
|
|
\boolfalse{mathjax}%
|
|
\LetLtxMacro\displaymath\LWR@displaymathother%
|
|
\LetLtxMacro\enddisplaymath\endLWR@displaymathother%
|
|
\LetLtxMacro\[\LWR@displaymathother%
|
|
\LetLtxMacro\]\endLWR@displaymathother%
|
|
\LetLtxMacro\equation\LWR@equationother%
|
|
\LetLtxMacro\endequation\endLWR@equationother%
|
|
\csletcs{equation*}{displaymath}%
|
|
\csletcs{endequation*}{enddisplaymath}%
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpprint}
|
|
|
|
\newcommand*{\displaymathnormal}{}
|
|
\newcommand*{\displaymathother}{}
|
|
|
|
\end{warpprint}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newbool{LWR@amsmultline}
|
|
\boolfalse{LWR@amsmultline}
|
|
|
|
\newcommand*{\LWR@beginhideamsmath}{
|
|
\LWR@stoppars
|
|
\LWR@origtilde\LWR@orignewline
|
|
\LWR@htmlopencomment
|
|
|
|
\begingroup
|
|
\LWR@restoreorigformatting
|
|
\booltrue{LWR@insidemathcomment}
|
|
}
|
|
|
|
\newcommand*{\LWR@endhideamsmath}{
|
|
\endgroup
|
|
|
|
\LWR@htmlclosecomment
|
|
\boolfalse{LWR@insidemathcomment}
|
|
\LWR@orignewline
|
|
\LWR@startpars
|
|
}
|
|
|
|
|
|
\let\LWR@origeqnarray\eqnarray
|
|
\let\LWR@origendeqnarray\endeqnarray
|
|
\newbool{LWR@numbereqnarray}
|
|
\booltrue{LWR@numbereqnarray}
|
|
\newcommand{\LWR@eqnarrayfactor}{%
|
|
\ifboolexpr{bool{mathjax} or ( bool{FormatWP} and bool{WPMarkMath} ) }%
|
|
{%
|
|
\LWR@syncmathjax%
|
|
\boolfalse{LWR@amsmultline}%
|
|
\ifbool{LWR@numbereqnarray}%
|
|
{%
|
|
\LWR@beginhideamsmath%
|
|
\LWR@origeqnarray%
|
|
\BODY%
|
|
\LWR@origendeqnarray%
|
|
\LWR@endhideamsmath%
|
|
\LWR@addmathjax{eqnarray}{\BODY}%
|
|
}%
|
|
{% not LWR@numbereqnarray
|
|
\LWR@addmathjax{eqnarray*}{\BODY}%
|
|
}% LWR@numbereqnarray
|
|
}% mathjax
|
|
{% not mathjax
|
|
\ifbool{LWR@numbereqnarray}%
|
|
{%
|
|
\begin{BlockClass}{displaymathnumbered}%
|
|
\LWR@newautoidanchor%
|
|
\booltrue{LWR@indisplaymathimage}%
|
|
\begin{lateximage}[(\LWR@startingequationtag--\LWR@equationtag)%
|
|
\LWR@addmathjax{eqnarray}{\BODY}]*%
|
|
\LWR@applyxfakebold%
|
|
\LWR@origeqnarray%
|
|
\BODY%
|
|
\LWR@origendeqnarray%
|
|
\end{lateximage}%
|
|
\end{BlockClass}%
|
|
}%
|
|
{% not LWR@numbereqnarray
|
|
\begin{BlockClass}{displaymath}%
|
|
\LWR@newautoidanchor%
|
|
\booltrue{LWR@indisplaymathimage}%
|
|
\begin{lateximage}[\LWR@addmathjax{eqnarray*}{\BODY}]*%
|
|
\LWR@applyxfakebold%
|
|
\def\@eqncr{\nonumber\@seqncr}
|
|
\csuse{LWR@origeqnarray}%
|
|
\BODY%
|
|
\nonumber\csuse{LWR@origendeqnarray}%
|
|
\end{lateximage}%
|
|
\end{BlockClass}%
|
|
}% LWR@numbereqnarray
|
|
}% not mathjax
|
|
\booltrue{LWR@numbereqnarray}%
|
|
\gdef\LWR@ThisAltText{}%
|
|
}
|
|
\RenewEnviron{eqnarray}
|
|
{%
|
|
|
|
\LWR@eqnarrayfactor
|
|
|
|
}
|
|
\csgpreto{eqnarray*}{\boolfalse{LWR@numbereqnarray}}
|
|
\end{warpHTML}
|
|
|
|
\begin{warpHTML}
|
|
\newcounter{LWR@lateximagenumber}
|
|
\setcounter{LWR@lateximagenumber}{0}
|
|
\newcounter{LWR@lateximagedepth}
|
|
\setcounter{LWR@lateximagedepth}{0}
|
|
|
|
\edef\LWR@hashmark{\string#} % for use in \write
|
|
\edef\LWR@percent{\@percentchar} % for use in \write
|
|
\newcounter{LWR@LIpage}
|
|
\end{warpHTML}
|
|
|
|
\begin{warpall}
|
|
|
|
\newcommand*{\LateximageFontSizeName}{normalsize}
|
|
|
|
\newcommand*{\LateximageFontScale}{1}
|
|
|
|
\end{warpall}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newcounter{LWR@startingequation}
|
|
|
|
\@ifundefined{chapter}
|
|
{
|
|
\renewcommand{\theLWR@startingequation}{%
|
|
\arabic{LWR@startingequation}%
|
|
}
|
|
}
|
|
{% chapter defined
|
|
\renewcommand{\theLWR@startingequation}{%
|
|
\ifnumcomp{\value{chapter}}{>}{0}{\arabic{chapter}.}{}%
|
|
\arabic{LWR@startingequation}%
|
|
}
|
|
}
|
|
|
|
\newbool{LWR@isstartingequation}
|
|
|
|
\let\LWR@startingequationtag\theLWR@startingequation
|
|
|
|
\newcommand*{\LWR@equationtag}{}
|
|
|
|
\AtBeginDocument{
|
|
|
|
\ifbool{mathjax}{}{% not mathjax
|
|
|
|
\NewDocumentCommand{\LWR@remembertag}{m}{%
|
|
\ifbool{LWR@isstartingequation}%
|
|
{%
|
|
\global\boolfalse{LWR@isstartingequation}%
|
|
\xdef\LWR@startingequationtag{#1}%
|
|
}{}%
|
|
\xdef\LWR@equationtag{#1}%
|
|
}%
|
|
|
|
}% not mathjax
|
|
}% AtBeginDocument
|
|
|
|
|
|
\newcommand*{\LWR@amsmathbody}[1]
|
|
{%
|
|
\textbackslash\{begin\}\{#1\} % extra space
|
|
\LWR@HTMLsanitizeexpand{\detokenize\expandafter{\the\@envbody}}%
|
|
\textbackslash\{end\}\{#1\}%
|
|
}
|
|
|
|
\newcommand*{\LWR@amsmathbodynumbered}[1]
|
|
{%
|
|
\ifnumcomp{\value{LWR@startingequation}}{=}{\value{equation}}%
|
|
{(\LWR@equationtag)}%
|
|
{(\LWR@startingequationtag--\LWR@equationtag)} % extra space
|
|
\LWR@amsmathbody{#1} % extra space
|
|
}
|
|
|
|
|
|
\newcommand{\LWR@lateximage@oneimageb}[3]{%
|
|
\LWR@subinlineimage{#1}{lateximage}%
|
|
{%
|
|
\LWR@print@mbox{%
|
|
\LWR@ImagesDirectory\OSPathSymbol%
|
|
#2%
|
|
}%
|
|
}{svg}{#3}%
|
|
}
|
|
|
|
\newcommand{\LWR@lateximage@oneimage}[4]{%
|
|
\ifdefvoid{\LWR@ThisAltText}{%
|
|
\IfBooleanTF{#4}{%
|
|
\LWR@lateximage@oneimageb{#1}{#2}{#3}%
|
|
}{%
|
|
\LWR@lateximage@oneimageb%
|
|
{\AltTextOpen#1\AltTextClose}%
|
|
{#2}{#3}%
|
|
}%
|
|
}{%
|
|
\LWR@lateximage@oneimageb%
|
|
{\AltTextOpen\LWR@ThisAltText\AltTextClose}%
|
|
{#2}{#3}%
|
|
}%
|
|
}
|
|
|
|
\catcode`\$=\active%
|
|
|
|
\NewDocumentEnvironment{lateximage}{s O{\ImageAltText} s O{} O{}}
|
|
{%
|
|
\LWR@traceinfo{lateximage: starting on \jobname.pdf page \arabic{page}}%
|
|
\LWR@traceinfo{lateximage: entering depth is \arabic{LWR@lateximagedepth}}%
|
|
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{0}%
|
|
{%
|
|
\global\advance\c@LWR@lateximagedepth 1\relax% Due to AmS \text macro.
|
|
}%
|
|
{% start of outer-most lateximage
|
|
\LWR@traceinfo{lateximage: starting outer-most lateximage}%
|
|
\setcounter{LWR@startingequation}{\value{equation}}%
|
|
\addtocounter{LWR@startingequation}{1}%
|
|
\booltrue{LWR@isstartingequation}%
|
|
\let\LWR@startingequationtag\theLWR@startingequation%
|
|
\let\LWR@equationtag\theequation%
|
|
\addtocounter{LWR@lateximagenumber}{1}%
|
|
\LWR@traceinfo{lateximage: LWR@lateximagenumber is \arabic{LWR@lateximagenumber}}%
|
|
\boolfalse{mathjax}%
|
|
\LWR@ensuredoingapar%
|
|
\addtocounter{LWR@externalfilecnt}{1}%
|
|
\LWR@traceinfo{lateximage: LWR@externalfilecnt is \arabic{LWR@externalfilecnt}}%
|
|
\setcounterpageref{LWR@LIpage}{%
|
|
LWRlateximage-\BaseJobname-\arabic{LWR@lateximagenumber}%
|
|
}%
|
|
\LWR@traceinfo{lateximage: LWR@LIpage is \arabic{LWR@LIpage}}%
|
|
\LWR@htmltag{span\LWR@indentHTML%
|
|
id="lateximage-\BaseJobname-\arabic{LWR@lateximagenumber}"\LWR@indentHTML
|
|
class="lateximagesource"\LWR@orignewline
|
|
}%
|
|
\LWR@traceinfo{lateximage: about to write to \BaseJobname-images.txt}%
|
|
\IfBooleanTF{#1}% starred
|
|
{% hash
|
|
\ifdefvoid{\LWR@ThisAltText}{%
|
|
\IfBooleanTF{#3}{%
|
|
\edef\LWR@hashedname{%
|
|
\LWR@mdfive{\detokenize\expandafter{#2}-!-#4}%
|
|
}%
|
|
}{%
|
|
\edef\LWR@hashedname{%
|
|
\LWR@mdfive{\detokenize\expandafter{\AltTextOpen#2\AltTextClose}-!-#4}%
|
|
}%
|
|
}%
|
|
}{%
|
|
\edef\LWR@hashedname{%
|
|
\LWR@mdfive{\detokenize\expandafter{\AltTextOpen\LWR@ThisAltText\AltTextClose}-!-#4}%
|
|
}%
|
|
}%
|
|
\LWR@traceinfo{lateximage: hash is \LWR@hashedname}%
|
|
\immediate\write\LWR@lateximagesfile{%
|
|
|\arabic{LWR@LIpage}|true|\LWR@hashedname|%
|
|
}%
|
|
}% hash
|
|
{% no hash
|
|
\LWR@traceinfo{lateximage: hash false}%
|
|
\immediate\write\LWR@lateximagesfile{%
|
|
|\arabic{LWR@LIpage}|false|\LWR@ImagesName\arabic{LWR@externalfilecnt}|%
|
|
}%
|
|
}% no hash
|
|
\LWR@traceinfo{lateximage: about to create open comment}%
|
|
\LWR@htmlopencomment%
|
|
\addtocounter{LWR@lateximagedepth}{1}%
|
|
\LWR@traceinfo{lateximage: about to create a new page}%
|
|
\LWR@maybe@orignewpage%
|
|
\LWR@traceinfo{lateximage: about to create minipage}%
|
|
\ifdimless{\linewidth}{6in}{%
|
|
\LWR@print@minipage{\linewidth}%
|
|
}{%
|
|
\LWR@print@minipage{6in}%
|
|
}%
|
|
\@nameuse{LWR@print@\LateximageFontSizeName}%
|
|
\LWR@traceinfo{lateximage: about to temporarily restore formatting}%
|
|
\LWR@restoreorigformatting%
|
|
\def\@mpfn{footnote}%
|
|
\def\thempfn{\thefootnote}%
|
|
\LetLtxMacro\@footnotetext\LWR@footnotetext%
|
|
\LWR@traceinfo{lateximage: about to create label}%
|
|
\LWR@orig@label{LWRlateximage-\BaseJobname-\arabic{LWR@lateximagenumber}}%
|
|
\LWR@traceinfo{lateximage: finished creating the label}%
|
|
\ifdefvoid{\LWR@ruleHTMLcolor}{}{%
|
|
\LWR@print@arrayrulecolor[HTML]{\LWR@ruleHTMLcolor}%
|
|
}%
|
|
\LetLtxMacro$\LWR@origdollar%
|
|
\catcode`\$=3% math shift
|
|
\LetLtxMacro\(\LWR@origopenparen%
|
|
\LetLtxMacro\)\LWR@origcloseparen%
|
|
\ifbool{LWR@indisplaymathimage}{}{% not in display math
|
|
\LetLtxMacro\[\LWR@origopenbracket%
|
|
\LetLtxMacro\]\LWR@origclosebracket%
|
|
\let\equation\LWR@origequation%
|
|
\let\endequation\LWR@origendequation%
|
|
\csletcs{equation*}{LWR@origequation*}%
|
|
\csletcs{endequation*}{LWR@origendequation*}%
|
|
}% not in display math
|
|
\LetLtxMacro\LWR@newsingledollar$%
|
|
\LetLtxMacro\LWR@newsingledollar$% syntax highlighting
|
|
}% end of outer-most lateximage
|
|
\LWR@traceinfo{lateximage: finished start of environment}%
|
|
}% end of \begin{lateximage}
|
|
{% start of \end{lateximage}
|
|
\LWR@traceinfo{lateximage: starting end of lateximage}%
|
|
\LWR@traceinfo{lateximage: internal depth was \arabic{LWR@lateximagedepth}}%
|
|
\ifnumcomp{\value{LWR@lateximagedepth}}{>}{1}%
|
|
{%
|
|
\LWR@traceinfo{lateximage: unnesting}%
|
|
\global\advance\c@LWR@lateximagedepth -1\relax%
|
|
}%
|
|
{% end of outer-most lateximage
|
|
\LWR@traceinfo{lateximage: ending outer-most lateximage}%
|
|
\endLWR@print@minipage%
|
|
\LWR@maybe@orignewpage%
|
|
\LWR@print@vspace*{.5\baselineskip}%
|
|
\LWR@htmlclosecomment%
|
|
\LWR@traceinfo{lateximage: The page after the image is \arabic{page}}%
|
|
\IfBooleanTF{#1}% starred
|
|
{% hash
|
|
\LWR@lateximage@oneimage{#2}{\LWR@hashedname}{#5}{#3}%
|
|
}% hash
|
|
{% no hash
|
|
\LWR@lateximage@oneimage{#2}{\LWR@ImagesName\theLWR@externalfilecnt}{#5}{#3}%
|
|
}% no hash
|
|
\LWR@ensuredoingapar%
|
|
\LWR@htmltag{/span}%
|
|
\ifbool{HTMLDebugComments}{%
|
|
\LWR@htmlcomment{End of lateximage}%
|
|
}{}%
|
|
\addtocounter{LWR@lateximagedepth}{-1}%
|
|
\gdef\LWR@ThisAltText{}%
|
|
}% end of outer-most lateximage
|
|
\LWR@traceinfo{lateximage: exiting depth is \arabic{LWR@lateximagedepth}}%
|
|
\LWR@traceinfo{lateximage: done}%
|
|
}%
|
|
\catcode`\$=3% math shift
|
|
\end{warpHTML}
|
|
|
|
\begin{warpprint}
|
|
|
|
\NewDocumentEnvironment{lateximage}{s o s o o}
|
|
{\begin{varwidth}[b]{\linewidth}}
|
|
{\end{varwidth}}
|
|
|
|
\end{warpprint}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newenvironment*{LWR@HTML@center}
|
|
{
|
|
\LWR@forcenewpage
|
|
\ifbool{FormatWP}
|
|
{\BlockClass[\LWR@print@mbox{text-align:center}]{center}}
|
|
{\BlockClass{center}}
|
|
}
|
|
{\endBlockClass}
|
|
|
|
\LWR@formattedenv{center}
|
|
|
|
\newenvironment*{LWR@HTML@flushright}
|
|
{
|
|
\LWR@forcenewpage
|
|
\ifbool{FormatWP}
|
|
{\BlockClass[\LWR@print@mbox{text-align:right}]{flushright}}
|
|
{\BlockClass{flushright}}
|
|
}
|
|
{\endBlockClass}
|
|
|
|
\LWR@formattedenv{flushright}
|
|
|
|
\newenvironment*{LWR@HTML@flushleft}
|
|
{
|
|
\LWR@forcenewpage
|
|
\ifbool{FormatWP}
|
|
{\BlockClass[\LWR@print@mbox{text-align:left}]{flushleft}}
|
|
{\BlockClass{flushleft}}
|
|
}
|
|
{\endBlockClass}
|
|
|
|
\LWR@formattedenv{flushleft}
|
|
|
|
|
|
\newcommand*{\LWR@HTML@centering}{%
|
|
\ifbool{HTMLDebugComments}{%
|
|
\LWR@htmlcomment{centering}%
|
|
}{}%
|
|
}
|
|
\LWR@formatted{centering}
|
|
|
|
\newcommand*{\LWR@HTML@raggedleft}{%
|
|
\ifbool{HTMLDebugComments}{%
|
|
\LWR@htmlcomment{raggedleft}%
|
|
}{}%
|
|
}
|
|
\LWR@formatted{raggedleft}
|
|
|
|
\newcommand*{\LWR@HTML@raggedright}{%
|
|
\ifbool{HTMLDebugComments}{%
|
|
\LWR@htmlcomment{raggedright}%
|
|
}{}%
|
|
}
|
|
\LWR@formatted{raggedright}
|
|
|
|
\renewcommand{\leftline}[1]{\begin{flushleft}#1\end{flushleft}}
|
|
|
|
\renewcommand{\centerline}[1]{\begin{center}#1\end{center}}
|
|
|
|
\renewcommand{\rightline}[1]{\begin{flushright}#1\end{flushright}}
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpHTML}
|
|
\newcommand*{\LWR@PreloadedPackage}[1]{%
|
|
\@ifpackageloaded{#1}%
|
|
{%
|
|
\AtBeginDocument{
|
|
\LWR@origRequirePackage{lwarp-#1}%
|
|
}
|
|
}%
|
|
{}%
|
|
}
|
|
|
|
\LWR@PreloadedPackage{inputtrc}
|
|
|
|
\LWR@PreloadedPackage{textcomp}
|
|
|
|
\LWR@PreloadedPackage{xunicode}
|
|
|
|
\LWR@PreloadedPackage{graphics}
|
|
\LWR@PreloadedPackage{graphicx}
|
|
|
|
\LWR@PreloadedPackage{fontaxes}
|
|
|
|
\LWR@PreloadedPackage{nfssext-cfr}
|
|
|
|
\LWR@PreloadedPackage{ulem}
|
|
|
|
\LWR@PreloadedPackage{xetexko-vertical}
|
|
|
|
\LWR@PreloadedPackage{geometry}
|
|
|
|
\LWR@PreloadedPackage{plext}
|
|
|
|
\LWR@PreloadedPackage{stfloats}
|
|
|
|
\LWR@PreloadedPackage{lltjext}
|
|
|
|
\LWR@PreloadedPackage{luatexko}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newrobustcmd{\LWR@siunitx@textcelsius}{\HTMLentity{deg}C}
|
|
\newrobustcmd{\LWR@siunitx@textdegree}{\HTMLentity{deg}}
|
|
\newrobustcmd{\LWR@siunitx@textprime}{\HTMLunicode{2032}}
|
|
\newrobustcmd{\LWR@siunitx@textdblprime}{\HTMLunicode{2033}}
|
|
\newrobustcmd{\LWR@siunitx@textplanckbar}{\text{\textit{\HTMLunicode{0127}}}}
|
|
|
|
\appto\LWR@restoreorigformatting{%
|
|
\renewrobustcmd{\LWR@siunitx@textcelsius}{\text{\ensuremath{^\circ}C}}%
|
|
\renewrobustcmd{\LWR@siunitx@textdegree}{\text{\ensuremath{^\circ}}}%
|
|
\renewrobustcmd{\LWR@siunitx@textprime}{\text{\ensuremath{^\prime}}}%
|
|
\renewrobustcmd{\LWR@siunitx@textdblprime}{\text{\ensuremath{^{\prime\prime}}}}%
|
|
\renewrobustcmd{\LWR@siunitx@textplanckbar}{\text{\ensuremath{\hbar}}}%
|
|
}
|
|
|
|
\PassOptionsToPackage{
|
|
detect-mode=true,
|
|
per-mode=symbol, % fraction is not seen by pdftotext
|
|
text-celsius = {\LWR@siunitx@textcelsius},
|
|
text-degree = {\LWR@siunitx@textdegree},
|
|
text-arcminute = {\LWR@siunitx@textprime} ,
|
|
text-arcsecond = {\LWR@siunitx@textdblprime} ,
|
|
}{siunitx}
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpprint}
|
|
\define@key{Gin}{class}{}
|
|
\define@key{Gin}{alt}{}
|
|
\AtBeginDocument{
|
|
\@ifpackageloaded{overpic}{
|
|
\newcommand*{\overpicfontsize}{12}
|
|
\newcommand*{\overpicfontskip}{14}
|
|
}{}
|
|
}
|
|
\end{warpprint}
|
|
|
|
\begin{warpall}
|
|
\AtBeginDocument{
|
|
\@ifpackageloaded{xcolor}{
|
|
\LWR@traceinfo{patching xcolor}
|
|
\LetLtxMacro\colorboxBlock\colorbox
|
|
\LetLtxMacro\LWR@orig@print@fcolorbox\fcolorbox
|
|
|
|
\newsavebox{\LWR@colorminipagebox}
|
|
|
|
\NewDocumentCommand{\LWR@print@fcolorbox}{o m o m +m}{%
|
|
\LWR@traceinfo{LWR@print@fcolorbox #2 #4}%
|
|
\begin{lrbox}{\LWR@colorminipagebox}%
|
|
#5%
|
|
\end{lrbox}%
|
|
\ifstrequal{#4}{none}%
|
|
{% #4 none
|
|
\LWR@traceinfo{background is none}%
|
|
{% scope the \colorlet
|
|
\colorlet{LWR@currentcolor}{.}%
|
|
\color{#2}%
|
|
\fbox{%
|
|
\color{LWR@currentcolor}%
|
|
\usebox{\LWR@colorminipagebox}%
|
|
}% fbox
|
|
}% colorlet
|
|
}% #4 none
|
|
{% #4 not none
|
|
\LWR@traceinfo{background not none}%
|
|
\IfValueTF{#1}%
|
|
{%
|
|
\IfValueTF{#3}%
|
|
{\LWR@orig@print@fcolorbox[#1]{#2}[#3]{#4}{\usebox{\LWR@colorminipagebox}}}%
|
|
{\LWR@orig@print@fcolorbox[#1]{#2}{#4}{\usebox{\LWR@colorminipagebox}}}%
|
|
}%
|
|
{% no value #1
|
|
\IfValueTF{#3}%
|
|
{\LWR@orig@print@fcolorbox{#2}[#3]{#4}{\usebox{\LWR@colorminipagebox}}}%
|
|
{\LWR@orig@print@fcolorbox{#2}{#4}{\usebox{\LWR@colorminipagebox}}}%
|
|
}% no value #1
|
|
}% #4 not none
|
|
\LWR@traceinfo{LWR@print@fcolorbox done}%
|
|
}
|
|
\renewrobustcmd*{\fcolorbox}{\LWR@print@fcolorbox}%
|
|
\newcommand*{\LWR@print@fcolorboxBlock}{\LWR@print@fcolorbox}
|
|
|
|
\newrobustcmd*{\fcolorboxBlock}{\LWR@print@fcolorboxBlock}
|
|
|
|
\NewDocumentEnvironment{LWR@print@fcolorminipage}{o m o m O{c} O{} o m}
|
|
{%
|
|
\LWR@traceinfo{*** fcolorminipage: #2 #4 #8}%
|
|
\begin{lrbox}{\LWR@colorminipagebox}%
|
|
\IfValueTF{#7}%
|
|
{\begin{minipage}[#5][#6][#7]{#8}}%
|
|
{\begin{minipage}[#5][#6][#5]{#8}}%
|
|
}%
|
|
{%
|
|
\end{minipage}%
|
|
\end{lrbox}%
|
|
\LWR@traceinfo{*** starting end fcolorminipage #1 #2 #3 #4 #8}%
|
|
\ifstrequal{#4}{none}%
|
|
{% #4 none
|
|
{% scope the \colorlet
|
|
\colorlet{LWR@currentcolor}{.}%
|
|
\color{#2}%
|
|
\fbox{%
|
|
\color{LWR@currentcolor}%
|
|
\usebox{\LWR@colorminipagebox}%
|
|
}% fbox
|
|
}% colorlet
|
|
}% #4 none
|
|
{% #4 not none
|
|
\IfValueTF{#1}%
|
|
{%
|
|
\IfValueTF{#3}%
|
|
{\LWR@orig@print@fcolorbox[#1]{#2}[#3]{#4}{\usebox{\LWR@colorminipagebox}}}%
|
|
{\LWR@orig@print@fcolorbox[#1]{#2}{#4}{\usebox{\LWR@colorminipagebox}}}%
|
|
}%
|
|
{% no value #1
|
|
\IfValueTF{#3}%
|
|
{\LWR@orig@print@fcolorbox{#2}[#3]{#4}{\usebox{\LWR@colorminipagebox}}}%
|
|
{\LWR@orig@print@fcolorbox{#2}{#4}{\usebox{\LWR@colorminipagebox}}}%
|
|
}% no value #1
|
|
}% #4 not none
|
|
\LWR@traceinfo{*** finished end fcolorminipage}%
|
|
}
|
|
|
|
\NewDocumentEnvironment{fcolorminipage}{}
|
|
{\LWR@print@fcolorminipage}
|
|
{\endLWR@print@fcolorminipage}
|
|
|
|
\LWR@traceinfo{xcolor patches done}
|
|
}{}% xcolor loaded
|
|
}% AtBeginDocument
|
|
\end{warpall}
|
|
|
|
\begin{warpprint}
|
|
|
|
\AtBeginDocument{
|
|
\@ifpackageloaded{chemmacros}{
|
|
\DeclareDocumentEnvironment{polymerdelims}{}
|
|
{}{}
|
|
|
|
\DeclareDocumentEnvironment{redoxreaction}{m m}
|
|
{\rule{0pt}{#1}}{\rule[-#2]{0pt}{#2}}
|
|
}{}% chemmacros
|
|
}% AtBeginDocument
|
|
|
|
\end{warpprint}
|
|
|
|
\begin{warpHTML}
|
|
|
|
\AtEndPreamble{
|
|
\RequirePackage{cleveref}
|
|
}
|
|
|
|
\end{warpHTML}
|
|
\begin{warpHTML}
|
|
|
|
\LetLtxMacro\LWR@orig@label\label% includes memoir, before cleveref
|
|
\LetLtxMacro\label\LWR@new@label
|
|
|
|
\LetLtxMacro\LWR@orig@pageref\pageref
|
|
\LetLtxMacro\pageref\LWR@new@pageref
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\BeforeBeginEnvironment{picture}{\begin{lateximage}[picture]}
|
|
|
|
\AfterEndEnvironment{picture}{\end{lateximage}}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newlength{\LWR@minipagewidth}
|
|
\newlength{\LWR@minipageheight}
|
|
\newcounter{LWR@virtualpagedepth}
|
|
\setcounter{LWR@virtualpagedepth}{0}
|
|
\NewDocumentEnvironment{LWR@setvirtualpage}{s O{1}}{%
|
|
\ifnumequal{\value{LWR@virtualpagedepth}}{0}{%
|
|
\IfBooleanT{#1}{\LWR@maybe@orignewpage}%
|
|
\setlength{\linewidth}{6in/#2}%
|
|
\setlength{\textwidth}{6in}%
|
|
\setlength{\textheight}{9in}%
|
|
}{}%
|
|
\addtocounter{LWR@virtualpagedepth}{1}%
|
|
}
|
|
{\addtocounter{LWR@virtualpagedepth}{-1}}
|
|
\newbool{LWR@minipagefullwidth}
|
|
\boolfalse{LWR@minipagefullwidth}
|
|
\newbool{LWR@forceminipagefullwidth}
|
|
\boolfalse{LWR@forceminipagefullwidth}
|
|
\newcommand*{\minipagefullwidth}{\global\booltrue{LWR@minipagefullwidth}}
|
|
\newcommand*{\UseMinipageWidths}{\boolfalse{LWR@forceminipagefullwidth}}
|
|
\newcommand*{\IgnoreMinipageWidths}{\booltrue{LWR@forceminipagefullwidth}}
|
|
\end{warpHTML}
|
|
\begin{warpprint}
|
|
\newcommand*{\minipagefullwidth}{}
|
|
\newcommand*{\UseMinipageWidths}{}
|
|
\newcommand*{\IgnoreMinipageWidths}{}
|
|
\end{warpprint}
|
|
\begin{warpHTML}
|
|
\newbool{LWR@minipagethispar}
|
|
\boolfalse{LWR@minipagethispar}
|
|
\NewDocumentEnvironment{LWR@HTML@sub@minipage}{m m m m}
|
|
{%
|
|
\LWR@traceinfo{minipage}%
|
|
\begin{LWR@setvirtualpage}*%
|
|
\setlength{\LWR@minipagewidth}{#4}%
|
|
\ifnumequal{\value{LWR@virtualpagedepth}}{1}{%
|
|
\addtolength{\LWR@minipagewidth}{3em}% room for frames
|
|
}{}%
|
|
\LWR@traceinfo{computed width is \LWR@printlength{\LWR@minipagewidth}}%
|
|
\setlength{\LWR@minipageheight}{\textheight}% default unless specified
|
|
\ifblank{#2}{}{\setlength{\LWR@minipageheight}{#2}}%
|
|
\ifbool{FormatWP}{\newline}{}%
|
|
\LWR@stoppars%
|
|
\ifbool{FormatWP}{%
|
|
|
|
\addtocounter{LWR@thisautoidWP}{1}%
|
|
\LWR@htmltag{%
|
|
div id="\LWR@print@mbox{autoidWP-\arabic{LWR@thisautoidWP}}" %
|
|
class="wpminipage"%
|
|
}%
|
|
|
|
}{}%
|
|
\LWR@traceinfo{minipage: creating div class}%
|
|
\LWR@htmltag{div class="minipage" style="%
|
|
\ifthenelse{\equal{#1}{t}}{\LWR@print@mbox{vertical-align:bottom} ; }{}%
|
|
\ifthenelse{\equal{#1}{c}}{\LWR@print@mbox{vertical-align:middle} ; }{}%
|
|
\ifthenelse{\equal{#1}{b}}{\LWR@print@mbox{vertical-align:top} ; }{}%
|
|
\ifthenelse{\equal{#3}{t}}{\LWR@print@mbox{justify-content:flex-start} ; }{}%
|
|
\ifthenelse{\equal{#3}{c}}{\LWR@print@mbox{justify-content:center} ; }{}%
|
|
\ifthenelse{\equal{#3}{b}}{\LWR@print@mbox{justify-content:flex-end} ; }{}%
|
|
\ifthenelse{\equal{#3}{s}}{\LWR@print@mbox{justify-content:space-between} ; }{}%
|
|
\LWR@traceinfo{minipage: about to print the width of \LWR@printlength{\LWR@minipagewidth}}%
|
|
\ifbool{LWR@minipagefullwidth}%
|
|
{\global\boolfalse{LWR@minipagefullwidth}}%
|
|
{%
|
|
\ifbool{LWR@forceminipagefullwidth}%
|
|
{}%
|
|
{%
|
|
\ifdimequal{#4}{\linewidth}%
|
|
{}%
|
|
{width:\LWR@printlength{\LWR@minipagewidth} ; }%
|
|
}%
|
|
}%
|
|
\LWR@traceinfo{minipage: about to print the height}%
|
|
\ifblank{#2}{}{height:\LWR@printlength{\LWR@minipageheight} ; }%
|
|
"}%
|
|
|
|
\ifnumequal{\value{LWR@virtualpagedepth}}{1}{%
|
|
\addtolength{\LWR@minipagewidth}{-3em}% undo frame padding
|
|
}{}%
|
|
\setlength{\linewidth}{\LWR@minipagewidth}%
|
|
\LWR@print@raggedright%
|
|
\def\@mpfn{mpfootnote}%
|
|
\def\thempfn{\thempfootnote}\c@mpfootnote\z@%
|
|
\let\@footnotetext\@mpfootnotetext%
|
|
\LWR@startpars%
|
|
\ifboolexpr{bool{FormatWP} and bool{WPMarkMinipages}}{%
|
|
|
|
=== begin minipage ===
|
|
|
|
}{}%
|
|
\LWR@traceinfo{minipage: finished starting the minipage}%
|
|
}% finished \minipage
|
|
{% \endminipage
|
|
\LWR@printpendingmpfootnotes%
|
|
\ifboolexpr{bool{FormatWP} and bool{WPMarkMinipages}}{%
|
|
|
|
=== end minipage ===
|
|
|
|
}{}%
|
|
\LWR@stoppars%
|
|
|
|
\ifbool{FormatWP}{%
|
|
|
|
\LWR@htmlelementend{div}%
|
|
|
|
}{}%
|
|
\LWR@htmldivclassend{minipage}%
|
|
|
|
\end{LWR@setvirtualpage}%
|
|
\LWR@startpars%
|
|
\ifbool{FormatWP}{\newline}{}%
|
|
\global\booltrue{LWR@minipagethispar}%
|
|
\LWR@traceinfo{LWR@minipage: done}%
|
|
}
|
|
|
|
\NewDocumentEnvironment{LWR@HTML@minipage}{O{t} O{} O{t} m}
|
|
{\LWR@HTML@sub@minipage{#1}{#2}{#3}{#4}}
|
|
{\endLWR@HTML@sub@minipage}
|
|
|
|
\LWR@formattedenv{minipage}
|
|
\NewDocumentCommand{\LWR@HTML@parbox}{O{t} O{} O{t} m +m}
|
|
{
|
|
\LWR@traceinfo{parbox of width #4}%
|
|
\begin{minipage}[#1][#2][#3]{#4}%
|
|
#5
|
|
\end{minipage}%
|
|
}
|
|
|
|
\LWR@formatted{parbox}
|
|
\newcommand*{\LWR@HTML@mbox}[1]{#1}
|
|
|
|
\LWR@formatted{mbox}
|
|
\NewDocumentCommand{\LWR@@makebox@paren}{m m}{%
|
|
\IfValueTF{#2}{%
|
|
\setlength{\LWR@tempwidth}{#1\unitlength}%
|
|
\setlength{\LWR@tempheight}{#2\unitlength}%
|
|
\appto{\LWR@temptwo}{%
|
|
\LWR@print@mbox{width:\LWR@printlength{\LWR@tempwidth}} ; % space
|
|
\LWR@print@mbox{height:\LWR@printlength{\LWR@tempheight}} ; % space
|
|
}%
|
|
}{%
|
|
\PackageError{lwarp}%
|
|
{(width,height) is missing a comma ',' character}%
|
|
{\protect\makebox\space and \protect\framebox\space accept
|
|
a size in the format (width,height).}%
|
|
}%
|
|
}
|
|
\newcommand*{\LWR@@makebox@align}[1]{%
|
|
\def\LWR@align{center}%
|
|
\ifstrequal{#1}{l}{\def\LWR@align{left}}{}%
|
|
\ifstrequal{#1}{r}{\def\LWR@align{right}}{}%
|
|
\ifstrequal{#1}{s}{\def\LWR@align{justify}}{}%
|
|
\appto{\LWR@temptwo}{%
|
|
\LWR@print@mbox{text-align:\LWR@align} ; %
|
|
}%
|
|
}
|
|
\NewDocumentCommand{\LWR@HTML@makebox}{>{\SplitArgument{1}{,}}d() o o +m}{%
|
|
\begin{LWR@setvirtualpage}%
|
|
\def\LWR@temptwo{}%
|
|
\IfValueTF{#1}%
|
|
{% (width,height) ..
|
|
\LWR@@makebox@paren #1%
|
|
\IfValueT{#2}%
|
|
{% (width,height) [posn]
|
|
\LWR@@makebox@align{#2}%
|
|
}%
|
|
}%
|
|
{% [width]
|
|
\IfValueT{#2}% [width]
|
|
{%
|
|
\setlength{\LWR@tempwidth}{#2}%
|
|
\ifdimgreater{\LWR@tempwidth}{0pt}{%
|
|
\appto{\LWR@temptwo}{%
|
|
width:\LWR@printlength{\LWR@tempwidth} ; % space
|
|
}%
|
|
}{}%
|
|
}%
|
|
}%
|
|
\IfValueT{#3}%
|
|
{% [width] [posn]
|
|
\LWR@@makebox@align{#3}%
|
|
}%
|
|
\InlineClass[%
|
|
\LWR@print@mbox{display:inline-block} ; %
|
|
\LWR@temptwo%
|
|
]%
|
|
{makebox}%
|
|
{#4}%
|
|
\end{LWR@setvirtualpage}%
|
|
}
|
|
\LWR@formatted{makebox}
|
|
\NewDocumentCommand{\LWR@HTML@framebox}{d() o o +m}{%
|
|
\fbox{\makebox(#1)[#2][#3]{#4}}%
|
|
}
|
|
|
|
\LWR@formatted{framebox}
|
|
\newlength{\LWR@atleastonept}
|
|
|
|
\newcommand*{\LWR@forceminwidth}[1]{%
|
|
\setlength{\LWR@atleastonept}{#1}%
|
|
\ifthenelse{%
|
|
\lengthtest{\LWR@atleastonept>0pt}\AND%
|
|
\lengthtest{\LWR@atleastonept<1pt}%
|
|
}%
|
|
{\setlength{\LWR@atleastonept}{1pt}}%
|
|
{}%
|
|
}
|
|
|
|
\newcommand*{\LWR@fboxstyle}{%
|
|
\LWR@findcurrenttextcolor%
|
|
border:\LWR@printlength{\LWR@atleastonept} solid \LWR@origpound\LWR@tempcolor ; %
|
|
padding:\LWR@printlength{\fboxsep} ; %
|
|
color:\LWR@origpound\LWR@tempcolor%
|
|
}
|
|
\newcommand{\LWR@HTML@fbox}[1]{%
|
|
\LWR@traceinfo{HTML fbox}%
|
|
\LWR@forceminwidth{\fboxrule}%
|
|
\InlineClass[%
|
|
\LWR@print@mbox{display:inline-block} ; %
|
|
\LWR@fboxstyle%
|
|
]{fbox}{#1}%
|
|
}
|
|
\AtBeginDocument{\LWR@formatted{fbox}}
|
|
\end{warpHTML}
|
|
\begin{warpall}
|
|
\let\fboxBlock\fbox
|
|
\end{warpall}
|
|
|
|
\begin{warpHTML}
|
|
\newcommand{\LWR@HTML@fboxBlock}[1]{%
|
|
\LWR@forceminwidth{\fboxrule}%
|
|
\LWR@stoppars%
|
|
\begin{BlockClass}[%
|
|
\LWR@fboxstyle%
|
|
]{fboxBlock}
|
|
#1
|
|
\end{BlockClass}
|
|
\LWR@startpars%
|
|
}
|
|
|
|
\LWR@formatted{fboxBlock}
|
|
|
|
\end{warpHTML}
|
|
\begin{warpall}
|
|
|
|
\newsavebox{\LWR@fminipagebox}
|
|
|
|
\NewDocumentEnvironment{LWR@print@fminipage}{O{t} o O{t} m}
|
|
{%
|
|
\IfValueTF{#3}%
|
|
{\def\LWR@thisalign{#3}}
|
|
{\def\LWR@thisalign{#1}}%
|
|
\IfValueTF{#2}%
|
|
{\minipage[#1][#2+2\fboxsep+2\fboxrule][\LWR@thisalign]{#4+2\fboxsep+2\fboxrule}}%
|
|
{\minipage[#1]{#4+2\fboxsep+2\fboxrule}}%
|
|
\begin{lrbox}{\LWR@fminipagebox}%
|
|
\IfValueTF{#2}%
|
|
{\minipage[#1][#2][\LWR@thisalign]{#4}}%
|
|
{\minipage[#1]{#4}}%
|
|
}
|
|
{%
|
|
\endminipage%
|
|
\end{lrbox}%
|
|
\fbox{\usebox{\LWR@fminipagebox}}%
|
|
\endminipage%
|
|
}
|
|
|
|
\LetLtxMacro\fminipage\LWR@print@fminipage
|
|
\LetLtxMacro\endfminipage\endLWR@print@fminipage
|
|
|
|
\end{warpall}
|
|
\begin{warpHTML}
|
|
|
|
\NewDocumentEnvironment{LWR@HTML@fminipage}{O{t} o O{t} m}
|
|
{%
|
|
\LWR@traceinfo{fminipage #1 #2 #3 #4}%
|
|
\begin{LWR@setvirtualpage}*%
|
|
\setlength{\LWR@tempwidth}{#4}%
|
|
\IfValueT{#2}{\setlength{\LWR@tempheight}{#2}}%
|
|
\LWR@forceminwidth{\fboxrule}%
|
|
\LWR@stoppars%
|
|
\begin{BlockClass}[%
|
|
\LWR@fboxstyle ; %
|
|
\IfValueT{#2}{height:\LWR@printlength{\LWR@tempheight} ; }%
|
|
\ifbool{LWR@minipagefullwidth}%
|
|
{\global\boolfalse{LWR@minipagefullwidth}}%
|
|
{%
|
|
\ifbool{LWR@forceminipagefullwidth}%
|
|
{}%
|
|
{%
|
|
\ifdimequal{\LWR@tempwidth}{\linewidth}%
|
|
{}%
|
|
{width:\LWR@printlength{\LWR@tempwidth} ; }%
|
|
}%
|
|
}%
|
|
]{fminipage}%
|
|
}
|
|
{%
|
|
\end{BlockClass}%
|
|
\end{LWR@setvirtualpage}%
|
|
\global\booltrue{LWR@minipagethispar}%
|
|
\LWR@traceinfo{fminipage done}%
|
|
}
|
|
|
|
\LWR@formattedenv{fminipage}
|
|
\NewDocumentCommand{\LWR@HTML@raisebox}{m o o m}{%
|
|
#4%
|
|
}
|
|
|
|
\LWR@formatted{raisebox}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpall}
|
|
|
|
\newbool{FixSmallCaps}
|
|
\boolfalse{FixSmallCaps}
|
|
|
|
\end{warpall}
|
|
|
|
\begin{warpHTML}
|
|
|
|
|
|
\DeclareRobustCommand{\LWR@HTML@emph}[1]{%
|
|
{%
|
|
\LWR@HTML@itshape%
|
|
\LWR@htmlspan{em}{#1}%
|
|
}%
|
|
}
|
|
|
|
\LWR@formatted{emph}
|
|
|
|
\DeclareRobustCommand{\LWR@HTML@textmd}[1]{%
|
|
{%
|
|
\LWR@HTML@mdseries%
|
|
\InlineClass(font-weight:normal){textmd}{#1}%
|
|
}%
|
|
}
|
|
|
|
\LWR@formatted{textmd}
|
|
|
|
\DeclareRobustCommand{\LWR@HTML@textbf}[1]{%
|
|
{%
|
|
\LWR@HTML@bfseries%
|
|
\LWR@htmlspan{b}{#1}%
|
|
}%
|
|
}
|
|
|
|
\LWR@formatted{textbf}
|
|
|
|
\DeclareRobustCommand{\LWR@HTML@texteb}[1]{%
|
|
{%
|
|
\LWR@HTML@ebweight%
|
|
\InlineClass{texteb}{#1}%
|
|
}%
|
|
}
|
|
|
|
\LWR@formatted{texteb}
|
|
|
|
\DeclareRobustCommand{\LWR@HTML@textlg}[1]{%
|
|
{%
|
|
\LWR@HTML@lgweight%
|
|
\InlineClass{textlg}{#1}%
|
|
}%
|
|
}
|
|
|
|
\LWR@formatted{textlg}
|
|
|
|
\DeclareRobustCommand{\LWR@HTML@textrm}[1]{%
|
|
{%
|
|
\LWR@HTML@rmfamily%
|
|
\InlineClass(font-family:serif){textrm}{#1}%
|
|
}%
|
|
}
|
|
|
|
\LWR@formatted{textrm}
|
|
|
|
\DeclareRobustCommand{\LWR@HTML@textsf}[1]{%
|
|
{%
|
|
\LWR@HTML@sffamily%
|
|
\InlineClass(font-family:sans){textsf}{#1}%
|
|
}%
|
|
}
|
|
|
|
\LWR@formatted{textsf}
|
|
|
|
\DeclareRobustCommand{\LWR@HTML@texttt}[1]{%
|
|
{%
|
|
\LWR@HTML@ttfamily%
|
|
\LWR@htmlspan{kbd}{#1}%
|
|
}%
|
|
}
|
|
|
|
\LWR@formatted{texttt}
|
|
|
|
\DeclareRobustCommand{\LWR@HTML@textup}[1]{%
|
|
{%
|
|
\LWR@HTML@upshape%
|
|
\InlineClass(font-style:normal){textup}{#1}%
|
|
}%
|
|
}
|
|
|
|
\LWR@formatted{textup}
|
|
|
|
\DeclareRobustCommand{\LWR@HTML@textit}[1]{%
|
|
{%
|
|
\LWR@HTML@itshape%
|
|
\LWR@htmlspan{i}{#1}%
|
|
}%
|
|
}
|
|
|
|
\LWR@formatted{textit}
|
|
|
|
\DeclareRobustCommand{\LWR@HTML@textsc}[1]{%
|
|
{%
|
|
\LWR@HTML@scshape%
|
|
\InlineClass{textsc}{#1}%
|
|
}%
|
|
}
|
|
|
|
\LWR@formatted{textsc}
|
|
|
|
\DeclareRobustCommand{\LWR@HTML@textulc}[1]{%
|
|
{%
|
|
\LWR@HTML@ulcshape%
|
|
\InlineClass{textulc}{#1}%
|
|
}%
|
|
}
|
|
|
|
\LWR@formatted{textulc}
|
|
|
|
\@ifundefined{textsi}{
|
|
\LetLtxMacro\LWR@print@textsi\LWR@print@textsc
|
|
}{}
|
|
|
|
\DeclareRobustCommand{\LWR@HTML@textsi}[1]{%
|
|
{%
|
|
\LWR@HTML@sishape%
|
|
\textsc{\textit{#1}}%
|
|
}%
|
|
}
|
|
|
|
\LWR@formatted{textsi}
|
|
|
|
\DeclareRobustCommand{\LWR@HTML@textsl}[1]{%
|
|
{%
|
|
\slshape%
|
|
\InlineClass(font-style:oblique){textsl}{#1}%
|
|
}%
|
|
}
|
|
|
|
\LWR@formatted{textsl}
|
|
|
|
\newrobustcmd{\LWR@HTML@textssc}[1]{\textsc{#1}}
|
|
\LWR@formatted{textssc}
|
|
|
|
\DeclareRobustCommand{\LWR@HTML@textnormal}[1]{\textmd{\textrm{\textup{#1}}}}
|
|
|
|
\LWR@formatted{textnormal}
|
|
|
|
\FilenameNullify{%
|
|
\LetLtxMacro\emph\@firstofone%
|
|
\LetLtxMacro\textmd\@firstofone%
|
|
\LetLtxMacro\textbf\@firstofone%
|
|
\LetLtxMacro\texteb\@firstofone%
|
|
\LetLtxMacro\textlg\@firstofone%
|
|
\LetLtxMacro\textrm\@firstofone%
|
|
\LetLtxMacro\textsf\@firstofone%
|
|
\LetLtxMacro\texttt\@firstofone%
|
|
\LetLtxMacro\textup\@firstofone%
|
|
\LetLtxMacro\textit\@firstofone%
|
|
\LetLtxMacro\textsc\@firstofone%
|
|
\LetLtxMacro\textulc\@firstofone%
|
|
\LetLtxMacro\textsi\@firstofone%
|
|
\LetLtxMacro\textsl\@firstofone%
|
|
\LetLtxMacro\textssc\@firstofone%
|
|
\LetLtxMacro\textnormal\@firstofone%
|
|
}
|
|
|
|
\newcommand*{\LWR@f@family}{rm}
|
|
\newcommand*{\LWR@f@series}{md}
|
|
\newcommand*{\LWR@f@shape}{up}
|
|
\newcommand*{\LWR@f@shapecaps}{ulc}
|
|
|
|
\newcounter{LWR@textcurrentfontdepth}
|
|
\setcounter{LWR@textcurrentfontdepth}{0}
|
|
|
|
\newcommand*{\LWR@textcurrentfont}[1]{%
|
|
\ifnumcomp{\value{LWR@textcurrentfontdepth}}{>}{0}%
|
|
{%
|
|
\addtocounter{LWR@textcurrentfontdepth}{1}%
|
|
#1%
|
|
\addtocounter{LWR@textcurrentfontdepth}{-1}%
|
|
}%
|
|
{%
|
|
\addtocounter{LWR@textcurrentfontdepth}{1}%
|
|
\InlineClass{%
|
|
text\LWR@f@family\LWR@origtilde{}%
|
|
text\LWR@f@series\LWR@origtilde{}%
|
|
text\LWR@f@shape\LWR@origtilde{}%
|
|
text\LWR@f@shapecaps%
|
|
}%
|
|
{#1}%
|
|
\addtocounter{LWR@textcurrentfontdepth}{-1}%
|
|
}%
|
|
}
|
|
|
|
\newenvironment*{LWR@blocktextcurrentfont}{%
|
|
\LWR@stoppars%
|
|
\BlockClass{%
|
|
text\LWR@f@family\LWR@origtilde{}%
|
|
text\LWR@f@series\LWR@origtilde{}%
|
|
text\LWR@f@shape\LWR@origtilde{}%
|
|
text\LWR@f@shapecaps%
|
|
}%
|
|
}{\endBlockClass\LWR@startpars}
|
|
|
|
\newrobustcmd*{\LWR@HTML@mdseries}{%
|
|
\LWR@print@mdseries%
|
|
\renewcommand*{\LWR@f@series}{md}%
|
|
}
|
|
\LWR@formatted{mdseries}
|
|
|
|
\newrobustcmd*{\LWR@HTML@bfseries}{%
|
|
\LWR@print@bfseries%
|
|
\renewcommand*{\LWR@f@series}{bf}%
|
|
}
|
|
\LWR@formatted{bfseries}
|
|
|
|
\newrobustcmd*{\LWR@HTML@ebweight}{%
|
|
\LWR@print@ebweight%
|
|
\renewcommand*{\LWR@f@series}{eb}%
|
|
}
|
|
\LWR@formatted{ebweight}
|
|
|
|
\newrobustcmd*{\LWR@HTML@lgweight}{%
|
|
\LWR@print@lgweight%
|
|
\renewcommand*{\LWR@f@series}{lg}%
|
|
}
|
|
\LWR@formatted{lgweight}
|
|
|
|
\newrobustcmd*{\LWR@HTML@rmfamily}{%
|
|
\LWR@print@rmfamily%
|
|
\renewcommand*{\LWR@f@family}{rm}%
|
|
}
|
|
\LWR@formatted{rmfamily}
|
|
|
|
\newrobustcmd*{\LWR@HTML@sffamily}{%
|
|
\LWR@print@sffamily%
|
|
\renewcommand*{\LWR@f@family}{sf}%
|
|
}
|
|
\LWR@formatted{sffamily}
|
|
|
|
\newrobustcmd*{\LWR@HTML@ttfamily}{%
|
|
\LWR@print@ttfamily%
|
|
\renewcommand*{\LWR@f@family}{tt}%
|
|
}
|
|
\LWR@formatted{ttfamily}
|
|
\newrobustcmd*{\LWR@HTML@upshape}{%
|
|
\LWR@print@upshape%
|
|
\renewcommand*{\LWR@f@shape}{up}%
|
|
}
|
|
\AtBeginDocument{\LWR@formatted{upshape}}
|
|
|
|
\newrobustcmd*{\LWR@HTML@itshape}{%
|
|
\LWR@print@itshape%
|
|
\renewcommand*{\LWR@f@shape}{it}%
|
|
}
|
|
\AtBeginDocument{\LWR@formatted{itshape}}
|
|
|
|
\newrobustcmd*{\LWR@HTML@scshape}{%
|
|
\ifbool{FixSmallCaps}{}{%
|
|
\LWR@print@scshape%
|
|
}%
|
|
\renewcommand*{\LWR@f@shapecaps}{sc}%
|
|
}
|
|
\AtBeginDocument{\LWR@formatted{scshape}}
|
|
|
|
\@ifundefined{ulcshape}{
|
|
\LetLtxMacro\ulcshape\upshape
|
|
}{}
|
|
\newrobustcmd*{\LWR@HTML@ulcshape}{%
|
|
\LWR@print@ulcshape%
|
|
\renewcommand*{\LWR@f@shapecaps}{ulc}%
|
|
}
|
|
\AtBeginDocument{\LWR@formatted{ulcshape}}
|
|
|
|
\@ifundefined{sishape}{
|
|
\LetLtxMacro\sishape\scshape
|
|
}{}
|
|
\newrobustcmd*{\LWR@HTML@sishape}{%
|
|
\ifbool{FixSmallCaps}{}{%
|
|
\LWR@print@sishape%
|
|
}%
|
|
\renewcommand*{\LWR@f@shape}{it}
|
|
\renewcommand*{\LWR@f@shapecaps}{sc}%
|
|
}
|
|
\AtBeginDocument{\LWR@formatted{sishape}}
|
|
|
|
\newrobustcmd*{\LWR@HTML@slshape}{%
|
|
\LWR@print@slshape%
|
|
\renewcommand*{\LWR@f@shape}{sl}%
|
|
}
|
|
\AtBeginDocument{\LWR@formatted{slshape}}
|
|
|
|
\newrobustcmd{\LWR@HTML@sscshape}{\LWR@HTML@scshape}
|
|
\AtBeginDocument{\LWR@formatted{sscshape}}
|
|
|
|
\newrobustcmd*{\LWR@HTML@normalfont}{\rmfamily\mdseries\upshape\ulcshape}
|
|
\LWR@formatted{normalfont}
|
|
|
|
\FilenameNullify{%
|
|
\LetLtxMacro\rmfamily\@empty%
|
|
\LetLtxMacro\sffamily\@empty%
|
|
\LetLtxMacro\ttfamily\@empty%
|
|
\LetLtxMacro\bfseries\@empty%
|
|
\LetLtxMacro\ebweight\@empty%
|
|
\LetLtxMacro\lgweight\@empty%
|
|
\LetLtxMacro\mdseries\@empty%
|
|
\LetLtxMacro\upshape\@empty%
|
|
\LetLtxMacro\slshape\@empty%
|
|
\LetLtxMacro\sishape\@empty%
|
|
\LetLtxMacro\scshape\@empty%
|
|
\LetLtxMacro\itshape\@empty%
|
|
\LetLtxMacro\ulcshape\@empty%
|
|
\LetLtxMacro\sscshape\@empty%
|
|
\LetLtxMacro\normalfont\@empty%
|
|
}
|
|
|
|
|
|
\renewcommand{\sp}[1]{\text{<sup>#1</sup>}{}}
|
|
|
|
|
|
\renewcommand{\sb}[1]{\text{<sub>#1</sub>}{}}
|
|
|
|
\newrobustcmd{\LWR@HTML@textsuperscript}[1]{\LWR@htmlspan{sup}{#1}}
|
|
\LWR@formatted{textsuperscript}
|
|
|
|
\newcommand{\LWR@HTML@@textsuperscript}[1]{\LWR@htmlspan{sup}{#1}}
|
|
\LWR@formatted{@textsuperscript}
|
|
|
|
\newrobustcmd{\LWR@HTML@textsubscript}[1]{\LWR@htmlspan{sub}{#1}}
|
|
\LWR@formatted{textsubscript}
|
|
|
|
\newcommand{\LWR@HTML@@textsubscript}[1]{\LWR@htmlspan{sub}{#1}}
|
|
\LWR@formatted{@textsubscript}
|
|
|
|
\AtBeginDocument{\let\up\textsuperscript}
|
|
|
|
\AtBeginDocument{\let\fup\textsuperscript}
|
|
|
|
\renewcommand{\underline}[1]{%
|
|
\InlineClass%
|
|
(text-decoration:underline; text-decoration-skip: auto)%
|
|
{underline}{#1}%
|
|
}
|
|
|
|
\newcommand{\LWR@overline}[1]{%
|
|
\InlineClass%
|
|
(text-decoration:overline; text-decoration-skip: auto)%
|
|
{overline}{#1}%
|
|
}
|
|
|
|
\newcommand*{\LWR@currenttextcolor}{black}
|
|
\newcommand*{\LWR@tempcolor}{}
|
|
\newcommand*{\LWR@tempcolortwo}{}
|
|
\newcommand*{\LWR@findcurrenttextcolor}{%
|
|
\renewcommand{\LWR@tempcolor}{000000}%
|
|
}
|
|
\NewDocumentCommand{\LWR@textcurrentcolor}{m}{%
|
|
\renewcommand*{\LWR@currenttextcolor}{black}%
|
|
#1%
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpprint}
|
|
|
|
\newcommand*{\LWR@textcurrentfont}[1]{#1}
|
|
|
|
\newenvironment*{LWR@blocktextcurrentfont}{}{}
|
|
|
|
\newcommand*{\FilenameNullify}[1]{}
|
|
|
|
\end{warpprint}
|
|
|
|
|
|
\begin{warpHTML}
|
|
\AtBeginDocument{
|
|
\renewrobustcmd*{\,}{\HTMLunicode{202f}} % HTML thin non-breakable space
|
|
\renewrobustcmd*{\thinspace}{\HTMLunicode{202f}} % HTML thin non-breakable space
|
|
\renewrobustcmd*{\negthinspace}{\HTMLunicode{202f}} % HTML thin non-breakable space
|
|
\renewrobustcmd*{~}{\HTMLentity{nbsp}}
|
|
\renewrobustcmd*{\textellipsis}{\HTMLunicode{2026}}
|
|
\renewrobustcmd*{\vdots}{\HTMLunicode{22EE}}
|
|
}
|
|
\newcommand*{\LWR@font@size}{normalsize}
|
|
|
|
\newrobustcmd*{\LWR@HTML@normalsize}{\renewcommand*{\LWR@font@size}{normalsize}}
|
|
\LWR@formatted{normalsize}
|
|
|
|
\newrobustcmd*{\LWR@HTML@small}{\renewcommand*{\LWR@font@size}{small}}
|
|
\LWR@formatted{small}
|
|
|
|
\newrobustcmd*{\LWR@HTML@footnotesize}{\renewcommand*{\LWR@font@size}{footnotesize}}
|
|
\LWR@formatted{footnotesize}
|
|
|
|
\newrobustcmd*{\LWR@HTML@scriptsize}{\renewcommand*{\LWR@font@size}{scriptsize}}
|
|
\LWR@formatted{scriptsize}
|
|
|
|
\newrobustcmd*{\LWR@HTML@tiny}{\renewcommand*{\LWR@font@size}{tiny}}
|
|
\LWR@formatted{tiny}
|
|
|
|
\newrobustcmd*{\LWR@HTML@large}{\renewcommand*{\LWR@font@size}{large}}
|
|
\LWR@formatted{large}
|
|
|
|
\newrobustcmd*{\LWR@HTML@Large}{\renewcommand*{\LWR@font@size}{Large}}
|
|
\LWR@formatted{Large}
|
|
|
|
\newrobustcmd*{\LWR@HTML@LARGE}{\renewcommand*{\LWR@font@size}{LARGE}}
|
|
\LWR@formatted{LARGE}
|
|
|
|
\newrobustcmd*{\LWR@HTML@huge}{\renewcommand*{\LWR@font@size}{huge}}
|
|
\LWR@formatted{huge}
|
|
|
|
\newrobustcmd*{\LWR@HTML@Huge}{\renewcommand*{\LWR@font@size}{Huge}}
|
|
\LWR@formatted{Huge}
|
|
\DeclareDocumentCommand{\onecolumn}{}{}
|
|
|
|
\DeclareDocumentCommand{\twocolumn}{O{}}{
|
|
|
|
#1
|
|
|
|
}
|
|
|
|
\newcommand*{\LWR@HTML@hfill}{\qquad}
|
|
\LWR@formatted{hfill}
|
|
|
|
\newcommand*{\LWR@HTML@hrulefill}{%
|
|
\ifbool{LWR@doingapar}%
|
|
{\rule{1in}{1pt}}%
|
|
{%
|
|
\LWR@findcurrenttextcolor%
|
|
\ifdefstring{\LWR@tempcolor}{000000}%
|
|
{%
|
|
\begin{BlockClass}{hrule}%
|
|
\end{BlockClass}%
|
|
}%
|
|
{%
|
|
\begin{BlockClass}[%
|
|
border-top: 1px solid \LWR@origpound\LWR@tempcolor % space
|
|
]{hrule}%
|
|
\end{BlockClass}%
|
|
}%
|
|
}%
|
|
}%
|
|
\LWR@formatted{hrulefill}
|
|
|
|
\newcommand*{\LWR@HTML@dotfill}{\dots}
|
|
\LWR@formatted{dotfill}
|
|
|
|
\renewcommand*{\newpage}{
|
|
|
|
}
|
|
|
|
\newrobustcmd*{\LWR@newlinebr}{\unskip\LWR@htmltag{br /}\LWR@orignewline}%
|
|
\LetLtxMacro\newline\LWR@newlinebr
|
|
|
|
\LetLtxMacro\LWR@origendofline\\
|
|
\NewDocumentCommand{\LWR@endofline}{s O{0pt}}
|
|
{%
|
|
\newline%
|
|
\setlength{\LWR@templengthone}{#2}%
|
|
\ifdimgreater{\LWR@templengthone}{0pt}{\newline}{}%
|
|
}
|
|
|
|
\newcommand*{\LWR@minipagestartpars}{%
|
|
\ifbool{LWR@minipagethispar}{\LWR@startpars}{}%
|
|
}
|
|
|
|
\newcommand*{\LWR@minipagestoppars}{%
|
|
\ifbool{LWR@minipagethispar}{\LWR@stoppars}{}%
|
|
}
|
|
|
|
\renewrobustcmd*{\quad}{%
|
|
\LWR@minipagestoppars%
|
|
\HTMLunicode{2003}%
|
|
\LWR@minipagestartpars%
|
|
}
|
|
|
|
\renewrobustcmd*{\qquad}{\quad\quad}
|
|
|
|
\renewrobustcmd*{\enskip}{%
|
|
\LWR@minipagestoppars%
|
|
\HTMLunicode{2002}%
|
|
\LWR@minipagestartpars%
|
|
}
|
|
|
|
\newlength{\LWR@tempwidth}
|
|
\newlength{\LWR@tempheight}
|
|
\newlength{\LWR@tempraise}
|
|
|
|
\newcommand{\LWR@select@html@hspace}{%
|
|
\RenewDocumentCommand{\hspace}{s m}{%
|
|
\setlength{\LWR@tempwidth}{##2}%
|
|
\ifnum\gluestretchorder\LWR@tempwidth>0%
|
|
\setlength{\LWR@tempwidth}{2em}%
|
|
\fi%
|
|
\ifdimcomp{\LWR@tempwidth}{>}{0pt}{%
|
|
\LWR@minipagestoppars%
|
|
\ifdimcomp{\LWR@tempwidth}{=}{.16667em}%
|
|
{%
|
|
\HTMLunicode{2009}% thin breakable space
|
|
}%
|
|
{%
|
|
\LWR@htmltagc{%
|
|
span style="width:\LWR@printlength{\LWR@tempwidth}; % extra space
|
|
display:inline-block"%
|
|
}%
|
|
\ifbool{FormatWP}{%
|
|
\setlength{\LWR@templengthone}{\LWR@tempwidth}%
|
|
\whiledo{\lengthtest{\LWR@templengthone>1em}}{%
|
|
\quad%
|
|
\addtolength{\LWR@templengthone}{-1em}%
|
|
}%
|
|
}%
|
|
{\LWR@htmlcomment{}}%
|
|
\LWR@htmltagc{/span}%
|
|
}%
|
|
\LWR@minipagestartpars%
|
|
}{}% width greater than 0
|
|
}%
|
|
}
|
|
\newcommand{\LWR@select@html@nohspace}{%
|
|
\RenewDocumentCommand{\hspace}{s m}{}%
|
|
}
|
|
|
|
\newcommand*{\LWR@select@print@hspace}{%
|
|
\renewrobustcmd\hspace{\@ifstar\@hspacer\@hspace}%
|
|
}
|
|
|
|
\LWR@select@html@hspace
|
|
|
|
\NewDocumentCommand{\LWR@HTML@vspace}{s m}{}
|
|
|
|
\LWR@formatted{vspace}
|
|
|
|
\renewcommand*{\linebreak}[1][]{\newline}
|
|
|
|
\renewcommand*{\nolinebreak}[1][]{}
|
|
|
|
\renewcommand*{\pagebreak}[1][]{
|
|
|
|
}
|
|
|
|
\renewcommand*{\nopagebreak}[1][]{}
|
|
|
|
\RenewDocumentCommand{\enlargethispage}{s m}{}
|
|
\renewcommand*{\clearpage}{}
|
|
\renewcommand*{\cleardoublepage}{}
|
|
\newcommand*{\LWR@HTML@rule}[3][]{%
|
|
\setlength{\LWR@tempwidth}{#2}%
|
|
\ifthenelse{\lengthtest{\LWR@tempwidth=0pt}}%
|
|
{}% zero- width
|
|
{% non-zero width
|
|
\ifthenelse{%
|
|
\lengthtest{\LWR@tempwidth>0pt}\AND%
|
|
\lengthtest{\LWR@tempwidth<1pt}%
|
|
}%
|
|
{\setlength{\LWR@tempwidth}{1pt}}%
|
|
{}%
|
|
\setlength{\LWR@tempheight}{#3}%
|
|
\ifthenelse{%
|
|
\lengthtest{\LWR@tempheight>0pt}\AND%
|
|
\lengthtest{\LWR@tempheight<1pt}%
|
|
}%
|
|
{\setlength{\LWR@tempheight}{1pt}}%
|
|
{}%
|
|
\LWR@minipagestoppars%
|
|
\LWR@findcurrenttextcolor%
|
|
\LWR@htmltagc{%
|
|
span\LWR@indentHTML%
|
|
style="%
|
|
\ifbool{FormatWP}{}{background:\LWR@currenttextcolor ; }%
|
|
width:\LWR@printlength{\LWR@tempwidth} ; %
|
|
height:\LWR@printlength{\LWR@tempheight} ; %
|
|
\ifblank{#1}%
|
|
{}%
|
|
{%
|
|
\setlength{\LWR@tempraise}{0pt-#1}%
|
|
\setlength{\LWR@tempraise}{\LWR@tempraise*2}%
|
|
\LWR@indentHTML%
|
|
-ms-transform: translate(0pt,\LWR@printlength{\LWR@tempraise}); %
|
|
\LWR@indentHTML%
|
|
-webkit-transform: translate(0pt,\LWR@printlength{\LWR@tempraise}); %
|
|
\LWR@indentHTML%
|
|
transform: translate(0pt,\LWR@printlength{\LWR@tempraise}); %
|
|
\LWR@indentHTML%
|
|
}%
|
|
display:inline-block;"\LWR@orignewline%
|
|
}%
|
|
\ifbool{FormatWP}{%
|
|
\setlength{\LWR@templengthone}{\LWR@tempwidth}%
|
|
\whiledo{\lengthtest{\LWR@templengthone>1em}}{%
|
|
\_{}%
|
|
\addtolength{\LWR@templengthone}{-1em}%
|
|
}%
|
|
}%
|
|
{\LWR@htmlcomment{}}%
|
|
\LWR@htmltagc{/span}%
|
|
\LWR@minipagestartpars%
|
|
}% non-zero width
|
|
}
|
|
|
|
\LWR@formatted{rule}
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\newrobustcmd*{\LWR@phantomsection}{%
|
|
\begingroup%
|
|
\boolfalse{LWR@forcinghtmltoc}%
|
|
\section*{}%
|
|
\endgroup%
|
|
}
|
|
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpall}
|
|
\newbool{LWR@warnXe}
|
|
\boolfalse{LWR@warnXe}
|
|
|
|
\newrobustcmd*{\Xe}
|
|
{%
|
|
X\hspace{-.1667em}\raisebox{-.5ex}{E}%
|
|
\global\booltrue{LWR@warnXe}%
|
|
}
|
|
|
|
\AtBeginDocument{
|
|
\@ifpackageloaded{graphics}{
|
|
\@ifpackageloaded{metalogo}{}{
|
|
\renewrobustcmd*{\Xe}
|
|
{X\hspace{-.1667em}\raisebox{-.5ex}{\reflectbox{E}}}
|
|
}
|
|
}{}
|
|
}
|
|
|
|
\AtEndDocument{
|
|
\ifbool{LWR@warnXe}{
|
|
\PackageWarningNoLine{lwarp}{Load graphicx or graphics
|
|
for improved XeTeX logo}
|
|
}{}
|
|
}
|
|
|
|
\providerobustcmd*{\XeTeX}{\mbox{\Xe\hspace{-.125em}\TeX}}
|
|
\providerobustcmd*{\XeLaTeX}{\mbox{\Xe\hspace{-.125em}\LaTeX}}
|
|
\providerobustcmd*{\AmS}{%
|
|
\leavevmode\hbox{$\mathcal A\kern-.2em\lower.376ex%
|
|
\hbox{$\mathcal M$}\kern-.2em\mathcal S$}%
|
|
}
|
|
\newrobustcmd*{\LyX}{\textsf{LyX}}
|
|
\providerobustcmd*{\LuaTeX}{\mbox{Lua\TeX}}
|
|
\providerobustcmd*{\LuaLaTeX}{\mbox{Lua\LaTeX}}
|
|
\providerobustcmd*{\BibTeX}{\mbox{B\textsc{ib}\TeX}}
|
|
\providerobustcmd*{\MakeIndex}{\mbox{\textit{MakeIndex}}}
|
|
\providerobustcmd*{\ConTeXt}{\mbox{Con\TeX{}t}}
|
|
\providerobustcmd*{\MiKTeX}{\mbox{MiK\TeX}}
|
|
\end{warpall}
|
|
\begin{warpHTML}
|
|
\newrobustcmd*{\LWR@HTML@TeX}
|
|
{%
|
|
\InlineClass{latexlogofont}%
|
|
{%
|
|
\InlineClass{latexlogo}%
|
|
{%
|
|
T%
|
|
\InlineClass{latexlogosub}{e}%
|
|
X%
|
|
}%
|
|
}%
|
|
}
|
|
\AtBeginDocument{\LWR@formatted{TeX}}% may have been patched by metalogo
|
|
\newrobustcmd*{\LWR@HTML@LaTeX}
|
|
{%
|
|
\InlineClass{latexlogofont}%
|
|
{%
|
|
\InlineClass{latexlogo}%
|
|
{%
|
|
L%
|
|
\InlineClass{latexlogosup}{a}%
|
|
T%
|
|
\InlineClass{latexlogosub}{e}%
|
|
X%
|
|
}%
|
|
}%
|
|
}
|
|
|
|
\AtBeginDocument{\LWR@formatted{LaTeX}}% may have been patched by metalogo
|
|
|
|
\newrobustcmd*{\LWR@HTML@LaTeXe}
|
|
{%
|
|
\LaTeX%
|
|
\InlineClass{latexlogofont}{%
|
|
\InlineClass{latexlogotwoe}{%
|
|
2%
|
|
\InlineClass{latexlogotwoesub}{\HTMLunicode{03B5}}%
|
|
}%
|
|
}%
|
|
}
|
|
\AtBeginDocument{\LWR@formatted{LaTeXe}}% may have been patched by metalogo
|
|
\newrobustcmd*{\LWR@HTML@LuaTeX}{\InlineClass{latexlogofont}{Lua}\TeX}
|
|
\AtBeginDocument{\LWR@formatted{LuaTeX}}% may have been patched by metalogo
|
|
|
|
\newrobustcmd*{\LWR@HTML@LuaLaTeX}{\InlineClass{latexlogofont}{Lua}\LaTeX}
|
|
\AtBeginDocument{\LWR@formatted{LuaLaTeX}}% may have been patched by metalogo
|
|
\newrobustcmd*{\LWR@HTML@Xe}
|
|
{%
|
|
X%
|
|
\InlineClass{xelatexlogosub}{\HTMLunicode{18e}}%
|
|
}
|
|
\AtBeginDocument{\LWR@formatted{Xe}}% may have been patched by metalogo
|
|
|
|
\newrobustcmd*{\LWR@HTML@XeTeX}{\InlineClass{xelatexlogo}{\Xe}\TeX}
|
|
\AtBeginDocument{\LWR@formatted{XeTeX}}% may have been patched by metalogo
|
|
|
|
\newrobustcmd*{\LWR@HTML@XeLaTeX}{\InlineClass{xelatexlogo}{\Xe}\LaTeX}
|
|
\AtBeginDocument{\LWR@formatted{XeLaTeX}}% may have been patched by metalogo
|
|
\newrobustcmd*{\LWR@HTML@ConTeXt}{%
|
|
\InlineClass{latexlogofont}{Con}\TeX{}%
|
|
\InlineClass{latexlogofont}{t}%
|
|
}
|
|
\LWR@formatted{ConTeXt}
|
|
\newrobustcmd*{\LWR@HTML@BibTeX}
|
|
{\InlineClass{latexlogofont}{B\textsc{ib}}\TeX}
|
|
\LWR@formatted{BibTeX}
|
|
|
|
\newrobustcmd*{\LWR@HTML@MakeIndex}
|
|
{\InlineClass{latexlogofont}{\textit{MakeIndex}}}
|
|
\LWR@formatted{MakeIndex}
|
|
\AtBeginDocument{%
|
|
\newrobustcmd*{\LWR@HTML@AmS}
|
|
{%
|
|
\InlineClass{amslogo}{%
|
|
\textit{%
|
|
A%
|
|
\InlineClass{latexlogosub}{M}%
|
|
S%
|
|
}%
|
|
}%
|
|
}%
|
|
\LWR@formatted{AmS}
|
|
}
|
|
\newrobustcmd*{\LWR@HTML@MiKTeX}{\InlineClass{latexlogofont}{MiK}\TeX}
|
|
\LWR@formatted{MiKTeX}
|
|
\newrobustcmd*{\LWR@HTML@LyX}{\InlineClass{lyxlogo}{LyX}}
|
|
\LWR@formatted{LyX}
|
|
\end{warpHTML}
|
|
|
|
|
|
\begin{warpHTML}
|
|
|
|
\AfterEndPreamble{\LWR@LwarpStart}
|
|
\AtEndDocument{\LWR@LwarpEnd}
|
|
|
|
\end{warpHTML}
|
|
|
|
\begin{warpHTML}
|
|
\RequirePackage{lwarp-textcomp}
|
|
\end{warpHTML}
|
|
|
|
\begin{warpHTML}
|
|
\@ifclassloaded{scrbook}{\RequirePackage{lwarp-patch-komascript}}{}
|
|
\@ifclassloaded{scrartcl}{\RequirePackage{lwarp-patch-komascript}}{}
|
|
\@ifclassloaded{scrreprt}{\RequirePackage{lwarp-patch-komascript}}{}
|
|
\end{warpHTML}
|
|
|
|
\begin{warpprint}
|
|
\@ifclassloaded{memoir}{\LWR@origRequirePackage{xcolor}}{}
|
|
\end{warpprint}
|
|
|
|
\begin{warpHTML}
|
|
\@ifclassloaded{memoir}{\RequirePackage{lwarp-patch-memoir}}{}
|
|
\end{warpHTML}
|
|
|
|
\begin{warpHTML}
|
|
\newcommand*{\LWR@patchujtclasses}{
|
|
\def\@partnameformat{}
|
|
\def\@partcntformat##1{%
|
|
\prepartname%
|
|
\csname the##1\endcsname%
|
|
\postpartname%
|
|
\quad%
|
|
}
|
|
\@ifundefined{chapter}{}{
|
|
\def\@chapcntformat##1{%
|
|
\prechaptername%
|
|
\csname the##1\endcsname%
|
|
\postchaptername%
|
|
\quad%
|
|
}
|
|
}
|
|
\renewcommand*{\LWR@printchaptername}{}
|
|
\renewcommand{\thepart}{\@Roman\c@part}
|
|
\@ifundefined{chapter}{
|
|
\renewcommand{\thesection}{\@arabic\c@section}
|
|
}{
|
|
\renewcommand{\thechapter}{\@arabic\c@chapter}
|
|
\renewcommand{\thesection}{\thechapter.\@arabic\c@section}
|
|
}
|
|
\renewcommand{\thesubsection}{\thesection.\@arabic\c@subsection}
|
|
\renewcommand{\thesubsubsection}{%
|
|
\thesubsection.\@arabic\c@subsubsection}
|
|
\renewcommand{\theparagraph}{%
|
|
\thesubsubsection.\@arabic\c@paragraph}
|
|
\renewcommand{\thesubparagraph}{%
|
|
\theparagraph.\@arabic\c@subparagraph}
|
|
\@ifundefined{chapter}{
|
|
\renewcommand{\thefigure}{\@arabic\c@figure}
|
|
\renewcommand{\thetable}{\@arabic\c@table}
|
|
}{
|
|
\renewcommand{\thefigure}{%
|
|
\ifnum\c@chapter>\z@\thechapter.\fi\@arabic\c@figure}
|
|
\renewcommand{\thetable}{%
|
|
\ifnum\c@chapter>\z@\thechapter.\fi\@arabic\c@table}
|
|
}
|
|
}
|
|
|
|
\@ifclassloaded{ujarticle}{\LWR@patchujtclasses}{}
|
|
\@ifclassloaded{ujbook}{\LWR@patchujtclasses}{}
|
|
\@ifclassloaded{ujreport}{\LWR@patchujtclasses}{}
|
|
\@ifclassloaded{utarticle}{\LWR@patchujtclasses}{}
|
|
\@ifclassloaded{utbook}{\LWR@patchujtclasses}{}
|
|
\@ifclassloaded{utreport}{\LWR@patchujtclasses}{}
|
|
\@ifclassloaded{ltjarticle}{\LWR@patchujtclasses}{}
|
|
\@ifclassloaded{ltjbook}{\LWR@patchujtclasses}{}
|
|
\@ifclassloaded{ltjreport}{\LWR@patchujtclasses}{}
|
|
\@ifclassloaded{ltjsarticle}{\LWR@patchujtclasses}{}
|
|
\@ifclassloaded{ltjsbook}{\LWR@patchujtclasses}{}
|
|
\@ifclassloaded{ltjsreport}{\LWR@patchujtclasses}{}
|
|
\@ifclassloaded{ltjskiyou}{\LWR@patchujtclasses}{}
|
|
\@ifclassloaded{ltjspf}{\LWR@patchujtclasses}{}
|
|
\@ifclassloaded{ltjtarticle}{\LWR@patchujtclasses}{}
|
|
\@ifclassloaded{ltjtbook}{\LWR@patchujtclasses}{}
|
|
\@ifclassloaded{ltjtreport}{\LWR@patchujtclasses}{}
|
|
\end{warpHTML}
|
|
|
|
\begin{warpHTML}
|
|
\AtBeginDocument{
|
|
\@ifpackageloaded{ctexpatch}{%
|
|
\def\@partcntformat#1{%
|
|
\LWR@isolate{\CTEX@partname}~%
|
|
\CTEX@part@aftername%
|
|
}%
|
|
|
|
\def\@partnameformat{}
|
|
|
|
\def\@chapcntformat#1{%
|
|
\LWR@isolate{\CTEX@chaptername}~%
|
|
\CTEX@chapter@aftername%
|
|
}%
|
|
|
|
\renewcommand*{\LWR@printchaptername}{}
|
|
}{}
|
|
}
|
|
\end{warpHTML}
|
|
\begin{warpHTML}
|
|
\AtBeginDocument{
|
|
\@ifpackageloaded{kotexutf}{%
|
|
\def\LWR@kotexutf@setref#1#2#3{%
|
|
\@setref@dhucs@orig{#1}{#2}{#3}%
|
|
\ifx#1\relax\else
|
|
\bgroup
|
|
\dhucs@make@cjkchar@null
|
|
\edef\@temp{\expandafter#2#1}\global\josatoks\expandafter{\@temp}%
|
|
\egroup
|
|
\fi%
|
|
}%
|
|
|
|
\ifdefequal{\@setref}{\LWR@kotexutf@setref}{
|
|
\let\@setref\@setref@dhucs@orig
|
|
}{}
|
|
}{}
|
|
}
|
|
\end{warpHTML}
|
|
|
|
\begin{warpHTML}
|
|
\AtBeginDocument{
|
|
|
|
\@ifpackageloaded{polyglossia}{
|
|
\PackageWarningNoLine{lwarp}
|
|
{%
|
|
Polyglossia has been loaded. Lwarp also uses cleveref.\MessageBreak
|
|
See the cleveref documentation regarding\MessageBreak
|
|
polyglossia support. Some languages are not supported%
|
|
}
|
|
\typeout{---}
|
|
\typeout{Package lwarp:}
|
|
\typeout{If the error}
|
|
\typeout{\space\space``! Undefined control sequence.
|
|
\space ... \space \protect\@begindocumenthook''}
|
|
\typeout{occurs here, use the polyglossia macro:}
|
|
\typeout{\space\space\protect\setmainlanguage\protect{...\protect}}
|
|
\typeout{---}
|
|
}{
|
|
\@ifpackageloaded{babel}{
|
|
\PackageWarningNoLine{lwarp}
|
|
{%
|
|
Babel has been loaded. Lwarp also uses cleveref.\MessageBreak
|
|
See the cleveref documentation regarding\MessageBreak
|
|
babel support. Some languages are not supported%
|
|
}
|
|
}{}
|
|
}
|
|
|
|
}
|
|
\end{warpHTML}
|
|
\newcommand*{\LWR@mathjaxwarn}[2]{%
|
|
\@ifpackageloaded{lwarp-#1}{%
|
|
\ifblank{#2}{%
|
|
\PackageWarningNoLine{lwarp}
|
|
{%
|
|
Lwarp provides emulation for MathJax when used\MessageBreak
|
|
with the #1 package%
|
|
}
|
|
}{%
|
|
\PackageWarningNoLine{lwarp}
|
|
{%
|
|
Lwarp provides emulation for MathJax when used\MessageBreak
|
|
with the #1 package.\MessageBreak
|
|
#2%
|
|
}
|
|
}%
|
|
}{}%
|
|
}
|
|
|
|
\AtBeginDocument{
|
|
\ifbool{mathjax}{
|
|
\LWR@mathjaxwarn{arydshln}
|
|
{In a math array, do not use the optional argument\MessageBreak
|
|
for \protect\cdashline.\space\space
|
|
Furthermore, \protect\cline\space is not\MessageBreak
|
|
supported by MathJax}
|
|
\LWR@mathjaxwarn{autonum}
|
|
{MathJax does not support equation+.\MessageBreak
|
|
You may use the warpprint and warpHTML\MessageBreak
|
|
environments to isolate the package load\MessageBreak
|
|
and the equation+ environments}
|
|
\LWR@mathjaxwarn{backnaur}
|
|
{You may enclose its uses inside\MessageBreak
|
|
lateximage environments to force SVG output,\MessageBreak
|
|
but this also changes the print output}
|
|
\LWR@mathjaxwarn{bigdelim}
|
|
{Delimiters appear only of the first line}
|
|
\LWR@mathjaxwarn{booktabs}
|
|
{In a math array, do not use (trim) for \protect\cmidrule}
|
|
\LWR@mathjaxwarn{breqn}
|
|
{Each environment becomes an SVG image}
|
|
\LWR@mathjaxwarn{delarray}
|
|
{Enclose its uses inside lateximage\MessageBreak
|
|
environments to force SVG output}
|
|
\LWR@mathjaxwarn{jkmath}{}
|
|
\LWR@mathjaxwarn{mathtools}
|
|
{See the Lwarp manual regarding the disallowspaces\MessageBreak
|
|
and showonlyrefs options, the alignat environment,\MessageBreak
|
|
and \protect\DeclarePairedDelimiter\space and related%
|
|
}
|
|
\LWR@mathjaxwarn{mathspec}{}
|
|
\LWR@mathjaxwarn{multirow}
|
|
{Multirow works as expected in text mode, but\MessageBreak
|
|
limited emulation is provided for MathJax math.\MessageBreak
|
|
\protect\multirow\space ignores all arguments except\MessageBreak
|
|
the text}
|
|
\LWR@mathjaxwarn{pb-diagram}
|
|
{Enclose its uses inside lateximage environments\MessageBreak
|
|
to force SVG output}
|
|
\LWR@mathjaxwarn{unicode-math}
|
|
{Not all characters are encoded correctly.\MessageBreak
|
|
Some symbol fonts are not supported by MathJax,\MessageBreak
|
|
and are only approximated}
|
|
\LWR@mathjaxwarn{witharrows}
|
|
{Arrows can only point to the next line.\MessageBreak
|
|
Text is only placed on a single line}
|
|
\LWR@mathjaxwarn{xy}
|
|
{xy works in text, but in math you must\MessageBreak
|
|
enclose its uses inside lateximage\MessageBreak
|
|
environments to force SVG output}
|
|
}{}
|
|
}
|
|
\endinput
|
|
%%
|
|
%% End of file `lwarp.sty'.
|
|
|