diff options
author | Karl Berry <karl@freefriends.org> | 2018-05-12 21:24:56 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2018-05-12 21:24:56 +0000 |
commit | 2d4efc4f55e5a432a6a93be060579b4878c5fd11 (patch) | |
tree | e5b27f31dde871066469b0a8a27d1e491470f704 /Master/texmf-dist | |
parent | f3fa6542348613dc0e90fae7be09cd7f9c2f95d2 (diff) |
lwarp (12may18)
git-svn-id: svn://tug.org/texlive/trunk@47695 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
17 files changed, 1985 insertions, 377 deletions
diff --git a/Master/texmf-dist/doc/latex/lwarp/README.txt b/Master/texmf-dist/doc/latex/lwarp/README.txt index 483561670fe..c163e63a3eb 100644 --- a/Master/texmf-dist/doc/latex/lwarp/README.txt +++ b/Master/texmf-dist/doc/latex/lwarp/README.txt @@ -1,5 +1,5 @@ -LaTeX lwarp package v0.55 README.txt +LaTeX lwarp package v0.56 README.txt Files included are: diff --git a/Master/texmf-dist/doc/latex/lwarp/lwarp.pdf b/Master/texmf-dist/doc/latex/lwarp/lwarp.pdf Binary files differindex f2dac637e16..b93bd1eaaac 100644 --- a/Master/texmf-dist/doc/latex/lwarp/lwarp.pdf +++ b/Master/texmf-dist/doc/latex/lwarp/lwarp.pdf diff --git a/Master/texmf-dist/scripts/lwarp/lwarpmk.lua b/Master/texmf-dist/scripts/lwarp/lwarpmk.lua index 4baee4dd05e..1181ca8230d 100755 --- a/Master/texmf-dist/scripts/lwarp/lwarpmk.lua +++ b/Master/texmf-dist/scripts/lwarp/lwarpmk.lua @@ -4,7 +4,7 @@ -- 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.") ; @@ -27,6 +27,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. @@ -49,13 +50,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 @@ -99,13 +101,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 @@ -161,6 +163,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 @@ -254,7 +257,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.") @@ -519,6 +528,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 " @@ -530,7 +546,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: ===") @@ -538,7 +554,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 : @@ -744,6 +774,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 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 diff --git a/Master/texmf-dist/source/latex/lwarp/lwarp.ins b/Master/texmf-dist/source/latex/lwarp/lwarp.ins index 74063ee0c25..d0fb53ae0b6 100644 --- a/Master/texmf-dist/source/latex/lwarp/lwarp.ins +++ b/Master/texmf-dist/source/latex/lwarp/lwarp.ins @@ -52,6 +52,7 @@ version 2005/12/01 or later. \file{lwarp-appendix.sty}{\from{lwarp.dtx}{appendix}} \file{lwarp-arabicfront.sty}{\from{lwarp.dtx}{arabicfront}} \file{lwarp-array.sty}{\from{lwarp.dtx}{array}} +\file{lwarp-arydshln.sty}{\from{lwarp.dtx}{arydshln}} \file{lwarp-atbegshi.sty}{\from{lwarp.dtx}{atbegshi}} \file{lwarp-authblk.sty}{\from{lwarp.dtx}{authblk}} \file{lwarp-axodraw2.sty}{\from{lwarp.dtx}{axodraw2}} @@ -174,6 +175,7 @@ version 2005/12/01 or later. \file{lwarp-ltcaption.sty}{\from{lwarp.dtx}{ltcaption}} \file{lwarp-ltxgrid.sty}{\from{lwarp.dtx}{ltxgrid}} \file{lwarp-ltxtable.sty}{\from{lwarp.dtx}{ltxtable}} +\file{lwarp-lua-check-hyphen.sty}{\from{lwarp.dtx}{lua-check-hyphen}} \file{lwarp-luacolor.sty}{\from{lwarp.dtx}{luacolor}} \file{lwarp-luatodonotes.sty}{\from{lwarp.dtx}{luatodonotes}} \file{lwarp-magaz.sty}{\from{lwarp.dtx}{magaz}} @@ -212,6 +214,7 @@ version 2005/12/01 or later. \file{lwarp-pagenote.sty}{\from{lwarp.dtx}{pagenote}} \file{lwarp-pagesel.sty}{\from{lwarp.dtx}{pagesel}} \file{lwarp-paralist.sty}{\from{lwarp.dtx}{paralist}} +\file{lwarp-parnotes.sty}{\from{lwarp.dtx}{parnotes}} \file{lwarp-parskip.sty}{\from{lwarp.dtx}{parskip}} \file{lwarp-pbox.sty}{\from{lwarp.dtx}{pbox}} \file{lwarp-pdfrender.sty}{\from{lwarp.dtx}{pdfrender}} @@ -224,6 +227,7 @@ version 2005/12/01 or later. \file{lwarp-prettyref.sty}{\from{lwarp.dtx}{prettyref}} \file{lwarp-preview.sty}{\from{lwarp.dtx}{preview}} \file{lwarp-quotchap.sty}{\from{lwarp.dtx}{quotchap}} +\file{lwarp-quoting.sty}{\from{lwarp.dtx}{quoting}} \file{lwarp-ragged2e.sty}{\from{lwarp.dtx}{ragged2e}} \file{lwarp-realscripts.sty}{\from{lwarp.dtx}{realscripts}} \file{lwarp-relsize.sty}{\from{lwarp.dtx}{relsize}} @@ -277,6 +281,7 @@ version 2005/12/01 or later. \file{lwarp-titling.sty}{\from{lwarp.dtx}{titling}} \file{lwarp-tocbasic.sty}{\from{lwarp.dtx}{tocbasic}} \file{lwarp-tocbibind.sty}{\from{lwarp.dtx}{tocbibind}} +\file{lwarp-tocenter.sty}{\from{lwarp.dtx}{tocenter}} \file{lwarp-tocloft.sty}{\from{lwarp.dtx}{tocloft}} \file{lwarp-tocstyle.sty}{\from{lwarp.dtx}{tocstyle}} \file{lwarp-todo.sty}{\from{lwarp.dtx}{todo}} @@ -286,6 +291,7 @@ version 2005/12/01 or later. \file{lwarp-turnthepage.sty}{\from{lwarp.dtx}{turnthepage}} \file{lwarp-typearea.sty}{\from{lwarp.dtx}{typearea}} \file{lwarp-ulem.sty}{\from{lwarp.dtx}{ulem}} +\file{lwarp-underscore.sty}{\from{lwarp.dtx}{underscore}} \file{lwarp-upref.sty}{\from{lwarp.dtx}{upref}} \file{lwarp-url.sty}{\from{lwarp.dtx}{url}} \file{lwarp-verse.sty}{\from{lwarp.dtx}{verse}} diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-arydshln.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-arydshln.sty new file mode 100644 index 00000000000..2cd4f89df93 --- /dev/null +++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-arydshln.sty @@ -0,0 +1,72 @@ +%% +%% This is file `lwarp-arydshln.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% lwarp.dtx (with options: `arydshln') +%% This is a generated file. +%% Copyright 2016-2018 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. + +\RequirePackage{array} +\LWR@ProvidesPackageDrop{arydshln} +\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}{} +\appto\LWR@restoreorigformatting{ +\newcolumntype{:}{|}% +\newcolumntype{;}[1]{|}% +\LetLtxMacro\hdashline\hline% +} +\def\hdashline{ + \adl@hdashline\adl@inactivehdl +} +\def\adl@hdashline#1{\noalign{\ifnum0=`}\fi + \hrule \@height \arrayrulewidth% lwarp + \@ifnextchar[%] + {#1}% + {#1[% + 1pt/1pt + ]}} +\def\adl@inactivehdl[#1/#2]{ + \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{% +} + +\def\cdashline#1{\noalign{\ifnum0=`}\fi + \@ifnextchar[%] + {\adl@inactivecdl[#1]}% + {\adl@inactivecdl[#1][\dashlinedash/\dashlinegap]} +} + +\def\adl@inactivecdl[#1-#2][#3]{\ifnum0=`{\fi}\cline{#1-#2}} + +\endinput +%% +%% End of file `lwarp-arydshln.sty'. diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-float.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-float.sty index f67fc713f41..8d7469b0057 100644 --- a/Master/texmf-dist/tex/latex/lwarp/lwarp-float.sty +++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-float.sty @@ -36,8 +36,7 @@ \SetupFloatingEnvironment{#1}{placement=#2}% } -\newcommand{\floatstyle}[1]{% -} +\newcommand{\floatstyle}[1]{} \NewDocumentCommand{\restylefloat}{s m}{% } diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-lua-check-hyphen.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-lua-check-hyphen.sty new file mode 100644 index 00000000000..d8cad08f9b7 --- /dev/null +++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-lua-check-hyphen.sty @@ -0,0 +1,22 @@ +%% +%% This is file `lwarp-lua-check-hyphen.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% lwarp.dtx (with options: `lua-check-hyphen') +%% This is a generated file. +%% Copyright 2016-2018 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. +\LWR@ProvidesPackageDrop{lua-check-hyphen} +\newcommand*{\LuaCheckHyphen}[1]{} +\endinput +%% +%% End of file `lwarp-lua-check-hyphen.sty'. diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-mdframed.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-mdframed.sty index 76801a34475..201d4e1fa7e 100644 --- a/Master/texmf-dist/tex/latex/lwarp/lwarp-mdframed.sty +++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-mdframed.sty @@ -68,7 +68,7 @@ border-radius: \LWR@mdfprintlength{roundcorner} ; \LWR@orignewline {box-shadow: none ;} \LWR@orignewline "} -\LetLtxMacro{\hspace}{\LWR@orighspace}% +\LetLtxMacro\hspace\LWR@orighspace% \LetLtxMacro\rule\LWR@origrule% \LetLtxMacro\makebox\LWR@origmakebox% \LWR@startpars% diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-multirow.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-multirow.sty index f129aebb883..fe5c77919ec 100644 --- a/Master/texmf-dist/tex/latex/lwarp/lwarp-multirow.sty +++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-multirow.sty @@ -42,6 +42,7 @@ class="td% "% \LWR@tdstartstyles% \LWR@addcmidrulewidth% +\LWR@addcdashline% \LWR@addtabularrulecolors% \LWR@tdendstyles% }% diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-paralist.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-paralist.sty index c80e0226228..069579d0310 100644 --- a/Master/texmf-dist/tex/latex/lwarp/lwarp-paralist.sty +++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-paralist.sty @@ -17,12 +17,12 @@ %% version 2005/12/01 or later. \LWR@ProvidesPackagePass{paralist} -\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 \AtBeginEnvironment{inparaitem}{\LetLtxMacro\item\LWR@origitem} \AtBeginEnvironment{inparaenum}{\LetLtxMacro\item\LWR@origitem} \AtBeginEnvironment{inparadesc}{\LetLtxMacro\item\LWR@origitem} diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-parnotes.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-parnotes.sty new file mode 100644 index 00000000000..32a4c6c240a --- /dev/null +++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-parnotes.sty @@ -0,0 +1,63 @@ +%% +%% This is file `lwarp-parnotes.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% lwarp.dtx (with options: `parnotes') +%% This is a generated file. +%% Copyright 2016-2018 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. +\LWR@ProvidesPackagePass{parnotes} +\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{% + \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} +} +\endinput +%% +%% End of file `lwarp-parnotes.sty'. diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-quoting.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-quoting.sty new file mode 100644 index 00000000000..1e910514fe9 --- /dev/null +++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-quoting.sty @@ -0,0 +1,40 @@ +%% +%% This is file `lwarp-quoting.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% lwarp.dtx (with options: `quoting') +%% This is a generated file. +%% Copyright 2016-2018 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. + +\LWR@ProvidesPackagePass{quoting} + +\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.} + } + +\endinput +%% +%% End of file `lwarp-quoting.sty'. diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-tocenter.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-tocenter.sty new file mode 100644 index 00000000000..f3aaa940531 --- /dev/null +++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-tocenter.sty @@ -0,0 +1,23 @@ +%% +%% This is file `lwarp-tocenter.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% lwarp.dtx (with options: `tocenter') +%% This is a generated file. +%% Copyright 2016-2018 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. +\LWR@ProvidesPackageDrop{tocenter} +\NewDocumentCommand{\ToCenter}{s o m m}{} +\NewDocumentCommand{\FromMargins}{s o m m m m}{} +\endinput +%% +%% End of file `lwarp-tocenter.sty'. diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-ulem.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-ulem.sty index bea41111982..4d15fdcac7c 100644 --- a/Master/texmf-dist/tex/latex/lwarp/lwarp-ulem.sty +++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-ulem.sty @@ -69,7 +69,7 @@ {% text-decoration:underline;% text-decoration-skip: auto;% - text-decoration-style:dotted% + text-decoration-style: dotted% }% {dotuline}{#1}% } diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-underscore.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-underscore.sty new file mode 100644 index 00000000000..7c718832dac --- /dev/null +++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-underscore.sty @@ -0,0 +1,21 @@ +%% +%% This is file `lwarp-underscore.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% lwarp.dtx (with options: `underscore') +%% This is a generated file. +%% Copyright 2016-2018 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. +\LWR@ProvidesPackageDrop{underscore} +\endinput +%% +%% End of file `lwarp-underscore.sty'. diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp.sty index 2aad9949e19..6d24427a28d 100644 --- a/Master/texmf-dist/tex/latex/lwarp/lwarp.sty +++ b/Master/texmf-dist/tex/latex/lwarp/lwarp.sty @@ -17,7 +17,7 @@ %% version 2005/12/01 or later. \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{lwarp} - [2018/04/26 v0.55 Allows LaTeX to directly produce HTML5 output.] + [2018/05/12 v0.56 Allows LaTeX to directly produce HTML5 output.] @@ -394,6 +394,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} @@ -429,6 +430,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} @@ -441,6 +443,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} @@ -488,6 +491,7 @@ For a possible alternative, see package(s) #2.} \LWR@loadafter{titletoc} \LWR@notmemoirloadafter{titling} \LWR@notmemoirloadafter{tocbibind} +\LWR@loadafter{tocenter} \LWR@notmemoirloadafter{tocloft} \LWR@loadafter{tocstyle} \LWR@loadafter{todo} @@ -496,6 +500,7 @@ For a possible alternative, see package(s) #2.} \LWR@loadafter{trivfloat} \LWR@loadafter{turnthepage} \LWR@loadafter{ulem} +\LWR@loadafter{underscore} \LWR@loadafter{upref} \LWR@loadafter{url} \LWR@loadafter{varioref}% no lwarp package provided @@ -938,6 +943,7 @@ top=1in,bottom=1in,% \LetLtxMacro\LWR@origmakebox\makebox \chardef\LWR@origpound=`\# \let\LWR@origcomma\, +\let\LWR@origthinspace\thinspace \let\LWR@origtilde~ \let\LWR@origenskip\enskip \let\LWR@origquad\quad @@ -1138,6 +1144,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"} @@ -1168,6 +1175,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"} @@ -1237,7 +1245,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; @@ -1246,22 +1254,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 ; } @@ -1540,8 +1550,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 ; } @@ -1583,7 +1592,7 @@ div.marginparblock br { margin-bottom: 2ex ; } section.textbody div.footnotes{ - margin: 3ex 0em 0ex 0em ; + margin: 3ex 2em 0ex 2em ; border-bottom: 2px solid silver ; } @@ -2055,7 +2064,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: */ table td.tdrule { @@ -3103,7 +3119,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.") ; @@ -3126,6 +3142,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. @@ -3148,13 +3165,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 @@ -3198,13 +3216,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 @@ -3260,6 +3278,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 @@ -3353,7 +3372,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.") @@ -3618,6 +3643,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 " @@ -3629,7 +3661,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: ===") @@ -3637,7 +3669,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 : @@ -3843,6 +3889,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 @@ -4517,6 +4569,8 @@ end -- not --version {}% } +\def\PN@parnotes@auto{}% + \newcommand*{\LWR@openparagraph} {% \ifbool{LWR@doingstartpars}% @@ -4527,6 +4581,7 @@ end -- not --version }% nested par tags? {}% no nested par tags {% yes nest par tags + \PN@parnotes@auto% \LWR@htmltagc{\LWR@tagregularparagraph}% \global\booltrue{LWR@doingapar}% \let\par\LWR@closeparagraph% @@ -4557,6 +4612,7 @@ end -- not --version \LWR@orignewline% \global\boolfalse{LWR@doingapar}% \global\boolfalse{LWR@minipagethispar}% + \PN@parnotes@auto% }% end of yes nest par tags }% end of handling pars {% not handling pars @@ -6034,9 +6090,9 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% \LWR@stoppars% \LWR@setlatestname{#1}% \LWR@startnewdepth{\LWR@depthlistitem}{\LWR@printclosedescitem}% -\LetLtxMacro{\hspace}{\LWR@nohspace}% +\LetLtxMacro\hspace\LWR@nohspace% \LWR@origitem[]% -\LetLtxMacro{\hspace}{\LWR@hspace}% +\LetLtxMacro\hspace\LWR@hspace% \LWR@htmltag{dt}#1\LWR@htmltag{/dt}% \LWR@orignewline% \LWR@htmltag{dd}% @@ -6101,9 +6157,12 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% \end{warpHTML} - - \begin{warpHTML} +\LetLtxMacro\hdashline\hline +\LetLtxMacro\cdashline\cline +\LetLtxMacro\firsthdashline\hline +\LetLtxMacro\lasthdashline\hline + \newcommand\LWR@mynexttoken\relax @@ -6130,8 +6189,9 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% \newbool{LWR@tabularcelladded} \boolfalse{LWR@tabularcelladded} -\newbool{LWR@doinghline} -\boolfalse{LWR@doinghline} +\newcounter{LWR@hlines} + +\newcounter{LWR@hdashedlines} \newbool{LWR@doingtbrule} \boolfalse{LWR@doingtbrule} @@ -6261,7 +6321,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}% }{% \begingroup% @@ -6305,7 +6366,8 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% \@rowc@lors% \global\booltrue{LWR@intabularmetadata}% \global\boolfalse{LWR@startedrow}% -\global\boolfalse{LWR@doinghline}% +\setcounter{LWR@hlines}{0}% +\setcounter{LWR@hdashedlines}{0}% \global\boolfalse{LWR@doingtbrule}% \global\boolfalse{LWR@doingcmidrule}% \LWR@clearmidrules% @@ -6315,13 +6377,24 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% \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}% \addtocounter{LWR@tablecolspecindex}{1}% \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% \LWR@traceinfo{have now read the next token}% \ifnumcomp{\value{LWR@tabletotalcols}}{=}{0}% @@ -6333,7 +6406,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}}}% }% @@ -6345,7 +6419,8 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% \addtocounter{LWR@tablecolspecindex}{1}% \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% \LWR@traceinfo{have now read the next token}% \ifnumcomp{\value{LWR@tabletotalcols}}{=}{0}% @@ -6355,7 +6430,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% @@ -6364,32 +6440,75 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% \newcommand*{\LWR@parsebeforecolumn}{% \addtocounter{LWR@tablecolspecindex}{1}% \expandarg% -\StrChar{\LWR@origcolspec}{\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]% +\StrChar{\LWR@origcolspec}% + {\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]% \fullexpandarg% -\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}% } \newcommand*{\LWR@parseaftercolumn}{% \addtocounter{LWR@tablecolspecindex}{1}% \expandarg% -\StrChar{\LWR@origcolspec}{\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]% +\StrChar{\LWR@origcolspec}% + {\arabic{LWR@tablecolspecindex}}[\LWR@colparameter]% \fullexpandarg% -\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}% } \newcommand*{\LWR@parsebarcolumn}{% -\LWR@traceinfo{bar column}% +\LWR@traceinfo{LWR@parsebarcolumn}% +\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}% +} +\newcommand*{\LWR@parsecoloncolumn}{% +\LWR@traceinfo{LWR@parsecoloncolumn}% \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}% } +\newcommand*{\LWR@parsesemicoloncolumn}{% +\LWR@parsecoloncolumn% +\addtocounter{LWR@tablecolspecindex}{1}% +} \newcommand*{\LWR@parsenormalcolumn}[1]{% \appto\LWR@tablecolspec{#1}% \addtocounter{LWR@tabletotalcols}{1}% @@ -6408,6 +6527,12 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% \addtocounter{LWR@tablecolspecindex}{1}% } +\newcommand*{\LWR@parsewcolumn}{% +\LWR@columnspeclookahead{1}% +\expandafter\LWR@parsenormalcolumn\expandafter{\LWR@strresulttwo}% +\addtocounter{LWR@tablecolspecindex}{2}% +} + \newcommand*{\LWR@parseDcolumn}[1]{% \LWR@parsenormalcolumn{#1}% \addtocounter{LWR@tablecolspecindex}{3}% @@ -6451,7 +6576,8 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% \boolfalse{LWR@opttablecol}% \whileboolexpr{% not test{% - \ifnumcomp{\value{LWR@tablecolspecindex}}{>}{\value{LWR@tablecolspecwidth}}% + \ifnumcomp{\value{LWR@tablecolspecindex}}{>}% + {\value{LWR@tablecolspecwidth}}% }% }% {% @@ -6471,15 +6597,20 @@ 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}}{}% +\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}{D}{\LWR@parseDcolumn{c}}{}% \IfStrEq{\LWR@strresult}{X}{\LWR@parsenormalcolumn{X}}{}% \IfStrEq{\LWR@strresult}{P}{\LWR@parsepcolumn{P}}{}% @@ -6493,7 +6624,7 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% \IfStrEq{\LWR@strresult}{]}{\boolfalse{LWR@opttablecol}}{}% \addtocounter{LWR@tablecolspecindex}{1}% }% whiledo -\LWR@traceinfo{LWR@parsetablecols: done}% +\LWR@traceinfo{LWR@parsetablecols: Final table column spec: !\LWR@tablecolspec!}% }% \@ifundefined{rownum}{\newcount\rownum}{} @@ -6526,16 +6657,12 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% {% not started the row \global\booltrue{LWR@startedrow}% \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 @@ -6545,8 +6672,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% @@ -6582,6 +6710,7 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% "% \LWR@tdstartstyles% \LWR@addcmidrulewidth% + \LWR@addcdashline% \LWR@addtabularrulecolors% \LWR@tdendstyles% }% @@ -6620,7 +6749,8 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% \ifbool{LWR@exitingtabular}{}% {% not exiting tabular \LWR@tabularleftedge% - \StrChar{\LWR@tablecolspec}{\arabic{LWR@tablecolindex}}[\LWR@strresult]% + \StrChar{\LWR@tablecolspec}% + {\arabic{LWR@tablecolindex}}[\LWR@strresult]% \LWR@traceinfo{LWR@tabledatasinglecolumntag: about to print td tag}% \LWR@htmltag{td class="td% \LWR@strresult% @@ -6630,7 +6760,9 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% "% \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}% \LWR@addtabularrowcolor% \LWR@addtabularrulecolors% @@ -6667,6 +6799,7 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% + \newcounter{LWR@midrulecounter} \newlength{\LWR@heavyrulewidth} @@ -6686,7 +6819,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}}% }% }% {% @@ -6694,6 +6828,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}% }% } @@ -6714,12 +6849,34 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% \booltrue{LWR@doingcmidrule}% } -\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} + +\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}% +} + +\NewDocumentCommand{\LWR@docdashline} + {>{\SplitArgument{1}{-}}m}% + {% + \LWR@subcdashline#1% + } -\newlength{\LWR@templengthone}% -\newlength{\LWR@templengthtwo}% -\newlength{\LWR@templengththree}% +\newlength{\LWR@templengthone} +\newlength{\LWR@templengthtwo} +\newlength{\LWR@templengththree} +\newcounter{LWR@tempcountone} \newboolean{LWR@tdhavecellstyle} @@ -6790,6 +6947,19 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% \LWR@addrulewidth{\LWR@thiscmidrulewidth}{\LWR@cmidrulewidth}% } +\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}% +}{}% +} + \newcommand*{\LWR@WPcell}[2]{% \LWR@tdaddstyle% \LWR@origmbox{text-align:#1}; \LWR@origmbox{vertical-align:#2}% @@ -6827,15 +6997,49 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% } \newcommand*{\LWR@addtabularhrulecolor}{% -\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}% }{% - \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% + }{}}}% + }% + {% + \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% + }}}% + }% }{}% } @@ -6846,14 +7050,44 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% \edef\LWR@tempone{\LWR@getexparray{LWR@colbarspec}{leftedge}}% \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% }{}% }{}% - \edef\LWR@tempone{\LWR@getexparray{LWR@colbarspec}{\arabic{LWR@tablecolindex}}}% + \edef\LWR@tempone{% + \LWR@getexparray{LWR@colbarspec}{\arabic{LWR@tablecolindex}}% + }% \ifdefstring{\LWR@tempone}{tvertbarr}{% \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% + }{}% }% } @@ -6889,8 +7123,11 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% \newcounter{LWR@tablemulticolswidth} \newcounter{LWR@tablemulticolspos} -\newbool{LWR@mcolvertbarl} -\newbool{LWR@mcolvertbarr} +\newcounter{LWR@mcolvertbarsl} +\newcounter{LWR@mcolvertbarsr} +\newcounter{LWR@mcolvertbarsldash} +\newcounter{LWR@mcolvertbarsrdash} +\newboolean{LWR@mcolvertbaronleft}% \newcommand*{\LWR@printmccoltype}[1]{% \LWR@traceinfo{lwr@printmccoltype -#1-}% @@ -6904,19 +7141,41 @@ 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}{}% +\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}{|}{% - \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}% } -\newcommand*{\LWR@multicolpartext}{% +\newcommand*{\LWR@multicolpartext}[1]{% \LWR@startpars% \LWR@multicoltext% +\addtocounter{LWR@tablemulticolspos}{#1}% \LWR@stoppars% } @@ -6942,15 +7201,23 @@ 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}{}% +\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}}{}% +\IfStrEq{\LWR@strresult}{w}{\LWR@multicolpartext{3}}{}% +\IfStrEq{\LWR@strresult}{W}{\LWR@multicolpartext{3}}{}% +\IfStrEq{\LWR@strresult}{S}{\LWR@multicoltext}{}% +\IfStrEq{\LWR@strresult}{s}{\LWR@multicoltext}{}% +\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}}{}% @@ -6965,8 +7232,9 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% \setcounter{LWR@tablemulticolswidth}{\LWR@strresult}% \whileboolexpr{% not test {% - \ifnumcomp{\value{LWR@tablemulticolspos}}{>}{\value{LWR@tablemulticolswidth}}% - } + \ifnumcomp{\value{LWR@tablemulticolspos}}{>}% + {\value{LWR@tablemulticolswidth}}% + }% }% {% #2{#1}% @@ -6977,14 +7245,38 @@ link rel="stylesheet" type="text/css" href="\LWR@currentcss" /}% \newcommand*{\LWR@addmulticolvertrulecolor}{% \ifbool{LWR@tabularmutemods}{}{% - \ifbool{LWR@mcolvertbarl}{% + \ifnumcomp{\value{LWR@mcolvertbarsl}}{=}{1}{% \LWR@tdaddstyle% border-left: 1px solid \LWR@origpound\LWR@vertruleHTMLcolor% }{}% - \ifbool{LWR@mcolvertbarr}{% + \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% + }{}% + \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% + }{}% }% } @@ -7011,18 +7303,28 @@ rowspan="#2" % }% vpos? }% rows? class="td% -\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}% \LWR@subaddcmidruletrim% {\LWR@getexparray{LWR@trimlrules}{\arabic{LWR@tablecolindex}}}% {\LWR@getexparray{LWR@trimrrules}{\arabic{LWR@lastmulticolumn}}}% -\ifbool{LWR@mcolvertbarl}{ tvertbarl}{}% -\ifbool{LWR@mcolvertbarr}{ tvertbarr}{}% -"% +\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}{}% +"% NOT A TYPO \LWR@tdstartstyles% \LWR@addtabularrowcolor% \LWR@addcmidrulewidth% +\LWR@addcdashline% \LWR@addtabularhrulecolor% \LWR@addmulticolvertrulecolor% \LWR@addformatwpalignment{#5}% @@ -7054,7 +7356,9 @@ rowspan="#2" % }% optional given {\LWR@setlatestname{#3}}% no optional \LWR@tabularhtmlcolumns{1}{\arabic{LWR@tabletotalcols}} -\LWR@domulticolumn{\arabic{LWR@tabletotalcols}}{\arabic{LWR@tabhtmlcoltotal}}{P}% +\LWR@domulticolumn{\arabic{LWR@tabletotalcols}}% + {\arabic{LWR@tabhtmlcoltotal}}% + {P}% {% \LWR@domulticolumn \IfBooleanTF{#1}% star? {% yes star @@ -7243,6 +7547,8 @@ rowspan="#2" % {\let\mynext\LWR@donothing}{}% \ifdefequal{\LWR@mynexttoken}{\cmidrule}% {\let\mynext\LWR@donothing}{}% +\ifdefequal{\LWR@mynexttoken}{\morecmidrules}% + {\let\mynext\LWR@donothing}{}% \ifdefequal{\LWR@mynexttoken}{\specialrule}% {\let\mynext\LWR@donothing}{}% \ifdefequal{\LWR@mynexttoken}{\cline}% @@ -7263,6 +7569,14 @@ rowspan="#2" % {\let\mynext\LWR@donothing}{}% \ifdefequal{\LWR@mynexttoken}{\rdelim}% {\let\mynext\LWR@donothing}{}% +\ifdefequal{\LWR@mynexttoken}{\hdashline}% + {\let\mynext\LWR@donothing}{}% +\ifdefequal{\LWR@mynexttoken}{\cdashline}% + {\let\mynext\LWR@donothing}{}% +\ifdefequal{\LWR@mynexttoken}{\firsthdashline}% + {\let\mynext\LWR@donothing}{}% +\ifdefequal{\LWR@mynexttoken}{\lasthdashline}% + {\let\mynext\LWR@donothing}{}% \ifdefequal{\LWR@mynexttoken}{\par}% {\let\mynext\LWR@donothing}{}% \LWR@traceinfo{LWR@tabledatacolumntag: about to do mynext}% @@ -7311,14 +7625,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 @@ -7347,7 +7661,8 @@ rowspan="#2" % \LWR@traceinfo{LWR@tabular started}% \addtocounter{LWR@tabulardepth}{1}% \global\boolfalse{LWR@startedrow}% -\global\boolfalse{LWR@doinghline}% +\setcounter{LWR@hlines}{0}% +\setcounter{LWR@hdashedlines}{0}% \global\boolfalse{LWR@doingtbrule}% \global\boolfalse{LWR@doingcmidrule}% \LWR@nullifyNoAutoSpacing% @@ -7395,25 +7710,48 @@ 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}% +\DeclareDocumentCommand{\cmidrule}{O{\LWR@cmidrulewidth} d() m}{% + \LWR@docmidrule[##1](##2){##3}% + \LWR@getmynexttoken% +}% +\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% +}% \DeclareDocumentCommand{\addlinespace}{o}{}% \DeclareDocumentCommand{\morecmidrules}{}{}% \DeclareDocumentCommand{\specialrule}{m m m d()}% {\LWR@docmidrule[##1](){1-\arabic{LWR@tabletotalcols}}\LWR@getmynexttoken}% +\DeclareDocumentCommand{\hdashline}{o}{% + \ifbool{FormatWP}% + {\LWR@docdashline{1-\arabic{LWR@tabletotalcols}}}% + {\addtocounter{LWR@hdashedlines}{1}}% + \LWR@getmynexttoken% +}% +\DeclareDocumentCommand{\cdashline}{m}{% + \LWR@docdashline{##1}\LWR@getmynexttoken% +}% +\DeclareDocumentCommand{\firsthdashline}{o}{% + \ifbool{FormatWP}% + {\LWR@docdashline{1-\arabic{LWR@tabletotalcols}}}% + {\addtocounter{LWR@hdashedlines}{1}}% + \LWR@getmynexttoken% +}% +\DeclareDocumentCommand{\lasthdashline}{o}{% + \ifbool{FormatWP}% + {\LWR@docdashline{1-\arabic{LWR@tabletotalcols}}}% + {\addtocounter{LWR@hdashedlines}{1}}% + \LWR@getmynexttoken% +}% \renewcommand{\multicolumn}{\LWR@htmlmulticolumn}% \renewcommand*{\mrowcell}{% \LWR@maybenewtablerow% @@ -8250,7 +8588,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% \LetLtxMacro\hfill\LWR@orighfill% \LetLtxMacro\hfil\LWR@orighfil% \LetLtxMacro\rule\LWR@origrule% @@ -8265,6 +8603,7 @@ autopage-\theLWR@currentautosec% \let\raggedleft\LWR@origraggedleft% \let\centering\LWR@origcentering% \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% @@ -8321,7 +8660,7 @@ autopage-\theLWR@currentautosec% \LetLtxMacro\resizebox\LWR@origresizebox% \let\framebox\LWR@origframebox% \LetLtxMacro\mbox\LWR@origmbox% -\let\makebox\LWR@origmakebox% +\LetLtxMacro\makebox\LWR@origmakebox% \let\fbox\LWRprint@fbox% \let\fboxBlock\LWRprint@fbox% \LetLtxMacro\fminipage\LWRprint@fminipage% @@ -10145,15 +10484,22 @@ width:\LWR@printlength{\LWR@tempwidth}% \newcommand*{\LWR@f@shape}{up} \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}% } +\newenvironment*{LWR@blocktextcurrentfont}{% +\BlockClass{% + text\LWR@f@family\LWR@origtilde{}% + text\LWR@f@series\LWR@origtilde{}% + text\LWR@f@shape% + }% +}{\endBlockClass} + \renewrobustcmd*{\mdseries}{\renewcommand*{\LWR@f@series}{md}} \renewrobustcmd*{\bfseries}{\renewcommand*{\LWR@f@series}{bf}} @@ -10224,6 +10570,7 @@ width:\LWR@printlength{\LWR@tempwidth}% \renewrobustcmd*{\,}{\HTMLunicode{202f}} % HTML thin non-breakable space +\renewrobustcmd*{\thinspace}{\HTMLunicode{202f}} % HTML thin non-breakable space \renewrobustcmd*{~}{\HTMLentity{nbsp}} @@ -10321,7 +10668,7 @@ width:\LWR@printlength{\LWR@tempwidth}% } \NewDocumentCommand{\LWR@nohspace}{s m}{} -\LetLtxMacro{\hspace}{\LWR@hspace} +\LetLtxMacro\hspace\LWR@hspace \NewDocumentCommand{\LWR@vspace}{s m}{} \LetLtxMacro\vspace\LWR@vspace |