summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/lwarp/lwarp.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-05-12 21:24:56 +0000
committerKarl Berry <karl@freefriends.org>2018-05-12 21:24:56 +0000
commit2d4efc4f55e5a432a6a93be060579b4878c5fd11 (patch)
treee5b27f31dde871066469b0a8a27d1e491470f704 /Master/texmf-dist/source/latex/lwarp/lwarp.dtx
parentf3fa6542348613dc0e90fae7be09cd7f9c2f95d2 (diff)
lwarp (12may18)
git-svn-id: svn://tug.org/texlive/trunk@47695 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/lwarp/lwarp.dtx')
-rw-r--r--Master/texmf-dist/source/latex/lwarp/lwarp.dtx1446
1 files changed, 1212 insertions, 234 deletions
diff --git a/Master/texmf-dist/source/latex/lwarp/lwarp.dtx b/Master/texmf-dist/source/latex/lwarp/lwarp.dtx
index 8ddf02cd890..147c859e0f6 100644
--- a/Master/texmf-dist/source/latex/lwarp/lwarp.dtx
+++ b/Master/texmf-dist/source/latex/lwarp/lwarp.dtx
@@ -16,7 +16,7 @@
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{lwarp}
-%<package> [2018/04/26 v0.55 Allows LaTeX to directly produce HTML5 output.]
+%<package> [2018/05/12 v0.56 Allows LaTeX to directly produce HTML5 output.]
%
%<*driver>
\documentclass{ltxdoc}
@@ -1165,8 +1165,8 @@ It is recommended to use \pkg{cleveref} instead of \pkg{ntheorem}'s
\newcommand{\limitsgraphics}{%
For \cs{includegraphics} with \texttt{.pdf} files,
\index{graphics>PDF files}
-\index{PDF images}
-\index{images>PDF}
+\index{PDF images>using}
+\index{images>PDF>using}
\watchout[\texttt{.pdf} image files]
the user should provide a \texttt{.pdf} image file, and also
a \texttt{.svg}, \texttt{.png}, or \texttt{.jpg} version of the same image.
@@ -1180,9 +1180,11 @@ or some other format otherwise.
For \HTML, one of the other formats is used instead.
\DescribeProgram{pdftocairo}
-To convert a \PDF\ image to \SVG, use the utility \texttt{pdftocairo}:\userentry{
-pdftocairo -svg filename.pdf
-}
+To convert a \PDF\ image to \SVG, use the utility \texttt{pdftocairo}:
+\userentry{pdftocairo -svg filename.pdf}
+
+For a large number of images, use \prog{lwarpmk}:
+\userentry{lwarpmk pdftosvg *.pdf \qquad \textrm{(or a list of filenames)}}
If a \texttt{.pdf} file is referred to with its file extension,
a link to the \texttt{.pdf} file will appear in the \HTML\ output.
@@ -1251,14 +1253,16 @@ When a math expression, \env{picture}, or \tikz\ environment is added or
\watchout[adding/removing]
removed, the \SVG\ images must be re-created by entering \cmds{lwarpmk limages}
to maintain the proper image-file associations.
+Inline \SVG\ math may be hashed and thus not need to be recreated, but
+display math and objects such as \tikz\ may move to new image numbers when
+the document is changed.
Before attempting to create the \SVG\ image files,
\prog{lwarpmk} verifies that the \HTML\ version of the document exists and
-has correct internal image references.
+has correct internal image references.\footnote{This becomes important
+when dealing with a document containing thousands of images.}
If it is necessary to recompile the document's \HTML\ version, \prog{lwarpmk}
will inform so with an error message.%
-\footnote{This becomes important when dealing with a document containing
-thousands of images.}
If \HTML\ appears where an \SVG\ image should be,\watchout[\HTML\ instead of images]%
\index{math>appearing as \HTML}%
@@ -1280,8 +1284,9 @@ Expressing math as \SVG\ images has the advantage of representing
the math exactly as \LaTeX\ would, but has the disadvantage of requiring
an individual file for each math expression.
\watchout[Lots of files!]
-For inline math, \pkg{lwarp} uses an MD5 hash on its \LaTeX\ source
-to combine multiple instances of identical inline expressions into a single image file,
+For inline math, and some other objects, \pkg{lwarp} uses an MD5 hash
+on its \LaTeX\ source to combine multiple instances of identical inline expressions
+into a single image file,
but display math and other environments such as \env{picture} and \tikz\ require
one image file each.
For a document with a large amount of math,
@@ -1467,6 +1472,8 @@ or the packages \pkg{multirow}, \pkg{longtable}, \pkg{supertabular}, or \pkg{xta
\item [Rules:] \
\begin{itemize}
+ \item Doubled \cs{hline}s, \cs{midrule}s, and vertical rules are supported.
+
\item Vertical rules next to either side of an \texttt{@} or \texttt{!} column
\margintag{vertical rules}
are displayed on both sides of the column.
@@ -1971,6 +1978,12 @@ Some units will require that the expression be placed inside math mode.
for \brand{MathJax} is not currently hosted at any public CDN,
thus \pkg{siunitx} is not usable with \brand{MathJax} unless a local copy
of this extension is created first.}
+
+Tabular \texttt{S} columns are rendered as simple \texttt{c} columns,
+\watchout[\env{tabular}]
+and tabular \texttt{s} columns are not supported.
+These may be replaced by \texttt{c} columns with each cell contained in
+\cs{num} or \cs{si}.
}
\newcommand{\limitsnicefrac}{%
@@ -2154,7 +2167,7 @@ This boolean may be tested by the user for later use.
%<*package>
% \fi
%
-% \CheckSum{23632}
+% \CheckSum{24234}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -2251,6 +2264,7 @@ This boolean may be tested by the user for later use.
% \changes{v0.53}{2018/04/01}{\ 2018/04/01}
% \changes{v0.54}{2018/04/22}{\ 2018/04/22}
% \changes{v0.55}{2018/04/26}{\ 2018/04/26}
+% \changes{v0.56}{2018/05/12}{\ 2018/05/12}
@@ -2310,7 +2324,7 @@ This boolean may be tested by the user for later use.
%
% A modular package-loading system uses the \pkg{lwarp} version of a package for
% \HTML\ when available.
-% More than two hundred \LaTeX\ packages are supported with these high-level source
+% More than 270 \LaTeX\ packages are supported with these high-level source
% compatibility replacements, and many others work as-is.
%
% A tutorial is provided to quickly introduce the user to the major components
@@ -2448,6 +2462,34 @@ This boolean may be tested by the user for later use.
%
% \begin{description}
% \needspace{2\baselineskip}
+% \item[v0.56:] \
+% \begin{itemize}
+% \item Added
+% \margintag{\prog{lwarpmk}}
+% \begin{sourcedisplay}
+% lwarpmk pdftosvg <list-of-PDF-files>
+% \end{sourcedisplay}
+% to quickly convert a document's \PDF\ images to \SVG, for use with \HTML.
+% See \cref{sec:limitsgraphics}.
+% \item Added support for |-shell-escape|. See \cref{sec:shellescape}.
+% \item Added support for \pkg{array} |w| and |W| columns.
+% \margintag{\env{tabular}}
+% \item Fix: \cs{multicolumn} parameter handling.
+% \item Added support for double \cs{hline}s, \cs{midrule}s, and vertical rules.
+% \item Added support for \pkg{arydshln} dashed lines
+% with \HTML\ \env{tabular}, but
+% reverts to plain rules for \env{lateximage}
+% and \SVG\ math \env{array}.
+% \item Fix: \cs{thinspace}.
+% \margintag{misc. fixes}
+% \item Fix: \pkg{paralist} compact environments.
+% \item Added \pkg{parnotes}, \pkg{quoting}, \pkg{lua-check-hyphen},
+% \pkg{tocenter}, \pkg{underscore}.
+% \margintag{packages}
+% \item Verified works with \pkg{babelbib}, \pkg{bibunits}, \pkg{bodegraph},
+% \pkg{fast-diagram}, \pkg{nicematrix}, \pkg{structmech}.
+% \end{itemize}
+% \needspace{2\baselineskip}
% \item[v0.55:] \
% \begin{itemize}
% \item Fix: Extraneous space in file links, which also
@@ -3505,7 +3547,7 @@ This boolean may be tested by the user for later use.
% \pkg{ebook}, \pkg{everyshi},
% \pkg{fancyhdr}, \pkg{fwlw}, \pkg{geometry}, \pkg{grid}, \pkg{gridset},
% \pkg{ltxgrid}, \pkg{pagegrid}, \pkg{pagesel}, \pkg{preview},
-% \pkg{scrlayer-scrpage}, \pkg{textarea}, \pkg{titleps},
+% \pkg{scrlayer-scrpage}, \pkg{textarea}, \pkg{titleps}, \pkg{tocenter},
% \pkg{turnthepage}, \pkg{typearea}, \pkg{vmargin},
% \pkg{watermark}, \pkg{zwpagelayout}. \\
%
@@ -3527,7 +3569,7 @@ This boolean may be tested by the user for later use.
%
% Glossary: & \pkg{glossaries} and \prog{xindy} are used. \\
%
-% Bibliography: & \pkg{backref}, \pkg{biblatex}, \pkg{bibunits},
+% Bibliography: & \pkg{babelbib}, \pkg{backref}, \pkg{biblatex}, \pkg{bibunits},
% \pkg{chapterbib}, \pkg{cite}, \pkg{hypernat}, \pkg{natbib}. \\
%
% \midrule
@@ -3546,7 +3588,7 @@ This boolean may be tested by the user for later use.
% Footnotes: & Adds \progcode{FootnoteDepth} to print footnotes at section breaks.
% \pkg{endheads}, \pkg{endnotes},
% \pkg{footmisc}, \pkg{footnote}, \pkg{footnpag},
-% \pkg{marginnote}, \pkg{nccfoots}, \pkg{pagenote}, \pkg{sidenote}. \\
+% \pkg{marginnote}, \pkg{nccfoots}, \pkg{pagenote}, \pkg{parnotes}, \pkg{sidenote}. \\
%
% \midrule
%
@@ -3563,7 +3605,7 @@ This boolean may be tested by the user for later use.
% Additional math: & Math fonts via \SVG\ images, \pkg{resizegather}, \pkg{xy}.
%
% Tested to work as-is:
-% \pkg{amscd}, \pkg{bm}, \pkg{braket}, \pkg{delarray},
+% \pkg{amscd}, \pkg{bm}, \pkg{braket}, \pkg{delarray}, \pkg{nicematrix},
% \pkg{pb-diagram}, \pkg{tikz-cd}, etc. \\
%
% Display math with \cs{displaymathother}: & %
@@ -3587,7 +3629,7 @@ This boolean may be tested by the user for later use.
% \midrule
%
% Tabular: &
-% \env{tabular} environment, \pkg{array}, \pkg{bigdelim}, \pkg{booktabs},
+% \env{tabular} environment, \pkg{array}, \pkg{arydshln}, \pkg{bigdelim}, \pkg{booktabs},
% \pkg{colortbl}, \pkg{diagbox}, \pkg{longtable}, \pkg{ltxtable},
% \pkg{multirow}, \pkg{supertabular}, \pkg{tabularx}, \pkg{tabulary},
% \pkg{threeparttable}, \pkg{xtab}. \\
@@ -3632,7 +3674,7 @@ This boolean may be tested by the user for later use.
% \env{minipage}, \cs{parbox}: & Some \HTMLfive-imposed limitations.
% Nested minipages are supported. \pkg{pbox}.\\
%
-% Quotations: & \pkg{csquotes}, \pkg{epigraph}, \pkg{verse}. \\
+% Quotations: & \pkg{csquotes}, \pkg{epigraph}, \pkg{quoting}, \pkg{verse}. \\
%
% Verbatim: &
% \pkg{fancyvrb}, \pkg{moreverb}, \pkg{shortvrb}, \pkg{verbatim}. \\
@@ -3658,10 +3700,10 @@ This boolean may be tested by the user for later use.
% Direct formatting: & \cs{emph}, \cs{textsuperscript},
% \cs{textbf}, etc are supported.
% \cs{bfseries}, etc.\ are only supported in some cases.
-% \pkg{cancel}, \pkg{hyphenat}, \pkg{lettrine}, \pkg{luacolor},
+% \pkg{cancel}, \pkg{hyphenat}, \pkg{lettrine}, \pkg{lua-check-hyphen}, \pkg{luacolor},
% \pkg{magaz}, \pkg{pdfrender}, \pkg{realscripts}, \pkg{relsize},
% \pkg{scalefnt}, \pkg{soul}, \pkg{soulpos}, \pkg{soulutf8},
-% \pkg{textfit}, \pkg{ulem}. \\
+% \pkg{textfit}, \pkg{ulem}, \pkg{underscore}. \\
%
% Ordinals: & \pkg{engord}, \pkg{fmtcount}, \pkg{nth}. \\
%
@@ -3694,9 +3736,11 @@ This boolean may be tested by the user for later use.
% \pkg{listings}, \pkg{mhchem}, \pkg{phfqit}.
%
% Tested to work as-is:
-% \pkg{blochsphere}, \pkg{bohr}, \pkg{circuitikz}, \pkg{elements},
+% \pkg{blochsphere}, \pkg{bodegraph}, \pkg{bohr}, \pkg{circuitikz},
+% \pkg{elements}, \pkg{fast-diagram},
% \pkg{hepnicenames}, \pkg{heppennames},
-% \pkg{linop}, \pkg{pgfgantt}, \pkg{physics}, \pkg{simpler-wick}, \pkg{slashed}.
+% \pkg{linop}, \pkg{pgfgantt}, \pkg{physics}, \pkg{simpler-wick}, \pkg{slashed},
+% \pkg{structmech}.
% \\
%
% \midrule
@@ -4544,12 +4588,13 @@ This boolean may be tested by the user for later use.
% used as a homepage, so the document index is in \texttt{\_Index.html}.}
% \end{enumerate}
%
-% \item View the homepage in a web browser.
+% \item View the \HTML\ page in a web browser.
%
% \qquad Open the file |tutorial.html| in a web browser.
%
-% Note that math is still displayed as its plain-text \LaTeX\ source
-% \margintag{math}
+% Note that math is still displayed as its \attribute{alt} tag, which is
+% \margintag{math}
+% the plain-text \LaTeX\ source,
% until the
% images of the math expressions have been generated. Math may be
% displayed as \SVG\ images or by a \brand{MathJax} script, as seen in
@@ -4636,7 +4681,6 @@ This boolean may be tested by the user for later use.
% may not support some math-related packages.
%
%
-%
% \clearpage
% \subsection{Changing the CSS style}
%
@@ -4701,9 +4745,8 @@ This boolean may be tested by the user for later use.
% rather than modification times, so |lwarpmk again| will not trigger a
% recompile, but \prog{latexmk} has a much better awareness of changes than
% the \prog{lwarpmk} utility does and it is likely to correctly know when to
-% recompile. A recompile may be forced by making a small change to the source.
-%
-% A single recompile may be forced with:
+% recompile. A recompile may be forced by making a small change to the source,
+% and a single recompile may be forced with:
% \margintag{forced single-pass recompile}
% \userentry{lwarpmk print1} \quad and/or
% \userentry{lwarpmk html1}
@@ -4720,11 +4763,12 @@ This boolean may be tested by the user for later use.
% \item Remove the auxiliary files for the project:
% \userentry{lwarpmk cleanall}
%
-% \item Use \prog{xelatex} or \prog{lualatex} to recompile the printed version.
+% \item Use \prog{xelatex} or \prog{lualatex} to compile the printed version
+% a single time.
% \userentry{xelatex tutorial.tex} \quad -or-
% \userentry{lualatex tutorial.tex}
%
-% When the recompile occurs,
+% When the compile occurs,
% the configuration files for \prog{lwarpmk} are modified to remember
% which \TeX\ engine was used. \XeLaTeX\ or \LuaLaTeX\ will be used for
% future runs of \prog{lwarpmk}.
@@ -4733,7 +4777,11 @@ This boolean may be tested by the user for later use.
% \userentry{lwarpmk print} \quad -and-
% \userentry{lwarpmk html}
%
-% \item Also remember to update the indexes and recompile again.
+% \item Also remember to update the indexes and recompile again:
+% \userentry{lwarpmk htmlindex}
+% \userentry{lwarpmk html}
+% \userentry{lwarpmk printindex}
+% \userentry{lwarpmk print}
% \end{enumerate}
%
%
@@ -4771,6 +4819,8 @@ This boolean may be tested by the user for later use.
% In each case, the document will have to be recompiled afterwards:
% \userentry{lwarpmk html1}
% \userentry{lwarpmk html}
+% \userentry{lwarpmk print1}
+% \userentry{lwarpmk print}
%
%
%
@@ -4793,11 +4843,25 @@ This boolean may be tested by the user for later use.
% \subsection{Cleaning the images from the \filenm{lateximages} directory}
% \changes{v0.53}{2018/04/01}{Docs: \cmds{lwarpmk cleanlimages}.}
%
-% To remove the images from the \filenm{lateximages} directory, including
-% all \SVG\ math images:
+% The \filenm{lateximage} directory contains \SVG\ images automatically generated
+% for inline and display math, \pkg{tikz}, etc.
+% To remove all the images from the \filenm{lateximages} directory:
% \userentry{lwarpmk cleanlimages}
%
%
+% \subsection{Converting PDF images to SVG}
+% \changes{v0.56}{2018/04/29}{Docs: \cmds{lwarpmk pdftosvg}.}
+%
+% \HTML\ cannot display \PDF\ images, so any external \PDF\ graphics images must
+% be converted to \SVG\ format.
+% \prog{pdftocairo} may be used one image at a time,
+% but \prog{lwarpmk} provides a way to convert images in bulk:
+% \userentry{lwarpmk pdftosvg *.pdf \qquad \textrm{(or a list of files)}}
+% \index{SVG>converting from PDF}
+% \index{PDF images>converting to SVG}
+% \index{images>PDF>converting to SVG}
+%
+%
% \subsection{Creating HTML from an incomplete compile}
% \changes{v0.53}{2018/04/01}{Docs: \cmds{lwarpmk pdftohtml}.}
%
@@ -4839,6 +4903,8 @@ This boolean may be tested by the user for later use.
% convert each target to \HTML\ files.
%
%
+% \clearpage
+%
% \section{Converting an existing document}
% \label{sec:convertexisting}
%
@@ -4883,7 +4949,7 @@ This boolean may be tested by the user for later use.
% \item Possible option clashes with \pkg{memoir}. See \cref{sec:limitsmemoir}.
% \item Other changes as per \nameref{sec:limitations}, \cref{sec:limitations}.
% \end{enumerate}
-% \item Create an SVG version of any PDF image.
+% \item Convert any \PDF\ images to \SVG. See \cref{sec:limitsgraphics}.
% \item Manually compile the print version with \prog{pdflatex},
% \prog{lualatex}, or \prog{xelatex}.
% \item |lwarpmk print| to finish the print version.
@@ -4897,8 +4963,19 @@ This boolean may be tested by the user for later use.
%
% \section{Additional details}
%
-% \label{sec:usage}
%
+% \subsection{Shell escape}
+% \label{sec:shellescape}
+% \index{shell escape}
+%
+% \DescribeOption{-shell-escape}
+% Some documents require the use of an external program,
+% which is allowed when using the |-shell-escape| command-line option.
+% When the document is first compiled manually,
+% and also whenever the print version is recompiled,
+% \pkg{lwarp} detects and remembers
+% whether shell escape is enabled. If so, it will also be enabled when
+% the document is recompiled with \prog{lwarpmk}.
%
%
% \subsection{Font and UTF-8 support}
@@ -6164,18 +6241,19 @@ This boolean may be tested by the user for later use.
% A starred sectional unit does not have a \acro{TOC} entry unless one is placed
% manually. The typical method using \cs{phantomsection} and \cs{addcontentsline}
% works for inline text but fails when the new starred section is given its own
-% webpage after the \acro{TOC} entry is created.
+% webpage after the \acro{TOC} entry is created, or when creating an \EPUB\ where
+% the \acro{TOC} entry will point to the page before the starred section.
% If the starred section has its own \HTML\ page but no correct \acro{TOC} entry
% \watchout[inaccessible \HTML\ page]
% pointing to that page, the page will be inaccessible unless some other link is created.
-%
+%
% \DescribeMacro{\ForceHTMLTOC}
% To automatically force the \HTML\ version of the document to have a \acro{TOC} entry
-% for a starred section, use \cs{ForceHTMLTOC} just before the \cs{chapter*} or
-% \cs{section*}. The \acro{TOC} will only be assigned for \HTML\ output, not
-% for print output, and it will appear in the main \acro{TOC} and also the side\acro{TOC}
-% per page.
-%
+% for a starred section, use \cs{ForceHTMLTOC} just before
+% the \cs{chapter*} or \cs{section*},
+% and place \cs{phantomsection} and \cs{addcontentsline} inside a \env{warpprint}
+% environment.
+%
% For print output, \cs{ForceHTMLTOC} and \cs{ForceHTMLPage} have no effect.
%
%
@@ -6308,6 +6386,9 @@ This boolean may be tested by the user for later use.
%
% \DescribePackage{graphics}
% \DescribePackage{graphicx}
+% \index{SVG>converting from PDF}
+% \index{PDF images>converting to SVG}
+% \index{images>PDF>converting to SVG}
% \limitsgraphics
%
%
@@ -8417,6 +8498,7 @@ For a possible alternative, see package(s) #2.}
\LWR@loadafter{ltcaption}
\LWR@loadafter{ltxgrid}
\LWR@loadafter{ltxtable}
+\LWR@loadafter{lua-check-hyphen}
\LWR@loadafter{luacolor}
\LWR@loadafter{luatodonotes}
\LWR@loadafter{magaz}
@@ -8456,6 +8538,7 @@ For a possible alternative, see package(s) #2.}
\LWR@notmemoirloadafter{pagenote}
\LWR@loadafter{pagesel}
\LWR@loadafter{paralist}
+\LWR@loadafter{parnotes}
\LWR@notmemoirloadafter{parskip}
\LWR@loadafter{pbox}
\LWR@loadafter{pdfrender}
@@ -8468,6 +8551,7 @@ For a possible alternative, see package(s) #2.}
\LWR@loadafter{prettyref}
\LWR@loadafter{preview}
\LWR@loadafter{quotchap}
+\LWR@loadafter{quoting}
\LWR@loadafter{ragged2e}
\LWR@loadafter{realscripts}
\LWR@loadafter{relsize}
@@ -8518,6 +8602,7 @@ For a possible alternative, see package(s) #2.}
\LWR@notmemoirloadafter{titling}
% \LWR@loadafter{tocbasic}% preloaded by koma-script classes
\LWR@notmemoirloadafter{tocbibind}
+\LWR@loadafter{tocenter}
\LWR@notmemoirloadafter{tocloft}
\LWR@loadafter{tocstyle}
\LWR@loadafter{todo}
@@ -8530,6 +8615,7 @@ For a possible alternative, see package(s) #2.}
% \begin{macrocode}
% \LWR@loadafter{typearea}% preloaded by koma-script classes
\LWR@loadafter{ulem}
+\LWR@loadafter{underscore}
\LWR@loadafter{upref}
\LWR@loadafter{url}
\LWR@loadafter{varioref}% no lwarp package provided
@@ -9702,6 +9788,7 @@ top=1in,bottom=1in,%
% \end{macrocode}
% \begin{macrocode}
\let\LWR@origcomma\,
+\let\LWR@origthinspace\thinspace
\let\LWR@origtilde~
\let\LWR@origenskip\enskip
\let\LWR@origquad\quad
@@ -9983,6 +10070,7 @@ top=1in,bottom=1in,%
% \changes{v0.54}{2018/04/06}{\filenm{lwarpmk.conf}: Option \optn{IndexLanguage} changed to \optn{xindyLanguage}.}
% \changes{v0.54}{2018/04/06}{\filenm{lwarpmk.conf}: Option \optn{xindyCodepage} added.}
% \changes{v0.54}{2018/04/06}{\filenm{lwarpmk.conf}: Option \optn{pdftotextEnc} added.}
+% \changes{v0.56}{2018/05/11}{\filenm{lwarpmk.conf}: Records \texttt{-shell-escape}.}
%
% \codeprint
% \begin{macrocode}
@@ -10009,6 +10097,7 @@ homehtmlfilename = "\HomeHTMLFilename"%
}
\immediate\write\LWR@quickfile{htmlfilename = "\HTMLFilename"}
\immediate\write\LWR@quickfile{latexmk = "\ifbool{LWR@latexmk}{true}{false}"}
+\immediate\write\LWR@quickfile{shellescape = "\ifshellescape true\else false\fi"}
\immediate\write\LWR@quickfile{xindylanguage = "\LWR@xindyLanguage"}
\immediate\write\LWR@quickfile{xindycodepage = "\LWR@xindyCodepage"}
\immediate\write\LWR@quickfile{xindystyle = "\LWR@xindyStyle"}
@@ -10029,6 +10118,7 @@ homehtmlfilename = "\HomeHTMLFilename"%
% \changes{v0.54}{2018/04/06}{\filenm{*.lwarpmkconf}: Option \optn{IndexLanguage} changed to \optn{xindyLanguage}.}
% \changes{v0.54}{2018/04/06}{\filenm{*.lwarpmkconf}: Option \optn{xindyCodepage} added.}
% \changes{v0.54}{2018/04/06}{\filenm{*.lwarpmkconf}: Option \optn{pdftotextEnc} added.}
+% \changes{v0.56}{2018/05/11}{\filenm{*.lwarpmkconf}: Records \texttt{-shell-escape}.}
%
% \begin{macrocode}
\begin{warpprint}
@@ -10054,6 +10144,7 @@ homehtmlfilename = "\HomeHTMLFilename"%
}
\immediate\write\LWR@quickfile{htmlfilename = "\HTMLFilename"}
\immediate\write\LWR@quickfile{latexmk = "\ifbool{LWR@latexmk}{true}{false}"}
+\immediate\write\LWR@quickfile{shellescape = "\ifshellescape true\else false\fi"}
\immediate\write\LWR@quickfile{xindylanguage = "\LWR@xindyLanguage"}
\immediate\write\LWR@quickfile{xindycodepage = "\LWR@xindyCodepage"}
\immediate\write\LWR@quickfile{xindystyle = "\LWR@xindyStyle"}
@@ -10080,6 +10171,8 @@ homehtmlfilename = "\HomeHTMLFilename"%
% \changes{v0.30}{2017/04/26}{Fix: \filenm{*.css} files only written in print mode.}
% \changes{v0.50}{2018/03/02}{\filenm{lwarp.css}: Improved \SVG\ display math centering.}
% \changes{v0.54}{2018/04/24}{\filenm{lwarp.css}: Fix: Text-decoration-skip: auto.}
+% \changes{v0.56}{2018/04/27}{\filenm{lwarp.css}: Added \attribute{span.textbf}, etc.}
+% \changes{v0.56}{2018/05/09}{\filenm{lwarp.css}: Added \attribute{div.textbf}, etc.}
%
% ^^A *lwarp.css
% \begin{macrocode}
@@ -10146,7 +10239,7 @@ span.indexsubsubitem {margin-left: 4em}
div.hidden, span.hidden { display: none ; }
-kbd {
+kbd, span.texttt {
font-family: "DejaVu Mono", "Bitstream Vera Mono", "Lucida Console",
"Nimbus Mono L", "Liberation Mono", "FreeMono", "Andale Mono",
"Courier New", monospace;
@@ -10155,22 +10248,24 @@ kbd {
pre { padding: 3pt ; }
-span.strong { font-weight: bold; }
+span.strong, span.textbf, div.strong, div.textbf { font-weight: bold; }
-span.textmd { font-weight: normal; }
+span.textit, div.textit { font-style: italic; }
-span.textsc { font-variant: small-caps; }
+span.textmd, div.textmd { font-weight: normal; }
-span.textsl { font-style: oblique; }
+span.textsc, div.textsc { font-variant: small-caps; }
-span.textup { font-variant: normal; }
+span.textsl, div.textsl { font-style: oblique; }
-span.textrm {
+span.textup, div.textup { font-variant: normal; }
+
+span.textrm, div.textrm {
font-family: "DejaVu Serif", "Bitstream Vera Serif",
"Lucida Bright", Georgia, serif;
}
-span.textsf {
+span.textsf, div.textsf {
font-family: "DejaVu Sans", "Bitstream Vera Sans",
Geneva, Verdana, sans-serif ;
}
@@ -10460,8 +10555,7 @@ div.titlepage {
.footnotes {
font-size: .85em ;
- margin: 3ex 1em 0ex 1em ;
- padding-bottom: 1ex ;
+ margin: 3ex 2em 0ex 2em ;
border-top: 1px solid silver ;
}
@@ -10504,7 +10598,7 @@ div.marginparblock br
section.textbody div.footnotes{
- margin: 3ex 0em 0ex 0em ;
+ margin: 3ex 2em 0ex 2em ;
border-bottom: 2px solid silver ;
}
@@ -10999,7 +11093,14 @@ 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: */
@@ -12265,6 +12366,8 @@ src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-
% \changes{v0.54}{2018/04/11}{\prog{lwarpmk}: Verifies image references before \progcode{lwarpmk limages}.}
% \changes{v0.54}{2018/04/11}{\prog{lwarpmk}: Verifies \HTML\ version exists before \progcode{lwarpmk limages}.}
% \changes{v0.54}{2018/04/19}{\prog{lwarpmk}: Improved error if configuration file does not exist.}
+% \changes{v0.56}{2018/04/29}{\prog{lwarpmk}: Added \progcode{lwarpmk pdftosvg}.}
+% \changes{v0.56}{2018/05/11}{\prog{lwarpmk}: Supports \texttt{-shell-escape}.}
%
% The following is only generated if the \optn{lwarpmk} option
% was given to \pkg{lwarp}.
@@ -12281,7 +12384,7 @@ src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-
-- Print the usage of the lwarpmk command:
-printversion = "v0.55"
+printversion = "v0.56"
function printhelp ()
print ("lwarpmk: Use lwarpmk -h or lwarpmk --help for help.") ;
@@ -12304,6 +12407,7 @@ lwarpmk pdftohtml [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 clean [project]: Remove .aux, .toc, .lof/t, .idx, .ind, .log, *_html_inc.*, .gl*
lwarpmk cleanall [project]: Remove auxiliary files and also project.pdf, *.html
lwarpmk cleanlimages: Removes all images from the "lateximages" directory.
@@ -12326,13 +12430,14 @@ sourcename = "projectname" (the source-code filename w/o .tex)
homehtmlfilename = "index" (or perhaps the project name)
htmlfilename = "" (or "projectname" - filename prefix)
latexmk = "false" (or "true" to use latexmk to build PDFs)
+shellescape = "false"
xindylanguge = "english" (use a language supported by xindy)
xindycodepage = "utf8" (use a codepage supported by xindy)
xindystyle = "lwarp.xdy" (or a custom file based on lwarp.xdy)
pdftotextenc = "UTF-8" (use an encoding supported by pdftotext)
--
Filenames must contain only letters, numbers, underscore, or dash.
-Values must be in "quotes".
+Values must be in upright "quotes".
]] ) ;
end
@@ -12377,13 +12482,13 @@ function loadconf ()
local conffile = "lwarpmk.conf"
-- Optional configuration filename:
if ( arg[2] ~= nil ) then conffile = arg[2]..".lwarpmkconf" end
--- Default xindy language:
+-- Additional defaults:
+opsystem = "Unix"
+latexmk = "false"
+shellescape = "false"
xindylanguage = "english"
--- Default xindy codepage:
xindycodepage = "utf8"
--- Default xindystyle:
xindystyle = "lwarp.xdy"
--- Default pdftotext encoding:
pdftotextenc = "UTF-8"
-- Verify the file exists:
if (lfs.attributes(conffile,"mode")==nil) then
@@ -12439,6 +12544,7 @@ elseif ( cvarname == "sourcename" ) then sourcename = cvalue
elseif ( cvarname == "homehtmlfilename" ) then homehtmlfilename = cvalue
elseif ( cvarname == "htmlfilename" ) then htmlfilename = cvalue
elseif ( cvarname == "latexmk" ) then latexmk = cvalue
+elseif ( cvarname == "shellescape" ) then shellescape = cvalue
elseif ( cvarname == "xindylanguage" ) then xindylanguage = cvalue
elseif ( cvarname == "xindycodepage" ) then xindycodepage = cvalue
elseif ( cvarname == "xindystyle" ) then xindystyle = cvalue
@@ -12535,7 +12641,13 @@ end
function onetime (fsuffix)
print("lwarpmk: Compiling with " .. latexname .. " " .. sourcename..fsuffix)
-err = os.execute(latexname .. " " .. sourcename..fsuffix)
+local thisshellescape = " "
+if ( shellescape == "true" ) then
+ thisshellescape = " -shell-escape "
+else
+ thisshellescape = " "
+end
+err = os.execute(latexname .. thisshellescape .. sourcename..fsuffix)
if ( err ~= 0 ) then
print ("lwarpmk: ===")
print ("lwarpmk: Compile error.")
@@ -12806,6 +12918,13 @@ end -- function
-- Use latexmk to compile source and index:
-- fsuffix is "" for print, or "_html" for HTML
function compilelatexmk ( fsuffix )
+-- Maybe select the shell-escape option:
+local thisshellescape = " "
+if ( shellescape == "true" ) then
+ thisshellescape = " -shell-escape "
+else
+ thisshellescape = " "
+end
-- The recorder option is required to detect changes in <project>.tex
-- while we are loading <project>_html.tex.
err=os.execute ( "latexmk -pdf -dvi- -ps- -recorder "
@@ -12817,7 +12936,7 @@ err=os.execute ( "latexmk -pdf -dvi- -ps- -recorder "
.. " -C " .. xindycodepage
.. " -L " .. xindylanguage .. " /"
.. opquote
- .. " -pdflatex=\"" .. latexname .." %O %S\" "
+ .. " -pdflatex=\"" .. latexname .. thisshellescape .." %O %S\" "
.. sourcename..fsuffix ..".tex" ) ;
if ( err ~= 0 ) then
print ("lwarpmk: ===")
@@ -12825,9 +12944,21 @@ if ( err ~= 0 ) then
print ("lwarpmk: ===")
os.exit(1)
end
-end
-
+end -- function
+-- Converts PDF files to SVG files.
+-- The filenames are arg[2] and up.
+-- arg[1] is the command "pdftosvg".
+function convertpdftosvg ()
+for i = 2 , #arg do
+ if (lfs.attributes(arg[i],"mode")==nil) then
+ print ("lwarpmk: File \"" .. arg[i] .. "\" does not exist.")
+ else
+ print ("lwarpmk: Converting \"" .. arg[i] .. "\"")
+ os.execute ( "pdftocairo -svg " .. arg[i] )
+ end -- if
+end -- do
+end --function
-- lwarpmk --version :
@@ -13033,6 +13164,12 @@ loadconf ()
os.execute ( rmname .. " lateximages/*" )
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
@@ -14470,6 +14607,14 @@ end -- not --version
% \end{macro}
+% \begin{macro}{\PN@parnotes@auto} Redefined by \pkg{parnotes} to print
+% paragraph notes at the end of each paragraph.
+% \begin{macrocode}
+\def\PN@parnotes@auto{}%
+% \end{macrocode}
+% \end{macro}
+
+
% \begin{macro}{\LWR@openparagraph}
% \begin{macrocode}
\newcommand*{\LWR@openparagraph}
@@ -14498,6 +14643,15 @@ end -- not --version
% so it's OK to generate paragraph tags.
% \begin{macrocode}
{% yes nest par tags
+% \end{macrocode}
+% If \pkg{parnotes} is used, paragraph notes are inserted
+% before starting the next paragraph:
+% \changes{v0.56}{2018/05/09}{Added support for \pkg{parnotes}.}
+% \begin{macrocode}
+ \PN@parnotes@auto%
+% \end{macrocode}
+% The opening paragraph tag:
+% \begin{macrocode}
\LWR@htmltagc{\LWR@tagregularparagraph}%
% \end{macrocode}
% Now have started a paragraph.
@@ -14559,7 +14713,7 @@ end -- not --version
% \begin{macrocode}
{% yes nest par tags
% \end{macrocode}
-% Print a closing tag and some extra vertical space:
+% Print a closing tag and some extra vertical space.
% \begin{macrocode}
\unskip%
\LWR@htmltagc{/\LWR@tagregularparagraph}%
@@ -14568,10 +14722,17 @@ end -- not --version
% No longer doing a paragraph:
% \begin{macrocode}
\global\boolfalse{LWR@doingapar}%
+% \end{macrocode}
% Disable the special \env{minipage} \& \cs{hspace} interaction
% until a new minipage is found:
% \begin{macrocode}
\global\boolfalse{LWR@minipagethispar}%
+% \end{macrocode}
+% If \pkg{parnotes} is used, paragraph notes are inserted
+% after ending the previous paragraph:
+% \changes{v0.56}{2018/05/09}{Added support for \pkg{parnotes}.}
+% \begin{macrocode}
+ \PN@parnotes@auto%
}% end of yes nest par tags
}% end of handling pars
% \end{macrocode}
@@ -14732,15 +14893,15 @@ end -- not --version
% \begin{macrocode}
{\ClearPreHook{par}}%
% \end{macrocode}
-% Else: do nothing
+% Else: Do nothing:
% \begin{macrocode}
{}%
% \end{macrocode}
-% no longer in paragraph mode
+% No longer in paragraph mode:
% \begin{macrocode}
\global\setbool{LWR@doingstartpars}{false}%
% \end{macrocode}
-% no \element{p} tag to undo:
+% No \element{p} tag to undo:
% \begin{macrocode}
\global\boolfalse{LWR@doingapar}%
}% nestspan
@@ -15012,7 +15173,8 @@ end -- not --version
% The default of |3| places footnotes before each \cs{subsubsection} or higher.
% See \cref{tab:depthsheadings} for a table of \LaTeX\ section headings.
% \changes{v0.43}{2017/11/08}{Added \progcode{FootnoteDepth}.}
-% \changes{v0.52}{2018/03/28}{Changed \progcode{FootnoteDepth} default to \cs{subsbusection}.}
+% \changes{v0.52}{2018/03/28}{Changed \progcode{FootnoteDepth} default
+% to \cs{subsbusection}.}
% \begin{macrocode}
\newcounter{FootnoteDepth}
\setcounter{FootnoteDepth}{3}
@@ -18421,7 +18583,7 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% This causes \pkg{lwarp} to mistakenly place an empty span between
% \HTML\ list tags.
% \begin{macrocode}
-\LetLtxMacro{\hspace}{\LWR@nohspace}%
+\LetLtxMacro\hspace\LWR@nohspace%
% \end{macrocode}
% Process the original \cs{item} code:
% \begin{macrocode}
@@ -18429,7 +18591,7 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% \end{macrocode}
% Restore \cs{hspace} for use in the item text:
% \begin{macrocode}
-\LetLtxMacro{\hspace}{\LWR@hspace}%
+\LetLtxMacro\hspace\LWR@hspace%
\LWR@htmltag{dt}#1\LWR@htmltag{/dt}%
\LWR@orignewline%
\LWR@htmltag{dd}%
@@ -18529,7 +18691,9 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% \section{Tabular}
%
% This is arguably the most complicated part of the entire package.
-% Numerous tricks are employed to handle the syntax which is involved.
+% Numerous tricks are employed to handle the syntax of the \LaTeX\ core
+% and the various tabular-related packages.
+%
%
% \subsection{Limitations}
%
@@ -18541,14 +18705,33 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% \changes{v0.33}{2017/07/10}{Add: Tabular at and bang columns now have their
% own HTML columns.}
%
-% \subsection{Token lookahead}
-
-% Used by \cs{LWR@futurenonspacelet} to look at the next token.
-
% \codehtml
% \begin{macrocode}
\begin{warpHTML}
% \end{macrocode}
+%
+%
+% \subsection{Temporary package-related macros}
+%
+% These macros are temporary placeholders for macros defined by various
+% packages. If the relevent package is not loaded, these placeholders are used instead.
+%
+%
+% \subsubsection{\pkg{arydshln}}
+%
+% Emualated by the original \LaTeX\ non-dashed versions.
+% \changes{v0.56}{2018/05/04}{\pkg{arydshln}: Added.}
+% \begin{macrocode}
+\LetLtxMacro\hdashline\hline
+\LetLtxMacro\cdashline\cline
+\LetLtxMacro\firsthdashline\hline
+\LetLtxMacro\lasthdashline\hline
+% \end{macrocode}
+%
+%
+% \subsection{Token lookahead}
+
+% Used by \cs{LWR@futurenonspacelet} to look at the next token.
% \begin{macro}{\LWR@mynexttoken}
% \begin{macrocode}
@@ -18602,12 +18785,16 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
\boolfalse{LWR@tabularcelladded}
% \end{macrocode}
-% \DescribeBoolean{LWR@doinghline}
-% True if the next row will have an hline or midrule above it.
-% Also used for \cs{midrule}.
+% \DescribeCounter{LWR@hlines}
+% Number of \cs{hline}s or \cs{midrule}s above the next row.
% \begin{macrocode}
-\newbool{LWR@doinghline}
-\boolfalse{LWR@doinghline}
+\newcounter{LWR@hlines}
+% \end{macrocode}
+
+% \DescribeCounter{LWR@hdashedlines}
+% Number of \pkg{arydshln} dashed lines above the next row.
+% \begin{macrocode}
+\newcounter{LWR@hdashedlines}
% \end{macrocode}
% \DescribeBoolean{LWR@doingtbrule}
@@ -19025,7 +19212,8 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
not bool {LWR@exitingtabular} or%
bool{LWR@doingtbrule} or%
bool{LWR@doingcmidrule} or%
- bool{LWR@doinghline} or%
+ test{\ifnumcomp{\value{LWR@hlines}}{>}{0}} or%
+ test{\ifnumcomp{\value{LWR@hdashedlines}}{>}{0}} or%
bool{LWR@startedrow}%
}{%
% \end{macrocode}
@@ -19120,7 +19308,8 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% \end{macrocode}
% Additional setup:
% \begin{macrocode}
-\global\boolfalse{LWR@doinghline}%
+\setcounter{LWR@hlines}{0}%
+\setcounter{LWR@hdashedlines}{0}%
\global\boolfalse{LWR@doingtbrule}%
\global\boolfalse{LWR@doingcmidrule}%
\LWR@clearmidrules%
@@ -19143,6 +19332,31 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% \end{macro}
+% \subsection{Looking ahead in the column specifications}
+%
+% \begin{macro}{\LWR@columnspeclookahead} \marg{offset}
+%
+% Looks |offset| tokens ahead in the column specification,
+% setting \cs{LWR@strresulttwo}.
+%
+% The |w| column alignment will be seen as a single unit such as |{c}|.
+% \begin{macrocode}
+\newcommand*{\LWR@columnspeclookahead}[1]{%
+\setcounter{LWR@tempcountone}{\value{LWR@tablecolspecindex}}%
+\addtocounter{LWR@tempcountone}{#1}%
+\fullexpandarg%
+\StrChar{\LWR@origcolspec}{\arabic{LWR@tempcountone}}[\LWR@strresulttwo]%
+% \end{macrocode}
+% Get the contents of the first group in \cs{LWR@strresulttwo}:
+% \begin{macrocode}
+\exploregroups%
+\StrChar{\LWR@strresulttwo}{1}[\LWR@strresulttwo]%
+\noexploregroups%
+}
+% \end{macrocode}
+% \end{macro}
+
+
% \subsection{Parsing @, >, <, !, bar columns}
%
%
@@ -19169,7 +19383,8 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% \begin{macrocode}
\LWR@traceinfo{about to read the next token:}%
\expandarg%
-\StrChar{\LWR@origcolspec}{\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]
+\StrChar{\LWR@origcolspec}%
+ {\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]
\fullexpandarg%
% \end{macrocode}
% Store the result into a data array, expanding once out of \cs{LWR@colparameter}:
@@ -19184,7 +19399,8 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
}%
{% not at the left edge:
\LWR@traceinfo{not at the left edge}%
- \LWR@setexparray{LWR@colatspec}{\arabic{LWR@tabletotalcols}}{\LWR@colparameter}%
+ \LWR@setexparray{LWR@colatspec}%
+ {\arabic{LWR@tabletotalcols}}{\LWR@colparameter}%
\LWR@traceinfo{at \arabic{LWR@tabletotalcols}: %
\LWR@getexparray{LWR@colatspec}{\arabic{LWR@tabletotalcols}}}%
}%
@@ -19212,10 +19428,12 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% \begin{macrocode}
\LWR@traceinfo{about to read the next token:}%
\expandarg%
-\StrChar{\LWR@origcolspec}{\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]
+\StrChar{\LWR@origcolspec}%
+ {\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]
\fullexpandarg%
% \end{macrocode}
-% Store the result into a data array, expanding once out of \cs{LWR@colparameter}:
+% Store the result into a data array,
+% expanding once out of \cs{LWR@colparameter}:
% \begin{macrocode}
\LWR@traceinfo{have now read the next token}%
\ifnumcomp{\value{LWR@tabletotalcols}}{=}{0}%
@@ -19225,7 +19443,8 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
}%
{% not at the left edge:
\LWR@traceinfo{not at the left edge}%
- \LWR@setexparray{LWR@colbangspec}{\arabic{LWR@tabletotalcols}}{\LWR@colparameter}%
+ \LWR@setexparray{LWR@colbangspec}%
+ {\arabic{LWR@tabletotalcols}}{\LWR@colparameter}%
\LWR@traceinfo{bang \arabic{LWR@tabletotalcols}: \LWR@colparameter!}%
}%
\let\LWR@colparameter\relax%
@@ -19250,12 +19469,14 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% Read the next token, expanding once into \cs{LWR@colparameter}:
% \begin{macrocode}
\expandarg%
-\StrChar{\LWR@origcolspec}{\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]%
+\StrChar{\LWR@origcolspec}%
+ {\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]%
\fullexpandarg%
% \end{macrocode}
% Store the result into a data array, expanding once out of \cs{LWR@colparameter}:
% \begin{macrocode}
-\LWR@setexparray{LWR@colbeforespec}{\arabic{LWR@tabletotalcolsnext}}{\LWR@colparameter}%
+\LWR@setexparray{LWR@colbeforespec}%
+ {\arabic{LWR@tabletotalcolsnext}}{\LWR@colparameter}%
\let\LWR@colparameter\relax%
\booltrue{LWR@validtablecol}%
}
@@ -19276,12 +19497,14 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% Read the next token, expanding once into \cs{LWR@colparameter}:
% \begin{macrocode}
\expandarg%
-\StrChar{\LWR@origcolspec}{\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]%
+\StrChar{\LWR@origcolspec}%
+ {\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]%
\fullexpandarg%
% \end{macrocode}
% Store the result into a data array, expanding once out of \cs{LWR@colparameter}:
% \begin{macrocode}
-\LWR@setexparray{LWR@colafterspec}{\arabic{LWR@tabletotalcols}}{\LWR@colparameter}%
+\LWR@setexparray{LWR@colafterspec}%
+ {\arabic{LWR@tabletotalcols}}{\LWR@colparameter}%
\let\LWR@colparameter\relax%
\booltrue{LWR@validtablecol}%
}
@@ -19292,19 +19515,66 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% \begin{macro}{\LWR@parsebarcolumn} \qquad Handles vertical rules.
%
% \changes{v0.41}{2017/10/07}{Added vertical rules.}
+% \changes{v0.56}{2018/04/30}{Adds support for double vertical rules.}
%
% \begin{macrocode}
\newcommand*{\LWR@parsebarcolumn}{%
-\LWR@traceinfo{bar column}%
+\LWR@traceinfo{LWR@parsebarcolumn}%
+% \end{macrocode}
+% Remember the bar at this position:
+% \begin{macrocode}
+\ifnumcomp{\value{LWR@tabletotalcols}}{=}{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@tabletotalcols}}%
+ }%
+ \ifdefstring{\LWR@tempone}{tvertbarr}%
+ {%
+ \LWR@setexparray{LWR@colbarspec}%
+ {\arabic{LWR@tabletotalcols}}{tvertbarrdouble}%
+ }%
+ {%
+ \LWR@setexparray{LWR@colbarspec}%
+ {\arabic{LWR@tabletotalcols}}{tvertbarr}%
+ }%
+}%
+\booltrue{LWR@validtablecol}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\LWR@parsecoloncolumn} \qquad Handles vertical rules.
+%
+% \changes{v0.56}{2018/05/04}{\pkg{arydshln}: Added.}
+% \begin{macrocode}
+\newcommand*{\LWR@parsecoloncolumn}{%
+\LWR@traceinfo{LWR@parsecoloncolumn}%
% \end{macrocode}
% Remember the bar at this position:
% \begin{macrocode}
\ifnumcomp{\value{LWR@tabletotalcols}}{=}{0}%
{% left edge of the table:
- \LWR@setexparray{LWR@colbarspec}{leftedge}{tvertbarl}%
+ \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:
- \LWR@setexparray{LWR@colbarspec}{\arabic{LWR@tabletotalcols}}{tvertbarr}%
+ \edef\LWR@tempone{%
+ \LWR@getexparray{LWR@colbarspec}{\arabic{LWR@tabletotalcols}}%
+ }%
+ \ifdefstring{\LWR@tempone}{tvertbarrdash}%
+ {\LWR@setexparray{LWR@colbarspec}%
+ {\arabic{LWR@tabletotalcols}}{tvertbarrdoubledash}}%
+ {\LWR@setexparray{LWR@colbarspec}%
+ {\arabic{LWR@tabletotalcols}}{tvertbarrdash}}%
}%
\booltrue{LWR@validtablecol}%
}
@@ -19312,6 +19582,24 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% \end{macro}
%
%
+% \begin{macro}{\LWR@parsesemicoloncolumn} \qquad Handles vertical rules.
+%
+% \changes{v0.56}{2018/05/04}{\pkg{arydshln}: Added.}
+% \begin{macrocode}
+\newcommand*{\LWR@parsesemicoloncolumn}{%
+% \end{macrocode}
+% Treat |;| as a |:| column:
+% \begin{macrocode}
+\LWR@parsecoloncolumn%
+% \end{macrocode}
+% Skip the following width token:
+% \begin{macrocode}
+\addtocounter{LWR@tablecolspecindex}{1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
% \subsection{Parsing `l', `c', or `r' columns}
%
% \begin{macro}{\LWR@parsenormalcolumn} \marg{thiscolumn}
@@ -19354,6 +19642,24 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% \end{macro}
+% \subsection{Parsing `w' columns}
+%
+% \begin{macro}{\LWR@parsewcolumn}
+% The width will be ignored.
+% \begin{macrocode}
+\newcommand*{\LWR@parsewcolumn}{%
+% \end{macrocode}
+% \begin{macrocode}
+\LWR@columnspeclookahead{1}%
+\expandafter\LWR@parsenormalcolumn\expandafter{\LWR@strresulttwo}%
+% \end{macrocode}
+% Skips the following width and alignment tokens:
+% \begin{macrocode}
+\addtocounter{LWR@tablecolspecindex}{2}%
+}
+% \end{macrocode}
+% \end{macro}
+
% \subsection{Parsing `D' columns}
%
% From the \pkg{dcolumn} package.
@@ -19538,7 +19844,8 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% \begin{macrocode}
\whileboolexpr{%
not test{%
- \ifnumcomp{\value{LWR@tablecolspecindex}}{>}{\value{LWR@tablecolspecwidth}}%
+ \ifnumcomp{\value{LWR@tablecolspecindex}}{>}%
+ {\value{LWR@tablecolspecwidth}}%
}%
}%
{%
@@ -19576,16 +19883,30 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
\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{r}}{}%
+% \end{macrocode}
+% \begin{macrocode}
+\IfStrEq{\LWR@strresult}{S}{\LWR@parsenormalcolumn{c}}{}%
+\IfStrEq{\LWR@strresult}{s}{\LWR@parsenormalcolumn{c}}{}%
+% \end{macrocode}
+% \begin{macrocode}
\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}{}%
+% \end{macrocode}
+% \begin{macrocode}
\IfStrEq{\LWR@strresult}{p}{\LWR@parsepcolumn{p}}{}%
\IfStrEq{\LWR@strresult}{m}{\LWR@parsepcolumn{m}}{}%
\IfStrEq{\LWR@strresult}{b}{\LWR@parsepcolumn{b}}{}%
% \end{macrocode}
+% \changes{v0.56}{2018/05/10}{Added \pkg{array} \texttt{W} column.}
+% \begin{macrocode}
+\IfStrEq{\LWR@strresult}{w}{\LWR@parsewcolumn}{}%
+\IfStrEq{\LWR@strresult}{W}{\LWR@parsewcolumn}{}%
+% \end{macrocode}
% From the \pkg{dcolumn} package:
% \begin{macrocode}
\IfStrEq{\LWR@strresult}{D}{\LWR@parseDcolumn{c}}{}%
@@ -19621,7 +19942,7 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% \begin{macrocode}
\addtocounter{LWR@tablecolspecindex}{1}%
}% whiledo
-\LWR@traceinfo{LWR@parsetablecols: done}%
+\LWR@traceinfo{LWR@parsetablecols: Final table column spec: !\LWR@tablecolspec!}%
}%
% \end{macrocode}
% \end{macro}
@@ -19773,16 +20094,12 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% Create the row tag, with a class if necessary.
% \begin{macrocode}
\global\booltrue{LWR@intabularmetadata}%
- \ifbool{LWR@doinghline}%
+ \ifboolexpr{%
+ test{\ifnumcomp{\value{LWR@hlines}}{>}{0}} or%
+ test{\ifnumcomp{\value{LWR@hdashedlines}}{>}{0}}%
+ }%
{%
- \ifdefvoid{\LWR@ruleHTMLcolor}{%
- \LWR@htmltag{tr class="hline" }%
- }{%
- \LWR@htmltag{%
- tr class="hline" %
- style="border-top: 1px solid \LWR@origpound\LWR@ruleHTMLcolor "%
- }%
- }%
+ \LWR@htmltag{tr class="hline" }%
\LWR@orignewline%
}%
{% not doing hline
@@ -19792,8 +20109,9 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
\LWR@htmltag{tr class="tbrule"}%
}{%
\LWR@htmltag{%
- tr class="tbrule" %
- style="border-top: 1px solid \LWR@origpound\LWR@ruleHTMLcolor "%
+ tr class="tbrule" % space
+ style="border-top: 1px solid % space
+ \LWR@origpound\LWR@ruleHTMLcolor "%
}%
}%
\LWR@orignewline%
@@ -19855,6 +20173,7 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
"%
\LWR@tdstartstyles%
\LWR@addcmidrulewidth%
+ \LWR@addcdashline%
\LWR@addtabularrulecolors%
\LWR@tdendstyles%
}%
@@ -19938,7 +20257,8 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% \end{macrocode}
% Fetch the current column's alignment character into \cs{LWR@strresult}:
% \begin{macrocode}
- \StrChar{\LWR@tablecolspec}{\arabic{LWR@tablecolindex}}[\LWR@strresult]%
+ \StrChar{\LWR@tablecolspec}%
+ {\arabic{LWR@tablecolindex}}[\LWR@strresult]%
% \end{macrocode}
% print the start of a new table data cell:
% \begin{macrocode}
@@ -19962,7 +20282,9 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% \begin{macrocode}
\LWR@tdstartstyles%
\LWR@addcmidrulewidth%
- \StrChar{\LWR@tablecolspec}{\arabic{LWR@tablecolindex}}[\LWR@thiscolspec]%
+ \LWR@addcdashline%
+ \StrChar{\LWR@tablecolspec}%
+ {\arabic{LWR@tablecolindex}}[\LWR@thiscolspec]%
\LWR@addformatwpalignment{\LWR@thiscolspec}%
% \end{macrocode}
% Add styles for cell and rule colors:
@@ -19976,7 +20298,7 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
}%
\LWR@traceinfo{LWR@tabledatasinglecolumntag: done printing td tag}%
% \end{macrocode}
-% If this is a p, m, b, or X column, allow paragraphs:
+% If this is a |p|, |m|, |b|, or X column, allow paragraphs:
% \begin{macrocode}
\ifboolexpr{%
test{ \ifdefstring{\LWR@strresult}{p} } or
@@ -20025,6 +20347,12 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% (\cref{sec:dataarray}) of columns containing
% |r| if a midrule should be right trimmed for each column.
+% \DescribeObject{LWR@cdashlines}|LWR@cdashlines| is a data array
+% (\cref{sec:dataarray}) of columns each containing a |Y|
+% if an \pkg{arydshln} package "cdashed line" should be
+% created for this column.
+
+
% \DescribeCounter{LWR@midrulecounter}
% Indexes across the |LWR@midrules| and |LWR@trim<l/r>rules| data arrays.
@@ -20083,7 +20411,8 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
\setcounter{LWR@midrulecounter}{1}%
\whileboolexpr{%
not test{%
- \ifnumcomp{\value{LWR@midrulecounter}}{>}{\value{LWR@tablecolspecwidth}}%
+ \ifnumcomp{\value{LWR@midrulecounter}}{>}%
+ {\value{LWR@tablecolspecwidth}}%
}%
}%
{%
@@ -20091,6 +20420,7 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
\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}%
\addtocounter{LWR@midrulecounter}{1}%
}%
}
@@ -20129,24 +20459,68 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% \end{macro}
-% \begin{macro}{\LWR@docmidrule} \oarg{width} \marg{trim} \marg{leftcolumn-rightcolumn}
+% \begin{macro}{\LWR@docmidrule} \oarg{width} \parg{trim} \marg{leftcolumn-rightcolumn}
%
% Marks |LWR@midrules| array elements to be a non-zero width from left to right columns.
% Also marks trimming for the L and/or R columns.
%
% \begin{macrocode}
-\NewDocumentCommand{\LWR@docmidrule}{O{\LWR@cmidrulewidth} D(){} >{\SplitArgument{1}{-}}m}%
-{\LWR@subcmidrule{#1}{#2}#3}
+\NewDocumentCommand{\LWR@docmidrule}
+ {O{\LWR@cmidrulewidth} D(){} >{\SplitArgument{1}{-}}m}
+ {\LWR@subcmidrule{#1}{#2}#3}
+% \end{macrocode}
+% \end{macro}
+
+
+
+% \begin{macro}{\LWR@subcdashline} \marg{leftcolumn} \marg{rightcolumn}
+%
+% Marks |LWR@cdashlines| data array elements to be |Y| from
+% left to right columns.
+%
+% |LWR@doingcmidrule| is set to force an empty row at the end of the tabular
+% to create the rule.
+%
+% \begin{macrocode}
+\newcommand*{\LWR@subcdashline}[2]{%
+\setcounter{LWR@midrulecounter}{#1}%
+\whileboolexpr{%
+ not test {%
+ \ifnumcomp{\value{LWR@midrulecounter}}{>}{#2}%
+ }%
+}%
+{%
+ \LWR@setexparray{LWR@cdashlines}{\arabic{LWR@midrulecounter}}{Y}%
+ \addtocounter{LWR@midrulecounter}{1}%
+}% whiledo
+\booltrue{LWR@doingcmidrule}%
+}
+% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\LWR@docdashline} \marg{leftcolumn-rightcolumn}
+%
+% Marks |LWR@cdashlines| data array elements to be |Y| from
+% left to right columns.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\LWR@docdashline}
+ {>{\SplitArgument{1}{-}}m}%
+ {%
+ \LWR@subcdashline#1%
+ }
% \end{macrocode}
% \end{macro}
-% Used to compute margins, tabular trims:
+% Used to compute margins, tabular trims, column offsets:
% \begin{macrocode}
-\newlength{\LWR@templengthone}%
-\newlength{\LWR@templengthtwo}%
-\newlength{\LWR@templengththree}%
+\newlength{\LWR@templengthone}
+\newlength{\LWR@templengthtwo}
+\newlength{\LWR@templengththree}
+\newcounter{LWR@tempcountone}
% \end{macrocode}
@@ -20202,7 +20576,7 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
\ifdimcomp{\LWR@templengthone}{>}{0pt}%
{%
% \end{macrocode}
-% Print the class without left and right trim letters appended:
+% Print the class with left and right trim letters appended:
% \begin{macrocode}
\LWR@origtilde tdrule#1#2%
% \end{macrocode}
@@ -20301,6 +20675,28 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% \end{macro}
+% \begin{macro}{\LWR@addcdashline}
+%
+% Must be placed between \cs{LWR@tdstartstyles} and \cs{LWR@tdendstyles}.
+%
+% \changes{v0.56}{2018/05/04}{\pkg{arydshln}: Added.}
+% \begin{macrocode}
+\newcommand{\LWR@addcdashline}{%
+\edef\LWR@tempone{%
+ \LWR@getexparray{LWR@cdashlines}{\arabic{LWR@tablecolindex}}%
+}%
+\ifdefstring{\LWR@tempone}{Y}{%
+ \LWR@tdaddstyle%
+ border-top: 1pt dashed %
+ \ifdefvoid{\LWR@ruleHTMLcolor}%
+ {black}%
+ {\LWR@origpound\LWR@ruleHTMLcolor}%
+}{}%
+}
+% \end{macrocode}
+% \end{macro}
+
+
% \begin{macro}{\LWR@WPcell} \marg{text-align} \marg{vertical-align}
% \changes{v0.47}{2018/01/26}{Fix: Line wrap at \HTML\ hyphen.}
% \begin{macrocode}
@@ -20368,23 +20764,66 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
%
% \begin{macro}{\LWR@addtabularhrulecolor} Adds a cell's horizontal rule color style, if needed.
% \changes{v0.48}{2018/02/08}{\pkg{colortbl}: Added.}
+% \changes{v0.56}{2018/04/30}{Adds support for double \cs{hline}s and \cs{midrule}s.}
+% \changes{v0.56}{2018/05/02}{Adds support for \pkg{arydshln} dashed rules.}
% \begin{macrocode}
\newcommand*{\LWR@addtabularhrulecolor}{%
% \end{macrocode}
% If either form of horizontal rule is requested:
% \begin{macrocode}
-\ifboolexpr {
- bool{LWR@doinghline} or
- bool{LWR@doingtbrule}
+\ifboolexpr{%
+ test{\ifnumcomp{\value{LWR@hlines}}{>}{0}} or%
+ test{\ifnumcomp{\value{LWR@hdashedlines}}{>}{0}} or%
+ bool{LWR@doingtbrule}%
}{%
% \end{macrocode}
-% And if there is a custom horizontal color:
+% If there is a no custom color:
% \begin{macrocode}
- \ifdefvoid{\LWR@ruleHTMLcolor}{}%
+ \ifdefvoid{\LWR@ruleHTMLcolor}%
{%
- \LWR@tdaddstyle%
- border-top: 1px solid \LWR@origpound\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%
+ }{}}}%
+% \end{macrocode}
+% If no color and not doubled or dashed, then add nothing, since
+% a simpler rule is the default.
+% \begin{macrocode}
+ }%
+% \end{macrocode}
+% If there is a custom color:
+% \begin{macrocode}
+ {%
+ \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%
+ }}}%
+ }%
}{}%
}
% \end{macrocode}
@@ -20394,6 +20833,8 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
%
% \begin{macro}{\LWR@addtabularrulecolors} Adds a cell's rule color styles, if needed.
% \changes{v0.48}{2018/02/08}{\pkg{colortbl}: Added.}
+% \changes{v0.56}{2018/04/30}{Adds support for double vertical rules.}
+% \changes{v0.56}{2018/05/05}{Adds support for dashed vertical rules.}
%
% No color is added for the final row of empty cells which finishes each \env{tabular}.
%
@@ -20420,13 +20861,31 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% \begin{macrocode}
\ifdefstring{\LWR@tempone}{tvertbarl}{%
\LWR@tdaddstyle%
- border-left: 1px solid \LWR@origpound\LWR@vertruleHTMLcolor%
+ border-left: 1px solid % space
+ \LWR@origpound\LWR@vertruleHTMLcolor%
+ }{}%
+ \ifdefstring{\LWR@tempone}{tvertbarldouble}{%
+ \LWR@tdaddstyle%
+ border-left: 4px double % space
+ \LWR@origpound\LWR@vertruleHTMLcolor%
+ }{}%
+ \ifdefstring{\LWR@tempone}{tvertbarldash}{%
+ \LWR@tdaddstyle%
+ border-left: 1px dashed % space
+ \LWR@origpound\LWR@vertruleHTMLcolor%
+ }{}%
+ \ifdefstring{\LWR@tempone}{tvertbarldoubledash}{%
+ \LWR@tdaddstyle%
+ border-left: 2px dashed % space
+ \LWR@origpound\LWR@vertruleHTMLcolor%
}{}%
}{}%
% \end{macrocode}
% Possibly add a right vertical rule for this cell:
% \begin{macrocode}
- \edef\LWR@tempone{\LWR@getexparray{LWR@colbarspec}{\arabic{LWR@tablecolindex}}}%
+ \edef\LWR@tempone{%
+ \LWR@getexparray{LWR@colbarspec}{\arabic{LWR@tablecolindex}}%
+ }%
\ifdefstring{\LWR@tempone}{tvertbarr}{%
% \end{macrocode}
% Add a custom style if a vertical bar was requested:
@@ -20434,6 +20893,18 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
\LWR@tdaddstyle%
border-right: 1px solid \LWR@origpound\LWR@vertruleHTMLcolor%
}{}%
+ \ifdefstring{\LWR@tempone}{tvertbarrdouble}{%
+ \LWR@tdaddstyle%
+ border-right: 4px double \LWR@origpound\LWR@vertruleHTMLcolor%
+ }{}%
+ \ifdefstring{\LWR@tempone}{tvertbarrdash}{%
+ \LWR@tdaddstyle%
+ border-right: 1px dashed \LWR@origpound\LWR@vertruleHTMLcolor%
+ }{}%
+ \ifdefstring{\LWR@tempone}{tvertbarrdoubledash}{%
+ \LWR@tdaddstyle%
+ border-right: 2px dashed \LWR@origpound\LWR@vertruleHTMLcolor%
+ }{}%
}%
}
% \end{macrocode}
@@ -20498,8 +20969,11 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% Remembers multicolumn vertical rules if found in the column spec.
% \begin{macrocode}
-\newbool{LWR@mcolvertbarl}
-\newbool{LWR@mcolvertbarr}
+\newcounter{LWR@mcolvertbarsl}
+\newcounter{LWR@mcolvertbarsr}
+\newcounter{LWR@mcolvertbarsldash}
+\newcounter{LWR@mcolvertbarsrdash}
+\newboolean{LWR@mcolvertbaronleft}%
% \end{macrocode}
% \begin{macro}{\LWR@printmccoltype} \marg{colspec}
@@ -20526,27 +21000,59 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
\IfStrEq{\LWR@strresult}{P}{P}{}%
\IfStrEq{\LWR@strresult}{M}{M}{}%
\IfStrEq{\LWR@strresult}{B}{B}{}%
-\IfStrEq{\LWR@strresult}{S}{r}{}%
+% \end{macrocode}
+% \changes{v0.56}{2018/05/10}{Added \pkg{array} \texttt{W} column.}
+% \begin{macrocode}
+\IfStrEq{\LWR@strresult}{w}{w}{}%
+\IfStrEq{\LWR@strresult}{W}{W}{}%
+% \end{macrocode}
+% \begin{macrocode}
+\IfStrEq{\LWR@strresult}{S}{c}{}%
+\IfStrEq{\LWR@strresult}{s}{c}{}%
+% \end{macrocode}
+% \begin{macrocode}
\IfStrEq{\LWR@strresult}{X}{p}{}%
% \end{macrocode}
% \changes{v0.43}{2017/11/07}{Added vertical rules.}
+% \changes{v0.56}{2018/04/30}{Adds support for double vertical rules.}
+% \changes{v0.56}{2018/05/05}{Adds support for dashed vertical rules.}
% \begin{macrocode}
-\IfStrEq{\LWR@strresult}{|}{%
- \ifnumcomp{\value{LWR@tablemulticolspos}}{=}{1}% left edge?
- {\booltrue{LWR@mcolvertbarl}}% left edge
- {\booltrue{LWR@mcolvertbarr}}% not left edge
-}{}%
+\IfStrEq{\LWR@strresult}{|}%
+{%
+ \ifbool{LWR@mcolvertbaronleft}%
+ {\addtocounter{LWR@mcolvertbarsl}{1}}% left edge
+ {\addtocounter{LWR@mcolvertbarsr}{1}}% not left edge
+}%
+{%
+ \IfStrEq{\LWR@strresult}{:}%
+ {%
+ \ifbool{LWR@mcolvertbaronleft}%
+ {\addtocounter{LWR@mcolvertbarsldash}{1}}% left edge
+ {\addtocounter{LWR@mcolvertbarsrdash}{1}}% not left edge
+ }%
+ {%
+ \IfStrEq{\LWR@strresult}{;}%
+ {%
+ \ifbool{LWR@mcolvertbaronleft}%
+ {\addtocounter{LWR@mcolvertbarsldash}{1}}% left edge
+ {\addtocounter{LWR@mcolvertbarsrdash}{1}}% not left edge
+ }%
+ {\setboolean{LWR@mcolvertbaronleft}{false}}%
+ }%
+}%
\LWR@traceinfo{lwr@printmccoltype done}%
}
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\LWR@multicolpartext}
-% Print the data with paragraph tags:
+% \begin{macro}{\LWR@multicolpartext} \marg{num parameters}
+% Print the data with paragraph tags, advance to bypass the given number of parameters.
+% \changes{v0.56}{2018/05/12}{Fix: \cs{multicolumn} parameters.}
% \begin{macrocode}
-\newcommand*{\LWR@multicolpartext}{%
+\newcommand*{\LWR@multicolpartext}[1]{%
\LWR@startpars%
\LWR@multicoltext%
+\addtocounter{LWR@tablemulticolspos}{#1}%
\LWR@stoppars%
}
% \end{macrocode}
@@ -20609,15 +21115,33 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
\addtocounter{LWR@tablemulticolspos}{3}% skip parameters
\LWR@multicoltext%
}{}%
-\IfStrEq{\LWR@strresult}{p}{\LWR@multicolpartext}{}%
-\IfStrEq{\LWR@strresult}{m}{\LWR@multicolpartext}{}%
-\IfStrEq{\LWR@strresult}{b}{\LWR@multicolpartext}{}%
-\IfStrEq{\LWR@strresult}{P}{\LWR@multicolpartext}{}%
-\IfStrEq{\LWR@strresult}{M}{\LWR@multicolpartext}{}%
-\IfStrEq{\LWR@strresult}{B}{\LWR@multicolpartext}{}%
-\IfStrEq{\LWR@strresult}{S}{\LWR@multicolpartext}{}%
-\IfStrEq{\LWR@strresult}{X}{\LWR@multicolpartext}{}%
+% \end{macrocode}
+% \changes{v0.56}{2018/05/12}{Fix: \cs{multicolumn} parameters.}
+% \begin{macrocode}
+\IfStrEq{\LWR@strresult}{p}{\LWR@multicolpartext{0}}{}%
+\IfStrEq{\LWR@strresult}{m}{\LWR@multicolpartext{0}}{}%
+\IfStrEq{\LWR@strresult}{b}{\LWR@multicolpartext{0}}{}%
+\IfStrEq{\LWR@strresult}{P}{\LWR@multicolpartext{0}}{}%
+\IfStrEq{\LWR@strresult}{M}{\LWR@multicolpartext{0}}{}%
+\IfStrEq{\LWR@strresult}{B}{\LWR@multicolpartext{0}}{}%
+% \end{macrocode}
+% \changes{v0.56}{2018/05/10}{Added \pkg{array} \texttt{W} column.}
+% \begin{macrocode}
+\IfStrEq{\LWR@strresult}{w}{\LWR@multicolpartext{3}}{}%
+\IfStrEq{\LWR@strresult}{W}{\LWR@multicolpartext{3}}{}%
+% \end{macrocode}
+% \begin{macrocode}
+\IfStrEq{\LWR@strresult}{S}{\LWR@multicoltext}{}%
+\IfStrEq{\LWR@strresult}{s}{\LWR@multicoltext}{}%
+% \end{macrocode}
+% \begin{macrocode}
+\IfStrEq{\LWR@strresult}{X}{\LWR@multicolpartext{0}}{}%
\IfStrEq{\LWR@strresult}{|}{\LWR@multicolskip}{}%
+\IfStrEq{\LWR@strresult}{:}{\LWR@multicolskip}{}%
+\IfStrEq{\LWR@strresult}{;}{%
+ \LWR@multicolskip%
+ \addtocounter{LWR@tablemulticolspos}{1}% skip parameter
+}{}%
\IfStrEq{\LWR@strresult}{\detokenize{@}}{\LWR@multicolother{#1}}{}%
\IfStrEq{\LWR@strresult}{\detokenize{!}}{\LWR@multicolother{#1}}{}%
\IfStrEq{\LWR@strresult}{\detokenize{>}}{\LWR@multicolother{#1}}{}%
@@ -20655,8 +21179,9 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% \begin{macrocode}
\whileboolexpr{%
not test {%
- \ifnumcomp{\value{LWR@tablemulticolspos}}{>}{\value{LWR@tablemulticolswidth}}%
- }
+ \ifnumcomp{\value{LWR@tablemulticolspos}}{>}%
+ {\value{LWR@tablemulticolswidth}}%
+ }%
}%
{%
% \end{macrocode}
@@ -20677,6 +21202,8 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% \subsubsection{Multicolumn factored code}
% \begin{macro}{\LWR@addmulticolvertrulecolor}
+% \changes{v0.56}{2018/04/30}{Adds support for double vertical rules.}
+% \changes{v0.56}{2018/05/05}{Adds support for dashed vertical rules.}
% \begin{macrocode}
\newcommand*{\LWR@addmulticolvertrulecolor}{%
% \end{macrocode}
@@ -20686,17 +21213,41 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}%
% \end{macrocode}
% Left side:
% \begin{macrocode}
- \ifbool{LWR@mcolvertbarl}{%
+ \ifnumcomp{\value{LWR@mcolvertbarsl}}{=}{1}{%
\LWR@tdaddstyle%
border-left: 1px solid \LWR@origpound\LWR@vertruleHTMLcolor%
}{}%
+ \ifnumcomp{\value{LWR@mcolvertbarsl}}{>}{1}{%
+ \LWR@tdaddstyle%
+ border-left: 4px double \LWR@origpound\LWR@vertruleHTMLcolor%
+ }{}%
+ \ifnumcomp{\value{LWR@mcolvertbarsldash}}{=}{1}{%
+ \LWR@tdaddstyle%
+ border-left: 1px dashed \LWR@origpound\LWR@vertruleHTMLcolor%
+ }{}%
+ \ifnumcomp{\value{LWR@mcolvertbarsldash}}{>}{1}{%
+ \LWR@tdaddstyle%
+ border-left: 2px dashed \LWR@origpound\LWR@vertruleHTMLcolor%
+ }{}%
% \end{macrocode}
% Right side:
% \begin{macrocode}
- \ifbool{LWR@mcolvertbarr}{%
+ \ifnumcomp{\value{LWR@mcolvertbarsr}}{=}{1}{%
\LWR@tdaddstyle%
border-right: 1px solid \LWR@origpound\LWR@vertruleHTMLcolor%
}{}%
+ \ifnumcomp{\value{LWR@mcolvertbarsr}}{>}{1}{%
+ \LWR@tdaddstyle%
+ border-right: 4px double \LWR@origpound\LWR@vertruleHTMLcolor%
+ }{}%
+ \ifnumcomp{\value{LWR@mcolvertbarsrdash}}{=}{1}{%
+ \LWR@tdaddstyle%
+ border-right: 1px dashed \LWR@origpound\LWR@vertruleHTMLcolor%
+ }{}%
+ \ifnumcomp{\value{LWR@mcolvertbarsrdash}}{>}{1}{%
+ \LWR@tdaddstyle%
+ border-right: 2px dashed \LWR@origpound\LWR@vertruleHTMLcolor%
+ }{}%
}%
}
% \end{macrocode}
@@ -20769,8 +21320,11 @@ rowspan="#2" %
% \end{macrocode}
% Print the column type and vertical bars:
% \begin{macrocode}
-\boolfalse{LWR@mcolvertbarl}%
-\boolfalse{LWR@mcolvertbarr}%
+\setcounter{LWR@mcolvertbarsl}{0}%
+\setcounter{LWR@mcolvertbarsr}{0}%
+\setcounter{LWR@mcolvertbarsldash}{0}%
+\setcounter{LWR@mcolvertbarsrdash}{0}%
+\setboolean{LWR@mcolvertbaronleft}{true}%
\LWR@parsemulticolumnalignment{#5}{\LWR@printmccoltype}%
% \end{macrocode}
% If this column has a cmidrule, add ``rule'' to the end of the \HTML\ class tag.
@@ -20785,13 +21339,22 @@ rowspan="#2" %
% Also add vertical bar class.
% \changes{v0.41}{2017/10/07}{Added vertical rules.}
% \changes{v0.43}{2017/11/07}{Fix for vertical rules.}
-% \begin{macrocode}
-\ifbool{LWR@mcolvertbarl}{ tvertbarl}{}%
-\ifbool{LWR@mcolvertbarr}{ tvertbarr}{}%
+% \changes{v0.56}{2018/04/30}{Adds support for double vertical rules.}
+% \changes{v0.56}{2018/05/05}{Adds support for dashed vertical rules.}
+% \begin{macrocode}
+\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}{}%
% \end{macrocode}
% Close the class tag's opening quote:
+"% NOT A TYPO
% \begin{macrocode}
-"%
+%
% \end{macrocode}
% \changes{v0.42}{2017/10/26}{If \progcode{FormatWP} add cell alignment.}
% \begin{macrocode}
@@ -20803,6 +21366,7 @@ rowspan="#2" %
% \end{macrocode}
% \begin{macrocode}
\LWR@addcmidrulewidth%
+\LWR@addcdashline%
\LWR@addtabularhrulecolor%
\LWR@addmulticolvertrulecolor%
\LWR@addformatwpalignment{#5}%
@@ -20890,7 +21454,9 @@ rowspan="#2" %
% \end{macrocode}
% Create the multicolumn tag:
% \begin{macrocode}
-\LWR@domulticolumn{\arabic{LWR@tabletotalcols}}{\arabic{LWR@tabhtmlcoltotal}}{P}%
+\LWR@domulticolumn{\arabic{LWR@tabletotalcols}}%
+ {\arabic{LWR@tabhtmlcoltotal}}%
+ {P}%
{% \LWR@domulticolumn
\IfBooleanTF{#1}% star?
% \end{macrocode}
@@ -21328,65 +21894,105 @@ rowspan="#2" %
% \begin{macrocode}
\ifdefequal{\LWR@mynexttoken}{\mcolrowcell}%
{\let\mynext\LWR@donothing}{}%
-%
+% \end{macrocode}
+% \begin{macrocode}
\ifdefequal{\LWR@mynexttoken}{\TabularMacro}%
{\let\mynext\LWR@donothing}{}%
-%
+% \end{macrocode}
+% \begin{macrocode}
\ifdefequal{\LWR@mynexttoken}{\hline}%
{\let\mynext\LWR@donothing}{}%
-%
+% \end{macrocode}
+% \begin{macrocode}
\ifdefequal{\LWR@mynexttoken}{\firsthline}%
{\let\mynext\LWR@donothing}{}%
-%
+% \end{macrocode}
+% \begin{macrocode}
\ifdefequal{\LWR@mynexttoken}{\lasthline}%
{\let\mynext\LWR@donothing}{}%
-%
+% \end{macrocode}
+% \begin{macrocode}
\ifdefequal{\LWR@mynexttoken}{\toprule}%
{\let\mynext\LWR@donothing}{}%
-%
+% \end{macrocode}
+% \begin{macrocode}
\ifdefequal{\LWR@mynexttoken}{\midrule}%
{\let\mynext\LWR@donothing}{}%
-%
+% \end{macrocode}
+% \begin{macrocode}
\ifdefequal{\LWR@mynexttoken}{\cmidrule}%
{\let\mynext\LWR@donothing}{}%
-%
+% \end{macrocode}
+% \changes{v0.56}{2018/05/02}{Fix: \cs{morecmidrules}}
+% \begin{macrocode}
+\ifdefequal{\LWR@mynexttoken}{\morecmidrules}%
+ {\let\mynext\LWR@donothing}{}%
+% \end{macrocode}
+% \begin{macrocode}
\ifdefequal{\LWR@mynexttoken}{\specialrule}%
{\let\mynext\LWR@donothing}{}%
-%
+% \end{macrocode}
+% \begin{macrocode}
\ifdefequal{\LWR@mynexttoken}{\cline}%
{\let\mynext\LWR@donothing}{}%
-%
+% \end{macrocode}
+% \begin{macrocode}
\ifdefequal{\LWR@mynexttoken}{\bottomrule}%
{\let\mynext\LWR@donothing}{}%
-%
+% \end{macrocode}
+% \begin{macrocode}
\ifdefequal{\LWR@mynexttoken}{\rowcolor}%
{\let\mynext\LWR@donothing}{}%
-%
+% \end{macrocode}
+% \begin{macrocode}
\ifdefequal{\LWR@mynexttoken}{\arrayrulecolor}%
{\let\mynext\LWR@donothing}{}%
-%
+% \end{macrocode}
+% \begin{macrocode}
\ifdefequal{\LWR@mynexttoken}{\doublerulesepcolor}%
{\let\mynext\LWR@donothing}{}%
-%
+% \end{macrocode}
+% \begin{macrocode}
\ifdefequal{\LWR@mynexttoken}{\warpprintonly}%
{\let\mynext\LWR@donothing}{}%
-%
+% \end{macrocode}
+% \begin{macrocode}
\ifdefequal{\LWR@mynexttoken}{\warpHTMLonly}%
{\let\mynext\LWR@donothing}{}%
-%
+% \end{macrocode}
+% \begin{macrocode}
\ifdefequal{\LWR@mynexttoken}{\ldelim}%
{\let\mynext\LWR@donothing}{}%
-%
+% \end{macrocode}
+% \begin{macrocode}
\ifdefequal{\LWR@mynexttoken}{\rdelim}%
{\let\mynext\LWR@donothing}{}%
% \end{macrocode}
+% For \pkg{arydshln}:
+% \begin{macrocode}
+\ifdefequal{\LWR@mynexttoken}{\hdashline}%
+ {\let\mynext\LWR@donothing}{}%
+% \end{macrocode}
+% \begin{macrocode}
+\ifdefequal{\LWR@mynexttoken}{\cdashline}%
+ {\let\mynext\LWR@donothing}{}%
+% \end{macrocode}
+% \begin{macrocode}
+\ifdefequal{\LWR@mynexttoken}{\firsthdashline}%
+ {\let\mynext\LWR@donothing}{}%
+% \end{macrocode}
+% \begin{macrocode}
+\ifdefequal{\LWR@mynexttoken}{\lasthdashline}%
+ {\let\mynext\LWR@donothing}{}%
+% \end{macrocode}
% Ignore an empty line between rows:
% \changes{v0.45}{2017/12/06}{Fix: Empty line between rows.}
% \begin{macrocode}
\ifdefequal{\LWR@mynexttoken}{\par}%
{\let\mynext\LWR@donothing}{}%
% \end{macrocode}
-% no action for an \cs{end} token
+%
+% No action for an \cs{end} token.
%
% Add similar to the above for any other non-data tokens
% which might appear in the table.
@@ -21452,7 +22058,7 @@ rowspan="#2" %
-% \subsection{New \env{tabular} environment}
+% \subsection{HTML \env{tabular} environment}
% \codehtml
% \begin{macrocode}
@@ -21507,14 +22113,14 @@ rowspan="#2" %
\newcommand*{\LWR@HTMLhline}[1][]{%
\ifbool{FormatWP}%
{\LWR@docmidrule{1-\arabic{LWR@tabletotalcols}}}%
- {\booltrue{LWR@doinghline}}%
+ {\addtocounter{LWR@hlines}{1}}%
\LWR@getmynexttoken}%
}
{
\newcommand*{\LWR@HTMLhline}{%
\ifbool{FormatWP}%
{\LWR@docmidrule{1-\arabic{LWR@tabletotalcols}}}%
- {\booltrue{LWR@doinghline}}%
+ {\addtocounter{LWR@hlines}{1}}%
\LWR@getmynexttoken}%
}
}% AtBeginDocument
@@ -21577,7 +22183,8 @@ rowspan="#2" %
% \end{macrocode}
% Not yet doing any rules:
% \begin{macrocode}
-\global\boolfalse{LWR@doinghline}%
+\setcounter{LWR@hlines}{0}%
+\setcounter{LWR@hdashedlines}{0}%
\global\boolfalse{LWR@doingtbrule}%
\global\boolfalse{LWR@doingcmidrule}%
% \end{macrocode}
@@ -21679,7 +22286,8 @@ rowspan="#2" %
{\booltrue{LWR@doingtbrule}}%
}%
\LWR@getmynexttoken}%
-%
+% \end{macrocode}
+% \begin{macrocode}
\DeclareDocumentCommand{\midrule}{o d()}%
{%
\IfValueTF{##1}%
@@ -21687,29 +22295,67 @@ rowspan="#2" %
{%
\ifbool{FormatWP}%
{\LWR@docmidrule[##1](){1-\arabic{LWR@tabletotalcols}}}%
- {\booltrue{LWR@doinghline}}%
+ {\addtocounter{LWR@hlines}{1}}%
}%
\LWR@getmynexttoken}%
-%
-\DeclareDocumentCommand{\cmidrule}{O{\LWR@cmidrulewidth} d() m}%
-{\LWR@docmidrule[##1](##2){##3}\LWR@getmynexttoken}%
-%
-\DeclareDocumentCommand{\bottomrule}{o d()}%
- {%
- \IfValueTF{##1}%
+% \end{macrocode}
+% \begin{macrocode}
+\DeclareDocumentCommand{\cmidrule}{O{\LWR@cmidrulewidth} d() m}{%
+ \LWR@docmidrule[##1](##2){##3}%
+ \LWR@getmynexttoken%
+}%
+% \end{macrocode}
+% \begin{macrocode}
+\DeclareDocumentCommand{\bottomrule}{o d()}{%
+ \IfValueTF{##1}%
+ {\LWR@docmidrule[##1](){1-\arabic{LWR@tabletotalcols}}}%
+ {%
+ \ifbool{FormatWP}%
{\LWR@docmidrule[##1](){1-\arabic{LWR@tabletotalcols}}}%
- {%
- \ifbool{FormatWP}%
- {\LWR@docmidrule[##1](){1-\arabic{LWR@tabletotalcols}}}%
- {\booltrue{LWR@doingtbrule}}%
- }%
- \LWR@getmynexttoken}%
-%
+ {\booltrue{LWR@doingtbrule}}%
+ }%
+ \LWR@getmynexttoken%
+}%
+% \end{macrocode}
+% \begin{macrocode}
\DeclareDocumentCommand{\addlinespace}{o}{}%
+% \end{macrocode}
+% \begin{macrocode}
\DeclareDocumentCommand{\morecmidrules}{}{}%
+% \end{macrocode}
+% \begin{macrocode}
\DeclareDocumentCommand{\specialrule}{m m m d()}%
{\LWR@docmidrule[##1](){1-\arabic{LWR@tabletotalcols}}\LWR@getmynexttoken}%
% \end{macrocode}
+% \begin{macrocode}
+\DeclareDocumentCommand{\hdashline}{o}{%
+ \ifbool{FormatWP}%
+ {\LWR@docdashline{1-\arabic{LWR@tabletotalcols}}}%
+ {\addtocounter{LWR@hdashedlines}{1}}%
+ \LWR@getmynexttoken%
+}%
+% \end{macrocode}
+% \begin{macrocode}
+\DeclareDocumentCommand{\cdashline}{m}{%
+ \LWR@docdashline{##1}\LWR@getmynexttoken%
+}%
+% \end{macrocode}
+% \begin{macrocode}
+\DeclareDocumentCommand{\firsthdashline}{o}{%
+ \ifbool{FormatWP}%
+ {\LWR@docdashline{1-\arabic{LWR@tabletotalcols}}}%
+ {\addtocounter{LWR@hdashedlines}{1}}%
+ \LWR@getmynexttoken%
+}%
+% \end{macrocode}
+% \begin{macrocode}
+\DeclareDocumentCommand{\lasthdashline}{o}{%
+ \ifbool{FormatWP}%
+ {\LWR@docdashline{1-\arabic{LWR@tabletotalcols}}}%
+ {\addtocounter{LWR@hdashedlines}{1}}%
+ \LWR@getmynexttoken%
+}%
+% \end{macrocode}
% The following create data cells and will have no more data in this cell,
% so we do not want to look ahead for a possible data cell,
% so do not want to use \cs{LWR@getmynexttoken}.
@@ -23040,30 +23686,17 @@ autopage-\theLWR@currentautosec%
\IfFileExists{\jobname.#1}{%
\LWR@traceinfo{LWR@myshorttoc: loading}%
% \end{macrocode}
-% Make |@| a regular letter.
+%
% Many of the commands in the file will have |@| characters in them, so |@|
% \watchout
% must be made a regular letter.
-%
-% ^^A *88*
-% ^^A For \prog{pdflatex}, also change to |latin1| encoding.
-% ^^A When reading back a file with accented characters,
-% ^^A \watchout[disabled]
-% ^^A the encoding change seems to be required, rather than leaving it |utf8|.
% \begin{macrocode}
\begingroup%
-% \end{macrocode}
-% ^^A \ifxetexorluatex%
-% ^^A \else
-% ^^A \inputencoding{latin1}% currently disabled
-% ^^A \fi
-% \begin{macrocode}
\makeatletter%
% \end{macrocode}
% Read in the \TOC\ file:
% \begin{macrocode}
\@input{\jobname.#1}%
-% \makeatother
\endgroup%
}%
{}%
@@ -23809,7 +24442,7 @@ autopage-\theLWR@currentautosec%
\RenewDocumentCommand{\InlineClass}{o m +m}{##3}%
\RenewDocumentEnvironment{BlockClass}{o m}{}{}%
\renewcommand{\BlockClassSingle}[2]{##2}%
-\LetLtxMacro{\hspace}{\LWR@orighspace}%
+\LetLtxMacro\hspace\LWR@orighspace%
% \end{macrocode}
% \changes{v0.48}{2018/02/04}{Fix: Spacing in \SVG\ math, \env{lateximage}, \tikz.}
% \begin{macrocode}
@@ -23832,6 +24465,7 @@ autopage-\theLWR@currentautosec%
% \end{macrocode}
% \begin{macrocode}
\let\,\LWR@origcomma% disable HTML short unbreakable space
+\let\thinspace\LWR@origthinspace% disable HTML short unbreakable space
\let\textellipsis\LWR@origtextellipsis%
\let\textless\LWR@origtextless%
\let\textgreater\LWR@origtextgreater%
@@ -23893,7 +24527,7 @@ autopage-\theLWR@currentautosec%
\LetLtxMacro\mbox\LWR@origmbox%
% \end{macrocode}
% \begin{macrocode}
-\let\makebox\LWR@origmakebox%
+\LetLtxMacro\makebox\LWR@origmakebox%
\let\fbox\LWRprint@fbox%
\let\fboxBlock\LWRprint@fbox%
\LetLtxMacro\fminipage\LWRprint@fminipage%
@@ -27802,19 +28436,35 @@ width:\LWR@printlength{\LWR@tempwidth}%
% Prints the text with the current font choices.
%
% \changes{v0.48}{2018/02/02}{Added. Improves font control.}
+% \changes{v0.56}{2018/04/27}{Added \attribute{span.textbf}, etc.}
% \begin{macrocode}
\newcommand*{\LWR@textcurrentfont}[1]{%
-\csuse{text\LWR@f@family}{%
-\csuse{text\LWR@f@series}{%
-\csuse{text\LWR@f@shape}{%
-#1%
-}%
-}%
-}%
+\InlineClass{%
+ text\LWR@f@family\LWR@origtilde{}%
+ text\LWR@f@series\LWR@origtilde{}%
+ text\LWR@f@shape%
+ }%
+ {#1}%
}
% \end{macrocode}
% \end{macro}
+% \begin{environment}{LWR@blocktextcurrentfont}
+%
+% Prints the contents with the current font choices.
+%
+% \changes{v0.56}{2018/05/09}{Added \attribute{div.textbf}, etc.}
+% \begin{macrocode}
+\newenvironment*{LWR@blocktextcurrentfont}{%
+\BlockClass{%
+ text\LWR@f@family\LWR@origtilde{}%
+ text\LWR@f@series\LWR@origtilde{}%
+ text\LWR@f@shape%
+ }%
+}{\endBlockClass}
+% \end{macrocode}
+% \end{environment}
+
% \changes{v0.48}{2018/02/02}{Improved font control.}
% \changes{v0.50}{2018/02/20}{Robustify macros.}
%
@@ -28034,9 +28684,11 @@ width:\LWR@printlength{\LWR@tempwidth}%
% |\,| must be redefined after |\RequirePackage{printlen}|
% \changes{v0.45}{2017/12/29}{Improved: Robust \cs{\,}, \cs{~}, and \cs{textellipsis} commands.}
+% \changes{v0.56}{2018/05/09}{Added \cs{thinspace}.}
% Direct-formatting space commands become \HTML\ entities:
% \begin{macrocode}
\renewrobustcmd*{\,}{\HTMLunicode{202f}} % HTML thin non-breakable space
+\renewrobustcmd*{\thinspace}{\HTMLunicode{202f}} % HTML thin non-breakable space
% \end{macrocode}
% ^^A \renewcommand*{\,}{\HTMLunicode{2009}} % HTML thin wrappable space
% ^^A \renewcommand*{\,}{\HTMLentity{nbsp}} % regular-width non-breakable space
@@ -28309,7 +28961,7 @@ width:\LWR@printlength{\LWR@tempwidth}%
%
% Handles special minipage \& horizontal space interactions.
% \begin{macrocode}
-\LetLtxMacro{\hspace}{\LWR@hspace}
+\LetLtxMacro\hspace\LWR@hspace
% \end{macrocode}
% \end{macro}
@@ -29983,6 +30635,127 @@ span style="width:\LWR@printlength{\ALG@thistlm}; display:inline-block;"%
%
%
%
+% \iffalse
+%<*arydshln>
+% \fi
+%
+% \part{lwarp-arydshln.sty}
+
+% \section{arydshln}
+%
+% \credits{Hiroshi Nakashima}
+%
+% \DescribePackage{arydshln}
+% \pkg{arydshln} heavily patches tabular code, so the
+% actual package is not used.
+% \pkg{arydshln} is emulated for \HTML\ \env{tabular},
+% and reverts to solid rules for \SVG\ math \env{array}
+% and \env{tabular} in a \env{lateximage}.
+%
+% CSS is not able to display a double-dashed border, so
+% a single-dashed rule is displayed as a single-dashed border, and
+% a double-dashed rule is displayed as a thicker single-dashed border.
+%
+% \changes{v0.56}{2018/05/02}{\pkg{arydshln}: Added.}
+%
+% \codehtml
+%
+% \pkg{array} is required to allow \cs{newcolumn} below.
+% \begin{macrocode}
+\RequirePackage{array}
+% \end{macrocode}
+% \begin{macrocode}
+\LWR@ProvidesPackageDrop{arydshln}
+% \end{macrocode}
+%
+% Ignored, but included for source compatibility:
+% \begin{macrocode}
+\newdimen\dashlinedash \dashlinedash4pt %
+\newdimen\dashlinegap \dashlinegap4pt %
+\let\hdashlinewidth\dashlinedash
+\let\hdashlinegap\dashlinegap
+
+\def\ADLnullwide{}
+\def\ADLsomewide{}
+\def\ADLnullwidehline{}
+\def\ADLsomewidehline{}
+
+\def\ADLactivate{}
+\def\ADLinactivate{}
+\newcommand*{\ADLdrawingmode}[1]{}
+\newcommand*{\ADLnoshorthanded}{}
+\newcommand*{\dashgapcolor}[2][]{}
+\newcommand*{\nodashgapcolor}{}
+% \end{macrocode}
+%
+% In a \env{lateximage}, revert to solid vertical rules:
+% \begin{macrocode}
+\appto\LWR@restoreorigformatting{
+\newcolumntype{:}{|}%
+\newcolumntype{;}[1]{|}%
+\LetLtxMacro\hdashline\hline%
+}
+% \end{macrocode}
+%
+%
+% Some of these macros are already defined as temporary placeholders in the
+% \pkg{lwarp} core, so they must be redefined here.
+%
+% The emulated defaults also work for an emulated print mode inside a \env{lateximage}:
+% \begin{macrocode}
+\def\hdashline{
+% \adl@hdashline\adl@ihdashline
+ \adl@hdashline\adl@inactivehdl
+}
+\def\adl@hdashline#1{\noalign{\ifnum0=`}\fi
+% \ifadl@zwhrule \vskip-\arrayrulewidth
+% \else
+% \adl@hline\adl@connect\arrayrulewidth
+ \hrule \@height \arrayrulewidth% lwarp
+% \fi
+ \@ifnextchar[%]
+ {#1}%
+ {#1[%
+% \dashlinedash/\dashlinegap
+ 1pt/1pt
+ ]}}
+% \def\adl@ihdashline[#1/#2]{\ifnum0=`{\fi}%
+% \multispan{\adl@columns}\unskip \adl@hcline\z@[#1/#2]%
+% \noalign{\ifnum0=`}\fi
+% \futurelet\@tempa\adl@xhline}
+\def\adl@inactivehdl[#1/#2]{
+% \ifadl@zwhrule \vskip-\arrayrulewidth \fi
+ \hrule\@height\arrayrulewidth
+ \futurelet\@tempa\adl@xhline}
+\def\adl@xhline{\ifx\@tempa\hline \adl@ixhline\fi
+ \ifx\@tempa\hdashline \adl@ixhline\fi
+ \ifnum0=`{\fi}}
+\def\adl@ixhline{\vskip\doublerulesep \adl@hline\relax\doublerulesep}
+\def\adl@hline#1#2{%
+% \@tempcnta#2
+% \global\advance\adl@totalheight\@tempcnta
+% \xdef\adl@rowsL{\adl@rowsL
+% (#1/\number\@tempcnta);}%
+% \xdef\adl@rowsR{\adl@rowsR
+% (#1/\number\@tempcnta);}
+}
+
+\def\cdashline#1{\noalign{\ifnum0=`}\fi
+ \@ifnextchar[%]
+% {\adl@cdline[#1]}%
+% {\adl@cdline[#1][\dashlinedash/\dashlinegap]}
+ {\adl@inactivecdl[#1]}%
+ {\adl@inactivecdl[#1][\dashlinedash/\dashlinegap]}
+}
+
+\def\adl@inactivecdl[#1-#2][#3]{\ifnum0=`{\fi}\cline{#1-#2}}
+% \end{macrocode}
+
+% \iffalse
+%</arydshln>
+% \fi
+%
+%
%
% \iffalse
%<*atbegshi>
@@ -35139,8 +35912,7 @@ solid \LWR@origpound\LWR@tempcolor ; %
%
% Float styles are ignored.
% \begin{macrocode}
-\newcommand{\floatstyle}[1]{%
-}
+\newcommand{\floatstyle}[1]{}
% \end{macrocode}
% \end{noindmacro}
@@ -39373,6 +40145,35 @@ width=\KFLT@imagewidth,height=\KFLT@h]{\KFLT@i}%
%
%
%
+% \iffalse
+%<*lua-check-hyphen>
+% \fi
+%
+% \part{lwarp-lua-check-hyphen.sty}
+%
+% \section{lua-check-hyphen}
+%
+% \DescribePackage{lua-check-hyphen}
+% \pkg{lua-check-hyphen} is ignored.
+%
+% \changes{v0.56}{2018/04/26}{\pkg{lua-check-hyphen}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR@ProvidesPackageDrop{lua-check-hyphen}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand*{\LuaCheckHyphen}[1]{}
+% \end{macrocode}
+%
+% \iffalse
+%</lua-check-hyphen>
+% \fi
+%
+%
+%
%
% \iffalse
%<*luacolor>
@@ -39905,7 +40706,7 @@ border-radius: \LWR@mdfprintlength{roundcorner} ; \LWR@orignewline
% \env{mdframed} environment may not work with the \HTML\ versions of the following,
% so restore them to their originals while inside \env{mdframed}:
% \begin{macrocode}
-\LetLtxMacro{\hspace}{\LWR@orighspace}%
+\LetLtxMacro\hspace\LWR@orighspace%
\LetLtxMacro\rule\LWR@origrule%
\LetLtxMacro\makebox\LWR@origmakebox%
\LWR@startpars%
@@ -41067,6 +41868,7 @@ class="td%
% \begin{macrocode}
\LWR@tdstartstyles%
\LWR@addcmidrulewidth%
+\LWR@addcdashline%
\LWR@addtabularrulecolors%
\LWR@tdendstyles%
}%
@@ -42414,6 +43216,8 @@ class="td%
% \pkg{paralist} is supported with minor changes.
% \changes{v0.34}{2017/07/27}{\pkg{paralist}: Added.}
+% \changes{v0.56}{2018/05/06}{\pkg{paralist}: Fixes for
+% \env{compactenum}, \env{compactitem}, \env{compactdesc}.}
%
% \codehtml
% \begin{macrocode}
@@ -42422,12 +43226,12 @@ class="td%
%
% The compact environments are identical to the regular ones:
% \begin{macrocode}
-\AtBeginEnvironment{compactitem}{\LWR@itemizestart}
-\AtBeginEnvironment{compactenum}{\LWR@enumeratestart}
-\AtBeginEnvironment{compactdesc}{\LWR@descriptionstart}
-\AtEndEnvironment{compactitem}{\LWR@listend}
-\AtEndEnvironment{compactenum}{\LWR@listend}
-\AtEndEnvironment{compactdesc}{\LWR@listend}
+\LetLtxMacro\compactitem\itemize
+\LetLtxMacro\compactenum\enumerate
+\LetLtxMacro\compactdesc\description
+\LetLtxMacro\endcompactitem\enditemize
+\LetLtxMacro\endcompactenum\endenumerate
+\LetLtxMacro\endcompactdesc\enddescription
% \end{macrocode}
%
% For the inline environments, revert \cs{item} to its original print-mode version:
@@ -42450,6 +43254,79 @@ class="td%
%
%
%
+% \iffalse
+%<*parnotes>
+% \fi
+%
+% \part{lwarp-parnotes.sty}
+%
+% \section{parnotes}
+%
+% \credits{Chelsea Hughes}
+%
+% \DescribePackage{parnotes}
+% \pkg{parnotes} is supported with some patches.
+%
+% \changes{v0.56}{2018/05/08}{\pkg{parnotes}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR@ProvidesPackagePass{parnotes}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\long\def\PN@parnote@real#1#2{%
+ \parnotemark{#1}%
+ % Unless this is the first parnote in \PN@text, add a separator first
+ \unless\ifx\PN@text\@empty\g@addto@macro\PN@text{\parnoteintercmd}\fi
+ % Redefine \@currentlabel to the parnote label, so \label works
+ \g@addto@macro\PN@text{%
+% \phantomsection%
+ \def\@currentlabel{#1}%
+ \def\cref@currentlabel{% lwarp
+ [parnotemark][\arabic{parnotemark}][]\theparnotemark%
+ }%
+ }%
+ \g@addto@macro\PN@text{%
+ \LWR@textcurrentfont{% lwarp
+ \parnotemark{#1}\nolinebreak\thinspace#2%
+ }%
+ }%
+}
+
+\def\PN@parnotes@real{%
+ % We call \par later, so this avoids recursion with \PN@parnotes@auto
+ \PN@inparnotestrue
+ \unless\ifvmode\par\fi
+ % Avoid page breaks between a paragraph and its parnotes
+ \nopagebreak\addvspace{\parnotevskip}%
+ \LWR@forcenewpage% lwarp
+ \begin{BlockClass}{footnotes}% lwarp
+ {\parnotefmt{\PN@text}\par}%
+ \end{BlockClass}% lwarp
+ \global\def\PN@text{}%
+ \addvspace{\parnotevskip}%
+ %
+ % These can be enabled or disabled by package options
+ %
+ \PN@disable@indent
+ \PN@reset@optional
+ \PN@inparnotesfalse
+}
+
+\AtBeginDocument{
+\crefname{parnotemark}{paragraph note}{paragraph notes}
+\Crefname{parnotemark}{Paragraph note}{Paragraph notes}
+}
+% \end{macrocode}
+%
+% \iffalse
+%</parnotes>
+% \fi
+%
+%
+%
%
%
% \iffalse
@@ -42910,6 +43787,53 @@ class="td%
%
%
%
+% \iffalse
+%<*quoting>
+% \fi
+%
+% \part{lwarp-quoting.sty}
+
+% \section{quoting}
+%
+% \credits{Thomas Titz}
+%
+% \DescribePackage{quoting}
+% \pkg{quoting} is patched for use by \pkg{lwarp}.
+%
+% \changes{v0.56}{2018/05/09}{\pkg{quoting}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR@ProvidesPackagePass{quoting}
+% \end{macrocode}
+
+% \begin{macrocode}
+\xpatchcmd{\quoting}{\quo@begintext}
+ {\begin{LWR@blocktextcurrentfont}\quo@begintext}
+ {}
+ {
+ \PackageError{lwarp}
+ {Unable to patch the quoting package}
+ {Please contact the author of lwarp.}
+ }
+\xpatchcmd{\endquoting}{\quo@endtext}
+ {\quo@endtext\end{LWR@blocktextcurrentfont}}
+ {}
+ {
+ \PackageError{lwarp}
+ {Unable to patch the quoting package}
+ {Please contact the author of lwarp.}
+ }
+% \end{macrocode}
+
+% \iffalse
+%</quoting>
+% \fi
+%
+%
+%
+%
%
% \iffalse
%<*ragged2e>
@@ -47327,6 +48251,35 @@ class="td%
%
%
%
+% \iffalse
+%<*tocenter>
+% \fi
+%
+% \part{lwarp-tocenter.sty}
+%
+% \section{tocenter}
+%
+% \DescribePackage{tocenter}
+% \pkg{tocenter} is ignored.
+%
+% \changes{v0.56}{2018/04/26}{\pkg{tocenter}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR@ProvidesPackageDrop{tocenter}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\NewDocumentCommand{\ToCenter}{s o m m}{}
+\NewDocumentCommand{\FromMargins}{s o m m m m}{}
+% \end{macrocode}
+%
+% \iffalse
+%</tocenter>
+% \fi
+%
+%
%
%
%
@@ -48278,7 +49231,7 @@ class="td%
{%
text-decoration:underline;%
text-decoration-skip: auto;%
- text-decoration-style:dotted%
+ text-decoration-style: dotted%
}%
{dotuline}{#1}%
}
@@ -48333,6 +49286,31 @@ class="td%
%
%
%
+% \iffalse
+%<*underscore>
+% \fi
+%
+% \part{lwarp-underscore.sty}
+%
+% \section{underscore}
+%
+% \DescribePackage{underscore}
+% \pkg{underscore} is ignored.
+%
+% \changes{v0.56}{2018/05/09}{\pkg{underscore}: Added.}
+%
+% \codehtml
+%
+% \begin{macrocode}
+\LWR@ProvidesPackageDrop{underscore}
+% \end{macrocode}
+%
+% \iffalse
+%</underscore>
+% \fi
+%
+%
+%
%
%
% \iffalse